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,72 @@
1
+ /**
2
+ * Deterministic intent normalizer — P0 natural-language normalization.
3
+ *
4
+ * Combines broad natural-language verb coverage (create, mkdir, scaffold,
5
+ * spin up…) with a looksLikePath() safety gate that blocks ambiguous or
6
+ * nonsense captures before they reach the execution pipeline.
7
+ *
8
+ * Design decisions locked:
9
+ * – No AI / model calls
10
+ * – Class 1: leading polite-prefix stripping (please, can you, could you,
11
+ * i need, i want to) — only the leading softener is removed, never
12
+ * mid-sentence words
13
+ * – Class 2: article/noise tolerance for rename ("the file X") and delete
14
+ * ("the X folder") — surgical patterns, not general NL parsing
15
+ * – Class 3 intentional gap: "make a folder for X" stays null — "for X"
16
+ * is ambiguous (purpose vs. name) and belongs in a clarification card
17
+ * – looksLikePath() gate: all NL-captured names must look like real paths
18
+ * – extractPathFromTail() is intentionally absent from NL matchers;
19
+ * only explicit CLI commands (mkdir, touch, mv, rm) are unguarded
20
+ * – Reversed patterns ("create X folder") use looksLikePath; multi-word
21
+ * captures like "some structure to the" are automatically rejected
22
+ * – Broad delete matching restricted to tokens with extension or separator
23
+ * (bare nouns require an explicit type keyword)
24
+ * – If normalisation fails, caller falls through to strict parser
25
+ * – No change to authority model or execution scope
26
+ */
27
+ import type { ParsedChange } from "./types.js";
28
+ export type ParsedIntent = {
29
+ readonly kind: "create_dir";
30
+ readonly path: string;
31
+ } | {
32
+ readonly kind: "create_file";
33
+ readonly path: string;
34
+ readonly content?: string;
35
+ } | {
36
+ readonly kind: "rename";
37
+ readonly from: string;
38
+ readonly to: string;
39
+ } | {
40
+ readonly kind: "delete";
41
+ readonly path: string;
42
+ } | {
43
+ readonly kind: "replace";
44
+ readonly find: string;
45
+ readonly replace: string;
46
+ readonly file: string;
47
+ };
48
+ /**
49
+ * Convert a free-form user string into a structured ParsedIntent.
50
+ *
51
+ * Returns null when:
52
+ * - The input is empty or whitespace
53
+ * - The input is ambiguous or vague (no recognised operation + valid path)
54
+ * - A required field (path, from/to, etc.) cannot be determined safely
55
+ *
56
+ * On null the caller falls through to the strict canonical parser.
57
+ */
58
+ export declare function normalizeIntent(raw: string): ParsedIntent | null;
59
+ /**
60
+ * Convert a ParsedIntent into the canonical ParsedChange used by the execution
61
+ * pipeline (FsChange | ReplaceChange).
62
+ *
63
+ * This is the only bridge between the normalizer and the execution path.
64
+ * No new execution paths are introduced here.
65
+ */
66
+ export declare function intentToChange(intent: ParsedIntent): ParsedChange;
67
+ /**
68
+ * Human-readable "SYSTEM WILL:" description for a ParsedIntent.
69
+ * Used in the UI approval frame to surface normalised intent to the user.
70
+ */
71
+ export declare function describeIntent(intent: ParsedIntent): string;
72
+ //# sourceMappingURL=intent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../../../src/understand/interpretation/intent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAA2B,MAAM,YAAY,CAAC;AAIxE,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAClF;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAK,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AA+U7G;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAmBhE;AAID;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAmCjE;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAQ3D"}
@@ -0,0 +1,414 @@
1
+ /**
2
+ * Deterministic intent normalizer — P0 natural-language normalization.
3
+ *
4
+ * Combines broad natural-language verb coverage (create, mkdir, scaffold,
5
+ * spin up…) with a looksLikePath() safety gate that blocks ambiguous or
6
+ * nonsense captures before they reach the execution pipeline.
7
+ *
8
+ * Design decisions locked:
9
+ * – No AI / model calls
10
+ * – Class 1: leading polite-prefix stripping (please, can you, could you,
11
+ * i need, i want to) — only the leading softener is removed, never
12
+ * mid-sentence words
13
+ * – Class 2: article/noise tolerance for rename ("the file X") and delete
14
+ * ("the X folder") — surgical patterns, not general NL parsing
15
+ * – Class 3 intentional gap: "make a folder for X" stays null — "for X"
16
+ * is ambiguous (purpose vs. name) and belongs in a clarification card
17
+ * – looksLikePath() gate: all NL-captured names must look like real paths
18
+ * – extractPathFromTail() is intentionally absent from NL matchers;
19
+ * only explicit CLI commands (mkdir, touch, mv, rm) are unguarded
20
+ * – Reversed patterns ("create X folder") use looksLikePath; multi-word
21
+ * captures like "some structure to the" are automatically rejected
22
+ * – Broad delete matching restricted to tokens with extension or separator
23
+ * (bare nouns require an explicit type keyword)
24
+ * – If normalisation fails, caller falls through to strict parser
25
+ * – No change to authority model or execution scope
26
+ */
27
+ // ─── Path safety gate ─────────────────────────────────────────────────────────
28
+ /**
29
+ * Returns true only when a captured string plausibly looks like a filesystem
30
+ * path. This is the core guard that prevents ambiguous NL prose (e.g.
31
+ * "some structure to the") from being accepted as a directory name.
32
+ *
33
+ * Accepts:
34
+ * clean identifier "test", "components", "MyApp", "my-app"
35
+ * path with slashes "src/utils", "lib/auth/index"
36
+ * name with extension "README.md", "App.tsx", "config.json"
37
+ * dotfile ".gitignore", ".env"
38
+ *
39
+ * Rejects:
40
+ * empty string, strings with spaces, strings that are pure prose
41
+ */
42
+ function looksLikePath(s) {
43
+ if (!s || s.length === 0)
44
+ return false;
45
+ if (s.includes(" "))
46
+ return false;
47
+ if (/\.[a-zA-Z0-9]{1,10}$/.test(s))
48
+ return true; // has extension
49
+ if (s.includes("/") || s.includes("\\"))
50
+ return true; // path separator
51
+ if (/^[a-zA-Z0-9_\-.]+$/.test(s))
52
+ return true; // clean identifier
53
+ return false;
54
+ }
55
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
56
+ /** Collapse internal whitespace and trim. */
57
+ function collapseSpaces(s) {
58
+ return s.replace(/\s+/g, " ").trim();
59
+ }
60
+ /**
61
+ * Class 1 — Strip a single leading polite softener.
62
+ *
63
+ * Only the leading prefix is removed, never words mid-sentence.
64
+ * Supported prefixes: please, can you, could you, i need [to], i want to.
65
+ *
66
+ * Examples:
67
+ * "please create folder utils" → "create folder utils"
68
+ * "can you create a folder called utils" → "create a folder called utils"
69
+ * "i need a folder called auth" → "a folder called auth"
70
+ * "i want to rename old.ts to new.ts" → "rename old.ts to new.ts"
71
+ * "i need to delete src/old.ts" → "delete src/old.ts"
72
+ */
73
+ const POLITE_PREFIX = /^(?:please\s+|can\s+you\s+|could\s+you\s+|i\s+need\s+(?:to\s+)?|i\s+want\s+to\s+)/i;
74
+ function stripLeadingPrefix(s) {
75
+ return s.replace(POLITE_PREFIX, "").trimStart();
76
+ }
77
+ /**
78
+ * Extract the content of the first quoted segment (double, single, backtick).
79
+ * Allows quoted paths that contain spaces.
80
+ */
81
+ function extractQuoted(input) {
82
+ const dq = /"([^"]+)"/.exec(input);
83
+ if (dq?.[1])
84
+ return dq[1].trim();
85
+ const sq = /'([^']+)'/.exec(input);
86
+ if (sq?.[1])
87
+ return sq[1].trim();
88
+ const bq = /`([^`]+)`/.exec(input);
89
+ if (bq?.[1])
90
+ return bq[1].trim();
91
+ return null;
92
+ }
93
+ /**
94
+ * Clean a raw capture-group value and apply looksLikePath.
95
+ *
96
+ * Order:
97
+ * 1. Try quoted extraction (allows space-containing paths)
98
+ * 2. Strip NL filler prefixes (called/named/as)
99
+ * 3. Apply looksLikePath gate — rejects multi-word prose, pure nouns, etc.
100
+ */
101
+ function cleanPath(raw) {
102
+ if (!raw)
103
+ return null;
104
+ const trimmed = raw.trim();
105
+ if (!trimmed)
106
+ return null;
107
+ // Quoted paths bypass the looksLikePath check (user explicitly delimited them)
108
+ const quoted = extractQuoted(trimmed);
109
+ if (quoted && quoted.length > 0)
110
+ return quoted;
111
+ // Strip common filler prefixes before validating
112
+ const stripped = trimmed
113
+ .replace(/^(?:called|named|as)\s+/i, "")
114
+ .replace(/[.?!]+$/, "")
115
+ .trim();
116
+ if (!stripped)
117
+ return null;
118
+ return looksLikePath(stripped) ? stripped : null;
119
+ }
120
+ // ─── matchCreateDir ───────────────────────────────────────────────────────────
121
+ // Forward: verb + [a] + dir-keyword + [called/named] + name
122
+ // Covers: "create folder test", "initialize directory src/utils", "scaffold folder components"
123
+ const CREATE_DIR_FORWARD = [
124
+ /^(?:create|make|add|new|init|initialize|scaffold|generate|setup)\s+(?:a\s+)?(?:folder|directory|dir)\s+(?:(?:called|named)\s+)?(?<p>.+)$/i,
125
+ // "a new" adjective form — "called/named" is REQUIRED after the keyword to prevent
126
+ // "initialize a new folder structure" from matching with path="structure"
127
+ /^(?:create|make|add|init|initialize|scaffold|generate|setup)\s+a\s+new\s+(?:folder|directory|dir)\s+(?:called|named)\s+(?<p>.+)$/i,
128
+ // "set up" and "spin up" contain a space — listed separately to avoid regex complexity
129
+ /^(?:set\s+up|spin\s+up)\s+(?:a\s+)?(?:folder|directory|dir)\s+(?:(?:called|named)\s+)?(?<p>.+)$/i,
130
+ // No-verb form — produced by polite-prefix stripping ("i need a folder called auth"
131
+ // → "a folder called auth"). "called/named" is REQUIRED; there is no action verb
132
+ // to act as an anchor so we need the strongest possible discriminator.
133
+ /^a[n]?\s+(?:new\s+)?(?:folder|directory|dir)\s+(?:called|named)\s+(?<p>.+)$/i,
134
+ ];
135
+ // Reversed: verb + [a] + name + dir-keyword
136
+ // Covers: "create a test folder", "make a components folder", "add utils directory"
137
+ // Only the most natural-sounding verbs — not "scaffold a foo folder"
138
+ const CREATE_DIR_REVERSED = [
139
+ /^(?:create|make|add)\s+(?:a\s+)?(?<p>.+?)\s+(?:folder|directory|dir)$/i,
140
+ ];
141
+ function matchCreateDir(raw) {
142
+ // 1. CLI-native: mkdir <path> (unguarded — user intentionally typed CLI syntax)
143
+ const mkdirM = /^mkdir\s+(?<p>.+)$/i.exec(raw);
144
+ if (mkdirM?.groups?.p) {
145
+ const p = mkdirM.groups.p.trim();
146
+ return p ? { kind: "create_dir", path: p } : null;
147
+ }
148
+ // 2. Forward: verb + keyword + name (cleanPath applies looksLikePath gate)
149
+ for (const pat of CREATE_DIR_FORWARD) {
150
+ const m = pat.exec(raw);
151
+ if (m?.groups?.p) {
152
+ const path = cleanPath(m.groups.p);
153
+ if (path)
154
+ return { kind: "create_dir", path };
155
+ }
156
+ }
157
+ // 3. Reversed: verb + name + keyword
158
+ // Multi-word captures like "some structure to the" fail looksLikePath ✓
159
+ for (const pat of CREATE_DIR_REVERSED) {
160
+ const m = pat.exec(raw);
161
+ if (m?.groups?.p) {
162
+ const path = cleanPath(m.groups.p);
163
+ if (path)
164
+ return { kind: "create_dir", path };
165
+ }
166
+ }
167
+ return null;
168
+ }
169
+ // ─── matchCreateFile ──────────────────────────────────────────────────────────
170
+ // [a] + [new/empty/blank] adjective slot — "create a new file", "make an empty file called x"
171
+ const CREATE_FILE_FORWARD = [
172
+ /^(?:create|make|add|new|write)\s+(?:a[n]?\s+)?(?:new|empty|blank)?\s*file\s+(?:(?:called|named)\s+)?(?<p>.+)$/i,
173
+ // No-verb form — produced by polite-prefix stripping ("i need a file called X")
174
+ // "called/named" is REQUIRED as the discriminating anchor.
175
+ /^a[n]?\s+(?:new|empty|blank)?\s*file\s+(?:called|named)\s+(?<p>.+)$/i,
176
+ ];
177
+ const CREATE_FILE_REVERSED = [
178
+ /^(?:create|make|add)\s+(?:a\s+)?(?<p>.+?)\s+file$/i,
179
+ ];
180
+ function matchCreateFile(raw) {
181
+ // 1. CLI-native: touch <path> (unguarded)
182
+ const touchM = /^touch\s+(?<p>.+)$/i.exec(raw);
183
+ if (touchM?.groups?.p) {
184
+ const p = touchM.groups.p.trim();
185
+ return p ? { kind: "create_file", path: p } : null;
186
+ }
187
+ // 2. Forward: verb + "file" + name
188
+ for (const pat of CREATE_FILE_FORWARD) {
189
+ const m = pat.exec(raw);
190
+ if (m?.groups?.p) {
191
+ const path = cleanPath(m.groups.p);
192
+ if (path)
193
+ return { kind: "create_file", path };
194
+ }
195
+ }
196
+ // 3. Reversed: verb + name + "file"
197
+ // "create a README.md file" — looksLikePath gate blocks prose captures
198
+ for (const pat of CREATE_FILE_REVERSED) {
199
+ const m = pat.exec(raw);
200
+ if (m?.groups?.p) {
201
+ const path = cleanPath(m.groups.p);
202
+ if (path)
203
+ return { kind: "create_file", path };
204
+ }
205
+ }
206
+ return null;
207
+ }
208
+ // ─── matchRename ──────────────────────────────────────────────────────────────
209
+ function matchRename(raw) {
210
+ // 1. CLI-native: mv <from> <to> (unguarded — expects exactly two tokens)
211
+ const mvM = /^mv\s+(\S+)\s+(\S+)$/i.exec(raw);
212
+ if (mvM?.[1] && mvM?.[2]) {
213
+ return { kind: "rename", from: mvM[1], to: mvM[2] };
214
+ }
215
+ // 1b. Quoted paths — rename "from path" to "to path"
216
+ // Allows space-containing filenames: rename "my file.ts" to "your file.ts"
217
+ // Double-quote form:
218
+ const dqM = /^(?:rename|move)\s+"([^"]+)"\s+to\s+"([^"]+)"$/i.exec(raw);
219
+ if (dqM?.[1] && dqM?.[2]) {
220
+ return { kind: "rename", from: dqM[1].trim(), to: dqM[2].trim() };
221
+ }
222
+ // Single-quote form:
223
+ const sqM = /^(?:rename|move)\s+'([^']+)'\s+to\s+'([^']+)'$/i.exec(raw);
224
+ if (sqM?.[1] && sqM?.[2]) {
225
+ return { kind: "rename", from: sqM[1].trim(), to: sqM[2].trim() };
226
+ }
227
+ // 2. rename/move <path> to <path>
228
+ // Class 2: optional "the file|folder|directory" article noise before the source path
229
+ // "rename the file old.ts to new.ts" → from="old.ts", to="new.ts"
230
+ const m = /^(?:rename|move)\s+(?:the\s+(?:file|folder|directory)\s+)?(\S+(?:\/\S+)*)\s+to\s+(\S+(?:\/\S+)*)$/i.exec(raw);
231
+ if (m?.[1] && m?.[2]) {
232
+ return { kind: "rename", from: m[1], to: m[2] };
233
+ }
234
+ return null;
235
+ }
236
+ // ─── matchDelete ──────────────────────────────────────────────────────────────
237
+ function matchDelete(raw) {
238
+ // 1. CLI-native: rm <path> (unguarded)
239
+ const rmM = /^rm\s+(?<p>.+)$/i.exec(raw);
240
+ if (rmM?.groups?.p) {
241
+ const p = rmM.groups.p.trim();
242
+ return p ? { kind: "delete", path: p } : null;
243
+ }
244
+ // 2. Class 2: "delete the X folder" / "remove the X file"
245
+ // Article noise before a single-token path and an explicit type keyword.
246
+ // Single-token constraint (`\S+`) prevents multi-word captures; looksLikePath
247
+ // rejects bare prose nouns. "delete the old stuff folder" fails because
248
+ // `\S+` only captures "old" and then `\s+folder$` can't match " stuff folder".
249
+ const articleM = /^(?:delete|remove)\s+the\s+(\S+)\s+(?:file|folder|directory|dir)$/i.exec(raw);
250
+ if (articleM?.[1]) {
251
+ const path = cleanPath(articleM[1]);
252
+ if (path)
253
+ return { kind: "delete", path };
254
+ }
255
+ // 3. Explicit keyword: delete/remove [the] file|folder|directory <name>
256
+ // "delete file src/unused.ts" "remove folder temp" "remove directory build"
257
+ // "remove the file temp.txt" "delete the folder build" (Class 2 — keyword-first)
258
+ // cleanPath gate: "delete folder the old stuff" → looksLikePath fails ✓
259
+ const kwM = /^(?:delete|remove)\s+(?:the\s+)?(?:file|folder|directory|dir)\s+(?<p>.+)$/i.exec(raw);
260
+ if (kwM?.groups?.p) {
261
+ const path = cleanPath(kwM.groups.p);
262
+ if (path)
263
+ return { kind: "delete", path };
264
+ }
265
+ // 4. Bare path: delete/remove <single-token-path>
266
+ // Restricted to tokens with an extension OR path separator.
267
+ // This intentionally rejects bare identifiers like "delete cache" or
268
+ // "delete everything" — single nouns are too ambiguous without a keyword.
269
+ const bareM = /^(?:delete|remove)\s+(\S+)$/i.exec(raw);
270
+ if (bareM?.[1]) {
271
+ const candidate = bareM[1];
272
+ const hasExt = /\.[a-zA-Z0-9]{1,10}$/.test(candidate);
273
+ const hasSep = candidate.includes("/") || candidate.includes("\\");
274
+ if (hasExt || hasSep) {
275
+ return { kind: "delete", path: candidate };
276
+ }
277
+ }
278
+ return null;
279
+ }
280
+ // ─── matchReplace ─────────────────────────────────────────────────────────────
281
+ function matchReplace(raw) {
282
+ // replace "X" with "Y" in file (double quotes)
283
+ const rdq = /^replace\s+"([^"]+)"\s+with\s+"([^"]+)"\s+in\s+(\S+(?:\/\S+)*)$/i.exec(raw);
284
+ if (rdq?.[1] && rdq?.[2] && rdq?.[3]) {
285
+ return { kind: "replace", find: rdq[1], replace: rdq[2], file: rdq[3] };
286
+ }
287
+ // replace 'X' with 'Y' in file (single quotes)
288
+ const rsq = /^replace\s+'([^']+)'\s+with\s+'([^']+)'\s+in\s+(\S+(?:\/\S+)*)$/i.exec(raw);
289
+ if (rsq?.[1] && rsq?.[2] && rsq?.[3]) {
290
+ return { kind: "replace", find: rsq[1], replace: rsq[2], file: rsq[3] };
291
+ }
292
+ // change "X" to "Y" in file (double quotes, natural phrasing)
293
+ const cdq = /^change\s+"([^"]+)"\s+to\s+"([^"]+)"\s+in\s+(\S+(?:\/\S+)*)$/i.exec(raw);
294
+ if (cdq?.[1] && cdq?.[2] && cdq?.[3]) {
295
+ return { kind: "replace", find: cdq[1], replace: cdq[2], file: cdq[3] };
296
+ }
297
+ // change 'X' to 'Y' in file (single quotes)
298
+ const csq = /^change\s+'([^']+)'\s+to\s+'([^']+)'\s+in\s+(\S+(?:\/\S+)*)$/i.exec(raw);
299
+ if (csq?.[1] && csq?.[2] && csq?.[3]) {
300
+ return { kind: "replace", find: csq[1], replace: csq[2], file: csq[3] };
301
+ }
302
+ // Unquoted single-token forms — "change foo to bar in App.tsx"
303
+ // and "replace foo with bar in App.tsx"
304
+ //
305
+ // Safety constraints (both must hold):
306
+ // 1. find and replace are single non-space tokens (\S+) — multi-word values
307
+ // fail to match, e.g. "change old button text to new one in App.tsx" → null
308
+ // 2. file must have a recognised extension OR a path separator — bare words
309
+ // like "production" or "config" are rejected to prevent over-matching prose.
310
+ // This is intentionally stricter than looksLikePath's clean-identifier check.
311
+ const unquotedChange = /^change\s+(\S+)\s+to\s+(\S+)\s+in\s+(\S+)$/i.exec(raw);
312
+ if (unquotedChange?.[1] && unquotedChange?.[2] && unquotedChange?.[3]) {
313
+ const file = unquotedChange[3];
314
+ const hasExt = /\.[a-zA-Z0-9]{1,10}$/.test(file);
315
+ const hasSep = file.includes("/") || file.includes("\\");
316
+ if (hasExt || hasSep) {
317
+ return { kind: "replace", find: unquotedChange[1], replace: unquotedChange[2], file };
318
+ }
319
+ }
320
+ const unquotedReplace = /^replace\s+(\S+)\s+with\s+(\S+)\s+in\s+(\S+)$/i.exec(raw);
321
+ if (unquotedReplace?.[1] && unquotedReplace?.[2] && unquotedReplace?.[3]) {
322
+ const file = unquotedReplace[3];
323
+ const hasExt = /\.[a-zA-Z0-9]{1,10}$/.test(file);
324
+ const hasSep = file.includes("/") || file.includes("\\");
325
+ if (hasExt || hasSep) {
326
+ return { kind: "replace", find: unquotedReplace[1], replace: unquotedReplace[2], file };
327
+ }
328
+ }
329
+ return null;
330
+ }
331
+ // ─── normalizeIntent ──────────────────────────────────────────────────────────
332
+ /**
333
+ * Convert a free-form user string into a structured ParsedIntent.
334
+ *
335
+ * Returns null when:
336
+ * - The input is empty or whitespace
337
+ * - The input is ambiguous or vague (no recognised operation + valid path)
338
+ * - A required field (path, from/to, etc.) cannot be determined safely
339
+ *
340
+ * On null the caller falls through to the strict canonical parser.
341
+ */
342
+ export function normalizeIntent(raw) {
343
+ const collapsed = collapseSpaces(raw);
344
+ if (!collapsed)
345
+ return null;
346
+ // Class 1: strip a single leading polite softener before matching.
347
+ // Only the social wrapper is removed; mid-sentence words are untouched.
348
+ const input = collapseSpaces(stripLeadingPrefix(collapsed));
349
+ if (!input)
350
+ return null;
351
+ // replace/change must be tested first — the verb "replace" is also a
352
+ // file-like create verb in some patterns; checking it first avoids ambiguity.
353
+ return (matchReplace(input) ??
354
+ matchCreateDir(input) ??
355
+ matchCreateFile(input) ??
356
+ matchRename(input) ??
357
+ matchDelete(input) ??
358
+ null);
359
+ }
360
+ // ─── intentToChange ───────────────────────────────────────────────────────────
361
+ /**
362
+ * Convert a ParsedIntent into the canonical ParsedChange used by the execution
363
+ * pipeline (FsChange | ReplaceChange).
364
+ *
365
+ * This is the only bridge between the normalizer and the execution path.
366
+ * No new execution paths are introduced here.
367
+ */
368
+ export function intentToChange(intent) {
369
+ switch (intent.kind) {
370
+ case "create_dir":
371
+ return {
372
+ operationType: "create_dir",
373
+ dirPath: intent.path,
374
+ };
375
+ case "create_file":
376
+ return {
377
+ operationType: "write_file",
378
+ filePath: intent.path,
379
+ content: intent.content ?? "",
380
+ };
381
+ case "rename":
382
+ return {
383
+ operationType: "rename",
384
+ filePath: intent.from,
385
+ newPath: intent.to,
386
+ };
387
+ case "delete":
388
+ return {
389
+ operationType: "delete_file",
390
+ filePath: intent.path,
391
+ };
392
+ case "replace":
393
+ return {
394
+ oldValue: intent.find,
395
+ newValue: intent.replace,
396
+ filePath: intent.file,
397
+ };
398
+ }
399
+ }
400
+ // ─── describeIntent ───────────────────────────────────────────────────────────
401
+ /**
402
+ * Human-readable "SYSTEM WILL:" description for a ParsedIntent.
403
+ * Used in the UI approval frame to surface normalised intent to the user.
404
+ */
405
+ export function describeIntent(intent) {
406
+ switch (intent.kind) {
407
+ case "create_dir": return `Create directory: ./${intent.path}`;
408
+ case "create_file": return `Create file: ./${intent.path}`;
409
+ case "rename": return `Rename path: ${intent.from} → ${intent.to}`;
410
+ case "delete": return `Delete path: ./${intent.path}`;
411
+ case "replace": return `Replace text in: ${intent.file}`;
412
+ }
413
+ }
414
+ //# sourceMappingURL=intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../../src/understand/interpretation/intent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Change Interpretation orchestrator — v1.
3
+ *
4
+ * CONTRACT:
5
+ * Interpretation is ADVISORY. It does not alter the execute/guide/refuse
6
+ * decision produced by the intake pipeline. It describes what the human
7
+ * will experience from the change.
8
+ *
9
+ * Returns null when:
10
+ * - Input cannot be parsed as a structured change command
11
+ * - No rule matches the parsed change (change type is outside v1 scope)
12
+ *
13
+ * v1 scope:
14
+ * - Tailwind / CSS color changes
15
+ * - Text literal changes
16
+ * - Simple config value changes
17
+ *
18
+ * Future scope (not implemented in v1):
19
+ * - Structural code changes
20
+ * - Import / dependency changes
21
+ * - Multi-file changes
22
+ * - Logic / control-flow changes
23
+ */
24
+ import type { InterpretationResult } from "./types.js";
25
+ export declare function interpretChange(input: string): InterpretationResult | null;
26
+ //# sourceMappingURL=interpretation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpretation.d.ts","sourceRoot":"","sources":["../../../../src/understand/interpretation/interpretation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAKvD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAe1E"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Change Interpretation orchestrator — v1.
3
+ *
4
+ * CONTRACT:
5
+ * Interpretation is ADVISORY. It does not alter the execute/guide/refuse
6
+ * decision produced by the intake pipeline. It describes what the human
7
+ * will experience from the change.
8
+ *
9
+ * Returns null when:
10
+ * - Input cannot be parsed as a structured change command
11
+ * - No rule matches the parsed change (change type is outside v1 scope)
12
+ *
13
+ * v1 scope:
14
+ * - Tailwind / CSS color changes
15
+ * - Text literal changes
16
+ * - Simple config value changes
17
+ *
18
+ * Future scope (not implemented in v1):
19
+ * - Structural code changes
20
+ * - Import / dependency changes
21
+ * - Multi-file changes
22
+ * - Logic / control-flow changes
23
+ */
24
+ import { isFsChange } from "./types.js";
25
+ import { parseChange } from "./parser.js";
26
+ import { ALL_INTERPRETATION_RULES } from "./rules.js";
27
+ export function interpretChange(input) {
28
+ const parsed = parseChange(input);
29
+ if (parsed === null)
30
+ return null;
31
+ // FS operations have no interpretation rules — their intent is fully explicit.
32
+ if (isFsChange(parsed))
33
+ return null;
34
+ for (const rule of ALL_INTERPRETATION_RULES) {
35
+ if (rule.matches(parsed)) {
36
+ const result = rule.interpret(parsed);
37
+ if (result !== null)
38
+ return result;
39
+ }
40
+ }
41
+ return null;
42
+ }
43
+ //# sourceMappingURL=interpretation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interpretation.js","sourceRoot":"","sources":["../../../../src/understand/interpretation/interpretation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEjC,+EAA+E;IAC/E,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,wBAAwB,EAAE,CAAC;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Change command parser.
3
+ *
4
+ * Supported formats — text replacement:
5
+ * replace "X" with "Y" in <file>
6
+ * patch <file> search="X" replace="Y"
7
+ *
8
+ * Supported formats — filesystem operations:
9
+ * create (folder|directory) <path>
10
+ * create file <path>
11
+ * rename <path> to <newPath>
12
+ * (delete|remove) (file|folder|directory)? <path>
13
+ *
14
+ * Returns null for any other input shape.
15
+ */
16
+ import type { ParsedChange } from "./types.js";
17
+ export declare function parseChange(input: string): ParsedChange | null;
18
+ /** Extract the filename from a path without importing node:path. */
19
+ export declare function basename(filePath: string): string;
20
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../../src/understand/interpretation/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqC/C,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAyD9D;AAED,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEjD"}