usesteady 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +186 -0
- package/README.md +724 -0
- package/bin/use-steady.js +13 -0
- package/dist/server-store.d.ts +68 -0
- package/dist/server-store.d.ts.map +1 -0
- package/dist/server-store.js +133 -0
- package/dist/server-store.js.map +1 -0
- package/dist/server.d.ts +35 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +569 -0
- package/dist/server.js.map +1 -0
- package/dist/src/claude/adapters/api-adapter.d.ts +99 -0
- package/dist/src/claude/adapters/api-adapter.d.ts.map +1 -0
- package/dist/src/claude/adapters/api-adapter.js +415 -0
- package/dist/src/claude/adapters/api-adapter.js.map +1 -0
- package/dist/src/claude/adapters/stub-adapter.d.ts +73 -0
- package/dist/src/claude/adapters/stub-adapter.d.ts.map +1 -0
- package/dist/src/claude/adapters/stub-adapter.js +114 -0
- package/dist/src/claude/adapters/stub-adapter.js.map +1 -0
- package/dist/src/claude/artifact-mapper.d.ts +85 -0
- package/dist/src/claude/artifact-mapper.d.ts.map +1 -0
- package/dist/src/claude/artifact-mapper.js +187 -0
- package/dist/src/claude/artifact-mapper.js.map +1 -0
- package/dist/src/claude/delivery-gate.d.ts +136 -0
- package/dist/src/claude/delivery-gate.d.ts.map +1 -0
- package/dist/src/claude/delivery-gate.js +231 -0
- package/dist/src/claude/delivery-gate.js.map +1 -0
- package/dist/src/claude/index.d.ts +24 -0
- package/dist/src/claude/index.d.ts.map +1 -0
- package/dist/src/claude/index.js +23 -0
- package/dist/src/claude/index.js.map +1 -0
- package/dist/src/claude/types.d.ts +223 -0
- package/dist/src/claude/types.d.ts.map +1 -0
- package/dist/src/claude/types.js +64 -0
- package/dist/src/claude/types.js.map +1 -0
- package/dist/src/control/compiler.d.ts +125 -0
- package/dist/src/control/compiler.d.ts.map +1 -0
- package/dist/src/control/compiler.js +179 -0
- package/dist/src/control/compiler.js.map +1 -0
- package/dist/src/control/constraints.d.ts +42 -0
- package/dist/src/control/constraints.d.ts.map +1 -0
- package/dist/src/control/constraints.js +116 -0
- package/dist/src/control/constraints.js.map +1 -0
- package/dist/src/control/drift-detector.d.ts +49 -0
- package/dist/src/control/drift-detector.d.ts.map +1 -0
- package/dist/src/control/drift-detector.js +115 -0
- package/dist/src/control/drift-detector.js.map +1 -0
- package/dist/src/control/index.d.ts +44 -0
- package/dist/src/control/index.d.ts.map +1 -0
- package/dist/src/control/index.js +40 -0
- package/dist/src/control/index.js.map +1 -0
- package/dist/src/control/types.d.ts +144 -0
- package/dist/src/control/types.d.ts.map +1 -0
- package/dist/src/control/types.js +57 -0
- package/dist/src/control/types.js.map +1 -0
- package/dist/src/cursor/adapters/inprocess-adapter.d.ts +78 -0
- package/dist/src/cursor/adapters/inprocess-adapter.d.ts.map +1 -0
- package/dist/src/cursor/adapters/inprocess-adapter.js +308 -0
- package/dist/src/cursor/adapters/inprocess-adapter.js.map +1 -0
- package/dist/src/cursor/adapters/stub-adapter.d.ts +75 -0
- package/dist/src/cursor/adapters/stub-adapter.d.ts.map +1 -0
- package/dist/src/cursor/adapters/stub-adapter.js +120 -0
- package/dist/src/cursor/adapters/stub-adapter.js.map +1 -0
- package/dist/src/cursor/artifact-mapper.d.ts +81 -0
- package/dist/src/cursor/artifact-mapper.d.ts.map +1 -0
- package/dist/src/cursor/artifact-mapper.js +203 -0
- package/dist/src/cursor/artifact-mapper.js.map +1 -0
- package/dist/src/cursor/delivery-gate.d.ts +144 -0
- package/dist/src/cursor/delivery-gate.d.ts.map +1 -0
- package/dist/src/cursor/delivery-gate.js +208 -0
- package/dist/src/cursor/delivery-gate.js.map +1 -0
- package/dist/src/cursor/glob-matcher.d.ts +30 -0
- package/dist/src/cursor/glob-matcher.d.ts.map +1 -0
- package/dist/src/cursor/glob-matcher.js +68 -0
- package/dist/src/cursor/glob-matcher.js.map +1 -0
- package/dist/src/cursor/index.d.ts +43 -0
- package/dist/src/cursor/index.d.ts.map +1 -0
- package/dist/src/cursor/index.js +44 -0
- package/dist/src/cursor/index.js.map +1 -0
- package/dist/src/cursor/ocd-evaluator.d.ts +89 -0
- package/dist/src/cursor/ocd-evaluator.d.ts.map +1 -0
- package/dist/src/cursor/ocd-evaluator.js +142 -0
- package/dist/src/cursor/ocd-evaluator.js.map +1 -0
- package/dist/src/cursor/types.d.ts +309 -0
- package/dist/src/cursor/types.d.ts.map +1 -0
- package/dist/src/cursor/types.js +48 -0
- package/dist/src/cursor/types.js.map +1 -0
- package/dist/src/execution/claude/claude-execution-coordinator.d.ts +164 -0
- package/dist/src/execution/claude/claude-execution-coordinator.d.ts.map +1 -0
- package/dist/src/execution/claude/claude-execution-coordinator.js +198 -0
- package/dist/src/execution/claude/claude-execution-coordinator.js.map +1 -0
- package/dist/src/execution/claude/index.d.ts +13 -0
- package/dist/src/execution/claude/index.d.ts.map +1 -0
- package/dist/src/execution/claude/index.js +12 -0
- package/dist/src/execution/claude/index.js.map +1 -0
- package/dist/src/execution/cursor/cursor-execution-coordinator.d.ts +216 -0
- package/dist/src/execution/cursor/cursor-execution-coordinator.d.ts.map +1 -0
- package/dist/src/execution/cursor/cursor-execution-coordinator.js +233 -0
- package/dist/src/execution/cursor/cursor-execution-coordinator.js.map +1 -0
- package/dist/src/execution/cursor/index.d.ts +20 -0
- package/dist/src/execution/cursor/index.d.ts.map +1 -0
- package/dist/src/execution/cursor/index.js +18 -0
- package/dist/src/execution/cursor/index.js.map +1 -0
- package/dist/src/execution/reminders/index.d.ts +11 -0
- package/dist/src/execution/reminders/index.d.ts.map +1 -0
- package/dist/src/execution/reminders/index.js +9 -0
- package/dist/src/execution/reminders/index.js.map +1 -0
- package/dist/src/execution/reminders/reminder-execution-coordinator.d.ts +125 -0
- package/dist/src/execution/reminders/reminder-execution-coordinator.d.ts.map +1 -0
- package/dist/src/execution/reminders/reminder-execution-coordinator.js +129 -0
- package/dist/src/execution/reminders/reminder-execution-coordinator.js.map +1 -0
- package/dist/src/execution/reminders/reminder-execution-types.d.ts +161 -0
- package/dist/src/execution/reminders/reminder-execution-types.d.ts.map +1 -0
- package/dist/src/execution/reminders/reminder-execution-types.js +39 -0
- package/dist/src/execution/reminders/reminder-execution-types.js.map +1 -0
- package/dist/src/execution/reminders/reminder-execution-validator.d.ts +45 -0
- package/dist/src/execution/reminders/reminder-execution-validator.d.ts.map +1 -0
- package/dist/src/execution/reminders/reminder-execution-validator.js +92 -0
- package/dist/src/execution/reminders/reminder-execution-validator.js.map +1 -0
- package/dist/src/execution/reminders/reminder-executor.d.ts +62 -0
- package/dist/src/execution/reminders/reminder-executor.d.ts.map +1 -0
- package/dist/src/execution/reminders/reminder-executor.js +113 -0
- package/dist/src/execution/reminders/reminder-executor.js.map +1 -0
- package/dist/src/execution/reminders/reminder-time-parser.d.ts +41 -0
- package/dist/src/execution/reminders/reminder-time-parser.d.ts.map +1 -0
- package/dist/src/execution/reminders/reminder-time-parser.js +113 -0
- package/dist/src/execution/reminders/reminder-time-parser.js.map +1 -0
- package/dist/src/friction/auto-capture.d.ts +38 -0
- package/dist/src/friction/auto-capture.d.ts.map +1 -0
- package/dist/src/friction/auto-capture.js +133 -0
- package/dist/src/friction/auto-capture.js.map +1 -0
- package/dist/src/friction/client.d.ts +39 -0
- package/dist/src/friction/client.d.ts.map +1 -0
- package/dist/src/friction/client.js +165 -0
- package/dist/src/friction/client.js.map +1 -0
- package/dist/src/friction/config.d.ts +16 -0
- package/dist/src/friction/config.d.ts.map +1 -0
- package/dist/src/friction/config.js +56 -0
- package/dist/src/friction/config.js.map +1 -0
- package/dist/src/friction/github-auth.d.ts +41 -0
- package/dist/src/friction/github-auth.d.ts.map +1 -0
- package/dist/src/friction/github-auth.js +155 -0
- package/dist/src/friction/github-auth.js.map +1 -0
- package/dist/src/friction/github-issues.d.ts +51 -0
- package/dist/src/friction/github-issues.d.ts.map +1 -0
- package/dist/src/friction/github-issues.js +118 -0
- package/dist/src/friction/github-issues.js.map +1 -0
- package/dist/src/friction/payout-ledger.d.ts +45 -0
- package/dist/src/friction/payout-ledger.d.ts.map +1 -0
- package/dist/src/friction/payout-ledger.js +111 -0
- package/dist/src/friction/payout-ledger.js.map +1 -0
- package/dist/src/friction/queue.d.ts +42 -0
- package/dist/src/friction/queue.d.ts.map +1 -0
- package/dist/src/friction/queue.js +179 -0
- package/dist/src/friction/queue.js.map +1 -0
- package/dist/src/friction/reviewer.d.ts +42 -0
- package/dist/src/friction/reviewer.d.ts.map +1 -0
- package/dist/src/friction/reviewer.js +269 -0
- package/dist/src/friction/reviewer.js.map +1 -0
- package/dist/src/friction/types.d.ts +63 -0
- package/dist/src/friction/types.d.ts.map +1 -0
- package/dist/src/friction/types.js +18 -0
- package/dist/src/friction/types.js.map +1 -0
- package/dist/src/history/index.d.ts +39 -0
- package/dist/src/history/index.d.ts.map +1 -0
- package/dist/src/history/index.js +41 -0
- package/dist/src/history/index.js.map +1 -0
- package/dist/src/history/session-chain.d.ts +36 -0
- package/dist/src/history/session-chain.d.ts.map +1 -0
- package/dist/src/history/session-chain.js +91 -0
- package/dist/src/history/session-chain.js.map +1 -0
- package/dist/src/history/types.d.ts +130 -0
- package/dist/src/history/types.d.ts.map +1 -0
- package/dist/src/history/types.js +32 -0
- package/dist/src/history/types.js.map +1 -0
- package/dist/src/history/workflow-history.d.ts +48 -0
- package/dist/src/history/workflow-history.d.ts.map +1 -0
- package/dist/src/history/workflow-history.js +116 -0
- package/dist/src/history/workflow-history.js.map +1 -0
- package/dist/src/index.d.ts +88 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +58 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/intake/classify-intent-state.d.ts +20 -0
- package/dist/src/intake/classify-intent-state.d.ts.map +1 -0
- package/dist/src/intake/classify-intent-state.js +29 -0
- package/dist/src/intake/classify-intent-state.js.map +1 -0
- package/dist/src/intake/intake-service.d.ts +105 -0
- package/dist/src/intake/intake-service.d.ts.map +1 -0
- package/dist/src/intake/intake-service.js +407 -0
- package/dist/src/intake/intake-service.js.map +1 -0
- package/dist/src/intake/response-planner.d.ts +25 -0
- package/dist/src/intake/response-planner.d.ts.map +1 -0
- package/dist/src/intake/response-planner.js +52 -0
- package/dist/src/intake/response-planner.js.map +1 -0
- package/dist/src/intake/signal-extractor.d.ts +25 -0
- package/dist/src/intake/signal-extractor.d.ts.map +1 -0
- package/dist/src/intake/signal-extractor.js +42 -0
- package/dist/src/intake/signal-extractor.js.map +1 -0
- package/dist/src/intake/trace.d.ts +157 -0
- package/dist/src/intake/trace.d.ts.map +1 -0
- package/dist/src/intake/trace.js +38 -0
- package/dist/src/intake/trace.js.map +1 -0
- package/dist/src/intake/types.d.ts +70 -0
- package/dist/src/intake/types.d.ts.map +1 -0
- package/dist/src/intake/types.js +30 -0
- package/dist/src/intake/types.js.map +1 -0
- package/dist/src/interaction/defaults.d.ts +12 -0
- package/dist/src/interaction/defaults.d.ts.map +1 -0
- package/dist/src/interaction/defaults.js +26 -0
- package/dist/src/interaction/defaults.js.map +1 -0
- package/dist/src/interaction/guidance-order.d.ts +53 -0
- package/dist/src/interaction/guidance-order.d.ts.map +1 -0
- package/dist/src/interaction/guidance-order.js +131 -0
- package/dist/src/interaction/guidance-order.js.map +1 -0
- package/dist/src/interaction/observe.d.ts +57 -0
- package/dist/src/interaction/observe.d.ts.map +1 -0
- package/dist/src/interaction/observe.js +77 -0
- package/dist/src/interaction/observe.js.map +1 -0
- package/dist/src/interaction/selectors.d.ts +16 -0
- package/dist/src/interaction/selectors.d.ts.map +1 -0
- package/dist/src/interaction/selectors.js +23 -0
- package/dist/src/interaction/selectors.js.map +1 -0
- package/dist/src/interaction/types.d.ts +105 -0
- package/dist/src/interaction/types.d.ts.map +1 -0
- package/dist/src/interaction/types.js +48 -0
- package/dist/src/interaction/types.js.map +1 -0
- package/dist/src/interaction/updater.d.ts +22 -0
- package/dist/src/interaction/updater.d.ts.map +1 -0
- package/dist/src/interaction/updater.js +87 -0
- package/dist/src/interaction/updater.js.map +1 -0
- package/dist/src/present/boundary-explanation/boundary-explanation-detector.d.ts +48 -0
- package/dist/src/present/boundary-explanation/boundary-explanation-detector.d.ts.map +1 -0
- package/dist/src/present/boundary-explanation/boundary-explanation-detector.js +107 -0
- package/dist/src/present/boundary-explanation/boundary-explanation-detector.js.map +1 -0
- package/dist/src/present/boundary-explanation/boundary-explanation-types.d.ts +43 -0
- package/dist/src/present/boundary-explanation/boundary-explanation-types.d.ts.map +1 -0
- package/dist/src/present/boundary-explanation/boundary-explanation-types.js +20 -0
- package/dist/src/present/boundary-explanation/boundary-explanation-types.js.map +1 -0
- package/dist/src/present/boundary-explanation/index.d.ts +10 -0
- package/dist/src/present/boundary-explanation/index.d.ts.map +1 -0
- package/dist/src/present/boundary-explanation/index.js +2 -0
- package/dist/src/present/boundary-explanation/index.js.map +1 -0
- package/dist/src/present/control-visibility/control-visibility-assertions.d.ts +70 -0
- package/dist/src/present/control-visibility/control-visibility-assertions.d.ts.map +1 -0
- package/dist/src/present/control-visibility/control-visibility-assertions.js +138 -0
- package/dist/src/present/control-visibility/control-visibility-assertions.js.map +1 -0
- package/dist/src/present/control-visibility/control-visibility-evaluator.d.ts +67 -0
- package/dist/src/present/control-visibility/control-visibility-evaluator.d.ts.map +1 -0
- package/dist/src/present/control-visibility/control-visibility-evaluator.js +146 -0
- package/dist/src/present/control-visibility/control-visibility-evaluator.js.map +1 -0
- package/dist/src/present/control-visibility/control-visibility-types.d.ts +113 -0
- package/dist/src/present/control-visibility/control-visibility-types.d.ts.map +1 -0
- package/dist/src/present/control-visibility/control-visibility-types.js +24 -0
- package/dist/src/present/control-visibility/control-visibility-types.js.map +1 -0
- package/dist/src/present/control-visibility/index.d.ts +16 -0
- package/dist/src/present/control-visibility/index.d.ts.map +1 -0
- package/dist/src/present/control-visibility/index.js +15 -0
- package/dist/src/present/control-visibility/index.js.map +1 -0
- package/dist/src/present/format.d.ts +57 -0
- package/dist/src/present/format.d.ts.map +1 -0
- package/dist/src/present/format.js +150 -0
- package/dist/src/present/format.js.map +1 -0
- package/dist/src/present/present-coordinator.d.ts +153 -0
- package/dist/src/present/present-coordinator.d.ts.map +1 -0
- package/dist/src/present/present-coordinator.js +213 -0
- package/dist/src/present/present-coordinator.js.map +1 -0
- package/dist/src/present/reminders/index.d.ts +22 -0
- package/dist/src/present/reminders/index.d.ts.map +1 -0
- package/dist/src/present/reminders/index.js +22 -0
- package/dist/src/present/reminders/index.js.map +1 -0
- package/dist/src/present/reminders/reminder-presenter.d.ts +76 -0
- package/dist/src/present/reminders/reminder-presenter.d.ts.map +1 -0
- package/dist/src/present/reminders/reminder-presenter.js +359 -0
- package/dist/src/present/reminders/reminder-presenter.js.map +1 -0
- package/dist/src/present/reminders/reminder-renderer.d.ts +82 -0
- package/dist/src/present/reminders/reminder-renderer.d.ts.map +1 -0
- package/dist/src/present/reminders/reminder-renderer.js +136 -0
- package/dist/src/present/reminders/reminder-renderer.js.map +1 -0
- package/dist/src/present/reminders/reminder-types.d.ts +131 -0
- package/dist/src/present/reminders/reminder-types.d.ts.map +1 -0
- package/dist/src/present/reminders/reminder-types.js +29 -0
- package/dist/src/present/reminders/reminder-types.js.map +1 -0
- package/dist/src/present/types.d.ts +114 -0
- package/dist/src/present/types.d.ts.map +1 -0
- package/dist/src/present/types.js +18 -0
- package/dist/src/present/types.js.map +1 -0
- package/dist/src/product/claude-product-session.d.ts +146 -0
- package/dist/src/product/claude-product-session.d.ts.map +1 -0
- package/dist/src/product/claude-product-session.js +362 -0
- package/dist/src/product/claude-product-session.js.map +1 -0
- package/dist/src/product/cursor-product-session.d.ts +211 -0
- package/dist/src/product/cursor-product-session.d.ts.map +1 -0
- package/dist/src/product/cursor-product-session.js +390 -0
- package/dist/src/product/cursor-product-session.js.map +1 -0
- package/dist/src/product/index.d.ts +28 -0
- package/dist/src/product/index.d.ts.map +1 -0
- package/dist/src/product/index.js +22 -0
- package/dist/src/product/index.js.map +1 -0
- package/dist/src/product/session-resilience/index.d.ts +17 -0
- package/dist/src/product/session-resilience/index.d.ts.map +1 -0
- package/dist/src/product/session-resilience/index.js +15 -0
- package/dist/src/product/session-resilience/index.js.map +1 -0
- package/dist/src/product/session-resilience/session-serializer.d.ts +43 -0
- package/dist/src/product/session-resilience/session-serializer.d.ts.map +1 -0
- package/dist/src/product/session-resilience/session-serializer.js +84 -0
- package/dist/src/product/session-resilience/session-serializer.js.map +1 -0
- package/dist/src/product/session-resilience/session-snapshot-types.d.ts +35 -0
- package/dist/src/product/session-resilience/session-snapshot-types.d.ts.map +1 -0
- package/dist/src/product/session-resilience/session-snapshot-types.js +21 -0
- package/dist/src/product/session-resilience/session-snapshot-types.js.map +1 -0
- package/dist/src/product/session-resilience/session-staleness.d.ts +54 -0
- package/dist/src/product/session-resilience/session-staleness.d.ts.map +1 -0
- package/dist/src/product/session-resilience/session-staleness.js +62 -0
- package/dist/src/product/session-resilience/session-staleness.js.map +1 -0
- package/dist/src/product/session-resilience/session-summary.d.ts +40 -0
- package/dist/src/product/session-resilience/session-summary.d.ts.map +1 -0
- package/dist/src/product/session-resilience/session-summary.js +72 -0
- package/dist/src/product/session-resilience/session-summary.js.map +1 -0
- package/dist/src/prv/patterns.d.ts +32 -0
- package/dist/src/prv/patterns.d.ts.map +1 -0
- package/dist/src/prv/patterns.js +40 -0
- package/dist/src/prv/patterns.js.map +1 -0
- package/dist/src/prv/prv.d.ts +13 -0
- package/dist/src/prv/prv.d.ts.map +1 -0
- package/dist/src/prv/prv.js +22 -0
- package/dist/src/prv/prv.js.map +1 -0
- package/dist/src/prv/types.d.ts +26 -0
- package/dist/src/prv/types.d.ts.map +1 -0
- package/dist/src/prv/types.js +15 -0
- package/dist/src/prv/types.js.map +1 -0
- package/dist/src/safety/detectors/arbitrary-exec.detector.d.ts +3 -0
- package/dist/src/safety/detectors/arbitrary-exec.detector.d.ts.map +1 -0
- package/dist/src/safety/detectors/arbitrary-exec.detector.js +31 -0
- package/dist/src/safety/detectors/arbitrary-exec.detector.js.map +1 -0
- package/dist/src/safety/detectors/bulk-data-exfil.detector.d.ts +21 -0
- package/dist/src/safety/detectors/bulk-data-exfil.detector.d.ts.map +1 -0
- package/dist/src/safety/detectors/bulk-data-exfil.detector.js +90 -0
- package/dist/src/safety/detectors/bulk-data-exfil.detector.js.map +1 -0
- package/dist/src/safety/detectors/destructive.detector.d.ts +3 -0
- package/dist/src/safety/detectors/destructive.detector.d.ts.map +1 -0
- package/dist/src/safety/detectors/destructive.detector.js +28 -0
- package/dist/src/safety/detectors/destructive.detector.js.map +1 -0
- package/dist/src/safety/detectors/evasion.detector.d.ts +3 -0
- package/dist/src/safety/detectors/evasion.detector.d.ts.map +1 -0
- package/dist/src/safety/detectors/evasion.detector.js +28 -0
- package/dist/src/safety/detectors/evasion.detector.js.map +1 -0
- package/dist/src/safety/detectors/secret-access.detector.d.ts +31 -0
- package/dist/src/safety/detectors/secret-access.detector.d.ts.map +1 -0
- package/dist/src/safety/detectors/secret-access.detector.js +78 -0
- package/dist/src/safety/detectors/secret-access.detector.js.map +1 -0
- package/dist/src/safety/registry.d.ts +9 -0
- package/dist/src/safety/registry.d.ts.map +1 -0
- package/dist/src/safety/registry.js +22 -0
- package/dist/src/safety/registry.js.map +1 -0
- package/dist/src/safety/safety-gate.d.ts +16 -0
- package/dist/src/safety/safety-gate.d.ts.map +1 -0
- package/dist/src/safety/safety-gate.js +26 -0
- package/dist/src/safety/safety-gate.js.map +1 -0
- package/dist/src/safety/types.d.ts +35 -0
- package/dist/src/safety/types.d.ts.map +1 -0
- package/dist/src/safety/types.js +14 -0
- package/dist/src/safety/types.js.map +1 -0
- package/dist/src/shell/claude-shell.d.ts +63 -0
- package/dist/src/shell/claude-shell.d.ts.map +1 -0
- package/dist/src/shell/claude-shell.js +81 -0
- package/dist/src/shell/claude-shell.js.map +1 -0
- package/dist/src/shell/cli/friction-admin.d.ts +14 -0
- package/dist/src/shell/cli/friction-admin.d.ts.map +1 -0
- package/dist/src/shell/cli/friction-admin.js +276 -0
- package/dist/src/shell/cli/friction-admin.js.map +1 -0
- package/dist/src/shell/cli/friction-report.d.ts +16 -0
- package/dist/src/shell/cli/friction-report.d.ts.map +1 -0
- package/dist/src/shell/cli/friction-report.js +156 -0
- package/dist/src/shell/cli/friction-report.js.map +1 -0
- package/dist/src/shell/cli/main.d.ts +68 -0
- package/dist/src/shell/cli/main.d.ts.map +1 -0
- package/dist/src/shell/cli/main.js +488 -0
- package/dist/src/shell/cli/main.js.map +1 -0
- package/dist/src/shell/cli/use-steady.d.ts +26 -0
- package/dist/src/shell/cli/use-steady.d.ts.map +1 -0
- package/dist/src/shell/cli/use-steady.js +117 -0
- package/dist/src/shell/cli/use-steady.js.map +1 -0
- package/dist/src/shell/cursor-shell.d.ts +63 -0
- package/dist/src/shell/cursor-shell.d.ts.map +1 -0
- package/dist/src/shell/cursor-shell.js +88 -0
- package/dist/src/shell/cursor-shell.js.map +1 -0
- package/dist/src/shell/defaults.d.ts +51 -0
- package/dist/src/shell/defaults.d.ts.map +1 -0
- package/dist/src/shell/defaults.js +78 -0
- package/dist/src/shell/defaults.js.map +1 -0
- package/dist/src/shell/history-render.d.ts +56 -0
- package/dist/src/shell/history-render.d.ts.map +1 -0
- package/dist/src/shell/history-render.js +166 -0
- package/dist/src/shell/history-render.js.map +1 -0
- package/dist/src/shell/index.d.ts +43 -0
- package/dist/src/shell/index.d.ts.map +1 -0
- package/dist/src/shell/index.js +45 -0
- package/dist/src/shell/index.js.map +1 -0
- package/dist/src/shell/render.d.ts +42 -0
- package/dist/src/shell/render.d.ts.map +1 -0
- package/dist/src/shell/render.js +122 -0
- package/dist/src/shell/render.js.map +1 -0
- package/dist/src/shell/types.d.ts +46 -0
- package/dist/src/shell/types.d.ts.map +1 -0
- package/dist/src/shell/types.js +19 -0
- package/dist/src/shell/types.js.map +1 -0
- package/dist/src/shell/workflow-defaults.d.ts +23 -0
- package/dist/src/shell/workflow-defaults.d.ts.map +1 -0
- package/dist/src/shell/workflow-defaults.js +27 -0
- package/dist/src/shell/workflow-defaults.js.map +1 -0
- package/dist/src/shell/workflow-render.d.ts +54 -0
- package/dist/src/shell/workflow-render.d.ts.map +1 -0
- package/dist/src/shell/workflow-render.js +319 -0
- package/dist/src/shell/workflow-render.js.map +1 -0
- package/dist/src/shell/workflow-shell.d.ts +110 -0
- package/dist/src/shell/workflow-shell.d.ts.map +1 -0
- package/dist/src/shell/workflow-shell.js +180 -0
- package/dist/src/shell/workflow-shell.js.map +1 -0
- package/dist/src/skills/audit.d.ts +118 -0
- package/dist/src/skills/audit.d.ts.map +1 -0
- package/dist/src/skills/audit.js +147 -0
- package/dist/src/skills/audit.js.map +1 -0
- package/dist/src/skills/invocation.d.ts +131 -0
- package/dist/src/skills/invocation.d.ts.map +1 -0
- package/dist/src/skills/invocation.js +165 -0
- package/dist/src/skills/invocation.js.map +1 -0
- package/dist/src/skills/loader.d.ts +70 -0
- package/dist/src/skills/loader.d.ts.map +1 -0
- package/dist/src/skills/loader.js +220 -0
- package/dist/src/skills/loader.js.map +1 -0
- package/dist/src/skills/local-recovery-adapter.d.ts +49 -0
- package/dist/src/skills/local-recovery-adapter.d.ts.map +1 -0
- package/dist/src/skills/local-recovery-adapter.js +184 -0
- package/dist/src/skills/local-recovery-adapter.js.map +1 -0
- package/dist/src/skills/parser.d.ts +53 -0
- package/dist/src/skills/parser.d.ts.map +1 -0
- package/dist/src/skills/parser.js +336 -0
- package/dist/src/skills/parser.js.map +1 -0
- package/dist/src/skills/registry.d.ts +123 -0
- package/dist/src/skills/registry.d.ts.map +1 -0
- package/dist/src/skills/registry.js +144 -0
- package/dist/src/skills/registry.js.map +1 -0
- package/dist/src/skills/types.d.ts +242 -0
- package/dist/src/skills/types.d.ts.map +1 -0
- package/dist/src/skills/types.js +50 -0
- package/dist/src/skills/types.js.map +1 -0
- package/dist/src/skills/validator.d.ts +31 -0
- package/dist/src/skills/validator.d.ts.map +1 -0
- package/dist/src/skills/validator.js +366 -0
- package/dist/src/skills/validator.js.map +1 -0
- package/dist/src/ucp/envelope.d.ts +165 -0
- package/dist/src/ucp/envelope.d.ts.map +1 -0
- package/dist/src/ucp/envelope.js +241 -0
- package/dist/src/ucp/envelope.js.map +1 -0
- package/dist/src/ucp/hashes.d.ts +36 -0
- package/dist/src/ucp/hashes.d.ts.map +1 -0
- package/dist/src/ucp/hashes.js +59 -0
- package/dist/src/ucp/hashes.js.map +1 -0
- package/dist/src/ucp/mappers/map-artifact.d.ts +58 -0
- package/dist/src/ucp/mappers/map-artifact.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-artifact.js +51 -0
- package/dist/src/ucp/mappers/map-artifact.js.map +1 -0
- package/dist/src/ucp/mappers/map-change-interpretation.d.ts +12 -0
- package/dist/src/ucp/mappers/map-change-interpretation.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-change-interpretation.js +18 -0
- package/dist/src/ucp/mappers/map-change-interpretation.js.map +1 -0
- package/dist/src/ucp/mappers/map-completion.d.ts +10 -0
- package/dist/src/ucp/mappers/map-completion.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-completion.js +24 -0
- package/dist/src/ucp/mappers/map-completion.js.map +1 -0
- package/dist/src/ucp/mappers/map-context.d.ts +9 -0
- package/dist/src/ucp/mappers/map-context.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-context.js +13 -0
- package/dist/src/ucp/mappers/map-context.js.map +1 -0
- package/dist/src/ucp/mappers/map-debug-trace.d.ts +10 -0
- package/dist/src/ucp/mappers/map-debug-trace.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-debug-trace.js +18 -0
- package/dist/src/ucp/mappers/map-debug-trace.js.map +1 -0
- package/dist/src/ucp/mappers/map-disambiguation.d.ts +10 -0
- package/dist/src/ucp/mappers/map-disambiguation.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-disambiguation.js +21 -0
- package/dist/src/ucp/mappers/map-disambiguation.js.map +1 -0
- package/dist/src/ucp/mappers/map-execution-trace.d.ts +64 -0
- package/dist/src/ucp/mappers/map-execution-trace.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-execution-trace.js +57 -0
- package/dist/src/ucp/mappers/map-execution-trace.js.map +1 -0
- package/dist/src/ucp/mappers/map-intent-interpretation.d.ts +11 -0
- package/dist/src/ucp/mappers/map-intent-interpretation.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-intent-interpretation.js +17 -0
- package/dist/src/ucp/mappers/map-intent-interpretation.js.map +1 -0
- package/dist/src/ucp/mappers/map-intent.d.ts +9 -0
- package/dist/src/ucp/mappers/map-intent.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-intent.js +11 -0
- package/dist/src/ucp/mappers/map-intent.js.map +1 -0
- package/dist/src/ucp/mappers/map-prv.d.ts +10 -0
- package/dist/src/ucp/mappers/map-prv.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-prv.js +14 -0
- package/dist/src/ucp/mappers/map-prv.js.map +1 -0
- package/dist/src/ucp/mappers/map-reminder-execution.d.ts +57 -0
- package/dist/src/ucp/mappers/map-reminder-execution.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-reminder-execution.js +69 -0
- package/dist/src/ucp/mappers/map-reminder-execution.js.map +1 -0
- package/dist/src/ucp/mappers/map-replay-report.d.ts +81 -0
- package/dist/src/ucp/mappers/map-replay-report.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-replay-report.js +76 -0
- package/dist/src/ucp/mappers/map-replay-report.js.map +1 -0
- package/dist/src/ucp/mappers/map-response.d.ts +13 -0
- package/dist/src/ucp/mappers/map-response.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-response.js +25 -0
- package/dist/src/ucp/mappers/map-response.js.map +1 -0
- package/dist/src/ucp/mappers/map-safety.d.ts +14 -0
- package/dist/src/ucp/mappers/map-safety.d.ts.map +1 -0
- package/dist/src/ucp/mappers/map-safety.js +22 -0
- package/dist/src/ucp/mappers/map-safety.js.map +1 -0
- package/dist/src/ucp/persistence/index.d.ts +24 -0
- package/dist/src/ucp/persistence/index.d.ts.map +1 -0
- package/dist/src/ucp/persistence/index.js +22 -0
- package/dist/src/ucp/persistence/index.js.map +1 -0
- package/dist/src/ucp/persistence/query.d.ts +164 -0
- package/dist/src/ucp/persistence/query.d.ts.map +1 -0
- package/dist/src/ucp/persistence/query.js +240 -0
- package/dist/src/ucp/persistence/query.js.map +1 -0
- package/dist/src/ucp/persistence/reader.d.ts +43 -0
- package/dist/src/ucp/persistence/reader.d.ts.map +1 -0
- package/dist/src/ucp/persistence/reader.js +104 -0
- package/dist/src/ucp/persistence/reader.js.map +1 -0
- package/dist/src/ucp/persistence/store.d.ts +77 -0
- package/dist/src/ucp/persistence/store.d.ts.map +1 -0
- package/dist/src/ucp/persistence/store.js +177 -0
- package/dist/src/ucp/persistence/store.js.map +1 -0
- package/dist/src/ucp/persistence/write.d.ts +48 -0
- package/dist/src/ucp/persistence/write.d.ts.map +1 -0
- package/dist/src/ucp/persistence/write.js +59 -0
- package/dist/src/ucp/persistence/write.js.map +1 -0
- package/dist/src/ucp/projection.d.ts +146 -0
- package/dist/src/ucp/projection.d.ts.map +1 -0
- package/dist/src/ucp/projection.js +139 -0
- package/dist/src/ucp/projection.js.map +1 -0
- package/dist/src/ucp/types.d.ts +585 -0
- package/dist/src/ucp/types.d.ts.map +1 -0
- package/dist/src/ucp/types.js +57 -0
- package/dist/src/ucp/types.js.map +1 -0
- package/dist/src/understand/completion/completion.d.ts +26 -0
- package/dist/src/understand/completion/completion.d.ts.map +1 -0
- package/dist/src/understand/completion/completion.js +45 -0
- package/dist/src/understand/completion/completion.js.map +1 -0
- package/dist/src/understand/completion/rules.d.ts +61 -0
- package/dist/src/understand/completion/rules.d.ts.map +1 -0
- package/dist/src/understand/completion/rules.js +268 -0
- package/dist/src/understand/completion/rules.js.map +1 -0
- package/dist/src/understand/completion/types.d.ts +68 -0
- package/dist/src/understand/completion/types.d.ts.map +1 -0
- package/dist/src/understand/completion/types.js +34 -0
- package/dist/src/understand/completion/types.js.map +1 -0
- package/dist/src/understand/context/context-alignment.d.ts +18 -0
- package/dist/src/understand/context/context-alignment.d.ts.map +1 -0
- package/dist/src/understand/context/context-alignment.js +61 -0
- package/dist/src/understand/context/context-alignment.js.map +1 -0
- package/dist/src/understand/context/types.d.ts +20 -0
- package/dist/src/understand/context/types.d.ts.map +1 -0
- package/dist/src/understand/context/types.js +13 -0
- package/dist/src/understand/context/types.js.map +1 -0
- package/dist/src/understand/disambiguation/detectors/missing-context.detector.d.ts +12 -0
- package/dist/src/understand/disambiguation/detectors/missing-context.detector.d.ts.map +1 -0
- package/dist/src/understand/disambiguation/detectors/missing-context.detector.js +60 -0
- package/dist/src/understand/disambiguation/detectors/missing-context.detector.js.map +1 -0
- package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.d.ts +13 -0
- package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.d.ts.map +1 -0
- package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.js +57 -0
- package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.js.map +1 -0
- package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.d.ts +16 -0
- package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.d.ts.map +1 -0
- package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.js +56 -0
- package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.js.map +1 -0
- package/dist/src/understand/disambiguation/registry.d.ts +14 -0
- package/dist/src/understand/disambiguation/registry.d.ts.map +1 -0
- package/dist/src/understand/disambiguation/registry.js +27 -0
- package/dist/src/understand/disambiguation/registry.js.map +1 -0
- package/dist/src/understand/disambiguation/types.d.ts +34 -0
- package/dist/src/understand/disambiguation/types.d.ts.map +1 -0
- package/dist/src/understand/disambiguation/types.js +15 -0
- package/dist/src/understand/disambiguation/types.js.map +1 -0
- package/dist/src/understand/intent-interpretation/intent-interpretation.d.ts +86 -0
- package/dist/src/understand/intent-interpretation/intent-interpretation.d.ts.map +1 -0
- package/dist/src/understand/intent-interpretation/intent-interpretation.js +141 -0
- package/dist/src/understand/intent-interpretation/intent-interpretation.js.map +1 -0
- package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.d.ts +33 -0
- package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.d.ts.map +1 -0
- package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.js +66 -0
- package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.js.map +1 -0
- package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.d.ts +20 -0
- package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.d.ts.map +1 -0
- package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.js +80 -0
- package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.js.map +1 -0
- package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.d.ts +25 -0
- package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.d.ts.map +1 -0
- package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.js +47 -0
- package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.js.map +1 -0
- package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.d.ts +35 -0
- package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.d.ts.map +1 -0
- package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.js +89 -0
- package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.js.map +1 -0
- package/dist/src/understand/intent-interpretation/registry.d.ts +18 -0
- package/dist/src/understand/intent-interpretation/registry.d.ts.map +1 -0
- package/dist/src/understand/intent-interpretation/registry.js +26 -0
- package/dist/src/understand/intent-interpretation/registry.js.map +1 -0
- package/dist/src/understand/intent-interpretation/types.d.ts +83 -0
- package/dist/src/understand/intent-interpretation/types.d.ts.map +1 -0
- package/dist/src/understand/intent-interpretation/types.js +40 -0
- package/dist/src/understand/intent-interpretation/types.js.map +1 -0
- package/dist/src/understand/interpretation/intent.d.ts +72 -0
- package/dist/src/understand/interpretation/intent.d.ts.map +1 -0
- package/dist/src/understand/interpretation/intent.js +414 -0
- package/dist/src/understand/interpretation/intent.js.map +1 -0
- package/dist/src/understand/interpretation/interpretation.d.ts +26 -0
- package/dist/src/understand/interpretation/interpretation.d.ts.map +1 -0
- package/dist/src/understand/interpretation/interpretation.js +43 -0
- package/dist/src/understand/interpretation/interpretation.js.map +1 -0
- package/dist/src/understand/interpretation/parser.d.ts +20 -0
- package/dist/src/understand/interpretation/parser.d.ts.map +1 -0
- package/dist/src/understand/interpretation/parser.js +88 -0
- package/dist/src/understand/interpretation/parser.js.map +1 -0
- package/dist/src/understand/interpretation/rules.d.ts +19 -0
- package/dist/src/understand/interpretation/rules.d.ts.map +1 -0
- package/dist/src/understand/interpretation/rules.js +222 -0
- package/dist/src/understand/interpretation/rules.js.map +1 -0
- package/dist/src/understand/interpretation/types.d.ts +90 -0
- package/dist/src/understand/interpretation/types.d.ts.map +1 -0
- package/dist/src/understand/interpretation/types.js +29 -0
- package/dist/src/understand/interpretation/types.js.map +1 -0
- package/dist/src/understand/shared/types.d.ts +13 -0
- package/dist/src/understand/shared/types.d.ts.map +1 -0
- package/dist/src/understand/shared/types.js +9 -0
- package/dist/src/understand/shared/types.js.map +1 -0
- package/dist/src/understand/silent-guidance/index.d.ts +4 -0
- package/dist/src/understand/silent-guidance/index.d.ts.map +1 -0
- package/dist/src/understand/silent-guidance/index.js +3 -0
- package/dist/src/understand/silent-guidance/index.js.map +1 -0
- package/dist/src/understand/silent-guidance/selector.d.ts +44 -0
- package/dist/src/understand/silent-guidance/selector.d.ts.map +1 -0
- package/dist/src/understand/silent-guidance/selector.js +158 -0
- package/dist/src/understand/silent-guidance/selector.js.map +1 -0
- package/dist/src/understand/silent-guidance/templates.d.ts +31 -0
- package/dist/src/understand/silent-guidance/templates.d.ts.map +1 -0
- package/dist/src/understand/silent-guidance/templates.js +109 -0
- package/dist/src/understand/silent-guidance/templates.js.map +1 -0
- package/dist/src/understand/silent-guidance/types.d.ts +36 -0
- package/dist/src/understand/silent-guidance/types.d.ts.map +1 -0
- package/dist/src/understand/silent-guidance/types.js +2 -0
- package/dist/src/understand/silent-guidance/types.js.map +1 -0
- package/dist/src/workflow/coordinator.d.ts +197 -0
- package/dist/src/workflow/coordinator.d.ts.map +1 -0
- package/dist/src/workflow/coordinator.js +682 -0
- package/dist/src/workflow/coordinator.js.map +1 -0
- package/dist/src/workflow/index.d.ts +30 -0
- package/dist/src/workflow/index.d.ts.map +1 -0
- package/dist/src/workflow/index.js +30 -0
- package/dist/src/workflow/index.js.map +1 -0
- package/dist/src/workflow/types.d.ts +213 -0
- package/dist/src/workflow/types.d.ts.map +1 -0
- package/dist/src/workflow/types.js +27 -0
- package/dist/src/workflow/types.js.map +1 -0
- package/package.json +54 -0
- package/ui/README.md +73 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Stub Adapter — Phase 8B.
|
|
3
|
+
*
|
|
4
|
+
* ── Role ──────────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* The stub adapter is the first concrete implementation of ClaudeAgentPlugin.
|
|
7
|
+
* It proves that the mechanism-agnostic contract works — the same delivery gate
|
|
8
|
+
* operates identically whether the plugin returns a response immediately (stub)
|
|
9
|
+
* or asynchronously (real Anthropic API client).
|
|
10
|
+
*
|
|
11
|
+
* ── Transport proof ───────────────────────────────────────────────────────────
|
|
12
|
+
*
|
|
13
|
+
* ClaudeStubAdapter proves all three delivery paths:
|
|
14
|
+
* - accepted: stub returns ClaudeAccepted
|
|
15
|
+
* - refused_due_to_scope: stub returns ClaudeRefusedDueToScope
|
|
16
|
+
* - refused_due_to_execution_error: stub returns ClaudeRefusedDueToExecutionError
|
|
17
|
+
*
|
|
18
|
+
* The gate does not change behavior based on which adapter is used.
|
|
19
|
+
*
|
|
20
|
+
* ── Usage ─────────────────────────────────────────────────────────────────────
|
|
21
|
+
*
|
|
22
|
+
* In tests:
|
|
23
|
+
* const plugin = ClaudeStubAdapter.accepted("session-xyz");
|
|
24
|
+
* const gate = new ClaudeDeliveryGate(plugin, storeDir, deps);
|
|
25
|
+
* const result = await gate.deliver(approvedArtifact);
|
|
26
|
+
* expect(result.outcome).toBe("accepted");
|
|
27
|
+
*
|
|
28
|
+
* For a configurable sequence (scope refusal then accept):
|
|
29
|
+
* const plugin = ClaudeStubAdapter.sequence([
|
|
30
|
+
* ClaudeStubAdapter.scopeRefusalResponse({ questionKind: "need_file_path", ... }),
|
|
31
|
+
* ClaudeStubAdapter.acceptedResponse("session-abc"),
|
|
32
|
+
* ]);
|
|
33
|
+
*
|
|
34
|
+
* ── What this is NOT ──────────────────────────────────────────────────────────
|
|
35
|
+
*
|
|
36
|
+
* This is not a fake Anthropic API. It does not execute tasks, read files,
|
|
37
|
+
* or produce real agent outputs. It is purely for proving the delivery gate
|
|
38
|
+
* contract works against all three response kinds.
|
|
39
|
+
*
|
|
40
|
+
* See: src/claude/delivery-gate.ts — ClaudeAgentPlugin interface
|
|
41
|
+
*/
|
|
42
|
+
// ─── Stub adapter ─────────────────────────────────────────────────────────────
|
|
43
|
+
/**
|
|
44
|
+
* A configurable in-process ClaudeAgentPlugin.
|
|
45
|
+
*
|
|
46
|
+
* Configured at construction with a fixed response or a sequence of responses.
|
|
47
|
+
* Returns responses immediately (no async delay).
|
|
48
|
+
* Throws if a call is made beyond the configured responses.
|
|
49
|
+
*/
|
|
50
|
+
export class ClaudeStubAdapter {
|
|
51
|
+
responses;
|
|
52
|
+
callIndex = 0;
|
|
53
|
+
constructor(responses) {
|
|
54
|
+
if (responses.length === 0) {
|
|
55
|
+
throw new Error("ClaudeStubAdapter: responses must not be empty");
|
|
56
|
+
}
|
|
57
|
+
this.responses = responses;
|
|
58
|
+
}
|
|
59
|
+
async receive(request) {
|
|
60
|
+
const response = this.responses[this.callIndex];
|
|
61
|
+
if (response === undefined) {
|
|
62
|
+
throw new Error(`ClaudeStubAdapter: no response configured for call index ${this.callIndex} ` +
|
|
63
|
+
`(deliveryId=${request.deliveryId})`);
|
|
64
|
+
}
|
|
65
|
+
this.callIndex++;
|
|
66
|
+
return response;
|
|
67
|
+
}
|
|
68
|
+
/** How many times receive() has been called. */
|
|
69
|
+
get callCount() { return this.callIndex; }
|
|
70
|
+
// ─── Factory methods ───────────────────────────────────────────────────────
|
|
71
|
+
/** Adapter that always returns "accepted" with the given sessionId. */
|
|
72
|
+
static accepted(sessionId = "stub-session-id") {
|
|
73
|
+
return new ClaudeStubAdapter([ClaudeStubAdapter.acceptedResponse(sessionId)]);
|
|
74
|
+
}
|
|
75
|
+
/** Adapter that returns a scope refusal with the given question. */
|
|
76
|
+
static refusedScope(question) {
|
|
77
|
+
return new ClaudeStubAdapter([ClaudeStubAdapter.scopeRefusalResponse(question)]);
|
|
78
|
+
}
|
|
79
|
+
/** Adapter that returns an execution error with the given code. */
|
|
80
|
+
static refusedError(code = "stub_error", message = "Stub execution error.") {
|
|
81
|
+
return new ClaudeStubAdapter([ClaudeStubAdapter.executionErrorResponse(code, message)]);
|
|
82
|
+
}
|
|
83
|
+
/** Adapter that simulates a session interruption (A3: non-resumable). */
|
|
84
|
+
static sessionInterrupted() {
|
|
85
|
+
return new ClaudeStubAdapter([
|
|
86
|
+
ClaudeStubAdapter.executionErrorResponse("session_interrupted", "Claude managed session was interrupted. Non-resumable in V1."),
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
89
|
+
/** Adapter that returns responses in sequence. Throws if exhausted. */
|
|
90
|
+
static sequence(responses) {
|
|
91
|
+
return new ClaudeStubAdapter(responses);
|
|
92
|
+
}
|
|
93
|
+
// ─── Response builders ─────────────────────────────────────────────────────
|
|
94
|
+
static acceptedResponse(sessionId = "stub-session-id") {
|
|
95
|
+
return {
|
|
96
|
+
kind: "accepted",
|
|
97
|
+
sessionId,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
static scopeRefusalResponse(question) {
|
|
101
|
+
return {
|
|
102
|
+
kind: "refused_due_to_scope",
|
|
103
|
+
question,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
static executionErrorResponse(code = "stub_error", message = "Stub execution error.") {
|
|
107
|
+
return {
|
|
108
|
+
kind: "refused_due_to_execution_error",
|
|
109
|
+
code,
|
|
110
|
+
message,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=stub-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stub-adapter.js","sourceRoot":"","sources":["../../../../src/claude/adapters/stub-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAYH,iFAAiF;AAEjF;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IACX,SAAS,CAA2B;IAC7C,SAAS,GAAG,CAAC,CAAC;IAEtB,YAAY,SAAmC;QAC7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA8B;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,4DAA4D,IAAI,CAAC,SAAS,GAAG;gBAC7E,eAAe,OAAO,CAAC,UAAU,GAAG,CACrC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gDAAgD;IAChD,IAAI,SAAS,KAAa,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAElD,8EAA8E;IAE9E,uEAAuE;IACvE,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,iBAAiB;QAC3C,OAAO,IAAI,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,oEAAoE;IACpE,MAAM,CAAC,YAAY,CAAC,QAA6B;QAC/C,OAAO,IAAI,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,mEAAmE;IACnE,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,YAAY,EAAE,OAAO,GAAG,uBAAuB;QACxE,OAAO,IAAI,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,kBAAkB;QACvB,OAAO,IAAI,iBAAiB,CAAC;YAC3B,iBAAiB,CAAC,sBAAsB,CACtC,qBAAqB,EACrB,8DAA8D,CAC/D;SACF,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,QAAQ,CAAC,SAAmC;QACjD,OAAO,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,8EAA8E;IAE9E,MAAM,CAAC,gBAAgB,CAAC,SAAS,GAAG,iBAAiB;QACnD,OAAO;YACL,IAAI,EAAO,UAAU;YACrB,SAAS;SACV,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,QAA6B;QACvD,OAAO;YACL,IAAI,EAAM,sBAAsB;YAChC,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,sBAAsB,CAC3B,IAAI,GAAM,YAAY,EACtB,OAAO,GAAG,uBAAuB;QAEjC,OAAO;YACL,IAAI,EAAE,gCAAgC;YACtC,IAAI;YACJ,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude artifact mapper — Phase 8B.
|
|
3
|
+
*
|
|
4
|
+
* ── Role ──────────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* Translates an IntakeResult (mode === "execute") into a ClaudeAgentHandoffArtifact
|
|
7
|
+
* with eligibility: "pending_confirmation" and initial scope + tool constraints.
|
|
8
|
+
*
|
|
9
|
+
* This is the ONLY place that produces executionDomain.
|
|
10
|
+
* INVARIANT (A1): executionDomain is derived here from InterpretationResult or
|
|
11
|
+
* IntentInterpretation category. No downstream layer may re-classify it.
|
|
12
|
+
*
|
|
13
|
+
* ── What this mapper does ─────────────────────────────────────────────────────
|
|
14
|
+
*
|
|
15
|
+
* 1. Derives executionDomain from the interpretation category.
|
|
16
|
+
* 2. Builds taskSpec from interpretation summary + parsedChange (if present).
|
|
17
|
+
* 3. Sets initial allowedFiles = [parsedChange.filePath] or [].
|
|
18
|
+
* 4. Sets initial prohibitedPatterns from OCD policy (defensive defaults).
|
|
19
|
+
* 5. Sets allowedTools from the provided tool policy.
|
|
20
|
+
* 6. Sets eligibility = "pending_confirmation".
|
|
21
|
+
* 7. Sets ocdClearance = "clear" (OCD evaluator updates this separately).
|
|
22
|
+
*
|
|
23
|
+
* ── What this mapper does NOT do ──────────────────────────────────────────────
|
|
24
|
+
*
|
|
25
|
+
* - Does not read the filesystem
|
|
26
|
+
* - Does not call the Claude API
|
|
27
|
+
* - Does not set eligibility to "approved_for_agent" (only H does that)
|
|
28
|
+
* - Does not validate H-provided paths (delivery gate's job)
|
|
29
|
+
* - Does not re-classify executionDomain after building (A1)
|
|
30
|
+
*
|
|
31
|
+
* ── CONSTRUCTION RULE: undefined-free payloads ────────────────────────────────
|
|
32
|
+
*
|
|
33
|
+
* All payload objects must be undefined-free per UCP protocol invariant.
|
|
34
|
+
* Optional fields are omitted entirely when absent. Never assigned undefined.
|
|
35
|
+
*
|
|
36
|
+
* See: docs/claude-agent-phase-a-architecture.md
|
|
37
|
+
*/
|
|
38
|
+
import type { IntakeResult } from "../intake/types.js";
|
|
39
|
+
import type { ReplaceChange } from "../understand/interpretation/types.js";
|
|
40
|
+
type ParsedChange = ReplaceChange;
|
|
41
|
+
import type { ClaudeAgentHandoffArtifact, ClaudeToolPolicy } from "./types.js";
|
|
42
|
+
/**
|
|
43
|
+
* ClaudeOCDPolicy — the policy inputs for scope constraint building.
|
|
44
|
+
*
|
|
45
|
+
* Mirrors CursorOCDPolicy but applies to the Claude seam.
|
|
46
|
+
*/
|
|
47
|
+
export type ClaudeOCDPolicy = {
|
|
48
|
+
/** Globs that are always prohibited regardless of allowedFiles. */
|
|
49
|
+
readonly alwaysProhibitedGlobs: readonly string[];
|
|
50
|
+
/** Globs that are safe to write within. Empty = no positive restriction. */
|
|
51
|
+
readonly writeSafeGlobs: readonly string[];
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Build the initial ClaudeAgentHandoffArtifact from an IntakeResult.
|
|
55
|
+
*
|
|
56
|
+
* PRECONDITION: intake.mode === "execute". Caller must verify this.
|
|
57
|
+
*
|
|
58
|
+
* @param intake The completed intake result (mode must be "execute").
|
|
59
|
+
* @param intentId The ucp.intent.v1 envelope id.
|
|
60
|
+
* @param responseId The ucp.response.v1 envelope id.
|
|
61
|
+
* @param policy The OCD policy for scope constraint building.
|
|
62
|
+
* @param toolPolicy The tool policy (allowedTools, networkAccess, filesystemMode).
|
|
63
|
+
* @param parsedChange Optional parsed change from a structured edit command.
|
|
64
|
+
*/
|
|
65
|
+
export declare function buildClaudeHandoffArtifact(intake: IntakeResult, intentId: string, responseId: string, policy: ClaudeOCDPolicy, toolPolicy: ClaudeToolPolicy, parsedChange?: ParsedChange): ClaudeAgentHandoffArtifact;
|
|
66
|
+
/**
|
|
67
|
+
* Approve the artifact — transitions eligibility from "pending_confirmation"
|
|
68
|
+
* to "approved_for_agent". Records the approval timestamp.
|
|
69
|
+
*
|
|
70
|
+
* H is the only actor that may call this. Called by the product session on
|
|
71
|
+
* H's explicit approval action.
|
|
72
|
+
*/
|
|
73
|
+
export declare function approveClaudeArtifact(artifact: ClaudeAgentHandoffArtifact, at?: number): ClaudeAgentHandoffArtifact;
|
|
74
|
+
/**
|
|
75
|
+
* Narrow the artifact's allowed files to a subset.
|
|
76
|
+
*
|
|
77
|
+
* H may narrow (remove entries) but not widen (add new paths).
|
|
78
|
+
* The gate enforces this at delivery; this function enforces monotonicity
|
|
79
|
+
* structurally by filtering the current allowedFiles.
|
|
80
|
+
*
|
|
81
|
+
* Returns a new artifact with updated allowedFiles and a recomputed id.
|
|
82
|
+
*/
|
|
83
|
+
export declare function narrowClaudeArtifactScope(artifact: ClaudeAgentHandoffArtifact, allowedFiles: readonly string[]): ClaudeAgentHandoffArtifact;
|
|
84
|
+
export {};
|
|
85
|
+
//# sourceMappingURL=artifact-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-mapper.d.ts","sourceRoot":"","sources":["../../../src/claude/artifact-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAA2B,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAwB,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEjG,KAAK,YAAY,GAAG,aAAa,CAAC;AAGlC,OAAO,KAAK,EACV,0BAA0B,EAI1B,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAIpB;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,EAAS,SAAS,MAAM,EAAE,CAAC;CACnD,CAAC;AAIF;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAS,YAAY,EAC3B,QAAQ,EAAO,MAAM,EACrB,UAAU,EAAK,MAAM,EACrB,MAAM,EAAS,eAAe,EAC9B,UAAU,EAAK,gBAAgB,EAC/B,YAAY,CAAC,EAAE,YAAY,GAC1B,0BAA0B,CAmC5B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,0BAA0B,EACpC,EAAE,GAAQ,MAAmB,GAC5B,0BAA0B,CAO5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAM,0BAA0B,EACxC,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,0BAA0B,CAW5B"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude artifact mapper — Phase 8B.
|
|
3
|
+
*
|
|
4
|
+
* ── Role ──────────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* Translates an IntakeResult (mode === "execute") into a ClaudeAgentHandoffArtifact
|
|
7
|
+
* with eligibility: "pending_confirmation" and initial scope + tool constraints.
|
|
8
|
+
*
|
|
9
|
+
* This is the ONLY place that produces executionDomain.
|
|
10
|
+
* INVARIANT (A1): executionDomain is derived here from InterpretationResult or
|
|
11
|
+
* IntentInterpretation category. No downstream layer may re-classify it.
|
|
12
|
+
*
|
|
13
|
+
* ── What this mapper does ─────────────────────────────────────────────────────
|
|
14
|
+
*
|
|
15
|
+
* 1. Derives executionDomain from the interpretation category.
|
|
16
|
+
* 2. Builds taskSpec from interpretation summary + parsedChange (if present).
|
|
17
|
+
* 3. Sets initial allowedFiles = [parsedChange.filePath] or [].
|
|
18
|
+
* 4. Sets initial prohibitedPatterns from OCD policy (defensive defaults).
|
|
19
|
+
* 5. Sets allowedTools from the provided tool policy.
|
|
20
|
+
* 6. Sets eligibility = "pending_confirmation".
|
|
21
|
+
* 7. Sets ocdClearance = "clear" (OCD evaluator updates this separately).
|
|
22
|
+
*
|
|
23
|
+
* ── What this mapper does NOT do ──────────────────────────────────────────────
|
|
24
|
+
*
|
|
25
|
+
* - Does not read the filesystem
|
|
26
|
+
* - Does not call the Claude API
|
|
27
|
+
* - Does not set eligibility to "approved_for_agent" (only H does that)
|
|
28
|
+
* - Does not validate H-provided paths (delivery gate's job)
|
|
29
|
+
* - Does not re-classify executionDomain after building (A1)
|
|
30
|
+
*
|
|
31
|
+
* ── CONSTRUCTION RULE: undefined-free payloads ────────────────────────────────
|
|
32
|
+
*
|
|
33
|
+
* All payload objects must be undefined-free per UCP protocol invariant.
|
|
34
|
+
* Optional fields are omitted entirely when absent. Never assigned undefined.
|
|
35
|
+
*
|
|
36
|
+
* See: docs/claude-agent-phase-a-architecture.md
|
|
37
|
+
*/
|
|
38
|
+
import { hashObject } from "../ucp/hashes.js";
|
|
39
|
+
// ─── Public API ───────────────────────────────────────────────────────────────
|
|
40
|
+
/**
|
|
41
|
+
* Build the initial ClaudeAgentHandoffArtifact from an IntakeResult.
|
|
42
|
+
*
|
|
43
|
+
* PRECONDITION: intake.mode === "execute". Caller must verify this.
|
|
44
|
+
*
|
|
45
|
+
* @param intake The completed intake result (mode must be "execute").
|
|
46
|
+
* @param intentId The ucp.intent.v1 envelope id.
|
|
47
|
+
* @param responseId The ucp.response.v1 envelope id.
|
|
48
|
+
* @param policy The OCD policy for scope constraint building.
|
|
49
|
+
* @param toolPolicy The tool policy (allowedTools, networkAccess, filesystemMode).
|
|
50
|
+
* @param parsedChange Optional parsed change from a structured edit command.
|
|
51
|
+
*/
|
|
52
|
+
export function buildClaudeHandoffArtifact(intake, intentId, responseId, policy, toolPolicy, parsedChange) {
|
|
53
|
+
// Derive executionDomain (A1 — mapper only)
|
|
54
|
+
const executionDomain = deriveExecutionDomain(intake, parsedChange);
|
|
55
|
+
// Build taskSpec
|
|
56
|
+
const taskSpec = buildTaskSpec(intake, parsedChange);
|
|
57
|
+
// Initial allowedFiles: [parsedChange.filePath] when available, else []
|
|
58
|
+
const allowedFiles = parsedChange?.filePath ? [parsedChange.filePath] : [];
|
|
59
|
+
// Prohibited patterns: always-prohibited globs from OCD policy
|
|
60
|
+
const prohibitedPatterns = [...policy.alwaysProhibitedGlobs];
|
|
61
|
+
// Artifact content fields for deterministic id
|
|
62
|
+
const content = {
|
|
63
|
+
mode: "execute",
|
|
64
|
+
executionDomain,
|
|
65
|
+
taskSpec,
|
|
66
|
+
allowedFiles,
|
|
67
|
+
prohibitedPatterns,
|
|
68
|
+
allowedTools: [...toolPolicy.allowedTools],
|
|
69
|
+
toolPolicy: { ...toolPolicy },
|
|
70
|
+
ocdClearance: "clear",
|
|
71
|
+
eligibility: "pending_confirmation",
|
|
72
|
+
intentId,
|
|
73
|
+
responseId,
|
|
74
|
+
};
|
|
75
|
+
const artifactId = hashObject(content);
|
|
76
|
+
return {
|
|
77
|
+
artifactId,
|
|
78
|
+
...content,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Approve the artifact — transitions eligibility from "pending_confirmation"
|
|
83
|
+
* to "approved_for_agent". Records the approval timestamp.
|
|
84
|
+
*
|
|
85
|
+
* H is the only actor that may call this. Called by the product session on
|
|
86
|
+
* H's explicit approval action.
|
|
87
|
+
*/
|
|
88
|
+
export function approveClaudeArtifact(artifact, at = Date.now()) {
|
|
89
|
+
const updated = {
|
|
90
|
+
...artifact,
|
|
91
|
+
eligibility: "approved_for_agent",
|
|
92
|
+
approvedAt: at,
|
|
93
|
+
};
|
|
94
|
+
return { ...updated, artifactId: hashObject(omitId(updated)) };
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Narrow the artifact's allowed files to a subset.
|
|
98
|
+
*
|
|
99
|
+
* H may narrow (remove entries) but not widen (add new paths).
|
|
100
|
+
* The gate enforces this at delivery; this function enforces monotonicity
|
|
101
|
+
* structurally by filtering the current allowedFiles.
|
|
102
|
+
*
|
|
103
|
+
* Returns a new artifact with updated allowedFiles and a recomputed id.
|
|
104
|
+
*/
|
|
105
|
+
export function narrowClaudeArtifactScope(artifact, allowedFiles) {
|
|
106
|
+
const updated = {
|
|
107
|
+
...artifact,
|
|
108
|
+
eligibility: "pending_confirmation",
|
|
109
|
+
allowedFiles: [...allowedFiles],
|
|
110
|
+
approvedAt: undefined,
|
|
111
|
+
};
|
|
112
|
+
// Remove approvedAt (undefined-free: omit the field)
|
|
113
|
+
const { approvedAt: _dropped, ...rest } = updated;
|
|
114
|
+
void _dropped;
|
|
115
|
+
return { ...rest, artifactId: hashObject(omitId(rest)) };
|
|
116
|
+
}
|
|
117
|
+
// ─── Internal ─────────────────────────────────────────────────────────────────
|
|
118
|
+
/**
|
|
119
|
+
* Derive executionDomain from the intake result.
|
|
120
|
+
*
|
|
121
|
+
* A1 INVARIANT: this function is the single derivation point.
|
|
122
|
+
* No downstream layer may re-classify the returned value.
|
|
123
|
+
*
|
|
124
|
+
* Mapping from interpretation category:
|
|
125
|
+
* visual_color, text_change → code_edit
|
|
126
|
+
* config_change → code_edit
|
|
127
|
+
* workflow_operation → ops_task
|
|
128
|
+
* unknown (execute mode) → code_edit (safe default for structured edits)
|
|
129
|
+
*
|
|
130
|
+
* When no interpretation category is available (no bridge, no change interp),
|
|
131
|
+
* defaults to "code_edit" as the conservative choice for mode === "execute".
|
|
132
|
+
*/
|
|
133
|
+
function deriveExecutionDomain(intake, parsedChange) {
|
|
134
|
+
// If a structured change was parsed, it's always a code edit
|
|
135
|
+
if (parsedChange)
|
|
136
|
+
return "code_edit";
|
|
137
|
+
// Use change interpretation category when available
|
|
138
|
+
const changeCategory = intake.interpretation?.category;
|
|
139
|
+
if (changeCategory) {
|
|
140
|
+
return mapCategory(changeCategory);
|
|
141
|
+
}
|
|
142
|
+
// Use intent interpretation category when available
|
|
143
|
+
const intentCategory = intake.guidance?.interpretation?.category;
|
|
144
|
+
if (intentCategory) {
|
|
145
|
+
return mapCategory(intentCategory);
|
|
146
|
+
}
|
|
147
|
+
// Default: conservative code_edit for execute mode
|
|
148
|
+
return "code_edit";
|
|
149
|
+
}
|
|
150
|
+
function mapCategory(category) {
|
|
151
|
+
switch (category) {
|
|
152
|
+
case "visual_color":
|
|
153
|
+
case "text_change":
|
|
154
|
+
case "config_change":
|
|
155
|
+
return "code_edit";
|
|
156
|
+
case "workflow_operation":
|
|
157
|
+
return "ops_task";
|
|
158
|
+
default:
|
|
159
|
+
return "code_edit";
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
function buildTaskSpec(intake, parsedChange) {
|
|
163
|
+
const interpretation = intake.interpretation;
|
|
164
|
+
const intentInterp = intake.guidance?.interpretation;
|
|
165
|
+
const category = interpretation?.category
|
|
166
|
+
?? intentInterp?.category
|
|
167
|
+
?? "unknown";
|
|
168
|
+
const summary = interpretation?.summary
|
|
169
|
+
?? intentInterp?.summary
|
|
170
|
+
?? intake.reason;
|
|
171
|
+
if (parsedChange) {
|
|
172
|
+
// Undefined-free: only include parsedChange fields that are present
|
|
173
|
+
const pc = {};
|
|
174
|
+
if (parsedChange.filePath)
|
|
175
|
+
pc.filePath = parsedChange.filePath;
|
|
176
|
+
if (parsedChange.oldValue)
|
|
177
|
+
pc.oldValue = parsedChange.oldValue;
|
|
178
|
+
if (parsedChange.newValue)
|
|
179
|
+
pc.newValue = parsedChange.newValue;
|
|
180
|
+
return { category, summary, parsedChange: pc };
|
|
181
|
+
}
|
|
182
|
+
return { category, summary };
|
|
183
|
+
}
|
|
184
|
+
function omitId(artifact) {
|
|
185
|
+
return artifact;
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=artifact-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-mapper.js","sourceRoot":"","sources":["../../../src/claude/artifact-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Delivery Gate — Phase 8B.
|
|
3
|
+
*
|
|
4
|
+
* ── Role ──────────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* The delivery gate is the ONLY path through which a ClaudeAgentHandoffArtifact
|
|
7
|
+
* reaches Claude Managed Agents. It enforces these invariants before any delivery:
|
|
8
|
+
*
|
|
9
|
+
* 1. Eligibility: artifact.eligibility === "approved_for_agent"
|
|
10
|
+
* 2. Tool policy: toolPolicy.networkAccess === "deny" (V1 lock, A2)
|
|
11
|
+
* 3. Tool policy: toolPolicy.filesystemMode === "scoped_only"
|
|
12
|
+
* 4. Tool policy: allowedTools is non-empty
|
|
13
|
+
* 5. Persistence: ucp.claude_handoff.v1 persisted before Claude is called
|
|
14
|
+
* 6. Immutability: artifact delivered === artifact persisted (same id)
|
|
15
|
+
*
|
|
16
|
+
* After delivery, it persists either ucp.claude_receipt.v1 (accepted) or
|
|
17
|
+
* ucp.claude_refused.v1 (refused) based on Claude's response.
|
|
18
|
+
*
|
|
19
|
+
* ── Three delivery paths ──────────────────────────────────────────────────────
|
|
20
|
+
*
|
|
21
|
+
* Path A (happy): persist handoff → call Claude → accepted → persist receipt
|
|
22
|
+
* Path B (scope): persist handoff → call Claude → refused_due_to_scope
|
|
23
|
+
* → persist refused → surface scope question
|
|
24
|
+
* Path C (error): persist handoff → call Claude → refused_due_to_execution_error
|
|
25
|
+
* → persist refused → rejected
|
|
26
|
+
*
|
|
27
|
+
* Unknown response kinds → treated as refused_due_to_execution_error (fail-closed).
|
|
28
|
+
*
|
|
29
|
+
* ── Plugin contract ───────────────────────────────────────────────────────────
|
|
30
|
+
*
|
|
31
|
+
* ClaudeAgentPlugin.receive() is the only call the gate makes into Claude.
|
|
32
|
+
* The plugin must:
|
|
33
|
+
* - Accept only ClaudeDeliveryRequest
|
|
34
|
+
* - Return only ClaudeDeliveryResponse (one of three kinds)
|
|
35
|
+
* - NOT reach back into the intake pipeline (A4)
|
|
36
|
+
* - NOT call persistEnvelope (the gate owns all persistence)
|
|
37
|
+
*
|
|
38
|
+
* ── Persistence semantics ─────────────────────────────────────────────────────
|
|
39
|
+
*
|
|
40
|
+
* ucp.claude_handoff.v1 — safety-critical (persistStrict): blocks delivery if fails
|
|
41
|
+
* ucp.claude_receipt.v1 — audit-critical (persistBestEffort): logs gap if fails
|
|
42
|
+
* ucp.claude_refused.v1 — audit-critical (persistBestEffort): logs gap if fails
|
|
43
|
+
*
|
|
44
|
+
* ── deliveryId semantics ──────────────────────────────────────────────────────
|
|
45
|
+
*
|
|
46
|
+
* deliveryId is a delivery-attempt identifier, NOT a content identifier.
|
|
47
|
+
* Never use it for provenance chain links — use artifact.artifactId for those.
|
|
48
|
+
*
|
|
49
|
+
* See: docs/claude-agent-phase-a-architecture.md
|
|
50
|
+
*/
|
|
51
|
+
import type { UCPEnvelope } from "../ucp/types.js";
|
|
52
|
+
import type { ClaudeAgentHandoffArtifact, ClaudeDeliveryRequest, ClaudeDeliveryResponse, ClaudeScopeQuestion } from "./types.js";
|
|
53
|
+
/**
|
|
54
|
+
* The interface the delivery gate uses to communicate with Claude Managed Agents.
|
|
55
|
+
*
|
|
56
|
+
* This is the mechanism-agnostic seam. Implementations may use:
|
|
57
|
+
* - Direct Anthropic API calls (real Claude adapter)
|
|
58
|
+
* - Stub responses (test adapter)
|
|
59
|
+
*
|
|
60
|
+
* The plugin must NOT:
|
|
61
|
+
* - Re-derive intent from context (A1)
|
|
62
|
+
* - Reach back to the intake pipeline (A4)
|
|
63
|
+
* - Execute outside allowedFiles (gate-enforced upstream)
|
|
64
|
+
* - Use tools not in allowedTools (gate-enforced upstream)
|
|
65
|
+
* - Call persistEnvelope (the gate owns all persistence)
|
|
66
|
+
*/
|
|
67
|
+
export interface ClaudeAgentPlugin {
|
|
68
|
+
receive(request: ClaudeDeliveryRequest): Promise<ClaudeDeliveryResponse>;
|
|
69
|
+
}
|
|
70
|
+
export type ClaudeDeliveryGateResult = {
|
|
71
|
+
readonly outcome: "accepted";
|
|
72
|
+
readonly deliveryId: string;
|
|
73
|
+
readonly handoffEnvelopeId: string;
|
|
74
|
+
readonly receiptEnvelopeId: string;
|
|
75
|
+
readonly sessionId: string;
|
|
76
|
+
} | {
|
|
77
|
+
readonly outcome: "refused_due_to_scope";
|
|
78
|
+
readonly deliveryId: string;
|
|
79
|
+
readonly handoffEnvelopeId: string;
|
|
80
|
+
readonly refusedEnvelopeId: string;
|
|
81
|
+
readonly scopeQuestion: ClaudeScopeQuestion;
|
|
82
|
+
} | {
|
|
83
|
+
readonly outcome: "refused_due_to_execution_error";
|
|
84
|
+
readonly deliveryId: string;
|
|
85
|
+
readonly handoffEnvelopeId: string;
|
|
86
|
+
readonly refusedEnvelopeId: string;
|
|
87
|
+
readonly errorCode: string;
|
|
88
|
+
readonly message: string;
|
|
89
|
+
} | {
|
|
90
|
+
readonly outcome: "blocked_ineligible";
|
|
91
|
+
readonly reason: string;
|
|
92
|
+
} | {
|
|
93
|
+
readonly outcome: "blocked_tool_policy";
|
|
94
|
+
readonly reason: string;
|
|
95
|
+
} | {
|
|
96
|
+
readonly outcome: "blocked_persistence_failure";
|
|
97
|
+
readonly reason: string;
|
|
98
|
+
};
|
|
99
|
+
export type ClaudeGateDeps = {
|
|
100
|
+
/**
|
|
101
|
+
* Persistence function for the critical handoff envelope.
|
|
102
|
+
* MUST throw on failure — a failure blocks delivery entirely.
|
|
103
|
+
*/
|
|
104
|
+
persistStrict?: (envelope: UCPEnvelope<unknown>) => void;
|
|
105
|
+
/**
|
|
106
|
+
* Persistence function for non-critical envelopes (receipt, refused).
|
|
107
|
+
* Must NOT throw — errors are swallowed.
|
|
108
|
+
*/
|
|
109
|
+
persistBestEffort?: (envelope: UCPEnvelope<unknown>) => void;
|
|
110
|
+
};
|
|
111
|
+
export declare class ClaudeDeliveryGate {
|
|
112
|
+
private readonly plugin;
|
|
113
|
+
private readonly storeDir;
|
|
114
|
+
private readonly persistStrict;
|
|
115
|
+
private readonly persistBestEffort;
|
|
116
|
+
constructor(plugin: ClaudeAgentPlugin, storeDir: string, deps?: ClaudeGateDeps);
|
|
117
|
+
/**
|
|
118
|
+
* Deliver a ClaudeAgentHandoffArtifact to Claude Managed Agents.
|
|
119
|
+
*
|
|
120
|
+
* CONTRACT — callers must ensure:
|
|
121
|
+
* - artifact.eligibility === "approved_for_agent" (gate re-checks and blocks if not)
|
|
122
|
+
* - artifact.toolPolicy.networkAccess === "deny" (gate re-checks, A2)
|
|
123
|
+
* - artifact.approvedAt is set (H has confirmed)
|
|
124
|
+
*
|
|
125
|
+
* CONTRACT — this function guarantees:
|
|
126
|
+
* - ucp.claude_handoff.v1 persisted BEFORE Claude is called
|
|
127
|
+
* - If persistence fails, Claude is NOT called (blocked_persistence_failure)
|
|
128
|
+
* - ucp.claude_receipt.v1 persisted when Claude returns "accepted"
|
|
129
|
+
* - ucp.claude_refused.v1 persisted when Claude returns any refusal
|
|
130
|
+
* - Receipt/refusal persistence failures do not block the state transition
|
|
131
|
+
* - Unknown response kinds map to refused_due_to_execution_error (fail-closed)
|
|
132
|
+
*/
|
|
133
|
+
deliver(artifact: ClaudeAgentHandoffArtifact): Promise<ClaudeDeliveryGateResult>;
|
|
134
|
+
private tryPersistBestEffort;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=delivery-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delivery-gate.d.ts","sourceRoot":"","sources":["../../../src/claude/delivery-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAA8B,iBAAiB,CAAC;AAQ3E,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EAGtB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC1E;AAID,MAAM,MAAM,wBAAwB,GAChC;IACE,QAAQ,CAAC,OAAO,EAAa,UAAU,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAU,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAW,MAAM,CAAC;CACrC,GACD;IACE,QAAQ,CAAC,OAAO,EAAa,sBAAsB,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAU,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAO,mBAAmB,CAAC;CAClD,GACD;IACE,QAAQ,CAAC,OAAO,EAAa,gCAAgC,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAU,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAW,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAa,MAAM,CAAC;CACrC,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,6BAA6B,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;CAC1B,CAAC;AAIN,MAAM,MAAM,cAAc,GAAG;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9D,CAAC;AAIF,qBAAa,kBAAkB;IAK3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+C;IAC7E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2C;gBAG1D,MAAM,EAAI,iBAAiB,EAC3B,QAAQ,EAAE,MAAM,EACjC,IAAI,GAAE,cAAmB;IAQ3B;;;;;;;;;;;;;;;OAeG;IACG,OAAO,CAAC,QAAQ,EAAE,0BAA0B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAgKtF,OAAO,CAAC,oBAAoB;CAO7B"}
|