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,114 @@
1
+ /**
2
+ * Claude Stub Adapter — Phase 8B.
3
+ *
4
+ * ── Role ──────────────────────────────────────────────────────────────────────
5
+ *
6
+ * The stub adapter is the first concrete implementation of ClaudeAgentPlugin.
7
+ * It proves that the mechanism-agnostic contract works — the same delivery gate
8
+ * operates identically whether the plugin returns a response immediately (stub)
9
+ * or asynchronously (real Anthropic API client).
10
+ *
11
+ * ── Transport proof ───────────────────────────────────────────────────────────
12
+ *
13
+ * ClaudeStubAdapter proves all three delivery paths:
14
+ * - accepted: stub returns ClaudeAccepted
15
+ * - refused_due_to_scope: stub returns ClaudeRefusedDueToScope
16
+ * - refused_due_to_execution_error: stub returns ClaudeRefusedDueToExecutionError
17
+ *
18
+ * The gate does not change behavior based on which adapter is used.
19
+ *
20
+ * ── Usage ─────────────────────────────────────────────────────────────────────
21
+ *
22
+ * In tests:
23
+ * const plugin = ClaudeStubAdapter.accepted("session-xyz");
24
+ * const gate = new ClaudeDeliveryGate(plugin, storeDir, deps);
25
+ * const result = await gate.deliver(approvedArtifact);
26
+ * expect(result.outcome).toBe("accepted");
27
+ *
28
+ * For a configurable sequence (scope refusal then accept):
29
+ * const plugin = ClaudeStubAdapter.sequence([
30
+ * ClaudeStubAdapter.scopeRefusalResponse({ questionKind: "need_file_path", ... }),
31
+ * ClaudeStubAdapter.acceptedResponse("session-abc"),
32
+ * ]);
33
+ *
34
+ * ── What this is NOT ──────────────────────────────────────────────────────────
35
+ *
36
+ * This is not a fake Anthropic API. It does not execute tasks, read files,
37
+ * or produce real agent outputs. It is purely for proving the delivery gate
38
+ * contract works against all three response kinds.
39
+ *
40
+ * See: src/claude/delivery-gate.ts — ClaudeAgentPlugin interface
41
+ */
42
+ // ─── Stub adapter ─────────────────────────────────────────────────────────────
43
+ /**
44
+ * A configurable in-process ClaudeAgentPlugin.
45
+ *
46
+ * Configured at construction with a fixed response or a sequence of responses.
47
+ * Returns responses immediately (no async delay).
48
+ * Throws if a call is made beyond the configured responses.
49
+ */
50
+ export class ClaudeStubAdapter {
51
+ responses;
52
+ callIndex = 0;
53
+ constructor(responses) {
54
+ if (responses.length === 0) {
55
+ throw new Error("ClaudeStubAdapter: responses must not be empty");
56
+ }
57
+ this.responses = responses;
58
+ }
59
+ async receive(request) {
60
+ const response = this.responses[this.callIndex];
61
+ if (response === undefined) {
62
+ throw new Error(`ClaudeStubAdapter: no response configured for call index ${this.callIndex} ` +
63
+ `(deliveryId=${request.deliveryId})`);
64
+ }
65
+ this.callIndex++;
66
+ return response;
67
+ }
68
+ /** How many times receive() has been called. */
69
+ get callCount() { return this.callIndex; }
70
+ // ─── Factory methods ───────────────────────────────────────────────────────
71
+ /** Adapter that always returns "accepted" with the given sessionId. */
72
+ static accepted(sessionId = "stub-session-id") {
73
+ return new ClaudeStubAdapter([ClaudeStubAdapter.acceptedResponse(sessionId)]);
74
+ }
75
+ /** Adapter that returns a scope refusal with the given question. */
76
+ static refusedScope(question) {
77
+ return new ClaudeStubAdapter([ClaudeStubAdapter.scopeRefusalResponse(question)]);
78
+ }
79
+ /** Adapter that returns an execution error with the given code. */
80
+ static refusedError(code = "stub_error", message = "Stub execution error.") {
81
+ return new ClaudeStubAdapter([ClaudeStubAdapter.executionErrorResponse(code, message)]);
82
+ }
83
+ /** Adapter that simulates a session interruption (A3: non-resumable). */
84
+ static sessionInterrupted() {
85
+ return new ClaudeStubAdapter([
86
+ ClaudeStubAdapter.executionErrorResponse("session_interrupted", "Claude managed session was interrupted. Non-resumable in V1."),
87
+ ]);
88
+ }
89
+ /** Adapter that returns responses in sequence. Throws if exhausted. */
90
+ static sequence(responses) {
91
+ return new ClaudeStubAdapter(responses);
92
+ }
93
+ // ─── Response builders ─────────────────────────────────────────────────────
94
+ static acceptedResponse(sessionId = "stub-session-id") {
95
+ return {
96
+ kind: "accepted",
97
+ sessionId,
98
+ };
99
+ }
100
+ static scopeRefusalResponse(question) {
101
+ return {
102
+ kind: "refused_due_to_scope",
103
+ question,
104
+ };
105
+ }
106
+ static executionErrorResponse(code = "stub_error", message = "Stub execution error.") {
107
+ return {
108
+ kind: "refused_due_to_execution_error",
109
+ code,
110
+ message,
111
+ };
112
+ }
113
+ }
114
+ //# sourceMappingURL=stub-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stub-adapter.js","sourceRoot":"","sources":["../../../../src/claude/adapters/stub-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAYH,iFAAiF;AAEjF;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IACX,SAAS,CAA2B;IAC7C,SAAS,GAAG,CAAC,CAAC;IAEtB,YAAY,SAAmC;QAC7C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA8B;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,4DAA4D,IAAI,CAAC,SAAS,GAAG;gBAC7E,eAAe,OAAO,CAAC,UAAU,GAAG,CACrC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,gDAAgD;IAChD,IAAI,SAAS,KAAa,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAElD,8EAA8E;IAE9E,uEAAuE;IACvE,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,iBAAiB;QAC3C,OAAO,IAAI,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,oEAAoE;IACpE,MAAM,CAAC,YAAY,CAAC,QAA6B;QAC/C,OAAO,IAAI,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,mEAAmE;IACnE,MAAM,CAAC,YAAY,CAAC,IAAI,GAAG,YAAY,EAAE,OAAO,GAAG,uBAAuB;QACxE,OAAO,IAAI,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,kBAAkB;QACvB,OAAO,IAAI,iBAAiB,CAAC;YAC3B,iBAAiB,CAAC,sBAAsB,CACtC,qBAAqB,EACrB,8DAA8D,CAC/D;SACF,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,MAAM,CAAC,QAAQ,CAAC,SAAmC;QACjD,OAAO,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,8EAA8E;IAE9E,MAAM,CAAC,gBAAgB,CAAC,SAAS,GAAG,iBAAiB;QACnD,OAAO;YACL,IAAI,EAAO,UAAU;YACrB,SAAS;SACV,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,QAA6B;QACvD,OAAO;YACL,IAAI,EAAM,sBAAsB;YAChC,QAAQ;SACT,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,sBAAsB,CAC3B,IAAI,GAAM,YAAY,EACtB,OAAO,GAAG,uBAAuB;QAEjC,OAAO;YACL,IAAI,EAAE,gCAAgC;YACtC,IAAI;YACJ,OAAO;SACR,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Claude artifact mapper — Phase 8B.
3
+ *
4
+ * ── Role ──────────────────────────────────────────────────────────────────────
5
+ *
6
+ * Translates an IntakeResult (mode === "execute") into a ClaudeAgentHandoffArtifact
7
+ * with eligibility: "pending_confirmation" and initial scope + tool constraints.
8
+ *
9
+ * This is the ONLY place that produces executionDomain.
10
+ * INVARIANT (A1): executionDomain is derived here from InterpretationResult or
11
+ * IntentInterpretation category. No downstream layer may re-classify it.
12
+ *
13
+ * ── What this mapper does ─────────────────────────────────────────────────────
14
+ *
15
+ * 1. Derives executionDomain from the interpretation category.
16
+ * 2. Builds taskSpec from interpretation summary + parsedChange (if present).
17
+ * 3. Sets initial allowedFiles = [parsedChange.filePath] or [].
18
+ * 4. Sets initial prohibitedPatterns from OCD policy (defensive defaults).
19
+ * 5. Sets allowedTools from the provided tool policy.
20
+ * 6. Sets eligibility = "pending_confirmation".
21
+ * 7. Sets ocdClearance = "clear" (OCD evaluator updates this separately).
22
+ *
23
+ * ── What this mapper does NOT do ──────────────────────────────────────────────
24
+ *
25
+ * - Does not read the filesystem
26
+ * - Does not call the Claude API
27
+ * - Does not set eligibility to "approved_for_agent" (only H does that)
28
+ * - Does not validate H-provided paths (delivery gate's job)
29
+ * - Does not re-classify executionDomain after building (A1)
30
+ *
31
+ * ── CONSTRUCTION RULE: undefined-free payloads ────────────────────────────────
32
+ *
33
+ * All payload objects must be undefined-free per UCP protocol invariant.
34
+ * Optional fields are omitted entirely when absent. Never assigned undefined.
35
+ *
36
+ * See: docs/claude-agent-phase-a-architecture.md
37
+ */
38
+ import type { IntakeResult } from "../intake/types.js";
39
+ import type { ReplaceChange } from "../understand/interpretation/types.js";
40
+ type ParsedChange = ReplaceChange;
41
+ import type { ClaudeAgentHandoffArtifact, ClaudeToolPolicy } from "./types.js";
42
+ /**
43
+ * ClaudeOCDPolicy — the policy inputs for scope constraint building.
44
+ *
45
+ * Mirrors CursorOCDPolicy but applies to the Claude seam.
46
+ */
47
+ export type ClaudeOCDPolicy = {
48
+ /** Globs that are always prohibited regardless of allowedFiles. */
49
+ readonly alwaysProhibitedGlobs: readonly string[];
50
+ /** Globs that are safe to write within. Empty = no positive restriction. */
51
+ readonly writeSafeGlobs: readonly string[];
52
+ };
53
+ /**
54
+ * Build the initial ClaudeAgentHandoffArtifact from an IntakeResult.
55
+ *
56
+ * PRECONDITION: intake.mode === "execute". Caller must verify this.
57
+ *
58
+ * @param intake The completed intake result (mode must be "execute").
59
+ * @param intentId The ucp.intent.v1 envelope id.
60
+ * @param responseId The ucp.response.v1 envelope id.
61
+ * @param policy The OCD policy for scope constraint building.
62
+ * @param toolPolicy The tool policy (allowedTools, networkAccess, filesystemMode).
63
+ * @param parsedChange Optional parsed change from a structured edit command.
64
+ */
65
+ export declare function buildClaudeHandoffArtifact(intake: IntakeResult, intentId: string, responseId: string, policy: ClaudeOCDPolicy, toolPolicy: ClaudeToolPolicy, parsedChange?: ParsedChange): ClaudeAgentHandoffArtifact;
66
+ /**
67
+ * Approve the artifact — transitions eligibility from "pending_confirmation"
68
+ * to "approved_for_agent". Records the approval timestamp.
69
+ *
70
+ * H is the only actor that may call this. Called by the product session on
71
+ * H's explicit approval action.
72
+ */
73
+ export declare function approveClaudeArtifact(artifact: ClaudeAgentHandoffArtifact, at?: number): ClaudeAgentHandoffArtifact;
74
+ /**
75
+ * Narrow the artifact's allowed files to a subset.
76
+ *
77
+ * H may narrow (remove entries) but not widen (add new paths).
78
+ * The gate enforces this at delivery; this function enforces monotonicity
79
+ * structurally by filtering the current allowedFiles.
80
+ *
81
+ * Returns a new artifact with updated allowedFiles and a recomputed id.
82
+ */
83
+ export declare function narrowClaudeArtifactScope(artifact: ClaudeAgentHandoffArtifact, allowedFiles: readonly string[]): ClaudeAgentHandoffArtifact;
84
+ export {};
85
+ //# sourceMappingURL=artifact-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-mapper.d.ts","sourceRoot":"","sources":["../../../src/claude/artifact-mapper.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAA2B,oBAAoB,CAAC;AAC5E,OAAO,KAAK,EAAwB,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEjG,KAAK,YAAY,GAAG,aAAa,CAAC;AAGlC,OAAO,KAAK,EACV,0BAA0B,EAI1B,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAIpB;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IAClD,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,EAAS,SAAS,MAAM,EAAE,CAAC;CACnD,CAAC;AAIF;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAS,YAAY,EAC3B,QAAQ,EAAO,MAAM,EACrB,UAAU,EAAK,MAAM,EACrB,MAAM,EAAS,eAAe,EAC9B,UAAU,EAAK,gBAAgB,EAC/B,YAAY,CAAC,EAAE,YAAY,GAC1B,0BAA0B,CAmC5B;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,0BAA0B,EACpC,EAAE,GAAQ,MAAmB,GAC5B,0BAA0B,CAO5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAM,0BAA0B,EACxC,YAAY,EAAE,SAAS,MAAM,EAAE,GAC9B,0BAA0B,CAW5B"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Claude artifact mapper — Phase 8B.
3
+ *
4
+ * ── Role ──────────────────────────────────────────────────────────────────────
5
+ *
6
+ * Translates an IntakeResult (mode === "execute") into a ClaudeAgentHandoffArtifact
7
+ * with eligibility: "pending_confirmation" and initial scope + tool constraints.
8
+ *
9
+ * This is the ONLY place that produces executionDomain.
10
+ * INVARIANT (A1): executionDomain is derived here from InterpretationResult or
11
+ * IntentInterpretation category. No downstream layer may re-classify it.
12
+ *
13
+ * ── What this mapper does ─────────────────────────────────────────────────────
14
+ *
15
+ * 1. Derives executionDomain from the interpretation category.
16
+ * 2. Builds taskSpec from interpretation summary + parsedChange (if present).
17
+ * 3. Sets initial allowedFiles = [parsedChange.filePath] or [].
18
+ * 4. Sets initial prohibitedPatterns from OCD policy (defensive defaults).
19
+ * 5. Sets allowedTools from the provided tool policy.
20
+ * 6. Sets eligibility = "pending_confirmation".
21
+ * 7. Sets ocdClearance = "clear" (OCD evaluator updates this separately).
22
+ *
23
+ * ── What this mapper does NOT do ──────────────────────────────────────────────
24
+ *
25
+ * - Does not read the filesystem
26
+ * - Does not call the Claude API
27
+ * - Does not set eligibility to "approved_for_agent" (only H does that)
28
+ * - Does not validate H-provided paths (delivery gate's job)
29
+ * - Does not re-classify executionDomain after building (A1)
30
+ *
31
+ * ── CONSTRUCTION RULE: undefined-free payloads ────────────────────────────────
32
+ *
33
+ * All payload objects must be undefined-free per UCP protocol invariant.
34
+ * Optional fields are omitted entirely when absent. Never assigned undefined.
35
+ *
36
+ * See: docs/claude-agent-phase-a-architecture.md
37
+ */
38
+ import { hashObject } from "../ucp/hashes.js";
39
+ // ─── Public API ───────────────────────────────────────────────────────────────
40
+ /**
41
+ * Build the initial ClaudeAgentHandoffArtifact from an IntakeResult.
42
+ *
43
+ * PRECONDITION: intake.mode === "execute". Caller must verify this.
44
+ *
45
+ * @param intake The completed intake result (mode must be "execute").
46
+ * @param intentId The ucp.intent.v1 envelope id.
47
+ * @param responseId The ucp.response.v1 envelope id.
48
+ * @param policy The OCD policy for scope constraint building.
49
+ * @param toolPolicy The tool policy (allowedTools, networkAccess, filesystemMode).
50
+ * @param parsedChange Optional parsed change from a structured edit command.
51
+ */
52
+ export function buildClaudeHandoffArtifact(intake, intentId, responseId, policy, toolPolicy, parsedChange) {
53
+ // Derive executionDomain (A1 — mapper only)
54
+ const executionDomain = deriveExecutionDomain(intake, parsedChange);
55
+ // Build taskSpec
56
+ const taskSpec = buildTaskSpec(intake, parsedChange);
57
+ // Initial allowedFiles: [parsedChange.filePath] when available, else []
58
+ const allowedFiles = parsedChange?.filePath ? [parsedChange.filePath] : [];
59
+ // Prohibited patterns: always-prohibited globs from OCD policy
60
+ const prohibitedPatterns = [...policy.alwaysProhibitedGlobs];
61
+ // Artifact content fields for deterministic id
62
+ const content = {
63
+ mode: "execute",
64
+ executionDomain,
65
+ taskSpec,
66
+ allowedFiles,
67
+ prohibitedPatterns,
68
+ allowedTools: [...toolPolicy.allowedTools],
69
+ toolPolicy: { ...toolPolicy },
70
+ ocdClearance: "clear",
71
+ eligibility: "pending_confirmation",
72
+ intentId,
73
+ responseId,
74
+ };
75
+ const artifactId = hashObject(content);
76
+ return {
77
+ artifactId,
78
+ ...content,
79
+ };
80
+ }
81
+ /**
82
+ * Approve the artifact — transitions eligibility from "pending_confirmation"
83
+ * to "approved_for_agent". Records the approval timestamp.
84
+ *
85
+ * H is the only actor that may call this. Called by the product session on
86
+ * H's explicit approval action.
87
+ */
88
+ export function approveClaudeArtifact(artifact, at = Date.now()) {
89
+ const updated = {
90
+ ...artifact,
91
+ eligibility: "approved_for_agent",
92
+ approvedAt: at,
93
+ };
94
+ return { ...updated, artifactId: hashObject(omitId(updated)) };
95
+ }
96
+ /**
97
+ * Narrow the artifact's allowed files to a subset.
98
+ *
99
+ * H may narrow (remove entries) but not widen (add new paths).
100
+ * The gate enforces this at delivery; this function enforces monotonicity
101
+ * structurally by filtering the current allowedFiles.
102
+ *
103
+ * Returns a new artifact with updated allowedFiles and a recomputed id.
104
+ */
105
+ export function narrowClaudeArtifactScope(artifact, allowedFiles) {
106
+ const updated = {
107
+ ...artifact,
108
+ eligibility: "pending_confirmation",
109
+ allowedFiles: [...allowedFiles],
110
+ approvedAt: undefined,
111
+ };
112
+ // Remove approvedAt (undefined-free: omit the field)
113
+ const { approvedAt: _dropped, ...rest } = updated;
114
+ void _dropped;
115
+ return { ...rest, artifactId: hashObject(omitId(rest)) };
116
+ }
117
+ // ─── Internal ─────────────────────────────────────────────────────────────────
118
+ /**
119
+ * Derive executionDomain from the intake result.
120
+ *
121
+ * A1 INVARIANT: this function is the single derivation point.
122
+ * No downstream layer may re-classify the returned value.
123
+ *
124
+ * Mapping from interpretation category:
125
+ * visual_color, text_change → code_edit
126
+ * config_change → code_edit
127
+ * workflow_operation → ops_task
128
+ * unknown (execute mode) → code_edit (safe default for structured edits)
129
+ *
130
+ * When no interpretation category is available (no bridge, no change interp),
131
+ * defaults to "code_edit" as the conservative choice for mode === "execute".
132
+ */
133
+ function deriveExecutionDomain(intake, parsedChange) {
134
+ // If a structured change was parsed, it's always a code edit
135
+ if (parsedChange)
136
+ return "code_edit";
137
+ // Use change interpretation category when available
138
+ const changeCategory = intake.interpretation?.category;
139
+ if (changeCategory) {
140
+ return mapCategory(changeCategory);
141
+ }
142
+ // Use intent interpretation category when available
143
+ const intentCategory = intake.guidance?.interpretation?.category;
144
+ if (intentCategory) {
145
+ return mapCategory(intentCategory);
146
+ }
147
+ // Default: conservative code_edit for execute mode
148
+ return "code_edit";
149
+ }
150
+ function mapCategory(category) {
151
+ switch (category) {
152
+ case "visual_color":
153
+ case "text_change":
154
+ case "config_change":
155
+ return "code_edit";
156
+ case "workflow_operation":
157
+ return "ops_task";
158
+ default:
159
+ return "code_edit";
160
+ }
161
+ }
162
+ function buildTaskSpec(intake, parsedChange) {
163
+ const interpretation = intake.interpretation;
164
+ const intentInterp = intake.guidance?.interpretation;
165
+ const category = interpretation?.category
166
+ ?? intentInterp?.category
167
+ ?? "unknown";
168
+ const summary = interpretation?.summary
169
+ ?? intentInterp?.summary
170
+ ?? intake.reason;
171
+ if (parsedChange) {
172
+ // Undefined-free: only include parsedChange fields that are present
173
+ const pc = {};
174
+ if (parsedChange.filePath)
175
+ pc.filePath = parsedChange.filePath;
176
+ if (parsedChange.oldValue)
177
+ pc.oldValue = parsedChange.oldValue;
178
+ if (parsedChange.newValue)
179
+ pc.newValue = parsedChange.newValue;
180
+ return { category, summary, parsedChange: pc };
181
+ }
182
+ return { category, summary };
183
+ }
184
+ function omitId(artifact) {
185
+ return artifact;
186
+ }
187
+ //# sourceMappingURL=artifact-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-mapper.js","sourceRoot":"","sources":["../../../src/claude/artifact-mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Claude Delivery Gate — Phase 8B.
3
+ *
4
+ * ── Role ──────────────────────────────────────────────────────────────────────
5
+ *
6
+ * The delivery gate is the ONLY path through which a ClaudeAgentHandoffArtifact
7
+ * reaches Claude Managed Agents. It enforces these invariants before any delivery:
8
+ *
9
+ * 1. Eligibility: artifact.eligibility === "approved_for_agent"
10
+ * 2. Tool policy: toolPolicy.networkAccess === "deny" (V1 lock, A2)
11
+ * 3. Tool policy: toolPolicy.filesystemMode === "scoped_only"
12
+ * 4. Tool policy: allowedTools is non-empty
13
+ * 5. Persistence: ucp.claude_handoff.v1 persisted before Claude is called
14
+ * 6. Immutability: artifact delivered === artifact persisted (same id)
15
+ *
16
+ * After delivery, it persists either ucp.claude_receipt.v1 (accepted) or
17
+ * ucp.claude_refused.v1 (refused) based on Claude's response.
18
+ *
19
+ * ── Three delivery paths ──────────────────────────────────────────────────────
20
+ *
21
+ * Path A (happy): persist handoff → call Claude → accepted → persist receipt
22
+ * Path B (scope): persist handoff → call Claude → refused_due_to_scope
23
+ * → persist refused → surface scope question
24
+ * Path C (error): persist handoff → call Claude → refused_due_to_execution_error
25
+ * → persist refused → rejected
26
+ *
27
+ * Unknown response kinds → treated as refused_due_to_execution_error (fail-closed).
28
+ *
29
+ * ── Plugin contract ───────────────────────────────────────────────────────────
30
+ *
31
+ * ClaudeAgentPlugin.receive() is the only call the gate makes into Claude.
32
+ * The plugin must:
33
+ * - Accept only ClaudeDeliveryRequest
34
+ * - Return only ClaudeDeliveryResponse (one of three kinds)
35
+ * - NOT reach back into the intake pipeline (A4)
36
+ * - NOT call persistEnvelope (the gate owns all persistence)
37
+ *
38
+ * ── Persistence semantics ─────────────────────────────────────────────────────
39
+ *
40
+ * ucp.claude_handoff.v1 — safety-critical (persistStrict): blocks delivery if fails
41
+ * ucp.claude_receipt.v1 — audit-critical (persistBestEffort): logs gap if fails
42
+ * ucp.claude_refused.v1 — audit-critical (persistBestEffort): logs gap if fails
43
+ *
44
+ * ── deliveryId semantics ──────────────────────────────────────────────────────
45
+ *
46
+ * deliveryId is a delivery-attempt identifier, NOT a content identifier.
47
+ * Never use it for provenance chain links — use artifact.artifactId for those.
48
+ *
49
+ * See: docs/claude-agent-phase-a-architecture.md
50
+ */
51
+ import type { UCPEnvelope } from "../ucp/types.js";
52
+ import type { ClaudeAgentHandoffArtifact, ClaudeDeliveryRequest, ClaudeDeliveryResponse, ClaudeScopeQuestion } from "./types.js";
53
+ /**
54
+ * The interface the delivery gate uses to communicate with Claude Managed Agents.
55
+ *
56
+ * This is the mechanism-agnostic seam. Implementations may use:
57
+ * - Direct Anthropic API calls (real Claude adapter)
58
+ * - Stub responses (test adapter)
59
+ *
60
+ * The plugin must NOT:
61
+ * - Re-derive intent from context (A1)
62
+ * - Reach back to the intake pipeline (A4)
63
+ * - Execute outside allowedFiles (gate-enforced upstream)
64
+ * - Use tools not in allowedTools (gate-enforced upstream)
65
+ * - Call persistEnvelope (the gate owns all persistence)
66
+ */
67
+ export interface ClaudeAgentPlugin {
68
+ receive(request: ClaudeDeliveryRequest): Promise<ClaudeDeliveryResponse>;
69
+ }
70
+ export type ClaudeDeliveryGateResult = {
71
+ readonly outcome: "accepted";
72
+ readonly deliveryId: string;
73
+ readonly handoffEnvelopeId: string;
74
+ readonly receiptEnvelopeId: string;
75
+ readonly sessionId: string;
76
+ } | {
77
+ readonly outcome: "refused_due_to_scope";
78
+ readonly deliveryId: string;
79
+ readonly handoffEnvelopeId: string;
80
+ readonly refusedEnvelopeId: string;
81
+ readonly scopeQuestion: ClaudeScopeQuestion;
82
+ } | {
83
+ readonly outcome: "refused_due_to_execution_error";
84
+ readonly deliveryId: string;
85
+ readonly handoffEnvelopeId: string;
86
+ readonly refusedEnvelopeId: string;
87
+ readonly errorCode: string;
88
+ readonly message: string;
89
+ } | {
90
+ readonly outcome: "blocked_ineligible";
91
+ readonly reason: string;
92
+ } | {
93
+ readonly outcome: "blocked_tool_policy";
94
+ readonly reason: string;
95
+ } | {
96
+ readonly outcome: "blocked_persistence_failure";
97
+ readonly reason: string;
98
+ };
99
+ export type ClaudeGateDeps = {
100
+ /**
101
+ * Persistence function for the critical handoff envelope.
102
+ * MUST throw on failure — a failure blocks delivery entirely.
103
+ */
104
+ persistStrict?: (envelope: UCPEnvelope<unknown>) => void;
105
+ /**
106
+ * Persistence function for non-critical envelopes (receipt, refused).
107
+ * Must NOT throw — errors are swallowed.
108
+ */
109
+ persistBestEffort?: (envelope: UCPEnvelope<unknown>) => void;
110
+ };
111
+ export declare class ClaudeDeliveryGate {
112
+ private readonly plugin;
113
+ private readonly storeDir;
114
+ private readonly persistStrict;
115
+ private readonly persistBestEffort;
116
+ constructor(plugin: ClaudeAgentPlugin, storeDir: string, deps?: ClaudeGateDeps);
117
+ /**
118
+ * Deliver a ClaudeAgentHandoffArtifact to Claude Managed Agents.
119
+ *
120
+ * CONTRACT — callers must ensure:
121
+ * - artifact.eligibility === "approved_for_agent" (gate re-checks and blocks if not)
122
+ * - artifact.toolPolicy.networkAccess === "deny" (gate re-checks, A2)
123
+ * - artifact.approvedAt is set (H has confirmed)
124
+ *
125
+ * CONTRACT — this function guarantees:
126
+ * - ucp.claude_handoff.v1 persisted BEFORE Claude is called
127
+ * - If persistence fails, Claude is NOT called (blocked_persistence_failure)
128
+ * - ucp.claude_receipt.v1 persisted when Claude returns "accepted"
129
+ * - ucp.claude_refused.v1 persisted when Claude returns any refusal
130
+ * - Receipt/refusal persistence failures do not block the state transition
131
+ * - Unknown response kinds map to refused_due_to_execution_error (fail-closed)
132
+ */
133
+ deliver(artifact: ClaudeAgentHandoffArtifact): Promise<ClaudeDeliveryGateResult>;
134
+ private tryPersistBestEffort;
135
+ }
136
+ //# sourceMappingURL=delivery-gate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery-gate.d.ts","sourceRoot":"","sources":["../../../src/claude/delivery-gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAA8B,iBAAiB,CAAC;AAQ3E,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACrB,sBAAsB,EAGtB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAIpB;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAC1E;AAID,MAAM,MAAM,wBAAwB,GAChC;IACE,QAAQ,CAAC,OAAO,EAAa,UAAU,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAU,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAW,MAAM,CAAC;CACrC,GACD;IACE,QAAQ,CAAC,OAAO,EAAa,sBAAsB,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAU,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAO,mBAAmB,CAAC;CAClD,GACD;IACE,QAAQ,CAAC,OAAO,EAAa,gCAAgC,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAU,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAG,MAAM,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAW,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAa,MAAM,CAAC;CACrC,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;CAC1B,GACD;IACE,QAAQ,CAAC,OAAO,EAAE,6BAA6B,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAG,MAAM,CAAC;CAC1B,CAAC;AAIN,MAAM,MAAM,cAAc,GAAG;IAC3B;;;OAGG;IACH,aAAa,CAAC,EAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IAC7D;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9D,CAAC;AAIF,qBAAa,kBAAkB;IAK3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+C;IAC7E,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2C;gBAG1D,MAAM,EAAI,iBAAiB,EAC3B,QAAQ,EAAE,MAAM,EACjC,IAAI,GAAE,cAAmB;IAQ3B;;;;;;;;;;;;;;;OAeG;IACG,OAAO,CAAC,QAAQ,EAAE,0BAA0B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAgKtF,OAAO,CAAC,oBAAoB;CAO7B"}