@united-workforce/cli 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +32 -5
  2. package/dist/.build-fingerprint +1 -0
  3. package/dist/__tests__/broker-step-active-turns.test.d.ts +20 -0
  4. package/dist/__tests__/broker-step-active-turns.test.d.ts.map +1 -0
  5. package/dist/__tests__/broker-step-active-turns.test.js +428 -0
  6. package/dist/__tests__/broker-step-active-turns.test.js.map +1 -0
  7. package/dist/__tests__/broker-step-turn-chain-phase2.test.d.ts +13 -0
  8. package/dist/__tests__/broker-step-turn-chain-phase2.test.d.ts.map +1 -0
  9. package/dist/__tests__/broker-step-turn-chain-phase2.test.js +429 -0
  10. package/dist/__tests__/broker-step-turn-chain-phase2.test.js.map +1 -0
  11. package/dist/__tests__/e2e-broker-step-suspend.test.d.ts +18 -0
  12. package/dist/__tests__/e2e-broker-step-suspend.test.d.ts.map +1 -0
  13. package/dist/__tests__/e2e-broker-step-suspend.test.js +313 -0
  14. package/dist/__tests__/e2e-broker-step-suspend.test.js.map +1 -0
  15. package/dist/__tests__/e2e-thread-resume-timeout-suspend.test.d.ts +28 -0
  16. package/dist/__tests__/e2e-thread-resume-timeout-suspend.test.d.ts.map +1 -0
  17. package/dist/__tests__/e2e-thread-resume-timeout-suspend.test.js +322 -0
  18. package/dist/__tests__/e2e-thread-resume-timeout-suspend.test.js.map +1 -0
  19. package/dist/__tests__/log-tag-validity.test.d.ts +2 -0
  20. package/dist/__tests__/log-tag-validity.test.d.ts.map +1 -0
  21. package/dist/__tests__/log-tag-validity.test.js +110 -0
  22. package/dist/__tests__/log-tag-validity.test.js.map +1 -0
  23. package/dist/__tests__/setup-agent-discovery.test.js +23 -23
  24. package/dist/__tests__/setup-agent-discovery.test.js.map +1 -1
  25. package/dist/__tests__/step-show-json.test.js +5 -5
  26. package/dist/__tests__/step-show-json.test.js.map +1 -1
  27. package/dist/__tests__/step-show-text.test.d.ts +2 -0
  28. package/dist/__tests__/step-show-text.test.d.ts.map +1 -0
  29. package/dist/__tests__/step-show-text.test.js +192 -0
  30. package/dist/__tests__/step-show-text.test.js.map +1 -0
  31. package/dist/__tests__/step-turns-cli-subprocess.test.d.ts +21 -0
  32. package/dist/__tests__/step-turns-cli-subprocess.test.d.ts.map +1 -0
  33. package/dist/__tests__/step-turns-cli-subprocess.test.js +356 -0
  34. package/dist/__tests__/step-turns-cli-subprocess.test.js.map +1 -0
  35. package/dist/__tests__/step-turns-panorama-phase3.test.d.ts +21 -0
  36. package/dist/__tests__/step-turns-panorama-phase3.test.d.ts.map +1 -0
  37. package/dist/__tests__/step-turns-panorama-phase3.test.js +476 -0
  38. package/dist/__tests__/step-turns-panorama-phase3.test.js.map +1 -0
  39. package/dist/__tests__/step-turns.test.d.ts +24 -0
  40. package/dist/__tests__/step-turns.test.d.ts.map +1 -0
  41. package/dist/__tests__/step-turns.test.js +646 -0
  42. package/dist/__tests__/step-turns.test.js.map +1 -0
  43. package/dist/__tests__/store-turn-chain.test.d.ts +2 -0
  44. package/dist/__tests__/store-turn-chain.test.d.ts.map +1 -0
  45. package/dist/__tests__/store-turn-chain.test.js +341 -0
  46. package/dist/__tests__/store-turn-chain.test.js.map +1 -0
  47. package/dist/__tests__/thread-list-limit-offset.test.d.ts +24 -0
  48. package/dist/__tests__/thread-list-limit-offset.test.d.ts.map +1 -0
  49. package/dist/__tests__/thread-list-limit-offset.test.js +254 -0
  50. package/dist/__tests__/thread-list-limit-offset.test.js.map +1 -0
  51. package/dist/__tests__/thread-list-template-ms-date.test.js +7 -2
  52. package/dist/__tests__/thread-list-template-ms-date.test.js.map +1 -1
  53. package/dist/__tests__/thread.test.js +28 -14
  54. package/dist/__tests__/thread.test.js.map +1 -1
  55. package/dist/cli.js +910 -344
  56. package/dist/cli.js.map +1 -1
  57. package/dist/commands/broker-step.d.ts +10 -3
  58. package/dist/commands/broker-step.d.ts.map +1 -1
  59. package/dist/commands/broker-step.js +231 -27
  60. package/dist/commands/broker-step.js.map +1 -1
  61. package/dist/commands/prompt.d.ts.map +1 -1
  62. package/dist/commands/prompt.js +42 -50
  63. package/dist/commands/prompt.js.map +1 -1
  64. package/dist/commands/setup.d.ts +6 -4
  65. package/dist/commands/setup.d.ts.map +1 -1
  66. package/dist/commands/setup.js +16 -26
  67. package/dist/commands/setup.js.map +1 -1
  68. package/dist/commands/step.d.ts +48 -1
  69. package/dist/commands/step.d.ts.map +1 -1
  70. package/dist/commands/step.js +496 -3
  71. package/dist/commands/step.js.map +1 -1
  72. package/dist/output-mappers.d.ts +8 -0
  73. package/dist/output-mappers.d.ts.map +1 -1
  74. package/dist/output-mappers.js +72 -18
  75. package/dist/output-mappers.js.map +1 -1
  76. package/dist/schemas.d.ts +3 -0
  77. package/dist/schemas.d.ts.map +1 -1
  78. package/dist/schemas.js +17 -3
  79. package/dist/schemas.js.map +1 -1
  80. package/dist/store.d.ts +147 -1
  81. package/dist/store.d.ts.map +1 -1
  82. package/dist/store.js +254 -1
  83. package/dist/store.js.map +1 -1
  84. package/dist/text-renderers.d.ts.map +1 -1
  85. package/dist/text-renderers.js +27 -2
  86. package/dist/text-renderers.js.map +1 -1
  87. package/package.json +7 -6
  88. package/src/__tests__/broker-step-active-turns.test.ts +509 -0
  89. package/src/__tests__/broker-step-turn-chain-phase2.test.ts +525 -0
  90. package/src/__tests__/e2e-broker-step-suspend.test.ts +351 -0
  91. package/src/__tests__/e2e-thread-resume-timeout-suspend.test.ts +360 -0
  92. package/src/__tests__/log-tag-validity.test.ts +124 -0
  93. package/src/__tests__/setup-agent-discovery.test.ts +23 -23
  94. package/src/__tests__/step-show-json.test.ts +5 -5
  95. package/src/__tests__/step-show-text.test.ts +236 -0
  96. package/src/__tests__/step-turns-cli-subprocess.test.ts +411 -0
  97. package/src/__tests__/step-turns-panorama-phase3.test.ts +579 -0
  98. package/src/__tests__/step-turns.test.ts +734 -0
  99. package/src/__tests__/store-turn-chain.test.ts +386 -0
  100. package/src/__tests__/thread-list-limit-offset.test.ts +305 -0
  101. package/src/__tests__/thread-list-template-ms-date.test.ts +7 -2
  102. package/src/__tests__/thread.test.ts +29 -15
  103. package/src/cli.ts +1056 -483
  104. package/src/commands/broker-step.ts +315 -38
  105. package/src/commands/prompt.ts +42 -50
  106. package/src/commands/setup.ts +16 -28
  107. package/src/commands/step.ts +655 -3
  108. package/src/output-mappers.ts +99 -21
  109. package/src/schemas.ts +32 -2
  110. package/src/store.ts +297 -2
  111. package/src/text-renderers.ts +35 -2
