@sun-asterisk/sungen 3.3.0-alpha.1 → 3.3.0-alpha.10
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/dist/capabilities/discover.d.ts +4 -0
- package/dist/capabilities/discover.d.ts.map +1 -1
- package/dist/capabilities/discover.js +16 -2
- package/dist/capabilities/discover.js.map +1 -1
- package/dist/cli/case-triage-hint.d.ts +14 -0
- package/dist/cli/case-triage-hint.d.ts.map +1 -0
- package/dist/cli/case-triage-hint.js +23 -0
- package/dist/cli/case-triage-hint.js.map +1 -0
- package/dist/cli/commands/audit.js +1 -1
- package/dist/cli/commands/audit.js.map +1 -1
- package/dist/cli/commands/contract-derive-command.d.ts +4 -2
- package/dist/cli/commands/contract-derive-command.d.ts.map +1 -1
- package/dist/cli/commands/contract-derive-command.js +19 -5
- package/dist/cli/commands/contract-derive-command.js.map +1 -1
- package/dist/cli/commands/contract.d.ts +3 -0
- package/dist/cli/commands/contract.d.ts.map +1 -1
- package/dist/cli/commands/contract.js +40 -7
- package/dist/cli/commands/contract.js.map +1 -1
- package/dist/cli/commands/delivery.d.ts.map +1 -1
- package/dist/cli/commands/delivery.js +59 -18
- package/dist/cli/commands/delivery.js.map +1 -1
- package/dist/cli/commands/gate.d.ts.map +1 -1
- package/dist/cli/commands/gate.js +2 -1
- package/dist/cli/commands/gate.js.map +1 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +14 -2
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/journey.d.ts.map +1 -1
- package/dist/cli/commands/journey.js +6 -4
- package/dist/cli/commands/journey.js.map +1 -1
- package/dist/cli/commands/next.d.ts +7 -2
- package/dist/cli/commands/next.d.ts.map +1 -1
- package/dist/cli/commands/next.js +41 -10
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/triage.d.ts +2 -1
- package/dist/cli/commands/triage.d.ts.map +1 -1
- package/dist/cli/commands/triage.js +45 -3
- package/dist/cli/commands/triage.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +6 -2
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/json-error-on-exit.d.ts +34 -0
- package/dist/cli/json-error-on-exit.d.ts.map +1 -0
- package/dist/cli/json-error-on-exit.js +63 -0
- package/dist/cli/json-error-on-exit.js.map +1 -0
- package/dist/cli/project-sungen-invocation.d.ts +13 -0
- package/dist/cli/project-sungen-invocation.d.ts.map +1 -0
- package/dist/cli/project-sungen-invocation.js +95 -0
- package/dist/cli/project-sungen-invocation.js.map +1 -0
- package/dist/cli/run-command-hints.d.ts +9 -0
- package/dist/cli/run-command-hints.d.ts.map +1 -0
- package/dist/cli/run-command-hints.js +84 -0
- package/dist/cli/run-command-hints.js.map +1 -0
- package/dist/cli/waiting-for-you-block.d.ts +18 -0
- package/dist/cli/waiting-for-you-block.d.ts.map +1 -0
- package/dist/cli/waiting-for-you-block.js +22 -0
- package/dist/cli/waiting-for-you-block.js.map +1 -0
- package/dist/contract/accept-opaque-steps.d.ts +3 -0
- package/dist/contract/accept-opaque-steps.d.ts.map +1 -0
- package/dist/contract/accept-opaque-steps.js +114 -0
- package/dist/contract/accept-opaque-steps.js.map +1 -0
- package/dist/contract/approve-contract.d.ts +8 -1
- package/dist/contract/approve-contract.d.ts.map +1 -1
- package/dist/contract/approve-contract.js +6 -0
- package/dist/contract/approve-contract.js.map +1 -1
- package/dist/contract/build-contract-verdict.js +2 -2
- package/dist/contract/build-contract-verdict.js.map +1 -1
- package/dist/contract/build-trace-conformance.d.ts +5 -1
- package/dist/contract/build-trace-conformance.d.ts.map +1 -1
- package/dist/contract/build-trace-conformance.js +12 -14
- package/dist/contract/build-trace-conformance.js.map +1 -1
- package/dist/contract/classify-contract-change.d.ts +3 -2
- package/dist/contract/classify-contract-change.d.ts.map +1 -1
- package/dist/contract/classify-contract-change.js.map +1 -1
- package/dist/contract/classify-trace-conformance.d.ts +18 -3
- package/dist/contract/classify-trace-conformance.d.ts.map +1 -1
- package/dist/contract/classify-trace-conformance.js +64 -17
- package/dist/contract/classify-trace-conformance.js.map +1 -1
- package/dist/contract/contract-schema.d.ts +21 -0
- package/dist/contract/contract-schema.d.ts.map +1 -1
- package/dist/contract/contract-schema.js +25 -3
- package/dist/contract/contract-schema.js.map +1 -1
- package/dist/contract/contracts-lock-file.d.ts.map +1 -1
- package/dist/contract/contracts-lock-file.js +1 -0
- package/dist/contract/contracts-lock-file.js.map +1 -1
- package/dist/contract/derive-free-feature.d.ts +19 -0
- package/dist/contract/derive-free-feature.d.ts.map +1 -1
- package/dist/contract/derive-free-feature.js +40 -2
- package/dist/contract/derive-free-feature.js.map +1 -1
- package/dist/contract/project-contract-blockers.d.ts.map +1 -1
- package/dist/contract/project-contract-blockers.js +4 -2
- package/dist/contract/project-contract-blockers.js.map +1 -1
- package/dist/contract/record-contract-approval.d.ts +16 -1
- package/dist/contract/record-contract-approval.d.ts.map +1 -1
- package/dist/contract/record-contract-approval.js +29 -1
- package/dist/contract/record-contract-approval.js.map +1 -1
- package/dist/contract/render-free-gherkin.d.ts +2 -0
- package/dist/contract/render-free-gherkin.d.ts.map +1 -1
- package/dist/contract/render-free-gherkin.js +6 -0
- package/dist/contract/render-free-gherkin.js.map +1 -1
- package/dist/contract/resolve-unit-trace-identities.d.ts +12 -0
- package/dist/contract/resolve-unit-trace-identities.d.ts.map +1 -1
- package/dist/contract/resolve-unit-trace-identities.js +33 -49
- package/dist/contract/resolve-unit-trace-identities.js.map +1 -1
- package/dist/contract/trace/collect-trace-evidence.d.ts +16 -5
- package/dist/contract/trace/collect-trace-evidence.d.ts.map +1 -1
- package/dist/contract/trace/collect-trace-evidence.js +101 -43
- package/dist/contract/trace/collect-trace-evidence.js.map +1 -1
- package/dist/contract/trace/read-file-once.d.ts +20 -0
- package/dist/contract/trace/read-file-once.d.ts.map +1 -0
- package/dist/contract/trace/read-file-once.js +135 -0
- package/dist/contract/trace/read-file-once.js.map +1 -0
- package/dist/contract/trace/scenario-id-claims.d.ts +11 -0
- package/dist/contract/trace/scenario-id-claims.d.ts.map +1 -0
- package/dist/contract/trace/scenario-id-claims.js +89 -0
- package/dist/contract/trace/scenario-id-claims.js.map +1 -0
- package/dist/contract/trace/select-final-attempt.d.ts +4 -2
- package/dist/contract/trace/select-final-attempt.d.ts.map +1 -1
- package/dist/contract/trace/select-final-attempt.js +7 -4
- package/dist/contract/trace/select-final-attempt.js.map +1 -1
- package/dist/contract/trace/test-step-join.d.ts +3 -3
- package/dist/contract/trace/test-step-join.d.ts.map +1 -1
- package/dist/contract/trace/test-step-join.js +2 -2
- package/dist/contract/trace/test-step-join.js.map +1 -1
- package/dist/contract/trace/trace-binding.d.ts +3 -2
- package/dist/contract/trace/trace-binding.d.ts.map +1 -1
- package/dist/contract/trace/trace-binding.js +6 -3
- package/dist/contract/trace/trace-binding.js.map +1 -1
- package/dist/contract/trace/trace-file-reader.d.ts +14 -2
- package/dist/contract/trace/trace-file-reader.d.ts.map +1 -1
- package/dist/contract/trace/trace-file-reader.js +27 -45
- package/dist/contract/trace/trace-file-reader.js.map +1 -1
- package/dist/contract/trace/trace-freshness.d.ts +27 -0
- package/dist/contract/trace/trace-freshness.d.ts.map +1 -0
- package/dist/contract/trace/trace-freshness.js +146 -0
- package/dist/contract/trace/trace-freshness.js.map +1 -0
- package/dist/contract/trace/trace-identity-resolution.d.ts +2 -0
- package/dist/contract/trace/trace-identity-resolution.d.ts.map +1 -1
- package/dist/contract/trace/trace-identity-resolution.js +6 -3
- package/dist/contract/trace/trace-identity-resolution.js.map +1 -1
- package/dist/contract/trace/trace-run-record.d.ts +8 -3
- package/dist/contract/trace/trace-run-record.d.ts.map +1 -1
- package/dist/contract/trace/trace-run-record.js +42 -22
- package/dist/contract/trace/trace-run-record.js.map +1 -1
- package/dist/contract/trace/trace-steps.js +1 -1
- package/dist/contract/trace/trace-steps.js.map +1 -1
- package/dist/contract/trace/trace-zip-limits.d.ts +5 -1
- package/dist/contract/trace/trace-zip-limits.d.ts.map +1 -1
- package/dist/contract/trace/trace-zip-limits.js +6 -2
- package/dist/contract/trace/trace-zip-limits.js.map +1 -1
- package/dist/contract/verify-approval-decisions.d.ts.map +1 -1
- package/dist/contract/verify-approval-decisions.js +9 -4
- package/dist/contract/verify-approval-decisions.js.map +1 -1
- package/dist/decisions/confirmed-decision-commands.d.ts +11 -0
- package/dist/decisions/confirmed-decision-commands.d.ts.map +1 -1
- package/dist/decisions/confirmed-decision-commands.js +21 -3
- package/dist/decisions/confirmed-decision-commands.js.map +1 -1
- package/dist/decisions/decision-schema.d.ts +2 -1
- package/dist/decisions/decision-schema.d.ts.map +1 -1
- package/dist/decisions/decision-schema.js +2 -1
- package/dist/decisions/decision-schema.js.map +1 -1
- package/dist/decisions/git-head-trust.d.ts +12 -0
- package/dist/decisions/git-head-trust.d.ts.map +1 -1
- package/dist/decisions/git-head-trust.js +52 -0
- package/dist/decisions/git-head-trust.js.map +1 -1
- package/dist/decisions/human-confirmation.d.ts +2 -0
- package/dist/decisions/human-confirmation.d.ts.map +1 -1
- package/dist/decisions/human-confirmation.js +6 -0
- package/dist/decisions/human-confirmation.js.map +1 -1
- package/dist/decisions/legacy-waiver-migration.d.ts +8 -1
- package/dist/decisions/legacy-waiver-migration.d.ts.map +1 -1
- package/dist/decisions/legacy-waiver-migration.js +13 -4
- package/dist/decisions/legacy-waiver-migration.js.map +1 -1
- package/dist/exporters/csv-exporter.d.ts +11 -2
- package/dist/exporters/csv-exporter.d.ts.map +1 -1
- package/dist/exporters/csv-exporter.js +8 -4
- package/dist/exporters/csv-exporter.js.map +1 -1
- package/dist/exporters/matrix/export.d.ts +6 -1
- package/dist/exporters/matrix/export.d.ts.map +1 -1
- package/dist/exporters/matrix/export.js +11 -4
- package/dist/exporters/matrix/export.js.map +1 -1
- package/dist/exporters/matrix/xlsx-cells.js +1 -1
- package/dist/exporters/matrix/xlsx-cells.js.map +1 -1
- package/dist/exporters/xlsx-exporter.d.ts +3 -2
- package/dist/exporters/xlsx-exporter.d.ts.map +1 -1
- package/dist/exporters/xlsx-exporter.js +4 -4
- package/dist/exporters/xlsx-exporter.js.map +1 -1
- package/dist/graph/board-human-actions.d.ts +5 -0
- package/dist/graph/board-human-actions.d.ts.map +1 -0
- package/dist/graph/board-human-actions.js +83 -0
- package/dist/graph/board-human-actions.js.map +1 -0
- package/dist/graph/evaluate-graph.d.ts +21 -1
- package/dist/graph/evaluate-graph.d.ts.map +1 -1
- package/dist/graph/evaluate-graph.js +37 -9
- package/dist/graph/evaluate-graph.js.map +1 -1
- package/dist/graph/human-action.d.ts +21 -0
- package/dist/graph/human-action.d.ts.map +1 -0
- package/dist/graph/human-action.js +3 -0
- package/dist/graph/human-action.js.map +1 -0
- package/dist/graph/manual-triage-decisions.d.ts +19 -0
- package/dist/graph/manual-triage-decisions.d.ts.map +1 -0
- package/dist/graph/manual-triage-decisions.js +53 -0
- package/dist/graph/manual-triage-decisions.js.map +1 -0
- package/dist/graph/node-decl.d.ts +16 -0
- package/dist/graph/node-decl.d.ts.map +1 -1
- package/dist/graph/node-decl.js +4 -1
- package/dist/graph/node-decl.js.map +1 -1
- package/dist/graph/nodes/test-case-contract-nodes.d.ts +3 -1
- package/dist/graph/nodes/test-case-contract-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/test-case-contract-nodes.js +22 -6
- package/dist/graph/nodes/test-case-contract-nodes.js.map +1 -1
- package/dist/graph/nodes/test-case-nodes.d.ts +3 -0
- package/dist/graph/nodes/test-case-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/test-case-nodes.js +33 -4
- package/dist/graph/nodes/test-case-nodes.js.map +1 -1
- package/dist/graph/nodes/unit-audit-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/unit-audit-nodes.js +1 -0
- package/dist/graph/nodes/unit-audit-nodes.js.map +1 -1
- package/dist/graph/nodes/unit-contract-node.d.ts +2 -1
- package/dist/graph/nodes/unit-contract-node.d.ts.map +1 -1
- package/dist/graph/nodes/unit-contract-node.js +16 -1
- package/dist/graph/nodes/unit-contract-node.js.map +1 -1
- package/dist/graph/nodes/unit-design-nodes.d.ts.map +1 -1
- package/dist/graph/nodes/unit-design-nodes.js +2 -1
- package/dist/graph/nodes/unit-design-nodes.js.map +1 -1
- package/dist/graph/test-case-results.d.ts +1 -0
- package/dist/graph/test-case-results.d.ts.map +1 -1
- package/dist/graph/test-case-results.js +27 -3
- package/dist/graph/test-case-results.js.map +1 -1
- package/dist/graph/test-case-satisfied.d.ts +5 -4
- package/dist/graph/test-case-satisfied.d.ts.map +1 -1
- package/dist/graph/test-case-satisfied.js +4 -0
- package/dist/graph/test-case-satisfied.js.map +1 -1
- package/dist/graph/test-case-state-shape.d.ts +7 -1
- package/dist/graph/test-case-state-shape.d.ts.map +1 -1
- package/dist/graph/unit-artifact-probes.d.ts.map +1 -1
- package/dist/graph/unit-artifact-probes.js +3 -1
- package/dist/graph/unit-artifact-probes.js.map +1 -1
- package/dist/graph/unit-results-freshness.d.ts +29 -0
- package/dist/graph/unit-results-freshness.d.ts.map +1 -0
- package/dist/graph/unit-results-freshness.js +213 -0
- package/dist/graph/unit-results-freshness.js.map +1 -0
- package/dist/harness/audit.d.ts +3 -2
- package/dist/harness/audit.d.ts.map +1 -1
- package/dist/harness/audit.js +4 -17
- package/dist/harness/audit.js.map +1 -1
- package/dist/harness/catalog/gate-rules.yaml +3 -3
- package/dist/harness/defect-draft.d.ts.map +1 -1
- package/dist/harness/defect-draft.js +12 -2
- package/dist/harness/defect-draft.js.map +1 -1
- package/dist/harness/defects.d.ts +14 -0
- package/dist/harness/defects.d.ts.map +1 -1
- package/dist/harness/defects.js +14 -10
- package/dist/harness/defects.js.map +1 -1
- package/dist/harness/flow-check.d.ts +9 -0
- package/dist/harness/flow-check.d.ts.map +1 -1
- package/dist/harness/flow-check.js +11 -0
- package/dist/harness/flow-check.js.map +1 -1
- package/dist/harness/gates/audit-gate-verdict.d.ts.map +1 -1
- package/dist/harness/gates/audit-gate-verdict.js +2 -1
- package/dist/harness/gates/audit-gate-verdict.js.map +1 -1
- package/dist/harness/gates/audit-input-hash.d.ts +2 -0
- package/dist/harness/gates/audit-input-hash.d.ts.map +1 -1
- package/dist/harness/gates/audit-input-hash.js +30 -2
- package/dist/harness/gates/audit-input-hash.js.map +1 -1
- package/dist/harness/gates/audit-report-verification.d.ts +17 -6
- package/dist/harness/gates/audit-report-verification.d.ts.map +1 -1
- package/dist/harness/gates/audit-report-verification.js +55 -21
- package/dist/harness/gates/audit-report-verification.js.map +1 -1
- package/dist/harness/gates/delivery-checklist.d.ts +3 -0
- package/dist/harness/gates/delivery-checklist.d.ts.map +1 -1
- package/dist/harness/gates/delivery-checklist.js +39 -6
- package/dist/harness/gates/delivery-checklist.js.map +1 -1
- package/dist/harness/gates/delivery-decision-gate.d.ts +4 -0
- package/dist/harness/gates/delivery-decision-gate.d.ts.map +1 -1
- package/dist/harness/gates/delivery-decision-gate.js +26 -1
- package/dist/harness/gates/delivery-decision-gate.js.map +1 -1
- package/dist/harness/gates/delivery-decision-step.d.ts +4 -1
- package/dist/harness/gates/delivery-decision-step.d.ts.map +1 -1
- package/dist/harness/gates/delivery-decision-step.js +17 -2
- package/dist/harness/gates/delivery-decision-step.js.map +1 -1
- package/dist/harness/gates/in-run-decision-check.d.ts.map +1 -1
- package/dist/harness/gates/in-run-decision-check.js +40 -12
- package/dist/harness/gates/in-run-decision-check.js.map +1 -1
- package/dist/harness/gates/migrated-waiver-import-bounds.d.ts +13 -0
- package/dist/harness/gates/migrated-waiver-import-bounds.d.ts.map +1 -0
- package/dist/harness/gates/migrated-waiver-import-bounds.js +141 -0
- package/dist/harness/gates/migrated-waiver-import-bounds.js.map +1 -0
- package/dist/harness/gates/migrated-waiver-review.d.ts +14 -4
- package/dist/harness/gates/migrated-waiver-review.d.ts.map +1 -1
- package/dist/harness/gates/migrated-waiver-review.js +78 -80
- package/dist/harness/gates/migrated-waiver-review.js.map +1 -1
- package/dist/harness/journey.d.ts +40 -0
- package/dist/harness/journey.d.ts.map +1 -1
- package/dist/harness/journey.js +155 -22
- package/dist/harness/journey.js.map +1 -1
- package/dist/harness/next-step.d.ts +19 -0
- package/dist/harness/next-step.d.ts.map +1 -1
- package/dist/harness/next-step.js +21 -0
- package/dist/harness/next-step.js.map +1 -1
- package/dist/harness/provenance.d.ts +29 -0
- package/dist/harness/provenance.d.ts.map +1 -1
- package/dist/harness/provenance.js +109 -9
- package/dist/harness/provenance.js.map +1 -1
- package/dist/harness/triage-manual-classification.d.ts +32 -0
- package/dist/harness/triage-manual-classification.d.ts.map +1 -0
- package/dist/harness/triage-manual-classification.js +56 -0
- package/dist/harness/triage-manual-classification.js.map +1 -0
- package/dist/harness/unit-paths.d.ts +8 -0
- package/dist/harness/unit-paths.d.ts.map +1 -1
- package/dist/harness/unit-paths.js +23 -1
- package/dist/harness/unit-paths.js.map +1 -1
- package/dist/hooks/bash-read-only-segment.d.ts +9 -0
- package/dist/hooks/bash-read-only-segment.d.ts.map +1 -0
- package/dist/hooks/bash-read-only-segment.js +168 -0
- package/dist/hooks/bash-read-only-segment.js.map +1 -0
- package/dist/hooks/bash-write-targets.d.ts +12 -2
- package/dist/hooks/bash-write-targets.d.ts.map +1 -1
- package/dist/hooks/bash-write-targets.js +122 -29
- package/dist/hooks/bash-write-targets.js.map +1 -1
- package/dist/hooks/guard-protected-paths.d.ts +4 -0
- package/dist/hooks/guard-protected-paths.d.ts.map +1 -1
- package/dist/hooks/guard-protected-paths.js +13 -3
- package/dist/hooks/guard-protected-paths.js.map +1 -1
- package/dist/hooks/guard-rules.d.ts +0 -17
- package/dist/hooks/guard-rules.d.ts.map +1 -1
- package/dist/hooks/guard-rules.js +79 -10
- package/dist/hooks/guard-rules.js.map +1 -1
- package/dist/hooks/guard-tty-spoof-rule.d.ts +3 -1
- package/dist/hooks/guard-tty-spoof-rule.d.ts.map +1 -1
- package/dist/hooks/guard-tty-spoof-rule.js +3 -2
- package/dist/hooks/guard-tty-spoof-rule.js.map +1 -1
- package/dist/hooks/hand-back-core.d.ts +9 -4
- package/dist/hooks/hand-back-core.d.ts.map +1 -1
- package/dist/hooks/hand-back-core.js +24 -11
- package/dist/hooks/hand-back-core.js.map +1 -1
- package/dist/hooks/session-start-unit-state-hook.d.ts +2 -1
- package/dist/hooks/session-start-unit-state-hook.d.ts.map +1 -1
- package/dist/hooks/session-start-unit-state-hook.js +9 -4
- package/dist/hooks/session-start-unit-state-hook.js.map +1 -1
- package/dist/hooks/stop-next-step-hook.d.ts.map +1 -1
- package/dist/hooks/stop-next-step-hook.js +1 -0
- package/dist/hooks/stop-next-step-hook.js.map +1 -1
- package/dist/orchestrator/assets-drift.d.ts +5 -0
- package/dist/orchestrator/assets-drift.d.ts.map +1 -1
- package/dist/orchestrator/assets-drift.js +12 -3
- package/dist/orchestrator/assets-drift.js.map +1 -1
- package/dist/orchestrator/project-initializer.d.ts.map +1 -1
- package/dist/orchestrator/project-initializer.js +1 -0
- package/dist/orchestrator/project-initializer.js.map +1 -1
- package/dist/orchestrator/templates/ai-src/commands/create-test.md +6 -3
- package/dist/orchestrator/templates/ai-src/commands/delivery.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/review.md +2 -0
- package/dist/orchestrator/templates/ai-src/commands/run-test.md +1 -1
- package/dist/orchestrator/templates/ai-src/partials/waiting-for-you.claude.md +11 -0
- package/dist/orchestrator/templates/ai-src/partials/waiting-for-you.codex.md +11 -0
- package/dist/orchestrator/templates/ai-src/partials/waiting-for-you.copilot.md +11 -0
- package/package.json +3 -3
- package/src/capabilities/discover.ts +15 -2
- package/src/cli/case-triage-hint.ts +31 -0
- package/src/cli/commands/audit.ts +1 -1
- package/src/cli/commands/contract-derive-command.ts +20 -8
- package/src/cli/commands/contract.ts +41 -7
- package/src/cli/commands/delivery.ts +56 -18
- package/src/cli/commands/gate.ts +2 -1
- package/src/cli/commands/generate.ts +13 -2
- package/src/cli/commands/journey.ts +8 -6
- package/src/cli/commands/next.ts +41 -12
- package/src/cli/commands/triage.ts +41 -3
- package/src/cli/commands/update.ts +6 -2
- package/src/cli/index.ts +5 -1
- package/src/cli/json-error-on-exit.ts +72 -0
- package/src/cli/project-sungen-invocation.ts +59 -0
- package/src/cli/run-command-hints.ts +47 -0
- package/src/cli/waiting-for-you-block.ts +27 -0
- package/src/contract/accept-opaque-steps.ts +114 -0
- package/src/contract/approve-contract.ts +10 -3
- package/src/contract/build-contract-verdict.ts +2 -2
- package/src/contract/build-trace-conformance.ts +11 -8
- package/src/contract/classify-contract-change.ts +3 -3
- package/src/contract/classify-trace-conformance.ts +76 -22
- package/src/contract/contract-schema.ts +31 -2
- package/src/contract/contracts-lock-file.ts +1 -0
- package/src/contract/derive-free-feature.ts +46 -3
- package/src/contract/project-contract-blockers.ts +4 -2
- package/src/contract/record-contract-approval.ts +41 -1
- package/src/contract/render-free-gherkin.ts +5 -0
- package/src/contract/resolve-unit-trace-identities.ts +35 -12
- package/src/contract/trace/collect-trace-evidence.ts +105 -36
- package/src/contract/trace/read-file-once.ts +95 -0
- package/src/contract/trace/scenario-id-claims.ts +60 -0
- package/src/contract/trace/select-final-attempt.ts +12 -5
- package/src/contract/trace/test-step-join.ts +6 -5
- package/src/contract/trace/trace-binding.ts +7 -4
- package/src/contract/trace/trace-file-reader.ts +34 -13
- package/src/contract/trace/trace-freshness.ts +110 -0
- package/src/contract/trace/trace-identity-resolution.ts +7 -4
- package/src/contract/trace/trace-run-record.ts +37 -15
- package/src/contract/trace/trace-steps.ts +1 -1
- package/src/contract/trace/trace-zip-limits.ts +6 -2
- package/src/contract/verify-approval-decisions.ts +9 -5
- package/src/decisions/confirmed-decision-commands.ts +25 -4
- package/src/decisions/decision-schema.ts +2 -1
- package/src/decisions/git-head-trust.ts +44 -0
- package/src/decisions/human-confirmation.ts +5 -0
- package/src/decisions/legacy-waiver-migration.ts +14 -3
- package/src/exporters/csv-exporter.ts +12 -4
- package/src/exporters/matrix/export.ts +11 -4
- package/src/exporters/matrix/xlsx-cells.ts +1 -1
- package/src/exporters/xlsx-exporter.ts +5 -4
- package/src/graph/board-human-actions.ts +80 -0
- package/src/graph/evaluate-graph.ts +45 -10
- package/src/graph/human-action.ts +33 -0
- package/src/graph/manual-triage-decisions.ts +55 -0
- package/src/graph/node-decl.ts +18 -0
- package/src/graph/nodes/test-case-contract-nodes.ts +28 -7
- package/src/graph/nodes/test-case-nodes.ts +37 -5
- package/src/graph/nodes/unit-audit-nodes.ts +2 -1
- package/src/graph/nodes/unit-contract-node.ts +20 -2
- package/src/graph/nodes/unit-design-nodes.ts +2 -1
- package/src/graph/test-case-results.ts +25 -4
- package/src/graph/test-case-satisfied.ts +7 -4
- package/src/graph/test-case-state-shape.ts +7 -2
- package/src/graph/unit-artifact-probes.ts +3 -1
- package/src/graph/unit-results-freshness.ts +165 -0
- package/src/harness/audit.ts +4 -13
- package/src/harness/catalog/gate-rules.yaml +3 -3
- package/src/harness/defect-draft.ts +13 -2
- package/src/harness/defects.ts +22 -9
- package/src/harness/flow-check.ts +11 -0
- package/src/harness/gates/audit-gate-verdict.ts +2 -1
- package/src/harness/gates/audit-input-hash.ts +27 -3
- package/src/harness/gates/audit-report-verification.ts +57 -24
- package/src/harness/gates/delivery-checklist.ts +39 -7
- package/src/harness/gates/delivery-decision-gate.ts +29 -1
- package/src/harness/gates/delivery-decision-step.ts +19 -3
- package/src/harness/gates/in-run-decision-check.ts +38 -13
- package/src/harness/gates/migrated-waiver-import-bounds.ts +103 -0
- package/src/harness/gates/migrated-waiver-review.ts +90 -37
- package/src/harness/journey.ts +174 -21
- package/src/harness/next-step.ts +34 -1
- package/src/harness/provenance.ts +99 -11
- package/src/harness/triage-manual-classification.ts +76 -0
- package/src/harness/unit-paths.ts +19 -0
- package/src/hooks/bash-read-only-segment.ts +130 -0
- package/src/hooks/bash-write-targets.ts +109 -23
- package/src/hooks/guard-protected-paths.ts +13 -3
- package/src/hooks/guard-rules.ts +37 -18
- package/src/hooks/guard-tty-spoof-rule.ts +6 -3
- package/src/hooks/hand-back-core.ts +24 -12
- package/src/hooks/session-start-unit-state-hook.ts +9 -4
- package/src/hooks/stop-next-step-hook.ts +1 -0
- package/src/orchestrator/assets-drift.ts +12 -5
- package/src/orchestrator/project-initializer.ts +1 -0
- package/src/orchestrator/templates/ai-src/commands/create-test.md +6 -3
- package/src/orchestrator/templates/ai-src/commands/delivery.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/review.md +2 -0
- package/src/orchestrator/templates/ai-src/commands/run-test.md +1 -1
- package/src/orchestrator/templates/ai-src/partials/waiting-for-you.claude.md +11 -0
- package/src/orchestrator/templates/ai-src/partials/waiting-for-you.codex.md +11 -0
- package/src/orchestrator/templates/ai-src/partials/waiting-for-you.copilot.md +11 -0
|
@@ -37,16 +37,54 @@ exports.bashSegments = bashSegments;
|
|
|
37
37
|
exports.bashWriteTargets = bashWriteTargets;
|
|
38
38
|
/**
|
|
39
39
|
* The files a Bash command line WRITES through the three forms the pre-tool guard covers (P0.1):
|
|
40
|
-
* output redirection (`>`, `>>`, `>|`, `&>`, `2
|
|
40
|
+
* output redirection (`>`, `>>`, `>|`, `&>`, `2>`, `>&file`, zsh `>!`…), `tee`, in-place `sed -i`, and
|
|
41
|
+
* `git … --output <file>` (also abbreviated, `--outp=`) (#968).
|
|
41
42
|
*
|
|
42
|
-
* A floor, not a shell interpreter: quotes, escapes,
|
|
43
|
-
*
|
|
43
|
+
* A floor, not a shell interpreter: quotes, escapes, `$'…'` ANSI-C strings, backslash-newline
|
|
44
|
+
* continuations, `;`/`&&`/`||`/`|` and `cd` / `pushd` (with their options; an operand it cannot resolve
|
|
45
|
+
* marks the directory unknown) are understood; anything else that can write a file (`cp`, a script, `python -c`) is out of scope by
|
|
44
46
|
* design. The command string is untrusted — it is only tokenized here, never executed.
|
|
45
47
|
*/
|
|
46
48
|
const path = __importStar(require("path"));
|
|
47
49
|
/** Commands that run another command: the real one is the next word. */
|
|
48
50
|
const WRAPPERS = new Set(['sudo', 'env', 'command', 'nohup', 'time', 'exec', 'nice']);
|
|
49
51
|
const ASSIGNMENT = /^[A-Za-z_]\w*=/;
|
|
52
|
+
const ANSI_C = {
|
|
53
|
+
a: '\x07', b: '\b', e: '\x1b', E: '\x1b', f: '\f', n: '\n', r: '\r', t: '\t', v: '\v', '\\': '\\', "'": "'", '"': '"', '?': '?',
|
|
54
|
+
};
|
|
55
|
+
/** Decode a bash `$'…'` body starting at `j` (just past `$'`); returns the text and the index past the closing `'`. */
|
|
56
|
+
function ansiC(cmd, j) {
|
|
57
|
+
let out = '';
|
|
58
|
+
while (j < cmd.length && cmd[j] !== "'") {
|
|
59
|
+
if (cmd[j] !== '\\' || j + 1 >= cmd.length) {
|
|
60
|
+
out += cmd[j++];
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
const e = cmd[j + 1];
|
|
64
|
+
j += 2;
|
|
65
|
+
if (e in ANSI_C)
|
|
66
|
+
out += ANSI_C[e];
|
|
67
|
+
else if (/[0-7]/.test(e)) {
|
|
68
|
+
let m = e;
|
|
69
|
+
while (m.length < 3 && /[0-7]/.test(cmd[j] ?? ''))
|
|
70
|
+
m += cmd[j++];
|
|
71
|
+
out += String.fromCharCode(parseInt(m, 8) & 0xff);
|
|
72
|
+
}
|
|
73
|
+
else if (e === 'x' || e === 'u' || e === 'U') {
|
|
74
|
+
const max = e === 'x' ? 2 : e === 'u' ? 4 : 8;
|
|
75
|
+
let h = '';
|
|
76
|
+
while (h.length < max && /[0-9a-fA-F]/.test(cmd[j] ?? ''))
|
|
77
|
+
h += cmd[j++];
|
|
78
|
+
const cp = parseInt(h, 16);
|
|
79
|
+
out += !h ? `\\${e}` : cp <= 0x10ffff ? String.fromCodePoint(cp) : '\ufffd'; // never throw: a throw fails open
|
|
80
|
+
}
|
|
81
|
+
else if (e === 'c' && j < cmd.length)
|
|
82
|
+
out += String.fromCharCode(cmd.charCodeAt(j++) & 31);
|
|
83
|
+
else
|
|
84
|
+
out += `\\${e}`;
|
|
85
|
+
}
|
|
86
|
+
return [out, j + 1];
|
|
87
|
+
}
|
|
50
88
|
function tokenize(cmd) {
|
|
51
89
|
const toks = [];
|
|
52
90
|
let word = '';
|
|
@@ -55,7 +93,16 @@ function tokenize(cmd) {
|
|
|
55
93
|
toks.push({ kind: 'word', value: word }); word = ''; inWord = false; };
|
|
56
94
|
for (let i = 0; i < cmd.length;) {
|
|
57
95
|
const ch = cmd[i];
|
|
58
|
-
if (ch === "'") {
|
|
96
|
+
if (ch === '$' && cmd[i + 1] === "'") {
|
|
97
|
+
const [text, next] = ansiC(cmd, i + 2);
|
|
98
|
+
word += text;
|
|
99
|
+
inWord = true;
|
|
100
|
+
i = next;
|
|
101
|
+
}
|
|
102
|
+
else if (ch === '$' && cmd[i + 1] === '"') {
|
|
103
|
+
i++; // `$"…"` (locale translation) reads as `"…"`
|
|
104
|
+
}
|
|
105
|
+
else if (ch === "'") {
|
|
59
106
|
const end = cmd.indexOf("'", i + 1);
|
|
60
107
|
word += cmd.slice(i + 1, end < 0 ? cmd.length : end);
|
|
61
108
|
inWord = true;
|
|
@@ -64,6 +111,10 @@ function tokenize(cmd) {
|
|
|
64
111
|
else if (ch === '"') {
|
|
65
112
|
let j = i + 1;
|
|
66
113
|
for (; j < cmd.length && cmd[j] !== '"'; j++) {
|
|
114
|
+
if (cmd[j] === '\\' && cmd[j + 1] === '\n') {
|
|
115
|
+
j++;
|
|
116
|
+
continue;
|
|
117
|
+
} // line continuation
|
|
67
118
|
if (cmd[j] === '\\' && j + 1 < cmd.length)
|
|
68
119
|
j++;
|
|
69
120
|
word += cmd[j];
|
|
@@ -71,6 +122,9 @@ function tokenize(cmd) {
|
|
|
71
122
|
inWord = true;
|
|
72
123
|
i = j + 1;
|
|
73
124
|
}
|
|
125
|
+
else if (ch === '\\' && cmd[i + 1] === '\n') {
|
|
126
|
+
i += 2; // line continuation: removed entirely
|
|
127
|
+
}
|
|
74
128
|
else if (ch === '\\' && i + 1 < cmd.length) {
|
|
75
129
|
word += cmd[i + 1];
|
|
76
130
|
inWord = true;
|
|
@@ -81,9 +135,10 @@ function tokenize(cmd) {
|
|
|
81
135
|
i++;
|
|
82
136
|
}
|
|
83
137
|
else if ('\n;|()'.includes(ch) || (ch === '&' && cmd[i + 1] !== '>')) {
|
|
138
|
+
const doubled = (ch === '|' || ch === '&') && cmd[i + 1] === ch;
|
|
84
139
|
flush();
|
|
85
|
-
toks.push({ kind: 'sep' });
|
|
86
|
-
i +=
|
|
140
|
+
toks.push({ kind: 'sep', pipe: ch === '|' && !doubled });
|
|
141
|
+
i += doubled ? 2 : 1;
|
|
87
142
|
}
|
|
88
143
|
else if (ch === '>' || (ch === '&' && cmd[i + 1] === '>')) {
|
|
89
144
|
if (ch === '>' && inWord && /^\d+$/.test(word)) {
|
|
@@ -93,14 +148,14 @@ function tokenize(cmd) {
|
|
|
93
148
|
else
|
|
94
149
|
flush(); // `2>`: an fd, not a word
|
|
95
150
|
i += ch === '&' ? 2 : 1;
|
|
96
|
-
if (cmd[i] === '>'
|
|
97
|
-
i++;
|
|
98
|
-
|
|
151
|
+
if (cmd[i] === '>')
|
|
152
|
+
i++; // `>>`, `&>>`
|
|
153
|
+
const dup = cmd[i] === '&'; // `>&x`, `>>&x`: an fd dup only when x is an fd
|
|
154
|
+
if (dup)
|
|
99
155
|
i++;
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
toks.push({ kind: 'redir', writes: true });
|
|
156
|
+
if (cmd[i] === '|' || cmd[i] === '!')
|
|
157
|
+
i++; // clobber: `>|`, `>!`, `>>!`, `&>!`, `>&|`, `>&!`
|
|
158
|
+
toks.push({ kind: 'redir', writes: true, dup });
|
|
104
159
|
}
|
|
105
160
|
else if (ch === '<') {
|
|
106
161
|
flush();
|
|
@@ -119,36 +174,73 @@ function tokenize(cmd) {
|
|
|
119
174
|
return toks;
|
|
120
175
|
}
|
|
121
176
|
const isInPlaceFlag = (a) => a === '--in-place' || a.startsWith('--in-place=') || /^-[a-zA-Z]*i/.test(a);
|
|
177
|
+
/** `git diff|log|show … --output=<file>` / `--output <file>` writes that file (git takes `--outp` for `--output`). */
|
|
178
|
+
function gitOutputTargets(args) {
|
|
179
|
+
const out = [];
|
|
180
|
+
args.forEach((a, k) => {
|
|
181
|
+
const m = /^--([\w-]+)(=([\s\S]*))?$/.exec(a);
|
|
182
|
+
if (!m || m[1].length < 2 || !'output'.startsWith(m[1]))
|
|
183
|
+
return;
|
|
184
|
+
if (m[2] !== undefined)
|
|
185
|
+
out.push(m[3]);
|
|
186
|
+
else if (args[k + 1])
|
|
187
|
+
out.push(args[k + 1]);
|
|
188
|
+
});
|
|
189
|
+
return out.filter((t) => t && t !== '/dev/null' && t !== '-');
|
|
190
|
+
}
|
|
191
|
+
/** The operand of `cd` / `pushd` after its options (`-L -P -e -@`, pushd `-n`, `--`), or null when there is not exactly one. */
|
|
192
|
+
function cdOperand(args) {
|
|
193
|
+
let k = 0;
|
|
194
|
+
while (k < args.length && /^-[LPe@n]+$/.test(args[k]))
|
|
195
|
+
k++;
|
|
196
|
+
if (args[k] === '--')
|
|
197
|
+
k++;
|
|
198
|
+
return args.length - k === 1 ? args[k] : null;
|
|
199
|
+
}
|
|
122
200
|
function bashSegments(command, cwd) {
|
|
123
201
|
const out = [];
|
|
124
202
|
const toks = tokenize(command);
|
|
125
203
|
let dir = cwd;
|
|
204
|
+
let dirKnown = true;
|
|
126
205
|
let seg = [];
|
|
127
206
|
let redirected = [];
|
|
128
|
-
let
|
|
129
|
-
const endSegment = () => {
|
|
207
|
+
let rawWrites = [];
|
|
208
|
+
const endSegment = (pipesTo = false) => {
|
|
130
209
|
let k = 0;
|
|
131
210
|
while (k < seg.length && (ASSIGNMENT.test(seg[k]) || WRAPPERS.has(seg[k])))
|
|
132
211
|
k++;
|
|
133
|
-
const
|
|
212
|
+
const assigns = seg.slice(0, k).filter((w) => ASSIGNMENT.test(w));
|
|
213
|
+
const cmdPath = seg[k] ?? '';
|
|
214
|
+
const cmd = path.basename(cmdPath);
|
|
134
215
|
const args = seg.slice(k + 1).filter((a) => a !== '');
|
|
135
216
|
if (cmd === 'tee')
|
|
136
|
-
|
|
137
|
-
else if ((cmd === 'sed' || cmd === 'gsed') && args.some(isInPlaceFlag))
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
217
|
+
rawWrites.push(...args.filter((a) => !a.startsWith('-')));
|
|
218
|
+
else if ((cmd === 'sed' || cmd === 'gsed') && args.some(isInPlaceFlag))
|
|
219
|
+
rawWrites.push(...args.filter((a) => !a.startsWith('-')));
|
|
220
|
+
else if (cmd === 'git')
|
|
221
|
+
rawWrites.push(...gitOutputTargets(args));
|
|
222
|
+
const writes = rawWrites.map((a) => path.resolve(dir, a));
|
|
223
|
+
const writesInUnknownDir = !dirKnown && rawWrites.some((a) => !path.isAbsolute(a));
|
|
224
|
+
if (cmd || redirected.length || assigns.length) {
|
|
225
|
+
out.push({ cmd, cmdPath, words: [...args, ...redirected], dir, dirKnown, writes, writesInUnknownDir, assigns, pipesTo });
|
|
226
|
+
}
|
|
227
|
+
if (cmd === 'cd' || cmd === 'pushd' || cmd === 'popd') {
|
|
228
|
+
const target = cmd === 'popd' ? null : cdOperand(args);
|
|
229
|
+
if (target && !/[$~`]/.test(target) && target !== '-' && !/^[+-]\d+$/.test(target)) {
|
|
230
|
+
dir = path.resolve(dir, target);
|
|
231
|
+
dirKnown = dirKnown || path.isAbsolute(target);
|
|
232
|
+
}
|
|
233
|
+
else
|
|
234
|
+
dirKnown = false; // `cd`, `cd ~`, `cd $D`, `cd -`, `popd`: somewhere the guard cannot resolve
|
|
235
|
+
}
|
|
144
236
|
seg = [];
|
|
145
237
|
redirected = [];
|
|
146
|
-
|
|
238
|
+
rawWrites = [];
|
|
147
239
|
};
|
|
148
240
|
for (let t = 0; t < toks.length; t++) {
|
|
149
241
|
const tok = toks[t];
|
|
150
242
|
if (tok.kind === 'sep') {
|
|
151
|
-
endSegment();
|
|
243
|
+
endSegment(tok.pipe === true);
|
|
152
244
|
continue;
|
|
153
245
|
}
|
|
154
246
|
if (tok.kind === 'redir') {
|
|
@@ -157,8 +249,9 @@ function bashSegments(command, cwd) {
|
|
|
157
249
|
continue;
|
|
158
250
|
t++;
|
|
159
251
|
redirected.push(target.value);
|
|
160
|
-
|
|
161
|
-
|
|
252
|
+
const fd = tok.dup && /^(?:\d+-?|-)$/.test(target.value); // `2>&1`, `>&2`, `2>&-`
|
|
253
|
+
if (tok.writes && !fd && target.value && target.value !== '/dev/null' && target.value !== '-')
|
|
254
|
+
rawWrites.push(target.value);
|
|
162
255
|
continue;
|
|
163
256
|
}
|
|
164
257
|
seg.push(tok.value);
|
|
@@ -166,7 +259,7 @@ function bashSegments(command, cwd) {
|
|
|
166
259
|
endSegment();
|
|
167
260
|
return out;
|
|
168
261
|
}
|
|
169
|
-
/** Absolute paths the command writes via redirection, `tee` or `
|
|
262
|
+
/** Absolute paths the command writes via redirection, `tee`, `sed -i` or `git --output`, resolved against `cwd`. */
|
|
170
263
|
function bashWriteTargets(command, cwd) {
|
|
171
264
|
return bashSegments(command, cwd).flatMap((s) => s.writes);
|
|
172
265
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash-write-targets.js","sourceRoot":"","sources":["../../src/hooks/bash-write-targets.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bash-write-targets.js","sourceRoot":"","sources":["../../src/hooks/bash-write-targets.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6IA,oCAgDC;AAGD,4CAEC;AAlMD;;;;;;;;;GASG;AACH,2CAA6B;AAI7B,wEAAwE;AACxE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACtF,MAAM,UAAU,GAAG,gBAAgB,CAAC;AACpC,MAAM,MAAM,GAA2B;IACrC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CAChI,CAAC;AAEF,uHAAuH;AACvH,SAAS,KAAK,CAAC,GAAW,EAAE,CAAS;IACnC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACxC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACrB,CAAC,IAAI,CAAC,CAAC;QACP,IAAI,CAAC,IAAI,MAAM;YAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;aAC7B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAE,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACjE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAC/C,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAE,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACzE,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAG,kCAAkC;QACnH,CAAC;aAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM;YAAE,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;;YACxF,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,IAAI,GAAU,EAAE,CAAC;IACvB,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,KAAK,GAAG,GAAS,EAAE,GAAG,IAAI,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/G,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC;QAChC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACvC,IAAI,IAAI,IAAI,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC,GAAG,IAAI,CAAC;QACxC,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5C,CAAC,EAAE,CAAC,CAAG,6CAA6C;QACtD,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC1G,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAAC,CAAC,EAAE,CAAC;oBAAC,SAAS;gBAAC,CAAC,CAAG,oBAAoB;gBACrF,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM;oBAAE,CAAC,EAAE,CAAC;gBAC/C,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;YACD,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,EAAE,KAAK,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC9C,CAAC,IAAI,CAAC,CAAC,CAAG,sCAAsC;QAClD,CAAC;aAAM,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YAC7C,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACrC,KAAK,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;QACf,CAAC;aAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;YAChE,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1F,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5D,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAC,IAAI,GAAG,EAAE,CAAC;gBAAC,MAAM,GAAG,KAAK,CAAC;YAAC,CAAC;;gBAAM,KAAK,EAAE,CAAC,CAAC,0BAA0B;YACvH,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,EAAE,CAAC,CAA0B,cAAc;YAChE,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAuB,gDAAgD;YAClG,IAAI,GAAG;gBAAE,CAAC,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,EAAE,CAAC,CAAQ,kDAAkD;YACpG,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,KAAK,EAAE,CAAC;YAAC,CAAC,EAAE,CAAC;YACb,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,IAAI,EAAE,CAAC;YAAC,MAAM,GAAG,IAAI,CAAC;YAAC,CAAC,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IACD,KAAK,EAAE,CAAC;IACR,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAwB1H,sHAAsH;AACtH,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,CAAC,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO;QAChE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAClC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,gIAAgI;AAChI,SAAS,SAAS,CAAC,IAAc;IAC/B,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAE,CAAC,EAAE,CAAC;IAC3D,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,CAAC,EAAE,CAAC;IAC1B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,SAAgB,YAAY,CAAC,OAAe,EAAE,GAAW;IACvD,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,GAAG,GAAa,EAAE,CAAC;IACvB,IAAI,UAAU,GAAa,EAAE,CAAC;IAC9B,IAAI,SAAS,GAAa,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,EAAQ,EAAE;QAC3C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;QAChF,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,GAAG,KAAK,KAAK;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACxE,IAAI,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aAC7H,IAAI,GAAG,KAAK,KAAK;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,kBAAkB,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC3H,CAAC;QACD,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACtD,MAAM,MAAM,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnF,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAChC,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACjD,CAAC;;gBAAM,QAAQ,GAAG,KAAK,CAAC,CAAG,4EAA4E;QACzG,CAAC;QACD,GAAG,GAAG,EAAE,CAAC;QAAC,UAAU,GAAG,EAAE,CAAC;QAAC,SAAS,GAAG,EAAE,CAAC;IAC5C,CAAC,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACpE,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,IAAI,MAAM,EAAE,IAAI,KAAK,MAAM;gBAAE,SAAS;YACtC,CAAC,EAAE,CAAC;YACJ,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAG,wBAAwB;YACpF,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,KAAK,GAAG;gBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5H,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,UAAU,EAAE,CAAC;IACb,OAAO,GAAG,CAAC;AACb,CAAC;AAED,oHAAoH;AACpH,SAAgB,gBAAgB,CAAC,OAAe,EAAE,GAAW;IAC3D,OAAO,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -4,6 +4,10 @@ export declare function approvalRecordPath(abs: string): string | null;
|
|
|
4
4
|
export declare function traceEvidencePath(abs: string): string | null;
|
|
5
5
|
/** The hook-control file `abs` is (as its project-relative name), or null. */
|
|
6
6
|
export declare function hookControlPath(abs: string): string | null;
|
|
7
|
+
/** A word the shell rewrites at runtime (`$…`, a literal `\`) that sits near a protected name: the guard cannot read it. */
|
|
8
|
+
export declare const opaqueNearProtected: (word: string) => boolean;
|
|
9
|
+
/** Does this text (a command word, a heredoc, a whole command line) name a protected path as written? */
|
|
10
|
+
export declare const mentionsProtectedText: (text: string) => boolean;
|
|
7
11
|
/** Does this command word name a protected path — as text, or once resolved against `dir`? */
|
|
8
12
|
export declare function mentionsProtectedPath(word: string, dir: string): boolean;
|
|
9
13
|
//# sourceMappingURL=guard-protected-paths.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-protected-paths.d.ts","sourceRoot":"","sources":["../../src/hooks/guard-protected-paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guard-protected-paths.d.ts","sourceRoot":"","sources":["../../src/hooks/guard-protected-paths.ts"],"names":[],"mappings":"AA2CA,uHAAuH;AACvH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK7D;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED,8EAA8E;AAC9E,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG1D;AAKD,4HAA4H;AAC5H,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,KAAG,OAA0D,CAAC;AAE9G,yGAAyG;AACzG,eAAO,MAAM,qBAAqB,GAAI,MAAM,MAAM,KAAG,OAA+C,CAAC;AAErG,8FAA8F;AAC9F,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAIxE"}
|
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.mentionsProtectedText = exports.opaqueNearProtected = void 0;
|
|
36
37
|
exports.approvalRecordPath = approvalRecordPath;
|
|
37
38
|
exports.traceEvidencePath = traceEvidencePath;
|
|
38
39
|
exports.hookControlPath = hookControlPath;
|
|
@@ -49,7 +50,8 @@ exports.mentionsProtectedPath = mentionsProtectedPath;
|
|
|
49
50
|
* — the CLI still writes the last two itself; the guard only judges an agent's tool calls
|
|
50
51
|
* trace evidence — DENY an agent write (phase 08; the verdict trusts it only as far as this guard and git review):
|
|
51
52
|
* .sungen/trace-identity/** (the driver's identity answers — written by the CLI)
|
|
52
|
-
* test-results/sungen-run-record*.json
|
|
53
|
+
* test-results[-free]/sungen-run-record*.json (run id + test-file hashes — written by the Playwright reporter;
|
|
54
|
+
* test-results-free/ is the free run's own outputDir, #941)
|
|
53
55
|
* hook control — ASK before an agent write (the agent must not switch its own guard off):
|
|
54
56
|
* qa/sungen.config.yaml · .claude/settings.json · .claude/settings.local.json ·
|
|
55
57
|
* .claude/hooks/sungen-hook.cjs
|
|
@@ -63,7 +65,7 @@ const LOCK = /^qa\/(?:.+\/)?contracts\.lock\.yaml$/i;
|
|
|
63
65
|
const DECISION = /^qa\/(?:(?:screens|flows|api(?:\/flows)?)\/[^/]+\/)?decisions\/[^/]+/i;
|
|
64
66
|
const APPROVAL_STATE = /^\.sungen\/(?:journey\/[^/]+\.state\.json|viewpoint-baseline\.json)$/i;
|
|
65
67
|
/** Trace evidence (phase 08, DOS-14.6): the driver's identity answers and the run records. */
|
|
66
|
-
const TRACE_EVIDENCE = /^(?:\.sungen\/trace-identity\/.+|test-results
|
|
68
|
+
const TRACE_EVIDENCE = /^(?:\.sungen\/trace-identity\/.+|test-results(?:-free)?\/sungen-run-record(?:\.[A-Za-z0-9._-]+)?\.json)$/i;
|
|
67
69
|
const HOOK_CONTROL = ['qa/sungen.config.yaml', '.claude/settings.json', '.claude/settings.local.json', '.claude/hooks/sungen-hook.cjs'];
|
|
68
70
|
/** The same paths as they appear INSIDE a command string (e.g. in `bash -c "…"` or `python -c "…"`). */
|
|
69
71
|
const MENTIONS = [
|
|
@@ -96,9 +98,17 @@ function hookControlPath(abs) {
|
|
|
96
98
|
const p = posix(path.resolve(abs)).toLowerCase();
|
|
97
99
|
return HOOK_CONTROL.find((rel) => p.endsWith(`/${rel}`)) ?? null;
|
|
98
100
|
}
|
|
101
|
+
/** Names near a protected path — for a word the shell expands (`$Q/decisions/x`), whose real text is unknown. */
|
|
102
|
+
const NEAR_PROTECTED = /qa|\.sungen|\.claude|decision|contracts|lock\.ya?ml|run-record|trace-identity|viewpoint|journey|settings|sungen-hook|sungen\.config/i;
|
|
103
|
+
/** A word the shell rewrites at runtime (`$…`, a literal `\`) that sits near a protected name: the guard cannot read it. */
|
|
104
|
+
const opaqueNearProtected = (word) => /[$\\]/.test(word) && NEAR_PROTECTED.test(word);
|
|
105
|
+
exports.opaqueNearProtected = opaqueNearProtected;
|
|
106
|
+
/** Does this text (a command word, a heredoc, a whole command line) name a protected path as written? */
|
|
107
|
+
const mentionsProtectedText = (text) => MENTIONS.some((re) => re.test(text));
|
|
108
|
+
exports.mentionsProtectedText = mentionsProtectedText;
|
|
99
109
|
/** Does this command word name a protected path — as text, or once resolved against `dir`? */
|
|
100
110
|
function mentionsProtectedPath(word, dir) {
|
|
101
|
-
if (
|
|
111
|
+
if ((0, exports.mentionsProtectedText)(word))
|
|
102
112
|
return true;
|
|
103
113
|
const abs = path.resolve(dir, word);
|
|
104
114
|
return approvalRecordPath(abs) !== null || traceEvidencePath(abs) !== null || hookControlPath(abs) !== null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-protected-paths.js","sourceRoot":"","sources":["../../src/hooks/guard-protected-paths.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guard-protected-paths.js","sourceRoot":"","sources":["../../src/hooks/guard-protected-paths.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CA,gDAKC;AAGD,8CAKC;AAGD,0CAGC;AAYD,sDAIC;AA/ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,2CAA6B;AAC7B,+DAAuD;AAEvD,MAAM,IAAI,GAAG,uCAAuC,CAAC;AACrD,MAAM,QAAQ,GAAG,uEAAuE,CAAC;AACzF,MAAM,cAAc,GAAG,uEAAuE,CAAC;AAC/F,8FAA8F;AAC9F,MAAM,cAAc,GAAG,2GAA2G,CAAC;AACnI,MAAM,YAAY,GAAG,CAAC,uBAAuB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,+BAA+B,CAAC,CAAC;AAExI,wGAAwG;AACxG,MAAM,QAAQ,GAAG;IACf,wBAAwB;IACxB,kFAAkF;IAClF,yEAAyE;IACzE,oHAAoH;IACpH,6BAA6B;IAC7B,8DAA8D;CAC/D,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEjE,uHAAuH;AACvH,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,IAAA,oCAAc,EAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACvF,CAAC;AAED,0FAA0F;AAC1F,SAAgB,iBAAiB,CAAC,GAAW;IAC3C,MAAM,IAAI,GAAG,IAAA,oCAAc,EAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,SAAgB,eAAe,CAAC,GAAW;IACzC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC;AACnE,CAAC;AAED,iHAAiH;AACjH,MAAM,cAAc,GAAG,sIAAsI,CAAC;AAE9J,4HAA4H;AACrH,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAAjG,QAAA,mBAAmB,uBAA8E;AAE9G,yGAAyG;AAClG,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAAxF,QAAA,qBAAqB,yBAAmE;AAErG,8FAA8F;AAC9F,SAAgB,qBAAqB,CAAC,IAAY,EAAE,GAAW;IAC7D,IAAI,IAAA,6BAAqB,EAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpC,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,iBAAiB,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAC9G,CAAC"}
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The pre-tool guard's rules. Each looks at one normalized tool call and returns a decision or
|
|
3
|
-
* null; pre-tool-guard-hook.ts runs them in order (first deny wins, else first ask).
|
|
4
|
-
*
|
|
5
|
-
* protected-approval-paths DENY a precise write (Edit/Write/MultiEdit, or Bash `>`, `tee`,
|
|
6
|
-
* `sed -i`) to a contract lock, a decision record, approval state or
|
|
7
|
-
* trace evidence (.sungen/trace-identity, test-results/sungen-run-record*)
|
|
8
|
-
* protected-hook-control ASK the same writes to the files that control the hooks, so the
|
|
9
|
-
* agent cannot switch its own guard off unasked
|
|
10
|
-
* bash-protected-mention ASK any other Bash segment that names a protected path and does not
|
|
11
|
-
* start with a read-only command (cp, mv, ln, install, rm,
|
|
12
|
-
* bash -c, python -c, perl -i…)
|
|
13
|
-
*
|
|
14
|
-
* A floor, not a sandbox: a path built at runtime, a symlink, or a script file that writes without
|
|
15
|
-
* naming the path on the command line is out of reach by design. Each rule only matches strings,
|
|
16
|
-
* so each fails open (`onError: 'no-op'`); a rule that READS project state must declare `'ask'`.
|
|
17
|
-
*/
|
|
18
1
|
import type { HookContext, HookResult } from './hook-result-contract';
|
|
19
2
|
/** One tool call, normalized from the untrusted payload. */
|
|
20
3
|
export interface GuardedCall {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-rules.d.ts","sourceRoot":"","sources":["../../src/hooks/guard-rules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guard-rules.d.ts","sourceRoot":"","sources":["../../src/hooks/guard-rules.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOtE,4DAA4D;AAC5D,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,mEAAmE;IACnE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,iGAAiG;IACjG,OAAO,EAAE,KAAK,GAAG,OAAO,CAAC;IACzB,mFAAmF;IACnF,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,CAAC;CAC/D;AAMD,eAAO,MAAM,sBAAsB,EAAE,SAqBpC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,SAWlC,CAAC;AAKF,eAAO,MAAM,oBAAoB,EAAE,SA0BlC,CAAC"}
|
|
@@ -1,7 +1,64 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.bashProtectedMention = exports.protectedHookControl = exports.protectedApprovalPaths = void 0;
|
|
37
|
+
/**
|
|
38
|
+
* The pre-tool guard's rules. Each looks at one normalized tool call and returns a decision or
|
|
39
|
+
* null; pre-tool-guard-hook.ts runs them in order (first deny wins, else first ask).
|
|
40
|
+
*
|
|
41
|
+
* protected-approval-paths DENY a precise write (Edit/Write/MultiEdit, or Bash `>`, `tee`,
|
|
42
|
+
* `sed -i`) to a contract lock, a decision record, approval state or
|
|
43
|
+
* trace evidence (.sungen/trace-identity, test-results[-free]/sungen-run-record*)
|
|
44
|
+
* protected-hook-control ASK the same writes to the files that control the hooks, so the
|
|
45
|
+
* agent cannot switch its own guard off unasked
|
|
46
|
+
* bash-protected-mention ASK any other Bash segment that names a protected path and is not
|
|
47
|
+
* read-only (cp, mv, ln, install, rm, bash -c, python -c, perl -i…);
|
|
48
|
+
* a read-only one too when its output is piped into a non-read-only
|
|
49
|
+
* command, or the line has command substitution or sets shell state
|
|
50
|
+
* (`X=…`, export, alias, a function…); a heredoc / here-string
|
|
51
|
+
* that names one; and a write target with a glob or brace (#968 — bash-read-only-segment.ts lists what counts
|
|
52
|
+
* as read-only, and the accepted floor)
|
|
53
|
+
*
|
|
54
|
+
* A floor, not a sandbox: a path built at runtime, a symlink, or a script file that writes without
|
|
55
|
+
* naming the path on the command line is out of reach by design (the full list of what the floor
|
|
56
|
+
* does not catch is in bash-read-only-segment.ts; release-time decision integrity is the backstop). Each rule only matches strings,
|
|
57
|
+
* so each fails open (`onError: 'no-op'`); a rule that READS project state must declare `'ask'`.
|
|
58
|
+
*/
|
|
59
|
+
const path = __importStar(require("path"));
|
|
4
60
|
const bash_write_targets_1 = require("./bash-write-targets");
|
|
61
|
+
const bash_read_only_segment_1 = require("./bash-read-only-segment");
|
|
5
62
|
const guard_protected_paths_1 = require("./guard-protected-paths");
|
|
6
63
|
/** The files a call writes precisely: a file tool's target, or Bash's `>` / `tee` / `sed -i` targets. */
|
|
7
64
|
const preciseWrites = (call) => call.tool === 'Bash' ? (0, bash_write_targets_1.bashSegments)(call.bashCommand ?? '', call.cwd).flatMap((s) => s.writes) : call.filePaths;
|
|
@@ -39,23 +96,35 @@ exports.protectedHookControl = {
|
|
|
39
96
|
} : null;
|
|
40
97
|
},
|
|
41
98
|
};
|
|
42
|
-
/**
|
|
43
|
-
const
|
|
44
|
-
const GIT_READ_ONLY = new Set(['diff', 'log', 'show', 'status']);
|
|
45
|
-
const isReadOnly = (cmd, words) => READ_ONLY.has(cmd) || (cmd === 'git' && GIT_READ_ONLY.has(words.find((w) => !w.startsWith('-')) ?? ''));
|
|
99
|
+
/** A heredoc or here-string: its body is another program's input, which the segments do not see. */
|
|
100
|
+
const HEREDOC = /<</;
|
|
46
101
|
exports.bashProtectedMention = {
|
|
47
102
|
id: 'bash-protected-mention',
|
|
48
103
|
onError: 'no-op',
|
|
49
104
|
check(call) {
|
|
50
|
-
|
|
105
|
+
const command = call.tool === 'Bash' ? call.bashCommand : undefined;
|
|
106
|
+
if (!command)
|
|
51
107
|
return null;
|
|
52
|
-
const
|
|
53
|
-
|
|
54
|
-
|
|
108
|
+
const segs = (0, bash_write_targets_1.bashSegments)(command, call.cwd);
|
|
109
|
+
const lineExempt = (0, bash_read_only_segment_1.lineKeepsReadOnlyExemption)(command, segs);
|
|
110
|
+
// the command word too: zsh `for f (qa/decisions/*) …` puts the list where a command name goes
|
|
111
|
+
const names = (s) => [s.cmdPath, ...s.words, ...s.assigns.map((a) => a.slice(a.indexOf('=') + 1))]
|
|
112
|
+
.some((w) => w !== '' && ((0, guard_protected_paths_1.mentionsProtectedPath)(w, s.dir) || (0, guard_protected_paths_1.opaqueNearProtected)(w)));
|
|
113
|
+
const seg = segs.find((s, i) => names(s) && !(lineExempt && (0, bash_read_only_segment_1.isReadOnlySegment)(s) && (0, bash_read_only_segment_1.pipelineStaysReadOnly)(segs, i)));
|
|
114
|
+
// a write target the shell expands (`> q*/decisions/x`, `--output=qa/{a,b}`, `> $Q/decisions/x`, a literal `\`),
|
|
115
|
+
// or a relative one after a `cd` the guard could not follow, cannot be judged by its text
|
|
116
|
+
const opaqueWrite = segs.some((s) => s.writesInUnknownDir || s.writes.some((w) => {
|
|
117
|
+
const rel = path.relative(s.dir, w);
|
|
118
|
+
return /[*?[{\\]/.test(rel) || (0, guard_protected_paths_1.opaqueNearProtected)(rel);
|
|
119
|
+
}));
|
|
120
|
+
if (!seg && !opaqueWrite && !(HEREDOC.test(command) && (0, guard_protected_paths_1.mentionsProtectedText)(command)))
|
|
121
|
+
return null;
|
|
122
|
+
const what = seg ? (seg.cmd ? `\`${seg.cmd}\` command` : 'variable') : opaqueWrite ? 'write target the guard cannot resolve' : 'heredoc';
|
|
123
|
+
return {
|
|
55
124
|
status: 'ask',
|
|
56
|
-
askReason: `sungen: this
|
|
125
|
+
askReason: `sungen: this ${what} names a contract lock, a decision record, approval state or a hook-control file, `
|
|
57
126
|
+ 'and the guard cannot tell whether it writes it. Allow only if you asked for exactly this.',
|
|
58
|
-
}
|
|
127
|
+
};
|
|
59
128
|
},
|
|
60
129
|
};
|
|
61
130
|
//# sourceMappingURL=guard-rules.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-rules.js","sourceRoot":"","sources":["../../src/hooks/guard-rules.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guard-rules.js","sourceRoot":"","sources":["../../src/hooks/guard-rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* Guard rule `tty-spoof` (phase 06, M5): ASK before an agent runs a human-confirmed sungen command
|
|
3
3
|
* through a terminal emulator.
|
|
4
4
|
*
|
|
5
|
-
* `contract approve`, `journey --waive
|
|
5
|
+
* `contract approve`, `journey --waive`, `journey --decide`, `journey --signoff`, `triage --as test-defect|environment`
|
|
6
|
+
* (#928: a red classified away from the product-defect path) and `delivery --accept-in-run` (delivering past
|
|
7
|
+
* decisions recorded during the run) refuse without a TTY (DOS-13.4), and
|
|
6
8
|
* an agent's Bash has none — unless it borrows one: `script`, `expect`, `unbuffer`, or a pty from
|
|
7
9
|
* Python/Perl/zsh. Then the prompt sees a "terminal" and a piped phrase reads as a human typing it.
|
|
8
10
|
* This rule spots the pair in the raw command (quotes included, so `bash -c "…"` and `expect -c '…'`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-tty-spoof-rule.d.ts","sourceRoot":"","sources":["../../src/hooks/guard-tty-spoof-rule.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"guard-tty-spoof-rule.d.ts","sourceRoot":"","sources":["../../src/hooks/guard-tty-spoof-rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAK/C,eAAO,MAAM,QAAQ,EAAE,SActB,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ttySpoof = void 0;
|
|
4
4
|
const TTY_EMULATOR = /\b(?:script|unbuffer|expect|pty|zpty|openpty|forkpty|ptyprocess)\b/i;
|
|
5
|
-
const HUMAN_GATED = /\bsungen\b[\s\S]*?\b(?:contract['",\s]+approve\b|journey\b[\s\S]*?--(?:waive|decide)\b)/i;
|
|
5
|
+
const HUMAN_GATED = /\bsungen\b[\s\S]*?\b(?:contract['",\s]+approve\b|journey\b[\s\S]*?--(?:waive|decide|signoff)\b|triage\b[\s\S]*?--as[\s='",]+(?:test-defect|environment)\b|delivery\b[\s\S]*?--accept-in-run\b)/i;
|
|
6
6
|
exports.ttySpoof = {
|
|
7
7
|
id: 'tty-spoof',
|
|
8
8
|
onError: 'no-op',
|
|
@@ -12,7 +12,8 @@ exports.ttySpoof = {
|
|
|
12
12
|
return null;
|
|
13
13
|
return {
|
|
14
14
|
status: 'ask',
|
|
15
|
-
askReason: 'sungen: this runs a human-confirmed sungen action (`contract approve` / `journey --waive|--decide`
|
|
15
|
+
askReason: 'sungen: this runs a human-confirmed sungen action (`contract approve` / `journey --waive|--decide|--signoff` / '
|
|
16
|
+
+ '`triage --as test-defect|environment` / `delivery --accept-in-run`) through a terminal '
|
|
16
17
|
+ 'emulator (script / expect / unbuffer / pty). Those confirmations exist so a PERSON at a terminal decides — allow only if you '
|
|
17
18
|
+ 'are that person and asked for exactly this; otherwise run the command yourself in your own terminal.',
|
|
18
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guard-tty-spoof-rule.js","sourceRoot":"","sources":["../../src/hooks/guard-tty-spoof-rule.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"guard-tty-spoof-rule.js","sourceRoot":"","sources":["../../src/hooks/guard-tty-spoof-rule.ts"],"names":[],"mappings":";;;AAgBA,MAAM,YAAY,GAAG,qEAAqE,CAAC;AAC3F,MAAM,WAAW,GAAG,iMAAiM,CAAC;AAEzM,QAAA,QAAQ,GAAc;IACjC,EAAE,EAAE,WAAW;IACf,OAAO,EAAE,OAAO;IAChB,KAAK,CAAC,IAAI;QACR,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3E,OAAO;YACL,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,iHAAiH;kBACxH,yFAAyF;kBACzF,+HAA+H;kBAC/H,sGAAsG;SAC3G,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { NextStep, UnitState } from '../harness/next-step';
|
|
2
2
|
import { HookContext, HookInput, HookResult } from './hook-result-contract';
|
|
3
3
|
import { UnitRef } from './sungen-project-root';
|
|
4
|
-
|
|
4
|
+
/** `invocation`: how the project runs sungen (`npx sungen` with a local install, #939). */
|
|
5
|
+
export declare function handBackLine(unit?: string, invocation?: string): string;
|
|
5
6
|
export interface CliHandBackState {
|
|
6
7
|
unit?: string;
|
|
7
8
|
machine: boolean;
|
|
8
9
|
silent: boolean;
|
|
10
|
+
answer: boolean;
|
|
9
11
|
actionRan: boolean;
|
|
10
12
|
}
|
|
11
13
|
/** The default, set before commander parses — what a usage error or a fatal error hands back. */
|
|
@@ -24,14 +26,17 @@ export declare function exitHandBack(state: CliHandBackState, code: number, cwd:
|
|
|
24
26
|
export declare function attachCliHandBack(argv: string[], cwd: string): {
|
|
25
27
|
onAction: (name: string, opts: Record<string, unknown>, args: unknown[]) => void;
|
|
26
28
|
};
|
|
27
|
-
/**
|
|
28
|
-
|
|
29
|
+
/**
|
|
30
|
+
* `sungen next` rendered compactly for an agent's context; commands — the step's own and those quoted in
|
|
31
|
+
* its reason (#966) — as `root` runs sungen, the way `sungen next` prints them.
|
|
32
|
+
*/
|
|
33
|
+
export declare function formatSteps(steps: NextStep[], max?: number, root?: string): string[];
|
|
29
34
|
/** The unit a session is on (a named one when it exists, else the nearest) and its derived state. */
|
|
30
35
|
export declare function locateUnitState(ctx: HookContext, preferred?: string): {
|
|
31
36
|
root: string;
|
|
32
37
|
unit: UnitRef;
|
|
33
38
|
state: UnitState;
|
|
34
39
|
} | null;
|
|
35
|
-
/** Hook core: the next steps for the session's unit (input.unit, else the nearest) as context. */
|
|
40
|
+
/** Hook core: the next steps for the session's unit (input.unit, else the nearest) as context, then what waits for a human (#954). */
|
|
36
41
|
export declare function run(input: HookInput, ctx: HookContext): HookResult;
|
|
37
42
|
//# sourceMappingURL=hand-back-core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hand-back-core.d.ts","sourceRoot":"","sources":["../../src/hooks/hand-back-core.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hand-back-core.d.ts","sourceRoot":"","sources":["../../src/hooks/hand-back-core.ts"],"names":[],"mappings":"AAeA,OAAO,EAAiB,QAAQ,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAS,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAyC,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAWvF,2FAA2F;AAC3F,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,SAAW,GAAG,MAAM,CAEzE;AAED,MAAM,WAAW,gBAAgB;IAAG,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE;AAE3H,iGAAiG;AACjG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,gBAAgB,CAUrE;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAQvH;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CASrI;AAED,qGAAqG;AACrG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;CAAE,CASnJ;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,GAAG,SAAI,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAI/E;AAED,qGAAqG;AACrG,wBAAgB,eAAe,CAAC,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,IAAI,CAK9H;AAED,sIAAsI;AACtI,wBAAgB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,UAAU,CAQlE"}
|