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,390 @@
1
+ /**
2
+ * CursorProductSession — product-layer state machine.
3
+ *
4
+ * ── Purpose ───────────────────────────────────────────────────────────────────
5
+ *
6
+ * Connects the execution engine to real user interaction flows.
7
+ * This is the "who calls the seam, and how does the user see it" layer.
8
+ *
9
+ * The session manages one edit request from user input through to execution
10
+ * outcome. It holds state between steps so the consumer (CLI, UI, plugin)
11
+ * only has to call the right method at the right moment.
12
+ *
13
+ * ── What this is NOT ──────────────────────────────────────────────────────────
14
+ *
15
+ * NOT authority — this layer calls authority; it does not hold it.
16
+ * NOT a scheduler — one session = one edit attempt.
17
+ * NOT a UI — it produces display strings; the caller renders them.
18
+ * NOT a router — intake mode still drives everything; this just surfaces it.
19
+ *
20
+ * ── Baseline truths (locked — see docs/cursor-v1-baseline.md) ────────────────
21
+ *
22
+ * P1 — Terminal states are immutable.
23
+ * Once a session reaches accepted / rejected / exec_error / blocked /
24
+ * not_execute / intake_failed, all further transition calls return the
25
+ * same state object unchanged. A new session must be created for a new
26
+ * edit attempt. Enforced by isTerminal() guard at the top of every
27
+ * public transition function.
28
+ *
29
+ * P2 — Scope clarification is candidate-bounded.
30
+ * answerScope(state, file) rejects any file not present in
31
+ * state.scopeQuestion.candidates. Cursor surfaced exactly those
32
+ * candidates; choosing outside them is silent scope expansion.
33
+ *
34
+ * P3 — Approval is never execution.
35
+ * approve() transitions to "approved", not "accepted".
36
+ * deliver() is a separate explicit act by the product shell.
37
+ * These two steps must never be collapsed into one.
38
+ *
39
+ * P4 — Delivery requires approved.
40
+ * deliver() called from any phase other than "approved" returns
41
+ * "blocked". The gate inside deliverCursorExecution() also
42
+ * independently checks eligibility. Defense-in-depth.
43
+ *
44
+ * P5 — Session carries state but has no independent authority.
45
+ * The session holds the artifact and display fields.
46
+ * Authority lives in: intake (mode), OCD/policy (constraints),
47
+ * H (approval, narrowing), and the delivery gate (eligibility).
48
+ * The session is the carrier and transition guard — nothing more.
49
+ *
50
+ * P6 — All authority lives upstream of the session.
51
+ * intake → sole mode authority
52
+ * OCD → sole policy authority
53
+ * H → sole approval authority
54
+ * gate → sole delivery eligibility authority
55
+ * Session → no authority of its own
56
+ *
57
+ * ── Session lifecycle ─────────────────────────────────────────────────────────
58
+ *
59
+ * idle
60
+ * → submit(input) → "prepared" | "conflict" | "not_execute" | "intake_failed"
61
+ *
62
+ * prepared
63
+ * → approve() → "approved"
64
+ * → reject() → "rejected"
65
+ * → narrow(files) → "prepared" (re-evaluated after narrow)
66
+ *
67
+ * conflict
68
+ * → acceptConflict() → "prepared" (re-evaluated OCD status)
69
+ * → reject() → "rejected"
70
+ *
71
+ * approved
72
+ * → deliver(plugin, storeDir) → "accepted" | "scope_question" | "exec_error" | "blocked"
73
+ *
74
+ * scope_question
75
+ * → answerScope(file) → "approved" (narrowed + re-approved)
76
+ * → reject() → "rejected"
77
+ *
78
+ * Terminal: "accepted" | "rejected" | "not_execute" | "intake_failed" | "blocked"
79
+ *
80
+ * ── Dependency direction ───────────────────────────────────────────────────────
81
+ *
82
+ * Session imports: intake, coordinator, cursor module.
83
+ * Coordinator NEVER imports Session.
84
+ * Delivery gate NEVER imports Session.
85
+ */
86
+ import { runIntakeWithUCP } from "../intake/intake-service.js";
87
+ import { DEFAULT_CONTRACT } from "../interaction/defaults.js";
88
+ import { parseChange } from "../understand/interpretation/parser.js";
89
+ import { prepareCursorExecution, deliverCursorExecution, } from "../execution/cursor/cursor-execution-coordinator.js";
90
+ import { approveArtifact, narrowArtifactScope, } from "../cursor/artifact-mapper.js";
91
+ import { acceptOCDConflict } from "../cursor/ocd-evaluator.js";
92
+ import { isFsChange } from "../understand/interpretation/types.js";
93
+ // ─── Builders (exactOptionalPropertyTypes safe) ───────────────────────────────
94
+ /** Build a SessionDisplay, omitting keys whose value is absent. */
95
+ function mkDisplay(d) {
96
+ return Object.fromEntries(Object.entries(d).filter(([, v]) => v !== undefined));
97
+ }
98
+ /** Build a session state, omitting keys whose value is undefined. */
99
+ function mk(s) {
100
+ return Object.fromEntries(Object.entries(s).filter(([, v]) => v !== undefined));
101
+ }
102
+ // ─── Session factory ──────────────────────────────────────────────────────────
103
+ const INITIAL_STATE = {
104
+ phase: "idle",
105
+ display: { headline: "Ready. Submit an edit command." },
106
+ };
107
+ /**
108
+ * Create a new product session in the idle phase.
109
+ */
110
+ export function createSession() {
111
+ return INITIAL_STATE;
112
+ }
113
+ // ─── Session transitions ──────────────────────────────────────────────────────
114
+ /**
115
+ * Submit user input. Runs intake + prepare. Returns next session state.
116
+ *
117
+ * @param input The raw user text (e.g. "change button color to red").
118
+ * @param policy OCD policy for the workspace.
119
+ */
120
+ export function submit(state, input, policy) {
121
+ // Terminal sessions are immutable — caller must create a new session.
122
+ if (isTerminal(state))
123
+ return state;
124
+ // Run intake
125
+ let ucpResult;
126
+ try {
127
+ ucpResult = runIntakeWithUCP(input, {
128
+ prvContext: { hasPriorSession: false },
129
+ interactionContract: DEFAULT_CONTRACT,
130
+ });
131
+ }
132
+ catch (err) {
133
+ return mk({ phase: "intake_failed", input, display: mkDisplay({ headline: `Intake error: ${String(err)}` }) });
134
+ }
135
+ const { result: intakeResult, ucp } = ucpResult;
136
+ const intentId = ucp.intent.id;
137
+ const responseId = ucp.response.id;
138
+ // Not an execute flow — surface mode for the consumer
139
+ if (intakeResult.mode !== "execute") {
140
+ const modeDisplay = {
141
+ guide: "Not an edit command — guidance available.",
142
+ clarify: "Input is ambiguous — clarification needed.",
143
+ refuse: "Input refused — unsafe or out of scope.",
144
+ ignore: "Input does not require action.",
145
+ };
146
+ return mk({
147
+ phase: "not_execute", input, intentId, responseId,
148
+ display: mkDisplay({ headline: modeDisplay[intakeResult.mode] ?? `Mode: ${intakeResult.mode}` }),
149
+ });
150
+ }
151
+ // Parse change for structured commands — only ReplaceChange goes through this path.
152
+ // FsChange inputs are intercepted by the coordinator before submit() is called.
153
+ const rawPc = parseChange(input) ?? undefined;
154
+ const pc = (rawPc && !isFsChange(rawPc)) ? rawPc : undefined;
155
+ // Prepare
156
+ const prepResult = prepareCursorExecution(intakeResult, intentId, responseId, policy, pc);
157
+ if (prepResult.kind === "not_execute") {
158
+ return mk({ phase: "not_execute", input, intentId, responseId, display: mkDisplay({ headline: prepResult.reason }) });
159
+ }
160
+ const nextPhase = prepResult.kind === "conflict_detected" ? "conflict" : "prepared";
161
+ return mk({
162
+ phase: nextPhase,
163
+ input,
164
+ ...(pc !== undefined ? { parsedChange: pc } : {}),
165
+ intentId,
166
+ responseId,
167
+ preparedAt: Date.now(),
168
+ artifact: prepResult.artifact,
169
+ prepResult,
170
+ presentHints: prepResult.presentHints,
171
+ display: mkDisplay({
172
+ headline: prepResult.display.headline,
173
+ changeSummary: prepResult.display.summary,
174
+ ...(prepResult.display.targetFile ? { targetFiles: [prepResult.display.targetFile] } : {}),
175
+ conflicts: [...prepResult.display.conflicts],
176
+ }),
177
+ });
178
+ }
179
+ /**
180
+ * H approves the prepared artifact. Transitions to "approved".
181
+ * Only valid from "prepared" phase.
182
+ */
183
+ export function approve(state, at = Date.now()) {
184
+ if (isTerminal(state))
185
+ return state;
186
+ if (state.phase !== "prepared" || !state.artifact) {
187
+ return invalidTransition(state, "approve", "prepared");
188
+ }
189
+ const approved = approveArtifact(state.artifact, at);
190
+ return mk({
191
+ ...state,
192
+ phase: "approved",
193
+ artifact: approved,
194
+ display: mkDisplay({ headline: "Approved. Ready to deliver.", changeSummary: state.display.changeSummary }),
195
+ });
196
+ }
197
+ /**
198
+ * H accepts the OCD conflict. Transitions from "conflict" back to "prepared".
199
+ */
200
+ export function acceptConflict(state) {
201
+ if (isTerminal(state))
202
+ return state;
203
+ if (state.phase !== "conflict" || !state.artifact) {
204
+ return invalidTransition(state, "acceptConflict", "conflict");
205
+ }
206
+ const accepted = acceptOCDConflict(state.artifact);
207
+ // prepResult is now stale after conflict acceptance — artifact has moved forward.
208
+ // The display is derived from the updated artifact.
209
+ const { prepResult: _dropped, ...rest } = state;
210
+ void _dropped;
211
+ return mk({
212
+ ...rest,
213
+ phase: "prepared",
214
+ artifact: accepted,
215
+ display: mkDisplay({
216
+ headline: "Conflict accepted. Ready to confirm.",
217
+ changeSummary: state.display.changeSummary,
218
+ targetFiles: state.display.targetFiles,
219
+ conflicts: [],
220
+ }),
221
+ });
222
+ }
223
+ /**
224
+ * H narrows the scope to a subset of the currently allowed files.
225
+ * Monotonic: can only reduce, not expand. Re-evaluates display.
226
+ * Valid from "prepared" or "scope_question".
227
+ */
228
+ export function narrow(state, allowedFiles) {
229
+ if (isTerminal(state))
230
+ return state;
231
+ if ((state.phase !== "prepared" && state.phase !== "scope_question")
232
+ || !state.artifact) {
233
+ return invalidTransition(state, "narrow", "prepared | scope_question");
234
+ }
235
+ const narrowed = narrowArtifactScope(state.artifact, allowedFiles);
236
+ return mk({
237
+ ...state,
238
+ phase: "prepared",
239
+ artifact: narrowed,
240
+ display: mkDisplay({
241
+ headline: "Scope narrowed. Review and approve.",
242
+ changeSummary: state.display.changeSummary,
243
+ targetFiles: [...allowedFiles],
244
+ conflicts: [],
245
+ }),
246
+ });
247
+ }
248
+ /**
249
+ * H answers a scope question by selecting a single candidate file.
250
+ * The session narrows to that file and re-approves automatically.
251
+ * Valid from "scope_question".
252
+ */
253
+ export function answerScope(state, file, at = Date.now()) {
254
+ if (isTerminal(state))
255
+ return state;
256
+ if (state.phase !== "scope_question" || !state.artifact) {
257
+ return invalidTransition(state, "answerScope", "scope_question");
258
+ }
259
+ // S4 — answerScope must only select from the candidates Cursor surfaced.
260
+ // The candidate list is the exact set Cursor found within the approved scope.
261
+ // Choosing outside it would silently expand scope beyond what was reviewed.
262
+ if (state.scopeQuestion && !state.scopeQuestion.candidates.includes(file)) {
263
+ return invalidTransition(state, "answerScope", `scope_question (file must be one of: ${state.scopeQuestion.candidates.join(", ")})`);
264
+ }
265
+ const narrowed = narrowArtifactScope(state.artifact, [file]);
266
+ const approved = approveArtifact(narrowed, at);
267
+ return mk({
268
+ ...state,
269
+ phase: "approved",
270
+ artifact: approved,
271
+ display: mkDisplay({ headline: `Scope set to ${file}. Approved.`, changeSummary: state.display.changeSummary, targetFiles: [file] }),
272
+ });
273
+ }
274
+ /**
275
+ * H rejects. Terminal state.
276
+ */
277
+ export function reject(state) {
278
+ if (isTerminal(state))
279
+ return state;
280
+ return mk({ ...state, phase: "rejected", display: mkDisplay({ headline: "Rejected.", changeSummary: state.display.changeSummary }) });
281
+ }
282
+ /**
283
+ * Deliver the approved artifact through the execution gate.
284
+ * Only valid from "approved" phase. Returns a terminal or "scope_question" state.
285
+ *
286
+ * @param plugin The transport adapter (CursorInProcessAdapter for real edits).
287
+ * @param storeDir Absolute path to UCP store directory.
288
+ * @param deps Optional injectable persistence fns for testing.
289
+ */
290
+ export async function deliver(state, plugin, storeDir, deps) {
291
+ if (isTerminal(state))
292
+ return state;
293
+ if (state.phase !== "approved" || !state.artifact) {
294
+ return invalidTransition(state, "deliver", "approved");
295
+ }
296
+ const result = await deliverCursorExecution(state.artifact, plugin, storeDir, deps);
297
+ switch (result.kind) {
298
+ case "accepted":
299
+ return mk({
300
+ ...state,
301
+ phase: "accepted",
302
+ executionResult: result,
303
+ display: mkDisplay({
304
+ headline: "Edit applied.",
305
+ changeSummary: state.display.changeSummary,
306
+ targetFiles: state.display.targetFiles,
307
+ resultNote: result.display.headline,
308
+ }),
309
+ });
310
+ case "refused_due_to_scope":
311
+ return mk({
312
+ ...state,
313
+ phase: "scope_question",
314
+ scopeQuestion: result.scopeQuestion,
315
+ executionResult: result,
316
+ display: mkDisplay({
317
+ headline: "Cursor needs scope clarification.",
318
+ changeSummary: state.display.changeSummary,
319
+ scopeCandidates: result.scopeQuestion.candidates,
320
+ resultNote: result.scopeQuestion.explanation,
321
+ }),
322
+ });
323
+ case "refused_due_to_execution_error":
324
+ return mk({
325
+ ...state,
326
+ phase: "exec_error",
327
+ executionResult: result,
328
+ display: mkDisplay({ headline: result.display.headline, resultNote: result.detail }),
329
+ });
330
+ case "blocked_ineligible":
331
+ case "blocked_persistence_failure": {
332
+ const note = result.display.note ?? undefined;
333
+ return mk({
334
+ ...state,
335
+ phase: "blocked",
336
+ executionResult: result,
337
+ display: mkDisplay({ headline: result.display.headline, ...(note ? { resultNote: note } : {}) }),
338
+ });
339
+ }
340
+ }
341
+ }
342
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
343
+ /** Returns true if the session is in a terminal phase (no further transitions). */
344
+ export function isTerminal(state) {
345
+ return (state.phase === "accepted" ||
346
+ state.phase === "rejected" ||
347
+ state.phase === "exec_error" ||
348
+ state.phase === "blocked" ||
349
+ state.phase === "not_execute" ||
350
+ state.phase === "intake_failed");
351
+ }
352
+ /**
353
+ * Extract contradiction-visibility args for presentFromInput().
354
+ *
355
+ * Call this after submit() to get the policyHint and parsedChangeHint that
356
+ * enable Phase 5D cross-layer contradiction detection. Pass the result
357
+ * arguments directly to presentFromInput():
358
+ *
359
+ * const { policyHint, parsedChangeHint } = getPresentHints(state);
360
+ * presentFromInput(rawInput, intakeResult, undefined, policyHint, parsedChangeHint);
361
+ *
362
+ * Returns undefined for both hints when the session has no presentHints
363
+ * (e.g. idle, not_execute, intake_failed phases).
364
+ */
365
+ export function getPresentHints(state) {
366
+ if (!state.presentHints) {
367
+ return { policyHint: undefined, parsedChangeHint: undefined };
368
+ }
369
+ const { prohibitedGlobs, parsedChangeFilePath } = state.presentHints;
370
+ return {
371
+ policyHint: { prohibitedGlobs },
372
+ parsedChangeHint: parsedChangeFilePath !== undefined ? { filePath: parsedChangeFilePath } : undefined,
373
+ };
374
+ }
375
+ /** Returns true if the session accepted and applied an edit. */
376
+ export function isAccepted(state) {
377
+ return state.phase === "accepted";
378
+ }
379
+ // ─── Internal ─────────────────────────────────────────────────────────────────
380
+ function invalidTransition(state, method, expected) {
381
+ return mk({
382
+ ...state,
383
+ phase: "blocked",
384
+ display: mkDisplay({
385
+ headline: `Invalid transition: ${method}() called from phase "${state.phase}" (expected: ${expected}).`,
386
+ resultNote: "Session is now blocked. Create a new session to continue.",
387
+ }),
388
+ });
389
+ }
390
+ //# sourceMappingURL=cursor-product-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor-product-session.js","sourceRoot":"","sources":["../../../src/product/cursor-product-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAc,6BAA6B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAc,4BAA4B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAmB,wCAAwC,CAAC;AAClF,OAAO,EACL,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,qDAAqD,CAAC;AAM7D,OAAO,EACL,eAAe,EACf,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAI/D,OAAO,EAAE,UAAU,EAAE,MAAoB,uCAAuC,CAAC;AA2FjF,iFAAiF;AAEjF,mEAAmE;AACnE,SAAS,SAAS,CAAC,CAOlB;IACC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CACnC,CAAC;AACtB,CAAC;AAMD,qEAAqE;AACrE,SAAS,EAAE,CAAC,CAAiB;IAC3B,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAC/B,CAAC;AAC1B,CAAC;AAED,iFAAiF;AAEjF,MAAM,aAAa,GAAuB;IACxC,KAAK,EAAI,MAAM;IACf,OAAO,EAAE,EAAE,QAAQ,EAAE,gCAAgC,EAAE;CACxD,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CACpB,KAA0B,EAC1B,KAAc,EACd,MAAuB;IAEvB,sEAAsE;IACtE,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpC,aAAa;IACb,IAAI,SAAS,CAAC;IACd,IAAI,CAAC;QACH,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE;YAClC,UAAU,EAAW,EAAE,eAAe,EAAE,KAAK,EAAE;YAC/C,mBAAmB,EAAE,gBAAgB;SACtC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,iBAAiB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC;IAChD,MAAM,QAAQ,GAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;IACjC,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEnC,sDAAsD;IACtD,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,WAAW,GAA2B;YAC1C,KAAK,EAAI,2CAA2C;YACpD,OAAO,EAAE,4CAA4C;YACrD,MAAM,EAAG,yCAAyC;YAClD,MAAM,EAAG,gCAAgC;SAC1C,CAAC;QACF,OAAO,EAAE,CAAC;YACR,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU;YACjD,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,SAAS,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;SACjG,CAAC,CAAC;IACL,CAAC;IAED,oFAAoF;IACpF,gFAAgF;IAChF,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;IAC9C,MAAM,EAAE,GAA8B,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAExF,UAAU;IACV,MAAM,UAAU,GAAG,sBAAsB,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAE1F,IAAI,UAAU,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACxH,CAAC;IAED,MAAM,SAAS,GAAiB,UAAU,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAElG,OAAO,EAAE,CAAC;QACR,KAAK,EAAE,SAAS;QAChB,KAAK;QACL,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,QAAQ;QACR,UAAU;QACV,UAAU,EAAI,IAAI,CAAC,GAAG,EAAE;QACxB,QAAQ,EAAM,UAAU,CAAC,QAAQ;QACjC,UAAU;QACV,YAAY,EAAE,UAAU,CAAC,YAAY;QACrC,OAAO,EAAO,SAAS,CAAC;YACtB,QAAQ,EAAO,UAAU,CAAC,OAAO,CAAC,QAAQ;YAC1C,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,OAAO;YACzC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1F,SAAS,EAAM,CAAC,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC;SACjD,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CACrB,KAAyB,EACzB,KAAgB,IAAI,CAAC,GAAG,EAAE;IAE1B,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClD,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC;QACR,GAAG,KAAK;QACR,KAAK,EAAK,UAAU;QACpB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,6BAA6B,EAAE,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;KAC7G,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAyB;IACtD,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClD,OAAO,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACnD,kFAAkF;IAClF,oDAAoD;IACpD,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAChD,KAAK,QAAQ,CAAC;IACd,OAAO,EAAE,CAAC;QACR,GAAG,IAAI;QACP,KAAK,EAAK,UAAU;QACpB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAG,SAAS,CAAC;YAClB,QAAQ,EAAO,sCAAsC;YACrD,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa;YAC1C,WAAW,EAAI,KAAK,CAAC,OAAO,CAAC,WAAW;YACxC,SAAS,EAAM,EAAE;SAClB,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CACpB,KAAgC,EAChC,YAA+B;IAE/B,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IACE,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,KAAK,KAAK,gBAAgB,CAAC;WAC7D,CAAC,KAAK,CAAC,QAAQ,EAClB,CAAC;QACD,OAAO,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,2BAA2B,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC;QACR,GAAG,KAAK;QACR,KAAK,EAAK,UAAU;QACpB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAG,SAAS,CAAC;YAClB,QAAQ,EAAO,qCAAqC;YACpD,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa;YAC1C,WAAW,EAAI,CAAC,GAAG,YAAY,CAAC;YAChC,SAAS,EAAM,EAAE;SAClB,CAAC;KACH,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CACzB,KAAyB,EACzB,IAAa,EACb,KAAgB,IAAI,CAAC,GAAG,EAAE;IAE1B,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,KAAK,CAAC,KAAK,KAAK,gBAAgB,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxD,OAAO,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;IACnE,CAAC;IACD,yEAAyE;IACzE,8EAA8E;IAC9E,4EAA4E;IAC5E,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1E,OAAO,iBAAiB,CACtB,KAAK,EACL,aAAa,EACb,wCAAwC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC;QACR,GAAG,KAAK;QACR,KAAK,EAAK,UAAU;QACpB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,gBAAgB,IAAI,aAAa,EAAE,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;KACtI,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,KAAyB;IAC9C,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC;AACxI,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,KAA4B,EAC5B,MAA4B,EAC5B,QAAgB,EAChB,IAAsD;IAEtD,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClD,OAAO,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAEpF,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,EAAE,CAAC;gBACR,GAAG,KAAK;gBACR,KAAK,EAAY,UAAU;gBAC3B,eAAe,EAAE,MAAM;gBACvB,OAAO,EAAU,SAAS,CAAC;oBACzB,QAAQ,EAAO,eAAe;oBAC9B,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa;oBAC1C,WAAW,EAAI,KAAK,CAAC,OAAO,CAAC,WAAW;oBACxC,UAAU,EAAK,MAAM,CAAC,OAAO,CAAC,QAAQ;iBACvC,CAAC;aACH,CAAC,CAAC;QAEL,KAAK,sBAAsB;YACzB,OAAO,EAAE,CAAC;gBACR,GAAG,KAAK;gBACR,KAAK,EAAY,gBAAgB;gBACjC,aAAa,EAAI,MAAM,CAAC,aAAa;gBACrC,eAAe,EAAE,MAAM;gBACvB,OAAO,EAAU,SAAS,CAAC;oBACzB,QAAQ,EAAS,mCAAmC;oBACpD,aAAa,EAAI,KAAK,CAAC,OAAO,CAAC,aAAa;oBAC5C,eAAe,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU;oBAChD,UAAU,EAAO,MAAM,CAAC,aAAa,CAAC,WAAW;iBAClD,CAAC;aACH,CAAC,CAAC;QAEL,KAAK,gCAAgC;YACnC,OAAO,EAAE,CAAC;gBACR,GAAG,KAAK;gBACR,KAAK,EAAY,YAAY;gBAC7B,eAAe,EAAE,MAAM;gBACvB,OAAO,EAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;aAC7F,CAAC,CAAC;QAEL,KAAK,oBAAoB,CAAC;QAC1B,KAAK,6BAA6B,CAAC,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC;YAC9C,OAAO,EAAE,CAAC;gBACR,GAAG,KAAK;gBACR,KAAK,EAAY,SAAS;gBAC1B,eAAe,EAAE,MAAM;gBACvB,OAAO,EAAU,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;aACzG,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,mFAAmF;AACnF,MAAM,UAAU,UAAU,CAAC,KAAyB;IAClD,OAAO,CACL,KAAK,CAAC,KAAK,KAAK,UAAU;QAC1B,KAAK,CAAC,KAAK,KAAK,UAAU;QAC1B,KAAK,CAAC,KAAK,KAAK,YAAY;QAC5B,KAAK,CAAC,KAAK,KAAK,SAAS;QACzB,KAAK,CAAC,KAAK,KAAK,aAAa;QAC7B,KAAK,CAAC,KAAK,KAAK,eAAe,CAChC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,KAAyB;IAIvD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;IAChE,CAAC;IACD,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC;IACrE,OAAO;QACL,UAAU,EAAQ,EAAE,eAAe,EAAE;QACrC,gBAAgB,EAAE,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,SAAS;KACtG,CAAC;AACJ,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,KAAyB;IAClD,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC;AACpC,CAAC;AAED,iFAAiF;AAEjF,SAAS,iBAAiB,CACxB,KAA4B,EAC5B,MAAgB,EAChB,QAAgB;IAEhB,OAAO,EAAE,CAAC;QACR,GAAG,KAAK;QACR,KAAK,EAAI,SAAS;QAClB,OAAO,EAAE,SAAS,CAAC;YACjB,QAAQ,EAAI,uBAAuB,MAAM,yBAAyB,KAAK,CAAC,KAAK,gBAAgB,QAAQ,IAAI;YACzG,UAAU,EAAE,2DAA2D;SACxE,CAAC;KACH,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Product layer — public API.
3
+ *
4
+ * CursorProductSession and ClaudeProductSession are the entry points for
5
+ * connecting the execution engine to user interaction flows (CLI, UI, plugin).
6
+ *
7
+ * Cursor consumer pattern:
8
+ * let session = createSession();
9
+ * session = submit(session, input, policy);
10
+ * session = approve(session);
11
+ * session = await deliver(session, plugin, storeDir);
12
+ *
13
+ * Claude consumer pattern:
14
+ * let session = createClaudeSession();
15
+ * session = submitClaude(session, input, policy, toolPolicy);
16
+ * session = approveClaude(session);
17
+ * session = await deliverClaude(session, plugin, storeDir);
18
+ */
19
+ export type { SessionPhase, CursorSessionState, SessionDisplay, } from "./cursor-product-session.js";
20
+ export { createSession, submit, approve, acceptConflict, narrow, answerScope, reject, deliver, isTerminal, isAccepted, getPresentHints, } from "./cursor-product-session.js";
21
+ export type { CursorPresentHints } from "../execution/cursor/cursor-execution-coordinator.js";
22
+ export type { ClaudeSessionPhase, ClaudeSessionState, ClaudeSessionDisplay, } from "./claude-product-session.js";
23
+ export { createClaudeSession, submitClaude, approveClaude, acceptClaudeConflict, narrowClaude, answerClaudeScope, rejectClaude, deliverClaude, isClaudeTerminal, isClaudeAccepted, } from "./claude-product-session.js";
24
+ export type { CursorSessionSnapshot } from "./session-resilience/index.js";
25
+ export type { SessionStaleness } from "./session-resilience/index.js";
26
+ export type { SessionSummary } from "./session-resilience/index.js";
27
+ export { serializeSession, restoreSession, evaluateSessionStaleness, summarizeSession, } from "./session-resilience/index.js";
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/product/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,cAAc,GACf,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,aAAa,EACb,MAAM,EACN,OAAO,EACP,cAAc,EACd,MAAM,EACN,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,eAAe,GAChB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,kBAAkB,EAAE,MAAM,qDAAqD,CAAC;AAI9F,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAIrC,YAAY,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,MAAW,+BAA+B,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,MAAa,+BAA+B,CAAC;AAE3E,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Product layer — public API.
3
+ *
4
+ * CursorProductSession and ClaudeProductSession are the entry points for
5
+ * connecting the execution engine to user interaction flows (CLI, UI, plugin).
6
+ *
7
+ * Cursor consumer pattern:
8
+ * let session = createSession();
9
+ * session = submit(session, input, policy);
10
+ * session = approve(session);
11
+ * session = await deliver(session, plugin, storeDir);
12
+ *
13
+ * Claude consumer pattern:
14
+ * let session = createClaudeSession();
15
+ * session = submitClaude(session, input, policy, toolPolicy);
16
+ * session = approveClaude(session);
17
+ * session = await deliverClaude(session, plugin, storeDir);
18
+ */
19
+ export { createSession, submit, approve, acceptConflict, narrow, answerScope, reject, deliver, isTerminal, isAccepted, getPresentHints, } from "./cursor-product-session.js";
20
+ export { createClaudeSession, submitClaude, approveClaude, acceptClaudeConflict, narrowClaude, answerClaudeScope, rejectClaude, deliverClaude, isClaudeTerminal, isClaudeAccepted, } from "./claude-product-session.js";
21
+ export { serializeSession, restoreSession, evaluateSessionStaleness, summarizeSession, } from "./session-resilience/index.js";
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/product/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,OAAO,EACL,aAAa,EACb,MAAM,EACN,OAAO,EACP,cAAc,EACd,MAAM,EACN,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,UAAU,EACV,eAAe,GAChB,MAAM,6BAA6B,CAAC;AAarC,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAQrC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Session Resilience — Phase 6C public API.
3
+ *
4
+ * Exports snapshot/restore, staleness annotation, and terminal session summary.
5
+ *
6
+ * Authority model (unchanged):
7
+ * - serializeSession / restoreSession: persistence only, no re-evaluation
8
+ * - evaluateSessionStaleness: annotation only, no routing authority
9
+ * - summarizeSession: terminal audit only, no authority
10
+ */
11
+ export type { CursorSessionSnapshot } from "./session-snapshot-types.js";
12
+ export { serializeSession, restoreSession } from "./session-serializer.js";
13
+ export type { SessionStaleness } from "./session-staleness.js";
14
+ export { evaluateSessionStaleness } from "./session-staleness.js";
15
+ export type { SessionSummary } from "./session-summary.js";
16
+ export { summarizeSession } from "./session-summary.js";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/product/session-resilience/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,YAAY,EAAE,qBAAqB,EAAE,MAAS,6BAA6B,CAAC;AAG5E,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG3E,YAAY,EAAE,gBAAgB,EAAE,MAAiB,wBAAwB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAc,wBAAwB,CAAC;AAG1E,YAAY,EAAE,cAAc,EAAE,MAAmB,sBAAsB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAsB,sBAAsB,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Session Resilience — Phase 6C public API.
3
+ *
4
+ * Exports snapshot/restore, staleness annotation, and terminal session summary.
5
+ *
6
+ * Authority model (unchanged):
7
+ * - serializeSession / restoreSession: persistence only, no re-evaluation
8
+ * - evaluateSessionStaleness: annotation only, no routing authority
9
+ * - summarizeSession: terminal audit only, no authority
10
+ */
11
+ // Serialization
12
+ export { serializeSession, restoreSession } from "./session-serializer.js";
13
+ export { evaluateSessionStaleness } from "./session-staleness.js";
14
+ export { summarizeSession } from "./session-summary.js";
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/product/session-resilience/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,gBAAgB;AAChB,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAI3E,OAAO,EAAE,wBAAwB,EAAE,MAAc,wBAAwB,CAAC;AAI1E,OAAO,EAAE,gBAAgB,EAAE,MAAsB,sBAAsB,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Session Serializer — Phase 6C.
3
+ *
4
+ * Serialize a CursorSessionState to a snapshot and restore it safely.
5
+ *
6
+ * ── Contract ──────────────────────────────────────────────────────────────────
7
+ *
8
+ * serializeSession(state, now?) → CursorSessionSnapshot
9
+ * Pure function. Deterministic for the same state + now value.
10
+ * now defaults to Date.now() when absent.
11
+ *
12
+ * restoreSession(snapshot: unknown) → CursorSessionState
13
+ * NEVER throws. Any invalid input (wrong type, wrong version, missing
14
+ * fields) returns a safe "blocked" session with an explanatory headline.
15
+ * Does not re-run intake, delivery, or any gate logic.
16
+ * The restored state preserves all authority boundaries.
17
+ *
18
+ * ── Safe fallback policy ─────────────────────────────────────────────────────
19
+ *
20
+ * "blocked" is used as the safe invalid-restore phase because:
21
+ * - It is already a defined terminal phase.
22
+ * - It communicates clearly that no action is possible.
23
+ * - It prevents auto-deliver: a blocked session cannot be delivered.
24
+ * - No new phase is needed (existing safe terminal is sufficient).
25
+ */
26
+ import type { CursorSessionState } from "../cursor-product-session.js";
27
+ import type { CursorSessionSnapshot } from "./session-snapshot-types.js";
28
+ /**
29
+ * Serialize a session state into a versioned snapshot.
30
+ *
31
+ * @param state The session state to capture.
32
+ * @param now Unix timestamp in ms. Defaults to Date.now().
33
+ */
34
+ export declare function serializeSession(state: CursorSessionState, now?: number): CursorSessionSnapshot;
35
+ /**
36
+ * Restore a session state from an unknown value (e.g. parsed JSON).
37
+ *
38
+ * Never throws. Returns a "blocked" fallback state on any validation failure.
39
+ *
40
+ * @param snapshot Any value (typically the output of JSON.parse).
41
+ */
42
+ export declare function restoreSession(snapshot: unknown): CursorSessionState;
43
+ //# sourceMappingURL=session-serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-serializer.d.ts","sourceRoot":"","sources":["../../../../src/product/session-resilience/session-serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAYzE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,kBAAkB,EACzB,GAAG,GAAI,MAAmB,GACzB,qBAAqB,CAEvB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,kBAAkB,CA4BpE"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Session Serializer — Phase 6C.
3
+ *
4
+ * Serialize a CursorSessionState to a snapshot and restore it safely.
5
+ *
6
+ * ── Contract ──────────────────────────────────────────────────────────────────
7
+ *
8
+ * serializeSession(state, now?) → CursorSessionSnapshot
9
+ * Pure function. Deterministic for the same state + now value.
10
+ * now defaults to Date.now() when absent.
11
+ *
12
+ * restoreSession(snapshot: unknown) → CursorSessionState
13
+ * NEVER throws. Any invalid input (wrong type, wrong version, missing
14
+ * fields) returns a safe "blocked" session with an explanatory headline.
15
+ * Does not re-run intake, delivery, or any gate logic.
16
+ * The restored state preserves all authority boundaries.
17
+ *
18
+ * ── Safe fallback policy ─────────────────────────────────────────────────────
19
+ *
20
+ * "blocked" is used as the safe invalid-restore phase because:
21
+ * - It is already a defined terminal phase.
22
+ * - It communicates clearly that no action is possible.
23
+ * - It prevents auto-deliver: a blocked session cannot be delivered.
24
+ * - No new phase is needed (existing safe terminal is sufficient).
25
+ */
26
+ const BLOCKED_RESTORE = {
27
+ phase: "blocked",
28
+ display: {
29
+ headline: "Session could not be restored. The snapshot is invalid or from an incompatible version.",
30
+ resultNote: "Create a new session to continue.",
31
+ },
32
+ };
33
+ // ─── Public API ───────────────────────────────────────────────────────────────
34
+ /**
35
+ * Serialize a session state into a versioned snapshot.
36
+ *
37
+ * @param state The session state to capture.
38
+ * @param now Unix timestamp in ms. Defaults to Date.now().
39
+ */
40
+ export function serializeSession(state, now = Date.now()) {
41
+ return { version: 1, savedAt: now, state };
42
+ }
43
+ /**
44
+ * Restore a session state from an unknown value (e.g. parsed JSON).
45
+ *
46
+ * Never throws. Returns a "blocked" fallback state on any validation failure.
47
+ *
48
+ * @param snapshot Any value (typically the output of JSON.parse).
49
+ */
50
+ export function restoreSession(snapshot) {
51
+ try {
52
+ if (!isPlainObject(snapshot))
53
+ return BLOCKED_RESTORE;
54
+ const snap = snapshot;
55
+ // Version check — must be exactly 1
56
+ if (snap["version"] !== 1)
57
+ return BLOCKED_RESTORE;
58
+ // savedAt must be a number
59
+ if (typeof snap["savedAt"] !== "number")
60
+ return BLOCKED_RESTORE;
61
+ // state must be a plain object with a phase string
62
+ const state = snap["state"];
63
+ if (!isPlainObject(state))
64
+ return BLOCKED_RESTORE;
65
+ const s = state;
66
+ if (typeof s["phase"] !== "string")
67
+ return BLOCKED_RESTORE;
68
+ if (!isPlainObject(s["display"]))
69
+ return BLOCKED_RESTORE;
70
+ // Structural validation passed — cast to CursorSessionState.
71
+ // The session transition guards enforce invariants at runtime;
72
+ // if the state is somehow inconsistent, the next operation will
73
+ // produce a blocked or invalid-transition state safely.
74
+ return state;
75
+ }
76
+ catch {
77
+ return BLOCKED_RESTORE;
78
+ }
79
+ }
80
+ // ─── Internal helpers ─────────────────────────────────────────────────────────
81
+ function isPlainObject(v) {
82
+ return typeof v === "object" && v !== null && !Array.isArray(v);
83
+ }
84
+ //# sourceMappingURL=session-serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-serializer.js","sourceRoot":"","sources":["../../../../src/product/session-resilience/session-serializer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,MAAM,eAAe,GAAuB;IAC1C,KAAK,EAAI,SAAS;IAClB,OAAO,EAAE;QACP,QAAQ,EAAI,yFAAyF;QACrG,UAAU,EAAE,mCAAmC;KAChD;CACF,CAAC;AAEF,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAyB,EACzB,MAAgB,IAAI,CAAC,GAAG,EAAE;IAE1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,QAAiB;IAC9C,IAAI,CAAC;QACH,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;YAAE,OAAO,eAAe,CAAC;QAErD,MAAM,IAAI,GAAG,QAAmC,CAAC;QAEjD,oCAAoC;QACpC,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAAE,OAAO,eAAe,CAAC;QAElD,2BAA2B;QAC3B,IAAI,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,QAAQ;YAAE,OAAO,eAAe,CAAC;QAEhE,mDAAmD;QACnD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,eAAe,CAAC;QAElD,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,IAAI,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,eAAe,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAAE,OAAO,eAAe,CAAC;QAEzD,6DAA6D;QAC7D,+DAA+D;QAC/D,gEAAgE;QAChE,wDAAwD;QACxD,OAAO,KAA2B,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,eAAe,CAAC;IACzB,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAS,aAAa,CAAC,CAAU;IAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC"}