@kontourai/flow-agents 3.12.1 → 4.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/.github/workflows/ci.yml +84 -0
- package/CHANGELOG.md +68 -0
- package/CONTEXT.md +5 -0
- package/agents/tool-security-reviewer.json +1 -1
- package/build/generated/capability-declarations.json +177 -0
- package/build/src/builder-flow-runtime.d.ts +37 -0
- package/build/src/builder-flow-runtime.js +71 -1
- package/build/src/builder-gate-action-envelope.d.ts +58 -7
- package/build/src/builder-gate-action-envelope.js +160 -28
- package/build/src/builder-lifecycle-authority.d.ts +26 -0
- package/build/src/builder-lifecycle-authority.js +38 -0
- package/build/src/cli/builder-run.js +71 -2
- package/build/src/cli/init.js +35 -3
- package/build/src/cli/kit.js +95 -2
- package/build/src/cli/narrative-render.d.ts +95 -0
- package/build/src/cli/narrative-render.js +466 -0
- package/build/src/cli/narrative-sources.d.ts +2 -0
- package/build/src/cli/narrative-sources.js +282 -0
- package/build/src/cli/public-contracts.d.ts +257 -0
- package/build/src/cli/public-contracts.js +87 -0
- package/build/src/cli/pull-work-provider.js +7 -1
- package/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/build/src/cli/workflow-sidecar.d.ts +28 -12
- package/build/src/cli/workflow-sidecar.js +599 -180
- package/build/src/cli/workflow.js +16 -2
- package/build/src/cli.js +8 -0
- package/build/src/continuation-driver.d.ts +12 -0
- package/build/src/continuation-driver.js +16 -2
- package/build/src/continuation-validation.js +324 -8
- package/build/src/flow-kit/action-metadata.js +21 -1
- package/build/src/flow-kit/provision.d.ts +23 -0
- package/build/src/flow-kit/provision.js +99 -0
- package/build/src/flow-kit/validate.d.ts +52 -0
- package/build/src/flow-kit/validate.js +214 -9
- package/build/src/index.d.ts +33 -2
- package/build/src/index.js +24 -0
- package/build/src/lib/capability-declarations.d.ts +83 -0
- package/build/src/lib/capability-declarations.js +209 -0
- package/build/src/narrative/envelope.d.ts +111 -0
- package/build/src/narrative/envelope.js +590 -0
- package/build/src/narrative/eval-result.d.ts +60 -0
- package/build/src/narrative/eval-result.js +158 -0
- package/build/src/narrative/grounding-validator.d.ts +104 -0
- package/build/src/narrative/grounding-validator.js +472 -0
- package/build/src/narrative/integrity.d.ts +17 -0
- package/build/src/narrative/integrity.js +39 -0
- package/build/src/narrative/intent-economics.d.ts +42 -0
- package/build/src/narrative/intent-economics.js +82 -0
- package/build/src/narrative/intent.d.ts +94 -0
- package/build/src/narrative/intent.js +132 -0
- package/build/src/narrative/policy-filter.d.ts +15 -0
- package/build/src/narrative/policy-filter.js +58 -0
- package/build/src/narrative/projection.d.ts +58 -0
- package/build/src/narrative/projection.js +502 -0
- package/build/src/narrative/readers.d.ts +84 -0
- package/build/src/narrative/readers.js +406 -0
- package/build/src/narrative/render.d.ts +3 -0
- package/build/src/narrative/render.js +83 -0
- package/build/src/narrative/resolver.d.ts +52 -0
- package/build/src/narrative/resolver.js +190 -0
- package/build/src/narrative/snapshot.d.ts +90 -0
- package/build/src/narrative/snapshot.js +325 -0
- package/build/src/narrative/source-ids.d.ts +121 -0
- package/build/src/narrative/source-ids.js +201 -0
- package/build/src/narrative/statements.d.ts +84 -0
- package/build/src/narrative/statements.js +347 -0
- package/build/src/narrative/turn-spine.d.ts +19 -0
- package/build/src/narrative/turn-spine.js +73 -0
- package/build/src/runtime-adapters.js +1 -1
- package/build/src/tools/build-universal-bundles.js +8 -0
- package/build/src/tools/generate-capability-matrix.d.ts +7 -0
- package/build/src/tools/generate-capability-matrix.js +207 -0
- package/build/src/tools/validate-source-tree.js +5 -1
- package/context/contracts/execution-contract.md +30 -1
- package/context/contracts/review-contract.md +4 -0
- package/context/contracts/trigger-guards.md +73 -0
- package/context/scripts/hooks/stop-goal-fit.js +182 -9
- package/context/scripts/hooks/workflow-steering.js +160 -19
- package/context/scripts/telemetry/lib/session.sh +3 -0
- package/context/scripts/telemetry/lib/transport.sh +12 -3
- package/context/scripts/telemetry/telemetry.sh +480 -59
- package/context/settings/backlog-provider-settings.json +1 -1
- package/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/base/build/generated/capability-declarations.json +177 -0
- package/dist/base/build/package.json +1 -1
- package/dist/base/build/src/builder-flow-runtime.d.ts +37 -0
- package/dist/base/build/src/builder-flow-runtime.js +71 -1
- package/dist/base/build/src/builder-gate-action-envelope.d.ts +58 -7
- package/dist/base/build/src/builder-gate-action-envelope.js +160 -28
- package/dist/base/build/src/builder-lifecycle-authority.d.ts +26 -0
- package/dist/base/build/src/builder-lifecycle-authority.js +38 -0
- package/dist/base/build/src/cli/builder-run.js +71 -2
- package/dist/base/build/src/cli/init.js +35 -3
- package/dist/base/build/src/cli/kit.js +95 -2
- package/dist/base/build/src/cli/narrative-render.d.ts +95 -0
- package/dist/base/build/src/cli/narrative-render.js +466 -0
- package/dist/base/build/src/cli/narrative-sources.d.ts +2 -0
- package/dist/base/build/src/cli/narrative-sources.js +282 -0
- package/dist/base/build/src/cli/public-contracts.d.ts +257 -0
- package/dist/base/build/src/cli/public-contracts.js +87 -0
- package/dist/base/build/src/cli/pull-work-provider.js +7 -1
- package/dist/base/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/base/build/src/cli/workflow-sidecar.d.ts +28 -12
- package/dist/base/build/src/cli/workflow-sidecar.js +599 -180
- package/dist/base/build/src/cli/workflow.js +16 -2
- package/dist/base/build/src/cli.js +8 -0
- package/dist/base/build/src/continuation-driver.d.ts +12 -0
- package/dist/base/build/src/continuation-driver.js +16 -2
- package/dist/base/build/src/continuation-validation.js +324 -8
- package/dist/base/build/src/flow-kit/action-metadata.js +21 -1
- package/dist/base/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/base/build/src/flow-kit/provision.js +99 -0
- package/dist/base/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/base/build/src/flow-kit/validate.js +214 -9
- package/dist/base/build/src/index.d.ts +33 -2
- package/dist/base/build/src/index.js +24 -0
- package/dist/base/build/src/lib/capability-declarations.d.ts +83 -0
- package/dist/base/build/src/lib/capability-declarations.js +209 -0
- package/dist/base/build/src/narrative/envelope.d.ts +111 -0
- package/dist/base/build/src/narrative/envelope.js +590 -0
- package/dist/base/build/src/narrative/eval-result.d.ts +60 -0
- package/dist/base/build/src/narrative/eval-result.js +158 -0
- package/dist/base/build/src/narrative/grounding-validator.d.ts +104 -0
- package/dist/base/build/src/narrative/grounding-validator.js +472 -0
- package/dist/base/build/src/narrative/integrity.d.ts +17 -0
- package/dist/base/build/src/narrative/integrity.js +39 -0
- package/dist/base/build/src/narrative/intent-economics.d.ts +42 -0
- package/dist/base/build/src/narrative/intent-economics.js +82 -0
- package/dist/base/build/src/narrative/intent.d.ts +94 -0
- package/dist/base/build/src/narrative/intent.js +132 -0
- package/dist/base/build/src/narrative/policy-filter.d.ts +15 -0
- package/dist/base/build/src/narrative/policy-filter.js +58 -0
- package/dist/base/build/src/narrative/projection.d.ts +58 -0
- package/dist/base/build/src/narrative/projection.js +502 -0
- package/dist/base/build/src/narrative/readers.d.ts +84 -0
- package/dist/base/build/src/narrative/readers.js +406 -0
- package/dist/base/build/src/narrative/render.d.ts +3 -0
- package/dist/base/build/src/narrative/render.js +83 -0
- package/dist/base/build/src/narrative/resolver.d.ts +52 -0
- package/dist/base/build/src/narrative/resolver.js +190 -0
- package/dist/base/build/src/narrative/snapshot.d.ts +90 -0
- package/dist/base/build/src/narrative/snapshot.js +325 -0
- package/dist/base/build/src/narrative/source-ids.d.ts +121 -0
- package/dist/base/build/src/narrative/source-ids.js +201 -0
- package/dist/base/build/src/narrative/statements.d.ts +84 -0
- package/dist/base/build/src/narrative/statements.js +347 -0
- package/dist/base/build/src/narrative/turn-spine.d.ts +19 -0
- package/dist/base/build/src/narrative/turn-spine.js +73 -0
- package/dist/base/build/src/runtime-adapters.js +1 -1
- package/dist/base/build/src/tools/build-universal-bundles.js +8 -0
- package/dist/base/build/src/tools/generate-capability-matrix.d.ts +7 -0
- package/dist/base/build/src/tools/generate-capability-matrix.js +207 -0
- package/dist/base/build/src/tools/validate-source-tree.js +5 -1
- package/dist/base/context/contracts/execution-contract.md +30 -1
- package/dist/base/context/contracts/review-contract.md +4 -0
- package/dist/base/context/contracts/trigger-guards.md +73 -0
- package/dist/base/context/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/base/context/scripts/hooks/workflow-steering.js +160 -19
- package/dist/base/context/scripts/telemetry/lib/session.sh +3 -0
- package/dist/base/context/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/base/context/scripts/telemetry/telemetry.sh +480 -59
- package/dist/base/context/settings/backlog-provider-settings.json +1 -1
- package/dist/base/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/base/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/base/docs/adr/index.md +1 -0
- package/dist/base/docs/architecture-engine-and-kits.md +17 -0
- package/dist/base/docs/context-map.md +7 -0
- package/dist/base/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/base/docs/decisions/index.md +2 -0
- package/dist/base/docs/decisions/writer-observed-execution.md +51 -0
- package/dist/base/docs/developer-architecture.md +3 -3
- package/dist/base/docs/fixture-ownership.md +5 -1
- package/dist/base/docs/flow-kit-repository-contract.md +34 -3
- package/dist/base/docs/kit-authoring-guide.md +1 -1
- package/dist/base/docs/migrations.md +19 -4
- package/dist/base/docs/public-workflow-cli.md +9 -0
- package/dist/base/docs/spec/builder-flow-runtime.md +49 -8
- package/dist/base/docs/spec/runtime-hook-surface.md +29 -1
- package/dist/base/docs/specs/economics-record-contract.md +1 -1
- package/dist/base/docs/specs/harness-capability-matrix.md +63 -21
- package/dist/base/docs/veritas-integration.md +12 -0
- package/dist/base/docs/workflow-usage-guide.md +4 -1
- package/dist/base/evals/ci/run-baseline.sh +42 -0
- package/dist/base/evals/fixtures/narrative-evals/README.md +62 -0
- package/dist/base/evals/fixtures/narrative-evals/corpus.json +129 -0
- package/dist/base/evals/fixtures/narrative-evals/scorer.mjs +522 -0
- package/dist/base/evals/fixtures/narrative-grounding-validator/corpus.json +20 -0
- package/dist/base/evals/fixtures/narrative-grounding-validator/prompt-injection-adversarial.txt +1 -0
- package/dist/base/evals/fixtures/narrative-grounding-validator/prompt-injection-control.txt +1 -0
- package/dist/base/evals/fixtures/narrative-grounding-validator/scorer.mjs +201 -0
- package/dist/base/evals/fixtures/narrative-prose-renderer/corpus.json +15 -0
- package/dist/base/evals/fixtures/narrative-prose-renderer/scorer.mjs +201 -0
- package/dist/base/evals/fixtures/narrative-sources/expected-capture-completeness.json +13 -0
- package/dist/base/evals/fixtures/narrative-sources/flow/runs/run-fixture/report.json +1 -0
- package/dist/base/evals/fixtures/narrative-sources/flow/runs/run-fixture/state.json +1 -0
- package/dist/base/evals/fixtures/narrative-sources/flow/runs/run-runtime/state.json +1 -0
- package/dist/base/evals/fixtures/narrative-sources/repo/created.txt +1 -0
- package/dist/base/evals/fixtures/narrative-sources/repo/fixture.txt +1 -0
- package/dist/base/evals/fixtures/narrative-sources/session/agents/agent-fixture/events.jsonl +2 -0
- package/dist/base/evals/fixtures/narrative-sources/session/agents/nested-worker/events.jsonl +1 -0
- package/dist/base/evals/fixtures/narrative-sources/session/trust.bundle +1 -0
- package/dist/base/evals/fixtures/narrative-sources/telemetry/full.jsonl +3 -0
- package/dist/base/evals/fixtures/narrative-sources/telemetry/runtime.jsonl +4 -0
- package/dist/base/evals/fixtures/narrative-sources/transcripts/session.txt +1 -0
- package/dist/base/evals/integration/test_capability_declarations.sh +183 -0
- package/dist/base/evals/integration/test_economics_record.sh +42 -0
- package/dist/base/evals/integration/test_fixture_retirement_audit.sh +2 -2
- package/dist/base/evals/integration/test_gate_review_inquiry_records.sh +42 -35
- package/dist/base/evals/integration/test_goal_fit_hook.sh +13 -5
- package/dist/base/evals/integration/test_goal_fit_narrative_exclusion.sh +68 -0
- package/dist/base/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/base/evals/integration/test_narrative_evals.sh +174 -0
- package/dist/base/evals/integration/test_narrative_grounded_envelope.sh +280 -0
- package/dist/base/evals/integration/test_narrative_grounding_validator.sh +166 -0
- package/dist/base/evals/integration/test_narrative_intent_annotation.sh +205 -0
- package/dist/base/evals/integration/test_narrative_prose_renderer.sh +239 -0
- package/dist/base/evals/integration/test_narrative_redaction_failclosed.sh +120 -0
- package/dist/base/evals/integration/test_narrative_runtime_projection.sh +146 -0
- package/dist/base/evals/integration/test_narrative_source_contract.sh +228 -0
- package/dist/base/evals/integration/test_narrative_trust_isolation.sh +408 -0
- package/dist/base/evals/integration/test_plain_stop_messaging.sh +91 -0
- package/dist/base/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/base/evals/integration/test_session_resume_roundtrip.sh +228 -0
- package/dist/base/evals/integration/test_telemetry_action_class.sh +265 -0
- package/dist/base/evals/integration/test_telemetry_delegation.sh +291 -0
- package/dist/base/evals/integration/test_telemetry_sanitize_usage.sh +155 -0
- package/dist/base/evals/integration/test_telemetry_task_slug.sh +158 -0
- package/dist/base/evals/integration/test_telemetry_tool_outcome.sh +279 -0
- package/dist/base/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/base/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/base/evals/integration/test_workflow_sidecar_writer.sh +111 -2
- package/dist/base/evals/run.sh +12 -0
- package/dist/base/evals/static/test_library_exports.sh +5 -0
- package/dist/base/evals/static/test_package.sh +6 -0
- package/dist/base/evals/static/test_workflow_skills.sh +16 -0
- package/dist/base/install.sh +1 -1
- package/dist/base/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/base/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/base/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/base/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/base/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/base/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/base/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/base/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/base/kits/veritas-governance/docs/README.md +141 -10
- package/dist/base/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/base/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/base/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/base/kits/veritas-governance/kit.json +65 -0
- package/dist/base/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/base/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/base/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/base/schemas/grounded-execution-narrative.schema.json +292 -0
- package/dist/base/schemas/narrative-eval-result.schema.json +205 -0
- package/dist/base/schemas/narrative-runtime-projection.schema.json +134 -0
- package/dist/base/schemas/narrative-source-manifest.schema.json +294 -0
- package/dist/base/schemas/workflow-waves.schema.json +347 -0
- package/dist/base/scripts/check-hachure-boundary.mjs +81 -0
- package/dist/base/scripts/check-layer-boundary.mjs +98 -0
- package/dist/base/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/base/scripts/hooks/workflow-steering.js +160 -19
- package/dist/base/scripts/telemetry/economics-record.schema.json +1 -1
- package/dist/base/scripts/telemetry/economics-record.sh +47 -3
- package/dist/base/scripts/telemetry/lib/session.sh +3 -0
- package/dist/base/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/base/scripts/telemetry/telemetry.sh +480 -59
- package/dist/catalog.json +2 -0
- package/dist/claude-code/.claude/agents/tool-security-reviewer.md +2 -1
- package/dist/claude-code/.claude/skills/consult-standards/SKILL.md +73 -0
- package/dist/claude-code/.claude/skills/execute-plan/SKILL.md +4 -3
- package/dist/claude-code/.claude/skills/pull-work/SKILL.md +12 -0
- package/dist/claude-code/.claude/skills/review-work/SKILL.md +11 -0
- package/dist/claude-code/.claude/skills/standards-authoring/SKILL.md +87 -0
- package/dist/claude-code/build/generated/capability-declarations.json +177 -0
- package/dist/claude-code/build/package.json +1 -1
- package/dist/claude-code/build/src/builder-flow-runtime.d.ts +37 -0
- package/dist/claude-code/build/src/builder-flow-runtime.js +71 -1
- package/dist/claude-code/build/src/builder-gate-action-envelope.d.ts +58 -7
- package/dist/claude-code/build/src/builder-gate-action-envelope.js +160 -28
- package/dist/claude-code/build/src/builder-lifecycle-authority.d.ts +26 -0
- package/dist/claude-code/build/src/builder-lifecycle-authority.js +38 -0
- package/dist/claude-code/build/src/cli/builder-run.js +71 -2
- package/dist/claude-code/build/src/cli/init.js +35 -3
- package/dist/claude-code/build/src/cli/kit.js +95 -2
- package/dist/claude-code/build/src/cli/narrative-render.d.ts +95 -0
- package/dist/claude-code/build/src/cli/narrative-render.js +466 -0
- package/dist/claude-code/build/src/cli/narrative-sources.d.ts +2 -0
- package/dist/claude-code/build/src/cli/narrative-sources.js +282 -0
- package/dist/claude-code/build/src/cli/public-contracts.d.ts +257 -0
- package/dist/claude-code/build/src/cli/public-contracts.js +87 -0
- package/dist/claude-code/build/src/cli/pull-work-provider.js +7 -1
- package/dist/claude-code/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/claude-code/build/src/cli/workflow-sidecar.d.ts +28 -12
- package/dist/claude-code/build/src/cli/workflow-sidecar.js +599 -180
- package/dist/claude-code/build/src/cli/workflow.js +16 -2
- package/dist/claude-code/build/src/cli.js +8 -0
- package/dist/claude-code/build/src/continuation-driver.d.ts +12 -0
- package/dist/claude-code/build/src/continuation-driver.js +16 -2
- package/dist/claude-code/build/src/continuation-validation.js +324 -8
- package/dist/claude-code/build/src/flow-kit/action-metadata.js +21 -1
- package/dist/claude-code/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/claude-code/build/src/flow-kit/provision.js +99 -0
- package/dist/claude-code/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/claude-code/build/src/flow-kit/validate.js +214 -9
- package/dist/claude-code/build/src/index.d.ts +33 -2
- package/dist/claude-code/build/src/index.js +24 -0
- package/dist/claude-code/build/src/lib/capability-declarations.d.ts +83 -0
- package/dist/claude-code/build/src/lib/capability-declarations.js +209 -0
- package/dist/claude-code/build/src/narrative/envelope.d.ts +111 -0
- package/dist/claude-code/build/src/narrative/envelope.js +590 -0
- package/dist/claude-code/build/src/narrative/eval-result.d.ts +60 -0
- package/dist/claude-code/build/src/narrative/eval-result.js +158 -0
- package/dist/claude-code/build/src/narrative/grounding-validator.d.ts +104 -0
- package/dist/claude-code/build/src/narrative/grounding-validator.js +472 -0
- package/dist/claude-code/build/src/narrative/integrity.d.ts +17 -0
- package/dist/claude-code/build/src/narrative/integrity.js +39 -0
- package/dist/claude-code/build/src/narrative/intent-economics.d.ts +42 -0
- package/dist/claude-code/build/src/narrative/intent-economics.js +82 -0
- package/dist/claude-code/build/src/narrative/intent.d.ts +94 -0
- package/dist/claude-code/build/src/narrative/intent.js +132 -0
- package/dist/claude-code/build/src/narrative/policy-filter.d.ts +15 -0
- package/dist/claude-code/build/src/narrative/policy-filter.js +58 -0
- package/dist/claude-code/build/src/narrative/projection.d.ts +58 -0
- package/dist/claude-code/build/src/narrative/projection.js +502 -0
- package/dist/claude-code/build/src/narrative/readers.d.ts +84 -0
- package/dist/claude-code/build/src/narrative/readers.js +406 -0
- package/dist/claude-code/build/src/narrative/render.d.ts +3 -0
- package/dist/claude-code/build/src/narrative/render.js +83 -0
- package/dist/claude-code/build/src/narrative/resolver.d.ts +52 -0
- package/dist/claude-code/build/src/narrative/resolver.js +190 -0
- package/dist/claude-code/build/src/narrative/snapshot.d.ts +90 -0
- package/dist/claude-code/build/src/narrative/snapshot.js +325 -0
- package/dist/claude-code/build/src/narrative/source-ids.d.ts +121 -0
- package/dist/claude-code/build/src/narrative/source-ids.js +201 -0
- package/dist/claude-code/build/src/narrative/statements.d.ts +84 -0
- package/dist/claude-code/build/src/narrative/statements.js +347 -0
- package/dist/claude-code/build/src/narrative/turn-spine.d.ts +19 -0
- package/dist/claude-code/build/src/narrative/turn-spine.js +73 -0
- package/dist/claude-code/build/src/runtime-adapters.js +1 -1
- package/dist/claude-code/build/src/tools/build-universal-bundles.js +8 -0
- package/dist/claude-code/build/src/tools/generate-capability-matrix.d.ts +7 -0
- package/dist/claude-code/build/src/tools/generate-capability-matrix.js +207 -0
- package/dist/claude-code/build/src/tools/validate-source-tree.js +5 -1
- package/dist/claude-code/context/contracts/execution-contract.md +30 -1
- package/dist/claude-code/context/contracts/review-contract.md +4 -0
- package/dist/claude-code/context/contracts/trigger-guards.md +73 -0
- package/dist/claude-code/context/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/claude-code/context/scripts/hooks/workflow-steering.js +160 -19
- package/dist/claude-code/context/scripts/telemetry/lib/session.sh +3 -0
- package/dist/claude-code/context/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/claude-code/context/scripts/telemetry/telemetry.sh +480 -59
- package/dist/claude-code/context/settings/backlog-provider-settings.json +1 -1
- package/dist/claude-code/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/claude-code/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/claude-code/docs/adr/index.md +1 -0
- package/dist/claude-code/docs/architecture-engine-and-kits.md +17 -0
- package/dist/claude-code/docs/context-map.md +7 -0
- package/dist/claude-code/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/claude-code/docs/decisions/index.md +2 -0
- package/dist/claude-code/docs/decisions/writer-observed-execution.md +51 -0
- package/dist/claude-code/docs/developer-architecture.md +3 -3
- package/dist/claude-code/docs/fixture-ownership.md +5 -1
- package/dist/claude-code/docs/flow-kit-repository-contract.md +34 -3
- package/dist/claude-code/docs/kit-authoring-guide.md +1 -1
- package/dist/claude-code/docs/migrations.md +19 -4
- package/dist/claude-code/docs/public-workflow-cli.md +9 -0
- package/dist/claude-code/docs/spec/builder-flow-runtime.md +49 -8
- package/dist/claude-code/docs/spec/runtime-hook-surface.md +29 -1
- package/dist/claude-code/docs/specs/economics-record-contract.md +1 -1
- package/dist/claude-code/docs/specs/harness-capability-matrix.md +63 -21
- package/dist/claude-code/docs/veritas-integration.md +12 -0
- package/dist/claude-code/docs/workflow-usage-guide.md +4 -1
- package/dist/claude-code/evals/ci/run-baseline.sh +42 -0
- package/dist/claude-code/evals/fixtures/narrative-evals/README.md +62 -0
- package/dist/claude-code/evals/fixtures/narrative-evals/corpus.json +129 -0
- package/dist/claude-code/evals/fixtures/narrative-evals/scorer.mjs +522 -0
- package/dist/claude-code/evals/fixtures/narrative-grounding-validator/corpus.json +20 -0
- package/dist/claude-code/evals/fixtures/narrative-grounding-validator/prompt-injection-adversarial.txt +1 -0
- package/dist/claude-code/evals/fixtures/narrative-grounding-validator/prompt-injection-control.txt +1 -0
- package/dist/claude-code/evals/fixtures/narrative-grounding-validator/scorer.mjs +201 -0
- package/dist/claude-code/evals/fixtures/narrative-prose-renderer/corpus.json +15 -0
- package/dist/claude-code/evals/fixtures/narrative-prose-renderer/scorer.mjs +201 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/expected-capture-completeness.json +13 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/flow/runs/run-fixture/report.json +1 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/flow/runs/run-fixture/state.json +1 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/flow/runs/run-runtime/state.json +1 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/repo/created.txt +1 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/repo/fixture.txt +1 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/session/agents/agent-fixture/events.jsonl +2 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/session/agents/nested-worker/events.jsonl +1 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/session/trust.bundle +1 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/telemetry/full.jsonl +3 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/telemetry/runtime.jsonl +4 -0
- package/dist/claude-code/evals/fixtures/narrative-sources/transcripts/session.txt +1 -0
- package/dist/claude-code/evals/integration/test_capability_declarations.sh +183 -0
- package/dist/claude-code/evals/integration/test_economics_record.sh +42 -0
- package/dist/claude-code/evals/integration/test_fixture_retirement_audit.sh +2 -2
- package/dist/claude-code/evals/integration/test_gate_review_inquiry_records.sh +42 -35
- package/dist/claude-code/evals/integration/test_goal_fit_hook.sh +13 -5
- package/dist/claude-code/evals/integration/test_goal_fit_narrative_exclusion.sh +68 -0
- package/dist/claude-code/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/claude-code/evals/integration/test_narrative_evals.sh +174 -0
- package/dist/claude-code/evals/integration/test_narrative_grounded_envelope.sh +280 -0
- package/dist/claude-code/evals/integration/test_narrative_grounding_validator.sh +166 -0
- package/dist/claude-code/evals/integration/test_narrative_intent_annotation.sh +205 -0
- package/dist/claude-code/evals/integration/test_narrative_prose_renderer.sh +239 -0
- package/dist/claude-code/evals/integration/test_narrative_redaction_failclosed.sh +120 -0
- package/dist/claude-code/evals/integration/test_narrative_runtime_projection.sh +146 -0
- package/dist/claude-code/evals/integration/test_narrative_source_contract.sh +228 -0
- package/dist/claude-code/evals/integration/test_narrative_trust_isolation.sh +408 -0
- package/dist/claude-code/evals/integration/test_plain_stop_messaging.sh +91 -0
- package/dist/claude-code/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/claude-code/evals/integration/test_session_resume_roundtrip.sh +228 -0
- package/dist/claude-code/evals/integration/test_telemetry_action_class.sh +265 -0
- package/dist/claude-code/evals/integration/test_telemetry_delegation.sh +291 -0
- package/dist/claude-code/evals/integration/test_telemetry_sanitize_usage.sh +155 -0
- package/dist/claude-code/evals/integration/test_telemetry_task_slug.sh +158 -0
- package/dist/claude-code/evals/integration/test_telemetry_tool_outcome.sh +279 -0
- package/dist/claude-code/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/claude-code/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/claude-code/evals/integration/test_workflow_sidecar_writer.sh +111 -2
- package/dist/claude-code/evals/run.sh +12 -0
- package/dist/claude-code/evals/static/test_library_exports.sh +5 -0
- package/dist/claude-code/evals/static/test_package.sh +6 -0
- package/dist/claude-code/evals/static/test_workflow_skills.sh +16 -0
- package/dist/claude-code/install.sh +1 -1
- package/dist/claude-code/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/claude-code/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/claude-code/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/claude-code/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/claude-code/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/claude-code/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/claude-code/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/claude-code/kits/veritas-governance/docs/README.md +141 -10
- package/dist/claude-code/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/claude-code/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/claude-code/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/claude-code/kits/veritas-governance/kit.json +65 -0
- package/dist/claude-code/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/claude-code/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/claude-code/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/claude-code/schemas/grounded-execution-narrative.schema.json +292 -0
- package/dist/claude-code/schemas/narrative-eval-result.schema.json +205 -0
- package/dist/claude-code/schemas/narrative-runtime-projection.schema.json +134 -0
- package/dist/claude-code/schemas/narrative-source-manifest.schema.json +294 -0
- package/dist/claude-code/schemas/workflow-waves.schema.json +347 -0
- package/dist/claude-code/scripts/check-hachure-boundary.mjs +81 -0
- package/dist/claude-code/scripts/check-layer-boundary.mjs +98 -0
- package/dist/claude-code/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/claude-code/scripts/hooks/workflow-steering.js +160 -19
- package/dist/claude-code/scripts/telemetry/economics-record.schema.json +1 -1
- package/dist/claude-code/scripts/telemetry/economics-record.sh +47 -3
- package/dist/claude-code/scripts/telemetry/lib/session.sh +3 -0
- package/dist/claude-code/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/claude-code/scripts/telemetry/telemetry.sh +480 -59
- package/dist/codex/.agents/skills/builder-shape/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/consult-standards/SKILL.md +73 -0
- package/dist/codex/.agents/skills/deliver/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/design-probe/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/execute-plan/SKILL.md +4 -3
- package/dist/codex/.agents/skills/execute-plan/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/fix-bug/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/idea-to-backlog/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/plan-work/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/pull-work/SKILL.md +12 -0
- package/dist/codex/.agents/skills/pull-work/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/review-work/SKILL.md +11 -0
- package/dist/codex/.agents/skills/review-work/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/standards-authoring/SKILL.md +87 -0
- package/dist/codex/.agents/skills/tdd-workflow/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.agents/skills/verify-work/context/contracts/execution-contract.md +30 -1
- package/dist/codex/.codex/agents/tool-security-reviewer.toml +1 -1
- package/dist/codex/build/generated/capability-declarations.json +177 -0
- package/dist/codex/build/package.json +1 -1
- package/dist/codex/build/src/builder-flow-runtime.d.ts +37 -0
- package/dist/codex/build/src/builder-flow-runtime.js +71 -1
- package/dist/codex/build/src/builder-gate-action-envelope.d.ts +58 -7
- package/dist/codex/build/src/builder-gate-action-envelope.js +160 -28
- package/dist/codex/build/src/builder-lifecycle-authority.d.ts +26 -0
- package/dist/codex/build/src/builder-lifecycle-authority.js +38 -0
- package/dist/codex/build/src/cli/builder-run.js +71 -2
- package/dist/codex/build/src/cli/init.js +35 -3
- package/dist/codex/build/src/cli/kit.js +95 -2
- package/dist/codex/build/src/cli/narrative-render.d.ts +95 -0
- package/dist/codex/build/src/cli/narrative-render.js +466 -0
- package/dist/codex/build/src/cli/narrative-sources.d.ts +2 -0
- package/dist/codex/build/src/cli/narrative-sources.js +282 -0
- package/dist/codex/build/src/cli/public-contracts.d.ts +257 -0
- package/dist/codex/build/src/cli/public-contracts.js +87 -0
- package/dist/codex/build/src/cli/pull-work-provider.js +7 -1
- package/dist/codex/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/codex/build/src/cli/workflow-sidecar.d.ts +28 -12
- package/dist/codex/build/src/cli/workflow-sidecar.js +599 -180
- package/dist/codex/build/src/cli/workflow.js +16 -2
- package/dist/codex/build/src/cli.js +8 -0
- package/dist/codex/build/src/continuation-driver.d.ts +12 -0
- package/dist/codex/build/src/continuation-driver.js +16 -2
- package/dist/codex/build/src/continuation-validation.js +324 -8
- package/dist/codex/build/src/flow-kit/action-metadata.js +21 -1
- package/dist/codex/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/codex/build/src/flow-kit/provision.js +99 -0
- package/dist/codex/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/codex/build/src/flow-kit/validate.js +214 -9
- package/dist/codex/build/src/index.d.ts +33 -2
- package/dist/codex/build/src/index.js +24 -0
- package/dist/codex/build/src/lib/capability-declarations.d.ts +83 -0
- package/dist/codex/build/src/lib/capability-declarations.js +209 -0
- package/dist/codex/build/src/narrative/envelope.d.ts +111 -0
- package/dist/codex/build/src/narrative/envelope.js +590 -0
- package/dist/codex/build/src/narrative/eval-result.d.ts +60 -0
- package/dist/codex/build/src/narrative/eval-result.js +158 -0
- package/dist/codex/build/src/narrative/grounding-validator.d.ts +104 -0
- package/dist/codex/build/src/narrative/grounding-validator.js +472 -0
- package/dist/codex/build/src/narrative/integrity.d.ts +17 -0
- package/dist/codex/build/src/narrative/integrity.js +39 -0
- package/dist/codex/build/src/narrative/intent-economics.d.ts +42 -0
- package/dist/codex/build/src/narrative/intent-economics.js +82 -0
- package/dist/codex/build/src/narrative/intent.d.ts +94 -0
- package/dist/codex/build/src/narrative/intent.js +132 -0
- package/dist/codex/build/src/narrative/policy-filter.d.ts +15 -0
- package/dist/codex/build/src/narrative/policy-filter.js +58 -0
- package/dist/codex/build/src/narrative/projection.d.ts +58 -0
- package/dist/codex/build/src/narrative/projection.js +502 -0
- package/dist/codex/build/src/narrative/readers.d.ts +84 -0
- package/dist/codex/build/src/narrative/readers.js +406 -0
- package/dist/codex/build/src/narrative/render.d.ts +3 -0
- package/dist/codex/build/src/narrative/render.js +83 -0
- package/dist/codex/build/src/narrative/resolver.d.ts +52 -0
- package/dist/codex/build/src/narrative/resolver.js +190 -0
- package/dist/codex/build/src/narrative/snapshot.d.ts +90 -0
- package/dist/codex/build/src/narrative/snapshot.js +325 -0
- package/dist/codex/build/src/narrative/source-ids.d.ts +121 -0
- package/dist/codex/build/src/narrative/source-ids.js +201 -0
- package/dist/codex/build/src/narrative/statements.d.ts +84 -0
- package/dist/codex/build/src/narrative/statements.js +347 -0
- package/dist/codex/build/src/narrative/turn-spine.d.ts +19 -0
- package/dist/codex/build/src/narrative/turn-spine.js +73 -0
- package/dist/codex/build/src/runtime-adapters.js +1 -1
- package/dist/codex/build/src/tools/build-universal-bundles.js +8 -0
- package/dist/codex/build/src/tools/generate-capability-matrix.d.ts +7 -0
- package/dist/codex/build/src/tools/generate-capability-matrix.js +207 -0
- package/dist/codex/build/src/tools/validate-source-tree.js +5 -1
- package/dist/codex/context/contracts/execution-contract.md +30 -1
- package/dist/codex/context/contracts/review-contract.md +4 -0
- package/dist/codex/context/contracts/trigger-guards.md +73 -0
- package/dist/codex/context/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/codex/context/scripts/hooks/workflow-steering.js +160 -19
- package/dist/codex/context/scripts/telemetry/lib/session.sh +3 -0
- package/dist/codex/context/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/codex/context/scripts/telemetry/telemetry.sh +480 -59
- package/dist/codex/context/settings/backlog-provider-settings.json +1 -1
- package/dist/codex/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/codex/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/codex/docs/adr/index.md +1 -0
- package/dist/codex/docs/architecture-engine-and-kits.md +17 -0
- package/dist/codex/docs/context-map.md +7 -0
- package/dist/codex/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/codex/docs/decisions/index.md +2 -0
- package/dist/codex/docs/decisions/writer-observed-execution.md +51 -0
- package/dist/codex/docs/developer-architecture.md +3 -3
- package/dist/codex/docs/fixture-ownership.md +5 -1
- package/dist/codex/docs/flow-kit-repository-contract.md +34 -3
- package/dist/codex/docs/kit-authoring-guide.md +1 -1
- package/dist/codex/docs/migrations.md +19 -4
- package/dist/codex/docs/public-workflow-cli.md +9 -0
- package/dist/codex/docs/spec/builder-flow-runtime.md +49 -8
- package/dist/codex/docs/spec/runtime-hook-surface.md +29 -1
- package/dist/codex/docs/specs/economics-record-contract.md +1 -1
- package/dist/codex/docs/specs/harness-capability-matrix.md +63 -21
- package/dist/codex/docs/veritas-integration.md +12 -0
- package/dist/codex/docs/workflow-usage-guide.md +4 -1
- package/dist/codex/evals/ci/run-baseline.sh +42 -0
- package/dist/codex/evals/fixtures/narrative-evals/README.md +62 -0
- package/dist/codex/evals/fixtures/narrative-evals/corpus.json +129 -0
- package/dist/codex/evals/fixtures/narrative-evals/scorer.mjs +522 -0
- package/dist/codex/evals/fixtures/narrative-grounding-validator/corpus.json +20 -0
- package/dist/codex/evals/fixtures/narrative-grounding-validator/prompt-injection-adversarial.txt +1 -0
- package/dist/codex/evals/fixtures/narrative-grounding-validator/prompt-injection-control.txt +1 -0
- package/dist/codex/evals/fixtures/narrative-grounding-validator/scorer.mjs +201 -0
- package/dist/codex/evals/fixtures/narrative-prose-renderer/corpus.json +15 -0
- package/dist/codex/evals/fixtures/narrative-prose-renderer/scorer.mjs +201 -0
- package/dist/codex/evals/fixtures/narrative-sources/expected-capture-completeness.json +13 -0
- package/dist/codex/evals/fixtures/narrative-sources/flow/runs/run-fixture/report.json +1 -0
- package/dist/codex/evals/fixtures/narrative-sources/flow/runs/run-fixture/state.json +1 -0
- package/dist/codex/evals/fixtures/narrative-sources/flow/runs/run-runtime/state.json +1 -0
- package/dist/codex/evals/fixtures/narrative-sources/repo/created.txt +1 -0
- package/dist/codex/evals/fixtures/narrative-sources/repo/fixture.txt +1 -0
- package/dist/codex/evals/fixtures/narrative-sources/session/agents/agent-fixture/events.jsonl +2 -0
- package/dist/codex/evals/fixtures/narrative-sources/session/agents/nested-worker/events.jsonl +1 -0
- package/dist/codex/evals/fixtures/narrative-sources/session/trust.bundle +1 -0
- package/dist/codex/evals/fixtures/narrative-sources/telemetry/full.jsonl +3 -0
- package/dist/codex/evals/fixtures/narrative-sources/telemetry/runtime.jsonl +4 -0
- package/dist/codex/evals/fixtures/narrative-sources/transcripts/session.txt +1 -0
- package/dist/codex/evals/integration/test_capability_declarations.sh +183 -0
- package/dist/codex/evals/integration/test_economics_record.sh +42 -0
- package/dist/codex/evals/integration/test_fixture_retirement_audit.sh +2 -2
- package/dist/codex/evals/integration/test_gate_review_inquiry_records.sh +42 -35
- package/dist/codex/evals/integration/test_goal_fit_hook.sh +13 -5
- package/dist/codex/evals/integration/test_goal_fit_narrative_exclusion.sh +68 -0
- package/dist/codex/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/codex/evals/integration/test_narrative_evals.sh +174 -0
- package/dist/codex/evals/integration/test_narrative_grounded_envelope.sh +280 -0
- package/dist/codex/evals/integration/test_narrative_grounding_validator.sh +166 -0
- package/dist/codex/evals/integration/test_narrative_intent_annotation.sh +205 -0
- package/dist/codex/evals/integration/test_narrative_prose_renderer.sh +239 -0
- package/dist/codex/evals/integration/test_narrative_redaction_failclosed.sh +120 -0
- package/dist/codex/evals/integration/test_narrative_runtime_projection.sh +146 -0
- package/dist/codex/evals/integration/test_narrative_source_contract.sh +228 -0
- package/dist/codex/evals/integration/test_narrative_trust_isolation.sh +408 -0
- package/dist/codex/evals/integration/test_plain_stop_messaging.sh +91 -0
- package/dist/codex/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/codex/evals/integration/test_session_resume_roundtrip.sh +228 -0
- package/dist/codex/evals/integration/test_telemetry_action_class.sh +265 -0
- package/dist/codex/evals/integration/test_telemetry_delegation.sh +291 -0
- package/dist/codex/evals/integration/test_telemetry_sanitize_usage.sh +155 -0
- package/dist/codex/evals/integration/test_telemetry_task_slug.sh +158 -0
- package/dist/codex/evals/integration/test_telemetry_tool_outcome.sh +279 -0
- package/dist/codex/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/codex/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/codex/evals/integration/test_workflow_sidecar_writer.sh +111 -2
- package/dist/codex/evals/run.sh +12 -0
- package/dist/codex/evals/static/test_library_exports.sh +5 -0
- package/dist/codex/evals/static/test_package.sh +6 -0
- package/dist/codex/evals/static/test_workflow_skills.sh +16 -0
- package/dist/codex/install.sh +1 -1
- package/dist/codex/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/codex/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/codex/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/codex/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/codex/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/codex/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/codex/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/codex/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/codex/kits/veritas-governance/docs/README.md +141 -10
- package/dist/codex/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/codex/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/codex/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/codex/kits/veritas-governance/kit.json +65 -0
- package/dist/codex/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/codex/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/codex/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/codex/schemas/grounded-execution-narrative.schema.json +292 -0
- package/dist/codex/schemas/narrative-eval-result.schema.json +205 -0
- package/dist/codex/schemas/narrative-runtime-projection.schema.json +134 -0
- package/dist/codex/schemas/narrative-source-manifest.schema.json +294 -0
- package/dist/codex/schemas/workflow-waves.schema.json +347 -0
- package/dist/codex/scripts/check-hachure-boundary.mjs +81 -0
- package/dist/codex/scripts/check-layer-boundary.mjs +98 -0
- package/dist/codex/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/codex/scripts/hooks/workflow-steering.js +160 -19
- package/dist/codex/scripts/telemetry/economics-record.schema.json +1 -1
- package/dist/codex/scripts/telemetry/economics-record.sh +47 -3
- package/dist/codex/scripts/telemetry/lib/session.sh +3 -0
- package/dist/codex/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/codex/scripts/telemetry/telemetry.sh +480 -59
- package/dist/kiro/agents/tool-security-reviewer.json +1 -1
- package/dist/kiro/build/generated/capability-declarations.json +177 -0
- package/dist/kiro/build/package.json +1 -1
- package/dist/kiro/build/src/builder-flow-runtime.d.ts +37 -0
- package/dist/kiro/build/src/builder-flow-runtime.js +71 -1
- package/dist/kiro/build/src/builder-gate-action-envelope.d.ts +58 -7
- package/dist/kiro/build/src/builder-gate-action-envelope.js +160 -28
- package/dist/kiro/build/src/builder-lifecycle-authority.d.ts +26 -0
- package/dist/kiro/build/src/builder-lifecycle-authority.js +38 -0
- package/dist/kiro/build/src/cli/builder-run.js +71 -2
- package/dist/kiro/build/src/cli/init.js +35 -3
- package/dist/kiro/build/src/cli/kit.js +95 -2
- package/dist/kiro/build/src/cli/narrative-render.d.ts +95 -0
- package/dist/kiro/build/src/cli/narrative-render.js +466 -0
- package/dist/kiro/build/src/cli/narrative-sources.d.ts +2 -0
- package/dist/kiro/build/src/cli/narrative-sources.js +282 -0
- package/dist/kiro/build/src/cli/public-contracts.d.ts +257 -0
- package/dist/kiro/build/src/cli/public-contracts.js +87 -0
- package/dist/kiro/build/src/cli/pull-work-provider.js +7 -1
- package/dist/kiro/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/kiro/build/src/cli/workflow-sidecar.d.ts +28 -12
- package/dist/kiro/build/src/cli/workflow-sidecar.js +599 -180
- package/dist/kiro/build/src/cli/workflow.js +16 -2
- package/dist/kiro/build/src/cli.js +8 -0
- package/dist/kiro/build/src/continuation-driver.d.ts +12 -0
- package/dist/kiro/build/src/continuation-driver.js +16 -2
- package/dist/kiro/build/src/continuation-validation.js +324 -8
- package/dist/kiro/build/src/flow-kit/action-metadata.js +21 -1
- package/dist/kiro/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/kiro/build/src/flow-kit/provision.js +99 -0
- package/dist/kiro/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/kiro/build/src/flow-kit/validate.js +214 -9
- package/dist/kiro/build/src/index.d.ts +33 -2
- package/dist/kiro/build/src/index.js +24 -0
- package/dist/kiro/build/src/lib/capability-declarations.d.ts +83 -0
- package/dist/kiro/build/src/lib/capability-declarations.js +209 -0
- package/dist/kiro/build/src/narrative/envelope.d.ts +111 -0
- package/dist/kiro/build/src/narrative/envelope.js +590 -0
- package/dist/kiro/build/src/narrative/eval-result.d.ts +60 -0
- package/dist/kiro/build/src/narrative/eval-result.js +158 -0
- package/dist/kiro/build/src/narrative/grounding-validator.d.ts +104 -0
- package/dist/kiro/build/src/narrative/grounding-validator.js +472 -0
- package/dist/kiro/build/src/narrative/integrity.d.ts +17 -0
- package/dist/kiro/build/src/narrative/integrity.js +39 -0
- package/dist/kiro/build/src/narrative/intent-economics.d.ts +42 -0
- package/dist/kiro/build/src/narrative/intent-economics.js +82 -0
- package/dist/kiro/build/src/narrative/intent.d.ts +94 -0
- package/dist/kiro/build/src/narrative/intent.js +132 -0
- package/dist/kiro/build/src/narrative/policy-filter.d.ts +15 -0
- package/dist/kiro/build/src/narrative/policy-filter.js +58 -0
- package/dist/kiro/build/src/narrative/projection.d.ts +58 -0
- package/dist/kiro/build/src/narrative/projection.js +502 -0
- package/dist/kiro/build/src/narrative/readers.d.ts +84 -0
- package/dist/kiro/build/src/narrative/readers.js +406 -0
- package/dist/kiro/build/src/narrative/render.d.ts +3 -0
- package/dist/kiro/build/src/narrative/render.js +83 -0
- package/dist/kiro/build/src/narrative/resolver.d.ts +52 -0
- package/dist/kiro/build/src/narrative/resolver.js +190 -0
- package/dist/kiro/build/src/narrative/snapshot.d.ts +90 -0
- package/dist/kiro/build/src/narrative/snapshot.js +325 -0
- package/dist/kiro/build/src/narrative/source-ids.d.ts +121 -0
- package/dist/kiro/build/src/narrative/source-ids.js +201 -0
- package/dist/kiro/build/src/narrative/statements.d.ts +84 -0
- package/dist/kiro/build/src/narrative/statements.js +347 -0
- package/dist/kiro/build/src/narrative/turn-spine.d.ts +19 -0
- package/dist/kiro/build/src/narrative/turn-spine.js +73 -0
- package/dist/kiro/build/src/runtime-adapters.js +1 -1
- package/dist/kiro/build/src/tools/build-universal-bundles.js +8 -0
- package/dist/kiro/build/src/tools/generate-capability-matrix.d.ts +7 -0
- package/dist/kiro/build/src/tools/generate-capability-matrix.js +207 -0
- package/dist/kiro/build/src/tools/validate-source-tree.js +5 -1
- package/dist/kiro/context/contracts/execution-contract.md +30 -1
- package/dist/kiro/context/contracts/review-contract.md +4 -0
- package/dist/kiro/context/contracts/trigger-guards.md +73 -0
- package/dist/kiro/context/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/kiro/context/scripts/hooks/workflow-steering.js +160 -19
- package/dist/kiro/context/scripts/telemetry/lib/session.sh +3 -0
- package/dist/kiro/context/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/kiro/context/scripts/telemetry/telemetry.sh +480 -59
- package/dist/kiro/context/settings/backlog-provider-settings.json +1 -1
- package/dist/kiro/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/kiro/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/kiro/docs/adr/index.md +1 -0
- package/dist/kiro/docs/architecture-engine-and-kits.md +17 -0
- package/dist/kiro/docs/context-map.md +7 -0
- package/dist/kiro/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/kiro/docs/decisions/index.md +2 -0
- package/dist/kiro/docs/decisions/writer-observed-execution.md +51 -0
- package/dist/kiro/docs/developer-architecture.md +3 -3
- package/dist/kiro/docs/fixture-ownership.md +5 -1
- package/dist/kiro/docs/flow-kit-repository-contract.md +34 -3
- package/dist/kiro/docs/kit-authoring-guide.md +1 -1
- package/dist/kiro/docs/migrations.md +19 -4
- package/dist/kiro/docs/public-workflow-cli.md +9 -0
- package/dist/kiro/docs/spec/builder-flow-runtime.md +49 -8
- package/dist/kiro/docs/spec/runtime-hook-surface.md +29 -1
- package/dist/kiro/docs/specs/economics-record-contract.md +1 -1
- package/dist/kiro/docs/specs/harness-capability-matrix.md +63 -21
- package/dist/kiro/docs/veritas-integration.md +12 -0
- package/dist/kiro/docs/workflow-usage-guide.md +4 -1
- package/dist/kiro/evals/ci/run-baseline.sh +42 -0
- package/dist/kiro/evals/fixtures/narrative-evals/README.md +62 -0
- package/dist/kiro/evals/fixtures/narrative-evals/corpus.json +129 -0
- package/dist/kiro/evals/fixtures/narrative-evals/scorer.mjs +522 -0
- package/dist/kiro/evals/fixtures/narrative-grounding-validator/corpus.json +20 -0
- package/dist/kiro/evals/fixtures/narrative-grounding-validator/prompt-injection-adversarial.txt +1 -0
- package/dist/kiro/evals/fixtures/narrative-grounding-validator/prompt-injection-control.txt +1 -0
- package/dist/kiro/evals/fixtures/narrative-grounding-validator/scorer.mjs +201 -0
- package/dist/kiro/evals/fixtures/narrative-prose-renderer/corpus.json +15 -0
- package/dist/kiro/evals/fixtures/narrative-prose-renderer/scorer.mjs +201 -0
- package/dist/kiro/evals/fixtures/narrative-sources/expected-capture-completeness.json +13 -0
- package/dist/kiro/evals/fixtures/narrative-sources/flow/runs/run-fixture/report.json +1 -0
- package/dist/kiro/evals/fixtures/narrative-sources/flow/runs/run-fixture/state.json +1 -0
- package/dist/kiro/evals/fixtures/narrative-sources/flow/runs/run-runtime/state.json +1 -0
- package/dist/kiro/evals/fixtures/narrative-sources/repo/created.txt +1 -0
- package/dist/kiro/evals/fixtures/narrative-sources/repo/fixture.txt +1 -0
- package/dist/kiro/evals/fixtures/narrative-sources/session/agents/agent-fixture/events.jsonl +2 -0
- package/dist/kiro/evals/fixtures/narrative-sources/session/agents/nested-worker/events.jsonl +1 -0
- package/dist/kiro/evals/fixtures/narrative-sources/session/trust.bundle +1 -0
- package/dist/kiro/evals/fixtures/narrative-sources/telemetry/full.jsonl +3 -0
- package/dist/kiro/evals/fixtures/narrative-sources/telemetry/runtime.jsonl +4 -0
- package/dist/kiro/evals/fixtures/narrative-sources/transcripts/session.txt +1 -0
- package/dist/kiro/evals/integration/test_capability_declarations.sh +183 -0
- package/dist/kiro/evals/integration/test_economics_record.sh +42 -0
- package/dist/kiro/evals/integration/test_fixture_retirement_audit.sh +2 -2
- package/dist/kiro/evals/integration/test_gate_review_inquiry_records.sh +42 -35
- package/dist/kiro/evals/integration/test_goal_fit_hook.sh +13 -5
- package/dist/kiro/evals/integration/test_goal_fit_narrative_exclusion.sh +68 -0
- package/dist/kiro/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/kiro/evals/integration/test_narrative_evals.sh +174 -0
- package/dist/kiro/evals/integration/test_narrative_grounded_envelope.sh +280 -0
- package/dist/kiro/evals/integration/test_narrative_grounding_validator.sh +166 -0
- package/dist/kiro/evals/integration/test_narrative_intent_annotation.sh +205 -0
- package/dist/kiro/evals/integration/test_narrative_prose_renderer.sh +239 -0
- package/dist/kiro/evals/integration/test_narrative_redaction_failclosed.sh +120 -0
- package/dist/kiro/evals/integration/test_narrative_runtime_projection.sh +146 -0
- package/dist/kiro/evals/integration/test_narrative_source_contract.sh +228 -0
- package/dist/kiro/evals/integration/test_narrative_trust_isolation.sh +408 -0
- package/dist/kiro/evals/integration/test_plain_stop_messaging.sh +91 -0
- package/dist/kiro/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/kiro/evals/integration/test_session_resume_roundtrip.sh +228 -0
- package/dist/kiro/evals/integration/test_telemetry_action_class.sh +265 -0
- package/dist/kiro/evals/integration/test_telemetry_delegation.sh +291 -0
- package/dist/kiro/evals/integration/test_telemetry_sanitize_usage.sh +155 -0
- package/dist/kiro/evals/integration/test_telemetry_task_slug.sh +158 -0
- package/dist/kiro/evals/integration/test_telemetry_tool_outcome.sh +279 -0
- package/dist/kiro/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/kiro/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/kiro/evals/integration/test_workflow_sidecar_writer.sh +111 -2
- package/dist/kiro/evals/run.sh +12 -0
- package/dist/kiro/evals/static/test_library_exports.sh +5 -0
- package/dist/kiro/evals/static/test_package.sh +6 -0
- package/dist/kiro/evals/static/test_workflow_skills.sh +16 -0
- package/dist/kiro/install.sh +1 -1
- package/dist/kiro/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/kiro/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/kiro/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/kiro/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/kiro/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/kiro/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/kiro/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/kiro/kits/veritas-governance/docs/README.md +141 -10
- package/dist/kiro/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/kiro/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/kiro/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/kiro/kits/veritas-governance/kit.json +65 -0
- package/dist/kiro/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/kiro/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/kiro/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/kiro/schemas/grounded-execution-narrative.schema.json +292 -0
- package/dist/kiro/schemas/narrative-eval-result.schema.json +205 -0
- package/dist/kiro/schemas/narrative-runtime-projection.schema.json +134 -0
- package/dist/kiro/schemas/narrative-source-manifest.schema.json +294 -0
- package/dist/kiro/schemas/workflow-waves.schema.json +347 -0
- package/dist/kiro/scripts/check-hachure-boundary.mjs +81 -0
- package/dist/kiro/scripts/check-layer-boundary.mjs +98 -0
- package/dist/kiro/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/kiro/scripts/hooks/workflow-steering.js +160 -19
- package/dist/kiro/scripts/telemetry/economics-record.schema.json +1 -1
- package/dist/kiro/scripts/telemetry/economics-record.sh +47 -3
- package/dist/kiro/scripts/telemetry/lib/session.sh +3 -0
- package/dist/kiro/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/kiro/scripts/telemetry/telemetry.sh +480 -59
- package/dist/opencode/.opencode/agents/tool-security-reviewer.md +2 -1
- package/dist/opencode/.opencode/skills/consult-standards/SKILL.md +73 -0
- package/dist/opencode/.opencode/skills/execute-plan/SKILL.md +4 -3
- package/dist/opencode/.opencode/skills/pull-work/SKILL.md +12 -0
- package/dist/opencode/.opencode/skills/review-work/SKILL.md +11 -0
- package/dist/opencode/.opencode/skills/standards-authoring/SKILL.md +87 -0
- package/dist/opencode/build/generated/capability-declarations.json +177 -0
- package/dist/opencode/build/package.json +1 -1
- package/dist/opencode/build/src/builder-flow-runtime.d.ts +37 -0
- package/dist/opencode/build/src/builder-flow-runtime.js +71 -1
- package/dist/opencode/build/src/builder-gate-action-envelope.d.ts +58 -7
- package/dist/opencode/build/src/builder-gate-action-envelope.js +160 -28
- package/dist/opencode/build/src/builder-lifecycle-authority.d.ts +26 -0
- package/dist/opencode/build/src/builder-lifecycle-authority.js +38 -0
- package/dist/opencode/build/src/cli/builder-run.js +71 -2
- package/dist/opencode/build/src/cli/init.js +35 -3
- package/dist/opencode/build/src/cli/kit.js +95 -2
- package/dist/opencode/build/src/cli/narrative-render.d.ts +95 -0
- package/dist/opencode/build/src/cli/narrative-render.js +466 -0
- package/dist/opencode/build/src/cli/narrative-sources.d.ts +2 -0
- package/dist/opencode/build/src/cli/narrative-sources.js +282 -0
- package/dist/opencode/build/src/cli/public-contracts.d.ts +257 -0
- package/dist/opencode/build/src/cli/public-contracts.js +87 -0
- package/dist/opencode/build/src/cli/pull-work-provider.js +7 -1
- package/dist/opencode/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/opencode/build/src/cli/workflow-sidecar.d.ts +28 -12
- package/dist/opencode/build/src/cli/workflow-sidecar.js +599 -180
- package/dist/opencode/build/src/cli/workflow.js +16 -2
- package/dist/opencode/build/src/cli.js +8 -0
- package/dist/opencode/build/src/continuation-driver.d.ts +12 -0
- package/dist/opencode/build/src/continuation-driver.js +16 -2
- package/dist/opencode/build/src/continuation-validation.js +324 -8
- package/dist/opencode/build/src/flow-kit/action-metadata.js +21 -1
- package/dist/opencode/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/opencode/build/src/flow-kit/provision.js +99 -0
- package/dist/opencode/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/opencode/build/src/flow-kit/validate.js +214 -9
- package/dist/opencode/build/src/index.d.ts +33 -2
- package/dist/opencode/build/src/index.js +24 -0
- package/dist/opencode/build/src/lib/capability-declarations.d.ts +83 -0
- package/dist/opencode/build/src/lib/capability-declarations.js +209 -0
- package/dist/opencode/build/src/narrative/envelope.d.ts +111 -0
- package/dist/opencode/build/src/narrative/envelope.js +590 -0
- package/dist/opencode/build/src/narrative/eval-result.d.ts +60 -0
- package/dist/opencode/build/src/narrative/eval-result.js +158 -0
- package/dist/opencode/build/src/narrative/grounding-validator.d.ts +104 -0
- package/dist/opencode/build/src/narrative/grounding-validator.js +472 -0
- package/dist/opencode/build/src/narrative/integrity.d.ts +17 -0
- package/dist/opencode/build/src/narrative/integrity.js +39 -0
- package/dist/opencode/build/src/narrative/intent-economics.d.ts +42 -0
- package/dist/opencode/build/src/narrative/intent-economics.js +82 -0
- package/dist/opencode/build/src/narrative/intent.d.ts +94 -0
- package/dist/opencode/build/src/narrative/intent.js +132 -0
- package/dist/opencode/build/src/narrative/policy-filter.d.ts +15 -0
- package/dist/opencode/build/src/narrative/policy-filter.js +58 -0
- package/dist/opencode/build/src/narrative/projection.d.ts +58 -0
- package/dist/opencode/build/src/narrative/projection.js +502 -0
- package/dist/opencode/build/src/narrative/readers.d.ts +84 -0
- package/dist/opencode/build/src/narrative/readers.js +406 -0
- package/dist/opencode/build/src/narrative/render.d.ts +3 -0
- package/dist/opencode/build/src/narrative/render.js +83 -0
- package/dist/opencode/build/src/narrative/resolver.d.ts +52 -0
- package/dist/opencode/build/src/narrative/resolver.js +190 -0
- package/dist/opencode/build/src/narrative/snapshot.d.ts +90 -0
- package/dist/opencode/build/src/narrative/snapshot.js +325 -0
- package/dist/opencode/build/src/narrative/source-ids.d.ts +121 -0
- package/dist/opencode/build/src/narrative/source-ids.js +201 -0
- package/dist/opencode/build/src/narrative/statements.d.ts +84 -0
- package/dist/opencode/build/src/narrative/statements.js +347 -0
- package/dist/opencode/build/src/narrative/turn-spine.d.ts +19 -0
- package/dist/opencode/build/src/narrative/turn-spine.js +73 -0
- package/dist/opencode/build/src/runtime-adapters.js +1 -1
- package/dist/opencode/build/src/tools/build-universal-bundles.js +8 -0
- package/dist/opencode/build/src/tools/generate-capability-matrix.d.ts +7 -0
- package/dist/opencode/build/src/tools/generate-capability-matrix.js +207 -0
- package/dist/opencode/build/src/tools/validate-source-tree.js +5 -1
- package/dist/opencode/context/contracts/execution-contract.md +30 -1
- package/dist/opencode/context/contracts/review-contract.md +4 -0
- package/dist/opencode/context/contracts/trigger-guards.md +73 -0
- package/dist/opencode/context/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/opencode/context/scripts/hooks/workflow-steering.js +160 -19
- package/dist/opencode/context/scripts/telemetry/lib/session.sh +3 -0
- package/dist/opencode/context/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/opencode/context/scripts/telemetry/telemetry.sh +480 -59
- package/dist/opencode/context/settings/backlog-provider-settings.json +1 -1
- package/dist/opencode/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/opencode/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/opencode/docs/adr/index.md +1 -0
- package/dist/opencode/docs/architecture-engine-and-kits.md +17 -0
- package/dist/opencode/docs/context-map.md +7 -0
- package/dist/opencode/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/opencode/docs/decisions/index.md +2 -0
- package/dist/opencode/docs/decisions/writer-observed-execution.md +51 -0
- package/dist/opencode/docs/developer-architecture.md +3 -3
- package/dist/opencode/docs/fixture-ownership.md +5 -1
- package/dist/opencode/docs/flow-kit-repository-contract.md +34 -3
- package/dist/opencode/docs/kit-authoring-guide.md +1 -1
- package/dist/opencode/docs/migrations.md +19 -4
- package/dist/opencode/docs/public-workflow-cli.md +9 -0
- package/dist/opencode/docs/spec/builder-flow-runtime.md +49 -8
- package/dist/opencode/docs/spec/runtime-hook-surface.md +29 -1
- package/dist/opencode/docs/specs/economics-record-contract.md +1 -1
- package/dist/opencode/docs/specs/harness-capability-matrix.md +63 -21
- package/dist/opencode/docs/veritas-integration.md +12 -0
- package/dist/opencode/docs/workflow-usage-guide.md +4 -1
- package/dist/opencode/evals/ci/run-baseline.sh +42 -0
- package/dist/opencode/evals/fixtures/narrative-evals/README.md +62 -0
- package/dist/opencode/evals/fixtures/narrative-evals/corpus.json +129 -0
- package/dist/opencode/evals/fixtures/narrative-evals/scorer.mjs +522 -0
- package/dist/opencode/evals/fixtures/narrative-grounding-validator/corpus.json +20 -0
- package/dist/opencode/evals/fixtures/narrative-grounding-validator/prompt-injection-adversarial.txt +1 -0
- package/dist/opencode/evals/fixtures/narrative-grounding-validator/prompt-injection-control.txt +1 -0
- package/dist/opencode/evals/fixtures/narrative-grounding-validator/scorer.mjs +201 -0
- package/dist/opencode/evals/fixtures/narrative-prose-renderer/corpus.json +15 -0
- package/dist/opencode/evals/fixtures/narrative-prose-renderer/scorer.mjs +201 -0
- package/dist/opencode/evals/fixtures/narrative-sources/expected-capture-completeness.json +13 -0
- package/dist/opencode/evals/fixtures/narrative-sources/flow/runs/run-fixture/report.json +1 -0
- package/dist/opencode/evals/fixtures/narrative-sources/flow/runs/run-fixture/state.json +1 -0
- package/dist/opencode/evals/fixtures/narrative-sources/flow/runs/run-runtime/state.json +1 -0
- package/dist/opencode/evals/fixtures/narrative-sources/repo/created.txt +1 -0
- package/dist/opencode/evals/fixtures/narrative-sources/repo/fixture.txt +1 -0
- package/dist/opencode/evals/fixtures/narrative-sources/session/agents/agent-fixture/events.jsonl +2 -0
- package/dist/opencode/evals/fixtures/narrative-sources/session/agents/nested-worker/events.jsonl +1 -0
- package/dist/opencode/evals/fixtures/narrative-sources/session/trust.bundle +1 -0
- package/dist/opencode/evals/fixtures/narrative-sources/telemetry/full.jsonl +3 -0
- package/dist/opencode/evals/fixtures/narrative-sources/telemetry/runtime.jsonl +4 -0
- package/dist/opencode/evals/fixtures/narrative-sources/transcripts/session.txt +1 -0
- package/dist/opencode/evals/integration/test_capability_declarations.sh +183 -0
- package/dist/opencode/evals/integration/test_economics_record.sh +42 -0
- package/dist/opencode/evals/integration/test_fixture_retirement_audit.sh +2 -2
- package/dist/opencode/evals/integration/test_gate_review_inquiry_records.sh +42 -35
- package/dist/opencode/evals/integration/test_goal_fit_hook.sh +13 -5
- package/dist/opencode/evals/integration/test_goal_fit_narrative_exclusion.sh +68 -0
- package/dist/opencode/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/opencode/evals/integration/test_narrative_evals.sh +174 -0
- package/dist/opencode/evals/integration/test_narrative_grounded_envelope.sh +280 -0
- package/dist/opencode/evals/integration/test_narrative_grounding_validator.sh +166 -0
- package/dist/opencode/evals/integration/test_narrative_intent_annotation.sh +205 -0
- package/dist/opencode/evals/integration/test_narrative_prose_renderer.sh +239 -0
- package/dist/opencode/evals/integration/test_narrative_redaction_failclosed.sh +120 -0
- package/dist/opencode/evals/integration/test_narrative_runtime_projection.sh +146 -0
- package/dist/opencode/evals/integration/test_narrative_source_contract.sh +228 -0
- package/dist/opencode/evals/integration/test_narrative_trust_isolation.sh +408 -0
- package/dist/opencode/evals/integration/test_plain_stop_messaging.sh +91 -0
- package/dist/opencode/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/opencode/evals/integration/test_session_resume_roundtrip.sh +228 -0
- package/dist/opencode/evals/integration/test_telemetry_action_class.sh +265 -0
- package/dist/opencode/evals/integration/test_telemetry_delegation.sh +291 -0
- package/dist/opencode/evals/integration/test_telemetry_sanitize_usage.sh +155 -0
- package/dist/opencode/evals/integration/test_telemetry_task_slug.sh +158 -0
- package/dist/opencode/evals/integration/test_telemetry_tool_outcome.sh +279 -0
- package/dist/opencode/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/opencode/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/opencode/evals/integration/test_workflow_sidecar_writer.sh +111 -2
- package/dist/opencode/evals/run.sh +12 -0
- package/dist/opencode/evals/static/test_library_exports.sh +5 -0
- package/dist/opencode/evals/static/test_package.sh +6 -0
- package/dist/opencode/evals/static/test_workflow_skills.sh +16 -0
- package/dist/opencode/install.sh +1 -1
- package/dist/opencode/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/opencode/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/opencode/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/opencode/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/opencode/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/opencode/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/opencode/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/opencode/kits/veritas-governance/docs/README.md +141 -10
- package/dist/opencode/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/opencode/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/opencode/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/opencode/kits/veritas-governance/kit.json +65 -0
- package/dist/opencode/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/opencode/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/opencode/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/opencode/schemas/grounded-execution-narrative.schema.json +292 -0
- package/dist/opencode/schemas/narrative-eval-result.schema.json +205 -0
- package/dist/opencode/schemas/narrative-runtime-projection.schema.json +134 -0
- package/dist/opencode/schemas/narrative-source-manifest.schema.json +294 -0
- package/dist/opencode/schemas/workflow-waves.schema.json +347 -0
- package/dist/opencode/scripts/check-hachure-boundary.mjs +81 -0
- package/dist/opencode/scripts/check-layer-boundary.mjs +98 -0
- package/dist/opencode/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/opencode/scripts/hooks/workflow-steering.js +160 -19
- package/dist/opencode/scripts/telemetry/economics-record.schema.json +1 -1
- package/dist/opencode/scripts/telemetry/economics-record.sh +47 -3
- package/dist/opencode/scripts/telemetry/lib/session.sh +3 -0
- package/dist/opencode/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/opencode/scripts/telemetry/telemetry.sh +480 -59
- package/dist/pi/.pi/skills/consult-standards/SKILL.md +73 -0
- package/dist/pi/.pi/skills/execute-plan/SKILL.md +4 -3
- package/dist/pi/.pi/skills/pull-work/SKILL.md +12 -0
- package/dist/pi/.pi/skills/review-work/SKILL.md +11 -0
- package/dist/pi/.pi/skills/standards-authoring/SKILL.md +87 -0
- package/dist/pi/build/generated/capability-declarations.json +177 -0
- package/dist/pi/build/package.json +1 -1
- package/dist/pi/build/src/builder-flow-runtime.d.ts +37 -0
- package/dist/pi/build/src/builder-flow-runtime.js +71 -1
- package/dist/pi/build/src/builder-gate-action-envelope.d.ts +58 -7
- package/dist/pi/build/src/builder-gate-action-envelope.js +160 -28
- package/dist/pi/build/src/builder-lifecycle-authority.d.ts +26 -0
- package/dist/pi/build/src/builder-lifecycle-authority.js +38 -0
- package/dist/pi/build/src/cli/builder-run.js +71 -2
- package/dist/pi/build/src/cli/init.js +35 -3
- package/dist/pi/build/src/cli/kit.js +95 -2
- package/dist/pi/build/src/cli/narrative-render.d.ts +95 -0
- package/dist/pi/build/src/cli/narrative-render.js +466 -0
- package/dist/pi/build/src/cli/narrative-sources.d.ts +2 -0
- package/dist/pi/build/src/cli/narrative-sources.js +282 -0
- package/dist/pi/build/src/cli/public-contracts.d.ts +257 -0
- package/dist/pi/build/src/cli/public-contracts.js +87 -0
- package/dist/pi/build/src/cli/pull-work-provider.js +7 -1
- package/dist/pi/build/src/cli/validate-workflow-artifacts.js +53 -0
- package/dist/pi/build/src/cli/workflow-sidecar.d.ts +28 -12
- package/dist/pi/build/src/cli/workflow-sidecar.js +599 -180
- package/dist/pi/build/src/cli/workflow.js +16 -2
- package/dist/pi/build/src/cli.js +8 -0
- package/dist/pi/build/src/continuation-driver.d.ts +12 -0
- package/dist/pi/build/src/continuation-driver.js +16 -2
- package/dist/pi/build/src/continuation-validation.js +324 -8
- package/dist/pi/build/src/flow-kit/action-metadata.js +21 -1
- package/dist/pi/build/src/flow-kit/provision.d.ts +23 -0
- package/dist/pi/build/src/flow-kit/provision.js +99 -0
- package/dist/pi/build/src/flow-kit/validate.d.ts +52 -0
- package/dist/pi/build/src/flow-kit/validate.js +214 -9
- package/dist/pi/build/src/index.d.ts +33 -2
- package/dist/pi/build/src/index.js +24 -0
- package/dist/pi/build/src/lib/capability-declarations.d.ts +83 -0
- package/dist/pi/build/src/lib/capability-declarations.js +209 -0
- package/dist/pi/build/src/narrative/envelope.d.ts +111 -0
- package/dist/pi/build/src/narrative/envelope.js +590 -0
- package/dist/pi/build/src/narrative/eval-result.d.ts +60 -0
- package/dist/pi/build/src/narrative/eval-result.js +158 -0
- package/dist/pi/build/src/narrative/grounding-validator.d.ts +104 -0
- package/dist/pi/build/src/narrative/grounding-validator.js +472 -0
- package/dist/pi/build/src/narrative/integrity.d.ts +17 -0
- package/dist/pi/build/src/narrative/integrity.js +39 -0
- package/dist/pi/build/src/narrative/intent-economics.d.ts +42 -0
- package/dist/pi/build/src/narrative/intent-economics.js +82 -0
- package/dist/pi/build/src/narrative/intent.d.ts +94 -0
- package/dist/pi/build/src/narrative/intent.js +132 -0
- package/dist/pi/build/src/narrative/policy-filter.d.ts +15 -0
- package/dist/pi/build/src/narrative/policy-filter.js +58 -0
- package/dist/pi/build/src/narrative/projection.d.ts +58 -0
- package/dist/pi/build/src/narrative/projection.js +502 -0
- package/dist/pi/build/src/narrative/readers.d.ts +84 -0
- package/dist/pi/build/src/narrative/readers.js +406 -0
- package/dist/pi/build/src/narrative/render.d.ts +3 -0
- package/dist/pi/build/src/narrative/render.js +83 -0
- package/dist/pi/build/src/narrative/resolver.d.ts +52 -0
- package/dist/pi/build/src/narrative/resolver.js +190 -0
- package/dist/pi/build/src/narrative/snapshot.d.ts +90 -0
- package/dist/pi/build/src/narrative/snapshot.js +325 -0
- package/dist/pi/build/src/narrative/source-ids.d.ts +121 -0
- package/dist/pi/build/src/narrative/source-ids.js +201 -0
- package/dist/pi/build/src/narrative/statements.d.ts +84 -0
- package/dist/pi/build/src/narrative/statements.js +347 -0
- package/dist/pi/build/src/narrative/turn-spine.d.ts +19 -0
- package/dist/pi/build/src/narrative/turn-spine.js +73 -0
- package/dist/pi/build/src/runtime-adapters.js +1 -1
- package/dist/pi/build/src/tools/build-universal-bundles.js +8 -0
- package/dist/pi/build/src/tools/generate-capability-matrix.d.ts +7 -0
- package/dist/pi/build/src/tools/generate-capability-matrix.js +207 -0
- package/dist/pi/build/src/tools/validate-source-tree.js +5 -1
- package/dist/pi/context/contracts/execution-contract.md +30 -1
- package/dist/pi/context/contracts/review-contract.md +4 -0
- package/dist/pi/context/contracts/trigger-guards.md +73 -0
- package/dist/pi/context/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/pi/context/scripts/hooks/workflow-steering.js +160 -19
- package/dist/pi/context/scripts/telemetry/lib/session.sh +3 -0
- package/dist/pi/context/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/pi/context/scripts/telemetry/telemetry.sh +480 -59
- package/dist/pi/context/settings/backlog-provider-settings.json +1 -1
- package/dist/pi/context/settings/workspace-backlog-provider-settings.example.json +1 -1
- package/dist/pi/docs/adr/0023-kit-provisioning.md +47 -0
- package/dist/pi/docs/adr/index.md +1 -0
- package/dist/pi/docs/architecture-engine-and-kits.md +17 -0
- package/dist/pi/docs/context-map.md +7 -0
- package/dist/pi/docs/decisions/backlog-readiness-source.md +89 -0
- package/dist/pi/docs/decisions/index.md +2 -0
- package/dist/pi/docs/decisions/writer-observed-execution.md +51 -0
- package/dist/pi/docs/developer-architecture.md +3 -3
- package/dist/pi/docs/fixture-ownership.md +5 -1
- package/dist/pi/docs/flow-kit-repository-contract.md +34 -3
- package/dist/pi/docs/kit-authoring-guide.md +1 -1
- package/dist/pi/docs/migrations.md +19 -4
- package/dist/pi/docs/public-workflow-cli.md +9 -0
- package/dist/pi/docs/spec/builder-flow-runtime.md +49 -8
- package/dist/pi/docs/spec/runtime-hook-surface.md +29 -1
- package/dist/pi/docs/specs/economics-record-contract.md +1 -1
- package/dist/pi/docs/specs/harness-capability-matrix.md +63 -21
- package/dist/pi/docs/veritas-integration.md +12 -0
- package/dist/pi/docs/workflow-usage-guide.md +4 -1
- package/dist/pi/evals/ci/run-baseline.sh +42 -0
- package/dist/pi/evals/fixtures/narrative-evals/README.md +62 -0
- package/dist/pi/evals/fixtures/narrative-evals/corpus.json +129 -0
- package/dist/pi/evals/fixtures/narrative-evals/scorer.mjs +522 -0
- package/dist/pi/evals/fixtures/narrative-grounding-validator/corpus.json +20 -0
- package/dist/pi/evals/fixtures/narrative-grounding-validator/prompt-injection-adversarial.txt +1 -0
- package/dist/pi/evals/fixtures/narrative-grounding-validator/prompt-injection-control.txt +1 -0
- package/dist/pi/evals/fixtures/narrative-grounding-validator/scorer.mjs +201 -0
- package/dist/pi/evals/fixtures/narrative-prose-renderer/corpus.json +15 -0
- package/dist/pi/evals/fixtures/narrative-prose-renderer/scorer.mjs +201 -0
- package/dist/pi/evals/fixtures/narrative-sources/expected-capture-completeness.json +13 -0
- package/dist/pi/evals/fixtures/narrative-sources/flow/runs/run-fixture/report.json +1 -0
- package/dist/pi/evals/fixtures/narrative-sources/flow/runs/run-fixture/state.json +1 -0
- package/dist/pi/evals/fixtures/narrative-sources/flow/runs/run-runtime/state.json +1 -0
- package/dist/pi/evals/fixtures/narrative-sources/repo/created.txt +1 -0
- package/dist/pi/evals/fixtures/narrative-sources/repo/fixture.txt +1 -0
- package/dist/pi/evals/fixtures/narrative-sources/session/agents/agent-fixture/events.jsonl +2 -0
- package/dist/pi/evals/fixtures/narrative-sources/session/agents/nested-worker/events.jsonl +1 -0
- package/dist/pi/evals/fixtures/narrative-sources/session/trust.bundle +1 -0
- package/dist/pi/evals/fixtures/narrative-sources/telemetry/full.jsonl +3 -0
- package/dist/pi/evals/fixtures/narrative-sources/telemetry/runtime.jsonl +4 -0
- package/dist/pi/evals/fixtures/narrative-sources/transcripts/session.txt +1 -0
- package/dist/pi/evals/integration/test_capability_declarations.sh +183 -0
- package/dist/pi/evals/integration/test_economics_record.sh +42 -0
- package/dist/pi/evals/integration/test_fixture_retirement_audit.sh +2 -2
- package/dist/pi/evals/integration/test_gate_review_inquiry_records.sh +42 -35
- package/dist/pi/evals/integration/test_goal_fit_hook.sh +13 -5
- package/dist/pi/evals/integration/test_goal_fit_narrative_exclusion.sh +68 -0
- package/dist/pi/evals/integration/test_kit_provisioning.sh +112 -0
- package/dist/pi/evals/integration/test_narrative_evals.sh +174 -0
- package/dist/pi/evals/integration/test_narrative_grounded_envelope.sh +280 -0
- package/dist/pi/evals/integration/test_narrative_grounding_validator.sh +166 -0
- package/dist/pi/evals/integration/test_narrative_intent_annotation.sh +205 -0
- package/dist/pi/evals/integration/test_narrative_prose_renderer.sh +239 -0
- package/dist/pi/evals/integration/test_narrative_redaction_failclosed.sh +120 -0
- package/dist/pi/evals/integration/test_narrative_runtime_projection.sh +146 -0
- package/dist/pi/evals/integration/test_narrative_source_contract.sh +228 -0
- package/dist/pi/evals/integration/test_narrative_trust_isolation.sh +408 -0
- package/dist/pi/evals/integration/test_plain_stop_messaging.sh +91 -0
- package/dist/pi/evals/integration/test_pull_work_provider.sh +18 -0
- package/dist/pi/evals/integration/test_session_resume_roundtrip.sh +228 -0
- package/dist/pi/evals/integration/test_telemetry_action_class.sh +265 -0
- package/dist/pi/evals/integration/test_telemetry_delegation.sh +291 -0
- package/dist/pi/evals/integration/test_telemetry_sanitize_usage.sh +155 -0
- package/dist/pi/evals/integration/test_telemetry_task_slug.sh +158 -0
- package/dist/pi/evals/integration/test_telemetry_tool_outcome.sh +279 -0
- package/dist/pi/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/dist/pi/evals/integration/test_workflow_artifacts.sh +257 -0
- package/dist/pi/evals/integration/test_workflow_sidecar_writer.sh +111 -2
- package/dist/pi/evals/run.sh +12 -0
- package/dist/pi/evals/static/test_library_exports.sh +5 -0
- package/dist/pi/evals/static/test_package.sh +6 -0
- package/dist/pi/evals/static/test_workflow_skills.sh +16 -0
- package/dist/pi/install.sh +1 -1
- package/dist/pi/kits/builder/flows/publish-learn.flow.json +9 -1
- package/dist/pi/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/dist/pi/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/dist/pi/kits/builder/skills/review-work/SKILL.md +11 -0
- package/dist/pi/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/dist/pi/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/dist/pi/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/dist/pi/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/dist/pi/kits/veritas-governance/docs/README.md +141 -10
- package/dist/pi/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/dist/pi/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/dist/pi/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/dist/pi/kits/veritas-governance/kit.json +65 -0
- package/dist/pi/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/dist/pi/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/dist/pi/schemas/backlog-provider-settings.schema.json +1 -1
- package/dist/pi/schemas/grounded-execution-narrative.schema.json +292 -0
- package/dist/pi/schemas/narrative-eval-result.schema.json +205 -0
- package/dist/pi/schemas/narrative-runtime-projection.schema.json +134 -0
- package/dist/pi/schemas/narrative-source-manifest.schema.json +294 -0
- package/dist/pi/schemas/workflow-waves.schema.json +347 -0
- package/dist/pi/scripts/check-hachure-boundary.mjs +81 -0
- package/dist/pi/scripts/check-layer-boundary.mjs +98 -0
- package/dist/pi/scripts/hooks/stop-goal-fit.js +182 -9
- package/dist/pi/scripts/hooks/workflow-steering.js +160 -19
- package/dist/pi/scripts/telemetry/economics-record.schema.json +1 -1
- package/dist/pi/scripts/telemetry/economics-record.sh +47 -3
- package/dist/pi/scripts/telemetry/lib/session.sh +3 -0
- package/dist/pi/scripts/telemetry/lib/transport.sh +12 -3
- package/dist/pi/scripts/telemetry/telemetry.sh +480 -59
- package/docs/adr/0023-kit-provisioning.md +47 -0
- package/docs/adr/index.md +1 -0
- package/docs/architecture-engine-and-kits.md +17 -0
- package/docs/context-map.md +7 -0
- package/docs/decisions/backlog-readiness-source.md +89 -0
- package/docs/decisions/index.md +2 -0
- package/docs/decisions/writer-observed-execution.md +51 -0
- package/docs/developer-architecture.md +3 -3
- package/docs/fixture-ownership.md +5 -1
- package/docs/flow-kit-repository-contract.md +34 -3
- package/docs/kit-authoring-guide.md +1 -1
- package/docs/migrations.md +19 -4
- package/docs/public-workflow-cli.md +9 -0
- package/docs/spec/builder-flow-runtime.md +49 -8
- package/docs/spec/runtime-hook-surface.md +29 -1
- package/docs/specs/economics-record-contract.md +1 -1
- package/docs/specs/harness-capability-matrix.md +63 -21
- package/docs/veritas-integration.md +12 -0
- package/docs/workflow-usage-guide.md +4 -1
- package/evals/ci/run-baseline.sh +42 -0
- package/evals/fixtures/narrative-evals/README.md +62 -0
- package/evals/fixtures/narrative-evals/corpus.json +129 -0
- package/evals/fixtures/narrative-evals/scorer.mjs +522 -0
- package/evals/fixtures/narrative-grounding-validator/corpus.json +20 -0
- package/evals/fixtures/narrative-grounding-validator/prompt-injection-adversarial.txt +1 -0
- package/evals/fixtures/narrative-grounding-validator/prompt-injection-control.txt +1 -0
- package/evals/fixtures/narrative-grounding-validator/scorer.mjs +201 -0
- package/evals/fixtures/narrative-prose-renderer/corpus.json +15 -0
- package/evals/fixtures/narrative-prose-renderer/scorer.mjs +201 -0
- package/evals/fixtures/narrative-sources/expected-capture-completeness.json +13 -0
- package/evals/fixtures/narrative-sources/flow/runs/run-fixture/report.json +1 -0
- package/evals/fixtures/narrative-sources/flow/runs/run-fixture/state.json +1 -0
- package/evals/fixtures/narrative-sources/flow/runs/run-runtime/state.json +1 -0
- package/evals/fixtures/narrative-sources/repo/created.txt +1 -0
- package/evals/fixtures/narrative-sources/repo/fixture.txt +1 -0
- package/evals/fixtures/narrative-sources/session/agents/agent-fixture/events.jsonl +2 -0
- package/evals/fixtures/narrative-sources/session/agents/nested-worker/events.jsonl +1 -0
- package/evals/fixtures/narrative-sources/session/trust.bundle +1 -0
- package/evals/fixtures/narrative-sources/telemetry/full.jsonl +3 -0
- package/evals/fixtures/narrative-sources/telemetry/runtime.jsonl +4 -0
- package/evals/fixtures/narrative-sources/transcripts/session.txt +1 -0
- package/evals/integration/test_capability_declarations.sh +183 -0
- package/evals/integration/test_economics_record.sh +42 -0
- package/evals/integration/test_fixture_retirement_audit.sh +2 -2
- package/evals/integration/test_gate_review_inquiry_records.sh +42 -35
- package/evals/integration/test_goal_fit_hook.sh +13 -5
- package/evals/integration/test_goal_fit_narrative_exclusion.sh +68 -0
- package/evals/integration/test_kit_provisioning.sh +112 -0
- package/evals/integration/test_narrative_evals.sh +174 -0
- package/evals/integration/test_narrative_grounded_envelope.sh +280 -0
- package/evals/integration/test_narrative_grounding_validator.sh +166 -0
- package/evals/integration/test_narrative_intent_annotation.sh +205 -0
- package/evals/integration/test_narrative_prose_renderer.sh +239 -0
- package/evals/integration/test_narrative_redaction_failclosed.sh +120 -0
- package/evals/integration/test_narrative_runtime_projection.sh +146 -0
- package/evals/integration/test_narrative_source_contract.sh +228 -0
- package/evals/integration/test_narrative_trust_isolation.sh +408 -0
- package/evals/integration/test_plain_stop_messaging.sh +91 -0
- package/evals/integration/test_pull_work_provider.sh +18 -0
- package/evals/integration/test_session_resume_roundtrip.sh +228 -0
- package/evals/integration/test_telemetry_action_class.sh +265 -0
- package/evals/integration/test_telemetry_delegation.sh +291 -0
- package/evals/integration/test_telemetry_sanitize_usage.sh +155 -0
- package/evals/integration/test_telemetry_task_slug.sh +158 -0
- package/evals/integration/test_telemetry_tool_outcome.sh +279 -0
- package/evals/integration/test_veritas_governance_kit.sh +256 -0
- package/evals/integration/test_workflow_artifacts.sh +257 -0
- package/evals/integration/test_workflow_sidecar_writer.sh +111 -2
- package/evals/run.sh +12 -0
- package/evals/static/test_library_exports.sh +5 -0
- package/evals/static/test_package.sh +6 -0
- package/evals/static/test_workflow_skills.sh +16 -0
- package/kits/builder/flows/publish-learn.flow.json +9 -1
- package/kits/builder/skills/execute-plan/SKILL.md +4 -3
- package/kits/builder/skills/pull-work/SKILL.md +12 -0
- package/kits/builder/skills/review-work/SKILL.md +11 -0
- package/kits/veritas-governance/adapter/readiness-to-trust-bundle.mjs +19 -20
- package/kits/veritas-governance/assets/starter-hooks/githooks/post-commit +13 -0
- package/kits/veritas-governance/assets/starter-hooks/githooks/pre-push +13 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/GOVERNANCE.md +23 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/README.md +58 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/authority/default.authority-settings.json +30 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/repo-map.json +115 -0
- package/kits/veritas-governance/assets/starter-standards/veritas/repo-standards/default.repo-standards.json +54 -0
- package/kits/veritas-governance/assets/starter-standards/veritas.claims.json +179 -0
- package/kits/veritas-governance/docs/README.md +141 -10
- package/kits/veritas-governance/fixtures/standards-authoring/approved.trust-bundle.json +74 -0
- package/kits/veritas-governance/fixtures/standards-authoring/not-approved.trust-bundle.json +74 -0
- package/kits/veritas-governance/flows/standards-authoring.flow.json +35 -0
- package/kits/veritas-governance/kit.json +65 -0
- package/kits/veritas-governance/skills/consult-standards/SKILL.md +73 -0
- package/kits/veritas-governance/skills/standards-authoring/SKILL.md +87 -0
- package/package.json +10 -5
- package/schemas/backlog-provider-settings.schema.json +1 -1
- package/schemas/grounded-execution-narrative.schema.json +292 -0
- package/schemas/narrative-eval-result.schema.json +205 -0
- package/schemas/narrative-runtime-projection.schema.json +134 -0
- package/schemas/narrative-source-manifest.schema.json +294 -0
- package/schemas/workflow-waves.schema.json +347 -0
- package/scripts/check-hachure-boundary.mjs +81 -0
- package/scripts/check-layer-boundary.mjs +98 -0
- package/scripts/hooks/stop-goal-fit.js +182 -9
- package/scripts/hooks/workflow-steering.js +160 -19
- package/scripts/telemetry/economics-record.schema.json +1 -1
- package/scripts/telemetry/economics-record.sh +47 -3
- package/scripts/telemetry/lib/session.sh +3 -0
- package/scripts/telemetry/lib/transport.sh +12 -3
- package/scripts/telemetry/telemetry.sh +480 -59
- package/src/builder-flow-runtime.ts +102 -1
- package/src/builder-gate-action-envelope.ts +212 -35
- package/src/builder-lifecycle-authority.ts +48 -0
- package/src/cli/builder-flow-runtime.test.mjs +304 -7
- package/src/cli/builder-run.ts +71 -1
- package/src/cli/capability-declarations.test.mjs +117 -0
- package/src/cli/continuation-driver.test.mjs +327 -20
- package/src/cli/flow-resolver-composition.test.mjs +20 -1
- package/src/cli/init.ts +31 -3
- package/src/cli/kit-metadata-security.test.mjs +253 -3
- package/src/cli/kit-provisioning.test.mjs +122 -0
- package/src/cli/kit.ts +83 -2
- package/src/cli/narrative-arch-isolation.test.mjs +198 -0
- package/src/cli/narrative-envelope.test.mjs +367 -0
- package/src/cli/narrative-grounding-validator.test.mjs +322 -0
- package/src/cli/narrative-intent.test.mjs +177 -0
- package/src/cli/narrative-policy-filter.test.mjs +66 -0
- package/src/cli/narrative-projection.test.mjs +236 -0
- package/src/cli/narrative-readers.test.mjs +196 -0
- package/src/cli/narrative-render.test.mjs +221 -0
- package/src/cli/narrative-render.ts +589 -0
- package/src/cli/narrative-resolver.test.mjs +114 -0
- package/src/cli/narrative-snapshot.test.mjs +149 -0
- package/src/cli/narrative-source-ids.test.mjs +84 -0
- package/src/cli/narrative-sources.ts +276 -0
- package/src/cli/narrative-statements.test.mjs +369 -0
- package/src/cli/narrative-turn-spine.test.mjs +74 -0
- package/src/cli/public-api.test.mjs +17 -0
- package/src/cli/public-contracts.ts +95 -0
- package/src/cli/pull-work-provider.ts +7 -1
- package/src/cli/sidecar-pure-helpers.test.mjs +216 -24
- package/src/cli/trust-bundle-policy-order.test.mjs +134 -1
- package/src/cli/validate-waves.test.mjs +134 -0
- package/src/cli/validate-workflow-artifacts.ts +47 -0
- package/src/cli/workflow-sidecar.ts +563 -167
- package/src/cli/workflow.ts +22 -2
- package/src/cli/writer-observed-execution.test.mjs +102 -0
- package/src/cli.ts +8 -0
- package/src/continuation-driver.ts +32 -3
- package/src/continuation-validation.ts +336 -8
- package/src/flow-kit/action-metadata.ts +20 -1
- package/src/flow-kit/provision.ts +118 -0
- package/src/flow-kit/validate.ts +233 -10
- package/src/index.ts +241 -0
- package/src/lib/capability-declarations.ts +261 -0
- package/src/narrative/envelope.ts +624 -0
- package/src/narrative/eval-result.ts +175 -0
- package/src/narrative/grounding-validator.ts +610 -0
- package/src/narrative/integrity.ts +53 -0
- package/src/narrative/intent-economics.ts +119 -0
- package/src/narrative/intent.ts +216 -0
- package/src/narrative/policy-filter.ts +66 -0
- package/src/narrative/projection.ts +530 -0
- package/src/narrative/readers.ts +427 -0
- package/src/narrative/render.ts +82 -0
- package/src/narrative/resolver.ts +195 -0
- package/src/narrative/snapshot.ts +365 -0
- package/src/narrative/source-ids.ts +294 -0
- package/src/narrative/statements.ts +423 -0
- package/src/narrative/turn-spine.ts +99 -0
- package/src/runtime-adapters.ts +1 -1
- package/src/tools/build-universal-bundles.ts +8 -0
- package/src/tools/generate-capability-matrix.ts +215 -0
- package/src/tools/validate-source-tree.ts +5 -1
- package/build/src/cli/sidecar-claim-explain.d.ts +0 -45
- package/build/src/cli/sidecar-claim-explain.js +0 -87
- package/dist/base/build/src/cli/sidecar-claim-explain.d.ts +0 -45
- package/dist/base/build/src/cli/sidecar-claim-explain.js +0 -87
- package/dist/claude-code/build/src/cli/sidecar-claim-explain.d.ts +0 -45
- package/dist/claude-code/build/src/cli/sidecar-claim-explain.js +0 -87
- package/dist/codex/build/src/cli/sidecar-claim-explain.d.ts +0 -45
- package/dist/codex/build/src/cli/sidecar-claim-explain.js +0 -87
- package/dist/kiro/build/src/cli/sidecar-claim-explain.d.ts +0 -45
- package/dist/kiro/build/src/cli/sidecar-claim-explain.js +0 -87
- package/dist/opencode/build/src/cli/sidecar-claim-explain.d.ts +0 -45
- package/dist/opencode/build/src/cli/sidecar-claim-explain.js +0 -87
- package/dist/pi/build/src/cli/sidecar-claim-explain.d.ts +0 -45
- package/dist/pi/build/src/cli/sidecar-claim-explain.js +0 -87
- package/src/cli/sidecar-claim-explain.ts +0 -130
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# test_telemetry_delegation.sh — Layer 2: per-tool-event delegation enrichment
|
|
3
|
+
# (kontourai/flow-agents#581, split from #568)
|
|
4
|
+
#
|
|
5
|
+
# Proves that a tool event whose invoked tool DELEGATES carries a .delegation
|
|
6
|
+
# object on the record (sibling to .tool):
|
|
7
|
+
# - .delegation.targets[] — the delegation target identities (mirrors the
|
|
8
|
+
# existing agent.delegate event shape).
|
|
9
|
+
# - .delegation.target — the primary (first) target; the Console
|
|
10
|
+
# delegationTarget maps from this.
|
|
11
|
+
# Covered vocabulary:
|
|
12
|
+
# - Subagent tools: Task/Agent, InvokeSubagents, spawn_agent,
|
|
13
|
+
# use_subagent/subagent/"delegate to a native subagent".
|
|
14
|
+
# - Direct-CLI Codex: a Bash/execute_bash tool whose command's leading shell
|
|
15
|
+
# token is exactly `codex` -> .delegation.target == "codex".
|
|
16
|
+
# The field is present ONLY when the tool actually delegates (never fabricated).
|
|
17
|
+
#
|
|
18
|
+
# The HIGHEST-value assertion is the PARITY TEETH: the separate agent.delegate
|
|
19
|
+
# event's targets, now sourced from the shared resolve_delegation_targets helper,
|
|
20
|
+
# must be byte-identical to the values the pre-refactor inline code produced for
|
|
21
|
+
# every existing vocabulary case — so factoring the vocabulary into one helper
|
|
22
|
+
# can never silently drift the agent.delegate stream.
|
|
23
|
+
#
|
|
24
|
+
# Uses the same TELEMETRY_DIR resolution and FLOW_AGENTS_TELEMETRY_FOREGROUND
|
|
25
|
+
# convention as test_telemetry_tool_outcome.sh so assertions never race a
|
|
26
|
+
# backgrounded subshell.
|
|
27
|
+
set -uo pipefail
|
|
28
|
+
|
|
29
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
30
|
+
if [[ -d "$ROOT_DIR/context/scripts/telemetry" ]]; then
|
|
31
|
+
TELEMETRY_DIR="$ROOT_DIR/context/scripts/telemetry"
|
|
32
|
+
else
|
|
33
|
+
TELEMETRY_DIR="<bundle-root>/context/scripts/telemetry"
|
|
34
|
+
fi
|
|
35
|
+
TELEMETRY_SH="${TELEMETRY_DIR}/telemetry.sh"
|
|
36
|
+
|
|
37
|
+
TMPDIR_EVAL=$(mktemp -d /tmp/eval-telemetry-delegation.XXXXXX)
|
|
38
|
+
TMPLOG="${TMPDIR_EVAL}/test-output.jsonl"
|
|
39
|
+
|
|
40
|
+
pass=0; fail=0
|
|
41
|
+
_pass() { echo " ✓ $1"; pass=$((pass + 1)); }
|
|
42
|
+
_fail() { echo " ✗ $1"; fail=$((fail + 1)); }
|
|
43
|
+
|
|
44
|
+
echo "=== Layer 2: Telemetry Delegation Enrichment (#581: .delegation.target/targets) ==="
|
|
45
|
+
echo ""
|
|
46
|
+
|
|
47
|
+
if [[ ! -f "$TELEMETRY_SH" ]]; then
|
|
48
|
+
_fail "telemetry.sh not found at $TELEMETRY_SH"
|
|
49
|
+
rm -rf "$TMPDIR_EVAL"; exit 1
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
# Run one hook event against telemetry.sh (foreground) and append all resulting
|
|
53
|
+
# events to $TMPLOG. Returns the LAST full-channel log line (the primary event;
|
|
54
|
+
# a separate agent.delegate line, when emitted, precedes it in the log).
|
|
55
|
+
_run_tool_event() {
|
|
56
|
+
local hook_type="$1" input="$2"; shift 2
|
|
57
|
+
local extra_env=("$@")
|
|
58
|
+
local common_env=(
|
|
59
|
+
HOME="${TMPDIR_EVAL}/home"
|
|
60
|
+
TELEMETRY_ENABLED=true
|
|
61
|
+
TELEMETRY_CHANNELS=full
|
|
62
|
+
TELEMETRY_CHANNEL_FULL_LOG_FILE="$TMPLOG"
|
|
63
|
+
FLOW_AGENTS_TELEMETRY_FOREGROUND=true
|
|
64
|
+
TELEMETRY_CONFIG_FILE="$TMPDIR_EVAL/telemetry.conf"
|
|
65
|
+
TELEMETRY_DATA_DIR="$TMPDIR_EVAL"
|
|
66
|
+
TELEMETRY_SESSION_DIR="$TMPDIR_EVAL/sessions"
|
|
67
|
+
TELEMETRY_USAGE_TRACKING=true
|
|
68
|
+
)
|
|
69
|
+
mkdir -p "${TMPDIR_EVAL}/home" "${TMPDIR_EVAL}/sessions"
|
|
70
|
+
|
|
71
|
+
local before_lines
|
|
72
|
+
touch "$TMPLOG"
|
|
73
|
+
before_lines=$(wc -l < "$TMPLOG" | tr -d ' ')
|
|
74
|
+
|
|
75
|
+
echo "$input" | env "${common_env[@]}" ${extra_env[@]+"${extra_env[@]}"} bash "$TELEMETRY_SH" "$hook_type" dev 2>/dev/null
|
|
76
|
+
|
|
77
|
+
tail -n +"$((before_lines + 1))" "$TMPLOG" 2>/dev/null | tail -1
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
# Emit an event and return the FIRST event of a given event_type from the lines
|
|
81
|
+
# this run appended (used to grab the agent.delegate event, which precedes the
|
|
82
|
+
# primary tool.invoke line).
|
|
83
|
+
_run_and_grab() {
|
|
84
|
+
local want_type="$1" hook_type="$2" input="$3"; shift 3
|
|
85
|
+
local before_lines
|
|
86
|
+
touch "$TMPLOG"
|
|
87
|
+
before_lines=$(wc -l < "$TMPLOG" | tr -d ' ')
|
|
88
|
+
_run_tool_event "$hook_type" "$input" "$@" >/dev/null
|
|
89
|
+
tail -n +"$((before_lines + 1))" "$TMPLOG" 2>/dev/null \
|
|
90
|
+
| jq -c --arg t "$want_type" 'select(.event_type==$t)' 2>/dev/null | head -1
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
# --- (a) Task -> .delegation.target / targets on tool.invoke -----------------
|
|
94
|
+
echo "--- (a) Task invoke -> .delegation.target == subagent_type, .delegation.targets ---"
|
|
95
|
+
inv_a=$(jq -nc '{session_id:"del-a",hook_event_name:"PreToolUse",tool_name:"Task",tool_input:{subagent_type:"code-reviewer"}}')
|
|
96
|
+
out_a=$(_run_tool_event "preToolUse" "$inv_a")
|
|
97
|
+
et_a=$(echo "$out_a" | jq -r '.event_type')
|
|
98
|
+
tgt_a=$(echo "$out_a" | jq -r '.delegation.target')
|
|
99
|
+
tgts_a=$(echo "$out_a" | jq -c '.delegation.targets')
|
|
100
|
+
[[ "$et_a" == "tool.invoke" ]] && _pass "preToolUse -> tool.invoke" || _fail "expected tool.invoke, got '$et_a'"
|
|
101
|
+
[[ "$tgt_a" == "code-reviewer" ]] && _pass ".delegation.target == 'code-reviewer'" || _fail "expected target=code-reviewer, got '$tgt_a'"
|
|
102
|
+
[[ "$tgts_a" == '["code-reviewer"]' ]] && _pass ".delegation.targets == [\"code-reviewer\"]" || _fail "expected targets=[\"code-reviewer\"], got '$tgts_a'"
|
|
103
|
+
|
|
104
|
+
# --- (a2) Task result (postToolUse) also carries .delegation ------------------
|
|
105
|
+
echo ""
|
|
106
|
+
echo "--- (a2) Task result (postToolUse) also carries .delegation ---"
|
|
107
|
+
res_a2=$(jq -nc '{session_id:"del-a2",hook_event_name:"PostToolUse",tool_name:"Task",tool_input:{subagent_type:"code-reviewer"},tool_response:{output:"done"}}')
|
|
108
|
+
out_a2=$(_run_tool_event "postToolUse" "$res_a2")
|
|
109
|
+
et_a2=$(echo "$out_a2" | jq -r '.event_type')
|
|
110
|
+
tgt_a2=$(echo "$out_a2" | jq -r '.delegation.target')
|
|
111
|
+
[[ "$et_a2" == "tool.result" && "$tgt_a2" == "code-reviewer" ]] && _pass "tool.result carries .delegation.target==code-reviewer (invoke AND result)" || _fail "expected tool.result target=code-reviewer, got et=$et_a2 target=$tgt_a2"
|
|
112
|
+
|
|
113
|
+
# --- (b) use_subagent multi-target array -------------------------------------
|
|
114
|
+
echo ""
|
|
115
|
+
echo "--- (b) use_subagent -> multi-target .delegation.targets array ---"
|
|
116
|
+
inv_b=$(jq -nc '{session_id:"del-b",hook_event_name:"PreToolUse",tool_name:"use_subagent",tool_input:{subagents:[{agent_name:"planner"},{agent:"builder"}]}}')
|
|
117
|
+
out_b=$(_run_tool_event "preToolUse" "$inv_b")
|
|
118
|
+
tgts_b=$(echo "$out_b" | jq -c '.delegation.targets')
|
|
119
|
+
tgt_b=$(echo "$out_b" | jq -r '.delegation.target')
|
|
120
|
+
[[ "$tgts_b" == '["planner","builder"]' ]] && _pass ".delegation.targets == [\"planner\",\"builder\"] (multi-target)" || _fail "expected [\"planner\",\"builder\"], got '$tgts_b'"
|
|
121
|
+
[[ "$tgt_b" == "planner" ]] && _pass ".delegation.target is the primary (first) target 'planner'" || _fail "expected target=planner, got '$tgt_b'"
|
|
122
|
+
|
|
123
|
+
# --- (c) spawn_agent ---------------------------------------------------------
|
|
124
|
+
echo ""
|
|
125
|
+
echo "--- (c) spawn_agent -> .delegation.target == agent_type ---"
|
|
126
|
+
inv_c=$(jq -nc '{session_id:"del-c",hook_event_name:"PreToolUse",tool_name:"spawn_agent",tool_input:{agent_type:"worker"}}')
|
|
127
|
+
out_c=$(_run_tool_event "preToolUse" "$inv_c")
|
|
128
|
+
tgt_c=$(echo "$out_c" | jq -r '.delegation.target')
|
|
129
|
+
[[ "$tgt_c" == "worker" ]] && _pass ".delegation.target == 'worker'" || _fail "expected target=worker, got '$tgt_c'"
|
|
130
|
+
|
|
131
|
+
# --- (d) InvokeSubagents -----------------------------------------------------
|
|
132
|
+
echo ""
|
|
133
|
+
echo "--- (d) InvokeSubagents -> .delegation.targets from .targets ---"
|
|
134
|
+
inv_d=$(jq -nc '{session_id:"del-d",hook_event_name:"PreToolUse",tool_name:"InvokeSubagents",tool_input:{targets:["alpha","beta"]}}')
|
|
135
|
+
out_d=$(_run_tool_event "preToolUse" "$inv_d")
|
|
136
|
+
tgts_d=$(echo "$out_d" | jq -c '.delegation.targets')
|
|
137
|
+
tgt_d=$(echo "$out_d" | jq -r '.delegation.target')
|
|
138
|
+
[[ "$tgts_d" == '["alpha","beta"]' ]] && _pass ".delegation.targets == [\"alpha\",\"beta\"]" || _fail "expected [\"alpha\",\"beta\"], got '$tgts_d'"
|
|
139
|
+
[[ "$tgt_d" == "alpha" ]] && _pass ".delegation.target == 'alpha' (first)" || _fail "expected target=alpha, got '$tgt_d'"
|
|
140
|
+
|
|
141
|
+
# --- (e) Direct-CLI Codex: `codex exec ...` -> "codex" -----------------------
|
|
142
|
+
echo ""
|
|
143
|
+
echo "--- (e) Codex Bash 'codex exec ...' -> .delegation.target == 'codex' ---"
|
|
144
|
+
inv_e=$(jq -nc '{session_id:"del-e",hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"codex exec --cd /repo \"do the thing\""}}')
|
|
145
|
+
out_e=$(_run_tool_event "preToolUse" "$inv_e")
|
|
146
|
+
tgt_e=$(echo "$out_e" | jq -r '.delegation.target')
|
|
147
|
+
tgts_e=$(echo "$out_e" | jq -c '.delegation.targets')
|
|
148
|
+
[[ "$tgt_e" == "codex" ]] && _pass ".delegation.target == 'codex' for a leading-token codex command" || _fail "expected target=codex, got '$tgt_e'"
|
|
149
|
+
[[ "$tgts_e" == '["codex"]' ]] && _pass ".delegation.targets == [\"codex\"]" || _fail "expected [\"codex\"], got '$tgts_e'"
|
|
150
|
+
# env-prefix + bash -lc wrapper still resolves the leading codex token
|
|
151
|
+
inv_e2=$(jq -nc '{session_id:"del-e2",hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"FOO=bar codex resume abc"}}')
|
|
152
|
+
out_e2=$(_run_tool_event "preToolUse" "$inv_e2")
|
|
153
|
+
tgt_e2=$(echo "$out_e2" | jq -r '.delegation.target')
|
|
154
|
+
[[ "$tgt_e2" == "codex" ]] && _pass "leading VAR=val env-assignment is stripped before matching (FOO=bar codex ... -> codex)" || _fail "expected target=codex through env prefix, got '$tgt_e2'"
|
|
155
|
+
inv_e3=$(jq -nc '{session_id:"del-e3",hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"bash -lc '"'"'codex exec run'"'"'"}}')
|
|
156
|
+
out_e3=$(_run_tool_event "preToolUse" "$inv_e3")
|
|
157
|
+
tgt_e3=$(echo "$out_e3" | jq -r '.delegation.target')
|
|
158
|
+
[[ "$tgt_e3" == "codex" ]] && _pass "a bash -lc '...' wrapper is peeled before matching (bash -lc 'codex ...' -> codex)" || _fail "expected target=codex through bash -lc wrapper, got '$tgt_e3'"
|
|
159
|
+
|
|
160
|
+
# --- (f) Codex false-positive guard ------------------------------------------
|
|
161
|
+
echo ""
|
|
162
|
+
echo "--- (f) Codex false-positive guard: substring/path 'codex' MUST NOT match ---"
|
|
163
|
+
for pair in \
|
|
164
|
+
"codexfoo run|codexfoo (substring)" \
|
|
165
|
+
"/usr/bin/codex-wrapper go|/usr/bin/codex-wrapper (path)" \
|
|
166
|
+
"mycodex build|mycodex (prefix)" \
|
|
167
|
+
"./codex-helper x|./codex-helper (relative path)"; do
|
|
168
|
+
cmd="${pair%%|*}"; label="${pair#*|}"
|
|
169
|
+
inv_f=$(jq -nc --arg c "$cmd" '{session_id:"del-f",hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:$c}}')
|
|
170
|
+
out_f=$(_run_tool_event "preToolUse" "$inv_f")
|
|
171
|
+
has_f=$(echo "$out_f" | jq -r 'has("delegation")')
|
|
172
|
+
[[ "$has_f" == "false" ]] && _pass "no .delegation for $label" || _fail "$label unexpectedly produced .delegation"
|
|
173
|
+
done
|
|
174
|
+
|
|
175
|
+
# --- (g) Non-delegation Bash -------------------------------------------------
|
|
176
|
+
echo ""
|
|
177
|
+
echo "--- (g) non-delegation Bash ('npm test') carries no .delegation ---"
|
|
178
|
+
inv_g=$(jq -nc '{session_id:"del-g",hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"npm test"}}')
|
|
179
|
+
out_g=$(_run_tool_event "preToolUse" "$inv_g")
|
|
180
|
+
has_g=$(echo "$out_g" | jq -r 'has("delegation")')
|
|
181
|
+
[[ "$has_g" == "false" ]] && _pass "'npm test' -> no .delegation (present ONLY when the tool delegates)" || _fail "'npm test' unexpectedly produced .delegation"
|
|
182
|
+
# A plain Read tool likewise never delegates.
|
|
183
|
+
inv_g2=$(jq -nc '{session_id:"del-g2",hook_event_name:"PreToolUse",tool_name:"Read",tool_input:{file:"a.txt"}}')
|
|
184
|
+
out_g2=$(_run_tool_event "preToolUse" "$inv_g2")
|
|
185
|
+
has_g2=$(echo "$out_g2" | jq -r 'has("delegation")')
|
|
186
|
+
[[ "$has_g2" == "false" ]] && _pass "Read tool -> no .delegation" || _fail "Read tool unexpectedly produced .delegation"
|
|
187
|
+
|
|
188
|
+
# --- (h) no-block: malformed/absent tool_input -------------------------------
|
|
189
|
+
echo ""
|
|
190
|
+
echo "--- (h) no-block: malformed/absent tool_input emits the event with no .delegation ---"
|
|
191
|
+
inv_h=$(jq -nc '{session_id:"del-h",hook_event_name:"PreToolUse",tool_name:"Task"}')
|
|
192
|
+
out_h=$(_run_tool_event "preToolUse" "$inv_h")
|
|
193
|
+
et_h=$(echo "$out_h" | jq -r '.event_type // empty')
|
|
194
|
+
# Task with no tool_input -> subagent_type//...//"general-purpose" fallback -> still a delegation.
|
|
195
|
+
tgt_h=$(echo "$out_h" | jq -r '.delegation.target // "ABSENT"')
|
|
196
|
+
[[ "$et_h" == "tool.invoke" ]] && _pass "event still emits cleanly with absent tool_input (never blackholed)" || _fail "expected tool.invoke, got '$et_h'"
|
|
197
|
+
[[ "$tgt_h" == "general-purpose" ]] && _pass "Task with no input falls back to the pre-existing 'general-purpose' default" || _fail "expected general-purpose, got '$tgt_h'"
|
|
198
|
+
|
|
199
|
+
# --- (i) PARITY TEETH: agent.delegate targets identical to pre-refactor -------
|
|
200
|
+
echo ""
|
|
201
|
+
echo "--- (i) PARITY TEETH: agent.delegate 'targets' byte-identical to pre-refactor inline values ---"
|
|
202
|
+
# Known pre-refactor values derived from the inline emit_delegation_event code:
|
|
203
|
+
# Task{subagent_type} -> [subagent_type]
|
|
204
|
+
# Task{} (no input) -> ["general-purpose"]
|
|
205
|
+
# Agent{agent} -> [agent]
|
|
206
|
+
# spawn_agent{agent_type} -> [agent_type]
|
|
207
|
+
# spawn_agent{} (no input) -> ["default"]
|
|
208
|
+
# InvokeSubagents{targets} -> targets (verbatim)
|
|
209
|
+
# use_subagent{subagents[]} -> map(agent_name//agent//subagent_type//name//"subagent")
|
|
210
|
+
# use_subagent{agent_name} -> [agent_name]
|
|
211
|
+
# subagent{agent} -> [agent]
|
|
212
|
+
# "delegate to a native subagent"{agent_name:""} -> ["subagent"] (else default)
|
|
213
|
+
parity_json=$(cat <<'JSON'
|
|
214
|
+
[
|
|
215
|
+
{"name":"task_type","tn":"Task","ti":{"subagent_type":"code-reviewer"},"want":["code-reviewer"]},
|
|
216
|
+
{"name":"task_empty","tn":"Task","ti":{},"want":["general-purpose"]},
|
|
217
|
+
{"name":"agent_agent","tn":"Agent","ti":{"agent":"librarian"},"want":["librarian"]},
|
|
218
|
+
{"name":"spawn_type","tn":"spawn_agent","ti":{"agent_type":"worker"},"want":["worker"]},
|
|
219
|
+
{"name":"spawn_empty","tn":"spawn_agent","ti":{},"want":["default"]},
|
|
220
|
+
{"name":"invoke_targets","tn":"InvokeSubagents","ti":{"targets":["alpha","beta"]},"want":["alpha","beta"]},
|
|
221
|
+
{"name":"use_subagents_arr","tn":"use_subagent","ti":{"subagents":[{"agent_name":"planner"},{"agent":"builder"}]},"want":["planner","builder"]},
|
|
222
|
+
{"name":"use_agent_name","tn":"use_subagent","ti":{"agent_name":"solo"},"want":["solo"]},
|
|
223
|
+
{"name":"subagent_agent","tn":"subagent","ti":{"agent":"scribe"},"want":["scribe"]},
|
|
224
|
+
{"name":"delegate_default","tn":"delegate to a native subagent","ti":{"agent_name":""},"want":["subagent"]}
|
|
225
|
+
]
|
|
226
|
+
JSON
|
|
227
|
+
)
|
|
228
|
+
parity_count=$(echo "$parity_json" | jq 'length')
|
|
229
|
+
parity_bad=0
|
|
230
|
+
while IFS= read -r row; do
|
|
231
|
+
pn=$(echo "$row" | jq -r '.name')
|
|
232
|
+
ptn=$(echo "$row" | jq -r '.tn')
|
|
233
|
+
pti=$(echo "$row" | jq -c '.ti')
|
|
234
|
+
want=$(echo "$row" | jq -c '.want')
|
|
235
|
+
payload=$(jq -nc --arg tn "$ptn" --argjson ti "$pti" '{session_id:("parity-"+$tn),hook_event_name:"PreToolUse",tool_name:$tn,tool_input:$ti}')
|
|
236
|
+
ad=$(_run_and_grab "agent.delegate" "preToolUse" "$payload")
|
|
237
|
+
got=$(echo "$ad" | jq -c '.delegation.targets')
|
|
238
|
+
# The agent.delegate event must NOT carry the on-record convenience .target key
|
|
239
|
+
# (that is additive to the tool event only) -> delegation has exactly {targets}.
|
|
240
|
+
keys=$(echo "$ad" | jq -c '.delegation | keys')
|
|
241
|
+
if [[ "$got" == "$want" && "$keys" == '["targets"]' ]]; then
|
|
242
|
+
:
|
|
243
|
+
else
|
|
244
|
+
parity_bad=$((parity_bad+1))
|
|
245
|
+
_fail "PARITY [$pn]: agent.delegate targets=$got keys=$keys (expected targets=$want keys=[\"targets\"])"
|
|
246
|
+
fi
|
|
247
|
+
done < <(echo "$parity_json" | jq -c '.[]')
|
|
248
|
+
if [[ "$parity_bad" -eq 0 ]]; then
|
|
249
|
+
_pass "agent.delegate targets byte-identical to pre-refactor across all $parity_count vocabulary cases (no drift); .delegation carries exactly {targets}"
|
|
250
|
+
else
|
|
251
|
+
_fail "$parity_bad/$parity_count vocabulary cases drifted the agent.delegate stream"
|
|
252
|
+
fi
|
|
253
|
+
|
|
254
|
+
# --- (i2) parity: Codex Bash does NOT emit a NEW agent.delegate event --------
|
|
255
|
+
echo ""
|
|
256
|
+
echo "--- (i2) direct-CLI codex is surfaced only on-record, never as a new agent.delegate event ---"
|
|
257
|
+
ad_codex=$(_run_and_grab "agent.delegate" "preToolUse" "$(jq -nc '{session_id:"parity-codex",hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"codex exec run"}}')")
|
|
258
|
+
[[ -z "$ad_codex" ]] && _pass "codex Bash emits NO agent.delegate event (agent.delegate stream + delegation COUNTS unchanged)" || _fail "codex Bash unexpectedly emitted an agent.delegate event: $ad_codex"
|
|
259
|
+
|
|
260
|
+
# --- (j) PRIVACY: raw command/prompt args never appear in .delegation --------
|
|
261
|
+
echo ""
|
|
262
|
+
echo "--- (j) PRIVACY: raw codex command + subagent prompt args absent from .delegation ---"
|
|
263
|
+
SECRET="SENSITIVE_TOKEN_sk_ant_9f3a"
|
|
264
|
+
inv_j=$(jq -nc --arg s "$SECRET" '{session_id:"del-j",hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:("codex exec --cd /r \"deploy with "+$s+"\"")}}')
|
|
265
|
+
out_j=$(_run_tool_event "preToolUse" "$inv_j")
|
|
266
|
+
deleg_j=$(echo "$out_j" | jq -c '.delegation')
|
|
267
|
+
if echo "$deleg_j" | grep -q "$SECRET"; then
|
|
268
|
+
_fail "PRIVACY LEAK: .delegation contains the raw codex command args ($deleg_j)"
|
|
269
|
+
else
|
|
270
|
+
_pass ".delegation carries only the target identity, not the raw codex command args ($deleg_j)"
|
|
271
|
+
fi
|
|
272
|
+
# subagent prompt args (Task with a sensitive prompt field) must not leak into .delegation.
|
|
273
|
+
PROMPT_SECRET="PROMPT_SECRET_do_not_leak_42"
|
|
274
|
+
inv_j2=$(jq -nc --arg s "$PROMPT_SECRET" '{session_id:"del-j2",hook_event_name:"PreToolUse",tool_name:"Task",tool_input:{subagent_type:"code-reviewer",prompt:("review "+$s),description:$s}}')
|
|
275
|
+
out_j2=$(_run_tool_event "preToolUse" "$inv_j2")
|
|
276
|
+
deleg_j2=$(echo "$out_j2" | jq -c '.delegation')
|
|
277
|
+
if echo "$deleg_j2" | grep -q "$PROMPT_SECRET"; then
|
|
278
|
+
_fail "PRIVACY LEAK: .delegation contains the subagent prompt args ($deleg_j2)"
|
|
279
|
+
else
|
|
280
|
+
_pass ".delegation carries only the target identity, not the subagent prompt/description args ($deleg_j2)"
|
|
281
|
+
fi
|
|
282
|
+
# Sanity: the target IS still correctly resolved in both privacy cases.
|
|
283
|
+
[[ "$(echo "$out_j" | jq -r '.delegation.target')" == "codex" && "$(echo "$out_j2" | jq -r '.delegation.target')" == "code-reviewer" ]] \
|
|
284
|
+
&& _pass "targets still resolve correctly (codex / code-reviewer) while args stay private" \
|
|
285
|
+
|| _fail "target resolution regressed in the privacy cases"
|
|
286
|
+
|
|
287
|
+
rm -rf "$TMPDIR_EVAL"
|
|
288
|
+
|
|
289
|
+
echo ""
|
|
290
|
+
echo "Telemetry delegation enrichment: $pass passed, $fail failed"
|
|
291
|
+
[ "$fail" -eq 0 ]
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# test_telemetry_sanitize_usage.sh — console-relay .usage sanitize backstop
|
|
3
|
+
# (kontourai/flow-agents#568 follow-up: close the two HIGH review findings).
|
|
4
|
+
#
|
|
5
|
+
# The primary extractor (usage_last_turn_usage) already type-guards and
|
|
6
|
+
# allowlists every usage field at extraction time and is covered by
|
|
7
|
+
# test_telemetry_tool_usage.sh. This suite covers the SECOND layer that had
|
|
8
|
+
# zero coverage: console_telemetry_sanitize_usage (the defense-in-depth
|
|
9
|
+
# backstop in transport.sh) AND its caller console_telemetry_emit, which must
|
|
10
|
+
# FAIL CLOSED — a valid event always sanitizes to something, and an
|
|
11
|
+
# unsanitizable (non-JSON) event must be DROPPED, never relayed raw.
|
|
12
|
+
#
|
|
13
|
+
# Uses the same TELEMETRY_DIR resolution convention as the sibling telemetry
|
|
14
|
+
# tests (prefers context/scripts/telemetry when present, so this exercises the
|
|
15
|
+
# same copy CI actually runs).
|
|
16
|
+
set -uo pipefail
|
|
17
|
+
|
|
18
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
19
|
+
if [[ -d "$ROOT_DIR/context/scripts/telemetry" ]]; then
|
|
20
|
+
TELEMETRY_DIR="$ROOT_DIR/context/scripts/telemetry"
|
|
21
|
+
else
|
|
22
|
+
TELEMETRY_DIR="<bundle-root>/context/scripts/telemetry"
|
|
23
|
+
fi
|
|
24
|
+
# Filename kept in a variable so the source-tree validator (which resolves bare
|
|
25
|
+
# path literals from repo root) doesn't misread the relative transport-lib path
|
|
26
|
+
# as a root-relative ref — mirrors the sibling telemetry tests' variable idiom.
|
|
27
|
+
TRANSPORT_LIB="transport.sh"
|
|
28
|
+
TRANSPORT_SH="${TELEMETRY_DIR}/lib/${TRANSPORT_LIB}"
|
|
29
|
+
|
|
30
|
+
TMPDIR_EVAL=$(mktemp -d /tmp/eval-telemetry-sanitize.XXXXXX)
|
|
31
|
+
trap 'rm -rf "$TMPDIR_EVAL"' EXIT
|
|
32
|
+
|
|
33
|
+
pass=0; fail=0
|
|
34
|
+
_pass() { echo " ✓ $1"; pass=$((pass + 1)); }
|
|
35
|
+
_fail() { echo " ✗ $1"; fail=$((fail + 1)); }
|
|
36
|
+
|
|
37
|
+
echo "=== Console-relay .usage sanitize backstop (#568 follow-up) ==="
|
|
38
|
+
echo ""
|
|
39
|
+
|
|
40
|
+
if [[ ! -f "$TRANSPORT_SH" ]]; then
|
|
41
|
+
_fail "transport.sh not found at $TRANSPORT_SH"
|
|
42
|
+
echo "Cannot continue without transport script"
|
|
43
|
+
exit 1
|
|
44
|
+
fi
|
|
45
|
+
|
|
46
|
+
# Run console_telemetry_sanitize_usage in a clean subshell (transport.sh sources
|
|
47
|
+
# usage_model_guard.sh itself, so the allowlist/bound constants resolve).
|
|
48
|
+
run_sanitize() {
|
|
49
|
+
EV="$1" TELEMETRY_DIR="$TELEMETRY_DIR" TRANSPORT_LIB="$TRANSPORT_LIB" bash -c '
|
|
50
|
+
source "$TELEMETRY_DIR/lib/$TRANSPORT_LIB"
|
|
51
|
+
console_telemetry_sanitize_usage "$EV"
|
|
52
|
+
'
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
# Same, but with the shared guard constants forced empty to simulate a partial
|
|
56
|
+
# dist/ sync that dropped usage_model_guard.sh — must still fail closed.
|
|
57
|
+
run_sanitize_no_guard() {
|
|
58
|
+
EV="$1" TELEMETRY_DIR="$TELEMETRY_DIR" TRANSPORT_LIB="$TRANSPORT_LIB" bash -c '
|
|
59
|
+
source "$TELEMETRY_DIR/lib/$TRANSPORT_LIB"
|
|
60
|
+
USAGE_MODEL_REGEX=""; USAGE_MODEL_MAX_LEN=""; USAGE_NUMERIC_MIN=""; USAGE_NUMERIC_MAX=""
|
|
61
|
+
console_telemetry_sanitize_usage "$EV"
|
|
62
|
+
'
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
# Drive the full relay wrapper with the network POST stubbed to capture what
|
|
66
|
+
# WOULD leave the machine (mirrors test_telemetry.sh's console_post_json stub).
|
|
67
|
+
# Writes the relayed body to $CAP, or leaves $CAP absent when nothing is relayed.
|
|
68
|
+
run_emit() {
|
|
69
|
+
local ev="$1" cap="$2"
|
|
70
|
+
rm -f "$cap"
|
|
71
|
+
EV="$ev" CAP="$cap" TELEMETRY_DIR="$TELEMETRY_DIR" TRANSPORT_LIB="$TRANSPORT_LIB" bash -c '
|
|
72
|
+
source "$TELEMETRY_DIR/lib/$TRANSPORT_LIB"
|
|
73
|
+
console_telemetry_endpoint_url() { echo "https://console.example.test/records"; }
|
|
74
|
+
console_post_json() { printf "%s" "$2" > "$CAP"; }
|
|
75
|
+
console_telemetry_emit "$EV"
|
|
76
|
+
'
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
SECRET_MODEL="sk-ant-api03-abcdefghijklmnopqrstuv"
|
|
80
|
+
|
|
81
|
+
# --- console_telemetry_sanitize_usage: primary sanitize behavior ---
|
|
82
|
+
echo "--- console_telemetry_sanitize_usage: field-level sanitize ---"
|
|
83
|
+
|
|
84
|
+
out=$(run_sanitize "{\"type\":\"tool\",\"usage\":{\"model\":\"$SECRET_MODEL\",\"input_tokens\":10}}")
|
|
85
|
+
[[ "$(echo "$out" | jq -r '.usage.model')" == "null" ]] \
|
|
86
|
+
&& _pass "secret-shaped model (sk-ant-api03-...) is nulled, never relayed" \
|
|
87
|
+
|| _fail "expected .usage.model=null for secret model, got '$(echo "$out" | jq -c '.usage.model')'"
|
|
88
|
+
[[ "$(echo "$out" | jq -r '.usage.input_tokens')" == "10" ]] \
|
|
89
|
+
&& _pass "an in-bounds token survives alongside a rejected model" \
|
|
90
|
+
|| _fail "expected .usage.input_tokens=10, got '$(echo "$out" | jq -c '.usage.input_tokens')'"
|
|
91
|
+
|
|
92
|
+
out=$(run_sanitize '{"type":"tool","usage":"i-am-not-an-object"}')
|
|
93
|
+
[[ "$(echo "$out" | jq -r '.usage')" == "null" ]] \
|
|
94
|
+
&& _pass "a non-object .usage is nulled entirely (fail closed on wrong shape)" \
|
|
95
|
+
|| _fail "expected .usage=null for a string .usage, got '$(echo "$out" | jq -c '.usage')'"
|
|
96
|
+
|
|
97
|
+
out=$(run_sanitize '{"type":"tool","usage":{"model":"claude-opus-4-8","input_tokens":-500}}')
|
|
98
|
+
[[ "$(echo "$out" | jq -r '.usage.input_tokens')" == "null" ]] \
|
|
99
|
+
&& _pass "a negative token count (-500) degrades to null, never a negative number" \
|
|
100
|
+
|| _fail "expected .usage.input_tokens=null for -500, got '$(echo "$out" | jq -c '.usage.input_tokens')'"
|
|
101
|
+
|
|
102
|
+
out=$(run_sanitize '{"type":"tool","usage":{"model":"claude-opus-4-8","input_tokens":1e308}}')
|
|
103
|
+
[[ "$(echo "$out" | jq -r '.usage.input_tokens')" == "null" ]] \
|
|
104
|
+
&& _pass "an absurd-magnitude token (1e308) degrades to null" \
|
|
105
|
+
|| _fail "expected .usage.input_tokens=null for 1e308, got '$(echo "$out" | jq -c '.usage.input_tokens')'"
|
|
106
|
+
|
|
107
|
+
out=$(run_sanitize '{"type":"tool","usage":{"model":"claude-opus-4-8","input_tokens":100,"output_tokens":20}}')
|
|
108
|
+
if [[ "$(echo "$out" | jq -r '.usage.model')" == "claude-opus-4-8" \
|
|
109
|
+
&& "$(echo "$out" | jq -r '.usage.input_tokens')" == "100" \
|
|
110
|
+
&& "$(echo "$out" | jq -r '.usage.output_tokens')" == "20" ]]; then
|
|
111
|
+
_pass "a legitimate allowlisted model with in-bounds tokens is preserved unchanged"
|
|
112
|
+
else
|
|
113
|
+
_fail "expected a clean .usage to survive, got '$(echo "$out" | jq -c '.usage')'"
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
out=$(run_sanitize_no_guard "{\"type\":\"tool\",\"usage\":{\"model\":\"$SECRET_MODEL\",\"input_tokens\":10}}")
|
|
117
|
+
[[ "$(echo "$out" | jq -r '.usage')" == "null" ]] \
|
|
118
|
+
&& _pass "missing shared guard constants (packaging defect) fails closed: .usage nulled" \
|
|
119
|
+
|| _fail "expected .usage=null when guard constants are empty, got '$(echo "$out" | jq -c '.usage')'"
|
|
120
|
+
|
|
121
|
+
# --- console_telemetry_sanitize_usage: the empty-output contract the caller relies on ---
|
|
122
|
+
echo ""
|
|
123
|
+
echo "--- console_telemetry_sanitize_usage: unparseable input => empty output ---"
|
|
124
|
+
out=$(run_sanitize 'this is not json {')
|
|
125
|
+
[[ -z "$out" ]] \
|
|
126
|
+
&& _pass "an unparseable (non-JSON) event yields EMPTY output — the drop signal for the caller" \
|
|
127
|
+
|| _fail "expected empty output for non-JSON input, got '$out'"
|
|
128
|
+
|
|
129
|
+
# --- console_telemetry_emit: FAIL CLOSED at the call site (HIGH finding #1) ---
|
|
130
|
+
echo ""
|
|
131
|
+
echo "--- console_telemetry_emit: fail-closed relay path (HIGH #1 + coverage #2) ---"
|
|
132
|
+
CAP="$TMPDIR_EVAL/relayed.json"
|
|
133
|
+
|
|
134
|
+
run_emit "{\"type\":\"tool\",\"context\":{\"cwd\":\"/tmp\"},\"usage\":{\"model\":\"$SECRET_MODEL\",\"input_tokens\":10}}" "$CAP"
|
|
135
|
+
if [[ -f "$CAP" && "$(jq -r '.usage.model' "$CAP" 2>/dev/null)" == "null" ]]; then
|
|
136
|
+
_pass "relayed event has its secret model nulled by the backstop (coverage gap closed)"
|
|
137
|
+
else
|
|
138
|
+
_fail "expected relayed .usage.model=null, got '$( [[ -f "$CAP" ]] && jq -c '.usage.model' "$CAP" || echo '<not relayed>')'"
|
|
139
|
+
fi
|
|
140
|
+
|
|
141
|
+
run_emit 'this is not json {' "$CAP"
|
|
142
|
+
[[ ! -f "$CAP" ]] \
|
|
143
|
+
&& _pass "an unsanitizable event is DROPPED, not relayed raw (fail closed, no leak)" \
|
|
144
|
+
|| _fail "FAIL OPEN: unsanitizable event was relayed: '$(cat "$CAP")'"
|
|
145
|
+
|
|
146
|
+
run_emit '{"type":"tool","context":{"cwd":"/tmp"},"usage":{"model":"claude-opus-4-8","input_tokens":100}}' "$CAP"
|
|
147
|
+
if [[ -f "$CAP" && "$(jq -r '.usage.model' "$CAP" 2>/dev/null)" == "claude-opus-4-8" ]]; then
|
|
148
|
+
_pass "a clean event still relays normally (fail-closed drop never fires a false positive)"
|
|
149
|
+
else
|
|
150
|
+
_fail "expected a clean event to relay with model intact, got '$( [[ -f "$CAP" ]] && jq -c '.usage' "$CAP" || echo '<not relayed>')'"
|
|
151
|
+
fi
|
|
152
|
+
|
|
153
|
+
echo ""
|
|
154
|
+
echo "Telemetry sanitize usage: $pass passed, $fail failed"
|
|
155
|
+
[ "$fail" -eq 0 ]
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# test_telemetry_task_slug.sh — Layer 2: work-item (task_slug) attribution
|
|
3
|
+
# (console#176 / flow-agents emitter substrate)
|
|
4
|
+
#
|
|
5
|
+
# Proves that every telemetry event stamps a top-level `task_slug` sourced from
|
|
6
|
+
# the active Builder run's current.json .active_slug (the same file the
|
|
7
|
+
# economics relay reads), so tool/turn/agent events can be grouped per work
|
|
8
|
+
# item downstream (Console "Cost by work-item"). The slug is:
|
|
9
|
+
# - read from "$cwd/.kontourai/flow-agents/current.json" .active_slug, else
|
|
10
|
+
# "$cwd/.flow-agents/current.json" (fallback location), else
|
|
11
|
+
# - .artifact_dir when .active_slug is absent, else
|
|
12
|
+
# - OMITTED entirely (no task_slug key) — never fabricated — for a non-Builder
|
|
13
|
+
# session with no current.json.
|
|
14
|
+
#
|
|
15
|
+
# Only the slug STRING is stored; no prompt/args/file content. Uses the same
|
|
16
|
+
# TELEMETRY_DIR resolution convention as test_telemetry_tool_usage.sh (prefers
|
|
17
|
+
# context/scripts/telemetry when present, so this exercises the copy CI runs),
|
|
18
|
+
# the same hermetic env, and FLOW_AGENTS_TELEMETRY_FOREGROUND=true so
|
|
19
|
+
# assertions don't race a backgrounded subshell.
|
|
20
|
+
set -uo pipefail
|
|
21
|
+
|
|
22
|
+
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
23
|
+
if [[ -d "$ROOT_DIR/context/scripts/telemetry" ]]; then
|
|
24
|
+
TELEMETRY_DIR="$ROOT_DIR/context/scripts/telemetry"
|
|
25
|
+
else
|
|
26
|
+
TELEMETRY_DIR="<bundle-root>/context/scripts/telemetry"
|
|
27
|
+
fi
|
|
28
|
+
TELEMETRY_SH="${TELEMETRY_DIR}/telemetry.sh"
|
|
29
|
+
|
|
30
|
+
TMPDIR_EVAL=$(mktemp -d /tmp/eval-telemetry-task-slug.XXXXXX)
|
|
31
|
+
TMPLOG="${TMPDIR_EVAL}/test-output.jsonl"
|
|
32
|
+
|
|
33
|
+
pass=0; fail=0
|
|
34
|
+
_pass() { echo " ✓ $1"; pass=$((pass + 1)); }
|
|
35
|
+
_fail() { echo " ✗ $1"; fail=$((fail + 1)); }
|
|
36
|
+
|
|
37
|
+
echo "=== Layer 2: Telemetry Work-Item (task_slug) Attribution (console#176) ==="
|
|
38
|
+
echo ""
|
|
39
|
+
|
|
40
|
+
if [[ ! -f "$TELEMETRY_SH" ]]; then
|
|
41
|
+
_fail "telemetry.sh not found at $TELEMETRY_SH"
|
|
42
|
+
echo "Cannot continue without telemetry script"
|
|
43
|
+
rm -rf "$TMPDIR_EVAL"
|
|
44
|
+
exit 1
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
# Run a single hook event against telemetry.sh in foreground mode and return the
|
|
48
|
+
# resulting event (jq-compact, one line) from the full-channel log.
|
|
49
|
+
_run_event() {
|
|
50
|
+
local hook_type="$1" input="$2"; shift 2
|
|
51
|
+
local extra_env=("$@")
|
|
52
|
+
local common_env=(
|
|
53
|
+
HOME="${TMPDIR_EVAL}/home"
|
|
54
|
+
TELEMETRY_ENABLED=true
|
|
55
|
+
TELEMETRY_CHANNELS=full
|
|
56
|
+
TELEMETRY_CHANNEL_FULL_LOG_FILE="$TMPLOG"
|
|
57
|
+
FLOW_AGENTS_TELEMETRY_FOREGROUND=true
|
|
58
|
+
TELEMETRY_CONFIG_FILE="$TMPDIR_EVAL/telemetry.conf"
|
|
59
|
+
TELEMETRY_DATA_DIR="$TMPDIR_EVAL"
|
|
60
|
+
TELEMETRY_SESSION_DIR="$TMPDIR_EVAL/sessions"
|
|
61
|
+
TELEMETRY_USAGE_TRACKING=true
|
|
62
|
+
)
|
|
63
|
+
mkdir -p "${TMPDIR_EVAL}/home" "${TMPDIR_EVAL}/sessions"
|
|
64
|
+
|
|
65
|
+
local before_lines
|
|
66
|
+
touch "$TMPLOG"
|
|
67
|
+
before_lines=$(wc -l < "$TMPLOG" | tr -d ' ')
|
|
68
|
+
|
|
69
|
+
echo "$input" | env "${common_env[@]}" ${extra_env[@]+"${extra_env[@]}"} bash "$TELEMETRY_SH" "$hook_type" dev 2>/dev/null
|
|
70
|
+
|
|
71
|
+
tail -n +"$((before_lines + 1))" "$TMPLOG" 2>/dev/null | tail -1
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
# --- 1. Canonical: cwd/.kontourai/flow-agents/current.json .active_slug -------
|
|
75
|
+
echo "--- preToolUse in a Builder cwd (.kontourai/flow-agents/current.json .active_slug) stamps task_slug ---"
|
|
76
|
+
CWD1="${TMPDIR_EVAL}/builder-cwd"
|
|
77
|
+
mkdir -p "$CWD1/.kontourai/flow-agents"
|
|
78
|
+
echo '{"active_slug":"kontourai-flow-agents-568","artifact_dir":"/some/dir"}' > "$CWD1/.kontourai/flow-agents/current.json"
|
|
79
|
+
input1=$(jq -nc --arg cwd "$CWD1" '{session_id:"task-slug-1",cwd:$cwd,hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"echo hi"}}')
|
|
80
|
+
out1=$(_run_event "preToolUse" "$input1")
|
|
81
|
+
|
|
82
|
+
if [[ -n "$out1" ]]; then
|
|
83
|
+
ts1=$(echo "$out1" | jq -r '.task_slug // empty')
|
|
84
|
+
et1=$(echo "$out1" | jq -r '.event_type // empty')
|
|
85
|
+
[[ "$et1" == "tool.invoke" ]] && _pass "preToolUse maps to tool.invoke" || _fail "expected tool.invoke, got $et1"
|
|
86
|
+
[[ "$ts1" == "kontourai-flow-agents-568" ]] && _pass "task_slug is the active_slug from .kontourai/flow-agents/current.json" || _fail "expected task_slug=kontourai-flow-agents-568, got '$ts1'"
|
|
87
|
+
else
|
|
88
|
+
_fail "no tool.invoke event emitted for Builder-cwd case"
|
|
89
|
+
fi
|
|
90
|
+
|
|
91
|
+
# --- 2. Fallback location: cwd/.flow-agents/current.json ----------------------
|
|
92
|
+
echo ""
|
|
93
|
+
echo "--- preToolUse with only the .flow-agents/current.json fallback location ---"
|
|
94
|
+
CWD2="${TMPDIR_EVAL}/builder-cwd-fallback"
|
|
95
|
+
mkdir -p "$CWD2/.flow-agents"
|
|
96
|
+
echo '{"active_slug":"fallback-slug"}' > "$CWD2/.flow-agents/current.json"
|
|
97
|
+
input2=$(jq -nc --arg cwd "$CWD2" '{session_id:"task-slug-2",cwd:$cwd,hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"echo hi"}}')
|
|
98
|
+
out2=$(_run_event "preToolUse" "$input2")
|
|
99
|
+
|
|
100
|
+
if [[ -n "$out2" ]]; then
|
|
101
|
+
ts2=$(echo "$out2" | jq -r '.task_slug // empty')
|
|
102
|
+
[[ "$ts2" == "fallback-slug" ]] && _pass "task_slug reads from the .flow-agents/current.json fallback when .kontourai/... is absent" || _fail "expected task_slug=fallback-slug, got '$ts2'"
|
|
103
|
+
else
|
|
104
|
+
_fail "no tool.invoke event emitted for fallback-location case"
|
|
105
|
+
fi
|
|
106
|
+
|
|
107
|
+
# --- 3. artifact_dir fallback when .active_slug is absent ---------------------
|
|
108
|
+
echo ""
|
|
109
|
+
echo "--- preToolUse where current.json has no active_slug: falls back to artifact_dir ---"
|
|
110
|
+
CWD3="${TMPDIR_EVAL}/builder-cwd-artifactdir"
|
|
111
|
+
mkdir -p "$CWD3/.kontourai/flow-agents"
|
|
112
|
+
echo '{"artifact_dir":"only-artifact-dir"}' > "$CWD3/.kontourai/flow-agents/current.json"
|
|
113
|
+
input3=$(jq -nc --arg cwd "$CWD3" '{session_id:"task-slug-3",cwd:$cwd,hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"echo hi"}}')
|
|
114
|
+
out3=$(_run_event "preToolUse" "$input3")
|
|
115
|
+
|
|
116
|
+
if [[ -n "$out3" ]]; then
|
|
117
|
+
ts3=$(echo "$out3" | jq -r '.task_slug // empty')
|
|
118
|
+
[[ "$ts3" == "only-artifact-dir" ]] && _pass "task_slug falls back to artifact_dir when active_slug is absent" || _fail "expected task_slug=only-artifact-dir, got '$ts3'"
|
|
119
|
+
else
|
|
120
|
+
_fail "no tool.invoke event emitted for artifact_dir-fallback case"
|
|
121
|
+
fi
|
|
122
|
+
|
|
123
|
+
# --- 4. Non-Builder session: NO current.json => NO task_slug key (never fabricated) ---
|
|
124
|
+
echo ""
|
|
125
|
+
echo "--- preToolUse in a non-Builder cwd (no current.json): no task_slug key at all ---"
|
|
126
|
+
CWD4="${TMPDIR_EVAL}/plain-cwd"
|
|
127
|
+
mkdir -p "$CWD4"
|
|
128
|
+
input4=$(jq -nc --arg cwd "$CWD4" '{session_id:"task-slug-4",cwd:$cwd,hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"echo hi"}}')
|
|
129
|
+
out4=$(_run_event "preToolUse" "$input4")
|
|
130
|
+
|
|
131
|
+
if [[ -n "$out4" ]]; then
|
|
132
|
+
has_ts4=$(echo "$out4" | jq -r 'has("task_slug")')
|
|
133
|
+
[[ "$has_ts4" == "false" ]] && _pass "no task_slug key when there is no current.json (never fabricated)" || _fail "expected no task_slug key, but has(\"task_slug\")=$has_ts4"
|
|
134
|
+
else
|
|
135
|
+
_fail "no tool.invoke event emitted for non-Builder case (should still emit, just without task_slug)"
|
|
136
|
+
fi
|
|
137
|
+
|
|
138
|
+
# --- 5. Empty active_slug/artifact_dir => still no task_slug key --------------
|
|
139
|
+
echo ""
|
|
140
|
+
echo "--- preToolUse where current.json exists but active_slug/artifact_dir are empty: no task_slug key ---"
|
|
141
|
+
CWD5="${TMPDIR_EVAL}/builder-cwd-empty"
|
|
142
|
+
mkdir -p "$CWD5/.kontourai/flow-agents"
|
|
143
|
+
echo '{"active_slug":"","artifact_dir":""}' > "$CWD5/.kontourai/flow-agents/current.json"
|
|
144
|
+
input5=$(jq -nc --arg cwd "$CWD5" '{session_id:"task-slug-5",cwd:$cwd,hook_event_name:"PreToolUse",tool_name:"Bash",tool_input:{command:"echo hi"}}')
|
|
145
|
+
out5=$(_run_event "preToolUse" "$input5")
|
|
146
|
+
|
|
147
|
+
if [[ -n "$out5" ]]; then
|
|
148
|
+
has_ts5=$(echo "$out5" | jq -r 'has("task_slug")')
|
|
149
|
+
[[ "$has_ts5" == "false" ]] && _pass "empty active_slug/artifact_dir yields no task_slug key (not an empty string)" || _fail "expected no task_slug key for empty slug, but has(\"task_slug\")=$has_ts5"
|
|
150
|
+
else
|
|
151
|
+
_fail "no tool.invoke event emitted for empty-slug case"
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
rm -rf "$TMPDIR_EVAL"
|
|
155
|
+
|
|
156
|
+
echo ""
|
|
157
|
+
echo "Telemetry task_slug attribution: $pass passed, $fail failed"
|
|
158
|
+
[ "$fail" -eq 0 ]
|