grimoire-kit 3.44.2__tar.gz → 3.45.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/CHANGELOG.md +60 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/PKG-INFO +1 -1
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/pyproject.toml +2 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/registry/kit-file-hashes.json +1 -1
- grimoire_kit-3.45.0/rust/grimoire-traces-core/pyproject.toml +18 -0
- grimoire_kit-3.45.0/src/grimoire/__version__.py +1 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_flow.py +17 -2
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_setup.py +50 -4
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_task.py +6 -0
- grimoire_kit-3.45.0/src/grimoire/flows/blueprint_loader.py +290 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/dispatch_executor.py +126 -5
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/schemas.py +75 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/dispatch.py +240 -20
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/verifiability.py +24 -10
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/proposals.py +221 -24
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/traces/ledger.py +129 -9
- grimoire_kit-3.45.0/version.txt +1 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/kanban.html +4 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/executer.js +45 -0
- grimoire_kit-3.44.2/src/grimoire/__version__.py +0 -1
- grimoire_kit-3.44.2/src/grimoire/flows/blueprint_loader.py +0 -159
- grimoire_kit-3.44.2/version.txt +0 -1
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/.gitignore +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/LICENSE +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/_grimoire/_config/custom/prompt-templates/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/agentic-standard/archetype.dna.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/agentic-standard/shared-context.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/agents/blender-expert.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/agents/brand-designer.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/agents/illustration-expert.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/archetype.dna.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/shared-context.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/creative-studio/skills/creative-content-copywriting.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/features/vector-memory/vectus.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/fix-loop/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/fix-loop/agents/fix-loop-orchestrator.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/fix-loop/archetype.dna.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/fix-loop/workflows/workflow-closed-loop-fix.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/agents/monitoring-specialist.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/agents/ops-engineer.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/agents/systems-debugger.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/archetype.dna.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/shared-context.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/skills/infra-backup-dr.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/skills/infra-k8s-gitops.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/skills/infra-pipeline-cicd.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/infra-ops/skills/infra-security-hardening.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/agents/agent-optimizer.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/agents/concierge.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/agents/security-auditor.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/archetype.dna.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/skills/meta-art-direction.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/skills/meta-memory-quality.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/skills/meta-project-navigation.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/meta/skills/meta-toolsmithing.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/minimal/agents/custom-agent.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/minimal/archetype.dna.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/agents/backend-engineer.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/agents/platform-architect.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/archetype.dna.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/shared-context.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/skills/platform-deploy-release.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/skills/platform-reliability-sre.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/platform-engineering/templates/architecture.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/agents/stack-engineer.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/archetype.dna.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-ansible.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-docker.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-go.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-k8s.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-python.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-terraform.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/stack/skills/stack-typescript.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/web-app/agents/fullstack-dev.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/web-app/archetype.dna.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/web-app/shared-context.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/archetypes/web-app/skills/web-frontend-ux.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/activated/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/index.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/package-lock.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/package.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/App.tsx +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/components/AddTaskForm.tsx +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/components/TaskItem.tsx +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/components/TaskList.tsx +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/main.tsx +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/styles.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/test/AddTaskForm.test.tsx +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/test/TaskList.test.tsx +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/test/setup.ts +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/src/types.ts +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/tsconfig.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/app/web/vite.config.ts +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/evals/witnesses/web-app-todo/enforced/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/examples/terraform-houseserver/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/examples/web-app-todo/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/autogen/artifacts/agents/autogen-conversation-runner.agent.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/autogen/artifacts/skills/autogen-conversation-design/SKILL.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/autogen/extension.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/autogen/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/browser-use/artifacts/agents/browser-use-runner.agent.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/browser-use/artifacts/instructions/browser-evidence.instructions.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/browser-use/extension.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/browser-use/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/agents/crewai-crew-runner.agent.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/hooks/crewai-telemetry-bridge.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/hooks/crewai-telemetry-bridge.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/prompts/crewai-import-crew.prompt.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/artifacts/skills/crewai-crew-design/SKILL.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/extension.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/scripts/register-hooks.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/scripts/unregister-hooks.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/crewai/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/extension.schema.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/artifacts/skills/godot-evidence-loop/SKILL.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/extension.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/scripts/setup-mcp.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/scripts/teardown-mcp.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/fennara-godot/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/grimoire-mcp/artifacts/instructions/mcp-trust-gate.instructions.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/grimoire-mcp/artifacts/skills/grimoire-mcp-setup/SKILL.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/grimoire-mcp/extension.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/grimoire-mcp/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/haystack/artifacts/instructions/haystack-rag-governance.instructions.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/haystack/artifacts/skills/haystack-pipeline-design/SKILL.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/haystack/extension.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/haystack/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/artifacts/hooks/langfuse-trace-export.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/artifacts/hooks/langfuse-trace-export.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/artifacts/instructions/langfuse-observability.instructions.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/artifacts/skills/langfuse-tracing-setup/SKILL.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/extension.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/scripts/register-hooks.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/scripts/unregister-hooks.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langfuse/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/artifacts/agents/langgraph-graph-runner.agent.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/artifacts/prompts/langgraph-import-graph.prompt.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/artifacts/skills/langgraph-graph-design/SKILL.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/extension.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/extensions/langgraph/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/FREEZE.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-base-compact.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-base.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-mesh-network.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-relationship-graph.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent-rules.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agent2agent.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-industry-reference.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/capability-map.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/needs-catalog.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/profile-map.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/target-schema.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/acceptance-record.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/accepted-risks.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/blast-radius-policy.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/browser-tool-contract.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/capability-registry.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/claim-ledger.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/cluster-action-policy.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/compliance-declaration.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/compliance-score.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/compression-gate.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/context-contract.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/cost-registry.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/decision-council.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/decision-graph.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/doc-graph-pipeline.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/environment-policy.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/evidence-gates.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/evidence-pack.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/flow-dsl-manifest.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/guardrail-contract.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/hook-registry.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/incident-registry.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/k8s-agent-manifest.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/knowledge-source-registry.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/llm-provider-registry.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/memory-integrity.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/memory-policy.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/merge-lane.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/mission-brief.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/observability-policy.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/orchestration-policy.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/pattern-catalog.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/privilege-boundary.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/prompt-firewall.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/prompt-version-log.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/remediation-plan.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/remote-hygiene.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/retention-registry.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/risk-control-matrix.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/rule-packs.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/runtime-provider-contract.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/runtime-surface-registry.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/task-board.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/task-envelope.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/tool-registry.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/visual-evidence.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/waivers.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/workflow-state-manifest.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/templates/workspace-isolation.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/agentic-standard/traceability.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/archetype-dna.schema.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/cc-reference.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/cc-verify.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/context-router.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/instructions/grimoire-project.instructions.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-changelog.prompt.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-dream.prompt.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-health-check.prompt.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-pre-push.prompt.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-self-heal.prompt.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-session-bootstrap.prompt.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot/prompts/grimoire-status.prompt.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/copilot-extension/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/cross-validation-trust.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/delivery-contract.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/event-log-shared-state.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/glossary.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/grimoire-trace.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/honest-uncertainty-protocol.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/.pre-commit-config.tpl.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/commit-msg.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/mnemo-consolidate.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/post-checkout.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/post-commit.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/pre-commit-cc.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/pre-push.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hooks/prepare-commit-msg.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-doctor.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-gate.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-proof.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-recall.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/commands/grimoire-verify.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/skills/grimoire-agent-dispatch.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/skills/grimoire-evidence.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hosts/skills/grimoire-memory.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/hybrid-parallelism-engine.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/mcp/grimoire-mcp-server.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/.gitignore +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_lexical.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_local.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_ollama.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_qdrant_local.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/backends/backend_qdrant_server.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/contradiction-log.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/dependency-graph.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/docker-compose.memory-target.tpl.yml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/docker-compose.memory.tpl.yml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/failure-museum.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/handoff-log.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/k8s-qdrant.tpl.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/maintenance.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/mem0-bridge.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/memory_seed.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/network-topology.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/oss-references.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/requirements/requirements-minimal.txt +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/requirements/requirements-ollama.txt +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/requirements/requirements-qdrant.txt +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/requirements.txt +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/memory/session-save.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/orchestrator-gateway.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/productive-conflict-engine.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/audit-report.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/capacity-planning.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/compliance-check.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/dependency-updates.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/design-tokens.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/network-troubleshoot.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/operational-mode.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/periodic-report.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/secret-rotation.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/strategic-plan.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/prompt-templates/troubleshoot.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/question-escalation-chain.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/registry/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/selective-huddle-protocol.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/sessions/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/sil-collect.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/adversarial-consensus.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-bench.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-caller.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-darwinism.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-debugger.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-forge.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-integrity.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-test.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-watch.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/agent-worker.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/antifragile-score.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/auto-doc.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/context-guard.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/context-summarizer.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/cross-migrate.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/dep-check.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/distill.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/dna-evolve.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/dream.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/expert-tool-chain.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/failure-museum.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/gen-tests.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/grimoire-completion.zsh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/grimoire-mcp-tools.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/grimoire-setup.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/image-prompt.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/incubator.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/llm-router.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/memory-lint.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/memory-sync.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/message-bus.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/nso.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/observatory.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/preflight-check.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/quick-check.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/rag-indexer.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/rag-retriever.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/reasoning-stream.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/schema-validator.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/session-lifecycle.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/scripts/stigmergy-emit-post-edit.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/scripts/stigmergy-emit-stop.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/scripts/stigmergy-sense.sh +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/scripts/stigmergy_hook.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/stigmergy-emit.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/stigmergy_hooks/stigmergy-sense.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/swarm-consensus.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/synapse-trace.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/token-budget.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/tool-registry.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/tool-resolver.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/vision-judge.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/tools/web-browser.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/boomerang-orchestration.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/github-cc-check.yml.tpl +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/incident-response.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/party-mode.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/repo-map-generator.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/state-checkpoint.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/subagent-orchestration.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/workflow-graph.tpl.yaml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/framework/workflows/workflow-status.tpl.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/planning/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/registry/blueprints/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-dispatch-core/pyproject.toml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-flows-core/pyproject.toml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-hosts-core/pyproject.toml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-policies-core/pyproject.toml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/rust/grimoire-schema-core/pyproject.toml +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/scripts/gen-site-data.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/__main__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/archetypes/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/bridges/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/bridges/a2a_adapter.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/bridges/host.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/bridges/schemas.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/_lazy.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/_shared.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/app.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_blueprint.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_cadrage.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_cockpit.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_context_pack.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_debugger.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_ext.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_features.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_hooks.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_host.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_init.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_bundle.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_lexical.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_ops.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_projections.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_memory_shared.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_merge.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_migrate.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_proposals.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_providers.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_serve.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_standard.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_stigmergy.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_up.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_upgrade.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_web.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/cmd_workflows.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/cli/updater.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/backends/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/backends/neo4j.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/graph.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/parser.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/codegraph/schemas.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/agent_freshness.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/agentic_standard.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/archetype_resolver.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/cadrage.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/claude_activation.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/config.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/console_encoding.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/deprecation.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/error_codes.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/exceptions.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/integrity.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/kit_hashes.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/layout.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/log.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/merge.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/needs_suggest.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/project.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/project_types.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/resolver.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/retry.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/scaffold.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/scanner.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/schema.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/base.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/controls.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/pattern_codes.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/registry.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_checks/verifiers.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_generation.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_profile_manifest.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_state.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_traceability.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/standard_upstream.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/core/validator.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/data/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/evidence/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/evidence/schemas.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/evidence/service.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/engine.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/flows/executor.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/capabilities.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/collect.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/_shared.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/activation.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/context_capsule.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/evidence_gate.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/evidence_trace.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/gate_summary.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/record.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/subagent_gate.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/task_context.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/tool_facts.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/decisions/tool_policy.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/base.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/claude_code.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/copilot.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/emitters/generic.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/events.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/runtime.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/secrets.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/surface.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/hosts/sync.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/mcp/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/mcp/server.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/architecture.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/_qdrant_mixin.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/base.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/lexical.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/local.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/mempalace.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/ollama.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/qdrant.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/tantivy_local.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/backends/weaviate.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/bundle.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/embedding.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/hot.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/manager.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/migration.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/neo4j_graph.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/profiles.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/projections.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/retrieval.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/shared.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/sidecar.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/taxonomy.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/memory/validation.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/beads_adapter.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/board.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/dispatch_history.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/gates.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/intake.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/ledger.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/plans_registry.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/projections.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/recall.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/schemas.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/service.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/task_flow_adapter.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/missions/trace.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/policies/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/policies/engine.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/policies/schemas.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/policies/security.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/audit.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/registry.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/routing.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/providers/state.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/py.typed +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/registry/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/registry/agents.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/registry/discovery.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/registry/local.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/adapter_base.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/crewai_adapter.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/gascity_converter.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/kernel.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/langgraph_adapter.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/p2p_guard.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/recipes.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/runtime/schemas.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/_common.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/agent_creation.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/agent_forge.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_checkpoint.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_context.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_diff.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_eval_runner.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_evals.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_gate.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_primitives.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_resilience.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_scatter.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_security.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/blueprint_telemetry.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/context_guard.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/context_pack.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/context_router.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/cost_model.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/ext_manager.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/features.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/forge_http.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/forge_routes.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/forge_server.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/handoff.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/harmony_check.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/memory_link.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/memory_lint.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/memory_setup.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/memory_vectors.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/model_windows.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/preflight_check.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/project_health.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/project_registry.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/project_setup.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/project_update.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/serve_data.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/stigmergy.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/stigmergy_hooks.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/untrusted.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_api.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_exec.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_language.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_legacy.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/tools/workspace_routes.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/traces/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/traces/otel_conventions.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/traces/schemas.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/workflows/__init__.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/workflows/registry.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/src/grimoire/workflows/teams.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/DESIGN-BRIEF-memory.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/DESIGN-BRIEF-observability.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/DESIGN-REVIEW-2026-09.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/DESIGN-SPEC-workspace-2026-09.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/anatomy.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/atelier-nav.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/atelier.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/atelier.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/blueprint-onboarding.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/blueprints.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-assist.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-composer.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-core.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-cost.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-diff.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-docs.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-evals.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-lexicon.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-library.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-manual.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-sections.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-team.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-team.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2-tour.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/bp2.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/activity.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/architecture.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/catalogue-export.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/extensions.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/insights.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/kit-coverage.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/memory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/meta.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/observatory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/activity.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/insights.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/memory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/meta.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/observatory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/atlas-ops/taskboard.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/activity.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/insights.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/memory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/meta.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/observatory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/grimoire-kit/taskboard.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/activity.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/insights.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/memory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/meta.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/observatory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/ledger-data/taskboard.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/activity.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/insights.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/memory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/meta.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/observatory.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects/sentinel-sec/taskboard.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/projects.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/data/taskboard.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/demo.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Concevoir.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/ConcevoirClair.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Couleurs.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DAArdoise.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DAPapier.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DAStudio.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DirectionB.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DirectionC.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/DirectionD.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Encre.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/EncreClair.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Main.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Mecaniques.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/Source.dc.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/canvas.json +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/concevoir-dark.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/concevoir-light.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/executer-dark.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/executer-light.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/memoire-dark.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/memoire-light.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/observer-dark.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/observer-light.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/piloter-dark.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/piloter-light.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/source-dark.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/captures/source-light.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/gen-couleurs.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/gen-skins.py +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design/workspace-2026-09/shell.tpl.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/01-cockpit-portefeuille-desktop.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/02-cockpit-portefeuille-full.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/03-cockpit-portefeuille-mobile.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/04-kanban-desktop.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/05-kanban-mobile.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/06-observatoire-desktop.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/07-observatoire-full.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/08-atelier-desktop.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/09-atelier-mobile.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/10-memoire-desktop.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/11-blueprints-desktop.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/12-extensions-desktop.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/13-patterns-desktop.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/14-cockpit-index-desktop.jpg +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/15-workspace-lot1-sombre-decouverte.png +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/16-workspace-lot1-clair-decouverte.png +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/17-workspace-lot1-sombre-concentration.png +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/design-review-2026-09/18-workspace-lot1-clair-concentration.png +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/documentation.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/extensions.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-base.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-charts.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-landing.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-motion.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-motion.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-nav.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-observatory.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/forge-tokens.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/game-ui.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/grimoire-mode.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/index.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/labs.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/memory.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/observability.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/patterns.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/portfolio.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/project-picker.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/README.md +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/api.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/Geist-Medium.woff2 +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/Geist-Regular.woff2 +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/Geist-SemiBold.woff2 +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/GeistMono-Medium.woff2 +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/GeistMono-Regular.woff2 +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/fonts/OFL.txt +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/glossary.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/index.html +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/shell.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/shell.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/concevoir.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/memoire.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/observer.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/piloter.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/source-editor.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/source.css +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/spaces/source.js +0 -0
- {grimoire_kit-3.44.2 → grimoire_kit-3.45.0}/web/workspace/tokens.css +0 -0
|
@@ -7,6 +7,66 @@ et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.45.0] - 2026-09-12
|
|
11
|
+
|
|
12
|
+
- **fix(flows): le gate de `flow run --executor dispatch` exécute l'acceptance structurée d'un node, pas seulement l'enveloppe (#428).**
|
|
13
|
+
Rejeu réel du 2026-09-11 (épic #307, lot 3) : un nœud V0 déclaré vert alors
|
|
14
|
+
que sa vraie suite `pytest` ne pouvait pas être collectée (dépendance
|
|
15
|
+
absente) — le gate ne vérifiait que la conformité de l'enveloppe JSON de
|
|
16
|
+
l'ouvrier au contrat de sortie, jamais le texte de l'acceptance. `node.acceptance`
|
|
17
|
+
accepte désormais, en plus du texte libre (rétrocompatible), une forme
|
|
18
|
+
structurée exécutable (`{"run": "...", "expect_exit": 0, "cwd": ".",
|
|
19
|
+
"timeout_s": 120, "expect_stdout_contains": "..."}`) ou une evidence
|
|
20
|
+
mécanique (`{"path_exists": "..."}`, `{"test": "..."}`) — validée au
|
|
21
|
+
chargement du blueprint (`blueprint_loader.py`), refus nommé sur une forme
|
|
22
|
+
inconnue. Le gate (`missions/dispatch.py`) exécute ces commandes après la
|
|
23
|
+
réponse de l'ouvrier et rend trois verdicts, jamais un quatrième :
|
|
24
|
+
exécutée-verte (succès), exécutée-rouge (échec, suit la cascade normale :
|
|
25
|
+
réessai/escalade), ou **acceptance inexécutable** (refus nommé — binaire
|
|
26
|
+
absent, `pytest` 5/4, erreur d'import dans la sortie — qui arrête la
|
|
27
|
+
cascade net, jamais un succès). `flow status` et le rapport de dispatch
|
|
28
|
+
montrent par nœud le statut d'acceptance (exécutée/inexécutable/jugée) et
|
|
29
|
+
la sortie tronquée à 2 Ko. **La classe V0 exige une acceptance
|
|
30
|
+
structurée** : un nœud dont le texte seul le classerait V0 mais qui n'en
|
|
31
|
+
déclare aucune est rétrogradé en V1 (cascade démarrant à `mid`, jamais
|
|
32
|
+
fermé sur la seule enveloppe — marqué à relire), avec un avertissement
|
|
33
|
+
nommé posé au chargement du blueprint et transmis à la fois au démarrage
|
|
34
|
+
de la cascade et au rapport, pour que `flow run` et `flow status`
|
|
35
|
+
s'accordent sur la même classe. Un nœud V1 **déclaré** (vocabulaire de
|
|
36
|
+
revue) garde le comportement actuel du kit, documenté sans être étendu.
|
|
37
|
+
Aucun changement côté port Rust des flows (`rust/grimoire-flows-core/`) :
|
|
38
|
+
seule `NodeContract.outputs` (pins) y traverse la frontière PyO3, inchangée
|
|
39
|
+
par ce correctif.
|
|
40
|
+
|
|
41
|
+
- **feat(cockpit): le board de l'espace Exécuter montre le corps réel d'une tâche (description, garde-fous, dépendances) et les commandes d'intention restent gated par la preuve en multi-projet (#140).**
|
|
42
|
+
L'inspecteur de tâche affichait déjà les critères d'acceptation et les
|
|
43
|
+
preuves attendues ; il gagne des blocs Description, Garde-fous et
|
|
44
|
+
Dépendances, tirés du `MissionTask` du ledger — ce que `task-board.yaml`
|
|
45
|
+
n'a jamais su porter (ADR-005). `kanban.html` reste la vitrine statique et
|
|
46
|
+
gagne un lien vers le board vivant. Aucune écriture nouvelle : les
|
|
47
|
+
commandes de transition, le gate de preuve et la restriction au projet de
|
|
48
|
+
lancement du cockpit existaient déjà ; ce lot les couvre par des tests
|
|
49
|
+
dédiés (unitaires sur la route `/api/workspace/tasks/<id>/<action>` —
|
|
50
|
+
succès, refus nommant l'artefact manquant, refus hors projet de lancement —
|
|
51
|
+
et navigateur sur le critère d'acceptation à la lettre : une carte visée
|
|
52
|
+
vers *review* sans evidence pack est refusée avec l'artefact nommé, et le
|
|
53
|
+
board change quand on change de projet).
|
|
54
|
+
|
|
55
|
+
- feat(traces): sixième port Rust optionnel du cœur du système d'artefact émergent — les agrégations du journal de traces (`TraceLedger.agent_dispatch_counts`/`.agent_miss_counts`/`.oldest_started_at`), la règle de fraîcheur (`compute_agent_freshness`, issue #396) et le déclencheur de propositions d'artefact (`grimoire.proposals` : nommage mécanique, résolution du porteur issue #402, décision de synchronisation seuil/refus issue #395/#394/#389) (issue #354). `rust/grimoire-traces-core/`, bascule `GRIMOIRE_TRACES_BACKEND=python|rust|auto` (lue indépendamment par `grimoire.traces.ledger` et `grimoire.proposals`, qui ne s'importent pas l'un l'autre), jobs CI `rust-traces / cargo` et `rust-traces / parity` dans `.github/workflows/rust-cores.yml`, roue toujours `py3-none-any`. Défaut trouvé par l'oracle Rust et corrigé dans cette même PR : `grimoire.traces.ledger._parse_iso` attrapait `ValueError` mais pas la `TypeError` non rattrapée levée ensuite par `datetime.now(tz=UTC) - datetime.fromisoformat(...)` sur un horodatage ISO-8601 *naïf* (sans décalage) — un journal JSONL édité à la main peut en porter un, et `compute_agent_freshness` revendique explicitement ne jamais lever sur un journal arbitraire ; corrigé en traitant un horodatage naïf comme UTC des deux côtés (même correctif que `grimoire_traces_core`, qui n'a jamais eu ce trou). Invariants de la doctrine rendus impossibles à violer par construction (clampés/exclus dans la fonction de décision elle-même, jamais par un appelant qui pourrait l'oublier) : seuil de proposition jamais sous 2, aucune proposition au premier non-choix, une proposition refusée ne revient que si son compte a doublé depuis le refus, la persona d'entrée est exclue de la recherche de porteur avant même de lire son `use_when`, le match de catégorie se fait par mot entier (limite de mot Unicode) et non par sous-chaîne. Corpus fixture de dix journaux JSONL réalistes (`tests/fixtures/traces_ledgers/`) et fuzz léger (200 enregistrements aléatoires) prouvant qu'aucune des fonctions d'agrégation/fraîcheur ne lève jamais, sous aucun backend, et qu'un champ de contenu libre (`prompt`/`request`) écrit à la main n'est jamais agrégé.
|
|
56
|
+
|
|
57
|
+
- **fix(up): `identity` ne corrompt plus un scalaire commenté de `project-context.yaml` (#426).**
|
|
58
|
+
`cmd_setup._apply_project_context` réécrivait chaque ligne `user:` connue
|
|
59
|
+
avec une regex `.+` qui avalait tout le reste de la ligne — valeur *et*
|
|
60
|
+
commentaire inline — comme si c'était « la valeur », puis rewrappait ce
|
|
61
|
+
texte entier entre guillemets. `skill_level: "expert" # beginner |
|
|
62
|
+
intermediate | expert` devenait `skill_level: ""expert" # beginner |
|
|
63
|
+
intermediate | expert"` à chaque `grimoire up`, y compris quand la valeur
|
|
64
|
+
ne changeait pas — et cassait ensuite `grimoire doctor` (`GR002`, YAML
|
|
65
|
+
imparsable). Un nouveau `_split_scalar_and_comment` sépare correctement
|
|
66
|
+
le scalaire (quoté ou non) du commentaire qui le suit avant toute lecture
|
|
67
|
+
ou réécriture, et `_apply_project_context` recolle le commentaire original
|
|
68
|
+
après la nouvelle valeur au lieu de le jeter.
|
|
69
|
+
|
|
10
70
|
## [3.44.2] - 2026-09-11
|
|
11
71
|
|
|
12
72
|
- **fix(hosts): `collect_agents` résout ses propres skills quand `known_skills` n'est pas fourni — `SessionStart` et le porteur de proposition ne plantent plus sur un agent à skills attachés (#423).**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: grimoire-kit
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.45.0
|
|
4
4
|
Summary: Composable AI agent platform — personas, memory, workflows, and quality automation for any project.
|
|
5
5
|
Project-URL: Homepage, https://github.com/Guilhem-Bonnet/Grimoire-kit
|
|
6
6
|
Project-URL: Repository, https://github.com/Guilhem-Bonnet/Grimoire-kit
|
|
@@ -208,6 +208,7 @@ ignore_missing_imports = true
|
|
|
208
208
|
# third such core (issue #354): rust/grimoire-hosts-core/.
|
|
209
209
|
# `grimoire_flows_core` is the fourth: rust/grimoire-flows-core/.
|
|
210
210
|
# `grimoire_dispatch_core` is the fifth: rust/grimoire-dispatch-core/.
|
|
211
|
+
# `grimoire_traces_core` is the sixth: rust/grimoire-traces-core/.
|
|
211
212
|
[[tool.mypy.overrides]]
|
|
212
213
|
module = [
|
|
213
214
|
"grimoire_policies_core",
|
|
@@ -215,6 +216,7 @@ module = [
|
|
|
215
216
|
"grimoire_hosts_core",
|
|
216
217
|
"grimoire_flows_core",
|
|
217
218
|
"grimoire_dispatch_core",
|
|
219
|
+
"grimoire_traces_core",
|
|
218
220
|
]
|
|
219
221
|
ignore_missing_imports = true
|
|
220
222
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["maturin>=1.7,<2"]
|
|
3
|
+
build-backend = "maturin"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "grimoire-traces-core"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Coeur Rust optionnel des agregations du journal de traces, de la regle de fraicheur et du declencheur de propositions (PyO3). Non publie sur PyPI — build local uniquement, voir CONTRIBUTING.md."
|
|
9
|
+
requires-python = ">=3.12"
|
|
10
|
+
license = { text = "MIT" }
|
|
11
|
+
classifiers = [
|
|
12
|
+
"Programming Language :: Rust",
|
|
13
|
+
"Programming Language :: Python :: 3.12",
|
|
14
|
+
"Private :: Do Not Upload",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
[tool.maturin]
|
|
18
|
+
module-name = "grimoire_traces_core"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "3.45.0"
|
|
@@ -44,6 +44,15 @@ flow_app = typer.Typer(
|
|
|
44
44
|
no_args_is_help=False,
|
|
45
45
|
)
|
|
46
46
|
|
|
47
|
+
#: Libellé humain de l'``acceptance_status`` d'un node dispatché (issue #428) —
|
|
48
|
+
#: ``None`` : événement écrit avant ce correctif, rien à afficher.
|
|
49
|
+
_ACCEPTANCE_LABELS: dict[str | None, str] = {
|
|
50
|
+
"executed": "exécutée",
|
|
51
|
+
"unrunnable": "inexécutable",
|
|
52
|
+
"judged": "jugée",
|
|
53
|
+
None: "n/a",
|
|
54
|
+
}
|
|
55
|
+
|
|
47
56
|
# Le rendu humain part sur stderr : le JSON de stdout reste pipeable, comme le
|
|
48
57
|
# reste de la CLI (cf. cmd_task.py).
|
|
49
58
|
console = Console(stderr=True)
|
|
@@ -127,10 +136,13 @@ def _emit_status(ctx: typer.Context, view: FlowStatusView, project_root: Path) -
|
|
|
127
136
|
console.print("[bold]dispatch (#311)[/bold] :")
|
|
128
137
|
for row in history:
|
|
129
138
|
relire = " [magenta]à relire[/magenta]" if row["needs_review"] else ""
|
|
139
|
+
acceptance = _ACCEPTANCE_LABELS.get(row.get("acceptance_status"), "n/a")
|
|
130
140
|
console.print(
|
|
131
141
|
f" - {row['node_id']} : {row['verdict']} par {row['provider']} ({row['tier']}), "
|
|
132
|
-
f"{row['attempts']} tentative(s), coût {row['cost_usd']}{relire}"
|
|
142
|
+
f"{row['attempts']} tentative(s), coût {row['cost_usd']}{relire} — acceptance {acceptance}"
|
|
133
143
|
)
|
|
144
|
+
if row.get("verifiability_warning"):
|
|
145
|
+
console.print(f" [yellow]![/yellow] {row['verifiability_warning']}")
|
|
134
146
|
for u in row["uncertainties"]:
|
|
135
147
|
console.print(f" [dim]incertitude : {u.get('where')} — {u.get('what')}[/dim]")
|
|
136
148
|
if view.contract:
|
|
@@ -171,10 +183,13 @@ def _emit_dispatch_outcome(ctx: typer.Context, outcome: FlowDispatchOutcome) ->
|
|
|
171
183
|
return
|
|
172
184
|
for node in outcome.nodes:
|
|
173
185
|
relire = " [magenta]à relire[/magenta]" if node.needs_review else ""
|
|
186
|
+
acceptance = _ACCEPTANCE_LABELS.get(node.acceptance_status, "n/a")
|
|
174
187
|
console.print(
|
|
175
188
|
f" {node.node_id} : {node.verdict} par {node.provider} — {node.attempts} tentative(s), "
|
|
176
|
-
f"{node.escalations} escalade(s), coût {node.cost_usd}{relire}"
|
|
189
|
+
f"{node.escalations} escalade(s), coût {node.cost_usd}{relire} — acceptance {acceptance}"
|
|
177
190
|
)
|
|
191
|
+
if node.verifiability_warning:
|
|
192
|
+
console.print(f" [yellow]![/yellow] {node.verifiability_warning}")
|
|
178
193
|
console.print(
|
|
179
194
|
f"[bold]coût total connu[/bold] : {outcome.total_cost_usd} — [bold]escalades[/bold] : {outcome.escalations}"
|
|
180
195
|
)
|
|
@@ -54,11 +54,49 @@ class SetupResult:
|
|
|
54
54
|
# ── YAML helpers (simple, no PyYAML dependency) ──────────────────────────────
|
|
55
55
|
|
|
56
56
|
|
|
57
|
+
def _split_scalar_and_comment(tail: str) -> tuple[str, str]:
|
|
58
|
+
"""Split the text after a YAML ``key:`` into ``(scalar, comment_suffix)``.
|
|
59
|
+
|
|
60
|
+
``comment_suffix`` keeps its leading whitespace so that reassembling it
|
|
61
|
+
right after a (possibly new) scalar reproduces the line's trailing
|
|
62
|
+
comment untouched. A ``#`` inside a quoted scalar is literal, not a
|
|
63
|
+
comment marker — treating it as one is what corrupted ``skill_level:
|
|
64
|
+
"expert" # ...`` into ``skill_level: ""expert" # ..."`` (issue #426):
|
|
65
|
+
the old code captured ``"expert" # comment`` whole as "the value" via
|
|
66
|
+
``.+``, so it neither stripped the comment nor recognised the result as
|
|
67
|
+
quoted (its last character was the comment's, not a quote), then
|
|
68
|
+
re-wrapped that entire string in a fresh pair of quotes.
|
|
69
|
+
"""
|
|
70
|
+
body = tail.rstrip("\n")
|
|
71
|
+
lstripped = body.lstrip(" \t")
|
|
72
|
+
if lstripped[:1] in ("'", '"'):
|
|
73
|
+
quote = lstripped[0]
|
|
74
|
+
i = 1
|
|
75
|
+
while i < len(lstripped):
|
|
76
|
+
ch = lstripped[i]
|
|
77
|
+
if quote == '"' and ch == "\\":
|
|
78
|
+
i += 2
|
|
79
|
+
continue
|
|
80
|
+
if ch == quote:
|
|
81
|
+
i += 1
|
|
82
|
+
break
|
|
83
|
+
i += 1
|
|
84
|
+
return lstripped[:i], lstripped[i:]
|
|
85
|
+
# Unquoted scalar: a '#' only starts a comment when it begins the tail
|
|
86
|
+
# or is preceded by whitespace — YAML's own rule.
|
|
87
|
+
match = re.search(r"(?:^|\s)#", lstripped)
|
|
88
|
+
if match is None:
|
|
89
|
+
value = lstripped.rstrip()
|
|
90
|
+
return value, lstripped[len(value):]
|
|
91
|
+
value = lstripped[: match.start()].rstrip()
|
|
92
|
+
return value, lstripped[len(value):]
|
|
93
|
+
|
|
94
|
+
|
|
57
95
|
def _read_key(text: str, key: str) -> str | None:
|
|
58
96
|
m = re.search(rf"^{re.escape(key)}:\s*(.+)$", text, re.MULTILINE)
|
|
59
97
|
if not m:
|
|
60
98
|
return None
|
|
61
|
-
val = m.group(1)
|
|
99
|
+
val, _comment = _split_scalar_and_comment(m.group(1))
|
|
62
100
|
if len(val) >= 2 and val[0] == val[-1] and val[0] in ('"', "'"):
|
|
63
101
|
val = val[1:-1]
|
|
64
102
|
return val
|
|
@@ -148,11 +186,19 @@ def _apply_project_context(path: Path, vals: UserValues) -> bool:
|
|
|
148
186
|
start, end = span
|
|
149
187
|
seen: set[str] = set()
|
|
150
188
|
for i in range(start + 1, end):
|
|
151
|
-
|
|
189
|
+
line = lines[i]
|
|
190
|
+
stripped = line.strip()
|
|
152
191
|
for key in wanted:
|
|
153
192
|
if stripped.startswith(f"{key}:"):
|
|
154
|
-
indent =
|
|
155
|
-
|
|
193
|
+
indent = line[: len(line) - len(line.lstrip())]
|
|
194
|
+
# Preserve everything after the scalar (notably an
|
|
195
|
+
# inline comment) instead of discarding it — see
|
|
196
|
+
# ``_split_scalar_and_comment`` for why the previous
|
|
197
|
+
# blind ``f'{key}: "{value}"'`` corrupted lines like
|
|
198
|
+
# ``skill_level: "expert" # ...`` (issue #426).
|
|
199
|
+
_key_part, _sep, line_tail = line.partition(":")
|
|
200
|
+
_old_value, comment = _split_scalar_and_comment(line_tail)
|
|
201
|
+
lines[i] = f'{indent}{key}: "{wanted[key]}"{comment}'
|
|
156
202
|
seen.add(key)
|
|
157
203
|
missing = [f' {key}: "{value}"' for key, value in wanted.items() if key not in seen]
|
|
158
204
|
tail = end
|
|
@@ -713,6 +713,10 @@ _VERDICT_ICON: dict[str, str] = {
|
|
|
713
713
|
"red": "[red]rouge[/red]",
|
|
714
714
|
"rate_limit": "[yellow]limite/429[/yellow]",
|
|
715
715
|
"timeout": "[yellow]timeout[/yellow]",
|
|
716
|
+
# « acceptance inexécutable » (issue #428) : un `--check` n'a rendu aucun
|
|
717
|
+
# verdict exploitable (binaire absent, pytest 5/4, erreur d'import) — la
|
|
718
|
+
# cascade s'est arrêtée net, jamais un vert.
|
|
719
|
+
"unrunnable": "[red]acceptance inexécutable[/red]",
|
|
716
720
|
}
|
|
717
721
|
|
|
718
722
|
|
|
@@ -757,6 +761,8 @@ def _emit_dispatch(ctx: typer.Context, report: Any) -> None:
|
|
|
757
761
|
console.print(f"[yellow]![/yellow] transition non appliquée : {report.transition_refused}")
|
|
758
762
|
if report.review is not None:
|
|
759
763
|
_print_review(report.review, [str(p) for p in report.review_files], report.review_note)
|
|
764
|
+
elif report.unrunnable is not None:
|
|
765
|
+
console.print(f"[red]✗[/red] {report.task_id} — acceptance inexécutable : {escape(report.unrunnable)}")
|
|
760
766
|
else:
|
|
761
767
|
console.print(
|
|
762
768
|
f"[red]✗[/red] {report.task_id} — chaîne épuisée, {len(report.attempts)} tentative(s), aucun vert"
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"""Dérive un ordre d'exécution et des contrats de node depuis un blueprint.
|
|
2
|
+
|
|
3
|
+
Un blueprint ne porte pas d'ordre d'exécution explicite — seulement des
|
|
4
|
+
``edges`` reliant des pins. Le tri topologique ci-dessous (porté depuis le
|
|
5
|
+
prototype jetable de la première étape de #204, une fois vérifié sur
|
|
6
|
+
``web-pipeline.blueprint.json``) le rend explicite une bonne fois, pour que le
|
|
7
|
+
moteur n'ait pas à le redériver à chaque lecture d'un chemin différent.
|
|
8
|
+
|
|
9
|
+
Le blueprint chargé ici est le même fichier que ``grimoire blueprint compile``
|
|
10
|
+
accepte : ``validate_blueprint_file`` (contrôle structurel léger) est la seule
|
|
11
|
+
vérification que ce module impose. Les contrôles d'état projet de ``compile``
|
|
12
|
+
(extensions installées, artefacts résolus) ne s'appliquent pas : exécuter un
|
|
13
|
+
node ne compile rien, c'est l'hôte qui l'exécute.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
|
|
18
|
+
import shlex
|
|
19
|
+
from pathlib import Path
|
|
20
|
+
from typing import Any
|
|
21
|
+
|
|
22
|
+
from grimoire.core.exceptions import GrimoireRuntimeError
|
|
23
|
+
from grimoire.flows.schemas import AcceptanceEvidence, AcceptanceRun, NodeContract, PinRef
|
|
24
|
+
from grimoire.missions.verifiability import Verifiability, classify_criteria
|
|
25
|
+
from grimoire.tools.ext_manager import validate_blueprint_file
|
|
26
|
+
|
|
27
|
+
__all__ = ["build_node_contracts", "load_blueprint", "topo_order"]
|
|
28
|
+
|
|
29
|
+
#: Les seules clés qu'une entrée d'``acceptance`` structurée reconnaît (issue
|
|
30
|
+
#: #428). Une entrée doit en porter exactement une : ni zéro (forme inconnue),
|
|
31
|
+
#: ni deux ou plus (ambiguïté sur ce qu'il faut exécuter) — les deux sont un
|
|
32
|
+
#: refus nommé au chargement, jamais une garde qui échouerait ouvert.
|
|
33
|
+
_ACCEPTANCE_STRUCTURED_KEYS = ("run", "path_exists", "test")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def load_blueprint(path: Path) -> dict[str, Any]:
|
|
37
|
+
"""Charge et valide structurellement un ``.blueprint.json``.
|
|
38
|
+
|
|
39
|
+
Lève :class:`GrimoireRuntimeError` (pas ``ExtensionError`` du sous-module
|
|
40
|
+
``tools`` : côté flows, une erreur de blueprint est une erreur de moteur,
|
|
41
|
+
pas une erreur d'extension) en nommant chaque défaut trouvé.
|
|
42
|
+
"""
|
|
43
|
+
from grimoire.tools.ext_manager import ExtensionError
|
|
44
|
+
|
|
45
|
+
try:
|
|
46
|
+
blueprint, errors = validate_blueprint_file(path)
|
|
47
|
+
except ExtensionError as exc:
|
|
48
|
+
raise GrimoireRuntimeError(str(exc)) from exc
|
|
49
|
+
if errors:
|
|
50
|
+
raise GrimoireRuntimeError(f"{path} : blueprint invalide — " + "; ".join(errors))
|
|
51
|
+
return blueprint
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def topo_order(blueprint: dict[str, Any]) -> list[str]:
|
|
55
|
+
"""Ordre d'exécution des nodes, dérivé des ``edges`` (Kahn, déterministe).
|
|
56
|
+
|
|
57
|
+
Déterministe : à dépendances égales, les nodes prêts sont pris dans
|
|
58
|
+
l'ordre alphabétique de leur id, pas dans l'ordre d'apparition dans le
|
|
59
|
+
fichier — deux lectures du même blueprint rendent le même ordre.
|
|
60
|
+
"""
|
|
61
|
+
nodes = [n["id"] for n in blueprint["nodes"]]
|
|
62
|
+
node_by_pin: dict[str, str] = {}
|
|
63
|
+
for n in blueprint["nodes"]:
|
|
64
|
+
for p in n.get("pins", []):
|
|
65
|
+
node_by_pin[f"{n['id']}.{p['id']}"] = n["id"]
|
|
66
|
+
deps: dict[str, set[str]] = {nid: set() for nid in nodes}
|
|
67
|
+
for e in blueprint.get("edges", []):
|
|
68
|
+
src = node_by_pin.get(e["from"])
|
|
69
|
+
dst = node_by_pin.get(e["to"])
|
|
70
|
+
if src is None or dst is None:
|
|
71
|
+
raise GrimoireRuntimeError(f"edge non résoluble : {e['from']} -> {e['to']}")
|
|
72
|
+
deps[dst].add(src)
|
|
73
|
+
order: list[str] = []
|
|
74
|
+
remaining = set(nodes)
|
|
75
|
+
while remaining:
|
|
76
|
+
ready = sorted(n for n in remaining if deps[n] <= set(order))
|
|
77
|
+
if not ready:
|
|
78
|
+
raise GrimoireRuntimeError(f"cycle ou dépendance non résolue dans le blueprint : {sorted(remaining)}")
|
|
79
|
+
order.extend(ready)
|
|
80
|
+
remaining -= set(ready)
|
|
81
|
+
return order
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def _tool_boundary(node: dict[str, Any]) -> tuple[str, ...]:
|
|
85
|
+
"""La frontière d'outils d'un node : ce qu'il touche hors du raisonnement.
|
|
86
|
+
|
|
87
|
+
Un ``extension-node`` délègue à un service tiers (CrewAI, LangGraph...) :
|
|
88
|
+
sa ``ref`` EST la frontière. Un ``pattern`` en rôle ``Gate`` porte
|
|
89
|
+
``config.gate`` (mode + params) : c'est une frontière de contrôle, pas
|
|
90
|
+
d'exécution, mais l'hôte doit savoir qu'un gate le regarde. Tout le reste
|
|
91
|
+
(patterns de raisonnement pur, artefacts, composites) n'a pas de
|
|
92
|
+
frontière déclarée en v1 — un tuple vide dit explicitement "aucune".
|
|
93
|
+
"""
|
|
94
|
+
if node.get("kind") == "extension-node":
|
|
95
|
+
return (node.get("ref", ""),)
|
|
96
|
+
gate = (node.get("config") or {}).get("gate")
|
|
97
|
+
if isinstance(gate, dict):
|
|
98
|
+
mode = gate.get("mode", "?")
|
|
99
|
+
params = gate.get("params") or {}
|
|
100
|
+
checks = params.get("checks")
|
|
101
|
+
if checks:
|
|
102
|
+
return (f"gate:{mode}(checks={','.join(checks)})",)
|
|
103
|
+
server = params.get("server")
|
|
104
|
+
if server:
|
|
105
|
+
return (f"gate:{mode}(server={server})",)
|
|
106
|
+
return (f"gate:{mode}",)
|
|
107
|
+
return ()
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def _parse_acceptance_entry(
|
|
111
|
+
node_id: str, entry: Any
|
|
112
|
+
) -> tuple[str, AcceptanceRun | None, AcceptanceEvidence | None]:
|
|
113
|
+
"""Une entrée d'``acceptance`` : texte libre (inchangé), ou forme structurée (issue #428).
|
|
114
|
+
|
|
115
|
+
Rend ``(texte, run, evidence)`` — ``texte`` alimente toujours
|
|
116
|
+
``NodeContract.acceptance`` (donc ``verifiability.classify``), qu'il
|
|
117
|
+
vienne de la prose de l'auteur ou soit dérivé d'une commande ; ``run``/
|
|
118
|
+
``evidence`` (au plus un des deux) alimentent le gate qui l'exécute
|
|
119
|
+
réellement (``flows.dispatch_executor``).
|
|
120
|
+
|
|
121
|
+
Une forme structurée reconnaît exactement une clé parmi ``run``,
|
|
122
|
+
``path_exists``, ``test`` — zéro ou plusieurs est un refus nommé au
|
|
123
|
+
chargement (:class:`GrimoireRuntimeError`), jamais une garde silencieuse :
|
|
124
|
+
« aucune inférence de commande à partir de la prose » est un refus
|
|
125
|
+
explicite de l'issue, une forme ambiguë ne doit pas se comporter comme si
|
|
126
|
+
elle en désignait une par accident.
|
|
127
|
+
"""
|
|
128
|
+
if isinstance(entry, str):
|
|
129
|
+
text = entry.strip()
|
|
130
|
+
return (text, None, None) if text else ("", None, None)
|
|
131
|
+
if not isinstance(entry, dict):
|
|
132
|
+
raise GrimoireRuntimeError(
|
|
133
|
+
f"node={node_id} : acceptance de forme inconnue ({entry!r}) — attendu une chaîne ou un objet "
|
|
134
|
+
"{'run': ...} / {'path_exists': ...} / {'test': ...}"
|
|
135
|
+
)
|
|
136
|
+
present = [k for k in _ACCEPTANCE_STRUCTURED_KEYS if k in entry]
|
|
137
|
+
if len(present) != 1:
|
|
138
|
+
raise GrimoireRuntimeError(
|
|
139
|
+
f"node={node_id} : acceptance structurée invalide {entry!r} — attendu exactement une clé parmi "
|
|
140
|
+
f"{_ACCEPTANCE_STRUCTURED_KEYS}, trouvé {present or 'aucune'}"
|
|
141
|
+
)
|
|
142
|
+
key = present[0]
|
|
143
|
+
if key == "run":
|
|
144
|
+
raw = str(entry["run"]).strip()
|
|
145
|
+
if not raw:
|
|
146
|
+
raise GrimoireRuntimeError(f"node={node_id} : acceptance.run vide")
|
|
147
|
+
try:
|
|
148
|
+
argv = tuple(shlex.split(raw))
|
|
149
|
+
except ValueError as exc:
|
|
150
|
+
raise GrimoireRuntimeError(f"node={node_id} : acceptance.run illisible ({exc})") from exc
|
|
151
|
+
if not argv:
|
|
152
|
+
raise GrimoireRuntimeError(f"node={node_id} : acceptance.run vide après découpage")
|
|
153
|
+
expect_exit = entry.get("expect_exit", 0)
|
|
154
|
+
if not isinstance(expect_exit, int) or isinstance(expect_exit, bool):
|
|
155
|
+
raise GrimoireRuntimeError(f"node={node_id} : acceptance.expect_exit doit être un entier")
|
|
156
|
+
cwd = entry.get("cwd", ".")
|
|
157
|
+
if not isinstance(cwd, str) or not cwd.strip():
|
|
158
|
+
raise GrimoireRuntimeError(f"node={node_id} : acceptance.cwd doit être une chaîne non vide")
|
|
159
|
+
timeout_s = entry.get("timeout_s", 120.0)
|
|
160
|
+
if isinstance(timeout_s, bool) or not isinstance(timeout_s, (int, float)) or timeout_s <= 0:
|
|
161
|
+
raise GrimoireRuntimeError(f"node={node_id} : acceptance.timeout_s doit être un nombre positif")
|
|
162
|
+
expect_stdout_contains = entry.get("expect_stdout_contains")
|
|
163
|
+
if expect_stdout_contains is not None and not isinstance(expect_stdout_contains, str):
|
|
164
|
+
raise GrimoireRuntimeError(f"node={node_id} : acceptance.expect_stdout_contains doit être une chaîne")
|
|
165
|
+
run = AcceptanceRun(
|
|
166
|
+
argv=argv,
|
|
167
|
+
raw=raw,
|
|
168
|
+
expect_exit=expect_exit,
|
|
169
|
+
cwd=cwd,
|
|
170
|
+
timeout_s=float(timeout_s),
|
|
171
|
+
expect_stdout_contains=expect_stdout_contains,
|
|
172
|
+
)
|
|
173
|
+
text = f"la commande « {raw} » retourne le code de sortie {expect_exit} (acceptance exécutée)"
|
|
174
|
+
return text, run, None
|
|
175
|
+
if key == "path_exists":
|
|
176
|
+
value = str(entry["path_exists"]).strip()
|
|
177
|
+
if not value:
|
|
178
|
+
raise GrimoireRuntimeError(f"node={node_id} : acceptance.path_exists vide")
|
|
179
|
+
text = f"le fichier « {value} » existe (acceptance exécutée)"
|
|
180
|
+
return text, None, AcceptanceEvidence(kind="path_exists", value=value)
|
|
181
|
+
value = str(entry["test"]).strip()
|
|
182
|
+
if not value:
|
|
183
|
+
raise GrimoireRuntimeError(f"node={node_id} : acceptance.test vide")
|
|
184
|
+
text = f"le test « {value} » passe (suite de tests, acceptance exécutée)"
|
|
185
|
+
return text, None, AcceptanceEvidence(kind="test", value=value)
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def _acceptance(
|
|
189
|
+
node: dict[str, Any], outputs: tuple[PinRef, ...]
|
|
190
|
+
) -> tuple[tuple[str, ...], tuple[AcceptanceRun, ...], tuple[AcceptanceEvidence, ...]]:
|
|
191
|
+
"""Critères d'acceptation : ``node.acceptance``, sinon les evals, sinon les pins.
|
|
192
|
+
|
|
193
|
+
Trois sources, dans cet ordre de préférence :
|
|
194
|
+
|
|
195
|
+
- ``node.acceptance`` — texte libre écrit par l'auteur du blueprint, ou
|
|
196
|
+
(issue #428) une forme structurée exécutable, ou un mélange des deux
|
|
197
|
+
dans la même liste. C'est la seule source qu'une classe de
|
|
198
|
+
vérifiabilité (#309) peut vraiment lire : ``sortie conforme au contrat
|
|
199
|
+
« c1 »`` ou ``verdict attendu : ...`` ne nomment ni verdict mécanique
|
|
200
|
+
reconnu ni revue, et tombent donc toujours ambigus. Un node qui veut
|
|
201
|
+
être dispatchable par cascade (#311) doit décrire son critère avec ce
|
|
202
|
+
vocabulaire-là : ``la suite de tests passe`` (V0), ``revue humaine
|
|
203
|
+
avant fusion`` (V1) — ou, désormais, déclarer directement la commande
|
|
204
|
+
qui rend ce verdict.
|
|
205
|
+
- ``config.evals`` — les cas ``assert`` (P1.2, rejoués par ``grimoire
|
|
206
|
+
blueprint evals``), s'il n'y a pas d'``acceptance`` explicite.
|
|
207
|
+
- À défaut des deux, un critère dérivé des pins de sortie : la
|
|
208
|
+
conformité au contrat est le plancher, jamais rien.
|
|
209
|
+
|
|
210
|
+
Une forme structurée invalide (clé inconnue, plusieurs clés, type
|
|
211
|
+
incorrect) lève :class:`GrimoireRuntimeError` en nommant le node — un
|
|
212
|
+
schéma refusé au chargement, pas un gate qui échouerait ouvert plus tard.
|
|
213
|
+
"""
|
|
214
|
+
explicit = node.get("acceptance")
|
|
215
|
+
if isinstance(explicit, list) and explicit:
|
|
216
|
+
texts: list[str] = []
|
|
217
|
+
runs: list[AcceptanceRun] = []
|
|
218
|
+
evidence: list[AcceptanceEvidence] = []
|
|
219
|
+
for entry in explicit:
|
|
220
|
+
text, run, ev = _parse_acceptance_entry(node["id"], entry)
|
|
221
|
+
if text:
|
|
222
|
+
texts.append(text)
|
|
223
|
+
if run is not None:
|
|
224
|
+
runs.append(run)
|
|
225
|
+
if ev is not None:
|
|
226
|
+
evidence.append(ev)
|
|
227
|
+
return tuple(texts), tuple(runs), tuple(evidence)
|
|
228
|
+
evals = (node.get("config") or {}).get("evals")
|
|
229
|
+
criteria: list[str] = []
|
|
230
|
+
if isinstance(evals, dict):
|
|
231
|
+
for case in evals.get("cases", []):
|
|
232
|
+
for assertion in case.get("assert", []):
|
|
233
|
+
kind = assertion.get("kind")
|
|
234
|
+
if kind == "contract":
|
|
235
|
+
criteria.append(f"sortie conforme au contrat « {assertion.get('contract')} »")
|
|
236
|
+
elif kind == "no-refusal":
|
|
237
|
+
criteria.append("aucun refus du modèle")
|
|
238
|
+
elif kind == "cost":
|
|
239
|
+
criteria.append(f"coût ≤ {assertion.get('maxTokens')} tokens")
|
|
240
|
+
elif kind == "verdict":
|
|
241
|
+
criteria.append(f"verdict attendu : {assertion.get('expected')}")
|
|
242
|
+
if not criteria:
|
|
243
|
+
criteria = [f"sortie du pin « {p.pin_id} » conforme au contrat « {p.contract} »" for p in outputs]
|
|
244
|
+
return tuple(criteria), (), ()
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
def _verifiability_warning(node_id: str, acceptance_texts: tuple[str, ...], *, has_structured: bool) -> str | None:
|
|
248
|
+
"""« nœud V0 sans acceptance exécutable » — posé au chargement, jamais au gate (issue #428, suite).
|
|
249
|
+
|
|
250
|
+
Un nœud dont le texte seul classe V0 (#309) mais qui ne déclare aucune
|
|
251
|
+
commande exécutable est le fossé exact que le rejeu du 2026-09-11 a payé :
|
|
252
|
+
l'auteur du blueprint a écrit un vocabulaire mécanique (« la suite de
|
|
253
|
+
tests passe ») sans jamais donner au gate de quoi le vérifier — sans ce
|
|
254
|
+
garde-fou, ``flows.dispatch_executor`` n'aurait toujours que le check
|
|
255
|
+
d'enveloppe à faire tourner. La règle du kit (« un faux V0 est pire qu'un
|
|
256
|
+
faux V2 », ``verifiability.py``) s'applique à l'identique ici : ce nœud
|
|
257
|
+
est traité comme V1 par l'exécuteur de dispatch (jamais fermé sur la
|
|
258
|
+
seule foi de l'ouvrier), et ce message nommé en dit la raison plutôt que
|
|
259
|
+
de rétrograder en silence.
|
|
260
|
+
"""
|
|
261
|
+
if has_structured:
|
|
262
|
+
return None
|
|
263
|
+
if classify_criteria(acceptance_texts) is not Verifiability.V0:
|
|
264
|
+
return None
|
|
265
|
+
return f"nœud {node_id} classé V0 sans acceptance exécutable : traité comme V1"
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def build_node_contracts(blueprint: dict[str, Any]) -> dict[str, NodeContract]:
|
|
269
|
+
"""Un :class:`NodeContract` par node du blueprint, indexé par id."""
|
|
270
|
+
contracts: dict[str, NodeContract] = {}
|
|
271
|
+
for node in blueprint["nodes"]:
|
|
272
|
+
pins = node.get("pins", [])
|
|
273
|
+
inputs = tuple(PinRef(p["id"], p["contract"]) for p in pins if p.get("direction") == "in")
|
|
274
|
+
outputs = tuple(PinRef(p["id"], p["contract"]) for p in pins if p.get("direction") == "out")
|
|
275
|
+
acceptance_texts, acceptance_runs, acceptance_evidence = _acceptance(node, outputs)
|
|
276
|
+
has_structured = bool(acceptance_runs or acceptance_evidence)
|
|
277
|
+
contracts[node["id"]] = NodeContract(
|
|
278
|
+
node_id=node["id"],
|
|
279
|
+
kind=node.get("kind", ""),
|
|
280
|
+
label=node.get("label", ""),
|
|
281
|
+
description=node.get("description", ""),
|
|
282
|
+
inputs=inputs,
|
|
283
|
+
outputs=outputs,
|
|
284
|
+
tool_boundary=_tool_boundary(node),
|
|
285
|
+
acceptance=acceptance_texts,
|
|
286
|
+
acceptance_runs=acceptance_runs,
|
|
287
|
+
acceptance_evidence=acceptance_evidence,
|
|
288
|
+
verifiability_warning=_verifiability_warning(node["id"], acceptance_texts, has_structured=has_structured),
|
|
289
|
+
)
|
|
290
|
+
return contracts
|