@cratylus/canon 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +76 -0
- package/dist/agents/arch-doc-writer.d.ts +2 -0
- package/dist/agents/arch-doc-writer.js +54 -0
- package/dist/agents/arch-doc-writer.js.map +1 -0
- package/dist/agents/boz.d.ts +2 -0
- package/dist/agents/boz.js +59 -0
- package/dist/agents/boz.js.map +1 -0
- package/dist/agents/developer.d.ts +2 -0
- package/dist/agents/developer.js +53 -0
- package/dist/agents/developer.js.map +1 -0
- package/dist/agents/investigator.d.ts +2 -0
- package/dist/agents/investigator.js +59 -0
- package/dist/agents/investigator.js.map +1 -0
- package/dist/agents/mav.d.ts +2 -0
- package/dist/agents/mav.js +83 -0
- package/dist/agents/mav.js.map +1 -0
- package/dist/agents/nico.d.ts +2 -0
- package/dist/agents/nico.js +92 -0
- package/dist/agents/nico.js.map +1 -0
- package/dist/agents/planner.d.ts +2 -0
- package/dist/agents/planner.js +52 -0
- package/dist/agents/planner.js.map +1 -0
- package/dist/agents/principal-engineer-reviewer.d.ts +2 -0
- package/dist/agents/principal-engineer-reviewer.js +56 -0
- package/dist/agents/principal-engineer-reviewer.js.map +1 -0
- package/dist/agents/principal-ic.d.ts +2 -0
- package/dist/agents/principal-ic.js +72 -0
- package/dist/agents/principal-ic.js.map +1 -0
- package/dist/agents/tester.d.ts +2 -0
- package/dist/agents/tester.js +55 -0
- package/dist/agents/tester.js.map +1 -0
- package/dist/dimensions/actions/code-execution.d.ts +2 -0
- package/dist/dimensions/actions/code-execution.js +2 -0
- package/dist/dimensions/actions/code-execution.js.map +1 -0
- package/dist/dimensions/actions/communication.d.ts +2 -0
- package/dist/dimensions/actions/communication.js +2 -0
- package/dist/dimensions/actions/communication.js.map +1 -0
- package/dist/dimensions/actions/computer-use.d.ts +2 -0
- package/dist/dimensions/actions/computer-use.js +2 -0
- package/dist/dimensions/actions/computer-use.js.map +1 -0
- package/dist/dimensions/actions/delegation.d.ts +2 -0
- package/dist/dimensions/actions/delegation.js +2 -0
- package/dist/dimensions/actions/delegation.js.map +1 -0
- package/dist/dimensions/actions/file-ops.d.ts +2 -0
- package/dist/dimensions/actions/file-ops.js +2 -0
- package/dist/dimensions/actions/file-ops.js.map +1 -0
- package/dist/dimensions/actions/physical-actuation.d.ts +2 -0
- package/dist/dimensions/actions/physical-actuation.js +2 -0
- package/dist/dimensions/actions/physical-actuation.js.map +1 -0
- package/dist/dimensions/actions/retrieval.d.ts +2 -0
- package/dist/dimensions/actions/retrieval.js +2 -0
- package/dist/dimensions/actions/retrieval.js.map +1 -0
- package/dist/dimensions/actions/tool-call.d.ts +2 -0
- package/dist/dimensions/actions/tool-call.js +2 -0
- package/dist/dimensions/actions/tool-call.js.map +1 -0
- package/dist/dimensions/audience-adaptation/convergence.d.ts +2 -0
- package/dist/dimensions/audience-adaptation/convergence.js +2 -0
- package/dist/dimensions/audience-adaptation/convergence.js.map +1 -0
- package/dist/dimensions/audience-adaptation/divergence.d.ts +2 -0
- package/dist/dimensions/audience-adaptation/divergence.js +2 -0
- package/dist/dimensions/audience-adaptation/divergence.js.map +1 -0
- package/dist/dimensions/audience-adaptation/maintenance.d.ts +2 -0
- package/dist/dimensions/audience-adaptation/maintenance.js +2 -0
- package/dist/dimensions/audience-adaptation/maintenance.js.map +1 -0
- package/dist/dimensions/autonomy/check-in.d.ts +2 -0
- package/dist/dimensions/autonomy/check-in.js +2 -0
- package/dist/dimensions/autonomy/check-in.js.map +1 -0
- package/dist/dimensions/autonomy/decision-authority.d.ts +2 -0
- package/dist/dimensions/autonomy/decision-authority.js +17 -0
- package/dist/dimensions/autonomy/decision-authority.js.map +1 -0
- package/dist/dimensions/autonomy/human-in-the-loop.d.ts +2 -0
- package/dist/dimensions/autonomy/human-in-the-loop.js +2 -0
- package/dist/dimensions/autonomy/human-in-the-loop.js.map +1 -0
- package/dist/dimensions/autonomy/human-on-the-loop.d.ts +2 -0
- package/dist/dimensions/autonomy/human-on-the-loop.js +10 -0
- package/dist/dimensions/autonomy/human-on-the-loop.js.map +1 -0
- package/dist/dimensions/autonomy/human-out-of-the-loop.d.ts +2 -0
- package/dist/dimensions/autonomy/human-out-of-the-loop.js +2 -0
- package/dist/dimensions/autonomy/human-out-of-the-loop.js.map +1 -0
- package/dist/dimensions/autonomy/mission-command.d.ts +2 -0
- package/dist/dimensions/autonomy/mission-command.js +2 -0
- package/dist/dimensions/autonomy/mission-command.js.map +1 -0
- package/dist/dimensions/capabilities/analysis-diagnosis.d.ts +2 -0
- package/dist/dimensions/capabilities/analysis-diagnosis.js +2 -0
- package/dist/dimensions/capabilities/analysis-diagnosis.js.map +1 -0
- package/dist/dimensions/capabilities/data-analytics.d.ts +2 -0
- package/dist/dimensions/capabilities/data-analytics.js +2 -0
- package/dist/dimensions/capabilities/data-analytics.js.map +1 -0
- package/dist/dimensions/capabilities/operations-delivery.d.ts +2 -0
- package/dist/dimensions/capabilities/operations-delivery.js +2 -0
- package/dist/dimensions/capabilities/operations-delivery.js.map +1 -0
- package/dist/dimensions/capabilities/planning-decomposition.d.ts +2 -0
- package/dist/dimensions/capabilities/planning-decomposition.js +2 -0
- package/dist/dimensions/capabilities/planning-decomposition.js.map +1 -0
- package/dist/dimensions/capabilities/research-investigation.d.ts +2 -0
- package/dist/dimensions/capabilities/research-investigation.js +2 -0
- package/dist/dimensions/capabilities/research-investigation.js.map +1 -0
- package/dist/dimensions/capabilities/review-critique.d.ts +2 -0
- package/dist/dimensions/capabilities/review-critique.js +2 -0
- package/dist/dimensions/capabilities/review-critique.js.map +1 -0
- package/dist/dimensions/capabilities/software-engineering.d.ts +2 -0
- package/dist/dimensions/capabilities/software-engineering.js +2 -0
- package/dist/dimensions/capabilities/software-engineering.js.map +1 -0
- package/dist/dimensions/capabilities/system-design.d.ts +2 -0
- package/dist/dimensions/capabilities/system-design.js +2 -0
- package/dist/dimensions/capabilities/system-design.js.map +1 -0
- package/dist/dimensions/capabilities/technical-writing.d.ts +2 -0
- package/dist/dimensions/capabilities/technical-writing.js +2 -0
- package/dist/dimensions/capabilities/technical-writing.js.map +1 -0
- package/dist/dimensions/capabilities/verification-testing.d.ts +2 -0
- package/dist/dimensions/capabilities/verification-testing.js +2 -0
- package/dist/dimensions/capabilities/verification-testing.js.map +1 -0
- package/dist/dimensions/engineering-principles/cold-decode-oracle.d.ts +2 -0
- package/dist/dimensions/engineering-principles/cold-decode-oracle.js +2 -0
- package/dist/dimensions/engineering-principles/cold-decode-oracle.js.map +1 -0
- package/dist/dimensions/engineering-principles/cratylism.d.ts +2 -0
- package/dist/dimensions/engineering-principles/cratylism.js +2 -0
- package/dist/dimensions/engineering-principles/cratylism.js.map +1 -0
- package/dist/dimensions/engineering-principles/dry.d.ts +2 -0
- package/dist/dimensions/engineering-principles/dry.js +2 -0
- package/dist/dimensions/engineering-principles/dry.js.map +1 -0
- package/dist/dimensions/engineering-principles/first-principles.d.ts +2 -0
- package/dist/dimensions/engineering-principles/first-principles.js +2 -0
- package/dist/dimensions/engineering-principles/first-principles.js.map +1 -0
- package/dist/dimensions/engineering-principles/green-field.d.ts +2 -0
- package/dist/dimensions/engineering-principles/green-field.js +2 -0
- package/dist/dimensions/engineering-principles/green-field.js.map +1 -0
- package/dist/dimensions/engineering-principles/invoke-the-canonical.d.ts +2 -0
- package/dist/dimensions/engineering-principles/invoke-the-canonical.js +2 -0
- package/dist/dimensions/engineering-principles/invoke-the-canonical.js.map +1 -0
- package/dist/dimensions/engineering-principles/llm-native.d.ts +2 -0
- package/dist/dimensions/engineering-principles/llm-native.js +2 -0
- package/dist/dimensions/engineering-principles/llm-native.js.map +1 -0
- package/dist/dimensions/engineering-principles/mece.d.ts +2 -0
- package/dist/dimensions/engineering-principles/mece.js +2 -0
- package/dist/dimensions/engineering-principles/mece.js.map +1 -0
- package/dist/dimensions/engineering-principles/separation-of-concerns.d.ts +2 -0
- package/dist/dimensions/engineering-principles/separation-of-concerns.js +2 -0
- package/dist/dimensions/engineering-principles/separation-of-concerns.js.map +1 -0
- package/dist/dimensions/engineering-principles/simplicity.d.ts +2 -0
- package/dist/dimensions/engineering-principles/simplicity.js +2 -0
- package/dist/dimensions/engineering-principles/simplicity.js.map +1 -0
- package/dist/dimensions/engineering-principles/trust-but-verify.d.ts +2 -0
- package/dist/dimensions/engineering-principles/trust-but-verify.js +2 -0
- package/dist/dimensions/engineering-principles/trust-but-verify.js.map +1 -0
- package/dist/dimensions/engineering-principles/zero-trust.d.ts +2 -0
- package/dist/dimensions/engineering-principles/zero-trust.js +2 -0
- package/dist/dimensions/engineering-principles/zero-trust.js.map +1 -0
- package/dist/dimensions/formality/casual.d.ts +2 -0
- package/dist/dimensions/formality/casual.js +2 -0
- package/dist/dimensions/formality/casual.js.map +1 -0
- package/dist/dimensions/formality/expansive.d.ts +2 -0
- package/dist/dimensions/formality/expansive.js +2 -0
- package/dist/dimensions/formality/expansive.js.map +1 -0
- package/dist/dimensions/formality/formal.d.ts +2 -0
- package/dist/dimensions/formality/formal.js +2 -0
- package/dist/dimensions/formality/formal.js.map +1 -0
- package/dist/dimensions/formality/neutral.d.ts +2 -0
- package/dist/dimensions/formality/neutral.js +2 -0
- package/dist/dimensions/formality/neutral.js.map +1 -0
- package/dist/dimensions/framing/adversarial.d.ts +2 -0
- package/dist/dimensions/framing/adversarial.js +2 -0
- package/dist/dimensions/framing/adversarial.js.map +1 -0
- package/dist/dimensions/framing/analytical.d.ts +2 -0
- package/dist/dimensions/framing/analytical.js +2 -0
- package/dist/dimensions/framing/analytical.js.map +1 -0
- package/dist/dimensions/framing/correctness-oriented.d.ts +2 -0
- package/dist/dimensions/framing/correctness-oriented.js +2 -0
- package/dist/dimensions/framing/correctness-oriented.js.map +1 -0
- package/dist/dimensions/framing/decompositional.d.ts +2 -0
- package/dist/dimensions/framing/decompositional.js +2 -0
- package/dist/dimensions/framing/decompositional.js.map +1 -0
- package/dist/dimensions/framing/diagnostic.d.ts +2 -0
- package/dist/dimensions/framing/diagnostic.js +2 -0
- package/dist/dimensions/framing/diagnostic.js.map +1 -0
- package/dist/dimensions/framing/exploratory.d.ts +2 -0
- package/dist/dimensions/framing/exploratory.js +2 -0
- package/dist/dimensions/framing/exploratory.js.map +1 -0
- package/dist/dimensions/framing/first-principles.d.ts +2 -0
- package/dist/dimensions/framing/first-principles.js +2 -0
- package/dist/dimensions/framing/first-principles.js.map +1 -0
- package/dist/dimensions/framing/goal-directed.d.ts +2 -0
- package/dist/dimensions/framing/goal-directed.js +2 -0
- package/dist/dimensions/framing/goal-directed.js.map +1 -0
- package/dist/dimensions/framing/risk-oriented.d.ts +2 -0
- package/dist/dimensions/framing/risk-oriented.js +2 -0
- package/dist/dimensions/framing/risk-oriented.js.map +1 -0
- package/dist/dimensions/framing/systems-thinking.d.ts +2 -0
- package/dist/dimensions/framing/systems-thinking.js +2 -0
- package/dist/dimensions/framing/systems-thinking.js.map +1 -0
- package/dist/dimensions/framing/user-centered.d.ts +2 -0
- package/dist/dimensions/framing/user-centered.js +2 -0
- package/dist/dimensions/framing/user-centered.js.map +1 -0
- package/dist/dimensions/guardrails/accountability.d.ts +2 -0
- package/dist/dimensions/guardrails/accountability.js +2 -0
- package/dist/dimensions/guardrails/accountability.js.map +1 -0
- package/dist/dimensions/guardrails/harm-avoidance.d.ts +2 -0
- package/dist/dimensions/guardrails/harm-avoidance.js +2 -0
- package/dist/dimensions/guardrails/harm-avoidance.js.map +1 -0
- package/dist/dimensions/guardrails/helpfulness.d.ts +2 -0
- package/dist/dimensions/guardrails/helpfulness.js +2 -0
- package/dist/dimensions/guardrails/helpfulness.js.map +1 -0
- package/dist/dimensions/guardrails/honesty.d.ts +2 -0
- package/dist/dimensions/guardrails/honesty.js +2 -0
- package/dist/dimensions/guardrails/honesty.js.map +1 -0
- package/dist/dimensions/guardrails/human-oversight.d.ts +2 -0
- package/dist/dimensions/guardrails/human-oversight.js +2 -0
- package/dist/dimensions/guardrails/human-oversight.js.map +1 -0
- package/dist/dimensions/guardrails/input-untrusted.d.ts +2 -0
- package/dist/dimensions/guardrails/input-untrusted.js +2 -0
- package/dist/dimensions/guardrails/input-untrusted.js.map +1 -0
- package/dist/dimensions/guardrails/privacy.d.ts +2 -0
- package/dist/dimensions/guardrails/privacy.js +2 -0
- package/dist/dimensions/guardrails/privacy.js.map +1 -0
- package/dist/dimensions/guardrails/scope-of-authority.d.ts +2 -0
- package/dist/dimensions/guardrails/scope-of-authority.js +2 -0
- package/dist/dimensions/guardrails/scope-of-authority.js.map +1 -0
- package/dist/dimensions/heuristics/anchoring.d.ts +2 -0
- package/dist/dimensions/heuristics/anchoring.js +2 -0
- package/dist/dimensions/heuristics/anchoring.js.map +1 -0
- package/dist/dimensions/heuristics/availability.d.ts +2 -0
- package/dist/dimensions/heuristics/availability.js +2 -0
- package/dist/dimensions/heuristics/availability.js.map +1 -0
- package/dist/dimensions/heuristics/recognition.d.ts +2 -0
- package/dist/dimensions/heuristics/recognition.js +2 -0
- package/dist/dimensions/heuristics/recognition.js.map +1 -0
- package/dist/dimensions/heuristics/take-the-best.d.ts +2 -0
- package/dist/dimensions/heuristics/take-the-best.js +2 -0
- package/dist/dimensions/heuristics/take-the-best.js.map +1 -0
- package/dist/dimensions/learning/continual-online.d.ts +2 -0
- package/dist/dimensions/learning/continual-online.js +2 -0
- package/dist/dimensions/learning/continual-online.js.map +1 -0
- package/dist/dimensions/learning/correction-consolidation.d.ts +2 -0
- package/dist/dimensions/learning/correction-consolidation.js +2 -0
- package/dist/dimensions/learning/correction-consolidation.js.map +1 -0
- package/dist/dimensions/learning/curated-promotion.d.ts +2 -0
- package/dist/dimensions/learning/curated-promotion.js +2 -0
- package/dist/dimensions/learning/curated-promotion.js.map +1 -0
- package/dist/dimensions/learning/episodic-accretion.d.ts +2 -0
- package/dist/dimensions/learning/episodic-accretion.js +2 -0
- package/dist/dimensions/learning/episodic-accretion.js.map +1 -0
- package/dist/dimensions/learning/in-context-recall.d.ts +2 -0
- package/dist/dimensions/learning/in-context-recall.js +2 -0
- package/dist/dimensions/learning/in-context-recall.js.map +1 -0
- package/dist/dimensions/learning/reflective-revision.d.ts +2 -0
- package/dist/dimensions/learning/reflective-revision.js +2 -0
- package/dist/dimensions/learning/reflective-revision.js.map +1 -0
- package/dist/dimensions/learning/static-frozen.d.ts +2 -0
- package/dist/dimensions/learning/static-frozen.js +2 -0
- package/dist/dimensions/learning/static-frozen.js.map +1 -0
- package/dist/dimensions/memory/episodic.d.ts +2 -0
- package/dist/dimensions/memory/episodic.js +2 -0
- package/dist/dimensions/memory/episodic.js.map +1 -0
- package/dist/dimensions/memory/long-term-memory.d.ts +2 -0
- package/dist/dimensions/memory/long-term-memory.js +2 -0
- package/dist/dimensions/memory/long-term-memory.js.map +1 -0
- package/dist/dimensions/memory/procedural.d.ts +2 -0
- package/dist/dimensions/memory/procedural.js +2 -0
- package/dist/dimensions/memory/procedural.js.map +1 -0
- package/dist/dimensions/memory/semantic.d.ts +2 -0
- package/dist/dimensions/memory/semantic.js +2 -0
- package/dist/dimensions/memory/semantic.js.map +1 -0
- package/dist/dimensions/memory/working-memory.d.ts +2 -0
- package/dist/dimensions/memory/working-memory.js +2 -0
- package/dist/dimensions/memory/working-memory.js.map +1 -0
- package/dist/dimensions/modalities/audio.d.ts +2 -0
- package/dist/dimensions/modalities/audio.js +2 -0
- package/dist/dimensions/modalities/audio.js.map +1 -0
- package/dist/dimensions/modalities/image.d.ts +2 -0
- package/dist/dimensions/modalities/image.js +2 -0
- package/dist/dimensions/modalities/image.js.map +1 -0
- package/dist/dimensions/modalities/text.d.ts +2 -0
- package/dist/dimensions/modalities/text.js +2 -0
- package/dist/dimensions/modalities/text.js.map +1 -0
- package/dist/dimensions/modalities/video.d.ts +2 -0
- package/dist/dimensions/modalities/video.js +2 -0
- package/dist/dimensions/modalities/video.js.map +1 -0
- package/dist/dimensions/model/claude.d.ts +2 -0
- package/dist/dimensions/model/claude.js +2 -0
- package/dist/dimensions/model/claude.js.map +1 -0
- package/dist/dimensions/objective/correctness.d.ts +2 -0
- package/dist/dimensions/objective/correctness.js +2 -0
- package/dist/dimensions/objective/correctness.js.map +1 -0
- package/dist/dimensions/objective/delivery.d.ts +2 -0
- package/dist/dimensions/objective/delivery.js +2 -0
- package/dist/dimensions/objective/delivery.js.map +1 -0
- package/dist/dimensions/objective/faithful-record.d.ts +2 -0
- package/dist/dimensions/objective/faithful-record.js +2 -0
- package/dist/dimensions/objective/faithful-record.js.map +1 -0
- package/dist/dimensions/objective/insight.d.ts +2 -0
- package/dist/dimensions/objective/insight.js +2 -0
- package/dist/dimensions/objective/insight.js.map +1 -0
- package/dist/dimensions/objective/parsimony.d.ts +2 -0
- package/dist/dimensions/objective/parsimony.js +2 -0
- package/dist/dimensions/objective/parsimony.js.map +1 -0
- package/dist/dimensions/objective/safety.d.ts +2 -0
- package/dist/dimensions/objective/safety.js +2 -0
- package/dist/dimensions/objective/safety.js.map +1 -0
- package/dist/dimensions/objective/thoroughness.d.ts +2 -0
- package/dist/dimensions/objective/thoroughness.js +2 -0
- package/dist/dimensions/objective/thoroughness.js.map +1 -0
- package/dist/dimensions/objective/throughput.d.ts +2 -0
- package/dist/dimensions/objective/throughput.js +2 -0
- package/dist/dimensions/objective/throughput.js.map +1 -0
- package/dist/dimensions/objective/user-satisfaction.d.ts +2 -0
- package/dist/dimensions/objective/user-satisfaction.js +2 -0
- package/dist/dimensions/objective/user-satisfaction.js.map +1 -0
- package/dist/dimensions/output-format/action.d.ts +2 -0
- package/dist/dimensions/output-format/action.js +2 -0
- package/dist/dimensions/output-format/action.js.map +1 -0
- package/dist/dimensions/output-format/code.d.ts +2 -0
- package/dist/dimensions/output-format/code.js +2 -0
- package/dist/dimensions/output-format/code.js.map +1 -0
- package/dist/dimensions/output-format/document.d.ts +2 -0
- package/dist/dimensions/output-format/document.js +2 -0
- package/dist/dimensions/output-format/document.js.map +1 -0
- package/dist/dimensions/output-format/natural-language.d.ts +2 -0
- package/dist/dimensions/output-format/natural-language.js +2 -0
- package/dist/dimensions/output-format/natural-language.js.map +1 -0
- package/dist/dimensions/output-format/structured-data.d.ts +2 -0
- package/dist/dimensions/output-format/structured-data.js +2 -0
- package/dist/dimensions/output-format/structured-data.js.map +1 -0
- package/dist/dimensions/output-format/structured-decision.d.ts +2 -0
- package/dist/dimensions/output-format/structured-decision.js +2 -0
- package/dist/dimensions/output-format/structured-decision.js.map +1 -0
- package/dist/dimensions/output-format/visualization.d.ts +2 -0
- package/dist/dimensions/output-format/visualization.js +2 -0
- package/dist/dimensions/output-format/visualization.js.map +1 -0
- package/dist/dimensions/reasoning-strategy/chain-of-thought.d.ts +2 -0
- package/dist/dimensions/reasoning-strategy/chain-of-thought.js +2 -0
- package/dist/dimensions/reasoning-strategy/chain-of-thought.js.map +1 -0
- package/dist/dimensions/reasoning-strategy/plan-and-solve.d.ts +2 -0
- package/dist/dimensions/reasoning-strategy/plan-and-solve.js +2 -0
- package/dist/dimensions/reasoning-strategy/plan-and-solve.js.map +1 -0
- package/dist/dimensions/reasoning-strategy/react.d.ts +2 -0
- package/dist/dimensions/reasoning-strategy/react.js +2 -0
- package/dist/dimensions/reasoning-strategy/react.js.map +1 -0
- package/dist/dimensions/reasoning-strategy/reflexion.d.ts +2 -0
- package/dist/dimensions/reasoning-strategy/reflexion.js +2 -0
- package/dist/dimensions/reasoning-strategy/reflexion.js.map +1 -0
- package/dist/dimensions/reasoning-strategy/tree-of-thoughts.d.ts +2 -0
- package/dist/dimensions/reasoning-strategy/tree-of-thoughts.js +2 -0
- package/dist/dimensions/reasoning-strategy/tree-of-thoughts.js.map +1 -0
- package/dist/dimensions/role/architect.d.ts +2 -0
- package/dist/dimensions/role/architect.js +2 -0
- package/dist/dimensions/role/architect.js.map +1 -0
- package/dist/dimensions/role/build.d.ts +2 -0
- package/dist/dimensions/role/build.js +2 -0
- package/dist/dimensions/role/build.js.map +1 -0
- package/dist/dimensions/role/converse.d.ts +2 -0
- package/dist/dimensions/role/converse.js +2 -0
- package/dist/dimensions/role/converse.js.map +1 -0
- package/dist/dimensions/role/curate.d.ts +2 -0
- package/dist/dimensions/role/curate.js +2 -0
- package/dist/dimensions/role/curate.js.map +1 -0
- package/dist/dimensions/role/diagnose.d.ts +2 -0
- package/dist/dimensions/role/diagnose.js +2 -0
- package/dist/dimensions/role/diagnose.js.map +1 -0
- package/dist/dimensions/role/document.d.ts +2 -0
- package/dist/dimensions/role/document.js +2 -0
- package/dist/dimensions/role/document.js.map +1 -0
- package/dist/dimensions/role/implement.d.ts +2 -0
- package/dist/dimensions/role/implement.js +2 -0
- package/dist/dimensions/role/implement.js.map +1 -0
- package/dist/dimensions/role/operate.d.ts +2 -0
- package/dist/dimensions/role/operate.js +2 -0
- package/dist/dimensions/role/operate.js.map +1 -0
- package/dist/dimensions/role/orchestrate.d.ts +2 -0
- package/dist/dimensions/role/orchestrate.js +2 -0
- package/dist/dimensions/role/orchestrate.js.map +1 -0
- package/dist/dimensions/role/plan.d.ts +2 -0
- package/dist/dimensions/role/plan.js +2 -0
- package/dist/dimensions/role/plan.js.map +1 -0
- package/dist/dimensions/role/research.d.ts +2 -0
- package/dist/dimensions/role/research.js +2 -0
- package/dist/dimensions/role/research.js.map +1 -0
- package/dist/dimensions/role/review.d.ts +2 -0
- package/dist/dimensions/role/review.js +2 -0
- package/dist/dimensions/role/review.js.map +1 -0
- package/dist/dimensions/role/test.d.ts +2 -0
- package/dist/dimensions/role/test.js +2 -0
- package/dist/dimensions/role/test.js.map +1 -0
- package/dist/dimensions/satisficing/optimize.d.ts +2 -0
- package/dist/dimensions/satisficing/optimize.js +2 -0
- package/dist/dimensions/satisficing/optimize.js.map +1 -0
- package/dist/dimensions/satisficing/satisfice.d.ts +2 -0
- package/dist/dimensions/satisficing/satisfice.js +2 -0
- package/dist/dimensions/satisficing/satisfice.js.map +1 -0
- package/dist/dimensions/self-evaluation/acceptance-criteria-check.d.ts +2 -0
- package/dist/dimensions/self-evaluation/acceptance-criteria-check.js +2 -0
- package/dist/dimensions/self-evaluation/acceptance-criteria-check.js.map +1 -0
- package/dist/dimensions/self-evaluation/cross-validation-consensus.d.ts +2 -0
- package/dist/dimensions/self-evaluation/cross-validation-consensus.js +2 -0
- package/dist/dimensions/self-evaluation/cross-validation-consensus.js.map +1 -0
- package/dist/dimensions/self-evaluation/executable-test-oracle.d.ts +2 -0
- package/dist/dimensions/self-evaluation/executable-test-oracle.js +2 -0
- package/dist/dimensions/self-evaluation/executable-test-oracle.js.map +1 -0
- package/dist/dimensions/self-evaluation/human-review.d.ts +2 -0
- package/dist/dimensions/self-evaluation/human-review.js +2 -0
- package/dist/dimensions/self-evaluation/human-review.js.map +1 -0
- package/dist/dimensions/self-evaluation/llm-as-judge.d.ts +2 -0
- package/dist/dimensions/self-evaluation/llm-as-judge.js +2 -0
- package/dist/dimensions/self-evaluation/llm-as-judge.js.map +1 -0
- package/dist/dimensions/self-evaluation/self-critique.d.ts +2 -0
- package/dist/dimensions/self-evaluation/self-critique.js +2 -0
- package/dist/dimensions/self-evaluation/self-critique.js.map +1 -0
- package/dist/dimensions/self-evaluation/verifier-model.d.ts +2 -0
- package/dist/dimensions/self-evaluation/verifier-model.js +2 -0
- package/dist/dimensions/self-evaluation/verifier-model.js.map +1 -0
- package/dist/dimensions/situation-awareness/comprehension.d.ts +2 -0
- package/dist/dimensions/situation-awareness/comprehension.js +2 -0
- package/dist/dimensions/situation-awareness/comprehension.js.map +1 -0
- package/dist/dimensions/situation-awareness/perception.d.ts +2 -0
- package/dist/dimensions/situation-awareness/perception.js +2 -0
- package/dist/dimensions/situation-awareness/perception.js.map +1 -0
- package/dist/dimensions/situation-awareness/projection.d.ts +2 -0
- package/dist/dimensions/situation-awareness/projection.js +2 -0
- package/dist/dimensions/situation-awareness/projection.js.map +1 -0
- package/dist/dimensions/transparency/answer-only.d.ts +2 -0
- package/dist/dimensions/transparency/answer-only.js +2 -0
- package/dist/dimensions/transparency/answer-only.js.map +1 -0
- package/dist/dimensions/transparency/decision-rationale.d.ts +2 -0
- package/dist/dimensions/transparency/decision-rationale.js +2 -0
- package/dist/dimensions/transparency/decision-rationale.js.map +1 -0
- package/dist/dimensions/transparency/limitation-disclosure.d.ts +2 -0
- package/dist/dimensions/transparency/limitation-disclosure.js +2 -0
- package/dist/dimensions/transparency/limitation-disclosure.js.map +1 -0
- package/dist/dimensions/transparency/post-hoc-rationale.d.ts +2 -0
- package/dist/dimensions/transparency/post-hoc-rationale.js +2 -0
- package/dist/dimensions/transparency/post-hoc-rationale.js.map +1 -0
- package/dist/dimensions/transparency/provenance-attribution.d.ts +2 -0
- package/dist/dimensions/transparency/provenance-attribution.js +2 -0
- package/dist/dimensions/transparency/provenance-attribution.js.map +1 -0
- package/dist/dimensions/transparency/reasoning-trace.d.ts +2 -0
- package/dist/dimensions/transparency/reasoning-trace.js +2 -0
- package/dist/dimensions/transparency/reasoning-trace.js.map +1 -0
- package/dist/dimensions/transparency/uncertainty-disclosure.d.ts +2 -0
- package/dist/dimensions/transparency/uncertainty-disclosure.js +2 -0
- package/dist/dimensions/transparency/uncertainty-disclosure.js.map +1 -0
- package/dist/dimensions/trigger/agent-message.d.ts +2 -0
- package/dist/dimensions/trigger/agent-message.js +2 -0
- package/dist/dimensions/trigger/agent-message.js.map +1 -0
- package/dist/dimensions/trigger/environment-event.d.ts +2 -0
- package/dist/dimensions/trigger/environment-event.js +2 -0
- package/dist/dimensions/trigger/environment-event.js.map +1 -0
- package/dist/dimensions/trigger/introspection-request.d.ts +2 -0
- package/dist/dimensions/trigger/introspection-request.js +2 -0
- package/dist/dimensions/trigger/introspection-request.js.map +1 -0
- package/dist/dimensions/trigger/scheduled-trigger.d.ts +2 -0
- package/dist/dimensions/trigger/scheduled-trigger.js +2 -0
- package/dist/dimensions/trigger/scheduled-trigger.js.map +1 -0
- package/dist/dimensions/trigger/tool-result.d.ts +2 -0
- package/dist/dimensions/trigger/tool-result.js +2 -0
- package/dist/dimensions/trigger/tool-result.js.map +1 -0
- package/dist/dimensions/trigger/user-message.d.ts +2 -0
- package/dist/dimensions/trigger/user-message.js +2 -0
- package/dist/dimensions/trigger/user-message.js.map +1 -0
- package/dist/genus/founding-doctrine.d.ts +7 -0
- package/dist/genus/founding-doctrine.js +41 -0
- package/dist/genus/founding-doctrine.js.map +1 -0
- package/dist/hook-cells.d.ts +3 -0
- package/dist/hook-cells.js +30 -0
- package/dist/hook-cells.js.map +1 -0
- package/dist/hooks/deploy-drift-notice.d.ts +2 -0
- package/dist/hooks/deploy-drift-notice.js +434 -0
- package/dist/hooks/deploy-drift-notice.js.map +1 -0
- package/dist/hooks/memory-consolidation-nudge.d.ts +2 -0
- package/dist/hooks/memory-consolidation-nudge.js +148 -0
- package/dist/hooks/memory-consolidation-nudge.js.map +1 -0
- package/dist/hooks/praxis-continuity.d.ts +2 -0
- package/dist/hooks/praxis-continuity.js +131 -0
- package/dist/hooks/praxis-continuity.js.map +1 -0
- package/dist/hooks/resume-availability-notice.d.ts +2 -0
- package/dist/hooks/resume-availability-notice.js +50 -0
- package/dist/hooks/resume-availability-notice.js.map +1 -0
- package/dist/hooks/stance-guardrail-pre.d.ts +2 -0
- package/dist/hooks/stance-guardrail-pre.js +170 -0
- package/dist/hooks/stance-guardrail-pre.js.map +1 -0
- package/dist/hooks/stance-guardrail.d.ts +2 -0
- package/dist/hooks/stance-guardrail.js +943 -0
- package/dist/hooks/stance-guardrail.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +191 -0
- package/dist/manifest.js +237 -0
- package/dist/manifest.js.map +1 -0
- package/dist/operator-lexicon.d.ts +302 -0
- package/dist/operator-lexicon.js +198 -0
- package/dist/operator-lexicon.js.map +1 -0
- package/dist/plan-states.d.ts +31 -0
- package/dist/plan-states.js +42 -0
- package/dist/plan-states.js.map +1 -0
- package/dist/rules/repo-preamble.d.ts +2 -0
- package/dist/rules/repo-preamble.js +56 -0
- package/dist/rules/repo-preamble.js.map +1 -0
- package/dist/skills/carry-on/skill.d.ts +2 -0
- package/dist/skills/carry-on/skill.js +56 -0
- package/dist/skills/carry-on/skill.js.map +1 -0
- package/dist/skills/conceptualize/skill.d.ts +2 -0
- package/dist/skills/conceptualize/skill.js +34 -0
- package/dist/skills/conceptualize/skill.js.map +1 -0
- package/dist/skills/create-agent/skill.d.ts +2 -0
- package/dist/skills/create-agent/skill.js +38 -0
- package/dist/skills/create-agent/skill.js.map +1 -0
- package/dist/skills/create-skill/skill.d.ts +2 -0
- package/dist/skills/create-skill/skill.js +27 -0
- package/dist/skills/create-skill/skill.js.map +1 -0
- package/dist/skills/dream/skill.d.ts +2 -0
- package/dist/skills/dream/skill.js +65 -0
- package/dist/skills/dream/skill.js.map +1 -0
- package/dist/skills/elicit/skill.d.ts +2 -0
- package/dist/skills/elicit/skill.js +26 -0
- package/dist/skills/elicit/skill.js.map +1 -0
- package/dist/skills/event-tap/skill.d.ts +2 -0
- package/dist/skills/event-tap/skill.js +37 -0
- package/dist/skills/event-tap/skill.js.map +1 -0
- package/dist/skills/exemplify/skill.d.ts +2 -0
- package/dist/skills/exemplify/skill.js +42 -0
- package/dist/skills/exemplify/skill.js.map +1 -0
- package/dist/skills/formalize/skill.d.ts +2 -0
- package/dist/skills/formalize/skill.js +35 -0
- package/dist/skills/formalize/skill.js.map +1 -0
- package/dist/skills/handoff/skill.d.ts +2 -0
- package/dist/skills/handoff/skill.js +27 -0
- package/dist/skills/handoff/skill.js.map +1 -0
- package/dist/skills/introspect/skill.d.ts +2 -0
- package/dist/skills/introspect/skill.js +47 -0
- package/dist/skills/introspect/skill.js.map +1 -0
- package/dist/skills/materialize/skill.d.ts +2 -0
- package/dist/skills/materialize/skill.js +54 -0
- package/dist/skills/materialize/skill.js.map +1 -0
- package/dist/skills/praxis/skill.d.ts +2 -0
- package/dist/skills/praxis/skill.js +196 -0
- package/dist/skills/praxis/skill.js.map +1 -0
- package/dist/skills/probe/skill.d.ts +2 -0
- package/dist/skills/probe/skill.js +58 -0
- package/dist/skills/probe/skill.js.map +1 -0
- package/dist/skills/signify/skill.d.ts +2 -0
- package/dist/skills/signify/skill.js +59 -0
- package/dist/skills/signify/skill.js.map +1 -0
- package/dist/skills/wake/skill.d.ts +2 -0
- package/dist/skills/wake/skill.js +43 -0
- package/dist/skills/wake/skill.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// praxis-continuity — the repo-level post-commit reminder. A scope-activated source
|
|
2
|
+
// cell on the GIT substrate: `vcs.commit.post` is an ordinary member of this
|
|
3
|
+
// corpus's `CANONICAL_EVENTS` carrying `substrate: 'git'`, so it is routed rather
|
|
4
|
+
// than refused — the `.husky/post-commit` dispatcher runs the committed worker
|
|
5
|
+
// directly and nothing reaches `settings.json`. Its `workers[].content` are the
|
|
6
|
+
// byte-anchors the committed `targets/continuity/` workers regenerate from
|
|
7
|
+
// (byte-locked).
|
|
8
|
+
//
|
|
9
|
+
// THE REVIEW THIS CELL WAS FLAGGED FOR IS CLOSED. The note read "not in FORGE's
|
|
10
|
+
// `CanonicalEvent` taxonomy" — stale by one package before it was stale by two, and
|
|
11
|
+
// it asked for either an addition to the taxonomy or a named exception. Neither was
|
|
12
|
+
// owed: the event was never exceptional, only unliterable, because the taxonomy was
|
|
13
|
+
// a closed union in `schema` that a git moment had no member to be. The vocabulary
|
|
14
|
+
// now lives where signification lives, `EventName` is open, and this cell names its
|
|
15
|
+
// moment exactly as a harness cell names its own.
|
|
16
|
+
export const praxisContinuity = {
|
|
17
|
+
id: 'praxis-continuity',
|
|
18
|
+
residue: 'post-commit detector ⟨task-file crosses state-folder ⇒ plan-mirror stale⟩ · nudge re-mirror · ¬edit · opt-in ↾ clone · exit-0 ⟨reminder ¬fail-commit⟩',
|
|
19
|
+
substrate: 'git',
|
|
20
|
+
events: ['vcs.commit.post'],
|
|
21
|
+
// git substrate: the entry is still named, never spelled as a path. Which
|
|
22
|
+
// directory git invokes it from is git's projection to make, not this cell's.
|
|
23
|
+
entry: 'praxis-advance-nudge.sh',
|
|
24
|
+
refs: [],
|
|
25
|
+
workers: [
|
|
26
|
+
{
|
|
27
|
+
filename: 'continuity-hook.sh',
|
|
28
|
+
targetPath: 'packages/canon/targets/continuity/continuity-hook.sh',
|
|
29
|
+
executable: true,
|
|
30
|
+
content: `#!/usr/bin/env sh
|
|
31
|
+
# continuity-hook — opt this repo in/out of the post-commit continuity ritual.
|
|
32
|
+
#
|
|
33
|
+
# The opt-in flag is a per-repo git config (agentfactory.continuity) living in .git/config,
|
|
34
|
+
# which is NOT checked in — so opting in is local to your clone and a fresh clone is
|
|
35
|
+
# opted out by default. The .husky/post-commit dispatcher reads this flag.
|
|
36
|
+
#
|
|
37
|
+
# pnpm run continuity:install → set agentfactory.continuity true
|
|
38
|
+
# pnpm run continuity:uninstall → unset (back to default off)
|
|
39
|
+
# pnpm run continuity:status → show current state
|
|
40
|
+
#
|
|
41
|
+
# Usage: continuity-hook.sh {install|uninstall|status}
|
|
42
|
+
|
|
43
|
+
set -e
|
|
44
|
+
|
|
45
|
+
cmd="\${1:-status}"
|
|
46
|
+
|
|
47
|
+
case "$cmd" in
|
|
48
|
+
install | on | true)
|
|
49
|
+
git config --bool agentfactory.continuity true
|
|
50
|
+
printf 'continuity: ENABLED for this repo (agentfactory.continuity=true).\\n'
|
|
51
|
+
printf ' Commits touching plans/**/{pending,ready,active,completed}/ now print a /praxis re-mirror reminder.\\n'
|
|
52
|
+
;;
|
|
53
|
+
uninstall | off | false)
|
|
54
|
+
git config --unset agentfactory.continuity 2>/dev/null || true
|
|
55
|
+
printf 'continuity: DISABLED for this repo (agentfactory.continuity unset → default off).\\n'
|
|
56
|
+
;;
|
|
57
|
+
status)
|
|
58
|
+
state=$(git config --bool agentfactory.continuity 2>/dev/null || echo "false")
|
|
59
|
+
printf 'continuity: %s (agentfactory.continuity=%s)\\n' \\
|
|
60
|
+
"$([ "$state" = "true" ] && echo ENABLED || echo "disabled (default)")" "$state"
|
|
61
|
+
;;
|
|
62
|
+
*)
|
|
63
|
+
printf 'usage: continuity-hook.sh {install|uninstall|status}\\n' >&2
|
|
64
|
+
exit 2
|
|
65
|
+
;;
|
|
66
|
+
esac
|
|
67
|
+
`,
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
filename: 'praxis-advance-nudge.sh',
|
|
71
|
+
targetPath: 'packages/canon/targets/continuity/praxis-advance-nudge.sh',
|
|
72
|
+
executable: true,
|
|
73
|
+
content: `#!/usr/bin/env sh
|
|
74
|
+
# praxis-advance-nudge — the repo-level continuity ritual, as a post-commit reminder.
|
|
75
|
+
#
|
|
76
|
+
# WHAT IT DOES (and deliberately does NOT do):
|
|
77
|
+
# When a commit moves plan task-files between their state folders
|
|
78
|
+
# (plans/**/{pending,ready,active,completed}/), PLAN.md — the hand-authored
|
|
79
|
+
# mirror of that folder-state — may now be stale. This script DETECTS that and
|
|
80
|
+
# PRINTS A REMINDER to re-mirror via /praxis. It never edits PLAN.md: the mirror
|
|
81
|
+
# is hand-authored prose; auto-rewriting it is out of scope (a future "mechanized
|
|
82
|
+
# PLAN.md generation" task). Detect → remind, never edit. (doc-mirrors-runtime-truth:
|
|
83
|
+
# the folders are the truth; this only flags that the mirror lagged.)
|
|
84
|
+
#
|
|
85
|
+
# SCOPE: praxis-advance is the ONE repo-level continuity ritual. encode/dream are
|
|
86
|
+
# per-AGENT sidecar-memory operations (~/.claude/agents/<name>/*) — not repo state,
|
|
87
|
+
# a git hook can't meaningfully fire them — so they are out of this hook's scope.
|
|
88
|
+
#
|
|
89
|
+
# OPT-IN: this runs only when \`git config --bool agentfactory.continuity\` is true. A fresh
|
|
90
|
+
# clone is opted out, so default commit behavior is unchanged. See continuity-hook.sh.
|
|
91
|
+
#
|
|
92
|
+
# POSIX sh; no deps beyond git. Exits 0 always — a reminder must never fail a commit.
|
|
93
|
+
|
|
94
|
+
set -e
|
|
95
|
+
|
|
96
|
+
# The commit just made (post-commit runs after HEAD has advanced).
|
|
97
|
+
git rev-parse HEAD >/dev/null 2>&1 || exit 0
|
|
98
|
+
|
|
99
|
+
# Files changed by HEAD. For a root commit (no parent) diff against the root.
|
|
100
|
+
if git rev-parse --verify --quiet HEAD^ >/dev/null 2>&1; then
|
|
101
|
+
changed=$(git diff-tree --no-commit-id --name-only -r HEAD 2>/dev/null) || exit 0
|
|
102
|
+
else
|
|
103
|
+
changed=$(git diff-tree --no-commit-id --name-only -r --root HEAD 2>/dev/null) || exit 0
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# Did this commit touch any plan state-folder? Match the four canonical states under
|
|
107
|
+
# any plans/ subtree (works whether or not a tasks/ or {concern} wrapper is present).
|
|
108
|
+
touched=$(printf '%s\\n' "$changed" \\
|
|
109
|
+
| grep -E '^plans/.*/(pending|ready|active|completed)/' || true)
|
|
110
|
+
|
|
111
|
+
[ -z "$touched" ] && exit 0
|
|
112
|
+
|
|
113
|
+
# Which plan dirs were touched (dedup to the plan root: plans/<plan>/).
|
|
114
|
+
plans=$(printf '%s\\n' "$touched" \\
|
|
115
|
+
| sed -E 's#^(plans/[^/]+)/.*#\\1#' | sort -u)
|
|
116
|
+
|
|
117
|
+
printf '\\n'
|
|
118
|
+
printf 'continuity · praxis-advance — plan state changed in this commit:\\n'
|
|
119
|
+
printf '%s\\n' "$plans" | sed 's/^/ /'
|
|
120
|
+
printf '\\n'
|
|
121
|
+
printf ' PLAN.md mirrors the task-folder state; it may now be stale.\\n'
|
|
122
|
+
printf ' Re-mirror with /praxis (advance the task, re-sync PLAN.md), then amend or follow-up commit.\\n'
|
|
123
|
+
printf ' (This is a reminder only — nothing was edited. Disable: pnpm run continuity:uninstall)\\n'
|
|
124
|
+
printf '\\n'
|
|
125
|
+
|
|
126
|
+
exit 0
|
|
127
|
+
`,
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=praxis-continuity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"praxis-continuity.js","sourceRoot":"","sources":["../../src/hooks/praxis-continuity.ts"],"names":[],"mappings":"AAEA,oFAAoF;AACpF,6EAA6E;AAC7E,kFAAkF;AAClF,+EAA+E;AAC/E,gFAAgF;AAChF,2EAA2E;AAC3E,iBAAiB;AACjB,EAAE;AACF,gFAAgF;AAChF,oFAAoF;AACpF,oFAAoF;AACpF,oFAAoF;AACpF,mFAAmF;AACnF,oFAAoF;AACpF,kDAAkD;AAElD,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,EAAE,EAAE,mBAAmB;IACvB,OAAO,EACL,uJAAuJ;IACzJ,SAAS,EAAE,KAAK;IAChB,MAAM,EAAE,CAAC,iBAAiB,CAAC;IAC3B,0EAA0E;IAC1E,8EAA8E;IAC9E,KAAK,EAAE,yBAAyB;IAChC,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,oBAAoB;YAC9B,UAAU,EAAE,sDAAsD;YAClE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCd;SACI;QACD;YACE,QAAQ,EAAE,yBAAyB;YACnC,UAAU,EAAE,2DAA2D;YACvE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsDd;SACI;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
// resume-availability-notice — the SessionStart note. It tells the agent that
|
|
2
|
+
// memory exists and that `/wake` reconstitutes it, and does nothing else.
|
|
3
|
+
//
|
|
4
|
+
// WHY A NOTE AND NOT AN ACTION: reconstitution is the operator's call, not the
|
|
5
|
+
// harness's. The agent may already have been woken, may deliberately be wanted
|
|
6
|
+
// cold, or may simply have been started without it. A hook cannot tell which,
|
|
7
|
+
// so it must not decide — it makes the option visible and leaves the choice
|
|
8
|
+
// where it belongs.
|
|
9
|
+
//
|
|
10
|
+
// THE VERB-FREE LAW IS LOAD-BEARING, not tidiness. Every memory verb that
|
|
11
|
+
// touches the registry REGISTERS the session, and registration is exactly what
|
|
12
|
+
// distinguishes a woken session from an encode-only one (`SessionEntry.origin`).
|
|
13
|
+
// A note that called any such verb would register the session itself and make
|
|
14
|
+
// every session look woken — destroying the very signal that lets the agent
|
|
15
|
+
// notice it was NOT woken. So: no `session begin`, no `register`, no `read`, no
|
|
16
|
+
// `encode`. It reads nothing, writes nothing, and needs no home.
|
|
17
|
+
export const resumeAvailabilityNotice = {
|
|
18
|
+
id: 'resume-availability-notice',
|
|
19
|
+
residue: 'emit ↾ session.start · fixed-text · ¬verb ⟨any registry touch ⇒ every session reads woken ∴ origin destroyed⟩ · ¬read · ¬write · ¬home-derivation · reconstitution ↦ operator ⟨may have run it · may refuse it · may have forgotten⟩ · exit-0 ∀error',
|
|
20
|
+
substrate: 'harness',
|
|
21
|
+
events: ['session.start'],
|
|
22
|
+
entry: 'resume-availability-notice.sh',
|
|
23
|
+
timeout: 5,
|
|
24
|
+
refs: [],
|
|
25
|
+
workers: [
|
|
26
|
+
{
|
|
27
|
+
filename: 'resume-availability-notice.sh',
|
|
28
|
+
targetPath: 'packages/canon/targets/guardrail/resume-availability-notice.sh',
|
|
29
|
+
executable: true,
|
|
30
|
+
content: `#!/usr/bin/env sh
|
|
31
|
+
# resume-availability-notice — a SessionStart note. Emits ONE fixed line telling
|
|
32
|
+
# the agent that memory skills exist and that /wake reconstitutes it.
|
|
33
|
+
#
|
|
34
|
+
# It calls NO memory verb. That is a hard requirement, not a style choice: every
|
|
35
|
+
# registry-touching verb registers the session, and registration is what marks a
|
|
36
|
+
# session as woken. A note that registered would make every session look woken
|
|
37
|
+
# and destroy the signal it exists to support.
|
|
38
|
+
#
|
|
39
|
+
# Reads nothing, writes nothing, derives no home. Always exits 0.
|
|
40
|
+
|
|
41
|
+
set -eu
|
|
42
|
+
trap 'exit 0' EXIT
|
|
43
|
+
|
|
44
|
+
printf 'MEMORY — this agent has persistent memory. /wake reconstitutes it (prior state, standing plan, continuity); /dream consolidates it. Neither runs automatically.\\n'
|
|
45
|
+
exit 0
|
|
46
|
+
`,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=resume-availability-notice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resume-availability-notice.js","sourceRoot":"","sources":["../../src/hooks/resume-availability-notice.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,4EAA4E;AAC5E,oBAAoB;AACpB,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E,iFAAiF;AACjF,8EAA8E;AAC9E,4EAA4E;AAC5E,gFAAgF;AAChF,iEAAiE;AAEjE,MAAM,CAAC,MAAM,wBAAwB,GAAa;IAChD,EAAE,EAAE,4BAA4B;IAChC,OAAO,EACL,sPAAsP;IACxP,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,CAAC,eAAe,CAAC;IACzB,KAAK,EAAE,+BAA+B;IACtC,OAAO,EAAE,CAAC;IACV,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,+BAA+B;YACzC,UAAU,EACR,gEAAgE;YAClE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;CAgBd;SACI;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
// stance-guardrail-pre — the BEFORE-THE-CALL twin of `stance-guardrail` (the turn-end
|
|
2
|
+
// cell). It STRUCTURALLY REFUSES, BEFORE the call fires, a mid-turn tool call that
|
|
3
|
+
// collapses out of the intent-driven-expert stance. Two acts, and the acts are what it
|
|
4
|
+
// binds:
|
|
5
|
+
// - operator.consult.pre : a permission / option-menu on an in-remit reversible call
|
|
6
|
+
// - subagent.dispatch.pre : a dispatch that transcribes literal words w/o extracted intent
|
|
7
|
+
// Neither act fires turn-end, so the Stop guard is blind to them (the closed blind spot).
|
|
8
|
+
// It SHARES the deployed judge backend + rubric of the sibling `stance-guardrail` hook
|
|
9
|
+
// (one rubric, one judge — no duplication); only this worker is new.
|
|
10
|
+
//
|
|
11
|
+
// IT BINDS TWO ACTS, NOT ONE EVENT PLUS A REGEX. This cell used to read
|
|
12
|
+
// `events: ['tool.use.pre']` + `matcher: 'AskUserQuestion|Agent|SendMessage'` — three
|
|
13
|
+
// claude tool names on a harness-agnostic shape, which the codex adapter dropped
|
|
14
|
+
// without a word, so the hook there fired on EVERY tool call and only the worker's
|
|
15
|
+
// own `*) allow ;;` branch kept it correct. The two acts below were already latent in
|
|
16
|
+
// the residue (`permission-menu` · `dispatch-echo`); naming them moves the narrowing
|
|
17
|
+
// to the adapter, which alone knows which of its tools performs the act. Each adapter
|
|
18
|
+
// computes its own ⟨native event, native selector⟩ pair, and one that can fire an act
|
|
19
|
+
// but not narrow it now SAYS SO through the projection's warnings.
|
|
20
|
+
// `test/hook-rule-boundary.test.ts` byte-locks the worker;
|
|
21
|
+
// `test/hook-act-selector.test.ts` holds the seam.
|
|
22
|
+
export const stanceGuardrailPre = {
|
|
23
|
+
id: 'stance-guardrail-pre',
|
|
24
|
+
residue: 'structural-refusal ↾ mid-turn tool-call · deny-before-fire ⟨intent-driven-expert-collapse⟩ ⟨permission-menu · dispatch-echo ⟨literal-transcription ∄ extracted-intent⟩⟩ · pass ⟨reserved · irreversible-outward-consent · substantive-dispatch · intent-ambiguity ↦ elicit⟩ · shared judge-backend ⟨sibling⟩ · loop-safe ⟨re-entry-cap : ¬deny identical twice⟩',
|
|
25
|
+
substrate: 'harness',
|
|
26
|
+
order: 1,
|
|
27
|
+
events: ['operator.consult.pre', 'subagent.dispatch.pre'],
|
|
28
|
+
entry: 'stance-guardrail-pre.sh',
|
|
29
|
+
timeout: 60,
|
|
30
|
+
refs: [],
|
|
31
|
+
workers: [
|
|
32
|
+
{
|
|
33
|
+
filename: 'stance-guardrail-pre.sh',
|
|
34
|
+
targetPath: 'packages/canon/targets/guardrail/stance-guardrail-pre.sh',
|
|
35
|
+
executable: true,
|
|
36
|
+
content: `#!/usr/bin/env sh
|
|
37
|
+
# stance-guardrail-pre — a PreToolUse hook that STRUCTURALLY REFUSES a mid-turn tool
|
|
38
|
+
# call that collapses out of the intent-driven-expert (fiduciary-agent) stance BEFORE
|
|
39
|
+
# it fires. The pre-hoc twin of stance-guardrail (Stop): AskUserQuestion menus and
|
|
40
|
+
# Agent/SendMessage dispatch-echo never fire Stop, so the Stop guard cannot see them.
|
|
41
|
+
#
|
|
42
|
+
# WHAT IT DENIES (see stance-judge-prompt.md — the SHARED rubric):
|
|
43
|
+
# - AskUserQuestion : a permission / option-menu on an in-remit reversible call
|
|
44
|
+
# - Agent/SendMessage : a dispatch transcribing literal words without extracted intent
|
|
45
|
+
# WHAT IT DOES NOT DENY (reserved): an irreversible-outward consent menu, a true INTENT
|
|
46
|
+
# ambiguity, a substantive intent-extracted dispatch.
|
|
47
|
+
#
|
|
48
|
+
# SAFETY MODEL (mirrors stance-guardrail):
|
|
49
|
+
# - OFF BY DEFAULT (git config agentfactory.stanceGuard true).
|
|
50
|
+
# - AGENT-SCOPED (agent_type in the allowlist; default: nico mav). agent_type is
|
|
51
|
+
# present only for subagents / --agent mode; a top-level session call fails open.
|
|
52
|
+
# - FAILS OPEN. Any error (no jq, judge failure, bad input) -> exit 0 (allow the call).
|
|
53
|
+
# - LOOP-SAFE. A re-entry cap: never deny an identical tool_input twice (there is no
|
|
54
|
+
# stop_hook_active analog for PreToolUse), so it can never wedge a call.
|
|
55
|
+
# - OBSERVABLE. Judge failures/timeouts are logged (fails open, but a miss is visible).
|
|
56
|
+
#
|
|
57
|
+
# INPUT : Claude Code PreToolUse hook JSON on stdin (tool_name, tool_input, agent_type
|
|
58
|
+
# [subagents], session_id, cwd, ...).
|
|
59
|
+
# OUTPUT : on collapse -> stdout
|
|
60
|
+
# {"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"deny",
|
|
61
|
+
# "permissionDecisionReason":"..."}} + exit 0.
|
|
62
|
+
# otherwise -> no stdout + exit 0 (allow the call).
|
|
63
|
+
#
|
|
64
|
+
# POSIX sh. Depends on: jq. Missing jq -> fail open.
|
|
65
|
+
|
|
66
|
+
set -eu
|
|
67
|
+
|
|
68
|
+
# The sibling Stop hook's deployed dir owns the SHARED judge + rubric (deployed together).
|
|
69
|
+
JUDGE_DIR="\${STANCE_GUARD_DIR:-$HOME/.claude/hooks/stance-guardrail}"
|
|
70
|
+
RUBRIC="\${STANCE_RUBRIC:-$JUDGE_DIR/stance-judge-prompt.md}"
|
|
71
|
+
JUDGE_CMD="\${STANCE_JUDGE_CMD:-sh $JUDGE_DIR/stance-judge.sh}"
|
|
72
|
+
LOG="\${STANCE_GUARD_LOG:-$HOME/.claude/hooks/stance-guardrail-pre/misses.log}"
|
|
73
|
+
|
|
74
|
+
# A PreToolUse hook must never break a session. Trap any unexpected error -> allow.
|
|
75
|
+
trap 'exit 0' EXIT
|
|
76
|
+
|
|
77
|
+
allow() { exit 0; } # emit nothing; the tool call proceeds.
|
|
78
|
+
note() { printf '%s\\n' "$1" >> "$LOG" 2>/dev/null || true; }
|
|
79
|
+
|
|
80
|
+
# --- read hook input ------------------------------------------------------------------------
|
|
81
|
+
input="$(cat)"
|
|
82
|
+
[ -n "$input" ] || allow
|
|
83
|
+
command -v jq >/dev/null 2>&1 || allow # no jq -> cannot parse -> fail open
|
|
84
|
+
|
|
85
|
+
# --- opt-in gate (off by default) -----------------------------------------------------------
|
|
86
|
+
# Per-repo, lives in .git/config, never checked in. Resolve relative to the hook's cwd.
|
|
87
|
+
cwd="$(printf '%s' "$input" | jq -r '.cwd // empty' 2>/dev/null || true)"
|
|
88
|
+
[ -n "$cwd" ] && cd "$cwd" 2>/dev/null || true
|
|
89
|
+
enabled="$(git config --bool agentfactory.stanceGuard 2>/dev/null || echo false)"
|
|
90
|
+
[ "$enabled" = "true" ] || allow
|
|
91
|
+
|
|
92
|
+
# --- agent-scope gate -----------------------------------------------------------------------
|
|
93
|
+
# Only enforce for the configured agents (default: the principal-ic-intrinsic agents).
|
|
94
|
+
# agent_type is present only for a subagent / --agent tool call; absent for the top-level
|
|
95
|
+
# session -> fail open (unless STANCE_GUARD_AGENTS=*), exactly like the Stop guard.
|
|
96
|
+
agent_type="$(printf '%s' "$input" | jq -r '.agent_type // empty' 2>/dev/null || true)"
|
|
97
|
+
allowlist="\${STANCE_GUARD_AGENTS:-$(git config agentfactory.stanceGuardAgents 2>/dev/null || echo 'nico mav')}"
|
|
98
|
+
if [ "$allowlist" != "*" ]; then
|
|
99
|
+
[ -n "$agent_type" ] || allow # cannot identify the agent -> fail open
|
|
100
|
+
in_scope=false
|
|
101
|
+
for a in $allowlist; do
|
|
102
|
+
[ "$a" = "$agent_type" ] && in_scope=true && break
|
|
103
|
+
done
|
|
104
|
+
[ "$in_scope" = true ] || allow
|
|
105
|
+
fi
|
|
106
|
+
|
|
107
|
+
# --- extract the judged payload, branched by tool -------------------------------------------
|
|
108
|
+
tool_name="$(printf '%s' "$input" | jq -r '.tool_name // empty' 2>/dev/null || true)"
|
|
109
|
+
[ -n "$tool_name" ] || allow
|
|
110
|
+
|
|
111
|
+
case "$tool_name" in
|
|
112
|
+
AskUserQuestion)
|
|
113
|
+
# the questions + their option menus — the permission-menu class
|
|
114
|
+
body="$(printf '%s' "$input" | jq -r '
|
|
115
|
+
(.tool_input.questions // [])
|
|
116
|
+
| map("Q: " + (.question // "")
|
|
117
|
+
+ " OPTIONS: " + ((.options // []) | map(.label // "") | join(" | ")))
|
|
118
|
+
| join(" ;; ")
|
|
119
|
+
' 2>/dev/null || true)"
|
|
120
|
+
payload="AskUserQuestion menu (a question/option menu handed to the operator): $body" ;;
|
|
121
|
+
Agent|SendMessage)
|
|
122
|
+
# the dispatch prompt/message — the dispatch-echo class
|
|
123
|
+
body="$(printf '%s' "$input" | jq -r '.tool_input.prompt // .tool_input.message // .tool_input.description // ""' 2>/dev/null || true)"
|
|
124
|
+
payload="$tool_name dispatch (the delegate prompt/message): $body" ;;
|
|
125
|
+
*)
|
|
126
|
+
allow ;; # DEFENCE IN DEPTH, and on some harnesses the only narrowing there is:
|
|
127
|
+
# claude's adapter computes a selector from the act and this never fires;
|
|
128
|
+
# codex has no subject selector, so its projection WARNS and this branch
|
|
129
|
+
# is what keeps the guard off every other tool call.
|
|
130
|
+
esac
|
|
131
|
+
|
|
132
|
+
[ -n "\${body:-}" ] || allow # nothing judgeable -> allow
|
|
133
|
+
|
|
134
|
+
# --- loop-safety: never deny an identical tool_input twice ----------------------------------
|
|
135
|
+
# No stop_hook_active analog exists for PreToolUse; a per-(session,input) marker caps re-deny.
|
|
136
|
+
session_id="$(printf '%s' "$input" | jq -r '.session_id // "nosession"' 2>/dev/null || echo nosession)"
|
|
137
|
+
sig="$(printf '%s' "$input" | jq -c '.tool_input' 2>/dev/null | cksum | cut -d' ' -f1 2>/dev/null || echo 0)"
|
|
138
|
+
seen="\${TMPDIR:-/tmp}/.stance-pre-$session_id-$sig"
|
|
139
|
+
[ -f "$seen" ] && allow # already denied this exact input once -> let it through
|
|
140
|
+
|
|
141
|
+
# --- judge (SHARED backend + rubric) --------------------------------------------------------
|
|
142
|
+
verdict="$(printf '%s' "$payload" | $JUDGE_CMD "$RUBRIC" 2>/dev/null)" || {
|
|
143
|
+
note "$(date -u +%Y-%m-%dT%H:%M:%SZ) judge-fail tool=$tool_name agent=\${agent_type:-?}"
|
|
144
|
+
allow
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
decision="$(printf '%s\\n' "$verdict" | sed -n 's/^VERDICT:[[:space:]]*//p' | head -1)"
|
|
148
|
+
[ "$decision" = "BLOCK" ] || allow # PASS, empty, or anything but BLOCK -> allow
|
|
149
|
+
|
|
150
|
+
reason="$(printf '%s\\n' "$verdict" | sed -n 's/^REASON:[[:space:]]*//p' | head -1)"
|
|
151
|
+
[ -n "$reason" ] || reason="This tool call collapsed out of the intent-driven-expert stance."
|
|
152
|
+
|
|
153
|
+
# mark this exact input as denied-once (the cap) before emitting the deny
|
|
154
|
+
: > "$seen" 2>/dev/null || true
|
|
155
|
+
|
|
156
|
+
# --- DENY -----------------------------------------------------------------------------------
|
|
157
|
+
feedback="STANCE GUARDRAIL (pre) — denied this $tool_name call: it collapses out of the \\
|
|
158
|
+
intent-driven-expert stance. $reason Own the in-remit reversible call yourself instead of handing the \\
|
|
159
|
+
operator a menu; extract and serve the underlying INTENT instead of transcribing literal words into a \\
|
|
160
|
+
dispatch. Decide, note the call for review, and proceed. (Legitimate exceptions that should NOT be a menu \\
|
|
161
|
+
here: a genuine irreversible-outward consent choice, a true INTENT ambiguity for /elicit, or a substantive \\
|
|
162
|
+
intent-extracted dispatch.)"
|
|
163
|
+
|
|
164
|
+
jq -cn --arg r "$feedback" '{hookSpecificOutput:{hookEventName:"PreToolUse",permissionDecision:"deny",permissionDecisionReason:$r}}'
|
|
165
|
+
exit 0
|
|
166
|
+
`,
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
};
|
|
170
|
+
//# sourceMappingURL=stance-guardrail-pre.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stance-guardrail-pre.js","sourceRoot":"","sources":["../../src/hooks/stance-guardrail-pre.ts"],"names":[],"mappings":"AAEA,sFAAsF;AACtF,mFAAmF;AACnF,uFAAuF;AACvF,SAAS;AACT,wFAAwF;AACxF,6FAA6F;AAC7F,0FAA0F;AAC1F,uFAAuF;AACvF,qEAAqE;AACrE,EAAE;AACF,wEAAwE;AACxE,sFAAsF;AACtF,iFAAiF;AACjF,mFAAmF;AACnF,sFAAsF;AACtF,qFAAqF;AACrF,sFAAsF;AACtF,sFAAsF;AACtF,mEAAmE;AACnE,2DAA2D;AAC3D,mDAAmD;AAEnD,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,EAAE,EAAE,sBAAsB;IAC1B,OAAO,EACL,iWAAiW;IACnW,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;IACzD,KAAK,EAAE,yBAAyB;IAChC,OAAO,EAAE,EAAE;IACX,IAAI,EAAE,EAAE;IACR,OAAO,EAAE;QACP;YACE,QAAQ,EAAE,yBAAyB;YACnC,UAAU,EAAE,0DAA0D;YACtE,UAAU,EAAE,IAAI;YAChB,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkId;SACI;KACF;CACF,CAAC"}
|