@united-workforce/cli 0.1.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 (310) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +221 -0
  3. package/dist/__tests__/adapter-json-roundtrip.test.d.ts +2 -0
  4. package/dist/__tests__/adapter-json-roundtrip.test.d.ts.map +1 -0
  5. package/dist/__tests__/adapter-json-roundtrip.test.js +147 -0
  6. package/dist/__tests__/adapter-json-roundtrip.test.js.map +1 -0
  7. package/dist/__tests__/config.test.d.ts +2 -0
  8. package/dist/__tests__/config.test.d.ts.map +1 -0
  9. package/dist/__tests__/config.test.js +685 -0
  10. package/dist/__tests__/config.test.js.map +1 -0
  11. package/dist/__tests__/current-role.test.d.ts +2 -0
  12. package/dist/__tests__/current-role.test.d.ts.map +1 -0
  13. package/dist/__tests__/current-role.test.js +401 -0
  14. package/dist/__tests__/current-role.test.js.map +1 -0
  15. package/dist/__tests__/e2e-mock-agent.test.d.ts +2 -0
  16. package/dist/__tests__/e2e-mock-agent.test.d.ts.map +1 -0
  17. package/dist/__tests__/e2e-mock-agent.test.js +401 -0
  18. package/dist/__tests__/e2e-mock-agent.test.js.map +1 -0
  19. package/dist/__tests__/include-tag.test.d.ts +2 -0
  20. package/dist/__tests__/include-tag.test.d.ts.map +1 -0
  21. package/dist/__tests__/include-tag.test.js +69 -0
  22. package/dist/__tests__/include-tag.test.js.map +1 -0
  23. package/dist/__tests__/log.test.d.ts +2 -0
  24. package/dist/__tests__/log.test.d.ts.map +1 -0
  25. package/dist/__tests__/log.test.js +161 -0
  26. package/dist/__tests__/log.test.js.map +1 -0
  27. package/dist/__tests__/moderator-evaluate.test.d.ts +2 -0
  28. package/dist/__tests__/moderator-evaluate.test.d.ts.map +1 -0
  29. package/dist/__tests__/moderator-evaluate.test.js +170 -0
  30. package/dist/__tests__/moderator-evaluate.test.js.map +1 -0
  31. package/dist/__tests__/preload.d.ts +3 -0
  32. package/dist/__tests__/preload.d.ts.map +1 -0
  33. package/dist/__tests__/preload.js +6 -0
  34. package/dist/__tests__/preload.js.map +1 -0
  35. package/dist/__tests__/prompt.test.d.ts +2 -0
  36. package/dist/__tests__/prompt.test.d.ts.map +1 -0
  37. package/dist/__tests__/prompt.test.js +111 -0
  38. package/dist/__tests__/prompt.test.js.map +1 -0
  39. package/dist/__tests__/resolve-head-hash.test.d.ts +2 -0
  40. package/dist/__tests__/resolve-head-hash.test.d.ts.map +1 -0
  41. package/dist/__tests__/resolve-head-hash.test.js +66 -0
  42. package/dist/__tests__/resolve-head-hash.test.js.map +1 -0
  43. package/dist/__tests__/setup-agent-discovery.test.d.ts +2 -0
  44. package/dist/__tests__/setup-agent-discovery.test.d.ts.map +1 -0
  45. package/dist/__tests__/setup-agent-discovery.test.js +119 -0
  46. package/dist/__tests__/setup-agent-discovery.test.js.map +1 -0
  47. package/dist/__tests__/setup-complexity.test.d.ts +2 -0
  48. package/dist/__tests__/setup-complexity.test.d.ts.map +1 -0
  49. package/dist/__tests__/setup-complexity.test.js +314 -0
  50. package/dist/__tests__/setup-complexity.test.js.map +1 -0
  51. package/dist/__tests__/setup-validate.test.d.ts +2 -0
  52. package/dist/__tests__/setup-validate.test.d.ts.map +1 -0
  53. package/dist/__tests__/setup-validate.test.js +108 -0
  54. package/dist/__tests__/setup-validate.test.js.map +1 -0
  55. package/dist/__tests__/solve-issue-tea-worktree.test.d.ts +2 -0
  56. package/dist/__tests__/solve-issue-tea-worktree.test.d.ts.map +1 -0
  57. package/dist/__tests__/solve-issue-tea-worktree.test.js +107 -0
  58. package/dist/__tests__/solve-issue-tea-worktree.test.js.map +1 -0
  59. package/dist/__tests__/spawn-agent-json.test.d.ts +2 -0
  60. package/dist/__tests__/spawn-agent-json.test.d.ts.map +1 -0
  61. package/dist/__tests__/spawn-agent-json.test.js +79 -0
  62. package/dist/__tests__/spawn-agent-json.test.js.map +1 -0
  63. package/dist/__tests__/step-read.test.d.ts +2 -0
  64. package/dist/__tests__/step-read.test.d.ts.map +1 -0
  65. package/dist/__tests__/step-read.test.js +561 -0
  66. package/dist/__tests__/step-read.test.js.map +1 -0
  67. package/dist/__tests__/step-show-json.test.d.ts +2 -0
  68. package/dist/__tests__/step-show-json.test.d.ts.map +1 -0
  69. package/dist/__tests__/step-show-json.test.js +311 -0
  70. package/dist/__tests__/step-show-json.test.js.map +1 -0
  71. package/dist/__tests__/step-timing.test.d.ts +2 -0
  72. package/dist/__tests__/step-timing.test.d.ts.map +1 -0
  73. package/dist/__tests__/step-timing.test.js +345 -0
  74. package/dist/__tests__/step-timing.test.js.map +1 -0
  75. package/dist/__tests__/store-global-cas.test.d.ts +2 -0
  76. package/dist/__tests__/store-global-cas.test.d.ts.map +1 -0
  77. package/dist/__tests__/store-global-cas.test.js +235 -0
  78. package/dist/__tests__/store-global-cas.test.js.map +1 -0
  79. package/dist/__tests__/store-storage-root.test.d.ts +2 -0
  80. package/dist/__tests__/store-storage-root.test.d.ts.map +1 -0
  81. package/dist/__tests__/store-storage-root.test.js +43 -0
  82. package/dist/__tests__/store-storage-root.test.js.map +1 -0
  83. package/dist/__tests__/store-unified-threads.test.d.ts +2 -0
  84. package/dist/__tests__/store-unified-threads.test.d.ts.map +1 -0
  85. package/dist/__tests__/store-unified-threads.test.js +189 -0
  86. package/dist/__tests__/store-unified-threads.test.js.map +1 -0
  87. package/dist/__tests__/thread-cancel-status.test.d.ts +2 -0
  88. package/dist/__tests__/thread-cancel-status.test.d.ts.map +1 -0
  89. package/dist/__tests__/thread-cancel-status.test.js +111 -0
  90. package/dist/__tests__/thread-cancel-status.test.js.map +1 -0
  91. package/dist/__tests__/thread-list-filters.test.d.ts +2 -0
  92. package/dist/__tests__/thread-list-filters.test.d.ts.map +1 -0
  93. package/dist/__tests__/thread-list-filters.test.js +442 -0
  94. package/dist/__tests__/thread-list-filters.test.js.map +1 -0
  95. package/dist/__tests__/thread-location.test.d.ts +2 -0
  96. package/dist/__tests__/thread-location.test.d.ts.map +1 -0
  97. package/dist/__tests__/thread-location.test.js +159 -0
  98. package/dist/__tests__/thread-location.test.js.map +1 -0
  99. package/dist/__tests__/thread-read-quota.test.d.ts +2 -0
  100. package/dist/__tests__/thread-read-quota.test.d.ts.map +1 -0
  101. package/dist/__tests__/thread-read-quota.test.js +546 -0
  102. package/dist/__tests__/thread-read-quota.test.js.map +1 -0
  103. package/dist/__tests__/thread-read-xml-tags.test.d.ts +2 -0
  104. package/dist/__tests__/thread-read-xml-tags.test.d.ts.map +1 -0
  105. package/dist/__tests__/thread-read-xml-tags.test.js +610 -0
  106. package/dist/__tests__/thread-read-xml-tags.test.js.map +1 -0
  107. package/dist/__tests__/thread-resume.test.d.ts +2 -0
  108. package/dist/__tests__/thread-resume.test.d.ts.map +1 -0
  109. package/dist/__tests__/thread-resume.test.js +592 -0
  110. package/dist/__tests__/thread-resume.test.js.map +1 -0
  111. package/dist/__tests__/thread-show-status.test.d.ts +2 -0
  112. package/dist/__tests__/thread-show-status.test.d.ts.map +1 -0
  113. package/dist/__tests__/thread-show-status.test.js +267 -0
  114. package/dist/__tests__/thread-show-status.test.js.map +1 -0
  115. package/dist/__tests__/thread-start-cwd-cli.test.d.ts +2 -0
  116. package/dist/__tests__/thread-start-cwd-cli.test.d.ts.map +1 -0
  117. package/dist/__tests__/thread-start-cwd-cli.test.js +130 -0
  118. package/dist/__tests__/thread-start-cwd-cli.test.js.map +1 -0
  119. package/dist/__tests__/thread-step-count.test.d.ts +2 -0
  120. package/dist/__tests__/thread-step-count.test.d.ts.map +1 -0
  121. package/dist/__tests__/thread-step-count.test.js +55 -0
  122. package/dist/__tests__/thread-step-count.test.js.map +1 -0
  123. package/dist/__tests__/thread-suspend-step.test.d.ts +2 -0
  124. package/dist/__tests__/thread-suspend-step.test.d.ts.map +1 -0
  125. package/dist/__tests__/thread-suspend-step.test.js +155 -0
  126. package/dist/__tests__/thread-suspend-step.test.js.map +1 -0
  127. package/dist/__tests__/thread-suspended-display.test.d.ts +2 -0
  128. package/dist/__tests__/thread-suspended-display.test.d.ts.map +1 -0
  129. package/dist/__tests__/thread-suspended-display.test.js +247 -0
  130. package/dist/__tests__/thread-suspended-display.test.js.map +1 -0
  131. package/dist/__tests__/thread-test-helpers.d.ts +4 -0
  132. package/dist/__tests__/thread-test-helpers.d.ts.map +1 -0
  133. package/dist/__tests__/thread-test-helpers.js +23 -0
  134. package/dist/__tests__/thread-test-helpers.js.map +1 -0
  135. package/dist/__tests__/thread.test.d.ts +2 -0
  136. package/dist/__tests__/thread.test.d.ts.map +1 -0
  137. package/dist/__tests__/thread.test.js +883 -0
  138. package/dist/__tests__/thread.test.js.map +1 -0
  139. package/dist/__tests__/validate-semantic.test.d.ts +2 -0
  140. package/dist/__tests__/validate-semantic.test.d.ts.map +1 -0
  141. package/dist/__tests__/validate-semantic.test.js +408 -0
  142. package/dist/__tests__/validate-semantic.test.js.map +1 -0
  143. package/dist/__tests__/workflow-resolution.test.d.ts +2 -0
  144. package/dist/__tests__/workflow-resolution.test.d.ts.map +1 -0
  145. package/dist/__tests__/workflow-resolution.test.js +308 -0
  146. package/dist/__tests__/workflow-resolution.test.js.map +1 -0
  147. package/dist/background/background.d.ts +38 -0
  148. package/dist/background/background.d.ts.map +1 -0
  149. package/dist/background/background.js +123 -0
  150. package/dist/background/background.js.map +1 -0
  151. package/dist/background/index.d.ts +3 -0
  152. package/dist/background/index.d.ts.map +1 -0
  153. package/dist/background/index.js +2 -0
  154. package/dist/background/index.js.map +1 -0
  155. package/dist/background/types.d.ts +9 -0
  156. package/dist/background/types.d.ts.map +1 -0
  157. package/dist/background/types.js +2 -0
  158. package/dist/background/types.js.map +1 -0
  159. package/dist/cli.d.ts +3 -0
  160. package/dist/cli.d.ts.map +1 -0
  161. package/dist/cli.js +535 -0
  162. package/dist/cli.js.map +1 -0
  163. package/dist/commands/config.d.ts +41 -0
  164. package/dist/commands/config.d.ts.map +1 -0
  165. package/dist/commands/config.js +252 -0
  166. package/dist/commands/config.js.map +1 -0
  167. package/dist/commands/log.d.ts +26 -0
  168. package/dist/commands/log.d.ts.map +1 -0
  169. package/dist/commands/log.js +79 -0
  170. package/dist/commands/log.js.map +1 -0
  171. package/dist/commands/prompt.d.ts +6 -0
  172. package/dist/commands/prompt.d.ts.map +1 -0
  173. package/dist/commands/prompt.js +67 -0
  174. package/dist/commands/prompt.js.map +1 -0
  175. package/dist/commands/setup.d.ts +73 -0
  176. package/dist/commands/setup.d.ts.map +1 -0
  177. package/dist/commands/setup.js +522 -0
  178. package/dist/commands/setup.js.map +1 -0
  179. package/dist/commands/shared.d.ts +31 -0
  180. package/dist/commands/shared.d.ts.map +1 -0
  181. package/dist/commands/shared.js +154 -0
  182. package/dist/commands/shared.js.map +1 -0
  183. package/dist/commands/step.d.ts +18 -0
  184. package/dist/commands/step.d.ts.map +1 -0
  185. package/dist/commands/step.js +257 -0
  186. package/dist/commands/step.js.map +1 -0
  187. package/dist/commands/thread-time-parser.d.ts +6 -0
  188. package/dist/commands/thread-time-parser.d.ts.map +1 -0
  189. package/dist/commands/thread-time-parser.js +22 -0
  190. package/dist/commands/thread-time-parser.js.map +1 -0
  191. package/dist/commands/thread.d.ts +38 -0
  192. package/dist/commands/thread.d.ts.map +1 -0
  193. package/dist/commands/thread.js +1087 -0
  194. package/dist/commands/thread.js.map +1 -0
  195. package/dist/commands/workflow.d.ts +24 -0
  196. package/dist/commands/workflow.d.ts.map +1 -0
  197. package/dist/commands/workflow.js +138 -0
  198. package/dist/commands/workflow.js.map +1 -0
  199. package/dist/format.d.ts +3 -0
  200. package/dist/format.d.ts.map +1 -0
  201. package/dist/format.js +10 -0
  202. package/dist/format.js.map +1 -0
  203. package/dist/include.d.ts +12 -0
  204. package/dist/include.d.ts.map +1 -0
  205. package/dist/include.js +35 -0
  206. package/dist/include.js.map +1 -0
  207. package/dist/moderator/__tests__/evaluate.test.d.ts +2 -0
  208. package/dist/moderator/__tests__/evaluate.test.d.ts.map +1 -0
  209. package/dist/moderator/__tests__/evaluate.test.js +167 -0
  210. package/dist/moderator/__tests__/evaluate.test.js.map +1 -0
  211. package/dist/moderator/evaluate.d.ts +6 -0
  212. package/dist/moderator/evaluate.d.ts.map +1 -0
  213. package/dist/moderator/evaluate.js +65 -0
  214. package/dist/moderator/evaluate.js.map +1 -0
  215. package/dist/moderator/index.d.ts +4 -0
  216. package/dist/moderator/index.d.ts.map +1 -0
  217. package/dist/moderator/index.js +3 -0
  218. package/dist/moderator/index.js.map +1 -0
  219. package/dist/moderator/types.d.ts +25 -0
  220. package/dist/moderator/types.d.ts.map +1 -0
  221. package/dist/moderator/types.js +4 -0
  222. package/dist/moderator/types.js.map +1 -0
  223. package/dist/schemas.d.ts +16 -0
  224. package/dist/schemas.d.ts.map +1 -0
  225. package/dist/schemas.js +17 -0
  226. package/dist/schemas.js.map +1 -0
  227. package/dist/store.d.ts +77 -0
  228. package/dist/store.d.ts.map +1 -0
  229. package/dist/store.js +392 -0
  230. package/dist/store.js.map +1 -0
  231. package/dist/validate-semantic.d.ts +7 -0
  232. package/dist/validate-semantic.d.ts.map +1 -0
  233. package/dist/validate-semantic.js +263 -0
  234. package/dist/validate-semantic.js.map +1 -0
  235. package/dist/validate.d.ts +16 -0
  236. package/dist/validate.d.ts.map +1 -0
  237. package/dist/validate.js +115 -0
  238. package/dist/validate.js.map +1 -0
  239. package/package.json +44 -0
  240. package/src/__tests__/adapter-json-roundtrip.test.ts +181 -0
  241. package/src/__tests__/config.test.ts +740 -0
  242. package/src/__tests__/current-role.test.ts +438 -0
  243. package/src/__tests__/e2e-mock-agent.test.ts +498 -0
  244. package/src/__tests__/fixtures/e2e-completed-resume.mock.yaml +15 -0
  245. package/src/__tests__/fixtures/e2e-count.mock.yaml +19 -0
  246. package/src/__tests__/fixtures/e2e-count.workflow.yaml +45 -0
  247. package/src/__tests__/fixtures/e2e-linear.mock.yaml +13 -0
  248. package/src/__tests__/fixtures/e2e-linear.workflow.yaml +32 -0
  249. package/src/__tests__/fixtures/e2e-loop.mock.yaml +25 -0
  250. package/src/__tests__/fixtures/e2e-loop.workflow.yaml +36 -0
  251. package/src/__tests__/fixtures/e2e-mismatch.mock.yaml +16 -0
  252. package/src/__tests__/fixtures/e2e-mustache.mock.yaml +15 -0
  253. package/src/__tests__/fixtures/e2e-mustache.workflow.yaml +34 -0
  254. package/src/__tests__/fixtures/e2e-suspend.mock.yaml +14 -0
  255. package/src/__tests__/fixtures/e2e-suspend.workflow.yaml +24 -0
  256. package/src/__tests__/include-tag.test.ts +84 -0
  257. package/src/__tests__/log.test.ts +181 -0
  258. package/src/__tests__/moderator-evaluate.test.ts +186 -0
  259. package/src/__tests__/preload.ts +7 -0
  260. package/src/__tests__/prompt.test.ts +129 -0
  261. package/src/__tests__/resolve-head-hash.test.ts +86 -0
  262. package/src/__tests__/setup-agent-discovery.test.ts +167 -0
  263. package/src/__tests__/setup-complexity.test.ts +381 -0
  264. package/src/__tests__/setup-validate.test.ts +148 -0
  265. package/src/__tests__/solve-issue-tea-worktree.test.ts +144 -0
  266. package/src/__tests__/spawn-agent-json.test.ts +100 -0
  267. package/src/__tests__/step-read.test.ts +632 -0
  268. package/src/__tests__/step-show-json.test.ts +373 -0
  269. package/src/__tests__/step-timing.test.ts +392 -0
  270. package/src/__tests__/store-global-cas.test.ts +308 -0
  271. package/src/__tests__/store-storage-root.test.ts +49 -0
  272. package/src/__tests__/store-unified-threads.test.ts +235 -0
  273. package/src/__tests__/thread-cancel-status.test.ts +138 -0
  274. package/src/__tests__/thread-list-filters.test.ts +572 -0
  275. package/src/__tests__/thread-location.test.ts +186 -0
  276. package/src/__tests__/thread-read-quota.test.ts +613 -0
  277. package/src/__tests__/thread-read-xml-tags.test.ts +717 -0
  278. package/src/__tests__/thread-resume.test.ts +710 -0
  279. package/src/__tests__/thread-show-status.test.ts +317 -0
  280. package/src/__tests__/thread-start-cwd-cli.test.ts +164 -0
  281. package/src/__tests__/thread-step-count.test.ts +70 -0
  282. package/src/__tests__/thread-suspend-step.test.ts +181 -0
  283. package/src/__tests__/thread-suspended-display.test.ts +287 -0
  284. package/src/__tests__/thread-test-helpers.ts +37 -0
  285. package/src/__tests__/thread.test.ts +1025 -0
  286. package/src/__tests__/validate-semantic.test.ts +474 -0
  287. package/src/__tests__/workflow-resolution.test.ts +421 -0
  288. package/src/background/background.ts +147 -0
  289. package/src/background/index.ts +11 -0
  290. package/src/background/types.ts +9 -0
  291. package/src/cli.ts +692 -0
  292. package/src/commands/config.ts +304 -0
  293. package/src/commands/log.ts +116 -0
  294. package/src/commands/prompt.ts +81 -0
  295. package/src/commands/setup.ts +603 -0
  296. package/src/commands/shared.ts +227 -0
  297. package/src/commands/step.ts +343 -0
  298. package/src/commands/thread-time-parser.ts +23 -0
  299. package/src/commands/thread.ts +1575 -0
  300. package/src/commands/workflow.ts +213 -0
  301. package/src/format.ts +12 -0
  302. package/src/include.ts +37 -0
  303. package/src/moderator/__tests__/evaluate.test.ts +199 -0
  304. package/src/moderator/evaluate.ts +80 -0
  305. package/src/moderator/index.ts +7 -0
  306. package/src/moderator/types.ts +24 -0
  307. package/src/schemas.ts +26 -0
  308. package/src/store.ts +479 -0
  309. package/src/validate-semantic.ts +304 -0
  310. package/src/validate.ts +137 -0
