@united-workforce/cli 0.3.0 → 0.5.0

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 (319) hide show
  1. package/README.md +45 -11
  2. package/dist/.build-fingerprint +1 -0
  3. package/dist/__tests__/adapter-json-roundtrip.test.js +17 -7
  4. package/dist/__tests__/adapter-json-roundtrip.test.js.map +1 -1
  5. package/dist/__tests__/agent-resolution-llm-free.test.d.ts +2 -0
  6. package/dist/__tests__/agent-resolution-llm-free.test.d.ts.map +1 -0
  7. package/dist/__tests__/agent-resolution-llm-free.test.js +30 -0
  8. package/dist/__tests__/agent-resolution-llm-free.test.js.map +1 -0
  9. package/dist/__tests__/build-step-entry.test.d.ts +2 -0
  10. package/dist/__tests__/build-step-entry.test.d.ts.map +1 -0
  11. package/dist/__tests__/build-step-entry.test.js +173 -0
  12. package/dist/__tests__/build-step-entry.test.js.map +1 -0
  13. package/dist/__tests__/clear-thread-failed-attempts.test.d.ts +2 -0
  14. package/dist/__tests__/clear-thread-failed-attempts.test.d.ts.map +1 -0
  15. package/dist/__tests__/clear-thread-failed-attempts.test.js +93 -0
  16. package/dist/__tests__/clear-thread-failed-attempts.test.js.map +1 -0
  17. package/dist/__tests__/concurrency.test.d.ts +2 -0
  18. package/dist/__tests__/concurrency.test.d.ts.map +1 -0
  19. package/dist/__tests__/concurrency.test.js +196 -0
  20. package/dist/__tests__/concurrency.test.js.map +1 -0
  21. package/dist/__tests__/config.test.js +26 -302
  22. package/dist/__tests__/config.test.js.map +1 -1
  23. package/dist/__tests__/current-role.test.js +7 -6
  24. package/dist/__tests__/current-role.test.js.map +1 -1
  25. package/dist/__tests__/e2e-mock-agent.test.js +43 -30
  26. package/dist/__tests__/e2e-mock-agent.test.js.map +1 -1
  27. package/dist/__tests__/format-text-default.test.d.ts +2 -0
  28. package/dist/__tests__/format-text-default.test.d.ts.map +1 -0
  29. package/dist/__tests__/format-text-default.test.js +43 -0
  30. package/dist/__tests__/format-text-default.test.js.map +1 -0
  31. package/dist/__tests__/format-text-registry.test.d.ts +2 -0
  32. package/dist/__tests__/format-text-registry.test.d.ts.map +1 -0
  33. package/dist/__tests__/format-text-registry.test.js +158 -0
  34. package/dist/__tests__/format-text-registry.test.js.map +1 -0
  35. package/dist/__tests__/issue-180-workflow-ref-removed.test.d.ts +2 -0
  36. package/dist/__tests__/issue-180-workflow-ref-removed.test.d.ts.map +1 -0
  37. package/dist/__tests__/issue-180-workflow-ref-removed.test.js +40 -0
  38. package/dist/__tests__/issue-180-workflow-ref-removed.test.js.map +1 -0
  39. package/dist/__tests__/log-text-renderer.test.d.ts +2 -0
  40. package/dist/__tests__/log-text-renderer.test.d.ts.map +1 -0
  41. package/dist/__tests__/log-text-renderer.test.js +265 -0
  42. package/dist/__tests__/log-text-renderer.test.js.map +1 -0
  43. package/dist/__tests__/moderator-evaluate.test.js +9 -50
  44. package/dist/__tests__/moderator-evaluate.test.js.map +1 -1
  45. package/dist/__tests__/output-mapper-thread-list-startedat.test.d.ts +2 -0
  46. package/dist/__tests__/output-mapper-thread-list-startedat.test.d.ts.map +1 -0
  47. package/dist/__tests__/output-mapper-thread-list-startedat.test.js +102 -0
  48. package/dist/__tests__/output-mapper-thread-list-startedat.test.js.map +1 -0
  49. package/dist/__tests__/output-mapper-workflow-add.test.d.ts +2 -0
  50. package/dist/__tests__/output-mapper-workflow-add.test.d.ts.map +1 -0
  51. package/dist/__tests__/output-mapper-workflow-add.test.js +22 -0
  52. package/dist/__tests__/output-mapper-workflow-add.test.js.map +1 -0
  53. package/dist/__tests__/pid-recycling.test.d.ts +2 -0
  54. package/dist/__tests__/pid-recycling.test.d.ts.map +1 -0
  55. package/dist/__tests__/pid-recycling.test.js +273 -0
  56. package/dist/__tests__/pid-recycling.test.js.map +1 -0
  57. package/dist/__tests__/prompt.test.js +365 -2
  58. package/dist/__tests__/prompt.test.js.map +1 -1
  59. package/dist/__tests__/resolve-head-hash.test.js +12 -4
  60. package/dist/__tests__/resolve-head-hash.test.js.map +1 -1
  61. package/dist/__tests__/setup-agent-discovery.test.js +21 -30
  62. package/dist/__tests__/setup-agent-discovery.test.js.map +1 -1
  63. package/dist/__tests__/setup-complexity.test.js +2 -168
  64. package/dist/__tests__/setup-complexity.test.js.map +1 -1
  65. package/dist/__tests__/setup-no-llm.test.d.ts +2 -0
  66. package/dist/__tests__/setup-no-llm.test.d.ts.map +1 -0
  67. package/dist/__tests__/setup-no-llm.test.js +52 -0
  68. package/dist/__tests__/setup-no-llm.test.js.map +1 -0
  69. package/dist/__tests__/solve-issue-tea-worktree.test.js +27 -28
  70. package/dist/__tests__/solve-issue-tea-worktree.test.js.map +1 -1
  71. package/dist/__tests__/step-ask.test.d.ts +2 -0
  72. package/dist/__tests__/step-ask.test.d.ts.map +1 -0
  73. package/dist/__tests__/step-ask.test.js +507 -0
  74. package/dist/__tests__/step-ask.test.js.map +1 -0
  75. package/dist/__tests__/step-show-json.test.js +1 -0
  76. package/dist/__tests__/step-show-json.test.js.map +1 -1
  77. package/dist/__tests__/step-timing.test.js +2 -0
  78. package/dist/__tests__/step-timing.test.js.map +1 -1
  79. package/dist/__tests__/store-global-cas.test.js +2 -2
  80. package/dist/__tests__/store-global-cas.test.js.map +1 -1
  81. package/dist/__tests__/store-unified-threads.test.js +28 -26
  82. package/dist/__tests__/store-unified-threads.test.js.map +1 -1
  83. package/dist/__tests__/thread-cancel-status.test.js +25 -19
  84. package/dist/__tests__/thread-cancel-status.test.js.map +1 -1
  85. package/dist/__tests__/thread-cancel-text-renderer.test.d.ts +2 -0
  86. package/dist/__tests__/thread-cancel-text-renderer.test.d.ts.map +1 -0
  87. package/dist/__tests__/thread-cancel-text-renderer.test.js +110 -0
  88. package/dist/__tests__/thread-cancel-text-renderer.test.js.map +1 -0
  89. package/dist/__tests__/thread-list-filters.test.js +354 -17
  90. package/dist/__tests__/thread-list-filters.test.js.map +1 -1
  91. package/dist/__tests__/thread-list-template-ms-date.test.d.ts +2 -0
  92. package/dist/__tests__/thread-list-template-ms-date.test.d.ts.map +1 -0
  93. package/dist/__tests__/thread-list-template-ms-date.test.js +102 -0
  94. package/dist/__tests__/thread-list-template-ms-date.test.js.map +1 -0
  95. package/dist/__tests__/thread-list-workflow-corrupt.test.d.ts +2 -0
  96. package/dist/__tests__/thread-list-workflow-corrupt.test.d.ts.map +1 -0
  97. package/dist/__tests__/thread-list-workflow-corrupt.test.js +157 -0
  98. package/dist/__tests__/thread-list-workflow-corrupt.test.js.map +1 -0
  99. package/dist/__tests__/thread-poke.test.d.ts +2 -0
  100. package/dist/__tests__/thread-poke.test.d.ts.map +1 -0
  101. package/dist/__tests__/thread-poke.test.js +422 -0
  102. package/dist/__tests__/thread-poke.test.js.map +1 -0
  103. package/dist/__tests__/thread-read-xml-tags.test.js +10 -9
  104. package/dist/__tests__/thread-read-xml-tags.test.js.map +1 -1
  105. package/dist/__tests__/thread-resume.test.js +21 -15
  106. package/dist/__tests__/thread-resume.test.js.map +1 -1
  107. package/dist/__tests__/thread-show-status.test.js +17 -28
  108. package/dist/__tests__/thread-show-status.test.js.map +1 -1
  109. package/dist/__tests__/thread-start-cwd-cli.test.js +15 -3
  110. package/dist/__tests__/thread-start-cwd-cli.test.js.map +1 -1
  111. package/dist/__tests__/thread-stop-text-renderer.test.d.ts +2 -0
  112. package/dist/__tests__/thread-stop-text-renderer.test.d.ts.map +1 -0
  113. package/dist/__tests__/thread-stop-text-renderer.test.js +148 -0
  114. package/dist/__tests__/thread-stop-text-renderer.test.js.map +1 -0
  115. package/dist/__tests__/thread-suspend-step.test.js +13 -16
  116. package/dist/__tests__/thread-suspend-step.test.js.map +1 -1
  117. package/dist/__tests__/thread-suspended-display.test.js +10 -22
  118. package/dist/__tests__/thread-suspended-display.test.js.map +1 -1
  119. package/dist/__tests__/thread-test-helpers.d.ts +7 -0
  120. package/dist/__tests__/thread-test-helpers.d.ts.map +1 -1
  121. package/dist/__tests__/thread-test-helpers.js +13 -0
  122. package/dist/__tests__/thread-test-helpers.js.map +1 -1
  123. package/dist/__tests__/thread.test.js +15 -13
  124. package/dist/__tests__/thread.test.js.map +1 -1
  125. package/dist/__tests__/validate-semantic.test.js +105 -23
  126. package/dist/__tests__/validate-semantic.test.js.map +1 -1
  127. package/dist/__tests__/workflow-list-recursive.test.d.ts +2 -0
  128. package/dist/__tests__/workflow-list-recursive.test.d.ts.map +1 -0
  129. package/dist/__tests__/workflow-list-recursive.test.js +286 -0
  130. package/dist/__tests__/workflow-list-recursive.test.js.map +1 -0
  131. package/dist/__tests__/workflow-resolution.test.js +46 -28
  132. package/dist/__tests__/workflow-resolution.test.js.map +1 -1
  133. package/dist/__tests__/workflow-show-resolution.test.d.ts +2 -0
  134. package/dist/__tests__/workflow-show-resolution.test.d.ts.map +1 -0
  135. package/dist/__tests__/workflow-show-resolution.test.js +213 -0
  136. package/dist/__tests__/workflow-show-resolution.test.js.map +1 -0
  137. package/dist/__tests__/workflow-validate.test.d.ts +2 -0
  138. package/dist/__tests__/workflow-validate.test.d.ts.map +1 -0
  139. package/dist/__tests__/workflow-validate.test.js +707 -0
  140. package/dist/__tests__/workflow-validate.test.js.map +1 -0
  141. package/dist/__tests__/write-envelope.test.d.ts +2 -0
  142. package/dist/__tests__/write-envelope.test.d.ts.map +1 -0
  143. package/dist/__tests__/write-envelope.test.js +201 -0
  144. package/dist/__tests__/write-envelope.test.js.map +1 -0
  145. package/dist/background/background.d.ts +22 -1
  146. package/dist/background/background.d.ts.map +1 -1
  147. package/dist/background/background.js +83 -6
  148. package/dist/background/background.js.map +1 -1
  149. package/dist/background/index.d.ts +1 -1
  150. package/dist/background/index.d.ts.map +1 -1
  151. package/dist/background/index.js +1 -1
  152. package/dist/background/index.js.map +1 -1
  153. package/dist/background/types.d.ts +1 -0
  154. package/dist/background/types.d.ts.map +1 -1
  155. package/dist/cli.js +120 -62
  156. package/dist/cli.js.map +1 -1
  157. package/dist/commands/config.d.ts +3 -1
  158. package/dist/commands/config.d.ts.map +1 -1
  159. package/dist/commands/config.js +17 -31
  160. package/dist/commands/config.js.map +1 -1
  161. package/dist/commands/prompt.d.ts.map +1 -1
  162. package/dist/commands/prompt.js +57 -31
  163. package/dist/commands/prompt.js.map +1 -1
  164. package/dist/commands/setup.d.ts +12 -39
  165. package/dist/commands/setup.d.ts.map +1 -1
  166. package/dist/commands/setup.js +72 -303
  167. package/dist/commands/setup.js.map +1 -1
  168. package/dist/commands/step.d.ts +44 -1
  169. package/dist/commands/step.d.ts.map +1 -1
  170. package/dist/commands/step.js +255 -11
  171. package/dist/commands/step.js.map +1 -1
  172. package/dist/commands/thread.d.ts +16 -3
  173. package/dist/commands/thread.d.ts.map +1 -1
  174. package/dist/commands/thread.js +423 -142
  175. package/dist/commands/thread.js.map +1 -1
  176. package/dist/commands/workflow.d.ts +9 -1
  177. package/dist/commands/workflow.d.ts.map +1 -1
  178. package/dist/commands/workflow.js +126 -6
  179. package/dist/commands/workflow.js.map +1 -1
  180. package/dist/concurrency/concurrency.d.ts +34 -0
  181. package/dist/concurrency/concurrency.d.ts.map +1 -0
  182. package/dist/concurrency/concurrency.js +216 -0
  183. package/dist/concurrency/concurrency.js.map +1 -0
  184. package/dist/concurrency/index.d.ts +3 -0
  185. package/dist/concurrency/index.d.ts.map +1 -0
  186. package/dist/concurrency/index.js +2 -0
  187. package/dist/concurrency/index.js.map +1 -0
  188. package/dist/concurrency/types.d.ts +19 -0
  189. package/dist/concurrency/types.d.ts.map +1 -0
  190. package/dist/concurrency/types.js +2 -0
  191. package/dist/concurrency/types.js.map +1 -0
  192. package/dist/format.d.ts +69 -2
  193. package/dist/format.d.ts.map +1 -1
  194. package/dist/format.js +198 -1
  195. package/dist/format.js.map +1 -1
  196. package/dist/moderator/__tests__/evaluate.test.js +31 -17
  197. package/dist/moderator/__tests__/evaluate.test.js.map +1 -1
  198. package/dist/moderator/evaluate.d.ts.map +1 -1
  199. package/dist/moderator/evaluate.js +4 -16
  200. package/dist/moderator/evaluate.js.map +1 -1
  201. package/dist/moderator/index.d.ts +1 -2
  202. package/dist/moderator/index.d.ts.map +1 -1
  203. package/dist/moderator/index.js +0 -1
  204. package/dist/moderator/index.js.map +1 -1
  205. package/dist/moderator/types.d.ts +6 -10
  206. package/dist/moderator/types.d.ts.map +1 -1
  207. package/dist/moderator/types.js +1 -3
  208. package/dist/moderator/types.js.map +1 -1
  209. package/dist/output-mappers.d.ts +122 -0
  210. package/dist/output-mappers.d.ts.map +1 -0
  211. package/dist/output-mappers.js +134 -0
  212. package/dist/output-mappers.js.map +1 -0
  213. package/dist/schemas.d.ts +6 -1
  214. package/dist/schemas.d.ts.map +1 -1
  215. package/dist/schemas.js +34 -5
  216. package/dist/schemas.js.map +1 -1
  217. package/dist/store.d.ts +28 -9
  218. package/dist/store.d.ts.map +1 -1
  219. package/dist/store.js +75 -16
  220. package/dist/store.js.map +1 -1
  221. package/dist/text-renderers.d.ts +30 -0
  222. package/dist/text-renderers.d.ts.map +1 -0
  223. package/dist/text-renderers.js +251 -0
  224. package/dist/text-renderers.js.map +1 -0
  225. package/dist/validate-semantic.d.ts.map +1 -1
  226. package/dist/validate-semantic.js +95 -61
  227. package/dist/validate-semantic.js.map +1 -1
  228. package/dist/validate.d.ts +6 -0
  229. package/dist/validate.d.ts.map +1 -1
  230. package/dist/validate.js +24 -0
  231. package/dist/validate.js.map +1 -1
  232. package/examples/brainstorm.yaml +130 -0
  233. package/examples/debate.yaml +169 -0
  234. package/examples/socratic-questioning.yaml +112 -0
  235. package/package.json +9 -10
  236. package/src/__tests__/adapter-json-roundtrip.test.ts +16 -7
  237. package/src/__tests__/agent-resolution-llm-free.test.ts +39 -0
  238. package/src/__tests__/build-step-entry.test.ts +203 -0
  239. package/src/__tests__/clear-thread-failed-attempts.test.ts +122 -0
  240. package/src/__tests__/concurrency.test.ts +266 -0
  241. package/src/__tests__/config.test.ts +33 -321
  242. package/src/__tests__/current-role.test.ts +7 -6
  243. package/src/__tests__/e2e-mock-agent.test.ts +65 -30
  244. package/src/__tests__/fixtures/e2e-count.workflow.yaml +1 -0
  245. package/src/__tests__/fixtures/e2e-linear.workflow.yaml +1 -0
  246. package/src/__tests__/fixtures/{e2e-mustache.workflow.yaml → e2e-liquid.workflow.yaml} +3 -2
  247. package/src/__tests__/fixtures/e2e-loop.workflow.yaml +1 -0
  248. package/src/__tests__/fixtures/e2e-suspend.mock.yaml +2 -2
  249. package/src/__tests__/fixtures/e2e-suspend.workflow.yaml +6 -10
  250. package/src/__tests__/format-text-default.test.ts +49 -0
  251. package/src/__tests__/format-text-registry.test.ts +173 -0
  252. package/src/__tests__/issue-180-workflow-ref-removed.test.ts +43 -0
  253. package/src/__tests__/log-text-renderer.test.ts +294 -0
  254. package/src/__tests__/moderator-evaluate.test.ts +9 -52
  255. package/src/__tests__/output-mapper-thread-list-startedat.test.ts +124 -0
  256. package/src/__tests__/output-mapper-workflow-add.test.ts +24 -0
  257. package/src/__tests__/pid-recycling.test.ts +329 -0
  258. package/src/__tests__/prompt.test.ts +443 -2
  259. package/src/__tests__/resolve-head-hash.test.ts +11 -4
  260. package/src/__tests__/setup-agent-discovery.test.ts +26 -51
  261. package/src/__tests__/setup-complexity.test.ts +1 -203
  262. package/src/__tests__/setup-no-llm.test.ts +68 -0
  263. package/src/__tests__/solve-issue-tea-worktree.test.ts +27 -31
  264. package/src/__tests__/step-ask.test.ts +677 -0
  265. package/src/__tests__/step-show-json.test.ts +1 -0
  266. package/src/__tests__/step-timing.test.ts +2 -0
  267. package/src/__tests__/store-global-cas.test.ts +2 -2
  268. package/src/__tests__/store-unified-threads.test.ts +30 -27
  269. package/src/__tests__/thread-cancel-status.test.ts +27 -20
  270. package/src/__tests__/thread-cancel-text-renderer.test.ts +125 -0
  271. package/src/__tests__/thread-list-filters.test.ts +443 -17
  272. package/src/__tests__/thread-list-template-ms-date.test.ts +110 -0
  273. package/src/__tests__/thread-list-workflow-corrupt.test.ts +198 -0
  274. package/src/__tests__/thread-poke.test.ts +554 -0
  275. package/src/__tests__/thread-read-xml-tags.test.ts +9 -11
  276. package/src/__tests__/thread-resume.test.ts +20 -15
  277. package/src/__tests__/thread-show-status.test.ts +17 -29
  278. package/src/__tests__/thread-start-cwd-cli.test.ts +15 -3
  279. package/src/__tests__/thread-stop-text-renderer.test.ts +168 -0
  280. package/src/__tests__/thread-suspend-step.test.ts +13 -16
  281. package/src/__tests__/thread-suspended-display.test.ts +10 -22
  282. package/src/__tests__/thread-test-helpers.ts +15 -1
  283. package/src/__tests__/thread.test.ts +14 -14
  284. package/src/__tests__/validate-semantic.test.ts +118 -33
  285. package/src/__tests__/workflow-list-recursive.test.ts +370 -0
  286. package/src/__tests__/workflow-resolution.test.ts +48 -29
  287. package/src/__tests__/workflow-show-resolution.test.ts +286 -0
  288. package/src/__tests__/workflow-validate.test.ts +828 -0
  289. package/src/__tests__/write-envelope.test.ts +257 -0
  290. package/src/background/background.ts +88 -6
  291. package/src/background/index.ts +2 -0
  292. package/src/background/types.ts +1 -0
  293. package/src/cli.ts +184 -77
  294. package/src/commands/config.ts +16 -33
  295. package/src/commands/prompt.ts +57 -31
  296. package/src/commands/setup.ts +80 -358
  297. package/src/commands/step.ts +339 -12
  298. package/src/commands/thread.ts +511 -171
  299. package/src/commands/workflow.ts +155 -4
  300. package/src/concurrency/concurrency.ts +245 -0
  301. package/src/concurrency/index.ts +10 -0
  302. package/src/concurrency/types.ts +19 -0
  303. package/src/format.ts +282 -2
  304. package/src/moderator/__tests__/evaluate.test.ts +34 -17
  305. package/src/moderator/evaluate.ts +5 -17
  306. package/src/moderator/index.ts +1 -6
  307. package/src/moderator/types.ts +6 -14
  308. package/src/output-mappers.ts +254 -0
  309. package/src/schemas.ts +51 -5
  310. package/src/store.ts +86 -20
  311. package/src/text-renderers.ts +355 -0
  312. package/src/validate-semantic.ts +125 -73
  313. package/src/validate.ts +27 -0
  314. package/dist/__tests__/setup-validate.test.d.ts +0 -2
  315. package/dist/__tests__/setup-validate.test.d.ts.map +0 -1
  316. package/dist/__tests__/setup-validate.test.js +0 -108
  317. package/dist/__tests__/setup-validate.test.js.map +0 -1
  318. package/src/__tests__/setup-validate.test.ts +0 -148
  319. /package/src/__tests__/fixtures/{e2e-mustache.mock.yaml → e2e-liquid.mock.yaml} +0 -0
