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,233 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Execution Coordinator — product seam wiring.
|
|
3
|
+
*
|
|
4
|
+
* ── Purpose ───────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* The execution entry point for code-change requests.
|
|
7
|
+
*
|
|
8
|
+
* Mirrors the reminder execution coordinator in structure:
|
|
9
|
+
*
|
|
10
|
+
* presentFromInput() — intake result → display-ready presentation
|
|
11
|
+
* executeFromPresent() — present result → display-ready execution outcome
|
|
12
|
+
*
|
|
13
|
+
* prepareCursorExecution() — intake result → artifact ready for H confirmation
|
|
14
|
+
* deliverCursorExecution() — approved artifact + gate → display-ready outcome
|
|
15
|
+
*
|
|
16
|
+
* Two phases are intentional. The split preserves the authority model:
|
|
17
|
+
* Phase 1 (prepare): deterministic, synchronous, no side effects.
|
|
18
|
+
* Builds the artifact, runs OCD, returns confirmation state.
|
|
19
|
+
* Phase 2 (deliver): async, requires H approval, produces real file changes.
|
|
20
|
+
* Calls the delivery gate with an already-approved artifact.
|
|
21
|
+
*
|
|
22
|
+
* ── What this is NOT ──────────────────────────────────────────────────────────
|
|
23
|
+
*
|
|
24
|
+
* NOT a scheduler — does not queue or retry
|
|
25
|
+
* NOT an OCD authority — OCD fires conflicts; this surfaces them
|
|
26
|
+
* NOT a decision maker — all decisions flow from intake + OCD + H approval
|
|
27
|
+
* NOT autonomous — deliverCursorExecution() requires an approved artifact
|
|
28
|
+
*
|
|
29
|
+
* ── Consumer contract ─────────────────────────────────────────────────────────
|
|
30
|
+
*
|
|
31
|
+
* Step 1 — Prepare:
|
|
32
|
+
* const prep = prepareCursorExecution(intakeResult, intentId, responseId, policy);
|
|
33
|
+
* if (prep.kind !== "ready_for_confirmation" && prep.kind !== "conflict_detected") return;
|
|
34
|
+
* // show prep.artifact to H; H may narrow scope or accept conflicts
|
|
35
|
+
*
|
|
36
|
+
* Step 2 — H approves:
|
|
37
|
+
* const approved = approveArtifact(prep.artifact, Date.now());
|
|
38
|
+
*
|
|
39
|
+
* Step 3 — Deliver:
|
|
40
|
+
* const result = await deliverCursorExecution(approved, gate);
|
|
41
|
+
* // route on result.kind: "accepted" | "refused_due_to_scope" | ...
|
|
42
|
+
*
|
|
43
|
+
* ── Dependency direction ───────────────────────────────────────────────────────
|
|
44
|
+
*
|
|
45
|
+
* Coordinator imports: intake types, cursor module (all phases).
|
|
46
|
+
* Cursor module NEVER imports this coordinator.
|
|
47
|
+
* Present layer NEVER imports this coordinator.
|
|
48
|
+
* One-way dependencies only.
|
|
49
|
+
*
|
|
50
|
+
* ── Authority invariants preserved ────────────────────────────────────────────
|
|
51
|
+
*
|
|
52
|
+
* - mode === "execute" is the only intake mode that opens Phase 1.
|
|
53
|
+
* - eligibility === "approved_for_cursor" is the only state that opens Phase 2.
|
|
54
|
+
* - Raw input never crosses to the delivery gate (enforced by CursorHandoffArtifact shape).
|
|
55
|
+
* - OCD fires conflicts; this surfaces them — never overrides them.
|
|
56
|
+
* - H approval is explicit (approveArtifact before deliverCursorExecution).
|
|
57
|
+
*
|
|
58
|
+
* See: docs/cursor-integration-architecture.md — authority model
|
|
59
|
+
* docs/cursor-delivery-contract.md — delivery paths
|
|
60
|
+
* src/execution/reminders/reminder-execution-coordinator.ts — pattern reference
|
|
61
|
+
*/
|
|
62
|
+
import { buildCursorHandoffArtifact, evaluateOCDForHandoff, applyOCDClearance, } from "../../cursor/index.js";
|
|
63
|
+
import { CursorDeliveryGate } from "../../cursor/delivery-gate.js";
|
|
64
|
+
// ─── Phase 1: prepareCursorExecution ─────────────────────────────────────────
|
|
65
|
+
/**
|
|
66
|
+
* Build and OCD-evaluate a CursorHandoffArtifact from an IntakeResult.
|
|
67
|
+
*
|
|
68
|
+
* Call this when intakeResult.mode === "execute" and the consumer wants to
|
|
69
|
+
* present a confirmation to H before delivery. Returns a preparation result
|
|
70
|
+
* that describes what will happen and whether OCD has any conflicts.
|
|
71
|
+
*
|
|
72
|
+
* This is synchronous and side-effect-free. No files are read or written.
|
|
73
|
+
*
|
|
74
|
+
* @param intakeResult Output of runIntake(). Must have mode === "execute".
|
|
75
|
+
* @param intentId UCP envelope id of the intent (from runIntakeWithUCP).
|
|
76
|
+
* @param responseId UCP envelope id of the response (from runIntakeWithUCP).
|
|
77
|
+
* @param policy OCD policy — write_safe_globs, prohibited patterns, etc.
|
|
78
|
+
*/
|
|
79
|
+
export function prepareCursorExecution(intakeResult, intentId, responseId, policy, parsedChange) {
|
|
80
|
+
if (intakeResult.mode !== "execute") {
|
|
81
|
+
return {
|
|
82
|
+
kind: "not_execute",
|
|
83
|
+
reason: `Cannot prepare cursor execution for mode "${intakeResult.mode}". Only "execute" mode is valid.`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
const artifact = buildCursorHandoffArtifact(intakeResult, intentId, responseId, policy, parsedChange);
|
|
87
|
+
const ocdClearance = evaluateOCDForHandoff(artifact, policy);
|
|
88
|
+
const withClearance = applyOCDClearance(artifact, ocdClearance);
|
|
89
|
+
const display = formatPreparationDisplay(withClearance);
|
|
90
|
+
const presentHints = {
|
|
91
|
+
prohibitedGlobs: policy.alwaysProhibitedGlobs,
|
|
92
|
+
...(parsedChange?.filePath !== undefined
|
|
93
|
+
? { parsedChangeFilePath: parsedChange.filePath }
|
|
94
|
+
: {}),
|
|
95
|
+
};
|
|
96
|
+
if (ocdClearance.status === "cleared" || ocdClearance.status === "conflict_accepted") {
|
|
97
|
+
return { kind: "ready_for_confirmation", artifact: withClearance, display, presentHints };
|
|
98
|
+
}
|
|
99
|
+
return { kind: "conflict_detected", artifact: withClearance, display, presentHints };
|
|
100
|
+
}
|
|
101
|
+
// ─── Phase 2: deliverCursorExecution ─────────────────────────────────────────
|
|
102
|
+
/**
|
|
103
|
+
* Deliver an already-approved CursorHandoffArtifact through the delivery gate.
|
|
104
|
+
*
|
|
105
|
+
* Call this after H has called approveArtifact() on the prepared artifact.
|
|
106
|
+
* The gate enforces that eligibility === "approved_for_cursor" before proceeding.
|
|
107
|
+
*
|
|
108
|
+
* @param approvedArtifact A CursorHandoffArtifact with eligibility: "approved_for_cursor".
|
|
109
|
+
* @param plugin The transport adapter (in-process, IPC, etc.).
|
|
110
|
+
* @param storeDir Absolute path to the UCP store directory.
|
|
111
|
+
* @param deps Optional: injectable persistence fns for testing.
|
|
112
|
+
*/
|
|
113
|
+
export async function deliverCursorExecution(approvedArtifact, plugin, storeDir, deps) {
|
|
114
|
+
const gate = new CursorDeliveryGate(plugin, storeDir, deps);
|
|
115
|
+
const result = await gate.deliver(approvedArtifact);
|
|
116
|
+
switch (result.outcome) {
|
|
117
|
+
case "accepted":
|
|
118
|
+
return {
|
|
119
|
+
kind: "accepted",
|
|
120
|
+
deliveryId: result.deliveryId,
|
|
121
|
+
artifactId: approvedArtifact.id,
|
|
122
|
+
handoffEnvelopeId: result.handoffEnvelopeId,
|
|
123
|
+
receiptEnvelopeId: result.receiptEnvelopeId,
|
|
124
|
+
display: { verdict: "accepted", headline: "Edit applied.", note: null },
|
|
125
|
+
};
|
|
126
|
+
case "refused_due_to_scope":
|
|
127
|
+
return {
|
|
128
|
+
kind: "refused_due_to_scope",
|
|
129
|
+
deliveryId: result.deliveryId,
|
|
130
|
+
scopeQuestion: result.scopeQuestion,
|
|
131
|
+
display: {
|
|
132
|
+
verdict: "refused",
|
|
133
|
+
headline: "Scope clarification needed.",
|
|
134
|
+
note: result.scopeQuestion.explanation,
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
case "refused_due_to_execution_error":
|
|
138
|
+
return {
|
|
139
|
+
kind: "refused_due_to_execution_error",
|
|
140
|
+
deliveryId: result.deliveryId,
|
|
141
|
+
errorCode: result.errorCode,
|
|
142
|
+
detail: result.detail,
|
|
143
|
+
display: {
|
|
144
|
+
verdict: "refused",
|
|
145
|
+
headline: formatErrorHeadline(result.errorCode),
|
|
146
|
+
note: result.detail,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
case "blocked_ineligible":
|
|
150
|
+
return {
|
|
151
|
+
kind: "blocked_ineligible",
|
|
152
|
+
display: {
|
|
153
|
+
verdict: "blocked",
|
|
154
|
+
headline: "Delivery blocked: artifact not approved.",
|
|
155
|
+
note: result.reason,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
case "blocked_persistence_failure":
|
|
159
|
+
return {
|
|
160
|
+
kind: "blocked_persistence_failure",
|
|
161
|
+
reason: result.reason,
|
|
162
|
+
display: {
|
|
163
|
+
verdict: "blocked",
|
|
164
|
+
headline: "Delivery blocked: provenance record could not be written.",
|
|
165
|
+
note: result.reason,
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// ─── Consumer helpers ─────────────────────────────────────────────────────────
|
|
171
|
+
/**
|
|
172
|
+
* Returns true if the preparation result needs H to review OCD conflicts
|
|
173
|
+
* before the artifact can be approved.
|
|
174
|
+
*/
|
|
175
|
+
export function hasConflicts(result) {
|
|
176
|
+
return result.kind === "conflict_detected";
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Returns true if the execution result is "accepted" (edit applied on disk).
|
|
180
|
+
*/
|
|
181
|
+
export function isCursorExecutionAccepted(result) {
|
|
182
|
+
return result.kind === "accepted";
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Returns a plain-English note for the consumer to display.
|
|
186
|
+
*
|
|
187
|
+
* "accepted" → null (headline is sufficient)
|
|
188
|
+
* "refused_due_to_scope" → scope question explanation
|
|
189
|
+
* "refused_due_to_execution_error" → detail text
|
|
190
|
+
* "blocked_*" → block reason
|
|
191
|
+
*/
|
|
192
|
+
export function getCursorExecutionNote(result) {
|
|
193
|
+
switch (result.kind) {
|
|
194
|
+
case "accepted":
|
|
195
|
+
return null;
|
|
196
|
+
case "refused_due_to_scope":
|
|
197
|
+
return result.scopeQuestion.explanation;
|
|
198
|
+
case "refused_due_to_execution_error":
|
|
199
|
+
return result.detail;
|
|
200
|
+
case "blocked_ineligible":
|
|
201
|
+
return "Artifact must be approved by H before delivery.";
|
|
202
|
+
case "blocked_persistence_failure":
|
|
203
|
+
return result.reason;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
// ─── Internal formatters ──────────────────────────────────────────────────────
|
|
207
|
+
function formatPreparationDisplay(artifact) {
|
|
208
|
+
const { ocdClearance, changeSpec, scopeConstraint } = artifact;
|
|
209
|
+
const cleared = ocdClearance.status === "cleared" || ocdClearance.status === "conflict_accepted";
|
|
210
|
+
const headline = cleared ? "Ready to apply." : "Conflict detected — review before confirming.";
|
|
211
|
+
const targetFile = scopeConstraint.allowedFiles.length === 1
|
|
212
|
+
? (scopeConstraint.allowedFiles[0] ?? null)
|
|
213
|
+
: null;
|
|
214
|
+
return {
|
|
215
|
+
headline,
|
|
216
|
+
summary: changeSpec.summary,
|
|
217
|
+
targetFile,
|
|
218
|
+
conflicts: ocdClearance.conflictsDetected,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
function formatErrorHeadline(errorCode) {
|
|
222
|
+
switch (errorCode) {
|
|
223
|
+
case "old_value_not_found": return "Edit target not found in file.";
|
|
224
|
+
case "ambiguous_match": return "Edit target is ambiguous — found more than once.";
|
|
225
|
+
case "file_not_found": return "Target file not found.";
|
|
226
|
+
case "scope_outside_allowed": return "Target file is outside the approved scope.";
|
|
227
|
+
case "prohibited_pattern_match": return "Target file matches a prohibited pattern.";
|
|
228
|
+
case "parse_error": return "No edit directive available.";
|
|
229
|
+
case "merge_conflict": return "File could not be written — possible merge conflict.";
|
|
230
|
+
case "delivery_timeout": return "Delivery timed out.";
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=cursor-execution-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-execution-coordinator.js","sourceRoot":"","sources":["../../../../src/execution/cursor/cursor-execution-coordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor execution layer — public API.
|
|
3
|
+
*
|
|
4
|
+
* Exports the two-phase product seam coordinator and its display types.
|
|
5
|
+
* Internal cursor module (src/cursor/) is re-exported separately via src/cursor/index.ts.
|
|
6
|
+
*
|
|
7
|
+
* Consumer entry points:
|
|
8
|
+
* prepareCursorExecution() — Phase 1: build + OCD → artifact for H confirmation
|
|
9
|
+
* deliverCursorExecution() — Phase 2: approved artifact + gate → file mutation
|
|
10
|
+
*
|
|
11
|
+
* Consumer helpers:
|
|
12
|
+
* hasConflicts() — check if OCD fired (H must review before approving)
|
|
13
|
+
* isCursorExecutionAccepted() — check if edit was applied
|
|
14
|
+
* getCursorExecutionNote() — plain-English note for display
|
|
15
|
+
*/
|
|
16
|
+
export type { CursorPreparationResult, CursorPreparationDisplay, CursorExecutionResult, CursorExecutionDisplay, } from "./cursor-execution-coordinator.js";
|
|
17
|
+
export { prepareCursorExecution, deliverCursorExecution, hasConflicts, isCursorExecutionAccepted, getCursorExecutionNote, } from "./cursor-execution-coordinator.js";
|
|
18
|
+
export type { ParsedChange } from "../../understand/interpretation/types.js";
|
|
19
|
+
export { parseChange } from "../../understand/interpretation/parser.js";
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/execution/cursor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,YAAY,EACV,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,YAAY,EACZ,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAI3C,YAAY,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAY,2CAA2C,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor execution layer — public API.
|
|
3
|
+
*
|
|
4
|
+
* Exports the two-phase product seam coordinator and its display types.
|
|
5
|
+
* Internal cursor module (src/cursor/) is re-exported separately via src/cursor/index.ts.
|
|
6
|
+
*
|
|
7
|
+
* Consumer entry points:
|
|
8
|
+
* prepareCursorExecution() — Phase 1: build + OCD → artifact for H confirmation
|
|
9
|
+
* deliverCursorExecution() — Phase 2: approved artifact + gate → file mutation
|
|
10
|
+
*
|
|
11
|
+
* Consumer helpers:
|
|
12
|
+
* hasConflicts() — check if OCD fired (H must review before approving)
|
|
13
|
+
* isCursorExecutionAccepted() — check if edit was applied
|
|
14
|
+
* getCursorExecutionNote() — plain-English note for display
|
|
15
|
+
*/
|
|
16
|
+
export { prepareCursorExecution, deliverCursorExecution, hasConflicts, isCursorExecutionAccepted, getCursorExecutionNote, } from "./cursor-execution-coordinator.js";
|
|
17
|
+
export { parseChange } from "../../understand/interpretation/parser.js";
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/execution/cursor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,YAAY,EACZ,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAK3C,OAAO,EAAE,WAAW,EAAE,MAAY,2CAA2C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reminder Execution — Phase 6, Execution Layer.
|
|
3
|
+
* Barrel export.
|
|
4
|
+
*/
|
|
5
|
+
export type { ReminderExecutionRequest, ParsedTime, ExecutionRejectionCode, ExecutionValidation, ReminderExecutionArtifact, ReminderExecutionResult, } from "./reminder-execution-types.js";
|
|
6
|
+
export { parseTimeText } from "./reminder-time-parser.js";
|
|
7
|
+
export { validateExecutionRequest } from "./reminder-execution-validator.js";
|
|
8
|
+
export { buildExecutionRequest, executeReminder } from "./reminder-executor.js";
|
|
9
|
+
export type { ReminderExecutionDisplay, ReminderExecuteResult, } from "./reminder-execution-coordinator.js";
|
|
10
|
+
export { executeFromPresent, isExecutionAccepted, getExecutionNote, } from "./reminder-execution-coordinator.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/execution/reminders/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EACV,wBAAwB,EACxB,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAiB,2BAA2B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGhF,YAAY,EACV,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reminder Execution — Phase 6, Execution Layer.
|
|
3
|
+
* Barrel export.
|
|
4
|
+
*/
|
|
5
|
+
export { parseTimeText } from "./reminder-time-parser.js";
|
|
6
|
+
export { validateExecutionRequest } from "./reminder-execution-validator.js";
|
|
7
|
+
export { buildExecutionRequest, executeReminder } from "./reminder-executor.js";
|
|
8
|
+
export { executeFromPresent, isExecutionAccepted, getExecutionNote, } from "./reminder-execution-coordinator.js";
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/execution/reminders/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAAE,aAAa,EAAE,MAAiB,2BAA2B,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAOhF,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reminder Execution Coordinator — Phase 6, integration path.
|
|
3
|
+
*
|
|
4
|
+
* ── Purpose ───────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* A single consumer entry point that bridges the Present Layer (Phase 5) and
|
|
7
|
+
* the Execution Layer (Phase 6). It takes a PresentResult and, if the reminder
|
|
8
|
+
* is ready to confirm, runs the execution pipeline and returns a display-ready
|
|
9
|
+
* outcome.
|
|
10
|
+
*
|
|
11
|
+
* This is the exact equivalent of Phase 5's presentFromInput() for execution:
|
|
12
|
+
* presentFromInput() — intake result → display-ready presentation
|
|
13
|
+
* executeFromPresent() — present result → display-ready execution outcome
|
|
14
|
+
*
|
|
15
|
+
* ── What this is NOT ─────────────────────────────────────────────────────────
|
|
16
|
+
*
|
|
17
|
+
* NOT a scheduler — does not schedule or persist reminders
|
|
18
|
+
* NOT an OS integration — does not call any calendar/notification APIs
|
|
19
|
+
* NOT a decision maker — all decisions flow from intake + execution pipeline
|
|
20
|
+
* NOT creepy — does not act without consumer triggering it
|
|
21
|
+
*
|
|
22
|
+
* ── Consumer contract ─────────────────────────────────────────────────────────
|
|
23
|
+
*
|
|
24
|
+
* Consumer calls executeFromPresent(presentResult) when the user confirms.
|
|
25
|
+
* Consumer receives ReminderExecuteResult.
|
|
26
|
+
* Consumer checks result.kind to route:
|
|
27
|
+
*
|
|
28
|
+
* "accepted" → show accepted display; ready for downstream scheduling
|
|
29
|
+
* "rejected" → show rejection display; prompt user to correct
|
|
30
|
+
* "not_ready" → reminder present but incomplete; do not execute
|
|
31
|
+
* "not_reminder" → was not a reminder at all; ignore or reroute
|
|
32
|
+
*
|
|
33
|
+
* ── "accepted" semantics ──────────────────────────────────────────────────────
|
|
34
|
+
*
|
|
35
|
+
* "accepted" means: structurally valid for downstream scheduling.
|
|
36
|
+
* It does NOT mean: scheduled, delivered, or resolved to a concrete date.
|
|
37
|
+
* The artifact is the handoff record. A real scheduler would consume it.
|
|
38
|
+
*
|
|
39
|
+
* ── Dependency direction ──────────────────────────────────────────────────────
|
|
40
|
+
*
|
|
41
|
+
* Coordinator imports Present (PresentResult) and Execution.
|
|
42
|
+
* Present NEVER imports Execution.
|
|
43
|
+
* Execution NEVER imports Coordinator.
|
|
44
|
+
* One-way dependencies only.
|
|
45
|
+
*/
|
|
46
|
+
import type { PresentResult } from "../../present/present-coordinator.js";
|
|
47
|
+
import type { ReminderPresentationState } from "../../present/reminders/reminder-types.js";
|
|
48
|
+
import type { ReminderExecutionArtifact, ExecutionRejectionCode } from "./reminder-execution-types.js";
|
|
49
|
+
/**
|
|
50
|
+
* ReminderExecutionDisplay — consumer-ready formatted strings for the result.
|
|
51
|
+
*
|
|
52
|
+
* Keeps the coordinator honest: it formats, it does not execute.
|
|
53
|
+
*
|
|
54
|
+
* verdict — "accepted" or "rejected"
|
|
55
|
+
* headline — single-line summary ("Reminder accepted" / "Reminder rejected")
|
|
56
|
+
* subject — the reminder task, for display
|
|
57
|
+
* time_text — the original time phrase, for display (not normalised)
|
|
58
|
+
* rejection_note — why it was rejected; present only when verdict === "rejected"
|
|
59
|
+
*/
|
|
60
|
+
export type ReminderExecutionDisplay = {
|
|
61
|
+
readonly verdict: "accepted" | "rejected";
|
|
62
|
+
readonly headline: string;
|
|
63
|
+
readonly subject: string;
|
|
64
|
+
readonly time_text: string;
|
|
65
|
+
readonly rejection_note?: string;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* ReminderExecuteResult — discriminated union returned by executeFromPresent().
|
|
69
|
+
*
|
|
70
|
+
* "accepted" — execution artifact produced with verdict === "accepted"
|
|
71
|
+
* "rejected" — execution artifact produced with verdict === "rejected"
|
|
72
|
+
* "not_ready" — input was a reminder but not yet complete (missing fields)
|
|
73
|
+
* "not_reminder" — input was not a reminder at all
|
|
74
|
+
*
|
|
75
|
+
* Both "accepted" and "rejected" arms carry:
|
|
76
|
+
* - artifact: the full ReminderExecutionArtifact (for UCP mapping, audit)
|
|
77
|
+
* - display: formatted strings ready for rendering
|
|
78
|
+
*/
|
|
79
|
+
export type ReminderExecuteResult = {
|
|
80
|
+
readonly kind: "accepted";
|
|
81
|
+
readonly artifact: ReminderExecutionArtifact;
|
|
82
|
+
readonly display: ReminderExecutionDisplay;
|
|
83
|
+
} | {
|
|
84
|
+
readonly kind: "rejected";
|
|
85
|
+
readonly artifact: ReminderExecutionArtifact;
|
|
86
|
+
readonly display: ReminderExecutionDisplay;
|
|
87
|
+
readonly code: ExecutionRejectionCode;
|
|
88
|
+
} | {
|
|
89
|
+
readonly kind: "not_ready";
|
|
90
|
+
/** The presentation state explains why it was not ready. */
|
|
91
|
+
readonly presentation_state: ReminderPresentationState;
|
|
92
|
+
/** The fields the user still needs to provide. */
|
|
93
|
+
readonly missing: readonly string[];
|
|
94
|
+
} | {
|
|
95
|
+
readonly kind: "not_reminder";
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Execute a reminder from an already-produced PresentResult.
|
|
99
|
+
*
|
|
100
|
+
* Call this when the user clicks "Confirm" on a reminder presentation.
|
|
101
|
+
* Returns a ReminderExecuteResult the consumer can render directly.
|
|
102
|
+
*
|
|
103
|
+
* @param presentResult The output of presentFromInput().
|
|
104
|
+
* @param _now Epoch ms; defaults to Date.now(). Injectable for tests.
|
|
105
|
+
*/
|
|
106
|
+
export declare function executeFromPresent(presentResult: PresentResult, _now?: number): ReminderExecuteResult;
|
|
107
|
+
/**
|
|
108
|
+
* Returns true if the execution result is "accepted".
|
|
109
|
+
*
|
|
110
|
+
* Convenience predicate — consumers use this to enable downstream actions
|
|
111
|
+
* (e.g. passing the artifact to a real scheduler in Phase 7+).
|
|
112
|
+
*
|
|
113
|
+
* Zero authority: this only reads the result, never changes it.
|
|
114
|
+
*/
|
|
115
|
+
export declare function isExecutionAccepted(result: ReminderExecuteResult): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Returns a plain-English note for the consumer to display alongside the result.
|
|
118
|
+
*
|
|
119
|
+
* "accepted" → null (no extra note needed; display.headline is sufficient)
|
|
120
|
+
* "rejected" → the rejection note from the display
|
|
121
|
+
* "not_ready" → a prompt describing which fields are still missing
|
|
122
|
+
* "not_reminder" → null
|
|
123
|
+
*/
|
|
124
|
+
export declare function getExecutionNote(result: ReminderExecuteResult): string | null;
|
|
125
|
+
//# sourceMappingURL=reminder-execution-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminder-execution-coordinator.d.ts","sourceRoot":"","sources":["../../../../src/execution/reminders/reminder-execution-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAoB,sCAAsC,CAAC;AACxF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAQ,2CAA2C,CAAC;AAC7F,OAAO,KAAK,EACV,yBAAyB,EACzB,sBAAsB,EACvB,MAAM,+BAA+B,CAAC;AAKvC;;;;;;;;;;GAUG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,OAAO,EAAU,UAAU,GAAG,UAAU,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAS,MAAM,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAU,MAAM,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAQ,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC,CAAC;AAIF;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,qBAAqB,GAC7B;IACE,QAAQ,CAAC,IAAI,EAAM,UAAU,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAG,wBAAwB,CAAC;CAC7C,GACD;IACE,QAAQ,CAAC,IAAI,EAAM,UAAU,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAG,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAM,sBAAsB,CAAC;CAC3C,GACD;IACE,QAAQ,CAAC,IAAI,EAAgB,WAAW,CAAC;IACzC,4DAA4D;IAC5D,QAAQ,CAAC,kBAAkB,EAAE,yBAAyB,CAAC;IACvD,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAa,SAAS,MAAM,EAAE,CAAC;CAChD,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;CAC/B,CAAC;AAIN;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,aAAa,EAC5B,IAAI,GAAW,MAAmB,GACjC,qBAAqB,CA0BvB;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAE1E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAiB7E"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reminder Execution Coordinator — Phase 6, integration path.
|
|
3
|
+
*
|
|
4
|
+
* ── Purpose ───────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* A single consumer entry point that bridges the Present Layer (Phase 5) and
|
|
7
|
+
* the Execution Layer (Phase 6). It takes a PresentResult and, if the reminder
|
|
8
|
+
* is ready to confirm, runs the execution pipeline and returns a display-ready
|
|
9
|
+
* outcome.
|
|
10
|
+
*
|
|
11
|
+
* This is the exact equivalent of Phase 5's presentFromInput() for execution:
|
|
12
|
+
* presentFromInput() — intake result → display-ready presentation
|
|
13
|
+
* executeFromPresent() — present result → display-ready execution outcome
|
|
14
|
+
*
|
|
15
|
+
* ── What this is NOT ─────────────────────────────────────────────────────────
|
|
16
|
+
*
|
|
17
|
+
* NOT a scheduler — does not schedule or persist reminders
|
|
18
|
+
* NOT an OS integration — does not call any calendar/notification APIs
|
|
19
|
+
* NOT a decision maker — all decisions flow from intake + execution pipeline
|
|
20
|
+
* NOT creepy — does not act without consumer triggering it
|
|
21
|
+
*
|
|
22
|
+
* ── Consumer contract ─────────────────────────────────────────────────────────
|
|
23
|
+
*
|
|
24
|
+
* Consumer calls executeFromPresent(presentResult) when the user confirms.
|
|
25
|
+
* Consumer receives ReminderExecuteResult.
|
|
26
|
+
* Consumer checks result.kind to route:
|
|
27
|
+
*
|
|
28
|
+
* "accepted" → show accepted display; ready for downstream scheduling
|
|
29
|
+
* "rejected" → show rejection display; prompt user to correct
|
|
30
|
+
* "not_ready" → reminder present but incomplete; do not execute
|
|
31
|
+
* "not_reminder" → was not a reminder at all; ignore or reroute
|
|
32
|
+
*
|
|
33
|
+
* ── "accepted" semantics ──────────────────────────────────────────────────────
|
|
34
|
+
*
|
|
35
|
+
* "accepted" means: structurally valid for downstream scheduling.
|
|
36
|
+
* It does NOT mean: scheduled, delivered, or resolved to a concrete date.
|
|
37
|
+
* The artifact is the handoff record. A real scheduler would consume it.
|
|
38
|
+
*
|
|
39
|
+
* ── Dependency direction ──────────────────────────────────────────────────────
|
|
40
|
+
*
|
|
41
|
+
* Coordinator imports Present (PresentResult) and Execution.
|
|
42
|
+
* Present NEVER imports Execution.
|
|
43
|
+
* Execution NEVER imports Coordinator.
|
|
44
|
+
* One-way dependencies only.
|
|
45
|
+
*/
|
|
46
|
+
import { buildExecutionRequest, executeReminder } from "./reminder-executor.js";
|
|
47
|
+
// ─── executeFromPresent ───────────────────────────────────────────────────────
|
|
48
|
+
/**
|
|
49
|
+
* Execute a reminder from an already-produced PresentResult.
|
|
50
|
+
*
|
|
51
|
+
* Call this when the user clicks "Confirm" on a reminder presentation.
|
|
52
|
+
* Returns a ReminderExecuteResult the consumer can render directly.
|
|
53
|
+
*
|
|
54
|
+
* @param presentResult The output of presentFromInput().
|
|
55
|
+
* @param _now Epoch ms; defaults to Date.now(). Injectable for tests.
|
|
56
|
+
*/
|
|
57
|
+
export function executeFromPresent(presentResult, _now = Date.now()) {
|
|
58
|
+
// ── Not a reminder ────────────────────────────────────────────────────────
|
|
59
|
+
if (presentResult.kind !== "reminder") {
|
|
60
|
+
return { kind: "not_reminder" };
|
|
61
|
+
}
|
|
62
|
+
const presentation = presentResult.presentation;
|
|
63
|
+
// ── Reminder present but not ready ────────────────────────────────────────
|
|
64
|
+
const req = buildExecutionRequest(presentation);
|
|
65
|
+
if (req === null) {
|
|
66
|
+
return {
|
|
67
|
+
kind: "not_ready",
|
|
68
|
+
presentation_state: presentation.state,
|
|
69
|
+
missing: presentation.missing_fields,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
// ── Execute ───────────────────────────────────────────────────────────────
|
|
73
|
+
const result = executeReminder(req, _now);
|
|
74
|
+
const display = formatExecutionDisplay(result.artifact);
|
|
75
|
+
if (result.ok) {
|
|
76
|
+
return { kind: "accepted", artifact: result.artifact, display };
|
|
77
|
+
}
|
|
78
|
+
return { kind: "rejected", artifact: result.artifact, display, code: result.code };
|
|
79
|
+
}
|
|
80
|
+
// ─── Consumer helpers ─────────────────────────────────────────────────────────
|
|
81
|
+
/**
|
|
82
|
+
* Returns true if the execution result is "accepted".
|
|
83
|
+
*
|
|
84
|
+
* Convenience predicate — consumers use this to enable downstream actions
|
|
85
|
+
* (e.g. passing the artifact to a real scheduler in Phase 7+).
|
|
86
|
+
*
|
|
87
|
+
* Zero authority: this only reads the result, never changes it.
|
|
88
|
+
*/
|
|
89
|
+
export function isExecutionAccepted(result) {
|
|
90
|
+
return result.kind === "accepted";
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Returns a plain-English note for the consumer to display alongside the result.
|
|
94
|
+
*
|
|
95
|
+
* "accepted" → null (no extra note needed; display.headline is sufficient)
|
|
96
|
+
* "rejected" → the rejection note from the display
|
|
97
|
+
* "not_ready" → a prompt describing which fields are still missing
|
|
98
|
+
* "not_reminder" → null
|
|
99
|
+
*/
|
|
100
|
+
export function getExecutionNote(result) {
|
|
101
|
+
switch (result.kind) {
|
|
102
|
+
case "accepted":
|
|
103
|
+
return null;
|
|
104
|
+
case "rejected":
|
|
105
|
+
return result.display.rejection_note ?? null;
|
|
106
|
+
case "not_ready": {
|
|
107
|
+
const missing = result.missing;
|
|
108
|
+
if (missing.length === 0)
|
|
109
|
+
return "This reminder is not yet ready to confirm.";
|
|
110
|
+
return `Still needed: ${missing.join(", ")}.`;
|
|
111
|
+
}
|
|
112
|
+
case "not_reminder":
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
// ─── Internal formatter ───────────────────────────────────────────────────────
|
|
117
|
+
function formatExecutionDisplay(artifact) {
|
|
118
|
+
const accepted = artifact.verdict === "accepted";
|
|
119
|
+
return {
|
|
120
|
+
verdict: artifact.verdict,
|
|
121
|
+
headline: accepted ? "Reminder accepted" : "Reminder rejected",
|
|
122
|
+
subject: artifact.subject,
|
|
123
|
+
time_text: artifact.time_text,
|
|
124
|
+
...(accepted
|
|
125
|
+
? {}
|
|
126
|
+
: { rejection_note: artifact.rejection_reason ?? "Could not process this reminder." }),
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=reminder-execution-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reminder-execution-coordinator.js","sourceRoot":"","sources":["../../../../src/execution/reminders/reminder-execution-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AAQH,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AA4DhF,iFAAiF;AAEjF;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,aAA4B,EAC5B,OAAwB,IAAI,CAAC,GAAG,EAAE;IAElC,6EAA6E;IAC7E,IAAI,aAAa,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,CAAC;IAEhD,6EAA6E;IAC7E,MAAM,GAAG,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAChD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO;YACL,IAAI,EAAgB,WAAW;YAC/B,kBAAkB,EAAE,YAAY,CAAC,KAAK;YACtC,OAAO,EAAa,YAAY,CAAC,cAAc;SAChD,CAAC;IACJ,CAAC;IAED,6EAA6E;IAC7E,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAExD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AACrF,CAAC;AAED,iFAAiF;AAEjF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA6B;IAC/D,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA6B;IAC5D,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,IAAI,CAAC;QAEd,KAAK,UAAU;YACb,OAAO,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC;QAE/C,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,4CAA4C,CAAC;YAC9E,OAAO,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAChD,CAAC;QAED,KAAK,cAAc;YACjB,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAS,sBAAsB,CAC7B,QAAmC;IAEnC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,KAAK,UAAU,CAAC;IACjD,OAAO;QACL,OAAO,EAAU,QAAQ,CAAC,OAAO;QACjC,QAAQ,EAAS,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB;QACrE,OAAO,EAAU,QAAQ,CAAC,OAAO;QACjC,SAAS,EAAQ,QAAQ,CAAC,SAAS;QACnC,GAAG,CAAC,QAAQ;YACV,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,gBAAgB,IAAI,kCAAkC,EAAE,CAAC;KACzF,CAAC;AACJ,CAAC"}
|