grimoire-kit 3.77.0__tar.gz → 3.78.1__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.77.0 → grimoire_kit-3.78.1}/CHANGELOG.md +9 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/PKG-INFO +1 -1
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/pyproject.toml +1 -1
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/registry/kit-file-hashes.json +1 -1
- grimoire_kit-3.78.1/src/grimoire/__version__.py +1 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_providers.py +149 -1
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/dispatch.py +22 -18
- grimoire_kit-3.78.1/src/grimoire/missions/dispatch_worktree.py +58 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/providers/registry.py +131 -0
- grimoire_kit-3.78.1/src/grimoire/providers/secrets.py +148 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/project_health.py +8 -3
- grimoire_kit-3.78.1/src/grimoire/tools/workspace_providers_write.py +91 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_routes.py +2 -0
- grimoire_kit-3.78.1/version.txt +1 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/api.js +4 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/configurer.js +75 -0
- grimoire_kit-3.77.0/src/grimoire/__version__.py +0 -1
- grimoire_kit-3.77.0/version.txt +0 -1
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/.gitignore +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/LICENSE +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/_grimoire/_config/custom/prompt-templates/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/agentic-standard/archetype.dna.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/agentic-standard/shared-context.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/creative-studio/agents/blender-expert.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/creative-studio/agents/brand-designer.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/creative-studio/agents/illustration-expert.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/creative-studio/archetype.dna.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/creative-studio/shared-context.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/creative-studio/skills/creative-content-copywriting.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/features/vector-memory/vectus.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/fix-loop/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/fix-loop/agents/fix-loop-orchestrator.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/fix-loop/archetype.dna.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/fix-loop/workflows/workflow-closed-loop-fix.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/infra-ops/agents/monitoring-specialist.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/infra-ops/agents/ops-engineer.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/infra-ops/agents/systems-debugger.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/infra-ops/archetype.dna.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/infra-ops/shared-context.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/infra-ops/skills/infra-backup-dr.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/infra-ops/skills/infra-k8s-gitops.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/infra-ops/skills/infra-pipeline-cicd.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/infra-ops/skills/infra-security-hardening.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/meta/agents/agent-optimizer.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/meta/agents/concierge.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/meta/agents/security-auditor.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/meta/archetype.dna.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/meta/skills/meta-art-direction.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/meta/skills/meta-memory-quality.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/meta/skills/meta-project-navigation.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/meta/skills/meta-toolsmithing.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/meta/skills/upgrade-review.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/minimal/agents/custom-agent.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/minimal/archetype.dna.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/platform-engineering/agents/backend-engineer.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/platform-engineering/agents/platform-architect.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/platform-engineering/archetype.dna.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/platform-engineering/shared-context.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/platform-engineering/skills/platform-deploy-release.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/platform-engineering/skills/platform-reliability-sre.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/platform-engineering/templates/architecture.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/stack/agents/stack-engineer.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/stack/archetype.dna.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/stack/skills/stack-ansible.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/stack/skills/stack-docker.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/stack/skills/stack-go.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/stack/skills/stack-k8s.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/stack/skills/stack-python.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/stack/skills/stack-terraform.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/stack/skills/stack-typescript.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/web-app/agents/fullstack-dev.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/web-app/archetype.dna.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/web-app/shared-context.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/archetypes/web-app/skills/web-frontend-ux.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/changelog.d/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/docs/assets/captures/i1/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/docs/assets/captures/p47/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/docs/captures/p42-correction/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/activated/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/index.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/package-lock.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/package.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/App.tsx +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/components/AddTaskForm.tsx +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/components/TaskItem.tsx +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/components/TaskList.tsx +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/main.tsx +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/styles.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/test/AddTaskForm.test.tsx +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/test/TaskList.test.tsx +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/test/setup.ts +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/src/types.ts +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/tsconfig.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/app/web/vite.config.ts +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/evals/witnesses/web-app-todo/enforced/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/examples/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/examples/blueprint-minimal/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/examples/blueprint-web-pipeline/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/examples/terraform-houseserver/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/examples/web-app-todo/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/autogen/artifacts/agents/autogen-conversation-runner.agent.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/autogen/artifacts/skills/autogen-conversation-design/SKILL.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/autogen/extension.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/autogen/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/browser-use/artifacts/agents/browser-use-runner.agent.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/browser-use/artifacts/instructions/browser-evidence.instructions.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/browser-use/extension.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/browser-use/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/crewai/artifacts/agents/crewai-crew-runner.agent.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/crewai/artifacts/hooks/crewai-telemetry-bridge.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/crewai/artifacts/hooks/crewai-telemetry-bridge.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/crewai/artifacts/prompts/crewai-import-crew.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/crewai/artifacts/skills/crewai-crew-design/SKILL.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/crewai/extension.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/crewai/scripts/register-hooks.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/crewai/scripts/unregister-hooks.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/crewai/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/extension.schema.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/fennara-godot/artifacts/skills/godot-evidence-loop/SKILL.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/fennara-godot/extension.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/fennara-godot/scripts/setup-mcp.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/fennara-godot/scripts/teardown-mcp.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/fennara-godot/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/grimoire-mcp/artifacts/instructions/mcp-trust-gate.instructions.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/grimoire-mcp/artifacts/skills/grimoire-mcp-setup/SKILL.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/grimoire-mcp/extension.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/grimoire-mcp/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/haystack/artifacts/instructions/haystack-rag-governance.instructions.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/haystack/artifacts/skills/haystack-pipeline-design/SKILL.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/haystack/extension.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/haystack/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langfuse/artifacts/hooks/langfuse-trace-export.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langfuse/artifacts/hooks/langfuse-trace-export.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langfuse/artifacts/instructions/langfuse-observability.instructions.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langfuse/artifacts/skills/langfuse-tracing-setup/SKILL.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langfuse/extension.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langfuse/scripts/register-hooks.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langfuse/scripts/unregister-hooks.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langfuse/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langgraph/artifacts/agents/langgraph-graph-runner.agent.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langgraph/artifacts/prompts/langgraph-import-graph.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langgraph/artifacts/skills/langgraph-graph-design/SKILL.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langgraph/extension.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/extensions/langgraph/scripts/verify-install.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/FREEZE.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agent-base-compact.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agent-base.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agent-mesh-network.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agent-relationship-graph.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agent-rules.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agent2agent.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-industry-reference.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/capability-map.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/needs-catalog.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/profile-map.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/target-schema.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/acceptance-record.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/accepted-risks.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/blast-radius-policy.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/browser-tool-contract.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/capability-registry.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/claim-ledger.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/cluster-action-policy.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/compliance-declaration.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/compliance-score.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/compression-gate.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/context-contract.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/cost-registry.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/decision-council.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/decision-graph.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/doc-graph-pipeline.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/environment-policy.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/evidence-gates.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/evidence-pack.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/flow-dsl-manifest.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/guardrail-contract.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/hook-registry.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/incident-registry.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/k8s-agent-manifest.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/knowledge-source-registry.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/llm-provider-registry.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/memory-integrity.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/memory-policy.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/merge-lane.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/mission-brief.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/observability-policy.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/orchestration-policy.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/pattern-catalog.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/privilege-boundary.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/prompt-firewall.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/prompt-version-log.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/remediation-plan.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/remote-hygiene.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/retention-registry.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/risk-control-matrix.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/rule-packs.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/runtime-provider-contract.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/runtime-surface-registry.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/task-board.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/task-envelope.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/tool-registry.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/visual-evidence.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/waivers.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/workflow-state-manifest.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/templates/workspace-isolation.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/agentic-standard/traceability.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/archetype-dna.schema.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/cc-reference.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/cc-verify.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/context-router.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot/instructions/grimoire-project.instructions.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot/prompts/grimoire-changelog.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot/prompts/grimoire-dream.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot/prompts/grimoire-health-check.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot/prompts/grimoire-pre-push.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot/prompts/grimoire-self-heal.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot/prompts/grimoire-session-bootstrap.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot/prompts/grimoire-status.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot/prompts/grimoire-upgrade-review.prompt.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/copilot-extension/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/cross-validation-trust.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/delivery-contract.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/event-log-shared-state.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-architecture-haut-niveau.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-aws.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-azure.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-c.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-cloudflare.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-cpp.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-csharp.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-design-patterns.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-elixir.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-gcp.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-hetzner.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-java.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-kotlin.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-kubernetes-managed.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-ovh.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-performance.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-php.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-ruby.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-rust.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-scala.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-scaleway.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-securite-applicative.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-swift.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-systemes-bas-niveau.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/expertises/skills/expertise-testing-avancee.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/glossary.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/grimoire-trace.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/honest-uncertainty-protocol.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hooks/.pre-commit-config.tpl.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hooks/commit-msg.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hooks/mnemo-consolidate.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hooks/post-checkout.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hooks/post-commit.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hooks/pre-commit-cc.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hooks/pre-push.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hooks/prepare-commit-msg.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hosts/commands/grimoire-doctor.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hosts/commands/grimoire-gate.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hosts/commands/grimoire-proof.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hosts/commands/grimoire-recall.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hosts/commands/grimoire-verify.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hosts/skills/grimoire-agent-dispatch.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hosts/skills/grimoire-evidence.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hosts/skills/grimoire-memory.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hosts/skills/grimoire-steward.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/hybrid-parallelism-engine.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/mcp/grimoire-mcp-server.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/.gitignore +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/backends/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/backends/backend_lexical.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/backends/backend_local.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/backends/backend_ollama.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/backends/backend_qdrant_local.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/backends/backend_qdrant_server.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/contradiction-log.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/dependency-graph.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/docker-compose.memory-target.tpl.yml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/docker-compose.memory.tpl.yml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/failure-museum.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/handoff-log.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/k8s-qdrant.tpl.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/maintenance.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/mem0-bridge.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/memory_seed.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/network-topology.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/oss-references.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/requirements/requirements-minimal.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/requirements/requirements-ollama.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/requirements/requirements-qdrant.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/requirements.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/memory/session-save.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/orchestrator-gateway.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/productive-conflict-engine.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/audit-report.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/capacity-planning.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/compliance-check.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/dependency-updates.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/design-tokens.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/network-troubleshoot.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/operational-mode.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/periodic-report.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/secret-rotation.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/strategic-plan.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/prompt-templates/troubleshoot.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/question-escalation-chain.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/registry/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/selective-huddle-protocol.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/sessions/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/sil-collect.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/adversarial-consensus.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/agent-bench.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/agent-caller.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/agent-darwinism.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/agent-debugger.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/agent-forge.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/agent-integrity.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/agent-test.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/agent-watch.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/agent-worker.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/antifragile-score.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/auto-doc.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/context-guard.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/context-summarizer.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/cross-migrate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/dep-check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/distill.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/dna-evolve.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/dream.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/expert-tool-chain.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/failure-museum.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/gen-tests.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/grimoire-completion.zsh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/grimoire-mcp-tools.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/grimoire-setup.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/image-prompt.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/incubator.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/llm-router.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/memory-lint.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/memory-sync.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/message-bus.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/nso.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/observatory.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/preflight-check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/quick-check.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/rag-indexer.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/rag-retriever.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/reasoning-stream.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/schema-validator.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/session-lifecycle.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/stigmergy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/stigmergy_hooks/scripts/stigmergy-emit-post-edit.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/stigmergy_hooks/scripts/stigmergy-emit-stop.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/stigmergy_hooks/scripts/stigmergy-sense.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/stigmergy_hooks/scripts/stigmergy_hook.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/stigmergy_hooks/stigmergy-emit.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/stigmergy_hooks/stigmergy-sense.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/swarm-consensus.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/synapse-trace.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/token-budget.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/tool-registry.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/tool-resolver.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/vision-judge.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/tools/web-browser.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/workflows/boomerang-orchestration.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/workflows/github-cc-check.yml.tpl +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/workflows/incident-response.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/workflows/party-mode.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/workflows/repo-map-generator.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/workflows/state-checkpoint.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/workflows/subagent-orchestration.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/workflows/workflow-graph.tpl.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/framework/workflows/workflow-status.tpl.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/planning/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/registry/blueprints/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/registry/blueprints/project-upgrade.blueprint.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/registry/expertises.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/rust/grimoire-acp-core/pyproject.toml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/rust/grimoire-dispatch-core/pyproject.toml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/rust/grimoire-flows-core/pyproject.toml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/rust/grimoire-hosts-core/pyproject.toml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/rust/grimoire-policies-core/pyproject.toml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/rust/grimoire-schema-core/pyproject.toml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/rust/grimoire-traces-core/pyproject.toml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/scripts/gen-site-data.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/__main__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/acp/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/acp/client.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/acp/machine.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/archetypes/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/bridges/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/bridges/a2a_adapter.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/bridges/host.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/bridges/schemas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/_condensed_help.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/_lazy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/_lazy_extra.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/_registry_dispatches_report.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/_shared.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/app.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_agent.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_autonomy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_blueprint.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_blueprint_import.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_cadrage.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_ceremony.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_chat.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_cockpit.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_context_pack.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_debugger.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_dispatch.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_evidence.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_expertise.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_ext.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_features.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_flow.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_gates.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_hooks.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_host.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_idea.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_init.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_mcp.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory_bundle.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory_gestures.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory_knowledge.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory_lexical.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory_ops.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory_packs.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory_projections.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory_rules.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_memory_shared.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_merge.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_migrate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_mission.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_needs.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_onboard.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_orchestrate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_phase.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_plans.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_policies.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_proposals.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_queue.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_route.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_self_bundle.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_self_update.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_serve.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_setup.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_standard.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_standard_claims.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_steward.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_stigmergy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_a2a.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_add.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_approve.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_import.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_portfolio.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_questions.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_review.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_usage.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_waiting.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_wave.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_task_worktree.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_team.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_up.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_up_prove.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_up_task_unification.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_upgrade.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_upgrade_flow.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_verify_install.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_web.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cmd_workflows.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/cockpit_http.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/doctor_acp.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/doctor_brake.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/doctor_hooks.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/doctor_instructions.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/doctor_mcp.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/doctor_notify.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/doctor_skills.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/env_checks.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/init_memory.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/init_questions.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/cli/updater.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/codegraph/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/codegraph/backends/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/codegraph/backends/neo4j.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/codegraph/freshness.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/codegraph/graph.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/codegraph/parser.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/codegraph/schemas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/agent_freshness.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/agentic_standard.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/archetype_resolver.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/cadrage.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/cadrage_requirements.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/claude_activation.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/command_line.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/config.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/console_encoding.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/deprecation.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/error_codes.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/exceptions.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/execution_needs.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/expertises.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/fsio.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/grounding.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/integrity.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/kit_hashes.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/layered_rules.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/layout.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/learned_rules.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/log.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/merge.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/needs_suggest.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/onboarding_panel.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/override_drift.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/policy_budget_guard_check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/profile_floor_doctor.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/project.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/project_capabilities.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/project_kind.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/project_types.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/request_memo.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/resolver.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/rule_resolution.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/safe_git.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/scaffold.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/scanner.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/schema.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/stack_pack_verifiers.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/stack_packs.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/stack_skills.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/acceptance_test_run.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/base.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/cadrage_ledger_check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/claim_ledger_verify.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/claim_proof_resolve.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/controls.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/criterion_coverage.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/dispatch_cost_slo.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/evidence_chain.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/evidence_journal.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/evidence_resolve.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/gate_codegraph.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/gate_remedy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/gate_review_checks.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/gate_test_run.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/hot_memory_check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/no_tests_collected.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/observability_check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/pattern_codes.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/plan_then_execute_check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/registry.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/rules_check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/runtime_journal_check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/skills_check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/tree_fingerprint.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_checks/verifiers.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_effective_profile.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_generation.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_profile_manifest.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_state.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_task_scaffold.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_traceability.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/standard_upstream.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/task_board_ledger.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/task_unification_doctor.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/core/validator.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/costs.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/data/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/data/bench/longmemeval-sample.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/data/stack-packs/python.yaml +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/evidence/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/evidence/schemas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/evidence/service.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/attestation.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/autonomy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/blueprint_loader.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/directive.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/dispatch_executor.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/doctor.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/engine.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/executor.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/extract.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/fingerprint.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/genres.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/live_runs.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/pilot.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/registry.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/schemas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/flows/transfer.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/acp_hosts.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/capabilities.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/collect.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/contract_probe.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/_shared.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/activation.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/authority_guard.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/calibration.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/chain_ack.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/context_capsule.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/done_gate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/enrolment.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/event_trace.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/evidence_gate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/evidence_trace.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/gate_override.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/gate_summary.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/human_turns.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/instruction_scan.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/lease_brake.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/pause_brake.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/profile_floor.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/record.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/repetition_guard.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/self_view.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/session_memory.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/steering.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/subagent_gate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/task_context.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/tool_facts.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/decisions/tool_policy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/detection.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/emitters/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/emitters/base.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/emitters/claude_code.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/emitters/copilot.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/emitters/generic.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/emitters/opencode.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/emitters/rules.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/events.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/hook_launcher.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/host_version.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/matrix.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/probe.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/runtime.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/secrets.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/skill_spec.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/surface.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/hosts/sync.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/mcp/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/mcp/idea_tools.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/mcp/memory_gestures.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/mcp/project.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/mcp/server.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/architecture.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/_qdrant_mixin.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/base.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/lexical.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/local.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/mempalace.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/ollama.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/qdrant.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/tantivy_local.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/backends/weaviate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/bundle.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/correction.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/embedding.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/gestures.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/health_cache.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/hot.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/journal.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/knowledge.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/longmemeval.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/manager.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/migration.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/neo4j_backfill.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/neo4j_graph.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/profiles.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/projections.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/reads_log.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/retrieval.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/shared.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/sidecar.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/split.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/store_probe.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/supersession.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/taxonomy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/memory/validation.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/admission.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/autopilot.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/board.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/breaker.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/cadrage_plan.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ceremony.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ceremony_budget.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/check_gate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ci_slots.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/decisions.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/declarative_evidence.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/diff_fingerprint.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/dispatch_advice.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/dispatch_history.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/effects.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/empty_green.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ended.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/finition.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/gates.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/human_acceptance.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ideas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/intake.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/intake_tasks.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/janitor.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/launcher.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/lease.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ledger.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ledger_append.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ledger_links.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ledger_rules.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ledger_snapshot.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/ledger_views.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/liveness.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/mandate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/manual_review.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/merger.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/orchestrate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/orchestrator_policy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/orchestrator_session.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/pause.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/plan_import.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/plans_registry.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/prepush_fence.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/question_gestures.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/question_rounds.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/question_v2.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/questions.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/recall.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/reclaim.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/report.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/reservation.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/review_receipt.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/review_seal.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/review_verdict.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/reviewer.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/route_dispatch.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/route_report.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/router.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/routing_policy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/schemas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/service.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/session_link.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/task_flow_adapter.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/task_unification.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/task_worktree.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/team_units.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/timer.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/trace.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/usage_fold.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/verifiability.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/verify.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/waiting.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/wave_checkpoint.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/missions/waves.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/onboarding/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/onboarding/brownfield.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/onboarding/facts.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/onboarding/scan_js.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/onboarding/scan_manifests.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/onboarding/scan_python.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/policies/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/policies/engine.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/policies/rules_config.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/policies/schemas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/policies/security.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/policies/session_state.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/policies/temporal.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/proposals.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/providers/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/providers/audit.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/providers/quota.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/providers/routing.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/providers/state.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/py.typed +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/registry/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/registry/agents.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/registry/discovery.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/registry/local.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/repo_gates/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/runtime/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/runtime/adapter_base.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/runtime/crewai_adapter.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/runtime/gascity_converter.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/runtime/kernel.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/runtime/langgraph_adapter.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/runtime/recipes.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/runtime/schemas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/steward/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/steward/project_map.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/steward/report.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/steward/sources.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/steward/verdicts.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/_common.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/agent_creation.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_checkpoint.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_context.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_diff.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_eval_runner.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_evals.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_gate.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_primitives.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_resilience.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_scatter.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_security.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/blueprint_telemetry.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/cockpit_registry_routes.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/context_pack.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/cost_model.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/ext_manager.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/features.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/flow_runs.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/forge_http.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/forge_routes.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/forge_server.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/handoff.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/harmony_check.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/install_receipt.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/install_trust.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/mcp_processes.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/memory_link.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/memory_lint.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/memory_setup.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/memory_vectors.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/model_windows.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/project_registry.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/project_setup.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/project_update.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/project_upgrade.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/request_guard.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/serve_data.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/source_assist.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/stigmergy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/stigmergy_hooks.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/untrusted.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/update_bundle.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/update_bundle_build.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/update_channels.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/upgrade_changes.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/upgrade_preview.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/view_cache.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_actions.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_api.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_attention.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_capacity.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_chat.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_chat_kanban.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_chat_pilot.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_config.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_exec.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_first_launch.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_graph.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_hygiene.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_ideas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_knowledge.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_language.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_launch_apply.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_launch_preflight.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_legacy.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_machine.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_memory.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_memory_gestures.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_notify.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_portfolio.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_pulse.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_read_cache.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_recall.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_reviews.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_session_feed.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_sessions.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_setup_guide.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_since.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_slots.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_task_gates.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_work.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/tools/workspace_write_guard.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/traces/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/traces/intervals.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/traces/ledger.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/traces/observatory_feed.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/traces/otel_conventions.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/traces/otlp.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/traces/runtime_spans.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/traces/schemas.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/traces/transcript_usage.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/workflows/__init__.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/src/grimoire/workflows/registry.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/DESIGN-BRIEF-memory.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/DESIGN-BRIEF-observability.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/DESIGN-REVIEW-2026-09.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/DESIGN-SPEC-workspace-2026-09.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/anatomy.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/atelier-nav.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/atelier.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/atelier.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/blueprint-onboarding.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/blueprints.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-assist.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-composer.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-core.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-cost.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-diff.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-docs.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-evals.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-lexicon.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-library.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-manual.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-sections.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-team.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-team.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2-tour.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/bp2.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/activity.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/architecture.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/catalogue-export.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/extensions.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/insights.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/kit-coverage.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/memory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/meta.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/observatory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/atlas-ops/activity.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/atlas-ops/insights.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/atlas-ops/memory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/atlas-ops/meta.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/atlas-ops/observatory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/atlas-ops/taskboard.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/grimoire-kit/activity.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/grimoire-kit/insights.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/grimoire-kit/memory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/grimoire-kit/meta.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/grimoire-kit/observatory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/grimoire-kit/taskboard.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/ledger-data/activity.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/ledger-data/insights.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/ledger-data/memory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/ledger-data/meta.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/ledger-data/observatory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/ledger-data/taskboard.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/sentinel-sec/activity.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/sentinel-sec/insights.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/sentinel-sec/memory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/sentinel-sec/meta.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/sentinel-sec/observatory.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects/sentinel-sec/taskboard.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/projects.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/cloture-refusee-puis-acceptee.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/cloture-refusee-puis-acceptee.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/decision-humaine-attestee.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/decision-humaine-attestee.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/index.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/rappel-au-claim.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/rappel-au-claim.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/supersession.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/supersession.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/tri-v0-v1-v2.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/reels/tri-v0-v1-v2.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/data/taskboard.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/demo.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/Concevoir.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/ConcevoirClair.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/Couleurs.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/DAArdoise.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/DAPapier.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/DAStudio.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/DirectionB.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/DirectionC.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/DirectionD.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/Encre.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/EncreClair.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/Main.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/Mecaniques.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/Source.dc.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/canvas.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/concevoir-dark.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/concevoir-light.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/executer-dark.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/executer-light.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/memoire-dark.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/memoire-light.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/observer-dark.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/observer-light.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/piloter-dark.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/piloter-light.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/source-dark.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/captures/source-light.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/gen-couleurs.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/gen-skins.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design/workspace-2026-09/shell.tpl.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/01-cockpit-portefeuille-desktop.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/02-cockpit-portefeuille-full.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/03-cockpit-portefeuille-mobile.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/04-kanban-desktop.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/05-kanban-mobile.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/06-observatoire-desktop.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/07-observatoire-full.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/08-atelier-desktop.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/09-atelier-mobile.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/10-memoire-desktop.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/11-blueprints-desktop.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/12-extensions-desktop.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/13-patterns-desktop.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/14-cockpit-index-desktop.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/15-workspace-lot1-sombre-decouverte.png +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/16-workspace-lot1-clair-decouverte.png +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/17-workspace-lot1-sombre-concentration.png +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/design-review-2026-09/18-workspace-lot1-clair-concentration.png +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/documentation.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/extensions.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/Geist-Variable-latin.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/GeistMono-Variable-latin.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/JetBrainsMono-Regular.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/OFL-instrument.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/OFL-jetbrains.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/OFL.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/fonts.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/instrument-sans-400.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/instrument-sans-500.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/fonts/instrument-sans-600.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/forge-base.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/forge-charts.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/forge-landing.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/forge-motion.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/forge-motion.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/forge-nav.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/forge-observatory.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/forge-tokens.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/game-ui.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/grimoire-mode.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/index.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/kanban.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/labs.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/media/capture-reelle.png +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/media/teaser-720.mp4 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/media/teaser-poster.jpg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/memory.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/observability.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/patterns.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/portfolio.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/project-picker.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/.gitignore +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/audio4.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/build4.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/clips.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/cues.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/cues.mjs +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/detect_green.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/fonts/JetBrainsMono-Regular.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/fonts/JetBrainsMono-SemiBold.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/fonts/OFL-InstrumentSans.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/fonts/OFL-JetBrainsMono.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/fonts/instrument-sans-400.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/fonts/instrument-sans-500.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/fonts/instrument-sans-600.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/footage-sources.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/icons/board.svg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/icons/fleet.svg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/icons/inbox.svg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/icons/pr.svg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/icons/sliders.svg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/icons/tag.svg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/master.sh +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/prep_footage.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/render.mjs +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/scene4.tpl.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/screens.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/shots.mjs +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/storyboard.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/teaser/terminal.json +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/tools/check-links.py +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/README.md +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/activity.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/chat.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/fonts/GeistMono-Medium.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/fonts/GeistMono-Regular.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/fonts/InstrumentSans-Variable.woff2 +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/fonts/OFL-InstrumentSans.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/fonts/OFL.txt +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/glossary.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/icons/NOTICE +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/icons.svg +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/index.html +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/live.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/markdown.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/notify.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/score.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/setup-state.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/shell.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/shell.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/a-traiter-group.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/a-traiter-since.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/a-traiter.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/board-split.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/capacite.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/carte-worker.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/carte.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/code-projection.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/concevoir.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/decision-card.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/demarrer.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/donnees.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/executer.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/memoire-gestes.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/memoire.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/observer.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/piloter.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/rappel.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/recall-receipt.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/registre.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/revue.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/sante.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/sessions.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/source-editor.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/source.css +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/source.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/task-create.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/spaces/task-intake.js +0 -0
- {grimoire_kit-3.77.0 → grimoire_kit-3.78.1}/web/workspace/tokens.css +0 -0
|
@@ -7,6 +7,15 @@ et ce projet adhère au [Semantic Versioning](https://semver.org/lang/fr/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [3.78.1] - 2026-11-06
|
|
11
|
+
|
|
12
|
+
- fix(missions): la relecture d'un dispatch ne porte plus que sur ce que l'ouvrier a changé : plus de fausse alerte sur un arbre déjà modifié, et les fichiers qu'il crée ne lui échappent plus (#1101)
|
|
13
|
+
|
|
14
|
+
## [3.78.0] - 2026-11-05
|
|
15
|
+
|
|
16
|
+
- feat(providers): écrire le registre de fournisseurs LLM (`grimoire providers add|enable|disable|remove`) et poser une clé en saisie masquée (`set-key`/`remove-key`/`secrets`) dans un magasin léger `~/.env-store/`, jamais dans le registre ; `task dispatch` fusionne désormais ces variables dans l'environnement du sous-processus avant d'invoquer le fournisseur (#1099)
|
|
17
|
+
- fix(cockpit): la Flotte ne rend plus une santé en erreur sous charge (lecteur YAML partagé entre threads) ; ses tests e2e attendent l'état de la table et la fin de la navigation « Ouvrir » (GAO-i15-stabili-001) (#1096)
|
|
18
|
+
|
|
10
19
|
## [3.77.0] - 2026-10-30
|
|
11
20
|
|
|
12
21
|
- chore(release): correctifs intermédiaires des PR fusionnées par commit de fusion, déjà décrits par le fragment de leur PR : e56b9bde, 643cd839, 45360126, ea109781, efb3ea4e, 00f1a297, 195fcb60
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: grimoire-kit
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.78.1
|
|
4
4
|
Summary: Dashboard, task board, project memory and evidence check for code you delegate to agents (Claude Code, Copilot).
|
|
5
5
|
Project-URL: Homepage, https://github.com/Guilhem-Bonnet/Grimoire-kit
|
|
6
6
|
Project-URL: Repository, https://github.com/Guilhem-Bonnet/Grimoire-kit
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "3.78.1"
|
|
@@ -16,6 +16,7 @@ départ que ``grimoire task dispatch`` en tire.
|
|
|
16
16
|
from __future__ import annotations
|
|
17
17
|
|
|
18
18
|
import json
|
|
19
|
+
from dataclasses import asdict
|
|
19
20
|
from datetime import UTC, datetime
|
|
20
21
|
from pathlib import Path
|
|
21
22
|
from typing import Annotated, Any
|
|
@@ -25,8 +26,19 @@ from rich.console import Console
|
|
|
25
26
|
from rich.table import Table
|
|
26
27
|
|
|
27
28
|
from grimoire.providers.audit import audit_providers
|
|
28
|
-
from grimoire.providers.registry import
|
|
29
|
+
from grimoire.providers.registry import (
|
|
30
|
+
SUPPORTED_CURRENCIES,
|
|
31
|
+
SUPPORTED_MODEL_TIERS,
|
|
32
|
+
ModelSpec,
|
|
33
|
+
ProviderRegistryError,
|
|
34
|
+
ProviderSpec,
|
|
35
|
+
add_provider,
|
|
36
|
+
read_registry,
|
|
37
|
+
remove_provider,
|
|
38
|
+
set_provider_enabled,
|
|
39
|
+
)
|
|
29
40
|
from grimoire.providers.routing import choose
|
|
41
|
+
from grimoire.providers.secrets import list_secrets, remove_secret, set_secret
|
|
30
42
|
from grimoire.providers.state import ProviderRuntimeState, clear_unknown_suspensions, load_state, record_failure
|
|
31
43
|
|
|
32
44
|
providers_app = typer.Typer(
|
|
@@ -392,3 +404,139 @@ def providers_history(
|
|
|
392
404
|
console.print(table)
|
|
393
405
|
for history in histories:
|
|
394
406
|
console.print(f"[dim]{history.task_type}/{history.verifiability} : {history.reason}[/dim]")
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
def _parse_model_specs(raw: list[str]) -> tuple[ModelSpec, ...]:
|
|
410
|
+
"""``id:tier`` → :class:`ModelSpec` ; ``typer.Exit`` sur une entrée mal formée."""
|
|
411
|
+
specs: list[ModelSpec] = []
|
|
412
|
+
for item in raw:
|
|
413
|
+
model_id, _, tier = item.partition(":")
|
|
414
|
+
if not model_id or not tier:
|
|
415
|
+
console.print(f"[red]modèle invalide {item!r} — attendu id:tier (ex: deepseek-chat:cheap).[/red]")
|
|
416
|
+
raise typer.Exit(2)
|
|
417
|
+
if tier not in SUPPORTED_MODEL_TIERS:
|
|
418
|
+
console.print(f"[red]tier {tier!r} invalide — l'un de {SUPPORTED_MODEL_TIERS}.[/red]")
|
|
419
|
+
raise typer.Exit(2)
|
|
420
|
+
specs.append(ModelSpec(id=model_id, tier=tier))
|
|
421
|
+
return tuple(specs)
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
@providers_app.command("add")
|
|
425
|
+
def providers_add(
|
|
426
|
+
provider_id: Annotated[str, typer.Argument(help="Identifiant du fournisseur (ex: deepseek, mistral, kimi).")],
|
|
427
|
+
invocation: Annotated[str, typer.Option("--invocation", help="Commande gabarit avec {model} et {prompt}.")],
|
|
428
|
+
model: Annotated[
|
|
429
|
+
list[str], typer.Option("--model", help="Modèle déclaré, format id:tier (ex: deepseek-chat:cheap). Répétable.")
|
|
430
|
+
] = [], # noqa: B006 — Typer a besoin d'un défaut mutable littéral pour un Option répétable
|
|
431
|
+
currency: Annotated[str, typer.Option("--currency", help=f"L'une de {SUPPORTED_CURRENCIES}.")] = "api",
|
|
432
|
+
enabled: Annotated[bool, typer.Option("--enabled/--disabled", help="Activer tout de suite.")] = True,
|
|
433
|
+
project_root: Annotated[Path, _PROJECT_ROOT_OPTION] = Path(),
|
|
434
|
+
) -> None:
|
|
435
|
+
"""Déclarer un nouveau fournisseur LLM — jamais de clé ici (voir `set-key`)."""
|
|
436
|
+
root = project_root.resolve()
|
|
437
|
+
models = _parse_model_specs(model)
|
|
438
|
+
try:
|
|
439
|
+
add_provider(root, provider_id, invocation=invocation, models=models, currency=currency, enabled=enabled)
|
|
440
|
+
except ProviderRegistryError as exc:
|
|
441
|
+
console.print(f"[red]{exc}[/red]")
|
|
442
|
+
raise typer.Exit(1) from exc
|
|
443
|
+
console.print(f"[green]✓[/green] fournisseur {provider_id!r} ajouté ({'activé' if enabled else 'désactivé'}).")
|
|
444
|
+
if currency == "api":
|
|
445
|
+
console.print(f" Pose la clé : [bold]grimoire providers set-key {provider_id} <NOM_VARIABLE>[/bold]")
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
@providers_app.command("enable")
|
|
449
|
+
def providers_enable(
|
|
450
|
+
provider_id: Annotated[str, typer.Argument(help="Identifiant du fournisseur.")],
|
|
451
|
+
project_root: Annotated[Path, _PROJECT_ROOT_OPTION] = Path(),
|
|
452
|
+
) -> None:
|
|
453
|
+
"""Activer un fournisseur déjà déclaré."""
|
|
454
|
+
root = project_root.resolve()
|
|
455
|
+
try:
|
|
456
|
+
set_provider_enabled(root, provider_id, enabled=True)
|
|
457
|
+
except ProviderRegistryError as exc:
|
|
458
|
+
console.print(f"[red]{exc}[/red]")
|
|
459
|
+
raise typer.Exit(1) from exc
|
|
460
|
+
console.print(f"[green]✓[/green] {provider_id!r} activé.")
|
|
461
|
+
|
|
462
|
+
|
|
463
|
+
@providers_app.command("disable")
|
|
464
|
+
def providers_disable(
|
|
465
|
+
provider_id: Annotated[str, typer.Argument(help="Identifiant du fournisseur.")],
|
|
466
|
+
project_root: Annotated[Path, _PROJECT_ROOT_OPTION] = Path(),
|
|
467
|
+
) -> None:
|
|
468
|
+
"""Désactiver un fournisseur déjà déclaré."""
|
|
469
|
+
root = project_root.resolve()
|
|
470
|
+
try:
|
|
471
|
+
set_provider_enabled(root, provider_id, enabled=False)
|
|
472
|
+
except ProviderRegistryError as exc:
|
|
473
|
+
console.print(f"[red]{exc}[/red]")
|
|
474
|
+
raise typer.Exit(1) from exc
|
|
475
|
+
console.print(f"[yellow]●[/yellow] {provider_id!r} désactivé.")
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
@providers_app.command("remove")
|
|
479
|
+
def providers_remove(
|
|
480
|
+
provider_id: Annotated[str, typer.Argument(help="Identifiant du fournisseur.")],
|
|
481
|
+
project_root: Annotated[Path, _PROJECT_ROOT_OPTION] = Path(),
|
|
482
|
+
) -> None:
|
|
483
|
+
"""Retirer un fournisseur du registre (le magasin de clés n'est pas touché)."""
|
|
484
|
+
root = project_root.resolve()
|
|
485
|
+
try:
|
|
486
|
+
remove_provider(root, provider_id)
|
|
487
|
+
except ProviderRegistryError as exc:
|
|
488
|
+
console.print(f"[red]{exc}[/red]")
|
|
489
|
+
raise typer.Exit(1) from exc
|
|
490
|
+
console.print(f"[yellow]●[/yellow] {provider_id!r} retiré du registre.")
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
@providers_app.command("set-key")
|
|
494
|
+
def providers_set_key(
|
|
495
|
+
provider_id: Annotated[str, typer.Argument(help="Identifiant du fournisseur.")],
|
|
496
|
+
env_var: Annotated[str, typer.Argument(help="Nom de la variable d'environnement (ex: DEEPSEEK_API_KEY).")],
|
|
497
|
+
) -> None:
|
|
498
|
+
"""Poser une clé API en saisie masquée — jamais en argument, jamais dans le registre.
|
|
499
|
+
|
|
500
|
+
Écrit dans ``~/.env-store/`` (``grimoire.providers.secrets``), lu
|
|
501
|
+
automatiquement par `grimoire task dispatch` au moment d'invoquer ce
|
|
502
|
+
fournisseur.
|
|
503
|
+
"""
|
|
504
|
+
import getpass
|
|
505
|
+
|
|
506
|
+
value = getpass.getpass(f"Valeur pour {env_var} ({provider_id}) — saisie masquée : ")
|
|
507
|
+
try:
|
|
508
|
+
path = set_secret(provider_id, env_var, value)
|
|
509
|
+
except ValueError as exc:
|
|
510
|
+
console.print(f"[red]{exc}[/red]")
|
|
511
|
+
raise typer.Exit(1) from exc
|
|
512
|
+
console.print(f"[green]✓[/green] {env_var} enregistré pour {provider_id!r} ({path}, chmod 600).")
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
@providers_app.command("remove-key")
|
|
516
|
+
def providers_remove_key(
|
|
517
|
+
provider_id: Annotated[str, typer.Argument(help="Identifiant du fournisseur.")],
|
|
518
|
+
env_var: Annotated[
|
|
519
|
+
str | None, typer.Argument(help="Variable à retirer ; toutes les clés du fournisseur si omis.")
|
|
520
|
+
] = None,
|
|
521
|
+
) -> None:
|
|
522
|
+
"""Retirer une clé (ou toutes celles d'un fournisseur) du magasin de secrets."""
|
|
523
|
+
remove_secret(provider_id, env_var)
|
|
524
|
+
console.print(f"[yellow]●[/yellow] retiré : {provider_id!r}" + (f" / {env_var}" if env_var else " (toutes les clés)"))
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
@providers_app.command("secrets")
|
|
528
|
+
def providers_secrets_list(ctx: typer.Context, json_output: Annotated[bool, _JSON_OPTION] = False) -> None:
|
|
529
|
+
"""Lister les clés posées (fournisseur, variable, date) — jamais les valeurs."""
|
|
530
|
+
entries = list_secrets()
|
|
531
|
+
if json_output or _get_fmt(ctx) == "json":
|
|
532
|
+
typer.echo(json.dumps([asdict(entry) for entry in entries], indent=2, ensure_ascii=False))
|
|
533
|
+
return
|
|
534
|
+
if not entries:
|
|
535
|
+
console.print("[dim]Aucune clé posée (`grimoire providers set-key`).[/dim]")
|
|
536
|
+
return
|
|
537
|
+
table = Table(title="Clés posées")
|
|
538
|
+
for column in ("Fournisseur", "Variable", "Fichier", "Posée le"):
|
|
539
|
+
table.add_column(column)
|
|
540
|
+
for entry in entries:
|
|
541
|
+
table.add_row(entry.provider, entry.env_var, entry.file, entry.added_at)
|
|
542
|
+
console.print(table)
|
|
@@ -80,6 +80,7 @@ from grimoire.core.standard_generation import STANDARD_DIR
|
|
|
80
80
|
from grimoire.costs import POLICY_STOP, Cost, cap_reason, validate_policy
|
|
81
81
|
from grimoire.missions.diff_fingerprint import signal_if_stuck
|
|
82
82
|
from grimoire.missions.dispatch_history import recommend_start_tier
|
|
83
|
+
from grimoire.missions.dispatch_worktree import changed_since, worktree_fingerprint
|
|
83
84
|
from grimoire.missions.empty_green import classify_empty_green, invokes_test_runner
|
|
84
85
|
from grimoire.missions.route_dispatch import record_route
|
|
85
86
|
from grimoire.missions.schemas import TaskState
|
|
@@ -87,6 +88,7 @@ from grimoire.missions.verifiability import Verifiability, classify
|
|
|
87
88
|
from grimoire.providers.quota import QuotaSignal, classify_failure, observe_window
|
|
88
89
|
from grimoire.providers.registry import SUPPORTED_MODEL_TIERS, ProviderSpec
|
|
89
90
|
from grimoire.providers.routing import candidates as provider_candidates
|
|
91
|
+
from grimoire.providers.secrets import env_for_provider
|
|
90
92
|
from grimoire.providers.state import (
|
|
91
93
|
available_models,
|
|
92
94
|
load_state,
|
|
@@ -97,6 +99,8 @@ from grimoire.providers.state import (
|
|
|
97
99
|
)
|
|
98
100
|
|
|
99
101
|
if TYPE_CHECKING:
|
|
102
|
+
from collections.abc import Mapping
|
|
103
|
+
|
|
100
104
|
from grimoire.missions.schemas import LedgerEvent, MissionTask
|
|
101
105
|
from grimoire.missions.service import TaskService
|
|
102
106
|
|
|
@@ -494,24 +498,18 @@ def _matches_review_surface(path: str, surfaces: tuple[str, ...]) -> bool:
|
|
|
494
498
|
return any(fnmatch.fnmatchcase(path, pattern) for pattern in surfaces)
|
|
495
499
|
|
|
496
500
|
|
|
497
|
-
def _classify_review(
|
|
498
|
-
|
|
501
|
+
def _classify_review(
|
|
502
|
+
project_root: Path, before: Mapping[str, str] | None = None
|
|
503
|
+
) -> tuple[str, tuple[str, ...], str | None]:
|
|
504
|
+
"""Classe ce qui a changé depuis ``before`` — ``(review, review_files, review_note)`` (issue #327).
|
|
499
505
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
par défaut inventerait une garantie qu'on ne peut pas tenir, donc
|
|
504
|
-
``review_optional`` avec une note plutôt qu'un silence trompeur.
|
|
506
|
+
Un projet non versionné ne permet pas de calculer quoi que ce soit ; le
|
|
507
|
+
déclarer ``review_required`` par défaut inventerait une garantie qu'on ne
|
|
508
|
+
peut pas tenir, donc ``review_optional`` avec une note plutôt qu'un silence.
|
|
505
509
|
"""
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
)
|
|
510
|
-
except (OSError, subprocess.TimeoutExpired):
|
|
511
|
-
return "review_optional", (), "projet non versionné (git indisponible) : relisibilité non calculée"
|
|
512
|
-
if completed.returncode != 0:
|
|
513
|
-
return "review_optional", (), "projet non versionné (pas un dépôt git) : relisibilité non calculée"
|
|
514
|
-
files = tuple(line.strip() for line in completed.stdout.splitlines() if line.strip())
|
|
510
|
+
files = changed_since(project_root, before or {})
|
|
511
|
+
if files is None:
|
|
512
|
+
return "review_optional", (), "projet non versionné (git illisible) : relisibilité non calculée"
|
|
515
513
|
surfaces = _review_surfaces(project_root)
|
|
516
514
|
if _use_rust_backend():
|
|
517
515
|
assert _rust_core is not None # guarded by _use_rust_backend
|
|
@@ -850,9 +848,14 @@ def _run_provider_call(
|
|
|
850
848
|
"""
|
|
851
849
|
argv = render_invocation(provider.invocation or "", prompt=prompt, model=model)
|
|
852
850
|
started = time.monotonic()
|
|
851
|
+
# Issue #310 suite : la clé d'un fournisseur `currency: api` vient du magasin de
|
|
852
|
+
# secrets (grimoire.providers.secrets, `~/.env-store/`), jamais du registre ni d'un
|
|
853
|
+
# argument — fusionnée ici pour que le script d'invocation n'ait rien à en savoir.
|
|
854
|
+
env = {**os.environ, **env_for_provider(provider.id)}
|
|
853
855
|
try:
|
|
854
856
|
completed = subprocess.run(
|
|
855
|
-
argv, cwd=project_root, capture_output=True, text=True, encoding="utf-8", errors="replace",
|
|
857
|
+
argv, cwd=project_root, capture_output=True, text=True, encoding="utf-8", errors="replace",
|
|
858
|
+
timeout=call_timeout, shell=False, env=env,
|
|
856
859
|
)
|
|
857
860
|
except subprocess.TimeoutExpired:
|
|
858
861
|
return None, "", "", time.monotonic() - started, "timeout", None
|
|
@@ -1271,6 +1274,7 @@ def run_dispatch(
|
|
|
1271
1274
|
)
|
|
1272
1275
|
return service.ledger.append_event("task.dispatched", task_id, "task", actor, payload)
|
|
1273
1276
|
|
|
1277
|
+
tree_before = worktree_fingerprint(root)
|
|
1274
1278
|
attempt_no = 0
|
|
1275
1279
|
previous_red_diff: str | None = None
|
|
1276
1280
|
capped_before_next_tier = False
|
|
@@ -1335,7 +1339,7 @@ def run_dispatch(
|
|
|
1335
1339
|
green = verdict == "green"
|
|
1336
1340
|
# La relecture ne se pose qu'une fois le résultat accepté (#327) —
|
|
1337
1341
|
# un check rouge n'a rien produit qu'on ait besoin de relire.
|
|
1338
|
-
review, review_files, review_note = _classify_review(root) if green else (None, (), None)
|
|
1342
|
+
review, review_files, review_note = _classify_review(root, tree_before) if green else (None, (), None)
|
|
1339
1343
|
# L'incertitude déclarée, elle, vaut pour tout appel qui a répondu,
|
|
1340
1344
|
# vert ou rouge (#328) : l'ouvrier peut avoir douté d'un travail
|
|
1341
1345
|
# que le check juge encore insuffisant.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Ce qu'un dispatch a réellement changé dans l'arbre de travail.
|
|
2
|
+
|
|
3
|
+
``git diff`` seul juge l'arbre entier : il impute à l'ouvrier tout ce qui était
|
|
4
|
+
déjà modifié avant lui et ne voit pas les fichiers qu'il crée. On photographie
|
|
5
|
+
donc l'état des fichiers modifiés ou nouveaux avant la cascade, et on compare.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import subprocess
|
|
11
|
+
from collections.abc import Mapping
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
_GIT_TIMEOUT_S = 60.0
|
|
15
|
+
_LISTINGS = (
|
|
16
|
+
("diff", "--name-only", "--relative", "-z"),
|
|
17
|
+
("diff", "--cached", "--name-only", "--relative", "-z"),
|
|
18
|
+
("ls-files", "--others", "--exclude-standard", "-z"),
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def _state(path: Path) -> str:
|
|
23
|
+
"""Taille et date plutôt qu'un hash : l'arbre peut porter de très gros fichiers non suivis."""
|
|
24
|
+
try:
|
|
25
|
+
stat = path.lstat()
|
|
26
|
+
except OSError:
|
|
27
|
+
return "absent"
|
|
28
|
+
return f"{stat.st_size}:{stat.st_mtime_ns}"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def worktree_fingerprint(root: Path) -> dict[str, str] | None:
|
|
32
|
+
"""État des fichiers modifiés ou nouveaux, ``None`` hors d'un dépôt git lisible."""
|
|
33
|
+
paths: set[str] = set()
|
|
34
|
+
for listing in _LISTINGS:
|
|
35
|
+
try:
|
|
36
|
+
completed = subprocess.run(
|
|
37
|
+
["git", *listing],
|
|
38
|
+
cwd=root,
|
|
39
|
+
capture_output=True,
|
|
40
|
+
text=True,
|
|
41
|
+
encoding="utf-8",
|
|
42
|
+
errors="surrogateescape",
|
|
43
|
+
timeout=_GIT_TIMEOUT_S,
|
|
44
|
+
)
|
|
45
|
+
except (OSError, subprocess.TimeoutExpired):
|
|
46
|
+
return None
|
|
47
|
+
if completed.returncode != 0:
|
|
48
|
+
return None
|
|
49
|
+
paths.update(name for name in completed.stdout.split("\0") if name)
|
|
50
|
+
return {name: _state(root / name) for name in paths}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def changed_since(root: Path, before: Mapping[str, str]) -> tuple[str, ...] | None:
|
|
54
|
+
"""Chemins dont l'état diffère de ``before``, retours à l'état propre compris."""
|
|
55
|
+
after = worktree_fingerprint(root)
|
|
56
|
+
if after is None:
|
|
57
|
+
return None
|
|
58
|
+
return tuple(sorted(name for name in before.keys() | after.keys() if before.get(name) != after.get(name)))
|
|
@@ -158,6 +158,137 @@ def read_registry(root: Path) -> tuple[ProviderSpec, ...]:
|
|
|
158
158
|
return tuple(spec for spec in specs if spec is not None)
|
|
159
159
|
|
|
160
160
|
|
|
161
|
+
class ProviderWriteError(ProviderRegistryError):
|
|
162
|
+
"""Une écriture sur le registre a été refusée (id dupliqué, vocabulaire invalide...)."""
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
def _yaml_roundtrip() -> YAML:
|
|
166
|
+
"""Round-trip (``typ="rt"``) : préserve commentaires et mise en forme du fichier existant.
|
|
167
|
+
|
|
168
|
+
Distinct de :func:`_yaml` (``typ="safe"``) — un lecteur n'a pas besoin de
|
|
169
|
+
préserver la forme, une écriture ne doit jamais effacer les commentaires
|
|
170
|
+
qui documentent le reste du registre.
|
|
171
|
+
"""
|
|
172
|
+
yaml = YAML(typ="rt")
|
|
173
|
+
yaml.preserve_quotes = True
|
|
174
|
+
return yaml
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def _load_registry_for_write(root: Path) -> Any:
|
|
178
|
+
"""Document round-trip ; lève si le registre n'existe pas encore.
|
|
179
|
+
|
|
180
|
+
Contrairement à :func:`_load_registry_mapping` (lecture, ``{}`` toléré),
|
|
181
|
+
une écriture sur un registre absent n'a pas de sens : il n'y a pas de
|
|
182
|
+
``routing``/``metadata`` à préserver, et en créer un à la volée devinerait
|
|
183
|
+
une politique que seul ``grimoire standard init`` doit poser.
|
|
184
|
+
"""
|
|
185
|
+
path = root / REGISTRY_FILE
|
|
186
|
+
if not path.is_file():
|
|
187
|
+
msg = f"{REGISTRY_FILE} absent — lancer `grimoire standard init` avant d'ajouter un fournisseur."
|
|
188
|
+
raise ProviderRegistryError(msg)
|
|
189
|
+
try:
|
|
190
|
+
data = _yaml_roundtrip().load(path.read_text(encoding="utf-8"))
|
|
191
|
+
except (YAMLError, OSError, UnicodeDecodeError) as exc:
|
|
192
|
+
msg = f"{REGISTRY_FILE} illisible : {type(exc).__name__}: {exc}"
|
|
193
|
+
raise ProviderRegistryError(msg) from exc
|
|
194
|
+
if not isinstance(data, dict):
|
|
195
|
+
msg = f"{REGISTRY_FILE} doit être une table YAML."
|
|
196
|
+
raise ProviderRegistryError(msg)
|
|
197
|
+
return data
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
def _save_registry(root: Path, data: Any) -> None:
|
|
201
|
+
path = root / REGISTRY_FILE
|
|
202
|
+
with path.open("w", encoding="utf-8") as handle:
|
|
203
|
+
_yaml_roundtrip().dump(data, handle)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
def add_provider(
|
|
207
|
+
root: Path,
|
|
208
|
+
provider_id: str,
|
|
209
|
+
*,
|
|
210
|
+
invocation: str,
|
|
211
|
+
models: tuple[ModelSpec, ...] = (),
|
|
212
|
+
currency: str = "api",
|
|
213
|
+
provider_type: str = "hosted",
|
|
214
|
+
allowed_capabilities: tuple[str, ...] = ("chat", "code"),
|
|
215
|
+
enabled: bool = True,
|
|
216
|
+
) -> None:
|
|
217
|
+
"""Déclare un nouveau fournisseur — jamais de clé ici, voir ``grimoire.providers.secrets``.
|
|
218
|
+
|
|
219
|
+
Refuse un ``id`` déjà présent (utiliser :func:`set_provider_enabled` pour
|
|
220
|
+
une bascule), un ``currency``/``tier`` hors vocabulaire, ou une
|
|
221
|
+
``invocation`` sans ``{prompt}`` — les mêmes règles que
|
|
222
|
+
``standard_checks.verifiers._verify_provider_currency_and_tiers``,
|
|
223
|
+
vérifiées ici pour ne jamais écrire une entrée qu'un
|
|
224
|
+
``grimoire standard verify`` rejetterait ensuite.
|
|
225
|
+
"""
|
|
226
|
+
if currency not in SUPPORTED_CURRENCIES:
|
|
227
|
+
msg = f"currency {currency!r} doit être l'une de {SUPPORTED_CURRENCIES}."
|
|
228
|
+
raise ProviderWriteError(msg)
|
|
229
|
+
for model in models:
|
|
230
|
+
if model.tier not in SUPPORTED_MODEL_TIERS:
|
|
231
|
+
msg = f"tier {model.tier!r} (modèle {model.id!r}) doit être l'un de {SUPPORTED_MODEL_TIERS}."
|
|
232
|
+
raise ProviderWriteError(msg)
|
|
233
|
+
if "{prompt}" not in invocation:
|
|
234
|
+
msg = f"invocation {invocation!r} sans placeholder {{prompt}} : le prompt n'atteindrait jamais la commande."
|
|
235
|
+
raise ProviderWriteError(msg)
|
|
236
|
+
|
|
237
|
+
data = _load_registry_for_write(root)
|
|
238
|
+
providers = data.setdefault("providers", [])
|
|
239
|
+
if any(isinstance(entry, dict) and entry.get("id") == provider_id for entry in providers):
|
|
240
|
+
msg = f"fournisseur {provider_id!r} déjà déclaré — utiliser `grimoire providers enable/disable`."
|
|
241
|
+
raise ProviderWriteError(msg)
|
|
242
|
+
|
|
243
|
+
providers.append(
|
|
244
|
+
{
|
|
245
|
+
"id": provider_id,
|
|
246
|
+
"enabled": enabled,
|
|
247
|
+
"provider_type": provider_type,
|
|
248
|
+
"allowed_capabilities": list(allowed_capabilities),
|
|
249
|
+
"default_models": [model.id for model in models],
|
|
250
|
+
"currency": currency,
|
|
251
|
+
"invocation": invocation,
|
|
252
|
+
"models": [{"id": model.id, "tier": model.tier} for model in models],
|
|
253
|
+
"data_policy": {
|
|
254
|
+
"allowed_data_classes": ["public-docs", "project-source", "generated-artifacts", "non-secret-metadata"],
|
|
255
|
+
"forbidden_data_classes": ["secrets", "credentials", "personal-data", "regulated-data"],
|
|
256
|
+
"retention_notes": (
|
|
257
|
+
"Ajouté via `grimoire providers add` — clé lue depuis le magasin de secrets "
|
|
258
|
+
"(grimoire.providers.secrets), jamais dans ce registre."
|
|
259
|
+
),
|
|
260
|
+
},
|
|
261
|
+
"fallback_order": [],
|
|
262
|
+
"audit": {"log_prompts": False, "log_metadata": True},
|
|
263
|
+
}
|
|
264
|
+
)
|
|
265
|
+
_save_registry(root, data)
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def set_provider_enabled(root: Path, provider_id: str, enabled: bool) -> None:
|
|
269
|
+
"""Bascule ``enabled`` pour *provider_id* ; lève si l'id n'est pas déclaré."""
|
|
270
|
+
data = _load_registry_for_write(root)
|
|
271
|
+
for entry in data.get("providers") or []:
|
|
272
|
+
if isinstance(entry, dict) and entry.get("id") == provider_id:
|
|
273
|
+
entry["enabled"] = enabled
|
|
274
|
+
_save_registry(root, data)
|
|
275
|
+
return
|
|
276
|
+
msg = f"fournisseur {provider_id!r} introuvable dans le registre."
|
|
277
|
+
raise ProviderWriteError(msg)
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
def remove_provider(root: Path, provider_id: str) -> None:
|
|
281
|
+
"""Retire *provider_id* du registre — le magasin de secrets n'est pas touché."""
|
|
282
|
+
data = _load_registry_for_write(root)
|
|
283
|
+
providers = data.get("providers") or []
|
|
284
|
+
kept = [entry for entry in providers if not (isinstance(entry, dict) and entry.get("id") == provider_id)]
|
|
285
|
+
if len(kept) == len(providers):
|
|
286
|
+
msg = f"fournisseur {provider_id!r} introuvable dans le registre."
|
|
287
|
+
raise ProviderWriteError(msg)
|
|
288
|
+
data["providers"] = kept
|
|
289
|
+
_save_registry(root, data)
|
|
290
|
+
|
|
291
|
+
|
|
161
292
|
def read_default_fallback_chain(root: Path) -> tuple[str, ...]:
|
|
162
293
|
"""``routing.default_fallback_chain`` — le filet posé au niveau registre.
|
|
163
294
|
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"""Magasin léger de jetons API : ``~/.env-store/`` + un index (issue #310, suite).
|
|
2
|
+
|
|
3
|
+
Les clés ne vivent jamais dans ``llm-provider-registry.yaml`` lui-même — sa
|
|
4
|
+
``data_policy.forbidden_data_classes`` interdit déjà ``secrets``/``credentials``
|
|
5
|
+
dans ce qui *transite par* un fournisseur ; ce module applique la même règle
|
|
6
|
+
à ce qui *décrit* un fournisseur. Une valeur se pose en saisie masquée
|
|
7
|
+
(``grimoire providers set-key``, ``getpass``), jamais en argument de ligne de
|
|
8
|
+
commande ni en log — c'est le seul chemin d'écriture exposé par la CLI.
|
|
9
|
+
|
|
10
|
+
Format du magasin :
|
|
11
|
+
``~/.env-store/index.json`` — ``{"entries": [{"provider", "env_var", "file", "added_at"}]}``
|
|
12
|
+
``~/.env-store/<provider>.env`` — lignes ``VAR=valeur``, une par variable, ``chmod 600``
|
|
13
|
+
|
|
14
|
+
``env_for_provider`` est lu par ``missions.dispatch._run_provider_call`` pour
|
|
15
|
+
fusionner ces variables dans l'environnement du sous-processus avant
|
|
16
|
+
d'invoquer le fournisseur — un script d'invocation (``deepseek-cli.py`` et
|
|
17
|
+
analogues) n'a besoin de rien connaître du magasin, il reçoit déjà la
|
|
18
|
+
variable dans son ``os.environ``.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
from __future__ import annotations
|
|
22
|
+
|
|
23
|
+
import json
|
|
24
|
+
from dataclasses import dataclass
|
|
25
|
+
from datetime import UTC, datetime
|
|
26
|
+
from pathlib import Path
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def store_dir() -> Path:
|
|
30
|
+
"""``~/.env-store`` — jamais dans le dépôt du projet, jamais versionné."""
|
|
31
|
+
return Path.home() / ".env-store"
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _index_file() -> Path:
|
|
35
|
+
return store_dir() / "index.json"
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _provider_file(provider_id: str) -> Path:
|
|
39
|
+
return store_dir() / f"{provider_id}.env"
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@dataclass(frozen=True, slots=True)
|
|
43
|
+
class SecretEntry:
|
|
44
|
+
"""Une ligne de l'index — jamais la valeur, seulement sa provenance."""
|
|
45
|
+
|
|
46
|
+
provider: str
|
|
47
|
+
env_var: str
|
|
48
|
+
file: str
|
|
49
|
+
added_at: str
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
def _ensure_store() -> None:
|
|
53
|
+
store_dir().mkdir(parents=True, exist_ok=True)
|
|
54
|
+
store_dir().chmod(0o700)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def _read_env_file(path: Path) -> dict[str, str]:
|
|
58
|
+
if not path.is_file():
|
|
59
|
+
return {}
|
|
60
|
+
values: dict[str, str] = {}
|
|
61
|
+
for line in path.read_text(encoding="utf-8").splitlines():
|
|
62
|
+
stripped = line.strip()
|
|
63
|
+
if not stripped or stripped.startswith("#") or "=" not in stripped:
|
|
64
|
+
continue
|
|
65
|
+
key, _, value = stripped.partition("=")
|
|
66
|
+
values[key.strip()] = value.strip()
|
|
67
|
+
return values
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
def _write_env_file(path: Path, values: dict[str, str]) -> None:
|
|
71
|
+
body = "\n".join(f"{k}={v}" for k, v in values.items())
|
|
72
|
+
path.write_text(f"{body}\n" if values else "", encoding="utf-8")
|
|
73
|
+
path.chmod(0o600)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def _load_index() -> dict[str, list[dict[str, str]]]:
|
|
77
|
+
path = _index_file()
|
|
78
|
+
if not path.is_file():
|
|
79
|
+
return {"entries": []}
|
|
80
|
+
try:
|
|
81
|
+
data = json.loads(path.read_text(encoding="utf-8"))
|
|
82
|
+
except (json.JSONDecodeError, OSError):
|
|
83
|
+
return {"entries": []}
|
|
84
|
+
return data if isinstance(data, dict) else {"entries": []}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _save_index(data: dict[str, list[dict[str, str]]]) -> None:
|
|
88
|
+
path = _index_file()
|
|
89
|
+
path.write_text(json.dumps(data, indent=2, ensure_ascii=False) + "\n", encoding="utf-8")
|
|
90
|
+
path.chmod(0o600)
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
def set_secret(provider_id: str, env_var: str, value: str) -> Path:
|
|
94
|
+
"""Pose *value* pour *env_var* du fournisseur *provider_id* ; rend le fichier écrit.
|
|
95
|
+
|
|
96
|
+
Lève ``ValueError`` sur une valeur vide — un magasin qui accepterait une
|
|
97
|
+
clé vide masquerait l'absence réelle de configuration.
|
|
98
|
+
"""
|
|
99
|
+
if not value.strip():
|
|
100
|
+
msg = "valeur vide refusée."
|
|
101
|
+
raise ValueError(msg)
|
|
102
|
+
_ensure_store()
|
|
103
|
+
path = _provider_file(provider_id)
|
|
104
|
+
values = _read_env_file(path)
|
|
105
|
+
values[env_var] = value.strip()
|
|
106
|
+
_write_env_file(path, values)
|
|
107
|
+
|
|
108
|
+
index = _load_index()
|
|
109
|
+
entries = [e for e in index["entries"] if not (e["provider"] == provider_id and e["env_var"] == env_var)]
|
|
110
|
+
entries.append(
|
|
111
|
+
{"provider": provider_id, "env_var": env_var, "file": path.name, "added_at": datetime.now(UTC).isoformat()}
|
|
112
|
+
)
|
|
113
|
+
index["entries"] = entries
|
|
114
|
+
_save_index(index)
|
|
115
|
+
return path
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def list_secrets() -> tuple[SecretEntry, ...]:
|
|
119
|
+
"""Entrées déclarées (fournisseur, variable, fichier, date) — jamais les valeurs."""
|
|
120
|
+
index = _load_index()
|
|
121
|
+
return tuple(
|
|
122
|
+
SecretEntry(provider=e["provider"], env_var=e["env_var"], file=e["file"], added_at=e.get("added_at", ""))
|
|
123
|
+
for e in index.get("entries", [])
|
|
124
|
+
if isinstance(e, dict) and e.get("provider") and e.get("env_var")
|
|
125
|
+
)
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def remove_secret(provider_id: str, env_var: str | None = None) -> None:
|
|
129
|
+
"""Retire une variable, ou tout le fichier de *provider_id* si *env_var* est ``None``."""
|
|
130
|
+
path = _provider_file(provider_id)
|
|
131
|
+
values = _read_env_file(path)
|
|
132
|
+
if env_var is None:
|
|
133
|
+
path.unlink(missing_ok=True)
|
|
134
|
+
elif env_var in values:
|
|
135
|
+
del values[env_var]
|
|
136
|
+
_write_env_file(path, values)
|
|
137
|
+
index = _load_index()
|
|
138
|
+
index["entries"] = [
|
|
139
|
+
e
|
|
140
|
+
for e in index["entries"]
|
|
141
|
+
if not (e["provider"] == provider_id and (env_var is None or e["env_var"] == env_var))
|
|
142
|
+
]
|
|
143
|
+
_save_index(index)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def env_for_provider(provider_id: str) -> dict[str, str]:
|
|
147
|
+
"""Variables déjà posées pour *provider_id* — ``{}`` si rien n'est enregistré."""
|
|
148
|
+
return _read_env_file(_provider_file(provider_id))
|