@@ -0,0 +1,610 @@
1
+ import { mkdir, mkdtemp, rm } from "node:fs/promises";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { bootstrap, putSchema } from "@ocas/core";
5
+ import { afterEach, beforeEach, describe, expect, test } from "vitest";
6
+ import { cmdThreadRead, THREAD_READ_DEFAULT_QUOTA } from "../commands/thread.js";
7
+ import { createUwfStore } from "../store.js";
8
+ import { seedThreads } from "./thread-test-helpers.js";
9
+ // ── schemas used in tests ────────────────────────────────────────────────────
10
+ const TURN_SCHEMA = {
11
+ title: "hermes-turn",
12
+ type: "object",
13
+ required: ["index", "role", "content"],
14
+ properties: {
15
+ index: { type: "integer" },
16
+ role: { type: "string" },
17
+ content: { type: "string" },
18
+ toolCalls: {
19
+ anyOf: [
20
+ { type: "array", items: { type: "object" } },
21
+ { type: "null" },
22
+ ],
23
+ },
24
+ reasoning: { anyOf: [{ type: "string" }, { type: "null" }] },
25
+ },
26
+ additionalProperties: false,
27
+ };
28
+ const DETAIL_SCHEMA = {
29
+ title: "hermes-detail",
30
+ type: "object",
31
+ required: ["sessionId", "model", "duration", "turnCount", "turns"],
32
+ properties: {
33
+ sessionId: { type: "string" },
34
+ model: { type: "string" },
35
+ duration: { type: "integer" },
36
+ turnCount: { type: "integer" },
37
+ turns: {
38
+ type: "array",
39
+ items: { type: "string", format: "ocas_ref" },
40
+ },
41
+ },
42
+ additionalProperties: false,
43
+ };
44
+ // ── helpers ───────────────────────────────────────────────────────────────────
45
+ async function makeUwfStore(storageRoot) {
46
+ const casDir = join(storageRoot, "cas");
47
+ await mkdir(casDir, { recursive: true });
48
+ process.env.OCAS_HOME = casDir;
49
+ return createUwfStore(storageRoot);
50
+ }
51
+ async function registerDetailSchemas(store) {
52
+ await bootstrap(store);
53
+ const [turn, detail] = await Promise.all([
54
+ putSchema(store, TURN_SCHEMA),
55
+ putSchema(store, DETAIL_SCHEMA),
56
+ ]);
57
+ return { turn, detail };
58
+ }
59
+ // ── fixture ───────────────────────────────────────────────────────────────────
60
+ let tmpDir;
61
+ beforeEach(async () => {
62
+ tmpDir = await mkdtemp(join(tmpdir(), "cli-uwf-test-"));
63
+ });
64
+ afterEach(async () => {
65
+ await rm(tmpDir, { recursive: true, force: true });
66
+ });
67
+ // ── thread read XML tag isolation ─────────────────────────────────────────────
68
+ describe("thread read XML tag isolation", () => {
69
+ test("scenario 1: wraps output in XML tags instead of heading", async () => {
70
+ const uwf = await makeUwfStore(tmpDir);
71
+ const detailSchemas = await registerDetailSchemas(uwf.store);
72
+ const workflowHash = await uwf.store.cas.put(uwf.schemas.workflow, {
73
+ name: "test-wf",
74
+ description: "desc",
75
+ roles: {
76
+ planner: {
77
+ description: "Planner",
78
+ goal: "You are a planning agent. Your task is to...",
79
+ capabilities: [],
80
+ procedure: "Plan the work.",
81
+ output: "Summarize the plan.",
82
+ meta: "placeholder00",
83
+ },
84
+ },
85
+ conditions: {},
86
+ graph: {},
87
+ });
88
+ const startHash = await uwf.store.cas.put(uwf.schemas.startNode, {
89
+ workflow: workflowHash,
90
+ prompt: "Fix issue #459",
91
+ });
92
+ const outputHash = await uwf.store.cas.put(uwf.schemas.workflow, {
93
+ name: "out",
94
+ description: "",
95
+ roles: {},
96
+ conditions: {},
97
+ graph: {},
98
+ });
99
+ const turnHash = await uwf.store.cas.put(detailSchemas.turn, {
100
+ index: 0,
101
+ role: "assistant",
102
+ content: "---\nstatus: ready\nplan: CMWGHQKT58RY4\n---\n\n# Analysis Complete\n## Issue Summary\nThe issue requires XML tag isolation.",
103
+ toolCalls: null,
104
+ reasoning: null,
105
+ });
106
+ const detailHash = await uwf.store.cas.put(detailSchemas.detail, {
107
+ sessionId: "sx",
108
+ model: "mx",
109
+ duration: 500,
110
+ turnCount: 1,
111
+ turns: [turnHash],
112
+ });
113
+ const stepHash = await uwf.store.cas.put(uwf.schemas.stepNode, {
114
+ start: startHash,
115
+ prev: null,
116
+ role: "planner",
117
+ output: outputHash,
118
+ detail: detailHash,
119
+ agent: "uwf-claude-code",
120
+ startedAtMs: 1000000000000,
121
+ completedAtMs: 1000000005000,
122
+ assembledPrompt: null,
123
+ });
124
+ const threadId = "01JTEST0000000000000001";
125
+ await seedThreads(tmpDir, { [threadId]: stepHash });
126
+ const markdown = await cmdThreadRead(tmpDir, threadId, THREAD_READ_DEFAULT_QUOTA, null, false);
127
+ // Should wrap output in XML tags
128
+ expect(markdown).toContain("<output>");
129
+ expect(markdown).toContain("</output>");
130
+ // Should not have ### Content heading
131
+ expect(markdown).not.toContain("### Content");
132
+ // Should preserve markdown headings inside output tags
133
+ expect(markdown).toContain("# Analysis Complete");
134
+ expect(markdown).toContain("## Issue Summary");
135
+ });
136
+ test("scenario 2: wraps prompt in XML tags", async () => {
137
+ const uwf = await makeUwfStore(tmpDir);
138
+ const detailSchemas = await registerDetailSchemas(uwf.store);
139
+ const workflowHash = await uwf.store.cas.put(uwf.schemas.workflow, {
140
+ name: "test-wf",
141
+ description: "desc",
142
+ roles: {
143
+ planner: {
144
+ description: "Planner",
145
+ goal: "You are a planning agent. Your task is to analyze and plan.",
146
+ capabilities: [],
147
+ procedure: "Plan the work.",
148
+ output: "Summarize the plan.",
149
+ meta: "placeholder00",
150
+ },
151
+ },
152
+ conditions: {},
153
+ graph: {},
154
+ });
155
+ const startHash = await uwf.store.cas.put(uwf.schemas.startNode, {
156
+ workflow: workflowHash,
157
+ prompt: "Fix issue",
158
+ });
159
+ const outputHash = await uwf.store.cas.put(uwf.schemas.workflow, {
160
+ name: "out",
161
+ description: "",
162
+ roles: {},
163
+ conditions: {},
164
+ graph: {},
165
+ });
166
+ const turnHash = await uwf.store.cas.put(detailSchemas.turn, {
167
+ index: 0,
168
+ role: "assistant",
169
+ content: "---\nstatus: ready\n---\n\nContent here...",
170
+ toolCalls: null,
171
+ reasoning: null,
172
+ });
173
+ const detailHash = await uwf.store.cas.put(detailSchemas.detail, {
174
+ sessionId: "sx",
175
+ model: "mx",
176
+ duration: 500,
177
+ turnCount: 1,
178
+ turns: [turnHash],
179
+ });
180
+ const stepHash = await uwf.store.cas.put(uwf.schemas.stepNode, {
181
+ start: startHash,
182
+ prev: null,
183
+ role: "planner",
184
+ output: outputHash,
185
+ detail: detailHash,
186
+ agent: "uwf-claude-code",
187
+ startedAtMs: 1000000000000,
188
+ completedAtMs: 1000000005000,
189
+ assembledPrompt: null,
190
+ });
191
+ const threadId = "01JTEST0000000000000002";
192
+ await seedThreads(tmpDir, { [threadId]: stepHash });
193
+ const markdown = await cmdThreadRead(tmpDir, threadId, THREAD_READ_DEFAULT_QUOTA, null, false);
194
+ // Should wrap prompt in XML tags
195
+ expect(markdown).toContain("<prompt>");
196
+ expect(markdown).toContain("</prompt>");
197
+ expect(markdown).toContain("You are a planning agent. Your task is to analyze and plan.");
198
+ // Should not have ### Prompt heading
199
+ expect(markdown).not.toContain("### Prompt");
200
+ // Should wrap output in XML tags
201
+ expect(markdown).toContain("<output>");
202
+ expect(markdown).toContain("</output>");
203
+ });
204
+ test("scenario 3: same role repeated does not show prompt twice", async () => {
205
+ const uwf = await makeUwfStore(tmpDir);
206
+ const workflowHash = await uwf.store.cas.put(uwf.schemas.workflow, {
207
+ name: "test-wf",
208
+ description: "desc",
209
+ roles: {
210
+ writer: {
211
+ description: "Writer",
212
+ goal: "You are a writer agent.",
213
+ capabilities: [],
214
+ procedure: "Write content.",
215
+ output: "Summarize writing.",
216
+ meta: "placeholder00",
217
+ },
218
+ },
219
+ conditions: {},
220
+ graph: {},
221
+ });
222
+ const startHash = await uwf.store.cas.put(uwf.schemas.startNode, {
223
+ workflow: workflowHash,
224
+ prompt: "Write something",
225
+ });
226
+ const outputHash = await uwf.store.cas.put(uwf.schemas.workflow, {
227
+ name: "out",
228
+ description: "",
229
+ roles: {},
230
+ conditions: {},
231
+ graph: {},
232
+ });
233
+ const step1 = await uwf.store.cas.put(uwf.schemas.stepNode, {
234
+ start: startHash,
235
+ prev: null,
236
+ role: "writer",
237
+ output: outputHash,
238
+ detail: null,
239
+ agent: "uwf-test",
240
+ startedAtMs: 1000000000000,
241
+ completedAtMs: 1000000005000,
242
+ assembledPrompt: null,
243
+ });
244
+ const step2 = await uwf.store.cas.put(uwf.schemas.stepNode, {
245
+ start: startHash,
246
+ prev: step1,
247
+ role: "writer",
248
+ output: outputHash,
249
+ detail: null,
250
+ agent: "uwf-test",
251
+ startedAtMs: 1000000000000,
252
+ completedAtMs: 1000000005000,
253
+ assembledPrompt: null,
254
+ });
255
+ const threadId = "01JTEST0000000000000003";
256
+ await seedThreads(tmpDir, { [threadId]: step2 });
257
+ const markdown = await cmdThreadRead(tmpDir, threadId, THREAD_READ_DEFAULT_QUOTA, null, false);
258
+ // Should only show prompt tags once
259
+ const promptCount = (markdown.match(/<prompt>/g) ?? []).length;
260
+ expect(promptCount).toBe(1);
261
+ });
262
+ test("scenario 4: step with no detail shows no output tags", async () => {
263
+ const uwf = await makeUwfStore(tmpDir);
264
+ const workflowHash = await uwf.store.cas.put(uwf.schemas.workflow, {
265
+ name: "test-wf",
266
+ description: "desc",
267
+ roles: {
268
+ worker: {
269
+ description: "Worker",
270
+ goal: "You are a worker agent.",
271
+ capabilities: [],
272
+ procedure: "Do work.",
273
+ output: "Summarize work.",
274
+ meta: "placeholder00",
275
+ },
276
+ },
277
+ conditions: {},
278
+ graph: {},
279
+ });
280
+ const startHash = await uwf.store.cas.put(uwf.schemas.startNode, {
281
+ workflow: workflowHash,
282
+ prompt: "Do stuff",
283
+ });
284
+ const outputHash = await uwf.store.cas.put(uwf.schemas.workflow, {
285
+ name: "out",
286
+ description: "",
287
+ roles: {},
288
+ conditions: {},
289
+ graph: {},
290
+ });
291
+ const stepHash = await uwf.store.cas.put(uwf.schemas.stepNode, {
292
+ start: startHash,
293
+ prev: null,
294
+ role: "worker",
295
+ output: outputHash,
296
+ detail: null,
297
+ agent: "uwf-test",
298
+ startedAtMs: 1000000000000,
299
+ completedAtMs: 1000000005000,
300
+ assembledPrompt: null,
301
+ });
302
+ const threadId = "01JTEST0000000000000004";
303
+ await seedThreads(tmpDir, { [threadId]: stepHash });
304
+ const markdown = await cmdThreadRead(tmpDir, threadId, THREAD_READ_DEFAULT_QUOTA, null, false);
305
+ // Should not have output tags
306
+ expect(markdown).not.toContain("<output>");
307
+ expect(markdown).not.toContain("</output>");
308
+ // Step header should still be displayed
309
+ expect(markdown).toContain("## Step 1: worker");
310
+ // Prompt should still be shown
311
+ expect(markdown).toContain("<prompt>");
312
+ });
313
+ test("scenario 5: empty content shows no output tags", async () => {
314
+ const uwf = await makeUwfStore(tmpDir);
315
+ const workflowHash = await uwf.store.cas.put(uwf.schemas.workflow, {
316
+ name: "test-wf",
317
+ description: "desc",
318
+ roles: {},
319
+ conditions: {},
320
+ graph: {},
321
+ });
322
+ const startHash = await uwf.store.cas.put(uwf.schemas.startNode, {
323
+ workflow: workflowHash,
324
+ prompt: "Do stuff",
325
+ });
326
+ const outputHash = await uwf.store.cas.put(uwf.schemas.workflow, {
327
+ name: "out",
328
+ description: "",
329
+ roles: {},
330
+ conditions: {},
331
+ graph: {},
332
+ });
333
+ // A detail ref that doesn't exist → extractLastAssistantContent returns null
334
+ const missingDetailRef = "missingdetail0";
335
+ const stepHash = await uwf.store.cas.put(uwf.schemas.stepNode, {
336
+ start: startHash,
337
+ prev: null,
338
+ role: "worker",
339
+ output: outputHash,
340
+ detail: missingDetailRef,
341
+ agent: "uwf-test",
342
+ startedAtMs: 1000000000000,
343
+ completedAtMs: 1000000005000,
344
+ assembledPrompt: null,
345
+ });
346
+ const threadId = "01JTEST0000000000000005";
347
+ await seedThreads(tmpDir, { [threadId]: stepHash });
348
+ const markdown = await cmdThreadRead(tmpDir, threadId, THREAD_READ_DEFAULT_QUOTA, null, false);
349
+ // Should not have output tags
350
+ expect(markdown).not.toContain("<output>");
351
+ expect(markdown).not.toContain("</output>");
352
+ });
353
+ test("scenario 6: thread read with --start flag shows task section", async () => {
354
+ const uwf = await makeUwfStore(tmpDir);
355
+ const workflowHash = await uwf.store.cas.put(uwf.schemas.workflow, {
356
+ name: "test-wf",
357
+ description: "desc",
358
+ roles: {
359
+ roleA: {
360
+ description: "Role A",
361
+ goal: "Goal for roleA",
362
+ capabilities: [],
363
+ procedure: "Do stuff.",
364
+ output: "Output.",
365
+ meta: "placeholder00",
366
+ },
367
+ },
368
+ conditions: {},
369
+ graph: {},
370
+ });
371
+ const startHash = await uwf.store.cas.put(uwf.schemas.startNode, {
372
+ workflow: workflowHash,
373
+ prompt: "Initial prompt",
374
+ });
375
+ const outputHash = await uwf.store.cas.put(uwf.schemas.workflow, {
376
+ name: "out",
377
+ description: "",
378
+ roles: {},
379
+ conditions: {},
380
+ graph: {},
381
+ });
382
+ const stepHash = await uwf.store.cas.put(uwf.schemas.stepNode, {
383
+ start: startHash,
384
+ prev: null,
385
+ role: "roleA",
386
+ output: outputHash,
387
+ detail: null,
388
+ agent: "uwf-test",
389
+ startedAtMs: 1000000000000,
390
+ completedAtMs: 1000000005000,
391
+ assembledPrompt: null,
392
+ });
393
+ const threadId = "01JTEST0000000000000006";
394
+ await seedThreads(tmpDir, { [threadId]: stepHash });
395
+ const markdown = await cmdThreadRead(tmpDir, threadId, THREAD_READ_DEFAULT_QUOTA, null, true);
396
+ // Should include task section
397
+ expect(markdown).toContain("# Thread");
398
+ expect(markdown).toContain("## Task");
399
+ expect(markdown).toContain("Initial prompt");
400
+ // Prompts should use XML tags
401
+ expect(markdown).toContain("<prompt>");
402
+ });
403
+ test("scenario 7: thread read with --before parameter", async () => {
404
+ const uwf = await makeUwfStore(tmpDir);
405
+ const workflowHash = await uwf.store.cas.put(uwf.schemas.workflow, {
406
+ name: "test-wf",
407
+ description: "desc",
408
+ roles: {
409
+ roleA: {
410
+ description: "Role A",
411
+ goal: "Goal for roleA",
412
+ capabilities: [],
413
+ procedure: "Do stuff.",
414
+ output: "Output.",
415
+ meta: "placeholder00",
416
+ },
417
+ roleB: {
418
+ description: "Role B",
419
+ goal: "Goal for roleB",
420
+ capabilities: [],
421
+ procedure: "Do stuff.",
422
+ output: "Output.",
423
+ meta: "placeholder00",
424
+ },
425
+ roleC: {
426
+ description: "Role C",
427
+ goal: "Goal for roleC",
428
+ capabilities: [],
429
+ procedure: "Do stuff.",
430
+ output: "Output.",
431
+ meta: "placeholder00",
432
+ },
433
+ },
434
+ conditions: {},
435
+ graph: {},
436
+ });
437
+ const startHash = await uwf.store.cas.put(uwf.schemas.startNode, {
438
+ workflow: workflowHash,
439
+ prompt: "Initial prompt",
440
+ });
441
+ const outputHash = await uwf.store.cas.put(uwf.schemas.workflow, {
442
+ name: "out",
443
+ description: "",
444
+ roles: {},
445
+ conditions: {},
446
+ graph: {},
447
+ });
448
+ const step1 = await uwf.store.cas.put(uwf.schemas.stepNode, {
449
+ start: startHash,
450
+ prev: null,
451
+ role: "roleA",
452
+ output: outputHash,
453
+ detail: null,
454
+ agent: "uwf-test",
455
+ startedAtMs: 1000000000000,
456
+ completedAtMs: 1000000005000,
457
+ assembledPrompt: null,
458
+ });
459
+ const step2 = await uwf.store.cas.put(uwf.schemas.stepNode, {
460
+ start: startHash,
461
+ prev: step1,
462
+ role: "roleB",
463
+ output: outputHash,
464
+ detail: null,
465
+ agent: "uwf-test",
466
+ startedAtMs: 1000000000000,
467
+ completedAtMs: 1000000005000,
468
+ assembledPrompt: null,
469
+ });
470
+ const step3 = await uwf.store.cas.put(uwf.schemas.stepNode, {
471
+ start: startHash,
472
+ prev: step2,
473
+ role: "roleC",
474
+ output: outputHash,
475
+ detail: null,
476
+ agent: "uwf-test",
477
+ startedAtMs: 1000000000000,
478
+ completedAtMs: 1000000005000,
479
+ assembledPrompt: null,
480
+ });
481
+ const threadId = "01JTEST0000000000000007";
482
+ await seedThreads(tmpDir, { [threadId]: step3 });
483
+ const markdown = await cmdThreadRead(tmpDir, threadId, THREAD_READ_DEFAULT_QUOTA, step2, false);
484
+ // Should only show roleA
485
+ expect(markdown).toContain("roleA");
486
+ expect(markdown).not.toContain("roleB");
487
+ expect(markdown).not.toContain("roleC");
488
+ // Should use XML tags
489
+ expect(markdown).toContain("<prompt>");
490
+ });
491
+ test("scenario 9: special characters in content are preserved", async () => {
492
+ const uwf = await makeUwfStore(tmpDir);
493
+ const detailSchemas = await registerDetailSchemas(uwf.store);
494
+ const workflowHash = await uwf.store.cas.put(uwf.schemas.workflow, {
495
+ name: "test-wf",
496
+ description: "desc",
497
+ roles: {
498
+ writer: {
499
+ description: "Writer",
500
+ goal: "You are a writer.",
501
+ capabilities: [],
502
+ procedure: "Write content.",
503
+ output: "Summarize.",
504
+ meta: "placeholder00",
505
+ },
506
+ },
507
+ conditions: {},
508
+ graph: {},
509
+ });
510
+ const startHash = await uwf.store.cas.put(uwf.schemas.startNode, {
511
+ workflow: workflowHash,
512
+ prompt: "Write something",
513
+ });
514
+ const outputHash = await uwf.store.cas.put(uwf.schemas.workflow, {
515
+ name: "out",
516
+ description: "",
517
+ roles: {},
518
+ conditions: {},
519
+ graph: {},
520
+ });
521
+ const turnHash = await uwf.store.cas.put(detailSchemas.turn, {
522
+ index: 0,
523
+ role: "assistant",
524
+ content: "Content with <special> & characters > like <this>",
525
+ toolCalls: null,
526
+ reasoning: null,
527
+ });
528
+ const detailHash = await uwf.store.cas.put(detailSchemas.detail, {
529
+ sessionId: "sx",
530
+ model: "mx",
531
+ duration: 500,
532
+ turnCount: 1,
533
+ turns: [turnHash],
534
+ });
535
+ const stepHash = await uwf.store.cas.put(uwf.schemas.stepNode, {
536
+ start: startHash,
537
+ prev: null,
538
+ role: "writer",
539
+ output: outputHash,
540
+ detail: detailHash,
541
+ agent: "uwf-test",
542
+ startedAtMs: 1000000000000,
543
+ completedAtMs: 1000000005000,
544
+ assembledPrompt: null,
545
+ });
546
+ const threadId = "01JTEST0000000000000008";
547
+ await seedThreads(tmpDir, { [threadId]: stepHash });
548
+ const markdown = await cmdThreadRead(tmpDir, threadId, THREAD_READ_DEFAULT_QUOTA, null, false);
549
+ // Special characters should be preserved as-is
550
+ expect(markdown).toContain("Content with <special> & characters > like <this>");
551
+ });
552
+ test("scenario 10: quota limit with XML tags", async () => {
553
+ const uwf = await makeUwfStore(tmpDir);
554
+ const workflowHash = await uwf.store.cas.put(uwf.schemas.workflow, {
555
+ name: "test-wf",
556
+ description: "desc",
557
+ roles: {
558
+ roleA: {
559
+ description: "Role A",
560
+ goal: "Goal for roleA",
561
+ capabilities: [],
562
+ procedure: "Do stuff.",
563
+ output: "Output.",
564
+ meta: "placeholder00",
565
+ },
566
+ },
567
+ conditions: {},
568
+ graph: {},
569
+ });
570
+ const startHash = await uwf.store.cas.put(uwf.schemas.startNode, {
571
+ workflow: workflowHash,
572
+ prompt: "Initial prompt",
573
+ });
574
+ const outputHash = await uwf.store.cas.put(uwf.schemas.workflow, {
575
+ name: "out",
576
+ description: "",
577
+ roles: {},
578
+ conditions: {},
579
+ graph: {},
580
+ });
581
+ const steps = [];
582
+ let prev = null;
583
+ for (let i = 0; i < 5; i++) {
584
+ const step = (await uwf.store.cas.put(uwf.schemas.stepNode, {
585
+ start: startHash,
586
+ prev,
587
+ role: "roleA",
588
+ output: outputHash,
589
+ detail: null,
590
+ agent: "uwf-test",
591
+ startedAtMs: 1000000000000,
592
+ completedAtMs: 1000000005000,
593
+ assembledPrompt: null,
594
+ }));
595
+ steps.push(step);
596
+ prev = step;
597
+ }
598
+ const threadId = "01JTEST0000000000000009";
599
+ await seedThreads(tmpDir, { [threadId]: steps[steps.length - 1] });
600
+ // Use very small quota
601
+ const markdown = await cmdThreadRead(tmpDir, threadId, 1, null, false);
602
+ // Should have skip hint
603
+ expect(markdown).toContain("earlier step");
604
+ // Should have XML tags for displayed steps
605
+ if (markdown.includes("<prompt>")) {
606
+ expect(markdown).toContain("</prompt>");
607
+ }
608
+ });
609
+ });
610
+ //# sourceMappingURL=thread-read-xml-tags.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-read-xml-tags.test.js","sourceRoot":"","sources":["../../src/__tests__/thread-read-xml-tags.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=thread-resume.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-resume.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/thread-resume.test.ts"],"names":[],"mappings":""}