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.
Files changed (665) hide show
  1. package/LICENSE +186 -0
  2. package/README.md +724 -0
  3. package/bin/use-steady.js +13 -0
  4. package/dist/server-store.d.ts +68 -0
  5. package/dist/server-store.d.ts.map +1 -0
  6. package/dist/server-store.js +133 -0
  7. package/dist/server-store.js.map +1 -0
  8. package/dist/server.d.ts +35 -0
  9. package/dist/server.d.ts.map +1 -0
  10. package/dist/server.js +569 -0
  11. package/dist/server.js.map +1 -0
  12. package/dist/src/claude/adapters/api-adapter.d.ts +99 -0
  13. package/dist/src/claude/adapters/api-adapter.d.ts.map +1 -0
  14. package/dist/src/claude/adapters/api-adapter.js +415 -0
  15. package/dist/src/claude/adapters/api-adapter.js.map +1 -0
  16. package/dist/src/claude/adapters/stub-adapter.d.ts +73 -0
  17. package/dist/src/claude/adapters/stub-adapter.d.ts.map +1 -0
  18. package/dist/src/claude/adapters/stub-adapter.js +114 -0
  19. package/dist/src/claude/adapters/stub-adapter.js.map +1 -0
  20. package/dist/src/claude/artifact-mapper.d.ts +85 -0
  21. package/dist/src/claude/artifact-mapper.d.ts.map +1 -0
  22. package/dist/src/claude/artifact-mapper.js +187 -0
  23. package/dist/src/claude/artifact-mapper.js.map +1 -0
  24. package/dist/src/claude/delivery-gate.d.ts +136 -0
  25. package/dist/src/claude/delivery-gate.d.ts.map +1 -0
  26. package/dist/src/claude/delivery-gate.js +231 -0
  27. package/dist/src/claude/delivery-gate.js.map +1 -0
  28. package/dist/src/claude/index.d.ts +24 -0
  29. package/dist/src/claude/index.d.ts.map +1 -0
  30. package/dist/src/claude/index.js +23 -0
  31. package/dist/src/claude/index.js.map +1 -0
  32. package/dist/src/claude/types.d.ts +223 -0
  33. package/dist/src/claude/types.d.ts.map +1 -0
  34. package/dist/src/claude/types.js +64 -0
  35. package/dist/src/claude/types.js.map +1 -0
  36. package/dist/src/control/compiler.d.ts +125 -0
  37. package/dist/src/control/compiler.d.ts.map +1 -0
  38. package/dist/src/control/compiler.js +179 -0
  39. package/dist/src/control/compiler.js.map +1 -0
  40. package/dist/src/control/constraints.d.ts +42 -0
  41. package/dist/src/control/constraints.d.ts.map +1 -0
  42. package/dist/src/control/constraints.js +116 -0
  43. package/dist/src/control/constraints.js.map +1 -0
  44. package/dist/src/control/drift-detector.d.ts +49 -0
  45. package/dist/src/control/drift-detector.d.ts.map +1 -0
  46. package/dist/src/control/drift-detector.js +115 -0
  47. package/dist/src/control/drift-detector.js.map +1 -0
  48. package/dist/src/control/index.d.ts +44 -0
  49. package/dist/src/control/index.d.ts.map +1 -0
  50. package/dist/src/control/index.js +40 -0
  51. package/dist/src/control/index.js.map +1 -0
  52. package/dist/src/control/types.d.ts +144 -0
  53. package/dist/src/control/types.d.ts.map +1 -0
  54. package/dist/src/control/types.js +57 -0
  55. package/dist/src/control/types.js.map +1 -0
  56. package/dist/src/cursor/adapters/inprocess-adapter.d.ts +78 -0
  57. package/dist/src/cursor/adapters/inprocess-adapter.d.ts.map +1 -0
  58. package/dist/src/cursor/adapters/inprocess-adapter.js +308 -0
  59. package/dist/src/cursor/adapters/inprocess-adapter.js.map +1 -0
  60. package/dist/src/cursor/adapters/stub-adapter.d.ts +75 -0
  61. package/dist/src/cursor/adapters/stub-adapter.d.ts.map +1 -0
  62. package/dist/src/cursor/adapters/stub-adapter.js +120 -0
  63. package/dist/src/cursor/adapters/stub-adapter.js.map +1 -0
  64. package/dist/src/cursor/artifact-mapper.d.ts +81 -0
  65. package/dist/src/cursor/artifact-mapper.d.ts.map +1 -0
  66. package/dist/src/cursor/artifact-mapper.js +203 -0
  67. package/dist/src/cursor/artifact-mapper.js.map +1 -0
  68. package/dist/src/cursor/delivery-gate.d.ts +144 -0
  69. package/dist/src/cursor/delivery-gate.d.ts.map +1 -0
  70. package/dist/src/cursor/delivery-gate.js +208 -0
  71. package/dist/src/cursor/delivery-gate.js.map +1 -0
  72. package/dist/src/cursor/glob-matcher.d.ts +30 -0
  73. package/dist/src/cursor/glob-matcher.d.ts.map +1 -0
  74. package/dist/src/cursor/glob-matcher.js +68 -0
  75. package/dist/src/cursor/glob-matcher.js.map +1 -0
  76. package/dist/src/cursor/index.d.ts +43 -0
  77. package/dist/src/cursor/index.d.ts.map +1 -0
  78. package/dist/src/cursor/index.js +44 -0
  79. package/dist/src/cursor/index.js.map +1 -0
  80. package/dist/src/cursor/ocd-evaluator.d.ts +89 -0
  81. package/dist/src/cursor/ocd-evaluator.d.ts.map +1 -0
  82. package/dist/src/cursor/ocd-evaluator.js +142 -0
  83. package/dist/src/cursor/ocd-evaluator.js.map +1 -0
  84. package/dist/src/cursor/types.d.ts +309 -0
  85. package/dist/src/cursor/types.d.ts.map +1 -0
  86. package/dist/src/cursor/types.js +48 -0
  87. package/dist/src/cursor/types.js.map +1 -0
  88. package/dist/src/execution/claude/claude-execution-coordinator.d.ts +164 -0
  89. package/dist/src/execution/claude/claude-execution-coordinator.d.ts.map +1 -0
  90. package/dist/src/execution/claude/claude-execution-coordinator.js +198 -0
  91. package/dist/src/execution/claude/claude-execution-coordinator.js.map +1 -0
  92. package/dist/src/execution/claude/index.d.ts +13 -0
  93. package/dist/src/execution/claude/index.d.ts.map +1 -0
  94. package/dist/src/execution/claude/index.js +12 -0
  95. package/dist/src/execution/claude/index.js.map +1 -0
  96. package/dist/src/execution/cursor/cursor-execution-coordinator.d.ts +216 -0
  97. package/dist/src/execution/cursor/cursor-execution-coordinator.d.ts.map +1 -0
  98. package/dist/src/execution/cursor/cursor-execution-coordinator.js +233 -0
  99. package/dist/src/execution/cursor/cursor-execution-coordinator.js.map +1 -0
  100. package/dist/src/execution/cursor/index.d.ts +20 -0
  101. package/dist/src/execution/cursor/index.d.ts.map +1 -0
  102. package/dist/src/execution/cursor/index.js +18 -0
  103. package/dist/src/execution/cursor/index.js.map +1 -0
  104. package/dist/src/execution/reminders/index.d.ts +11 -0
  105. package/dist/src/execution/reminders/index.d.ts.map +1 -0
  106. package/dist/src/execution/reminders/index.js +9 -0
  107. package/dist/src/execution/reminders/index.js.map +1 -0
  108. package/dist/src/execution/reminders/reminder-execution-coordinator.d.ts +125 -0
  109. package/dist/src/execution/reminders/reminder-execution-coordinator.d.ts.map +1 -0
  110. package/dist/src/execution/reminders/reminder-execution-coordinator.js +129 -0
  111. package/dist/src/execution/reminders/reminder-execution-coordinator.js.map +1 -0
  112. package/dist/src/execution/reminders/reminder-execution-types.d.ts +161 -0
  113. package/dist/src/execution/reminders/reminder-execution-types.d.ts.map +1 -0
  114. package/dist/src/execution/reminders/reminder-execution-types.js +39 -0
  115. package/dist/src/execution/reminders/reminder-execution-types.js.map +1 -0
  116. package/dist/src/execution/reminders/reminder-execution-validator.d.ts +45 -0
  117. package/dist/src/execution/reminders/reminder-execution-validator.d.ts.map +1 -0
  118. package/dist/src/execution/reminders/reminder-execution-validator.js +92 -0
  119. package/dist/src/execution/reminders/reminder-execution-validator.js.map +1 -0
  120. package/dist/src/execution/reminders/reminder-executor.d.ts +62 -0
  121. package/dist/src/execution/reminders/reminder-executor.d.ts.map +1 -0
  122. package/dist/src/execution/reminders/reminder-executor.js +113 -0
  123. package/dist/src/execution/reminders/reminder-executor.js.map +1 -0
  124. package/dist/src/execution/reminders/reminder-time-parser.d.ts +41 -0
  125. package/dist/src/execution/reminders/reminder-time-parser.d.ts.map +1 -0
  126. package/dist/src/execution/reminders/reminder-time-parser.js +113 -0
  127. package/dist/src/execution/reminders/reminder-time-parser.js.map +1 -0
  128. package/dist/src/friction/auto-capture.d.ts +38 -0
  129. package/dist/src/friction/auto-capture.d.ts.map +1 -0
  130. package/dist/src/friction/auto-capture.js +133 -0
  131. package/dist/src/friction/auto-capture.js.map +1 -0
  132. package/dist/src/friction/client.d.ts +39 -0
  133. package/dist/src/friction/client.d.ts.map +1 -0
  134. package/dist/src/friction/client.js +165 -0
  135. package/dist/src/friction/client.js.map +1 -0
  136. package/dist/src/friction/config.d.ts +16 -0
  137. package/dist/src/friction/config.d.ts.map +1 -0
  138. package/dist/src/friction/config.js +56 -0
  139. package/dist/src/friction/config.js.map +1 -0
  140. package/dist/src/friction/github-auth.d.ts +41 -0
  141. package/dist/src/friction/github-auth.d.ts.map +1 -0
  142. package/dist/src/friction/github-auth.js +155 -0
  143. package/dist/src/friction/github-auth.js.map +1 -0
  144. package/dist/src/friction/github-issues.d.ts +51 -0
  145. package/dist/src/friction/github-issues.d.ts.map +1 -0
  146. package/dist/src/friction/github-issues.js +118 -0
  147. package/dist/src/friction/github-issues.js.map +1 -0
  148. package/dist/src/friction/payout-ledger.d.ts +45 -0
  149. package/dist/src/friction/payout-ledger.d.ts.map +1 -0
  150. package/dist/src/friction/payout-ledger.js +111 -0
  151. package/dist/src/friction/payout-ledger.js.map +1 -0
  152. package/dist/src/friction/queue.d.ts +42 -0
  153. package/dist/src/friction/queue.d.ts.map +1 -0
  154. package/dist/src/friction/queue.js +179 -0
  155. package/dist/src/friction/queue.js.map +1 -0
  156. package/dist/src/friction/reviewer.d.ts +42 -0
  157. package/dist/src/friction/reviewer.d.ts.map +1 -0
  158. package/dist/src/friction/reviewer.js +269 -0
  159. package/dist/src/friction/reviewer.js.map +1 -0
  160. package/dist/src/friction/types.d.ts +63 -0
  161. package/dist/src/friction/types.d.ts.map +1 -0
  162. package/dist/src/friction/types.js +18 -0
  163. package/dist/src/friction/types.js.map +1 -0
  164. package/dist/src/history/index.d.ts +39 -0
  165. package/dist/src/history/index.d.ts.map +1 -0
  166. package/dist/src/history/index.js +41 -0
  167. package/dist/src/history/index.js.map +1 -0
  168. package/dist/src/history/session-chain.d.ts +36 -0
  169. package/dist/src/history/session-chain.d.ts.map +1 -0
  170. package/dist/src/history/session-chain.js +91 -0
  171. package/dist/src/history/session-chain.js.map +1 -0
  172. package/dist/src/history/types.d.ts +130 -0
  173. package/dist/src/history/types.d.ts.map +1 -0
  174. package/dist/src/history/types.js +32 -0
  175. package/dist/src/history/types.js.map +1 -0
  176. package/dist/src/history/workflow-history.d.ts +48 -0
  177. package/dist/src/history/workflow-history.d.ts.map +1 -0
  178. package/dist/src/history/workflow-history.js +116 -0
  179. package/dist/src/history/workflow-history.js.map +1 -0
  180. package/dist/src/index.d.ts +88 -0
  181. package/dist/src/index.d.ts.map +1 -0
  182. package/dist/src/index.js +58 -0
  183. package/dist/src/index.js.map +1 -0
  184. package/dist/src/intake/classify-intent-state.d.ts +20 -0
  185. package/dist/src/intake/classify-intent-state.d.ts.map +1 -0
  186. package/dist/src/intake/classify-intent-state.js +29 -0
  187. package/dist/src/intake/classify-intent-state.js.map +1 -0
  188. package/dist/src/intake/intake-service.d.ts +105 -0
  189. package/dist/src/intake/intake-service.d.ts.map +1 -0
  190. package/dist/src/intake/intake-service.js +407 -0
  191. package/dist/src/intake/intake-service.js.map +1 -0
  192. package/dist/src/intake/response-planner.d.ts +25 -0
  193. package/dist/src/intake/response-planner.d.ts.map +1 -0
  194. package/dist/src/intake/response-planner.js +52 -0
  195. package/dist/src/intake/response-planner.js.map +1 -0
  196. package/dist/src/intake/signal-extractor.d.ts +25 -0
  197. package/dist/src/intake/signal-extractor.d.ts.map +1 -0
  198. package/dist/src/intake/signal-extractor.js +42 -0
  199. package/dist/src/intake/signal-extractor.js.map +1 -0
  200. package/dist/src/intake/trace.d.ts +157 -0
  201. package/dist/src/intake/trace.d.ts.map +1 -0
  202. package/dist/src/intake/trace.js +38 -0
  203. package/dist/src/intake/trace.js.map +1 -0
  204. package/dist/src/intake/types.d.ts +70 -0
  205. package/dist/src/intake/types.d.ts.map +1 -0
  206. package/dist/src/intake/types.js +30 -0
  207. package/dist/src/intake/types.js.map +1 -0
  208. package/dist/src/interaction/defaults.d.ts +12 -0
  209. package/dist/src/interaction/defaults.d.ts.map +1 -0
  210. package/dist/src/interaction/defaults.js +26 -0
  211. package/dist/src/interaction/defaults.js.map +1 -0
  212. package/dist/src/interaction/guidance-order.d.ts +53 -0
  213. package/dist/src/interaction/guidance-order.d.ts.map +1 -0
  214. package/dist/src/interaction/guidance-order.js +131 -0
  215. package/dist/src/interaction/guidance-order.js.map +1 -0
  216. package/dist/src/interaction/observe.d.ts +57 -0
  217. package/dist/src/interaction/observe.d.ts.map +1 -0
  218. package/dist/src/interaction/observe.js +77 -0
  219. package/dist/src/interaction/observe.js.map +1 -0
  220. package/dist/src/interaction/selectors.d.ts +16 -0
  221. package/dist/src/interaction/selectors.d.ts.map +1 -0
  222. package/dist/src/interaction/selectors.js +23 -0
  223. package/dist/src/interaction/selectors.js.map +1 -0
  224. package/dist/src/interaction/types.d.ts +105 -0
  225. package/dist/src/interaction/types.d.ts.map +1 -0
  226. package/dist/src/interaction/types.js +48 -0
  227. package/dist/src/interaction/types.js.map +1 -0
  228. package/dist/src/interaction/updater.d.ts +22 -0
  229. package/dist/src/interaction/updater.d.ts.map +1 -0
  230. package/dist/src/interaction/updater.js +87 -0
  231. package/dist/src/interaction/updater.js.map +1 -0
  232. package/dist/src/present/boundary-explanation/boundary-explanation-detector.d.ts +48 -0
  233. package/dist/src/present/boundary-explanation/boundary-explanation-detector.d.ts.map +1 -0
  234. package/dist/src/present/boundary-explanation/boundary-explanation-detector.js +107 -0
  235. package/dist/src/present/boundary-explanation/boundary-explanation-detector.js.map +1 -0
  236. package/dist/src/present/boundary-explanation/boundary-explanation-types.d.ts +43 -0
  237. package/dist/src/present/boundary-explanation/boundary-explanation-types.d.ts.map +1 -0
  238. package/dist/src/present/boundary-explanation/boundary-explanation-types.js +20 -0
  239. package/dist/src/present/boundary-explanation/boundary-explanation-types.js.map +1 -0
  240. package/dist/src/present/boundary-explanation/index.d.ts +10 -0
  241. package/dist/src/present/boundary-explanation/index.d.ts.map +1 -0
  242. package/dist/src/present/boundary-explanation/index.js +2 -0
  243. package/dist/src/present/boundary-explanation/index.js.map +1 -0
  244. package/dist/src/present/control-visibility/control-visibility-assertions.d.ts +70 -0
  245. package/dist/src/present/control-visibility/control-visibility-assertions.d.ts.map +1 -0
  246. package/dist/src/present/control-visibility/control-visibility-assertions.js +138 -0
  247. package/dist/src/present/control-visibility/control-visibility-assertions.js.map +1 -0
  248. package/dist/src/present/control-visibility/control-visibility-evaluator.d.ts +67 -0
  249. package/dist/src/present/control-visibility/control-visibility-evaluator.d.ts.map +1 -0
  250. package/dist/src/present/control-visibility/control-visibility-evaluator.js +146 -0
  251. package/dist/src/present/control-visibility/control-visibility-evaluator.js.map +1 -0
  252. package/dist/src/present/control-visibility/control-visibility-types.d.ts +113 -0
  253. package/dist/src/present/control-visibility/control-visibility-types.d.ts.map +1 -0
  254. package/dist/src/present/control-visibility/control-visibility-types.js +24 -0
  255. package/dist/src/present/control-visibility/control-visibility-types.js.map +1 -0
  256. package/dist/src/present/control-visibility/index.d.ts +16 -0
  257. package/dist/src/present/control-visibility/index.d.ts.map +1 -0
  258. package/dist/src/present/control-visibility/index.js +15 -0
  259. package/dist/src/present/control-visibility/index.js.map +1 -0
  260. package/dist/src/present/format.d.ts +57 -0
  261. package/dist/src/present/format.d.ts.map +1 -0
  262. package/dist/src/present/format.js +150 -0
  263. package/dist/src/present/format.js.map +1 -0
  264. package/dist/src/present/present-coordinator.d.ts +153 -0
  265. package/dist/src/present/present-coordinator.d.ts.map +1 -0
  266. package/dist/src/present/present-coordinator.js +213 -0
  267. package/dist/src/present/present-coordinator.js.map +1 -0
  268. package/dist/src/present/reminders/index.d.ts +22 -0
  269. package/dist/src/present/reminders/index.d.ts.map +1 -0
  270. package/dist/src/present/reminders/index.js +22 -0
  271. package/dist/src/present/reminders/index.js.map +1 -0
  272. package/dist/src/present/reminders/reminder-presenter.d.ts +76 -0
  273. package/dist/src/present/reminders/reminder-presenter.d.ts.map +1 -0
  274. package/dist/src/present/reminders/reminder-presenter.js +359 -0
  275. package/dist/src/present/reminders/reminder-presenter.js.map +1 -0
  276. package/dist/src/present/reminders/reminder-renderer.d.ts +82 -0
  277. package/dist/src/present/reminders/reminder-renderer.d.ts.map +1 -0
  278. package/dist/src/present/reminders/reminder-renderer.js +136 -0
  279. package/dist/src/present/reminders/reminder-renderer.js.map +1 -0
  280. package/dist/src/present/reminders/reminder-types.d.ts +131 -0
  281. package/dist/src/present/reminders/reminder-types.d.ts.map +1 -0
  282. package/dist/src/present/reminders/reminder-types.js +29 -0
  283. package/dist/src/present/reminders/reminder-types.js.map +1 -0
  284. package/dist/src/present/types.d.ts +114 -0
  285. package/dist/src/present/types.d.ts.map +1 -0
  286. package/dist/src/present/types.js +18 -0
  287. package/dist/src/present/types.js.map +1 -0
  288. package/dist/src/product/claude-product-session.d.ts +146 -0
  289. package/dist/src/product/claude-product-session.d.ts.map +1 -0
  290. package/dist/src/product/claude-product-session.js +362 -0
  291. package/dist/src/product/claude-product-session.js.map +1 -0
  292. package/dist/src/product/cursor-product-session.d.ts +211 -0
  293. package/dist/src/product/cursor-product-session.d.ts.map +1 -0
  294. package/dist/src/product/cursor-product-session.js +390 -0
  295. package/dist/src/product/cursor-product-session.js.map +1 -0
  296. package/dist/src/product/index.d.ts +28 -0
  297. package/dist/src/product/index.d.ts.map +1 -0
  298. package/dist/src/product/index.js +22 -0
  299. package/dist/src/product/index.js.map +1 -0
  300. package/dist/src/product/session-resilience/index.d.ts +17 -0
  301. package/dist/src/product/session-resilience/index.d.ts.map +1 -0
  302. package/dist/src/product/session-resilience/index.js +15 -0
  303. package/dist/src/product/session-resilience/index.js.map +1 -0
  304. package/dist/src/product/session-resilience/session-serializer.d.ts +43 -0
  305. package/dist/src/product/session-resilience/session-serializer.d.ts.map +1 -0
  306. package/dist/src/product/session-resilience/session-serializer.js +84 -0
  307. package/dist/src/product/session-resilience/session-serializer.js.map +1 -0
  308. package/dist/src/product/session-resilience/session-snapshot-types.d.ts +35 -0
  309. package/dist/src/product/session-resilience/session-snapshot-types.d.ts.map +1 -0
  310. package/dist/src/product/session-resilience/session-snapshot-types.js +21 -0
  311. package/dist/src/product/session-resilience/session-snapshot-types.js.map +1 -0
  312. package/dist/src/product/session-resilience/session-staleness.d.ts +54 -0
  313. package/dist/src/product/session-resilience/session-staleness.d.ts.map +1 -0
  314. package/dist/src/product/session-resilience/session-staleness.js +62 -0
  315. package/dist/src/product/session-resilience/session-staleness.js.map +1 -0
  316. package/dist/src/product/session-resilience/session-summary.d.ts +40 -0
  317. package/dist/src/product/session-resilience/session-summary.d.ts.map +1 -0
  318. package/dist/src/product/session-resilience/session-summary.js +72 -0
  319. package/dist/src/product/session-resilience/session-summary.js.map +1 -0
  320. package/dist/src/prv/patterns.d.ts +32 -0
  321. package/dist/src/prv/patterns.d.ts.map +1 -0
  322. package/dist/src/prv/patterns.js +40 -0
  323. package/dist/src/prv/patterns.js.map +1 -0
  324. package/dist/src/prv/prv.d.ts +13 -0
  325. package/dist/src/prv/prv.d.ts.map +1 -0
  326. package/dist/src/prv/prv.js +22 -0
  327. package/dist/src/prv/prv.js.map +1 -0
  328. package/dist/src/prv/types.d.ts +26 -0
  329. package/dist/src/prv/types.d.ts.map +1 -0
  330. package/dist/src/prv/types.js +15 -0
  331. package/dist/src/prv/types.js.map +1 -0
  332. package/dist/src/safety/detectors/arbitrary-exec.detector.d.ts +3 -0
  333. package/dist/src/safety/detectors/arbitrary-exec.detector.d.ts.map +1 -0
  334. package/dist/src/safety/detectors/arbitrary-exec.detector.js +31 -0
  335. package/dist/src/safety/detectors/arbitrary-exec.detector.js.map +1 -0
  336. package/dist/src/safety/detectors/bulk-data-exfil.detector.d.ts +21 -0
  337. package/dist/src/safety/detectors/bulk-data-exfil.detector.d.ts.map +1 -0
  338. package/dist/src/safety/detectors/bulk-data-exfil.detector.js +90 -0
  339. package/dist/src/safety/detectors/bulk-data-exfil.detector.js.map +1 -0
  340. package/dist/src/safety/detectors/destructive.detector.d.ts +3 -0
  341. package/dist/src/safety/detectors/destructive.detector.d.ts.map +1 -0
  342. package/dist/src/safety/detectors/destructive.detector.js +28 -0
  343. package/dist/src/safety/detectors/destructive.detector.js.map +1 -0
  344. package/dist/src/safety/detectors/evasion.detector.d.ts +3 -0
  345. package/dist/src/safety/detectors/evasion.detector.d.ts.map +1 -0
  346. package/dist/src/safety/detectors/evasion.detector.js +28 -0
  347. package/dist/src/safety/detectors/evasion.detector.js.map +1 -0
  348. package/dist/src/safety/detectors/secret-access.detector.d.ts +31 -0
  349. package/dist/src/safety/detectors/secret-access.detector.d.ts.map +1 -0
  350. package/dist/src/safety/detectors/secret-access.detector.js +78 -0
  351. package/dist/src/safety/detectors/secret-access.detector.js.map +1 -0
  352. package/dist/src/safety/registry.d.ts +9 -0
  353. package/dist/src/safety/registry.d.ts.map +1 -0
  354. package/dist/src/safety/registry.js +22 -0
  355. package/dist/src/safety/registry.js.map +1 -0
  356. package/dist/src/safety/safety-gate.d.ts +16 -0
  357. package/dist/src/safety/safety-gate.d.ts.map +1 -0
  358. package/dist/src/safety/safety-gate.js +26 -0
  359. package/dist/src/safety/safety-gate.js.map +1 -0
  360. package/dist/src/safety/types.d.ts +35 -0
  361. package/dist/src/safety/types.d.ts.map +1 -0
  362. package/dist/src/safety/types.js +14 -0
  363. package/dist/src/safety/types.js.map +1 -0
  364. package/dist/src/shell/claude-shell.d.ts +63 -0
  365. package/dist/src/shell/claude-shell.d.ts.map +1 -0
  366. package/dist/src/shell/claude-shell.js +81 -0
  367. package/dist/src/shell/claude-shell.js.map +1 -0
  368. package/dist/src/shell/cli/friction-admin.d.ts +14 -0
  369. package/dist/src/shell/cli/friction-admin.d.ts.map +1 -0
  370. package/dist/src/shell/cli/friction-admin.js +276 -0
  371. package/dist/src/shell/cli/friction-admin.js.map +1 -0
  372. package/dist/src/shell/cli/friction-report.d.ts +16 -0
  373. package/dist/src/shell/cli/friction-report.d.ts.map +1 -0
  374. package/dist/src/shell/cli/friction-report.js +156 -0
  375. package/dist/src/shell/cli/friction-report.js.map +1 -0
  376. package/dist/src/shell/cli/main.d.ts +68 -0
  377. package/dist/src/shell/cli/main.d.ts.map +1 -0
  378. package/dist/src/shell/cli/main.js +488 -0
  379. package/dist/src/shell/cli/main.js.map +1 -0
  380. package/dist/src/shell/cli/use-steady.d.ts +26 -0
  381. package/dist/src/shell/cli/use-steady.d.ts.map +1 -0
  382. package/dist/src/shell/cli/use-steady.js +117 -0
  383. package/dist/src/shell/cli/use-steady.js.map +1 -0
  384. package/dist/src/shell/cursor-shell.d.ts +63 -0
  385. package/dist/src/shell/cursor-shell.d.ts.map +1 -0
  386. package/dist/src/shell/cursor-shell.js +88 -0
  387. package/dist/src/shell/cursor-shell.js.map +1 -0
  388. package/dist/src/shell/defaults.d.ts +51 -0
  389. package/dist/src/shell/defaults.d.ts.map +1 -0
  390. package/dist/src/shell/defaults.js +78 -0
  391. package/dist/src/shell/defaults.js.map +1 -0
  392. package/dist/src/shell/history-render.d.ts +56 -0
  393. package/dist/src/shell/history-render.d.ts.map +1 -0
  394. package/dist/src/shell/history-render.js +166 -0
  395. package/dist/src/shell/history-render.js.map +1 -0
  396. package/dist/src/shell/index.d.ts +43 -0
  397. package/dist/src/shell/index.d.ts.map +1 -0
  398. package/dist/src/shell/index.js +45 -0
  399. package/dist/src/shell/index.js.map +1 -0
  400. package/dist/src/shell/render.d.ts +42 -0
  401. package/dist/src/shell/render.d.ts.map +1 -0
  402. package/dist/src/shell/render.js +122 -0
  403. package/dist/src/shell/render.js.map +1 -0
  404. package/dist/src/shell/types.d.ts +46 -0
  405. package/dist/src/shell/types.d.ts.map +1 -0
  406. package/dist/src/shell/types.js +19 -0
  407. package/dist/src/shell/types.js.map +1 -0
  408. package/dist/src/shell/workflow-defaults.d.ts +23 -0
  409. package/dist/src/shell/workflow-defaults.d.ts.map +1 -0
  410. package/dist/src/shell/workflow-defaults.js +27 -0
  411. package/dist/src/shell/workflow-defaults.js.map +1 -0
  412. package/dist/src/shell/workflow-render.d.ts +54 -0
  413. package/dist/src/shell/workflow-render.d.ts.map +1 -0
  414. package/dist/src/shell/workflow-render.js +319 -0
  415. package/dist/src/shell/workflow-render.js.map +1 -0
  416. package/dist/src/shell/workflow-shell.d.ts +110 -0
  417. package/dist/src/shell/workflow-shell.d.ts.map +1 -0
  418. package/dist/src/shell/workflow-shell.js +180 -0
  419. package/dist/src/shell/workflow-shell.js.map +1 -0
  420. package/dist/src/skills/audit.d.ts +118 -0
  421. package/dist/src/skills/audit.d.ts.map +1 -0
  422. package/dist/src/skills/audit.js +147 -0
  423. package/dist/src/skills/audit.js.map +1 -0
  424. package/dist/src/skills/invocation.d.ts +131 -0
  425. package/dist/src/skills/invocation.d.ts.map +1 -0
  426. package/dist/src/skills/invocation.js +165 -0
  427. package/dist/src/skills/invocation.js.map +1 -0
  428. package/dist/src/skills/loader.d.ts +70 -0
  429. package/dist/src/skills/loader.d.ts.map +1 -0
  430. package/dist/src/skills/loader.js +220 -0
  431. package/dist/src/skills/loader.js.map +1 -0
  432. package/dist/src/skills/local-recovery-adapter.d.ts +49 -0
  433. package/dist/src/skills/local-recovery-adapter.d.ts.map +1 -0
  434. package/dist/src/skills/local-recovery-adapter.js +184 -0
  435. package/dist/src/skills/local-recovery-adapter.js.map +1 -0
  436. package/dist/src/skills/parser.d.ts +53 -0
  437. package/dist/src/skills/parser.d.ts.map +1 -0
  438. package/dist/src/skills/parser.js +336 -0
  439. package/dist/src/skills/parser.js.map +1 -0
  440. package/dist/src/skills/registry.d.ts +123 -0
  441. package/dist/src/skills/registry.d.ts.map +1 -0
  442. package/dist/src/skills/registry.js +144 -0
  443. package/dist/src/skills/registry.js.map +1 -0
  444. package/dist/src/skills/types.d.ts +242 -0
  445. package/dist/src/skills/types.d.ts.map +1 -0
  446. package/dist/src/skills/types.js +50 -0
  447. package/dist/src/skills/types.js.map +1 -0
  448. package/dist/src/skills/validator.d.ts +31 -0
  449. package/dist/src/skills/validator.d.ts.map +1 -0
  450. package/dist/src/skills/validator.js +366 -0
  451. package/dist/src/skills/validator.js.map +1 -0
  452. package/dist/src/ucp/envelope.d.ts +165 -0
  453. package/dist/src/ucp/envelope.d.ts.map +1 -0
  454. package/dist/src/ucp/envelope.js +241 -0
  455. package/dist/src/ucp/envelope.js.map +1 -0
  456. package/dist/src/ucp/hashes.d.ts +36 -0
  457. package/dist/src/ucp/hashes.d.ts.map +1 -0
  458. package/dist/src/ucp/hashes.js +59 -0
  459. package/dist/src/ucp/hashes.js.map +1 -0
  460. package/dist/src/ucp/mappers/map-artifact.d.ts +58 -0
  461. package/dist/src/ucp/mappers/map-artifact.d.ts.map +1 -0
  462. package/dist/src/ucp/mappers/map-artifact.js +51 -0
  463. package/dist/src/ucp/mappers/map-artifact.js.map +1 -0
  464. package/dist/src/ucp/mappers/map-change-interpretation.d.ts +12 -0
  465. package/dist/src/ucp/mappers/map-change-interpretation.d.ts.map +1 -0
  466. package/dist/src/ucp/mappers/map-change-interpretation.js +18 -0
  467. package/dist/src/ucp/mappers/map-change-interpretation.js.map +1 -0
  468. package/dist/src/ucp/mappers/map-completion.d.ts +10 -0
  469. package/dist/src/ucp/mappers/map-completion.d.ts.map +1 -0
  470. package/dist/src/ucp/mappers/map-completion.js +24 -0
  471. package/dist/src/ucp/mappers/map-completion.js.map +1 -0
  472. package/dist/src/ucp/mappers/map-context.d.ts +9 -0
  473. package/dist/src/ucp/mappers/map-context.d.ts.map +1 -0
  474. package/dist/src/ucp/mappers/map-context.js +13 -0
  475. package/dist/src/ucp/mappers/map-context.js.map +1 -0
  476. package/dist/src/ucp/mappers/map-debug-trace.d.ts +10 -0
  477. package/dist/src/ucp/mappers/map-debug-trace.d.ts.map +1 -0
  478. package/dist/src/ucp/mappers/map-debug-trace.js +18 -0
  479. package/dist/src/ucp/mappers/map-debug-trace.js.map +1 -0
  480. package/dist/src/ucp/mappers/map-disambiguation.d.ts +10 -0
  481. package/dist/src/ucp/mappers/map-disambiguation.d.ts.map +1 -0
  482. package/dist/src/ucp/mappers/map-disambiguation.js +21 -0
  483. package/dist/src/ucp/mappers/map-disambiguation.js.map +1 -0
  484. package/dist/src/ucp/mappers/map-execution-trace.d.ts +64 -0
  485. package/dist/src/ucp/mappers/map-execution-trace.d.ts.map +1 -0
  486. package/dist/src/ucp/mappers/map-execution-trace.js +57 -0
  487. package/dist/src/ucp/mappers/map-execution-trace.js.map +1 -0
  488. package/dist/src/ucp/mappers/map-intent-interpretation.d.ts +11 -0
  489. package/dist/src/ucp/mappers/map-intent-interpretation.d.ts.map +1 -0
  490. package/dist/src/ucp/mappers/map-intent-interpretation.js +17 -0
  491. package/dist/src/ucp/mappers/map-intent-interpretation.js.map +1 -0
  492. package/dist/src/ucp/mappers/map-intent.d.ts +9 -0
  493. package/dist/src/ucp/mappers/map-intent.d.ts.map +1 -0
  494. package/dist/src/ucp/mappers/map-intent.js +11 -0
  495. package/dist/src/ucp/mappers/map-intent.js.map +1 -0
  496. package/dist/src/ucp/mappers/map-prv.d.ts +10 -0
  497. package/dist/src/ucp/mappers/map-prv.d.ts.map +1 -0
  498. package/dist/src/ucp/mappers/map-prv.js +14 -0
  499. package/dist/src/ucp/mappers/map-prv.js.map +1 -0
  500. package/dist/src/ucp/mappers/map-reminder-execution.d.ts +57 -0
  501. package/dist/src/ucp/mappers/map-reminder-execution.d.ts.map +1 -0
  502. package/dist/src/ucp/mappers/map-reminder-execution.js +69 -0
  503. package/dist/src/ucp/mappers/map-reminder-execution.js.map +1 -0
  504. package/dist/src/ucp/mappers/map-replay-report.d.ts +81 -0
  505. package/dist/src/ucp/mappers/map-replay-report.d.ts.map +1 -0
  506. package/dist/src/ucp/mappers/map-replay-report.js +76 -0
  507. package/dist/src/ucp/mappers/map-replay-report.js.map +1 -0
  508. package/dist/src/ucp/mappers/map-response.d.ts +13 -0
  509. package/dist/src/ucp/mappers/map-response.d.ts.map +1 -0
  510. package/dist/src/ucp/mappers/map-response.js +25 -0
  511. package/dist/src/ucp/mappers/map-response.js.map +1 -0
  512. package/dist/src/ucp/mappers/map-safety.d.ts +14 -0
  513. package/dist/src/ucp/mappers/map-safety.d.ts.map +1 -0
  514. package/dist/src/ucp/mappers/map-safety.js +22 -0
  515. package/dist/src/ucp/mappers/map-safety.js.map +1 -0
  516. package/dist/src/ucp/persistence/index.d.ts +24 -0
  517. package/dist/src/ucp/persistence/index.d.ts.map +1 -0
  518. package/dist/src/ucp/persistence/index.js +22 -0
  519. package/dist/src/ucp/persistence/index.js.map +1 -0
  520. package/dist/src/ucp/persistence/query.d.ts +164 -0
  521. package/dist/src/ucp/persistence/query.d.ts.map +1 -0
  522. package/dist/src/ucp/persistence/query.js +240 -0
  523. package/dist/src/ucp/persistence/query.js.map +1 -0
  524. package/dist/src/ucp/persistence/reader.d.ts +43 -0
  525. package/dist/src/ucp/persistence/reader.d.ts.map +1 -0
  526. package/dist/src/ucp/persistence/reader.js +104 -0
  527. package/dist/src/ucp/persistence/reader.js.map +1 -0
  528. package/dist/src/ucp/persistence/store.d.ts +77 -0
  529. package/dist/src/ucp/persistence/store.d.ts.map +1 -0
  530. package/dist/src/ucp/persistence/store.js +177 -0
  531. package/dist/src/ucp/persistence/store.js.map +1 -0
  532. package/dist/src/ucp/persistence/write.d.ts +48 -0
  533. package/dist/src/ucp/persistence/write.d.ts.map +1 -0
  534. package/dist/src/ucp/persistence/write.js +59 -0
  535. package/dist/src/ucp/persistence/write.js.map +1 -0
  536. package/dist/src/ucp/projection.d.ts +146 -0
  537. package/dist/src/ucp/projection.d.ts.map +1 -0
  538. package/dist/src/ucp/projection.js +139 -0
  539. package/dist/src/ucp/projection.js.map +1 -0
  540. package/dist/src/ucp/types.d.ts +585 -0
  541. package/dist/src/ucp/types.d.ts.map +1 -0
  542. package/dist/src/ucp/types.js +57 -0
  543. package/dist/src/ucp/types.js.map +1 -0
  544. package/dist/src/understand/completion/completion.d.ts +26 -0
  545. package/dist/src/understand/completion/completion.d.ts.map +1 -0
  546. package/dist/src/understand/completion/completion.js +45 -0
  547. package/dist/src/understand/completion/completion.js.map +1 -0
  548. package/dist/src/understand/completion/rules.d.ts +61 -0
  549. package/dist/src/understand/completion/rules.d.ts.map +1 -0
  550. package/dist/src/understand/completion/rules.js +268 -0
  551. package/dist/src/understand/completion/rules.js.map +1 -0
  552. package/dist/src/understand/completion/types.d.ts +68 -0
  553. package/dist/src/understand/completion/types.d.ts.map +1 -0
  554. package/dist/src/understand/completion/types.js +34 -0
  555. package/dist/src/understand/completion/types.js.map +1 -0
  556. package/dist/src/understand/context/context-alignment.d.ts +18 -0
  557. package/dist/src/understand/context/context-alignment.d.ts.map +1 -0
  558. package/dist/src/understand/context/context-alignment.js +61 -0
  559. package/dist/src/understand/context/context-alignment.js.map +1 -0
  560. package/dist/src/understand/context/types.d.ts +20 -0
  561. package/dist/src/understand/context/types.d.ts.map +1 -0
  562. package/dist/src/understand/context/types.js +13 -0
  563. package/dist/src/understand/context/types.js.map +1 -0
  564. package/dist/src/understand/disambiguation/detectors/missing-context.detector.d.ts +12 -0
  565. package/dist/src/understand/disambiguation/detectors/missing-context.detector.d.ts.map +1 -0
  566. package/dist/src/understand/disambiguation/detectors/missing-context.detector.js +60 -0
  567. package/dist/src/understand/disambiguation/detectors/missing-context.detector.js.map +1 -0
  568. package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.d.ts +13 -0
  569. package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.d.ts.map +1 -0
  570. package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.js +57 -0
  571. package/dist/src/understand/disambiguation/detectors/overloaded-term.detector.js.map +1 -0
  572. package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.d.ts +16 -0
  573. package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.d.ts.map +1 -0
  574. package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.js +56 -0
  575. package/dist/src/understand/disambiguation/detectors/typo-adjacent.detector.js.map +1 -0
  576. package/dist/src/understand/disambiguation/registry.d.ts +14 -0
  577. package/dist/src/understand/disambiguation/registry.d.ts.map +1 -0
  578. package/dist/src/understand/disambiguation/registry.js +27 -0
  579. package/dist/src/understand/disambiguation/registry.js.map +1 -0
  580. package/dist/src/understand/disambiguation/types.d.ts +34 -0
  581. package/dist/src/understand/disambiguation/types.d.ts.map +1 -0
  582. package/dist/src/understand/disambiguation/types.js +15 -0
  583. package/dist/src/understand/disambiguation/types.js.map +1 -0
  584. package/dist/src/understand/intent-interpretation/intent-interpretation.d.ts +86 -0
  585. package/dist/src/understand/intent-interpretation/intent-interpretation.d.ts.map +1 -0
  586. package/dist/src/understand/intent-interpretation/intent-interpretation.js +141 -0
  587. package/dist/src/understand/intent-interpretation/intent-interpretation.js.map +1 -0
  588. package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.d.ts +33 -0
  589. package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.d.ts.map +1 -0
  590. package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.js +66 -0
  591. package/dist/src/understand/intent-interpretation/interpreters/color-intent.interpreter.js.map +1 -0
  592. package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.d.ts +20 -0
  593. package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.d.ts.map +1 -0
  594. package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.js +80 -0
  595. package/dist/src/understand/intent-interpretation/interpreters/config-intent.interpreter.js.map +1 -0
  596. package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.d.ts +25 -0
  597. package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.d.ts.map +1 -0
  598. package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.js +47 -0
  599. package/dist/src/understand/intent-interpretation/interpreters/text-intent.interpreter.js.map +1 -0
  600. package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.d.ts +35 -0
  601. package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.d.ts.map +1 -0
  602. package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.js +89 -0
  603. package/dist/src/understand/intent-interpretation/interpreters/workflow-intent.interpreter.js.map +1 -0
  604. package/dist/src/understand/intent-interpretation/registry.d.ts +18 -0
  605. package/dist/src/understand/intent-interpretation/registry.d.ts.map +1 -0
  606. package/dist/src/understand/intent-interpretation/registry.js +26 -0
  607. package/dist/src/understand/intent-interpretation/registry.js.map +1 -0
  608. package/dist/src/understand/intent-interpretation/types.d.ts +83 -0
  609. package/dist/src/understand/intent-interpretation/types.d.ts.map +1 -0
  610. package/dist/src/understand/intent-interpretation/types.js +40 -0
  611. package/dist/src/understand/intent-interpretation/types.js.map +1 -0
  612. package/dist/src/understand/interpretation/intent.d.ts +72 -0
  613. package/dist/src/understand/interpretation/intent.d.ts.map +1 -0
  614. package/dist/src/understand/interpretation/intent.js +414 -0
  615. package/dist/src/understand/interpretation/intent.js.map +1 -0
  616. package/dist/src/understand/interpretation/interpretation.d.ts +26 -0
  617. package/dist/src/understand/interpretation/interpretation.d.ts.map +1 -0
  618. package/dist/src/understand/interpretation/interpretation.js +43 -0
  619. package/dist/src/understand/interpretation/interpretation.js.map +1 -0
  620. package/dist/src/understand/interpretation/parser.d.ts +20 -0
  621. package/dist/src/understand/interpretation/parser.d.ts.map +1 -0
  622. package/dist/src/understand/interpretation/parser.js +88 -0
  623. package/dist/src/understand/interpretation/parser.js.map +1 -0
  624. package/dist/src/understand/interpretation/rules.d.ts +19 -0
  625. package/dist/src/understand/interpretation/rules.d.ts.map +1 -0
  626. package/dist/src/understand/interpretation/rules.js +222 -0
  627. package/dist/src/understand/interpretation/rules.js.map +1 -0
  628. package/dist/src/understand/interpretation/types.d.ts +90 -0
  629. package/dist/src/understand/interpretation/types.d.ts.map +1 -0
  630. package/dist/src/understand/interpretation/types.js +29 -0
  631. package/dist/src/understand/interpretation/types.js.map +1 -0
  632. package/dist/src/understand/shared/types.d.ts +13 -0
  633. package/dist/src/understand/shared/types.d.ts.map +1 -0
  634. package/dist/src/understand/shared/types.js +9 -0
  635. package/dist/src/understand/shared/types.js.map +1 -0
  636. package/dist/src/understand/silent-guidance/index.d.ts +4 -0
  637. package/dist/src/understand/silent-guidance/index.d.ts.map +1 -0
  638. package/dist/src/understand/silent-guidance/index.js +3 -0
  639. package/dist/src/understand/silent-guidance/index.js.map +1 -0
  640. package/dist/src/understand/silent-guidance/selector.d.ts +44 -0
  641. package/dist/src/understand/silent-guidance/selector.d.ts.map +1 -0
  642. package/dist/src/understand/silent-guidance/selector.js +158 -0
  643. package/dist/src/understand/silent-guidance/selector.js.map +1 -0
  644. package/dist/src/understand/silent-guidance/templates.d.ts +31 -0
  645. package/dist/src/understand/silent-guidance/templates.d.ts.map +1 -0
  646. package/dist/src/understand/silent-guidance/templates.js +109 -0
  647. package/dist/src/understand/silent-guidance/templates.js.map +1 -0
  648. package/dist/src/understand/silent-guidance/types.d.ts +36 -0
  649. package/dist/src/understand/silent-guidance/types.d.ts.map +1 -0
  650. package/dist/src/understand/silent-guidance/types.js +2 -0
  651. package/dist/src/understand/silent-guidance/types.js.map +1 -0
  652. package/dist/src/workflow/coordinator.d.ts +197 -0
  653. package/dist/src/workflow/coordinator.d.ts.map +1 -0
  654. package/dist/src/workflow/coordinator.js +682 -0
  655. package/dist/src/workflow/coordinator.js.map +1 -0
  656. package/dist/src/workflow/index.d.ts +30 -0
  657. package/dist/src/workflow/index.d.ts.map +1 -0
  658. package/dist/src/workflow/index.js +30 -0
  659. package/dist/src/workflow/index.js.map +1 -0
  660. package/dist/src/workflow/types.d.ts +213 -0
  661. package/dist/src/workflow/types.d.ts.map +1 -0
  662. package/dist/src/workflow/types.js +27 -0
  663. package/dist/src/workflow/types.js.map +1 -0
  664. package/package.json +54 -0
  665. 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"}