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,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal glob matcher for OCD policy checks.
|
|
3
|
+
*
|
|
4
|
+
* Supports the glob features required for cursor integration:
|
|
5
|
+
* double-star - matches any sequence including path separators
|
|
6
|
+
* single-star - matches any sequence NOT including path separators
|
|
7
|
+
* question - matches exactly one non-separator character
|
|
8
|
+
*
|
|
9
|
+
* Matching rules:
|
|
10
|
+
* Paths are normalized to forward slashes before matching.
|
|
11
|
+
* Patterns are anchored (full match required, not substring).
|
|
12
|
+
* Matching is case-insensitive.
|
|
13
|
+
*
|
|
14
|
+
* See: docs/cursor-allowedfiles-policy.md
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Return true if filePath matches the given glob pattern.
|
|
18
|
+
*
|
|
19
|
+
* @param filePath File path to test. Backslashes are normalized to forward slashes.
|
|
20
|
+
* @param pattern Glob pattern. Supports double-star, single-star, and question-mark.
|
|
21
|
+
*/
|
|
22
|
+
export function matchesGlob(filePath, pattern) {
|
|
23
|
+
const normalizedPath = filePath.replace(/\\/g, "/");
|
|
24
|
+
const regex = globToRegex(pattern);
|
|
25
|
+
return regex.test(normalizedPath);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Convert a glob pattern to an anchored, case-insensitive RegExp.
|
|
29
|
+
*
|
|
30
|
+
* Uses a character-by-character scan to avoid string placeholders that
|
|
31
|
+
* could introduce control characters or confuse source parsers.
|
|
32
|
+
*/
|
|
33
|
+
export function globToRegex(glob) {
|
|
34
|
+
const normalized = glob.replace(/\\/g, "/");
|
|
35
|
+
const ESCAPE_RE = /[.+^${}()|[\]\\]/g;
|
|
36
|
+
let pattern = "";
|
|
37
|
+
let i = 0;
|
|
38
|
+
while (i < normalized.length) {
|
|
39
|
+
const ch = normalized[i];
|
|
40
|
+
if (ch === "*" && normalized[i + 1] === "*") {
|
|
41
|
+
// "**" followed by "/" means zero or more directory components (including none).
|
|
42
|
+
// e.g. "**/.env*" must match root-level ".env.local" and "config/.env.local".
|
|
43
|
+
if (normalized[i + 2] === "/") {
|
|
44
|
+
pattern += "(.*/)?";
|
|
45
|
+
i += 3; // consume **/ together
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
// "**" at end of pattern or not followed by "/" — any chars including separators
|
|
49
|
+
pattern += ".*";
|
|
50
|
+
i += 2;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else if (ch === "*") {
|
|
54
|
+
pattern += "[^/]*";
|
|
55
|
+
i += 1;
|
|
56
|
+
}
|
|
57
|
+
else if (ch === "?") {
|
|
58
|
+
pattern += "[^/]";
|
|
59
|
+
i += 1;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
pattern += ch.replace(ESCAPE_RE, "\\$&");
|
|
63
|
+
i += 1;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return new RegExp(`^${pattern}$`, "i");
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=glob-matcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob-matcher.js","sourceRoot":"","sources":["../../../src/cursor/glob-matcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,OAAe;IAC3D,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,KAAK,GAAY,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAI,mBAAmB,CAAC;IAEvC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,CAAC,GAAS,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAW,CAAC;QAEnC,IAAI,EAAE,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC5C,iFAAiF;YACjF,8EAA8E;YAC9E,IAAI,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC9B,OAAO,IAAI,QAAQ,CAAC;gBACpB,CAAC,IAAU,CAAC,CAAC,CAAC,uBAAuB;YACvC,CAAC;iBAAM,CAAC;gBACN,iFAAiF;gBACjF,OAAO,IAAI,IAAI,CAAC;gBAChB,CAAC,IAAU,CAAC,CAAC;YACf,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,IAAI,OAAO,CAAC;YACnB,CAAC,IAAU,CAAC,CAAC;QACf,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACtB,OAAO,IAAI,MAAM,CAAC;YAClB,CAAC,IAAU,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC,IAAU,CAAC,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,EAAE,GAAG,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor integration — public API surface.
|
|
3
|
+
*
|
|
4
|
+
* Exports the types, functions, and classes that consumers of this module need.
|
|
5
|
+
* Internal helpers (normalizePath, buildChangeSpecFrom*, etc.) are not re-exported.
|
|
6
|
+
*
|
|
7
|
+
* ── Intended consumers ────────────────────────────────────────────────────────
|
|
8
|
+
*
|
|
9
|
+
* - Workflow coordinator / product session: calls buildCursorHandoffArtifact
|
|
10
|
+
* + evaluateOCDForHandoff + CursorDeliveryGate.deliver() in sequence
|
|
11
|
+
* - Test suite: imports types and stubs CursorEditorPlugin
|
|
12
|
+
* - UCP persistence layer: already imported via src/ucp/envelope.ts
|
|
13
|
+
*
|
|
14
|
+
* ── Call sequence ─────────────────────────────────────────────────────────────
|
|
15
|
+
*
|
|
16
|
+
* 1. buildCursorHandoffArtifact(intake, intentId, responseId, policy)
|
|
17
|
+
* → initial artifact (eligibility: "pending_confirmation")
|
|
18
|
+
*
|
|
19
|
+
* 2. evaluateOCDForHandoff(artifact, policy)
|
|
20
|
+
* → ocdClearance
|
|
21
|
+
* applyOCDClearance(artifact, ocdClearance)
|
|
22
|
+
* → artifact with OCD result (may be conflict_detected)
|
|
23
|
+
*
|
|
24
|
+
* 3. [OCD conflict? → acceptOCDConflict(artifact) when H accepts]
|
|
25
|
+
*
|
|
26
|
+
* 4. [H narrows scope? → narrowArtifactScope(artifact, newAllowedFiles)]
|
|
27
|
+
* [H provides path from empty?
|
|
28
|
+
* → validateHProvidedPath(path, workspaceRoot) — tier 1
|
|
29
|
+
* → if ok: narrowArtifactScope(artifact, [path])
|
|
30
|
+
* → re-run evaluateOCDForHandoff for tier 2]
|
|
31
|
+
*
|
|
32
|
+
* 5. approveArtifact(artifact, confirmedAt)
|
|
33
|
+
* → artifact with eligibility: "approved_for_cursor"
|
|
34
|
+
*
|
|
35
|
+
* 6. new CursorDeliveryGate(plugin, storeDir).deliver(artifact)
|
|
36
|
+
* → DeliveryGateResult
|
|
37
|
+
*/
|
|
38
|
+
export type { CursorHandoffEligibility, CursorOCDClearanceStatus, CursorOCDClearance, CursorScopeConstraint, CursorChangeSpec, CursorHandoffArtifact, CursorOCDPolicy, CursorDeliveryRequest, CursorAccepted, CursorRefusedDueToScope, CursorRefusedDueToExecutionError, CursorResponse, CursorScopeQuestionKind, CursorScopeQuestion, CursorExecutionErrorCode, WorkspacePathValidationResult, } from "./types.js";
|
|
39
|
+
export { buildCursorHandoffArtifact, narrowArtifactScope, approveArtifact, } from "./artifact-mapper.js";
|
|
40
|
+
export { evaluateOCDForHandoff, validateHProvidedPath, applyOCDClearance, acceptOCDConflict, } from "./ocd-evaluator.js";
|
|
41
|
+
export { CursorDeliveryGate, } from "./delivery-gate.js";
|
|
42
|
+
export type { CursorEditorPlugin, CursorGateDeps, DeliveryGateResult, } from "./delivery-gate.js";
|
|
43
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cursor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAIH,YAAY,EACV,wBAAwB,EACxB,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,uBAAuB,EACvB,gCAAgC,EAChC,cAAc,EACd,uBAAuB,EACvB,mBAAmB,EACnB,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAIpB,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAI9B,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACL,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor integration — public API surface.
|
|
3
|
+
*
|
|
4
|
+
* Exports the types, functions, and classes that consumers of this module need.
|
|
5
|
+
* Internal helpers (normalizePath, buildChangeSpecFrom*, etc.) are not re-exported.
|
|
6
|
+
*
|
|
7
|
+
* ── Intended consumers ────────────────────────────────────────────────────────
|
|
8
|
+
*
|
|
9
|
+
* - Workflow coordinator / product session: calls buildCursorHandoffArtifact
|
|
10
|
+
* + evaluateOCDForHandoff + CursorDeliveryGate.deliver() in sequence
|
|
11
|
+
* - Test suite: imports types and stubs CursorEditorPlugin
|
|
12
|
+
* - UCP persistence layer: already imported via src/ucp/envelope.ts
|
|
13
|
+
*
|
|
14
|
+
* ── Call sequence ─────────────────────────────────────────────────────────────
|
|
15
|
+
*
|
|
16
|
+
* 1. buildCursorHandoffArtifact(intake, intentId, responseId, policy)
|
|
17
|
+
* → initial artifact (eligibility: "pending_confirmation")
|
|
18
|
+
*
|
|
19
|
+
* 2. evaluateOCDForHandoff(artifact, policy)
|
|
20
|
+
* → ocdClearance
|
|
21
|
+
* applyOCDClearance(artifact, ocdClearance)
|
|
22
|
+
* → artifact with OCD result (may be conflict_detected)
|
|
23
|
+
*
|
|
24
|
+
* 3. [OCD conflict? → acceptOCDConflict(artifact) when H accepts]
|
|
25
|
+
*
|
|
26
|
+
* 4. [H narrows scope? → narrowArtifactScope(artifact, newAllowedFiles)]
|
|
27
|
+
* [H provides path from empty?
|
|
28
|
+
* → validateHProvidedPath(path, workspaceRoot) — tier 1
|
|
29
|
+
* → if ok: narrowArtifactScope(artifact, [path])
|
|
30
|
+
* → re-run evaluateOCDForHandoff for tier 2]
|
|
31
|
+
*
|
|
32
|
+
* 5. approveArtifact(artifact, confirmedAt)
|
|
33
|
+
* → artifact with eligibility: "approved_for_cursor"
|
|
34
|
+
*
|
|
35
|
+
* 6. new CursorDeliveryGate(plugin, storeDir).deliver(artifact)
|
|
36
|
+
* → DeliveryGateResult
|
|
37
|
+
*/
|
|
38
|
+
// ─── Artifact mapper ──────────────────────────────────────────────────────────
|
|
39
|
+
export { buildCursorHandoffArtifact, narrowArtifactScope, approveArtifact, } from "./artifact-mapper.js";
|
|
40
|
+
// ─── OCD evaluator ────────────────────────────────────────────────────────────
|
|
41
|
+
export { evaluateOCDForHandoff, validateHProvidedPath, applyOCDClearance, acceptOCDConflict, } from "./ocd-evaluator.js";
|
|
42
|
+
// ─── Delivery gate ────────────────────────────────────────────────────────────
|
|
43
|
+
export { CursorDeliveryGate, } from "./delivery-gate.js";
|
|
44
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cursor/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAuBH,iFAAiF;AAEjF,OAAO,EACL,0BAA0B,EAC1B,mBAAmB,EACnB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,iFAAiF;AAEjF,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,iFAAiF;AAEjF,OAAO,EACL,kBAAkB,GACnB,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OCD Evaluator — evaluates a CursorHandoffArtifact against policy rules.
|
|
3
|
+
*
|
|
4
|
+
* ── Role ───────────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* Takes the initial artifact produced by the artifact mapper and applies
|
|
7
|
+
* the three OCD rules that govern Cursor handoffs:
|
|
8
|
+
*
|
|
9
|
+
* RULE_WRITE_OUTSIDE_WORKSPACE — file outside write_safe_globs
|
|
10
|
+
* RULE_WRITE_TOO_MANY_FILES — allowedFiles count exceeds threshold
|
|
11
|
+
* RULE_H_PATH_WORKSPACE_BOUNDARY — H-provided path outside workspace root
|
|
12
|
+
* (hard block, not a conflict)
|
|
13
|
+
*
|
|
14
|
+
* Returns an updated ocdClearance. The artifact itself is not mutated —
|
|
15
|
+
* callers receive a new ocdClearance to apply.
|
|
16
|
+
*
|
|
17
|
+
* ── What OCD does ─────────────────────────────────────────────────────────────
|
|
18
|
+
*
|
|
19
|
+
* - Fires conflicts when allowedFiles entries violate write_safe_globs
|
|
20
|
+
* - Fires conflicts when allowedFiles.length > maxFilesApprovalThreshold
|
|
21
|
+
* - Returns "cleared" when no rules fire
|
|
22
|
+
* - Returns "conflict_detected" when one or more rules fire
|
|
23
|
+
*
|
|
24
|
+
* ── What OCD does NOT do ──────────────────────────────────────────────────────
|
|
25
|
+
*
|
|
26
|
+
* - Does not add to allowedFiles (NEVER proposes files)
|
|
27
|
+
* - Does not remove from allowedFiles (fires conflict; H decides)
|
|
28
|
+
* - Does not read the filesystem
|
|
29
|
+
* - Does not call the intake pipeline
|
|
30
|
+
*
|
|
31
|
+
* ── H-provided path validation ────────────────────────────────────────────────
|
|
32
|
+
*
|
|
33
|
+
* When H sets allowedFiles from empty, the path must pass two tiers:
|
|
34
|
+
*
|
|
35
|
+
* Tier 1 — workspace boundary (hard block):
|
|
36
|
+
* validateHProvidedPath() returns { ok: false } → path rejected, not added
|
|
37
|
+
*
|
|
38
|
+
* Tier 2 — write_safe_globs (OCD conflict):
|
|
39
|
+
* evaluateOCDForHandoff() returns conflict_detected → H sees conflict surface
|
|
40
|
+
*
|
|
41
|
+
* Tier 1 runs in the delivery gate before OCD is called.
|
|
42
|
+
* Tier 2 runs here in the OCD evaluator.
|
|
43
|
+
*
|
|
44
|
+
* See: docs/cursor-allowedfiles-policy.md — policy rules section
|
|
45
|
+
* docs/cursor-integration-architecture.md — OCD role in authority model
|
|
46
|
+
*/
|
|
47
|
+
import type { CursorHandoffArtifact, CursorOCDClearance, CursorOCDPolicy, WorkspacePathValidationResult } from "./types.js";
|
|
48
|
+
/**
|
|
49
|
+
* Evaluate a CursorHandoffArtifact against OCD policy rules.
|
|
50
|
+
*
|
|
51
|
+
* Returns an updated ocdClearance. The artifact is not mutated.
|
|
52
|
+
* Callers apply the returned ocdClearance to the artifact before surfacing
|
|
53
|
+
* it to H.
|
|
54
|
+
*
|
|
55
|
+
* Note: if the artifact already has ocdClearance.status === "conflict_accepted",
|
|
56
|
+
* this function should NOT be called again (H already accepted the conflict).
|
|
57
|
+
* The existing ocdClearance should be preserved unchanged.
|
|
58
|
+
*/
|
|
59
|
+
export declare function evaluateOCDForHandoff(artifact: CursorHandoffArtifact, policy: CursorOCDPolicy): CursorOCDClearance;
|
|
60
|
+
/**
|
|
61
|
+
* Validate an H-provided file path against the workspace boundary.
|
|
62
|
+
*
|
|
63
|
+
* This is Tier 1 of H-provided path validation (hard block — not a conflict).
|
|
64
|
+
* Tier 2 (write_safe_globs) is handled by evaluateOCDForHandoff().
|
|
65
|
+
*
|
|
66
|
+
* Called by the delivery gate when H sets allowedFiles from empty, before
|
|
67
|
+
* adding the path to the artifact and before calling the OCD evaluator.
|
|
68
|
+
*
|
|
69
|
+
* A path is valid if and only if:
|
|
70
|
+
* - It is a non-empty string
|
|
71
|
+
* - Its resolved form is within the workspace root
|
|
72
|
+
*/
|
|
73
|
+
export declare function validateHProvidedPath(filePath: string, workspaceRoot: string): WorkspacePathValidationResult;
|
|
74
|
+
/**
|
|
75
|
+
* Apply a completed ocdClearance to an artifact, returning an updated artifact.
|
|
76
|
+
*
|
|
77
|
+
* Does not mutate. Returns a new artifact reference with ocdClearance replaced.
|
|
78
|
+
* The artifact id is unchanged — ocdClearance is not part of the content-addressed
|
|
79
|
+
* id input (the id reflects what the edit IS, not its current OCD state).
|
|
80
|
+
*/
|
|
81
|
+
export declare function applyOCDClearance(artifact: CursorHandoffArtifact, ocdClearance: CursorOCDClearance): CursorHandoffArtifact;
|
|
82
|
+
/**
|
|
83
|
+
* Mark an artifact's OCD conflict as accepted by H.
|
|
84
|
+
*
|
|
85
|
+
* Called when H explicitly accepts a detected conflict (conflict_detected → conflict_accepted).
|
|
86
|
+
* Preserves rulesFired and conflictsDetected for audit — only status changes.
|
|
87
|
+
*/
|
|
88
|
+
export declare function acceptOCDConflict(artifact: CursorHandoffArtifact): CursorHandoffArtifact;
|
|
89
|
+
//# sourceMappingURL=ocd-evaluator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ocd-evaluator.d.ts","sourceRoot":"","sources":["../../../src/cursor/ocd-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAIH,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,6BAA6B,EAC9B,MAAM,YAAY,CAAC;AASpB;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,qBAAqB,EAC/B,MAAM,EAAI,eAAe,GACxB,kBAAkB,CAqCpB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAO,MAAM,EACrB,aAAa,EAAE,MAAM,GACpB,6BAA6B,CAc/B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAM,qBAAqB,EACnC,YAAY,EAAE,kBAAkB,GAC/B,qBAAqB,CAEvB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,qBAAqB,GAC9B,qBAAqB,CAQvB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OCD Evaluator — evaluates a CursorHandoffArtifact against policy rules.
|
|
3
|
+
*
|
|
4
|
+
* ── Role ───────────────────────────────────────────────────────────────────────
|
|
5
|
+
*
|
|
6
|
+
* Takes the initial artifact produced by the artifact mapper and applies
|
|
7
|
+
* the three OCD rules that govern Cursor handoffs:
|
|
8
|
+
*
|
|
9
|
+
* RULE_WRITE_OUTSIDE_WORKSPACE — file outside write_safe_globs
|
|
10
|
+
* RULE_WRITE_TOO_MANY_FILES — allowedFiles count exceeds threshold
|
|
11
|
+
* RULE_H_PATH_WORKSPACE_BOUNDARY — H-provided path outside workspace root
|
|
12
|
+
* (hard block, not a conflict)
|
|
13
|
+
*
|
|
14
|
+
* Returns an updated ocdClearance. The artifact itself is not mutated —
|
|
15
|
+
* callers receive a new ocdClearance to apply.
|
|
16
|
+
*
|
|
17
|
+
* ── What OCD does ─────────────────────────────────────────────────────────────
|
|
18
|
+
*
|
|
19
|
+
* - Fires conflicts when allowedFiles entries violate write_safe_globs
|
|
20
|
+
* - Fires conflicts when allowedFiles.length > maxFilesApprovalThreshold
|
|
21
|
+
* - Returns "cleared" when no rules fire
|
|
22
|
+
* - Returns "conflict_detected" when one or more rules fire
|
|
23
|
+
*
|
|
24
|
+
* ── What OCD does NOT do ──────────────────────────────────────────────────────
|
|
25
|
+
*
|
|
26
|
+
* - Does not add to allowedFiles (NEVER proposes files)
|
|
27
|
+
* - Does not remove from allowedFiles (fires conflict; H decides)
|
|
28
|
+
* - Does not read the filesystem
|
|
29
|
+
* - Does not call the intake pipeline
|
|
30
|
+
*
|
|
31
|
+
* ── H-provided path validation ────────────────────────────────────────────────
|
|
32
|
+
*
|
|
33
|
+
* When H sets allowedFiles from empty, the path must pass two tiers:
|
|
34
|
+
*
|
|
35
|
+
* Tier 1 — workspace boundary (hard block):
|
|
36
|
+
* validateHProvidedPath() returns { ok: false } → path rejected, not added
|
|
37
|
+
*
|
|
38
|
+
* Tier 2 — write_safe_globs (OCD conflict):
|
|
39
|
+
* evaluateOCDForHandoff() returns conflict_detected → H sees conflict surface
|
|
40
|
+
*
|
|
41
|
+
* Tier 1 runs in the delivery gate before OCD is called.
|
|
42
|
+
* Tier 2 runs here in the OCD evaluator.
|
|
43
|
+
*
|
|
44
|
+
* See: docs/cursor-allowedfiles-policy.md — policy rules section
|
|
45
|
+
* docs/cursor-integration-architecture.md — OCD role in authority model
|
|
46
|
+
*/
|
|
47
|
+
import * as path from "node:path";
|
|
48
|
+
import { matchesGlob } from "./glob-matcher.js";
|
|
49
|
+
// ─── Rule IDs ────────────────────────────────────────────────────────────────
|
|
50
|
+
const RULE_WRITE_OUTSIDE_WORKSPACE = "RULE_WRITE_OUTSIDE_WORKSPACE";
|
|
51
|
+
const RULE_WRITE_TOO_MANY_FILES = "RULE_WRITE_TOO_MANY_FILES";
|
|
52
|
+
// ─── Public API ───────────────────────────────────────────────────────────────
|
|
53
|
+
/**
|
|
54
|
+
* Evaluate a CursorHandoffArtifact against OCD policy rules.
|
|
55
|
+
*
|
|
56
|
+
* Returns an updated ocdClearance. The artifact is not mutated.
|
|
57
|
+
* Callers apply the returned ocdClearance to the artifact before surfacing
|
|
58
|
+
* it to H.
|
|
59
|
+
*
|
|
60
|
+
* Note: if the artifact already has ocdClearance.status === "conflict_accepted",
|
|
61
|
+
* this function should NOT be called again (H already accepted the conflict).
|
|
62
|
+
* The existing ocdClearance should be preserved unchanged.
|
|
63
|
+
*/
|
|
64
|
+
export function evaluateOCDForHandoff(artifact, policy) {
|
|
65
|
+
const rulesFired = [];
|
|
66
|
+
const conflictsDetected = [];
|
|
67
|
+
const { allowedFiles } = artifact.scopeConstraint;
|
|
68
|
+
// RULE_WRITE_OUTSIDE_WORKSPACE — each file must be within write_safe_globs.
|
|
69
|
+
for (const filePath of allowedFiles) {
|
|
70
|
+
const normalizedPath = normalizePath(filePath);
|
|
71
|
+
const isSafe = policy.writeSafeGlobs.some((safeGlob) => matchesGlob(normalizedPath, safeGlob));
|
|
72
|
+
if (!isSafe) {
|
|
73
|
+
if (!rulesFired.includes(RULE_WRITE_OUTSIDE_WORKSPACE)) {
|
|
74
|
+
rulesFired.push(RULE_WRITE_OUTSIDE_WORKSPACE);
|
|
75
|
+
}
|
|
76
|
+
conflictsDetected.push(`File '${filePath}' is outside the safe write zone (write_safe_globs).`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
// RULE_WRITE_TOO_MANY_FILES — allowedFiles count check.
|
|
80
|
+
if (allowedFiles.length > 0 &&
|
|
81
|
+
allowedFiles.length > policy.maxFilesApprovalThreshold) {
|
|
82
|
+
rulesFired.push(RULE_WRITE_TOO_MANY_FILES);
|
|
83
|
+
conflictsDetected.push(`Too many files in scope: ${allowedFiles.length} (threshold: ${policy.maxFilesApprovalThreshold}).`);
|
|
84
|
+
}
|
|
85
|
+
const status = conflictsDetected.length > 0 ? "conflict_detected" : "cleared";
|
|
86
|
+
return { status, rulesFired, conflictsDetected };
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Validate an H-provided file path against the workspace boundary.
|
|
90
|
+
*
|
|
91
|
+
* This is Tier 1 of H-provided path validation (hard block — not a conflict).
|
|
92
|
+
* Tier 2 (write_safe_globs) is handled by evaluateOCDForHandoff().
|
|
93
|
+
*
|
|
94
|
+
* Called by the delivery gate when H sets allowedFiles from empty, before
|
|
95
|
+
* adding the path to the artifact and before calling the OCD evaluator.
|
|
96
|
+
*
|
|
97
|
+
* A path is valid if and only if:
|
|
98
|
+
* - It is a non-empty string
|
|
99
|
+
* - Its resolved form is within the workspace root
|
|
100
|
+
*/
|
|
101
|
+
export function validateHProvidedPath(filePath, workspaceRoot) {
|
|
102
|
+
if (!filePath || filePath.trim().length === 0) {
|
|
103
|
+
return { ok: false, reason: "invalid_path" };
|
|
104
|
+
}
|
|
105
|
+
const resolvedWorkspace = path.resolve(workspaceRoot);
|
|
106
|
+
const resolvedFile = path.resolve(workspaceRoot, filePath);
|
|
107
|
+
// Path must be at or under workspaceRoot.
|
|
108
|
+
if (!resolvedFile.startsWith(resolvedWorkspace + path.sep) && resolvedFile !== resolvedWorkspace) {
|
|
109
|
+
return { ok: false, reason: "outside_workspace_boundary" };
|
|
110
|
+
}
|
|
111
|
+
return { ok: true };
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Apply a completed ocdClearance to an artifact, returning an updated artifact.
|
|
115
|
+
*
|
|
116
|
+
* Does not mutate. Returns a new artifact reference with ocdClearance replaced.
|
|
117
|
+
* The artifact id is unchanged — ocdClearance is not part of the content-addressed
|
|
118
|
+
* id input (the id reflects what the edit IS, not its current OCD state).
|
|
119
|
+
*/
|
|
120
|
+
export function applyOCDClearance(artifact, ocdClearance) {
|
|
121
|
+
return { ...artifact, ocdClearance };
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Mark an artifact's OCD conflict as accepted by H.
|
|
125
|
+
*
|
|
126
|
+
* Called when H explicitly accepts a detected conflict (conflict_detected → conflict_accepted).
|
|
127
|
+
* Preserves rulesFired and conflictsDetected for audit — only status changes.
|
|
128
|
+
*/
|
|
129
|
+
export function acceptOCDConflict(artifact) {
|
|
130
|
+
return {
|
|
131
|
+
...artifact,
|
|
132
|
+
ocdClearance: {
|
|
133
|
+
...artifact.ocdClearance,
|
|
134
|
+
status: "conflict_accepted",
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// ─── Internal ────────────────────────────────────────────────────────────────
|
|
139
|
+
function normalizePath(filePath) {
|
|
140
|
+
return filePath.replace(/\\/g, "/");
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=ocd-evaluator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ocd-evaluator.js","sourceRoot":"","sources":["../../../src/cursor/ocd-evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,gFAAgF;AAEhF,MAAM,4BAA4B,GAAI,8BAA8B,CAAC;AACrE,MAAM,yBAAyB,GAAO,2BAA2B,CAAC;AAElE,iFAAiF;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA+B,EAC/B,MAAyB;IAEzB,MAAM,UAAU,GAAoB,EAAE,CAAC;IACvC,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,MAAM,EAAE,YAAY,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;IAElD,4EAA4E;IAC5E,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,CACvC,CAAC,QAAQ,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,CACpD,CAAC;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,CAAC;gBACvD,UAAU,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAChD,CAAC;YACD,iBAAiB,CAAC,IAAI,CACpB,SAAS,QAAQ,sDAAsD,CACxE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IACE,YAAY,CAAC,MAAM,GAAG,CAAC;QACvB,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,yBAAyB,EACtD,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC3C,iBAAiB,CAAC,IAAI,CACpB,4BAA4B,YAAY,CAAC,MAAM,gBAAgB,MAAM,CAAC,yBAAyB,IAAI,CACpG,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAqB,EACrB,aAAqB;IAErB,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,YAAY,GAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAEhE,0CAA0C;IAC1C,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;QACjG,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC;IAC7D,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAmC,EACnC,YAAgC;IAEhC,OAAO,EAAE,GAAG,QAAQ,EAAE,YAAY,EAAE,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA+B;IAE/B,OAAO;QACL,GAAG,QAAQ;QACX,YAAY,EAAE;YACZ,GAAG,QAAQ,CAAC,YAAY;YACxB,MAAM,EAAE,mBAAmB;SAC5B;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,SAAS,aAAa,CAAC,QAAgB;IACrC,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC"}
|