- [langgraph] Add
TraceEventDTO inapp/platform/core/dto/events.pywithuidfield for deduplication andEventKindliteral type for operational trace events. - [langgraph] Add trace state reducers in
app/state/trace.pywithadd_events()andmerge_agent_events()for LangGraph-compatible event accumulation. - [langgraph] Add events adapter in
app/platform/adapters/events.pywithemit_event(),emit_agent_event(), andmerge_event_updates()helpers for dual-sink logging. - [langgraph] Add prompting utilities in
app/platform/runtime/prompting.pywithbuild_llm_messages()for canonical LLM context assembly from state.messages. - [langgraph] Add
eventsandagent_eventsfields toSageStatefor operational trace storage separate from LLM conversation context. - [langgraph] Add
raw_outputfield toPhaseEntryandPhaseResultDTO for debugging unparsed LLM output. - [langgraph] Add ownership rules for
eventsandagent_eventsfields in state contract. - [langgraph] Add message purity architecture test in
tests/unit/architecture/test_message_purity.pyto enforce separation of operational messages from LLM context. - [langgraph] Add comprehensive unit tests for TraceEvent DTO, events adapter, prompting utilities, and trace reducers.
- [langgraph] Add
ErrorEntryDTO inapp/platform/core/dto/errors.pywith structured error logging fields (code, message, severity, owner, phase, context) for queryable error information. - [langgraph] Add phase dependency graph (
PHASE_DEPENDENCIES) and invalidation functions (get_phases_to_invalidate,invalidate_downstream_phases) toapp/platform/core/contract/state.pyfor automatic downstream phase invalidation when upstream phases change. - [langgraph] Add message type architecture test in
tests/unit/architecture/test_message_purity.pyto enforce that only HumanMessage/AIMessage/SystemMessage are used in state.messages (forbids FunctionMessage, ToolMessage, etc.). - [langgraph] Add comprehensive unit tests for ErrorEntry DTO and phase invalidation logic in
tests/unit/platform/core/. - [docs] Create CLAUDE.md instruction files across the repository mirroring AGENTS.md structure for Claude Code agent compatibility.
- [langgraph] Complete hexagonal architecture refactor with full
app/platform/core/implementation including contract, policy, and dto layers. - [langgraph] Add
GuardrailResult,EvidenceBundle, andPhaseResultDTOs inapp/platform/core/dto/for clean boundary translation. - [langgraph] Add
app/platform/core/contract/registry.pywith extractedvalidate_phase_registryfunction. - [langgraph] Add
app/schemas/field_types.pywith reusableConfidenceScoretype definition for consistent validation across schemas. - [langgraph] Add
app/platform/utils/namespace_utils.pywithbuild_agent_namespace()helper to consolidate duplicate namespace construction logic. - [langgraph] Add adapter layer in
app/platform/adapters/withevidence.py,guardrails.py, andphases.pyfor boundary translation between core DTOs and state models. - [langgraph] Add comprehensive adapter tests in
tests/unit/platform/adapters/with 12 test cases covering DTO-to-state and state-to-DTO conversions. - [langgraph] Add runtime wrapper functions to adapters:
collect_phase_evidence()inadapters/evidence.py,evaluate_guardrails_contract()inadapters/guardrails.py. - [langgraph] Add new adapter modules:
adapters/logging.py,adapters/tools.py, andadapters/agents.pyfor wiring coordination. - [langgraph] Add architecture enforcement tests in
tests/architecture/withtest_core_purity.pyandtest_adapter_boundary.pyto validate hexagonal architecture rules using AST-based import checking. - [langgraph] Add
update_phases_dict()helper function toapp/platform/adapters/phases.pyfor immutable phases dictionary updates. - [docs] Add comprehensive platform documentation to
app/platform/README.mdexplaining the overall platform architecture, directory structure, and how layers work together. - [docs] Add comprehensive architecture documentation to
app/platform/core/README.mdexplaining hexagonal architecture, dependency rules, and the rationale for the 3-layer separation. - [docs] Add comprehensive adapter documentation to
app/platform/adapters/README.mdexplaining boundary translation, adapter principles, and when to create new adapters. - [langgraph] Add
.claudeignorewith comprehensive ignore patterns to prevent token waste from reading lock files (468KB), cache directories (903 pycache dirs), virtual environments, and build artifacts. - [langgraph] Add
.shared/efficient-commands.mdwith token-efficient command patterns and examples for file operations, searches, and directory listings. - [langgraph] Update
CLAUDE.mdandtests/CLAUDE.mdto reference.claudeignoreinstead of duplicating ignore patterns, establishing single source of truth for token efficiency rules. - [langgraph] Explicitly declare in
CLAUDE.mdthat token efficiency rules apply to ALL subdirectories regardless of local CLAUDE.md files, ensuring cross-cutting enforcement. - [langgraph] Add session-start ritual to
CLAUDE.mdrequiring navigation maps be read first (~4,000 tokens once vs ~500-1,000 per search), preventing redundant searches and saving 1,000-6,000 tokens per session. - [langgraph] Add purpose-based file reading strategy to
CLAUDE.mdand.shared/efficient-commands.mdwith four distinct patterns (EDIT: full read, UNDERSTAND: header only, FIND: grep first, VERIFY: grep only), preventing inefficient chunked reads that waste tokens. - [langgraph] Create
.shared/maps/directory and move navigation maps (components.yml, platform.yml, contracts.yml) for clear categorization, keeping sys.yml at root as entry point. - [langgraph] Expand sys.yml to comprehensive path index with all CLAUDE.md paths, test structure, docs, high-risk areas, and hierarchical backend_tree organization to prevent searches.
- [langgraph] Remove path duplication from components.yml and platform.yml - sys.yml now single source of truth for paths, other maps provide purposes/contracts/rules only.
- [langgraph] Add quick-reference section to contracts.yml (id → path table) and shorten benefits to one-liners, reducing from 67 to 79 lines but with faster lookup.
- [langgraph] Add platform as explicit component in components.yml with hexagonal architecture attribution and rules linkage.
- [langgraph] Link all
.shared/rules/*.mdfiles from components.yml and platform.yml for direct rule access. - [langgraph] Add
tmp/token_usage/directory with CLAUDE.md specification for context-aware token tracking feature (1,500 token threshold, alerts only on guideline violations). - [langgraph] Create example token usage log for this session showing 4 violations with 9,250 tokens optimization potential (7.1% of session).
- [docs] Add token usage tracking section (section 6) to PROJECT_ROOT/CLAUDE.md establishing permanent agent commitments for session rituals, proactive compliance, self-reporting, and post-session analysis.
- [docs] Add session closing requirement to PROJECT_ROOT/CLAUDE.md section 6 requiring token usage check and analysis log creation before session ends.
- [langgraph] Refactor
validate_structured_responseto use genericTypeVar(SchemaT) instead of returningBaseModel, eliminating need forassert isinstance()after validation calls. - [langgraph] Replace
assert isinstance()withTypeGuardpattern inapp/middlewares/dynamic_prompt.pyfor production-safe type narrowing that survives Python-Ooptimization. - [langgraph] Remove redundant
assert isinstance()calls fromproblem_framing.py,ambiguity_clarification.py, andambiguity_scan.pynodes (now unnecessary due to generic TypeVar). - [langgraph] Add type safety patterns to
.shared/rules/quality-gates.md: prefer TypeVar/TypeGuard over assert isinstance, prefer Mapping[str, object] over Any. - [langgraph] Add
app/platform/config/andapp/platform/core/dto/to high-risk areas in.shared/sys.yml(changes require full QA). - [langgraph] Split
.shared/rules/testing.md(365 lines) into 4 focused snippets under 40 lines each:testing-structure.md,testing-naming.md,testing-priorities.md,testing-quality.md. Main file now serves as index with quick reference. - [langgraph] Migrate operational messages in nodes from
state.messagestostate.eventsviaemit_event(): supervisor, ambiguity_supervisor, phase_supervisor, ambiguity_scan, retrieve_context, ambiguity_clarification, ambiguity_clarification_external nodes updated to separate operational trace from LLM conversation context. - [langgraph] Update exports in
app/platform/core/dto/__init__.py,app/state/__init__.py,app/platform/adapters/__init__.py, andapp/platform/runtime/__init__.pyto include new event and prompting utilities. - [langgraph] Rename
tmp/token_usage/README.mdtotmp/token_usage/CLAUDE.mdto align with project's instruction file convention and ensure contract precedence rules apply. - [langgraph] Extract test organization rules from
tests/CLAUDE.mdto.shared/rules/testing.mdto eliminate duplication and establish single source of truth for test structure, naming conventions, priorities, and quality guidelines. - [langgraph] Reduce
tests/CLAUDE.mdfrom 378 lines to 21 lines by referencing.shared/rules/testing.mdand.shared/efficient-commands.mdinstead of duplicating content, following the same minimal pattern used by component CLAUDE.md files. - [langgraph] Reduce
CLAUDE.mdfrom 99 lines to 68 lines by removing Token Efficiency duplication and replacing with concise reference to.shared/efficient-commands.md, while keeping session ritual, operating loop, and QA lanes inline as workflow orchestration. - [langgraph] Reduce
.claudeignorefrom 90 lines to 48 lines by removing decorative formatting, non-existent patterns (poetry.lock, package-lock.json, yarn.lock), and unnecessary section dividers, saving ~1,000 tokens per read. - [langgraph] Reduce
.shared/efficient-commands.mdfrom 362 lines to 216 lines by removing excessive horizontal rules, consolidating redundant GOOD/BAD examples, moving Quick Reference to top, and eliminating verbose Summary section, saving ~3,600 tokens per read. - [langgraph] Update
.shared/sys.ymlto include reference totesting.mdin the shared rules section for improved discoverability. - [langgraph] Reorganize test suite with category-based structure eliminating exceptions: tests now organized as
tests/[type]/[category]/[mirrored]where categories are architecture (structural validation), platform (hexagonal arch layer), and orchestration (LangGraph components + domain models). This ensures consistent mirroring rules with zero exceptions. - [langgraph] Move architecture tests from
tests/architecture/totests/unit/architecture/to align with test type organization. - [langgraph] Replace
complianceandstructuraltest markers with unifiedplatformcategory marker across 12 test files, aligning with three-category design. - [langgraph] Add three test category markers to
pyproject.toml: architecture, orchestration, and platform as organizational categories. - [langgraph] Update
testpathsinpyproject.tomlto explicitly list test categories (tests/unit/architecture,tests/unit/platform,tests/unit/orchestration, etc.) making test organization self-documenting. - [langgraph] Fill out all
[description]placeholders inpyproject.tomlfor pylint, ruff, and mypy configuration options. - [langgraph] Create comprehensive
tests/CLAUDE.mdwith category-based organization rules, mirroring examples, token efficiency warnings, and testing guidelines. - [langgraph] Move adapter tests from
tests/unit/platform/contract/totests/unit/platform/adapters/:test_agents.pyandtest_guardrails_contract.pynow in correct location aligned with adapter layer. - [langgraph] Move platform structure test from
tests/unit/platform/totests/architecture/test_platform_structure.pyto align with architectural validation purpose. - [docs] Update all
.shared/*.ymlnavigation maps to reference CLAUDE.md instead of AGENTS.md as the primary instruction surface for agents. - [docs] Add CLAUDE.md to root README.md directory tree.
- [docs] Remove unnecessary UV cache directory setup from AGENTS.md and CLAUDE.md QA instructions.
- [langgraph] Add
.cachedirectory to.gitignoreto exclude build artifacts. - [langgraph] Move all contract files from
app/platform/contract/toapp/platform/core/contract/with no backwards compatibility. - [langgraph] Move all policy files from
app/platform/policy/toapp/platform/core/policy/with no backwards compatibility. - [langgraph] Update 31 application files and 11 test files to use new
app.platform.core.*import paths. - [langgraph] Update 14
.shared/configuration files with new platform structure: add adapters and dto layers to platform.yml, add adapters to sys.yml backend_tree, and update 3 rules files (platform.md, middlewares.md, guardrails-and-memory.md) to reference core/policy paths. - [langgraph] Refactor
app/state/gating.pyto importGuardrailResultfrom core DTO instead of defining duplicate class. - [langgraph] Extract duplicate namespace construction in tools into single
build_agent_namespace()utility. - [langgraph] Refactor nodes to use adapter functions exclusively:
problem_framing.py,retrieve_context.py, andambiguity_scan.pynow useevidence_to_items()andupdate_phases_dict()instead of inline state manipulation. - [langgraph] Refactor
ConfidenceScorefields inproblem_framing/schema.pyandschemas/ambiguities.pyto use shared type definition. - [langgraph] Disable TC (type-checking import) linting rules in
pyproject.tomlto reduce noise and improve code readability. - [langgraph] Refactor
app/platform/runtime/evidence.pyto use coreEvidenceBundleDTO instead of defining duplicate class with state dependencies. - [langgraph] Update
app/platform/core/contract/evidence.pyto importEvidenceBundlefrom core DTO layer. - [langgraph] Update
app/nodes/problem_framing.pyandapp/nodes/ambiguity_scan.pyto getphase_entryfrom state instead of evidence bundle, maintaining DTO purity. - [langgraph] Split contract layer into pure types (stay in
core/contract/) and runtime wrappers (moved toadapters/). This completes Option C of the hexagonal architecture refactor, ensuring core contract enforcement remains pure while coordination logic lives in adapters. - [langgraph] Fix
app/platform/core/policy/guardrails.pyto importGuardrailResultfromcore.dto.guardrailsinstead ofapp.state.gating, eliminating core-to-state dependency violation. - [langgraph] Update all imports from deleted contract wrappers to use adapter equivalents across 19+ application files and tests.
- [langgraph] Add
architecturemarker to pytest configuration for hexagonal architecture enforcement tests.
- [langgraph] Add AIMessage with formatted response to problem_framing node on completion, enabling user-facing output in chat display.
- [langgraph] Fix subgraph-to-parent routing by adding explicit edges from subgraph nodes (
ambiguity_check,guardrails_check, phase supervisors) back tosupervisorin main graph. Subgraphs now route to__end__which triggers the edge. - [gradio-ui] Refactor streamer.py with
StreamUpdatedataclass replacing tuple returns for cleaner API. - [gradio-ui] Add message deduplication by ID in
_normalize_messages()to prevent duplicate messages in chat display. - [gradio-ui] Switch to
stream_mode="updates"with manual state accumulation for granular streaming updates. - [gradio-ui] Fix display logic to show step status only during streaming (before final AIMessage arrives), preventing duplicate phase response display.
- [docs] Remove meta-commentary from PROJECT_ROOT/CLAUDE.md (deleted "Philosophy" section) to comply with "facts, commands, and rules only" directive in section 4.
- [langgraph] Remove meta-commentary from backend/CLAUDE.md (deleted "Philosophy:" line explaining framework usage rationale).
- [langgraph] Remove meta-commentary from app/tools/CLAUDE.md (removed "for clarity and ecosystem alignment" explanation from
@tooldecorator exception). - [langgraph] Update
tests/architecture/test_platform_structure.pyto skip "core" domain since its tests are organized by subdirectory (contract, policy) rather than at the core level. - [docs] Remove stale
.codex/skills/references from backend AGENTS.md and CLAUDE.md files, replacing with actual documentation paths (app/platform/contract/README.mdandtests/README.md). - [docs] Remove non-existent contracts reference from schemas CLAUDE.md since schemas have no contract enforcement by design.
- [langgraph] Fix complexity warning in
make_dynamic_prompt_middlewareby adding noqa comment for acceptable complexity. - [langgraph] Fix ambiguous dash characters (EN DASH → HYPHEN-MINUS) in schema field descriptions.
- [langgraph] Convert type parameters to modern Python 3.12 syntax with PEP 695 style.
- [langgraph] Convert inefficient for-loops with append to list comprehensions and extend for better performance.
- [langgraph] Add missing docstrings to all new package
__init__.pyfiles. - [langgraph] Remove unused
TypeVarimport fromapp/graphs/write_graph.py. - [langgraph] Fix ambiguity subgraph routing: use
goto="supervisor"instead ofgoto="__end__"so the parent graph's supervisor node is re-entered after ambiguity checks complete. Also fix exhausted case to use thegotoparameter consistently. - [langgraph] Fix duplicate events during subgraph state merges: add
uidfield toTraceEventand update reducers (add_events,merge_agent_events) to deduplicate by uid.
- [langgraph] Delete
app/graphs/subgraphs/phases/contract.pyto fix backwards dependency (PhaseContract now in platform/core). - [langgraph] Delete
app/platform/contract/__init__.py,app/platform/contract/phases.py, andapp/platform/policy/__init__.pyre-export modules (no backwards compatibility). - [langgraph] Remove duplicate
GuardrailResultclass definition fromapp/state/gating.pyin favor of core DTO. - [langgraph] Remove duplicate
EvidenceBundleclass definition fromapp/platform/runtime/evidence.pyin favor of core DTO, eliminating state dependency violation. - [langgraph] Remove wrapper functions from
core/contract/: deleteevidence.py,guardrails.py,logging.py,agents.py, and movebuild_allowlist_contract()fromtools.pyto adapters. Keep only pure validators and type definitions incore/contract/tools.py.
- None.
- [langgraph/backend] Expand the platform contract surface with models for artifacts, namespaces, and prompt validation, helpers for state ownership/phases/agents/guardrails/tool allowlists/structured outputs, evidence hydration tooling, deterministic context document middleware, and compliance checks that keep the RULES-backed contract map aligned with LangChain/LangGraph references.
- [langgraph/backend] Add comprehensive contract and integration coverage, including a bounded OpenAI integration test for Problem Framing with explicit API key checks, an OpenAI-backed ambiguity scan that loads credentials from
.env, guardrail policy/middleware allow and deny unit tests, a tool-calling agent trajectory integration test, domain-governance contract tests, LangGraph interrupt/resume coverage, dual pytest stub vs real-dependency lanes with markers and commands, deterministic context doc workflows, offline behavioral tests for nodes/graphs/HILP middleware, and supportinglangchain-testsdev dependencies plus documentation for offline invocation. - [langgraph/backend] Introduce new ambiguity-detection and clarification infrastructure:
detect_ambiguityandgating_guardrailnodes with scoped configs, configurable thresholds and max-selection counts,make_dynamic_prompt_middleware()with placeholder resolution and FewShotPromptWithTemplates support, phase-level subgraphs with declarative phase contracts, structured clarification loops (human-in-the-loop handling, boolean clarifications, bounded retries, HILP toggles, AI status messaging, and supervisor reuse), and dedicated context tooling that keeps retrieved evidence in deterministic documents instead of expanding the system prompt. - [langgraph/backend] Add built-in LangGraph store RAG nodes/graphs/schemas, a
problem_framing.mermaidoverview, and Gradio-specific UI contracts plus HILP UI tests that surface interrupts, collect boolean clarifications, resume execution with user answers, and normalize layout/state handling. - [prompt] Create few-shot example assets (
few-shots.prompt,example.json) for the Problem Framing agent so deterministic prompts can be configured and validated. - [docs] Document the backend architecture reasoning, platform contract references, knowledge base with framework documentation links, architecture review milestones/checklist, global AGENTS linkage, and offline test guidance so every developer discovers the same references and compliance expectations.
- [drupal] Stand up a Drupal instance with context management endpoints, forms, content types, and taxonomy vocabularies.
- [langgraph/backend] Replace backend RULES references with map-driven contracts in
.shared/platform.yml, expand platform metadata with component consumers, align platform namespace store creation with governance rules, enforce state ownership/phase status/agent schema types/prompt placeholders, centralize evidence hydration so retrieved context hits middleware instead of system prompts, drive deterministic context-tool calls viawrap_model_callandwrap_tool_call, remove thenothingizertool, and move policies/utilities intoapp/platform/*to match platform governance. - [langgraph/backend] Rework ambiguity preflight, retrieval, and clarification flows: disable HILP routing during preflight so clarifications always use the internal agent loop, validate SageState updates across the supervisor/retrieval/clarification nodes, route ambiguity preflight through a reusable phase subgraph, gate retrieval with bounded rounds and rescans, track retrieval context rounds, represent ambiguity keys as three-category lists, share routing through the new
AmbiguityContext(replacing per-phaseClarificationContextandPhaseEntry.ambiguity_checked), route clarifications to internal vs external nodes based onhilp_enabled, reorder phase supervision to scan before retrieval and clarify before framing, annotate command routes with Literal unions for LangSmith, and keep status messaging/configurable thresholds/max-selection counts aligned with the shared context models. - [langgraph/backend] Restructure the app/test layout and documentation governance: move phase and non-phase subgraphs under
app/graphs/subgraphs/, update imports/docs, reorganizetests/to mirrorapp/(dropping legacygraphs/phasesand tests directories), compress backend RULES into a policy index that points to implementations, expand RULES with shared prompt asset/testability/evidence-hydration policies, lock the deterministic tool-calling rule, align langgraph AGENTS guidance with local component contracts, document OpenAI integration test requirements from RULES, and realign backend docs/tests with the new policy map while standardizing deterministic fakes for bounded lanes. - [langgraph/backend] Harmonize runtime, agent, prompt, and logging expectations: annotate node command routes for LangSmith visuals, enforce structlog helpers without global state, settle on the
@tooldecorator for agent-specific tools, require Pydantic SageState/PhaseEntry models with field metadata, replaceuser_querywith state-derivedtask_input, refactoragent.pyto be stateless and AgentConfig-driven, separate prompt rendering from injection by composing few-shot prompts in middleware, normalize HILP controls within the runtime context (stripping import-time side effects and AST guards), and refactor supervisor/problem framing nodes/graphs to rely on orchestration-only factories + command-based routing semantics. - [docs] Expand the knowledge base, align architecture review playbooks with the current framework docs, link the knowledge base from the global AGENTS guide, clarify the distinction between global graph orchestration and phase-local control logic, and centralize documentation governance on
langgraph/backend/RULES.mdplus backendAGENTS.md.
- [langgraph/backend] Harden guardrail and ambiguity clarification flows: restore phase registry imports, enforce state ownership groups (including external clarification ownership), allow supervisors to update ambiguity context while guarding evidence hydration when runtime stores are unavailable, reset clarification contexts before scans, avoid empty clarified keys, stop the supervisor from looping when clarification is exhausted, prevent clarification reruns without new user input, default clarified_input when agents omit it, format
keys_to_clarifyas lists, and preserve non-emptygating.original_inputvia reducers sourced from incoming messages. - [langgraph/backend] Correct dynamic prompt, few-shot, and agent-building behaviors: fix placeholder injection for
task_input, ensure Problem Framing few-shot renders validate assets and include final user stubs, fill few-shot user stubs from request inputs, convertFewShotPromptWithTemplatesinto rendered system messages before injection, movebuild_agent()out of import-time code, resolve missing structured response errors by validating/defaulting agent outputs, and keep the clarification context aligned with the latest user message even when agents omitclarified_input. - [langgraph/backend] Stabilize supervisor/phase routing, graphs, and imports: add subgraph wiring tests to ensure phases route via
phase_supervisor, use resolved target phases when scans fail, treat compiled phase graphs as runnable subgraph nodes, fix mixed static-edge vs command routing conflicts, correctstate.phaselookups by using supervisor factory args, eliminate import-time side effects in nodes/graph builders, resolve type mismatches, and make the app package importable by stubbinglanggraph.runtimefor contract tests. - [langgraph/backend] Improve offline/test infrastructure and documentation: document proxy and offline wheel install steps to unblock uv dependency downloads in restricted environments, relocate offline dependency stubs to
tests/stubswith guidance to avoid network flags, register thereal_depspytest marker, and keep backend contract tests perpendicular to runtime imports while staying unblocked. - [langgraph/backend] Persist canonical state and UI behavior: stop writing phase outputs to ad-hoc top-level keys so Problem Framing updates only
state['phases'], update Gradio UI to persist user queries and summarize problem framing from canonical phase data, and make UI interrupt extraction resilient tostream_eventspayloads so HILP clarifications surface instead of silent framing messages. - [langgraph/ui] Harden Gradio UI handling: relocate the UI to
app/ui/, add offlineapp/ui/tests/, stub Gradio for those tests, centralize HILP control toggles, preserve session state, and align ChatInterface history/streaming with LangChain expectations while streaming responses when the LangGraph app exposes a stream API.
- [langgraph/backend] Replaced the previous tests approach with the new contract-driven suite.
- [langgraph/backend] Removed the dedicated HILP middleware/state machine, the
hilpnode, andtool_errorsmiddleware in favor of the middleware-first clarification flow. - [langgraph/backend] Removed the translation agent.
- [langgraph/backend] Removed redundant
mw.pyfiles from agents that had no agent-specific middleware logic. - [docs] Removed redundant docs scaffolding (
DOCS_INDEX.md,REVIEW_CHECKLIST.md).
- None.
- Added AGENTS.md files
- Created enforced Contracts (via tests)
- Added Added Agent Chat UI via DDev,
- added generic Tool and Middleware management
- Created convictions for agents, further separating responsibilities
- Cleaned up folders
- First approach to HILP
- re-added gradio ui
- Removed Langgraph Agent Chat experiments
- Keeping the langgraph/backend-ui separation (eventually gradio should be separated from the backend)
- added mermaids folder
- updated READMEs
- Added experimental translation agent with language detection and translation nodes
- Added capability of step-debug (probably should remove eventually)
- Project package management is done via 'uv' (poetry has been removed)
- Restructured project
- Agents and Nodes have been separated
- runtime, services, subgraph, tools, utils separation created
- moved config, logs, reports out of app folder (logs and reports are in the output folder)
- greatly reworked agents and nodes
- Created supervisor node
- Created RAG node
- Created vector store service
- Created unstructured ingest service (using Doclinger)
- Models have been updated with Descriptions, prompts are heavily relying on it
- Added global_system.prompt
- Implement LangGraph solution
- Vastly reduce the size of the project
- Reorganize agents
- Reorganize project → each agent in its own folder (/agents/{agent}/)
- Keep utils/ for infrastructure and drop DI concepts
- Redefine BaseAgent → now CoreAgent with full PRAL and hooks
- Finalize FileLoader + ProviderFactory (core bootstrapping)
- updated: ProviderFactory now reads params: sub-block from YAML and handles LangChain v1 modules dynamically.
- updated: FileLoader and AgentLoader support flat agent.yaml / schema.json / system.prompt layout.
- Lifecycle (config → prompt → schema → execution → validation)
- Load agent config and model via ProviderFactory
- Load system + agent prompts via FileLoader and AgentLoader
- Schema validation via ValidationService
- PRAL loop (perceive → reason → act → learn) implemented and validated end-to-end
- Logging for PRAL stages and agent I/O - Hook-based execution replaces _default methods; system_prompt is merged (core + agent).
- SageCompass.ask() refactored for sequential agent handoff
- Shared state dictionary for intermediate results
- Schema validation between agent outputs/inputs
- Moved provider config under config/
- Added 'agent' config
- Updated yaml configuration data structures
- Renamed and reworked logic.py to orchestrator.py
- Generalised prompt_ and config_loader. The new util is file_loader.py.
- Introduced DEFAULT_PROVIDER envvar
- Rewrite agents/base.py to comply with generic agent abstraction (PRAL)
- Rewrite agents/problem_framing.py to comply with base.py abstraction
- Created BaseAgent abstract class
- Implemented basic PRAL
- Implemented _shared and problem_framing Schemas and their validation
- Added event_logger, retriever and validator utility
- Updated prompt_loader and config loader utilities with event_logger
- Added SAGECOMPASS_ENV environmental value for event log verbosity
- Created ProblemFramingAgent
- logic.py renamed to chain.py, reworked previous orchestration
- Updated system.prompt and created problem_framing.prompt
- Updated README.md
- Created LEARNING.md to store certain learning materials
- Rework ddev integration into a separate Python service
- Replacing requirements.txt with Potery (pyproject.toml) to manage project requirements.
- Added new ddev command: ddev poetry
- Fine-tuning python compose to manage Poetry and Python cache
- Adding DDev environment (generic, with python 3 installed on web)
- Adding Python project necessities (requirements.txt)
- Reorganising project setup (configs, prompts, providers, utils, main/logic and ui.py)
- v3.3 – Pumping up version number
- v3.2 – Added decision_confidence, handling missing baseline
- v3.1 – Missed knowledge files references
- v3.0 – Rework instructions and knowledge, further detailing stages, introducing cost-model
- v2.2 – Apply version number everywhere, tweaking data
- v2.1 – Cleanup, adjusting Stage 2 measurements
- v2.0 – Rework instructions based on prompt engineering best practices
- v1.5 – Dropped framework.md in favor of process-model.md
- v1.4 – Moving <INTERACTION_MODEL> to process-model.md
- v1.3 – Introducing problem-archetype, extending tests, examples etc
- v1.2 – Modularizing, populate Knowledge
- v1.1 – Added <INTERACTION_MODEL>, updated <OUTPUT_FORMAT>
- v1.0 – Initial scaffold