@@ -69,6 +69,11 @@ describe("THREAD_LIST_TEMPLATE rendering — issue #351 ms→s for `| date`", ()
69
69
 
70
70
  test("renders multiple ms timestamps across years 2020–2030 with correct year prefix", async () => {
71
71
  const engine = makeEngine();
72
+ // `| date` renders in the process-local timezone, so calendar-boundary UTC
73
+ // instants (Jan 1 00:00, Dec 31 23:59) can land in an adjacent year under a
74
+ // non-UTC offset (e.g. Dec 31 2030 23:59Z → 2031-01-01 in +0800). Use
75
+ // mid-year, midday UTC instants so the rendered year is stable for any real
76
+ // timezone offset (within ±14h) while still exercising the ms→s conversion.
72
77
  const items = [
73
78
  {
74
79
  threadId: "ID1",
@@ -76,7 +81,7 @@ describe("THREAD_LIST_TEMPLATE rendering — issue #351 ms→s for `| date`", ()
76
81
  workflowName: null,
77
82
  status: "idle",
78
83
  currentRole: null,
79
- startedAt: Date.UTC(2020, 0, 1, 0, 0, 0),
84
+ startedAt: Date.UTC(2020, 5, 15, 12, 0, 0),
80
85
  completedAt: null,
81
86
  },
82
87
  {
@@ -94,7 +99,7 @@ describe("THREAD_LIST_TEMPLATE rendering — issue #351 ms→s for `| date`", ()
94
99
  workflowName: null,
95
100
  status: "idle",
96
101
  currentRole: null,
97
- startedAt: Date.UTC(2030, 11, 31, 23, 59, 0),
102
+ startedAt: Date.UTC(2030, 5, 15, 12, 0, 0),
98
103
  completedAt: null,
99
104
  },
100
105
  ];
@@ -316,7 +316,7 @@ describe("cmdThreadRead <output> section", () => {
316
316
  // ── cmdStepShow ───────────────────────────────────────────────────────────────
317
317
 
318
318
  describe("cmdStepShow", () => {
319
- test("returns expanded detail node with turns inlined", async () => {
319
+ test("returns merged StepNode metadata + expanded detail with turns inlined", async () => {
320
320
  const uwf = await makeUwfStore(tmpDir);
321
321
  const detailSchemas = await registerDetailSchemas(uwf.store);
322
322
 
@@ -363,18 +363,22 @@ describe("cmdStepShow", () => {
363
363
  agent: "uwf-hermes",
364
364
  });
365
365
 
366
- const result = await cmdStepShow(tmpDir, stepHash);
366
+ const result = (await cmdStepShow(tmpDir, stepHash)) as Record<string, unknown>;
367
367
 
368
- expect(result).toMatchObject({
368
+ expect(result.hash).toBe(stepHash);
369
+ expect(result.role).toBe("coder");
370
+ expect(result.agent).toBe("uwf-hermes");
371
+ expect(result.usage).toBeNull();
372
+
373
+ const detail = result.detail as Record<string, unknown>;
374
+ expect(detail).toMatchObject({
369
375
  sessionId: "sess42",
370
376
  model: "gpt-4o",
371
377
  duration: 3000,
372
378
  turnCount: 1,
373
379
  });
374
-
375
- const expanded = result as Record<string, unknown>;
376
- expect(Array.isArray(expanded.turns)).toBe(true);
377
- const turns = expanded.turns as unknown[];
380
+ expect(Array.isArray(detail.turns)).toBe(true);
381
+ const turns = detail.turns as unknown[];
378
382
  expect(turns).toHaveLength(1);
379
383
  expect(turns[0]).toMatchObject({
380
384
  index: 0,
@@ -817,10 +821,15 @@ describe("cmdStepShow with completed threads", () => {
817
821
  const result = await cmdStepShow(tmpDir, stepHash);
818
822
 
819
823
  expect(result).toMatchObject({
820
- sessionId: "sess-active",
821
- model: "model-x",
822
- duration: 1234,
823
- turnCount: 1,
824
+ hash: stepHash,
825
+ role: "coder",
826
+ agent: "uwf-hermes",
827
+ detail: {
828
+ sessionId: "sess-active",
829
+ model: "model-x",
830
+ duration: 1234,
831
+ turnCount: 1,
832
+ },
824
833
  });
825
834
  });
826
835
 
@@ -886,10 +895,15 @@ describe("cmdStepShow with completed threads", () => {
886
895
  const result = await cmdStepShow(tmpDir, stepHash);
887
896
 
888
897
  expect(result).toMatchObject({
889
- sessionId: "sess-completed",
890
- model: "model-y",
891
- duration: 5678,
892
- turnCount: 1,
898
+ hash: stepHash,
899
+ role: "reviewer",
900
+ agent: "uwf-hermes",
901
+ detail: {
902
+ sessionId: "sess-completed",
903
+ model: "model-y",
904
+ duration: 5678,
905
+ turnCount: 1,
906
+ },
893
907
  });
894
908
  });
895
909
  });