package/dist/schemas.js CHANGED
@@ -1,17 +1,46 @@
1
- import { putSchema } from "@ocas/core";
2
- import { START_NODE_SCHEMA, STEP_NODE_SCHEMA, WORKFLOW_SCHEMA } from "@united-workforce/protocol";
1
+ import { bootstrap, putSchema } from "@ocas/core";
2
+ import { ERROR_OUTPUT_SCHEMA, OUTPUT_SCHEMAS, OUTPUT_TEMPLATES, outputSchemaVarName, START_NODE_SCHEMA, STEP_NODE_SCHEMA, SUSPEND_OUTPUT_SCHEMA, WORKFLOW_SCHEMA, } from "@united-workforce/protocol";
3
3
  export const TEXT_SCHEMA = { type: "string" };
4
4
  /**
5
- * Register Workflow, StartNode, and StepNode JSON Schemas in the CAS store.
5
+ * Register every uwf JSON Schema (workflow / start / step / error / suspend
6
+ * + the 9 CLI output envelopes) and the matching `text` Liquid templates.
6
7
  * Idempotent: safe to call on every CLI invocation.
7
8
  */
8
9
  export async function registerUwfSchemas(store) {
9
- const [workflow, startNode, stepNode, text] = await Promise.all([
10
+ const [workflow, startNode, stepNode, text, errorOutput, suspendOutput] = await Promise.all([
10
11
  putSchema(store, WORKFLOW_SCHEMA),
11
12
  putSchema(store, START_NODE_SCHEMA),
12
13
  putSchema(store, STEP_NODE_SCHEMA),
13
14
  putSchema(store, TEXT_SCHEMA),
15
+ putSchema(store, ERROR_OUTPUT_SCHEMA),
16
+ putSchema(store, SUSPEND_OUTPUT_SCHEMA),
14
17
  ]);
15
- return { workflow, startNode, stepNode, text };
18
+ const outputs = await registerOutputSchemas(store);
19
+ return { workflow, startNode, stepNode, text, errorOutput, suspendOutput, outputs };
20
+ }
21
+ /**
22
+ * Register the 9 CLI output schemas, bind `@uwf/output/<name>` to each, store
23
+ * each Liquid template as an `@ocas/string` CAS node, and bind
24
+ * `@ocas/template/text/<schemaHash>` to the template content hash.
25
+ *
26
+ * Idempotent: writes are content-addressed so repeat invocations no-op.
27
+ */
28
+ async function registerOutputSchemas(store) {
29
+ const aliases = bootstrap(store);
30
+ const stringHash = aliases["@ocas/string"];
31
+ if (stringHash === undefined) {
32
+ throw new Error("@ocas/string schema not found in bootstrap result");
33
+ }
34
+ const result = {};
35
+ const names = Object.keys(OUTPUT_SCHEMAS);
36
+ for (const name of names) {
37
+ const schemaHash = await putSchema(store, OUTPUT_SCHEMAS[name]);
38
+ store.var.set(outputSchemaVarName(name), schemaHash);
39
+ const template = OUTPUT_TEMPLATES[name];
40
+ const contentHash = store.cas.put(stringHash, template);
41
+ store.var.set(`@ocas/template/text/${schemaHash}`, contentHash);
42
+ result[name] = schemaHash;
43
+ }
44
+ return result;
16
45
  }
17
46
  //# sourceMappingURL=schemas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAElG,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC;AASvD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAY;IACnD,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9D,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;QACjC,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC;QACnC,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC;QAClC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;KAC9B,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAEhB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC;AAYvD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAY;IACnD,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1F,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;QACjC,SAAS,CAAC,KAAK,EAAE,iBAAiB,CAAC;QACnC,SAAS,CAAC,KAAK,EAAE,gBAAgB,CAAC;QAClC,SAAS,CAAC,KAAK,EAAE,WAAW,CAAC;QAC7B,SAAS,CAAC,KAAK,EAAE,mBAAmB,CAAC;QACrC,SAAS,CAAC,KAAK,EAAE,qBAAqB,CAAC;KACxC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACnD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC;AACtF,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,qBAAqB,CAAC,KAAY;IAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,MAAM,GAAG,EAAoC,CAAC;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc,CAAuB,CAAC;IAChE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACxD,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,uBAAuB,UAAU,EAAE,EAAE,WAAW,CAAC,CAAC;QAEhE,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/store.d.ts CHANGED
@@ -6,7 +6,7 @@ export type WorkflowRegistry = Record<string, CasRef>;
6
6
  export declare const REGISTRY_VAR_PREFIX = "@uwf/registry/";
7
7
  /** Variable name prefix for active thread entries (`@uwf/thread/<thread-id>`). */
8
8
  export declare const THREAD_VAR_PREFIX = "@uwf/thread/";
9
- /** A workflow entry discovered from the project-local .workflows/ directory. */
9
+ /** A workflow entry discovered from the project-local .workflows/ (primary) or .workflow/ (legacy) directory. */
10
10
  export type ProjectWorkflowEntry = {
11
11
  /** Workflow name (from YAML `name` field, equals filename stem). */
12
12
  name: string;
@@ -14,11 +14,24 @@ export type ProjectWorkflowEntry = {
14
14
  filePath: string;
15
15
  };
16
16
  /**
17
- * Scan `<projectRoot>/.workflow/` (preferred) and `.workflows/` (legacy) for workflow entries.
18
- * .workflow/ takes priority: if a name is found in both, .workflow/ wins.
19
- * Returns an empty array if neither directory exists.
17
+ * Discover project-local workflows by walking from `startDir` up through parent
18
+ * directories. The nearest directory that contains a `.workflows/` or `.workflow/`
19
+ * directory wins once a match is found, traversal stops (entries from more
20
+ * distant ancestors are NOT merged in).
21
+ *
22
+ * Within the winning directory:
23
+ * - `.workflows/` (preferred/primary) takes priority over `.workflow/` (legacy fallback).
24
+ * - If both exist in that directory, `.workflows/` entries win when names collide.
25
+ *
26
+ * This matches the resolution strategy of `findWorkflowInParents` used by
27
+ * `uwf thread start`, so `uwf workflow list` and `uwf thread start` agree on
28
+ * what's discoverable from any given subdirectory.
29
+ *
30
+ * Traversal stops at the first `.git` boundary (directory or file) or the
31
+ * filesystem root. Returns an empty array if no `.workflows/` or `.workflow/`
32
+ * directory exists within that range.
20
33
  */
21
- export declare function discoverProjectWorkflows(projectRoot: string): Promise<ProjectWorkflowEntry[]>;
34
+ export declare function discoverProjectWorkflows(startDir: string): Promise<ProjectWorkflowEntry[]>;
22
35
  /** Default filesystem root for uwf data (`~/.uwf`). */
23
36
  export declare function getDefaultStorageRoot(): string;
24
37
  /**
@@ -64,12 +77,18 @@ export declare function loadAllThreads(varStore: VarStore): ThreadsIndex;
64
77
  export declare function getThread(varStore: VarStore, threadId: ThreadId): ThreadIndexEntry | null;
65
78
  /** Set or update a single active thread entry. */
66
79
  export declare function setThread(varStore: VarStore, threadId: ThreadId, entry: ThreadIndexEntry): void;
67
- /** Load only active threads (status not in completed/cancelled). */
80
+ /** Load only active threads (status not in end/cancelled). */
68
81
  export declare function loadActiveThreads(varStore: VarStore): ThreadsIndex;
69
- /** Load only completed/cancelled threads (history). */
82
+ /** Load only end/cancelled threads (history). */
70
83
  export declare function loadHistoryThreads(varStore: VarStore): ThreadsIndex;
71
- /** Complete a thread by marking it completed or cancelled. */
72
- export declare function completeThread(varStore: VarStore, threadId: ThreadId, reason: "completed" | "cancelled"): void;
84
+ /** Complete a thread by marking it end or cancelled. */
85
+ export declare function completeThread(varStore: VarStore, threadId: ThreadId, reason: "end" | "cancelled"): void;
86
+ /**
87
+ * Remove all `@uwf/thread-failed/<threadId>/*` variables for a thread.
88
+ * Called on thread completion / cancellation so retry-lineage state does not
89
+ * leak into the variable store after the thread is archived.
90
+ */
91
+ export declare function clearThreadFailedAttempts(varStore: VarStore, threadId: ThreadId): void;
73
92
  /** One-time migration: `~/.uwf/history.jsonl` → `@uwf/thread/*` variables with status tags. */
74
93
  export declare function migrateHistoryIfNeeded(storageRoot: string, varStore: VarStore): Promise<void>;
75
94
  /** Migrate `@uwf/history/*` variables to `@uwf/thread/*` with status tags. */
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAa,KAAK,IAAI,EAAE,KAAK,KAAK,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAInG,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEtD,mFAAmF;AACnF,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,kFAAkF;AAClF,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAEhD,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAAG;IACjC,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAwDF;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAWjC;AAED,uDAAuD;AACvD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAa3E;AAkBD,iFAAiF;AACjF,wBAAsB,+BAA+B,CACnD,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAYf;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,CAQzE;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEzF;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAElF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,oBAAoB,EAAE,EACpC,IAAI,EAAE,MAAM,GACX,MAAM,GAAG,IAAI,CAOf;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAOtF;AAiBD,6EAA6E;AAC7E,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAYf;AAgBD,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CAQ/D;AAED,8DAA8D;AAC9D,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,gBAAgB,GAAG,IAAI,CAOzF;AAED,kDAAkD;AAClD,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAkB/F;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CASlE;AAED,uDAAuD;AACvD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,YAAY,CASnE;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,WAAW,GAAG,WAAW,GAChC,IAAI,CAaN;AA4CD,+FAA+F;AAC/F,wBAAsB,sBAAsB,CAC1C,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAqBvE"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/store.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { access, mkdir, readdir, readFile, rename } from "node:fs/promises";
3
3
  import { homedir } from "node:os";
4
- import { join } from "node:path";
4
+ import { dirname, join, resolve as resolvePath } from "node:path";
5
5
  import { bootstrap } from "@ocas/core";
6
6
  import { createFsStore, createSqliteVarStore } from "@ocas/fs";
7
7
  import { parseThreadsIndex } from "@united-workforce/protocol";
@@ -63,14 +63,8 @@ async function scanWorkflowDir(dir) {
63
63
  }
64
64
  return result;
65
65
  }
66
- /**
67
- * Scan `<projectRoot>/.workflow/` (preferred) and `.workflows/` (legacy) for workflow entries.
68
- * .workflow/ takes priority: if a name is found in both, .workflow/ wins.
69
- * Returns an empty array if neither directory exists.
70
- */
71
- export async function discoverProjectWorkflows(projectRoot) {
72
- const primary = await scanWorkflowDir(join(projectRoot, ".workflow"));
73
- const legacy = await scanWorkflowDir(join(projectRoot, ".workflows"));
66
+ /** Merge primary (.workflows/) and legacy (.workflow/) entries, primary wins on name collision. */
67
+ function mergeWorkflowEntries(primary, legacy) {
74
68
  const seen = new Set(primary.map((e) => e.name));
75
69
  const merged = [...primary];
76
70
  for (const entry of legacy) {
@@ -80,6 +74,58 @@ export async function discoverProjectWorkflows(projectRoot) {
80
74
  }
81
75
  return merged;
82
76
  }
77
+ /** Check if a directory contains a .git marker (directory or file). */
78
+ async function hasGitMarker(dir) {
79
+ try {
80
+ await access(join(dir, ".git"));
81
+ return true;
82
+ }
83
+ catch {
84
+ return false;
85
+ }
86
+ }
87
+ /**
88
+ * Discover project-local workflows by walking from `startDir` up through parent
89
+ * directories. The nearest directory that contains a `.workflows/` or `.workflow/`
90
+ * directory wins — once a match is found, traversal stops (entries from more
91
+ * distant ancestors are NOT merged in).
92
+ *
93
+ * Within the winning directory:
94
+ * - `.workflows/` (preferred/primary) takes priority over `.workflow/` (legacy fallback).
95
+ * - If both exist in that directory, `.workflows/` entries win when names collide.
96
+ *
97
+ * This matches the resolution strategy of `findWorkflowInParents` used by
98
+ * `uwf thread start`, so `uwf workflow list` and `uwf thread start` agree on
99
+ * what's discoverable from any given subdirectory.
100
+ *
101
+ * Traversal stops at the first `.git` boundary (directory or file) or the
102
+ * filesystem root. Returns an empty array if no `.workflows/` or `.workflow/`
103
+ * directory exists within that range.
104
+ */
105
+ export async function discoverProjectWorkflows(startDir) {
106
+ let currentDir = resolvePath(startDir);
107
+ const root = resolvePath("/");
108
+ while (true) {
109
+ const primary = await scanWorkflowDir(join(currentDir, ".workflows"));
110
+ const legacy = await scanWorkflowDir(join(currentDir, ".workflow"));
111
+ if (primary.length > 0 || legacy.length > 0) {
112
+ return mergeWorkflowEntries(primary, legacy);
113
+ }
114
+ // Stop at .git boundary (repo root)
115
+ if (await hasGitMarker(currentDir)) {
116
+ return [];
117
+ }
118
+ // Stop at filesystem root
119
+ if (currentDir === root) {
120
+ return [];
121
+ }
122
+ const parentDir = dirname(currentDir);
123
+ if (parentDir === currentDir) {
124
+ return [];
125
+ }
126
+ currentDir = parentDir;
127
+ }
128
+ }
83
129
  /** Default filesystem root for uwf data (`~/.uwf`). */
84
130
  export function getDefaultStorageRoot() {
85
131
  return join(homedir(), ".uwf");
@@ -273,29 +319,29 @@ export function setThread(varStore, threadId, entry) {
273
319
  }
274
320
  varStore.set(name, entry.head, { tags });
275
321
  }
276
- /** Load only active threads (status not in completed/cancelled). */
322
+ /** Load only active threads (status not in end/cancelled). */
277
323
  export function loadActiveThreads(varStore) {
278
324
  const all = loadAllThreads(varStore);
279
325
  const active = {};
280
326
  for (const [threadId, entry] of Object.entries(all)) {
281
- if (entry.status !== "completed" && entry.status !== "cancelled") {
327
+ if (entry.status !== "end" && entry.status !== "cancelled") {
282
328
  active[threadId] = entry;
283
329
  }
284
330
  }
285
331
  return active;
286
332
  }
287
- /** Load only completed/cancelled threads (history). */
333
+ /** Load only end/cancelled threads (history). */
288
334
  export function loadHistoryThreads(varStore) {
289
335
  const all = loadAllThreads(varStore);
290
336
  const history = {};
291
337
  for (const [threadId, entry] of Object.entries(all)) {
292
- if (entry.status === "completed" || entry.status === "cancelled") {
338
+ if (entry.status === "end" || entry.status === "cancelled") {
293
339
  history[threadId] = entry;
294
340
  }
295
341
  }
296
342
  return history;
297
343
  }
298
- /** Complete a thread by marking it completed or cancelled. */
344
+ /** Complete a thread by marking it end or cancelled. */
299
345
  export function completeThread(varStore, threadId, reason) {
300
346
  const entry = getThread(varStore, threadId);
301
347
  if (entry === null) {
@@ -309,6 +355,19 @@ export function completeThread(varStore, threadId, reason) {
309
355
  completedAt: Date.now(),
310
356
  };
311
357
  setThread(varStore, threadId, completed);
358
+ clearThreadFailedAttempts(varStore, threadId);
359
+ }
360
+ /**
361
+ * Remove all `@uwf/thread-failed/<threadId>/*` variables for a thread.
362
+ * Called on thread completion / cancellation so retry-lineage state does not
363
+ * leak into the variable store after the thread is archived.
364
+ */
365
+ export function clearThreadFailedAttempts(varStore, threadId) {
366
+ const prefix = `@uwf/thread-failed/${threadId}/`;
367
+ const vars = varStore.list({ namePrefix: prefix });
368
+ for (const v of vars) {
369
+ varStore.remove(v.name);
370
+ }
312
371
  }
313
372
  function parseLegacyHistoryJsonlLine(trimmed) {
314
373
  let raw;
@@ -356,7 +415,7 @@ export async function migrateHistoryIfNeeded(storageRoot, varStore) {
356
415
  }
357
416
  const entry = parseLegacyHistoryJsonlLine(trimmed);
358
417
  if (entry !== null) {
359
- const status = entry.reason === "cancelled" ? "cancelled" : "completed";
418
+ const status = entry.reason === "cancelled" ? "cancelled" : "end";
360
419
  const threadEntry = {
361
420
  head: entry.head,
362
421
  status: status,
@@ -376,7 +435,7 @@ export function migrateHistoryVarsToThreadVars(varStore) {
376
435
  for (const v of vars) {
377
436
  const threadId = v.name.slice(LEGACY_HISTORY_VAR_PREFIX.length);
378
437
  const reason = v.tags.reason;
379
- const status = reason === "cancelled" ? "cancelled" : "completed";
438
+ const status = reason === "cancelled" ? "cancelled" : "end";
380
439
  const completedAt = Number(v.tags.completedAt ?? Date.now());
381
440
  const threadEntry = {
382
441
  head: v.value,
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AAElE,OAAO,EAAE,SAAS,EAAwC,MAAM,YAAY,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAwB,MAAM,cAAc,CAAC;AAIxE,mFAAmF;AACnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAEpD,kFAAkF;AAClF,MAAM,CAAC,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAUhD,+EAA+E;AAC/E,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,KAAK,UAAU,iBAAiB,CAC9B,GAAW,EACX,OAAe;IAEf,KAAK,MAAM,SAAS,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACxB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAAC,GAAW;IACxC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAA0B,CAAC;QACvC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACpD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IAED,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;YACpF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC;aAAM,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mGAAmG;AACnG,SAAS,oBAAoB,CAC3B,OAA+B,EAC/B,MAA8B;IAE9B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,uEAAuE;AACvE,KAAK,UAAU,YAAY,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,QAAgB;IAC7D,IAAI,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAE9B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;QAEpE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,OAAO,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,oCAAoC;QACpC,IAAI,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,0BAA0B;QAC1B,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,UAAU,GAAG,SAAS,CAAC;IACzB,CAAC;AACH,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,qBAAqB;IACnC,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,qBAAqB,EAAE,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,WAAmB;IAC3C,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACtC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;QAC5C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAmB;IAChD,OAAO,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;AAC3C,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB;IACtD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAU,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACjD,SAAS,CAAC,KAAK,CAAC,CAAC;IACjB,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,+BAA+B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7D,MAAM,2BAA2B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzD,MAAM,sBAAsB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACpD,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,WAAmB;IAC7D,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAY,CAAC;IACnC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAA8B,CAAC,EAAE,CAAC;QAC1E,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,WAAmB,EACnB,QAAkB;IAElB,MAAM,IAAI,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,WAAW,CAAC,CAAC;IACjE,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,oBAAoB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACrD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAC3B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,QAAkB,EAAE,IAAY,EAAE,IAAY;IACjF,QAAQ,CAAC,GAAG,CAAC,GAAG,mBAAmB,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAA0B,EAAE,EAAU;IACxE,OAAO,QAAQ,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,YAAoC,EACpC,IAAY;IAEZ,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YACxB,OAAO,KAAK,CAAC,QAAQ,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAA0B,EAAE,IAAU;IACrE,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,WAAmB;IACzD,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAY,CAAC;QACnC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAA0B,CAAC;QACvC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,WAAmB,EACnB,QAAkB;IAElB,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAC1D,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,QAAQ,EAAE,QAAoB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,aAAa,CAAC,QAAkB;IACvC,OAAO,GAAG,iBAAiB,GAAG,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAkD;IAC3E,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,KAAe;QACvB,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAA+B;QAC/D,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI;QAC3C,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI;QAC7C,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI;KAClF,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAa,CAAC;QACpE,KAAK,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,SAAS,CAAC,QAAkB,EAAE,QAAkB;IAC9D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,iBAAiB,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,SAAS,CAAC,QAAkB,EAAE,QAAkB,EAAE,KAAuB;IACvF,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACrC,+FAA+F;IAC/F,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,IAAI,GAA2B,EAAE,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAC3C,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/C,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3D,MAAM,CAAC,QAAoB,CAAC,GAAG,KAAK,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,kBAAkB,CAAC,QAAkB;IACnD,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC3D,OAAO,CAAC,QAAoB,CAAC,GAAG,KAAK,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,cAAc,CAC5B,QAAkB,EAClB,QAAkB,EAClB,MAA2B;IAE3B,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO;IACT,CAAC;IACD,MAAM,SAAS,GAAG;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,MAAM;QACd,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,IAAI;QACpB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;KACJ,CAAC;IACtB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzC,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAkB,EAAE,QAAkB;IAC9E,MAAM,MAAM,GAAG,sBAAsB,QAAQ,GAAG,CAAC;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAUD,SAAS,2BAA2B,CAAC,OAAe;IAClD,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAC1B,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACtB,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACpC,IACE,OAAO,MAAM,KAAK,QAAQ;QAC1B,OAAO,QAAQ,KAAK,QAAQ;QAC5B,OAAO,IAAI,KAAK,QAAQ;QACxB,OAAO,WAAW,KAAK,QAAQ,EAC/B,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,MAAM,YAAY,GAAG,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACtF,OAAO;YACL,MAAM,EAAE,MAAkB;YAC1B,QAAQ;YACR,IAAI;YACJ,WAAW;YACX,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+FAA+F;AAC/F,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,WAAmB,EACnB,QAAkB;IAElB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACnB,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;YAClE,MAAM,WAAW,GAAqB;gBACpC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,MAAoC;gBAC5C,aAAa,EAAE,IAAI;gBACnB,cAAc,EAAE,IAAI;gBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC;YACF,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,WAAW,CAAC,CAAC;AACzC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,8BAA8B,CAAC,QAAkB;IAC/D,MAAM,yBAAyB,GAAG,eAAe,CAAC;IAClD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAEtE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAa,CAAC;QAC5E,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;QAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAE7D,MAAM,WAAW,GAAqB;YACpC,IAAI,EAAE,CAAC,CAAC,KAAe;YACvB,MAAM,EAAE,MAAoC;YAC5C,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,IAAI;YACpB,WAAW;SACZ,CAAC;QAEF,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC3C,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Per-command text renderers — the per-command registry from spec
3
+ * `cli-format-text-renderer-registry.md`.
4
+ *
5
+ * Each renderer accepts the command's payload (already mapped via the
6
+ * output-mappers module) and returns a human-readable string. Renderers must
7
+ * never throw on partial/missing data and must never return `undefined`.
8
+ *
9
+ * Distinct from the existing Liquid template registry in `format.ts`: this
10
+ * registry is plain JS functions (the spec contract is
11
+ * `Record<string, (data: unknown) => string>`). The Liquid templates remain
12
+ * the primary rendering path inside `writeEnvelope`; these renderers are the
13
+ * fallback contract surface so callers can resolve `text` rendering without
14
+ * needing access to a CAS store.
15
+ */
16
+ export declare function renderThreadList(data: unknown): string;
17
+ export declare function renderThreadShow(data: unknown): string;
18
+ export declare function renderThreadStart(data: unknown): string;
19
+ export declare function renderWorkflowList(data: unknown): string;
20
+ export declare function renderWorkflowShow(data: unknown): string;
21
+ export declare function renderStepList(data: unknown): string;
22
+ export declare function renderStepShow(data: unknown): string;
23
+ export declare function renderThreadCancel(data: unknown): string;
24
+ export declare function renderThreadStop(data: unknown): string;
25
+ export declare function renderConfigList(data: unknown): string;
26
+ export declare function renderConfigGet(data: unknown): string;
27
+ export declare function renderConfigSet(data: unknown): string;
28
+ export declare function renderLogList(data: unknown): string;
29
+ export declare function renderLogShow(data: unknown): string;
30
+ //# sourceMappingURL=text-renderers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-renderers.d.ts","sourceRoot":"","sources":["../src/text-renderers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAoHH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAgBtD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAuBtD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAGvD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAaxD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAgBxD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAYpD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CASpD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAQxD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAItD;AAuBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAItD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CASrD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAMrD;AA2BD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAYnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAiBnD"}
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Per-command text renderers — the per-command registry from spec
3
+ * `cli-format-text-renderer-registry.md`.
4
+ *
5
+ * Each renderer accepts the command's payload (already mapped via the
6
+ * output-mappers module) and returns a human-readable string. Renderers must
7
+ * never throw on partial/missing data and must never return `undefined`.
8
+ *
9
+ * Distinct from the existing Liquid template registry in `format.ts`: this
10
+ * registry is plain JS functions (the spec contract is
11
+ * `Record<string, (data: unknown) => string>`). The Liquid templates remain
12
+ * the primary rendering path inside `writeEnvelope`; these renderers are the
13
+ * fallback contract surface so callers can resolve `text` rendering without
14
+ * needing access to a CAS store.
15
+ */
16
+ function asObject(data) {
17
+ if (data !== null && typeof data === "object" && !Array.isArray(data)) {
18
+ return data;
19
+ }
20
+ return {};
21
+ }
22
+ function asString(value, fallback = "-") {
23
+ if (typeof value === "string" && value.length > 0)
24
+ return value;
25
+ return fallback;
26
+ }
27
+ function asArray(value) {
28
+ return Array.isArray(value) ? value : [];
29
+ }
30
+ function formatDuration(durationMs) {
31
+ if (typeof durationMs !== "number" || !Number.isFinite(durationMs))
32
+ return "-";
33
+ if (durationMs >= 1000)
34
+ return `${(durationMs / 1000).toFixed(1)}s`;
35
+ return `${durationMs}ms`;
36
+ }
37
+ function pad(s, width) {
38
+ if (s.length >= width)
39
+ return s.slice(0, width);
40
+ return s + " ".repeat(width - s.length);
41
+ }
42
+ function formatTimestamp(ts) {
43
+ if (typeof ts !== "number" || !Number.isFinite(ts))
44
+ return "-";
45
+ const d = new Date(ts);
46
+ if (Number.isNaN(d.getTime()))
47
+ return "-";
48
+ const pad2 = (n) => n.toString().padStart(2, "0");
49
+ return `${d.getFullYear()}-${pad2(d.getMonth() + 1)}-${pad2(d.getDate())} ${pad2(d.getHours())}:${pad2(d.getMinutes())}`;
50
+ }
51
+ export function renderThreadList(data) {
52
+ const payload = asObject(data);
53
+ const items = asArray(payload.items);
54
+ const lines = [
55
+ "THREAD WORKFLOW STATUS ROLE STARTED",
56
+ ];
57
+ for (const item of items) {
58
+ const it = asObject(item);
59
+ const threadId = asString(it.threadId);
60
+ const workflowHash = asString(it.workflowHash);
61
+ const status = pad(asString(it.status), 9);
62
+ const role = pad(asString(it.currentRole), 10);
63
+ const started = formatTimestamp(it.startedAt);
64
+ lines.push(`${threadId} ${workflowHash} ${status} ${role} ${started}`);
65
+ }
66
+ return lines.join("\n");
67
+ }
68
+ export function renderThreadShow(data) {
69
+ const p = asObject(data);
70
+ const status = asString(p.status);
71
+ const role = status === "suspended" && typeof p.suspendedRole === "string" && p.suspendedRole.length > 0
72
+ ? p.suspendedRole
73
+ : asString(p.currentRole);
74
+ const head = asString(p.head);
75
+ const lines = [
76
+ `Thread ${asString(p.threadId)}`,
77
+ `Workflow ${asString(p.workflowHash)}`,
78
+ `Status ${status}`,
79
+ `Role ${role}`,
80
+ `Head ${head}`,
81
+ ];
82
+ if (status === "suspended" &&
83
+ typeof p.suspendMessage === "string" &&
84
+ p.suspendMessage.length > 0) {
85
+ lines.push(`Suspend ${p.suspendMessage}`);
86
+ }
87
+ return lines.join("\n");
88
+ }
89
+ export function renderThreadStart(data) {
90
+ const p = asObject(data);
91
+ return `Thread ${asString(p.threadId)}\nWorkflow ${asString(p.workflowHash)}`;
92
+ }
93
+ export function renderWorkflowList(data) {
94
+ const payload = asObject(data);
95
+ const items = asArray(payload.items);
96
+ const lines = ["NAME HASH SOURCE DESCRIPTION"];
97
+ for (const item of items) {
98
+ const it = asObject(item);
99
+ const name = pad(asString(it.name), 13);
100
+ const hash = asString(it.hash);
101
+ const source = pad(asString(it.source), 10);
102
+ const description = asString(it.description, "");
103
+ lines.push(`${name} ${hash} ${source} ${description}`);
104
+ }
105
+ return lines.join("\n");
106
+ }
107
+ export function renderWorkflowShow(data) {
108
+ const p = asObject(data);
109
+ const roles = p.roles !== null && typeof p.roles === "object" && !Array.isArray(p.roles)
110
+ ? Object.keys(p.roles)
111
+ : [];
112
+ const lines = [
113
+ `Workflow ${asString(p.name)}`,
114
+ `Version ${typeof p.version === "number" ? p.version : "-"}`,
115
+ `Hash ${asString(p.hash)}`,
116
+ `Roles ${roles.join(", ")}`,
117
+ ];
118
+ if (typeof p.description === "string" && p.description.length > 0) {
119
+ lines.push(`Description ${p.description}`);
120
+ }
121
+ return lines.join("\n");
122
+ }
123
+ export function renderStepList(data) {
124
+ const payload = asObject(data);
125
+ const items = asArray(payload.items);
126
+ const lines = ["HASH ROLE DURATION"];
127
+ for (const item of items) {
128
+ const it = asObject(item);
129
+ const hash = asString(it.hash);
130
+ const role = pad(asString(it.role), 10);
131
+ const dur = formatDuration(it.durationMs);
132
+ lines.push(`${hash} ${role} ${dur}`);
133
+ }
134
+ return lines.join("\n");
135
+ }
136
+ export function renderStepShow(data) {
137
+ const p = asObject(data);
138
+ return [
139
+ `Step ${asString(p.hash)}`,
140
+ `Role ${asString(p.role)}`,
141
+ `Agent ${asString(p.agent)}`,
142
+ `Status ${asString(p.status)}`,
143
+ `Duration ${formatDuration(p.durationMs)}`,
144
+ ].join("\n");
145
+ }
146
+ export function renderThreadCancel(data) {
147
+ const p = asObject(data);
148
+ const cancelled = typeof p.cancelled === "boolean" ? (p.cancelled ? "yes" : "no") : "-";
149
+ return [
150
+ `Thread ${asString(p.thread)}`,
151
+ `Status cancelled`,
152
+ `Cancelled ${cancelled}`,
153
+ ].join("\n");
154
+ }
155
+ export function renderThreadStop(data) {
156
+ const p = asObject(data);
157
+ const stopped = typeof p.stopped === "boolean" ? (p.stopped ? "yes" : "no") : "-";
158
+ return [`Thread ${asString(p.thread)}`, `Stopped ${stopped}`].join("\n");
159
+ }
160
+ // ── Config renderers ────────────────────────────────────────────────
161
+ /**
162
+ * Flatten a nested object into dot-notation key-value lines.
163
+ * Arrays are rendered as compact JSON; scalars as strings.
164
+ */
165
+ function flattenConfig(obj, prefix) {
166
+ const lines = [];
167
+ for (const [key, value] of Object.entries(obj)) {
168
+ const fullKey = prefix ? `${prefix}.${key}` : key;
169
+ if (Array.isArray(value)) {
170
+ lines.push(`${fullKey}\t${JSON.stringify(value)}`);
171
+ }
172
+ else if (value !== null && typeof value === "object") {
173
+ lines.push(...flattenConfig(value, fullKey));
174
+ }
175
+ else {
176
+ lines.push(`${fullKey}\t${String(value)}`);
177
+ }
178
+ }
179
+ return lines;
180
+ }
181
+ export function renderConfigList(data) {
182
+ const obj = asObject(data);
183
+ if (Object.keys(obj).length === 0)
184
+ return "";
185
+ return flattenConfig(obj, "").join("\n");
186
+ }
187
+ export function renderConfigGet(data) {
188
+ const obj = asObject(data);
189
+ const value = obj.value;
190
+ if (value === null || value === undefined)
191
+ return "";
192
+ if (typeof value === "object" && !Array.isArray(value)) {
193
+ return flattenConfig(value, "").join("\n");
194
+ }
195
+ if (Array.isArray(value))
196
+ return JSON.stringify(value);
197
+ return String(value);
198
+ }
199
+ export function renderConfigSet(data) {
200
+ const obj = asObject(data);
201
+ const key = asString(obj.key);
202
+ const value = obj.value;
203
+ const rendered = Array.isArray(value) ? JSON.stringify(value) : String(value ?? "");
204
+ return `${key} = ${rendered}`;
205
+ }
206
+ function formatSize(bytes) {
207
+ if (typeof bytes !== "number" || !Number.isFinite(bytes) || bytes < 0)
208
+ return "-";
209
+ if (bytes < 1024)
210
+ return `${bytes}B`;
211
+ if (bytes < 1024 * 1024)
212
+ return `${(bytes / 1024).toFixed(1)}K`;
213
+ if (bytes < 1024 * 1024 * 1024)
214
+ return `${(bytes / (1024 * 1024)).toFixed(1)}M`;
215
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)}G`;
216
+ }
217
+ export function renderLogList(data) {
218
+ const items = asArray(data);
219
+ if (items.length === 0)
220
+ return "No log files.";
221
+ const lines = ["DATE SIZE NAME"];
222
+ for (const item of items) {
223
+ const it = asObject(item);
224
+ const date = pad(asString(it.date), 11);
225
+ const size = pad(formatSize(it.size), 9);
226
+ const name = asString(it.name);
227
+ lines.push(`${date} ${size} ${name}`);
228
+ }
229
+ return lines.join("\n");
230
+ }
231
+ export function renderLogShow(data) {
232
+ const items = asArray(data);
233
+ if (items.length === 0)
234
+ return "No log entries.";
235
+ const lines = [];
236
+ for (const item of items) {
237
+ const it = asObject(item);
238
+ const ts = asString(it.ts);
239
+ const pid = asString(it.pid);
240
+ const tag = asString(it.tag);
241
+ const msg = asString(it.msg, "");
242
+ const thread = typeof it.thread === "string" && it.thread.length > 0 ? it.thread : null;
243
+ const parts = [ts, `pid=${pid}`, tag];
244
+ if (thread !== null)
245
+ parts.push(`thread=${thread}`);
246
+ parts.push(msg);
247
+ lines.push(parts.join(" "));
248
+ }
249
+ return lines.join("\n");
250
+ }
251
+ //# sourceMappingURL=text-renderers.js.map