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,488 @@
1
+ /**
2
+ * Phase 9A + 9E + 10C: Product Shell — CLI main loop.
3
+ *
4
+ * ── Purpose ───────────────────────────────────────────────────────────────────
5
+ *
6
+ * A thin readline loop that drives CursorProductSession, ClaudeProductSession,
7
+ * or a WorkflowRun end-to-end from the terminal.
8
+ *
9
+ * This is the only file in the shell layer with I/O. Everything else is pure.
10
+ *
11
+ * ── Usage ─────────────────────────────────────────────────────────────────────
12
+ *
13
+ * npx tsx src/shell/cli/main.ts cursor [workspace-root]
14
+ * npx tsx src/shell/cli/main.ts claude
15
+ * npx tsx src/shell/cli/main.ts workflow [spec.json] [workspace-root]
16
+ * npx tsx src/shell/cli/main.ts history [store-dir]
17
+ *
18
+ * workflow spec.json format:
19
+ * {
20
+ * "name": "My workflow",
21
+ * "tasks": [
22
+ * { "input": "replace X with Y in src/Button.tsx", "label": "Optional label" },
23
+ * { "input": "...", "runtime": "claude" }
24
+ * ],
25
+ * "defaultRuntime": "cursor",
26
+ * "maxRetries": 2
27
+ * }
28
+ * If no spec.json is provided, the CLI prompts H to build a spec interactively.
29
+ *
30
+ * Environment variables (Claude runtime):
31
+ * ANTHROPIC_API_KEY — required for real Claude calls
32
+ * USESTEADY_USE_CLAUDE=true — opt-in to live API; stub otherwise
33
+ *
34
+ * ── Loop contract ─────────────────────────────────────────────────────────────
35
+ *
36
+ * Single-session (cursor / claude):
37
+ * 1. submit() — run intake + prepare
38
+ * 2. render() — print phase header + display + prompt (if any)
39
+ * 3. read answer — y/n for confirm, number for choose
40
+ * 4. advance() — call appropriate session function(s)
41
+ * 5. render() again — print result
42
+ * 6. start new session
43
+ *
44
+ * Workflow (Phase 9E + 11D, WS6 generic loop):
45
+ * 1. createWorkflowRun() → "reviewing" — H reviews the full task list first
46
+ * 2. renderWorkflowFrame() — print phase header + task detail + prompt
47
+ * 3. dispatch on frame.prompt?.kind — confirm or choose, no runtime branching
48
+ * 4. advanceWorkflowOnConfirm (reviewing → startWorkflow / cancelWorkflow)
49
+ * advanceWorkflowOnConfirm / advanceWorkflowOnChoice (task execution)
50
+ * 5. loop until isWorkflowTerminal()
51
+ *
52
+ * "exit" at the input prompt quits the loop.
53
+ *
54
+ * ── What this loop does NOT do ────────────────────────────────────────────────
55
+ *
56
+ * NOT evaluate policy — policy comes from defaults.ts / DEFAULT_WORKFLOW_POLICIES
57
+ * NOT decide approval — reads from user, passes to session / coordinator
58
+ * NOT manage sessions — each command = new session; each workflow run = new run
59
+ */
60
+ import * as readline from "node:readline";
61
+ import * as fs from "node:fs";
62
+ import { isTerminal as isCursorTerminal } from "../../product/cursor-product-session.js";
63
+ import { isClaudeTerminal } from "../../product/claude-product-session.js";
64
+ import { createSession, submit, } from "../../product/cursor-product-session.js";
65
+ import { createClaudeSession, submitClaude, } from "../../product/claude-product-session.js";
66
+ import { CursorInProcessAdapter } from "../../cursor/adapters/inprocess-adapter.js";
67
+ import { ClaudeStubAdapter } from "../../claude/adapters/stub-adapter.js";
68
+ import { ClaudeApiAdapter } from "../../claude/adapters/api-adapter.js";
69
+ import { renderCursorFrame, renderClaudeFrame, renderWorkflowFrame, renderHistoryFrame, advanceCursorOnConfirm, advanceCursorOnChoice, advanceClaudeOnConfirm, advanceClaudeOnChoice, advanceWorkflowOnConfirm, advanceWorkflowOnChoice, DEFAULT_CURSOR_POLICY, DEFAULT_CLAUDE_OCD_POLICY, DEFAULT_CLAUDE_TOOL_POLICY, DEFAULT_STORE_DIR, DEFAULT_WORKFLOW_POLICIES, } from "../index.js";
70
+ import { createWorkflowRun, advanceWorkflow, isWorkflowTerminal, persistWorkflowRun, } from "../../workflow/index.js";
71
+ import { getWorkflowHistories, getWorkflowAuditRecord, } from "../../history/index.js";
72
+ // ─── Readline helpers ─────────────────────────────────────────────────────────
73
+ function createRL() {
74
+ return readline.createInterface({
75
+ input: process.stdin,
76
+ output: process.stdout,
77
+ terminal: true,
78
+ });
79
+ }
80
+ function ask(rl, question) {
81
+ return new Promise(resolve => rl.question(question, resolve));
82
+ }
83
+ // ─── Output helpers ───────────────────────────────────────────────────────────
84
+ function print(lines) {
85
+ for (const line of lines) {
86
+ process.stdout.write(line + "\n");
87
+ }
88
+ }
89
+ function printBanner(runtime) {
90
+ const label = runtime === "cursor" ? "Cursor" :
91
+ runtime === "claude" ? "Claude Managed Agent" :
92
+ runtime === "workflow" ? "Workflow" :
93
+ "History";
94
+ print([
95
+ "",
96
+ " UseSteady V1 — Product Shell",
97
+ ` Runtime: ${label}`,
98
+ runtime === "workflow" ? " Provide a spec.json or build a spec interactively."
99
+ : runtime === "history" ? " Browse workflow audit records, or type 'exit' to quit."
100
+ : " Type an edit command, or 'exit' to quit.",
101
+ "",
102
+ ]);
103
+ }
104
+ // ─── Answer parsing ───────────────────────────────────────────────────────────
105
+ function isYes(answer) {
106
+ return answer.trim().toLowerCase() === "y";
107
+ }
108
+ function parseChoice(answer) {
109
+ return parseInt(answer.trim(), 10);
110
+ }
111
+ // ─── Cursor run loop ──────────────────────────────────────────────────────────
112
+ async function runCursorLoop(rl, workspaceRoot) {
113
+ const plugin = new CursorInProcessAdapter(workspaceRoot);
114
+ const storeDir = DEFAULT_STORE_DIR;
115
+ while (true) {
116
+ const input = await ask(rl, "\n> ");
117
+ if (input.trim().toLowerCase() === "exit")
118
+ break;
119
+ let session = createSession();
120
+ session = submit(session, input, DEFAULT_CURSOR_POLICY);
121
+ while (!isCursorTerminal(session)) {
122
+ const frame = renderCursorFrame(session);
123
+ print(frame.lines);
124
+ if (!frame.prompt)
125
+ break;
126
+ session = await handleCursorPrompt(rl, session, frame.prompt, plugin, storeDir);
127
+ }
128
+ // Print terminal state.
129
+ print(renderCursorFrame(session).lines);
130
+ }
131
+ }
132
+ async function handleCursorPrompt(rl, session, prompt, plugin, storeDir) {
133
+ if (prompt.kind === "confirm") {
134
+ const answer = await ask(rl, ` ${prompt.question} `);
135
+ return advanceCursorOnConfirm(session, isYes(answer), plugin, storeDir);
136
+ }
137
+ if (prompt.kind === "choose") {
138
+ print([` ${prompt.question}`]);
139
+ const answer = await ask(rl, " Enter number: ");
140
+ const n = parseChoice(answer);
141
+ if (isNaN(n))
142
+ return session;
143
+ return advanceCursorOnChoice(session, n, plugin, storeDir);
144
+ }
145
+ return session;
146
+ }
147
+ // ─── Claude run loop ──────────────────────────────────────────────────────────
148
+ function buildClaudePlugin() {
149
+ const useReal = process.env["USESTEADY_USE_CLAUDE"] === "true";
150
+ if (useReal) {
151
+ const apiKey = process.env["ANTHROPIC_API_KEY"] ?? "";
152
+ return new ClaudeApiAdapter({ apiKey });
153
+ }
154
+ // Default to stub for demo/development use without an API key.
155
+ return ClaudeStubAdapter.accepted("cli-demo-session");
156
+ }
157
+ async function runClaudeLoop(rl) {
158
+ const plugin = buildClaudePlugin();
159
+ const storeDir = DEFAULT_STORE_DIR;
160
+ const isStub = process.env["USESTEADY_USE_CLAUDE"] !== "true";
161
+ if (isStub) {
162
+ print([" [stub mode — set USESTEADY_USE_CLAUDE=true and ANTHROPIC_API_KEY for live calls]"]);
163
+ }
164
+ while (true) {
165
+ const input = await ask(rl, "\n> ");
166
+ if (input.trim().toLowerCase() === "exit")
167
+ break;
168
+ let session = createClaudeSession();
169
+ session = submitClaude(session, input, DEFAULT_CLAUDE_OCD_POLICY, DEFAULT_CLAUDE_TOOL_POLICY);
170
+ while (!isClaudeTerminal(session)) {
171
+ const frame = renderClaudeFrame(session);
172
+ print(frame.lines);
173
+ if (!frame.prompt)
174
+ break;
175
+ session = await handleClaudePrompt(rl, session, frame.prompt, plugin, storeDir);
176
+ }
177
+ print(renderClaudeFrame(session).lines);
178
+ }
179
+ }
180
+ async function handleClaudePrompt(rl, session, prompt, plugin, storeDir) {
181
+ if (prompt.kind === "confirm") {
182
+ const answer = await ask(rl, ` ${prompt.question} `);
183
+ return advanceClaudeOnConfirm(session, isYes(answer), plugin, storeDir);
184
+ }
185
+ if (prompt.kind === "choose") {
186
+ print([` ${prompt.question}`]);
187
+ const answer = await ask(rl, " Enter number: ");
188
+ const n = parseChoice(answer);
189
+ if (isNaN(n))
190
+ return session;
191
+ return advanceClaudeOnChoice(session, n, plugin, storeDir);
192
+ }
193
+ return session;
194
+ }
195
+ // ─── Workflow spec loading ────────────────────────────────────────────────────
196
+ /**
197
+ * Load a WorkflowSpec from a JSON file.
198
+ *
199
+ * Validates required fields; throws with a clear message on malformed input.
200
+ * Exported for unit testing (pure function — no readline).
201
+ */
202
+ export function loadWorkflowSpecFromFile(filePath) {
203
+ let raw;
204
+ try {
205
+ raw = JSON.parse(fs.readFileSync(filePath, "utf8"));
206
+ }
207
+ catch {
208
+ throw new Error(`Could not read workflow spec: ${filePath}`);
209
+ }
210
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
211
+ throw new Error("Workflow spec must be a JSON object.");
212
+ }
213
+ const obj = raw;
214
+ if (typeof obj["name"] !== "string" || !obj["name"]) {
215
+ throw new Error('Workflow spec must have a non-empty "name" string.');
216
+ }
217
+ if (!Array.isArray(obj["tasks"]) || obj["tasks"].length === 0) {
218
+ throw new Error('Workflow spec must have a non-empty "tasks" array.');
219
+ }
220
+ const tasks = obj["tasks"].map((t, i) => {
221
+ if (typeof t !== "object" || t === null) {
222
+ throw new Error(`Task ${i + 1} must be an object.`);
223
+ }
224
+ const task = t;
225
+ if (typeof task["input"] !== "string" || !task["input"]) {
226
+ throw new Error(`Task ${i + 1} must have a non-empty "input" string.`);
227
+ }
228
+ const runtime = task["runtime"];
229
+ if (runtime !== undefined && runtime !== "cursor" && runtime !== "claude") {
230
+ throw new Error(`Task ${i + 1} "runtime" must be "cursor" or "claude".`);
231
+ }
232
+ const targetFiles = task["targetFiles"];
233
+ if (targetFiles !== undefined) {
234
+ if (!Array.isArray(targetFiles) || targetFiles.length === 0) {
235
+ throw new Error(`Task ${i + 1} "targetFiles" must be a non-empty array of strings.`);
236
+ }
237
+ for (const f of targetFiles) {
238
+ if (typeof f !== "string" || !f) {
239
+ throw new Error(`Task ${i + 1} "targetFiles" must contain non-empty strings.`);
240
+ }
241
+ }
242
+ }
243
+ return {
244
+ input: task["input"],
245
+ ...(typeof task["label"] === "string" && task["label"] ? { label: task["label"] } : {}),
246
+ ...(runtime ? { runtime: runtime } : {}),
247
+ ...(targetFiles ? { targetFiles: targetFiles } : {}),
248
+ };
249
+ });
250
+ const defaultRuntime = obj["defaultRuntime"];
251
+ if (defaultRuntime !== undefined && defaultRuntime !== "cursor" && defaultRuntime !== "claude") {
252
+ throw new Error('"defaultRuntime" must be "cursor" or "claude".');
253
+ }
254
+ return {
255
+ name: obj["name"],
256
+ tasks,
257
+ ...(defaultRuntime ? { defaultRuntime: defaultRuntime } : {}),
258
+ ...(typeof obj["maxRetries"] === "number" ? { maxRetries: obj["maxRetries"] } : {}),
259
+ };
260
+ }
261
+ /**
262
+ * Interactively build a WorkflowSpec by prompting H for each task.
263
+ *
264
+ * Called when no spec file is provided.
265
+ */
266
+ async function buildWorkflowSpecInteractively(rl) {
267
+ const name = (await ask(rl, " Workflow name: ")).trim() || "Untitled Workflow";
268
+ print([" Enter task inputs one by one. Type 'done' when finished."]);
269
+ const tasks = [];
270
+ let taskNum = 1;
271
+ while (true) {
272
+ const input = (await ask(rl, `\n Task ${taskNum} input (or 'done'): `)).trim();
273
+ if (!input || input.toLowerCase() === "done")
274
+ break;
275
+ const labelRaw = (await ask(rl, ` Task ${taskNum} label (Enter to skip): `)).trim();
276
+ const runtimeRaw = (await ask(rl, ` Task ${taskNum} runtime [cursor/claude, Enter for cursor]: `)).trim().toLowerCase();
277
+ tasks.push({
278
+ input,
279
+ ...(labelRaw ? { label: labelRaw } : {}),
280
+ ...(runtimeRaw === "claude" ? { runtime: "claude" } : {}),
281
+ });
282
+ taskNum++;
283
+ }
284
+ if (tasks.length === 0) {
285
+ tasks.push({ input: "demo: replace bg-blue-500 with bg-red-500 in src/Button.tsx", label: "Demo task" });
286
+ print([" No tasks entered — added one demo task."]);
287
+ }
288
+ return { name, tasks };
289
+ }
290
+ // ─── Workflow run loop ────────────────────────────────────────────────────────
291
+ /**
292
+ * The Phase 9E workflow run loop.
293
+ *
294
+ * Implements the WS6 generic loop exactly:
295
+ * - dispatches on frame.prompt?.kind only
296
+ * - no runtime-specific branching inside the loop body
297
+ * - calls only frozen shell advance functions and the coordinator
298
+ *
299
+ * Runs once per workflow spec. After terminal state, prompts H to run another.
300
+ */
301
+ async function runWorkflowLoop(rl, specPath, workspaceRoot) {
302
+ // Build plugins — the coordinator picks the right one by task runtime (W8).
303
+ const plugins = {
304
+ cursor: new CursorInProcessAdapter(workspaceRoot),
305
+ claude: buildClaudePlugin(),
306
+ };
307
+ const storeDir = DEFAULT_STORE_DIR;
308
+ const isClaudeStub = process.env["USESTEADY_USE_CLAUDE"] !== "true";
309
+ if (isClaudeStub) {
310
+ print([" [Claude stub mode — set USESTEADY_USE_CLAUDE=true and ANTHROPIC_API_KEY for live calls]"]);
311
+ }
312
+ while (true) {
313
+ // Load or build the spec.
314
+ let spec;
315
+ if (specPath) {
316
+ try {
317
+ spec = loadWorkflowSpecFromFile(specPath);
318
+ print([
319
+ ` Loaded spec: "${spec.name}" (${spec.tasks.length} task(s))`,
320
+ ` Workspace: ${workspaceRoot}`,
321
+ ]);
322
+ }
323
+ catch (err) {
324
+ print([` Error: ${String(err)}`]);
325
+ const retry = await ask(rl, " Enter a different spec path (or 'exit'): ");
326
+ if (retry.trim().toLowerCase() === "exit")
327
+ break;
328
+ specPath = retry.trim();
329
+ continue;
330
+ }
331
+ }
332
+ else {
333
+ spec = await buildWorkflowSpecInteractively(rl);
334
+ }
335
+ // ── WS6 generic loop ───────────────────────────────────────────────────
336
+ // Phase 11D: createWorkflowRun now starts in "reviewing".
337
+ // The loop renders the pre-flight task list and waits for H confirmation.
338
+ // advanceWorkflowOnConfirm handles reviewing → startWorkflow / cancelWorkflow.
339
+ let run = createWorkflowRun(spec);
340
+ while (!isWorkflowTerminal(run)) {
341
+ const frame = renderWorkflowFrame(run);
342
+ print(frame.lines);
343
+ if (!frame.prompt) {
344
+ // Transient phase (running, task_approved) — auto-advance without I/O.
345
+ if (run.phase === "running") {
346
+ run = advanceWorkflow(run, DEFAULT_WORKFLOW_POLICIES.cursorPolicy, DEFAULT_WORKFLOW_POLICIES.claudeOCDPolicy, DEFAULT_WORKFLOW_POLICIES.claudeToolPolicy);
347
+ }
348
+ else {
349
+ // task_approved is collapsed by advance functions — should not surface here.
350
+ break;
351
+ }
352
+ continue;
353
+ }
354
+ // Generic dispatch — no runtime branching (WS6).
355
+ if (frame.prompt.kind === "confirm") {
356
+ const answer = await ask(rl, ` ${frame.prompt.question} `);
357
+ if (answer.trim().toLowerCase() === "exit") {
358
+ run = { ...run, phase: "stopped" };
359
+ break;
360
+ }
361
+ run = await advanceWorkflowOnConfirm(run, isYes(answer), plugins, storeDir, DEFAULT_WORKFLOW_POLICIES);
362
+ }
363
+ else if (frame.prompt.kind === "choose") {
364
+ print([` ${frame.prompt.question}`]);
365
+ frame.prompt.choices.forEach((c, i) => print([` ${i + 1}. ${c}`]));
366
+ const answer = await ask(rl, " Enter number: ");
367
+ if (answer.trim().toLowerCase() === "exit") {
368
+ run = { ...run, phase: "stopped" };
369
+ break;
370
+ }
371
+ const n = parseChoice(answer);
372
+ if (isNaN(n))
373
+ continue; // re-prompt on invalid input
374
+ run = await advanceWorkflowOnChoice(run, n, plugins, storeDir, DEFAULT_WORKFLOW_POLICIES);
375
+ }
376
+ }
377
+ // Persist the terminal workflow run as a ucp.workflow_run.v1 envelope.
378
+ // Fire-and-forget: persistence failure must not block terminal rendering.
379
+ persistWorkflowRun(run, storeDir);
380
+ // Print terminal frame.
381
+ print(renderWorkflowFrame(run).lines);
382
+ print([" Tip: run `usesteady history` to review the full audit trail."]);
383
+ // Prompt H to run another workflow or quit.
384
+ const again = await ask(rl, " Run another workflow? (y/n or 'exit'): ");
385
+ if (!isYes(again) || again.trim().toLowerCase() === "exit")
386
+ break;
387
+ // If spec was from a file, offer to re-use or provide a new path.
388
+ if (specPath) {
389
+ const newPath = await ask(rl, ` Spec path (Enter to re-use "${specPath}"): `);
390
+ if (newPath.trim())
391
+ specPath = newPath.trim();
392
+ }
393
+ else {
394
+ specPath = undefined; // re-build interactively
395
+ }
396
+ }
397
+ }
398
+ // ─── History loop (Phase 10C) ─────────────────────────────────────────────────
399
+ /**
400
+ * runHistoryLoop — read-only CLI loop over the workflow history read model.
401
+ *
402
+ * Flow:
403
+ * 1. Load WorkflowHistorySummary[] from storeDir (Tier 1 — cheap).
404
+ * 2. renderHistoryFrame({ kind: "list" }) → print + choose prompt.
405
+ * 3. H selects a run by number.
406
+ * 4. Load WorkflowAuditRecord for the selected run (Tier 2 — deep).
407
+ * 5. renderHistoryFrame({ kind: "detail" }) → print + confirm prompt.
408
+ * 6. H presses Enter → back to list. "exit" → quit.
409
+ *
410
+ * No authority. No writes. storeDir is read-only.
411
+ */
412
+ async function runHistoryLoop(rl, storeDir) {
413
+ while (true) {
414
+ const summaries = getWorkflowHistories(storeDir);
415
+ const listFrame = renderHistoryFrame({ kind: "list", summaries });
416
+ print(listFrame.lines);
417
+ // HR3: empty list has no prompt — exit the loop cleanly.
418
+ if (!listFrame.prompt)
419
+ break;
420
+ // Generic dispatch — no view-kind branching needed (WS6 contract holds here too).
421
+ if (listFrame.prompt.kind !== "choose")
422
+ break;
423
+ const answer = await ask(rl, " Enter number (or 'exit'): ");
424
+ if (answer.trim().toLowerCase() === "exit")
425
+ break;
426
+ const n = parseChoice(answer);
427
+ if (isNaN(n))
428
+ continue;
429
+ const selected = summaries[n - 1];
430
+ if (!selected) {
431
+ print([" Invalid selection."]);
432
+ continue;
433
+ }
434
+ const record = getWorkflowAuditRecord(storeDir, selected.workflowRunId);
435
+ if (!record) {
436
+ print([" Audit record not found."]);
437
+ continue;
438
+ }
439
+ // Show detail — confirm prompt returns to list, exit leaves the loop.
440
+ const detailFrame = renderHistoryFrame({ kind: "detail", record });
441
+ print(detailFrame.lines);
442
+ if (detailFrame.prompt?.kind === "confirm") {
443
+ const back = await ask(rl, ` ${detailFrame.prompt.question} `);
444
+ if (back.trim().toLowerCase() === "exit")
445
+ break;
446
+ // Any other answer → back to list.
447
+ }
448
+ }
449
+ }
450
+ // ─── Entry point ──────────────────────────────────────────────────────────────
451
+ async function main() {
452
+ const args = process.argv.slice(2);
453
+ const runtime = args[0] === "claude" ? "claude"
454
+ : args[0] === "workflow" ? "workflow"
455
+ : args[0] === "history" ? "history"
456
+ : "cursor";
457
+ const rl = createRL();
458
+ printBanner(runtime);
459
+ try {
460
+ if (runtime === "workflow") {
461
+ // args[1] is optional spec.json path; args[2] is optional workspace root.
462
+ const specPath = args[1]?.endsWith(".json") ? args[1] : undefined;
463
+ const root = (args[1]?.endsWith(".json") ? args[2] : args[1]) ?? process.cwd();
464
+ await runWorkflowLoop(rl, specPath, root);
465
+ }
466
+ else if (runtime === "history") {
467
+ // args[1] is optional store dir; defaults to DEFAULT_STORE_DIR.
468
+ const storeDir = args[1] ?? DEFAULT_STORE_DIR;
469
+ await runHistoryLoop(rl, storeDir);
470
+ }
471
+ else if (runtime === "cursor") {
472
+ const root = args[1] ?? process.cwd();
473
+ await runCursorLoop(rl, root);
474
+ }
475
+ else {
476
+ await runClaudeLoop(rl);
477
+ }
478
+ }
479
+ finally {
480
+ rl.close();
481
+ }
482
+ print(["\n Goodbye.\n"]);
483
+ }
484
+ main().catch(err => {
485
+ process.stderr.write(`\nFatal: ${String(err)}\n`);
486
+ process.exit(1);
487
+ });
488
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../../../src/shell/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * usesteady — CLI entry point for the UseSteady V1 product shell.
4
+ *
5
+ * Usage:
6
+ * usesteady ui Start UI at http://localhost:3001
7
+ * usesteady report [--auth|--status] Submit a friction report
8
+ * usesteady run [spec.json] [workspace-root]
9
+ * usesteady history [store-dir]
10
+ * usesteady cursor [workspace-root]
11
+ * usesteady claude
12
+ *
13
+ * This entry point translates the product-facing command shape into the
14
+ * internal main.ts argument convention:
15
+ *
16
+ * usesteady ui → startServer() from server.ts
17
+ * usesteady report → friction-report.ts runReport()
18
+ * usesteady run [spec.json] → main.ts workflow [spec.json]
19
+ * usesteady history → main.ts history
20
+ * usesteady cursor → main.ts cursor
21
+ * usesteady claude → main.ts claude
22
+ *
23
+ * No authority. No new logic. Pure argument translation.
24
+ */
25
+ export {};
26
+ //# sourceMappingURL=use-steady.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-steady.d.ts","sourceRoot":"","sources":["../../../../src/shell/cli/use-steady.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;GAsBG"}
@@ -0,0 +1,117 @@
1
+ #!/usr/bin/env tsx
2
+ /**
3
+ * usesteady — CLI entry point for the UseSteady V1 product shell.
4
+ *
5
+ * Usage:
6
+ * usesteady ui Start UI at http://localhost:3001
7
+ * usesteady report [--auth|--status] Submit a friction report
8
+ * usesteady run [spec.json] [workspace-root]
9
+ * usesteady history [store-dir]
10
+ * usesteady cursor [workspace-root]
11
+ * usesteady claude
12
+ *
13
+ * This entry point translates the product-facing command shape into the
14
+ * internal main.ts argument convention:
15
+ *
16
+ * usesteady ui → startServer() from server.ts
17
+ * usesteady report → friction-report.ts runReport()
18
+ * usesteady run [spec.json] → main.ts workflow [spec.json]
19
+ * usesteady history → main.ts history
20
+ * usesteady cursor → main.ts cursor
21
+ * usesteady claude → main.ts claude
22
+ *
23
+ * No authority. No new logic. Pure argument translation.
24
+ */
25
+ const [, , subcommand, ...rest] = process.argv;
26
+ function usage() {
27
+ process.stdout.write([
28
+ "",
29
+ " UseSteady — Safe Refactor Engine",
30
+ "",
31
+ " Usage:",
32
+ " usesteady ui Start the UI at http://localhost:3001",
33
+ " usesteady report Submit a friction report (earns payout if verified)",
34
+ " usesteady report --auth Re-authenticate with GitHub",
35
+ " usesteady report --status Show friction queue stats",
36
+ " usesteady run [spec.json] [workspace-root] Run a governed workflow",
37
+ " usesteady history [store-dir] Browse workflow history",
38
+ " usesteady cursor [workspace-root] Single Cursor session",
39
+ " usesteady claude Single Claude session",
40
+ " usesteady admin friction list [Shortgigs internal] Review reports",
41
+ "",
42
+ " Safe Refactor Workflow spec format:",
43
+ ' { "name": "...", "tasks": [{ "input": "...", "runtime": "cursor" }] }',
44
+ "",
45
+ ].join("\n"));
46
+ }
47
+ if (!subcommand || subcommand === "--help" || subcommand === "-h") {
48
+ usage();
49
+ process.exit(0);
50
+ }
51
+ if (subcommand === "ui") {
52
+ // Start the Express server which serves both the API and the built React UI.
53
+ const { spawn } = await import("node:child_process");
54
+ const { dirname: d, resolve: r } = await import("node:path");
55
+ const { fileURLToPath, pathToFileURL } = await import("node:url");
56
+ // Compute the server path at runtime so TypeScript doesn't try to resolve it
57
+ // at compile time (server.ts is at the project root, not inside src/).
58
+ // In compiled output: dist/src/shell/cli/use-steady.js → ../../../server.js = dist/server.js
59
+ const serverPath = r(d(fileURLToPath(import.meta.url)), "../../../server.js");
60
+ const serverScript = pathToFileURL(serverPath).pathname.replace(/^\/([A-Za-z]:)/, "$1");
61
+ process.stdout.write("\n UseSteady — Starting UI...\n");
62
+ const child = spawn(process.execPath, [serverScript], {
63
+ stdio: "inherit",
64
+ env: process.env,
65
+ });
66
+ child.on("exit", (code) => process.exit(code ?? 0));
67
+ process.on("SIGINT", () => { child.kill("SIGINT"); });
68
+ process.on("SIGTERM", () => { child.kill("SIGTERM"); });
69
+ }
70
+ else if (subcommand === "report") {
71
+ // Friction report — interactive prompt with GitHub device-flow auth.
72
+ const { runReport } = await import("./friction-report.js");
73
+ await runReport(rest);
74
+ process.exit(0);
75
+ }
76
+ else if (subcommand === "admin") {
77
+ // Admin friction review — Shortgigs LLC internal use only.
78
+ // The implementation lives in the private ops repo.
79
+ // Public installs get a graceful "not available" message.
80
+ const [adminSub, ...adminArgs] = rest;
81
+ if (adminSub === "friction") {
82
+ try {
83
+ // Module lives in the private ops repo, not here.
84
+ // @ts-ignore -- intentionally absent from the public repo
85
+ const { runAdmin } = await import("./friction-admin.js");
86
+ await runAdmin(["friction", ...adminArgs]);
87
+ }
88
+ catch {
89
+ process.stderr.write("\n usesteady admin requires the Shortgigs ops package.\n" +
90
+ " This is an internal tool — not available in the public release.\n\n");
91
+ process.exit(1);
92
+ }
93
+ process.exit(0);
94
+ }
95
+ else {
96
+ process.stderr.write(`\n Unknown admin subcommand: "${adminSub ?? ""}". Try: usesteady admin friction\n\n`);
97
+ process.exit(1);
98
+ }
99
+ }
100
+ else {
101
+ // Translate subcommand to internal main.ts convention.
102
+ const internalArg = subcommand === "run" ? "workflow" :
103
+ subcommand === "history" ? "history" :
104
+ subcommand === "cursor" ? "cursor" :
105
+ subcommand === "claude" ? "claude" :
106
+ null;
107
+ if (internalArg === null) {
108
+ process.stderr.write(`\n Unknown subcommand: "${subcommand}". Run "usesteady --help" for usage.\n\n`);
109
+ process.exit(1);
110
+ }
111
+ // Replace argv so main.ts sees: [node, script, internalArg, ...rest]
112
+ process.argv = [process.argv[0], process.argv[1], internalArg, ...rest];
113
+ // Delegate to main.ts — same process, no fork.
114
+ await import("./main.js");
115
+ }
116
+ export {};
117
+ //# sourceMappingURL=use-steady.js.map