@pennixrv/trellis-core 0.7.0-beta.9 → 0.7.1-beta.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 (231) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/mem/adapters/claude.d.ts +1 -1
  6. package/dist/mem/adapters/claude.js +1 -1
  7. package/dist/mem/adapters/codex.d.ts +1 -1
  8. package/dist/mem/adapters/codex.js +1 -1
  9. package/dist/mem/adapters/devin.d.ts +1 -1
  10. package/dist/mem/adapters/devin.js +1 -1
  11. package/dist/mem/adapters/grok.d.ts +1 -1
  12. package/dist/mem/adapters/grok.js +1 -1
  13. package/dist/mem/adapters/zcode.d.ts +1 -1
  14. package/dist/mem/adapters/zcode.js +1 -1
  15. package/dist/mem/index.d.ts +3 -3
  16. package/dist/mem/index.js +3 -3
  17. package/dist/mem/phase.d.ts +4 -4
  18. package/dist/mem/phase.d.ts.map +1 -1
  19. package/dist/mem/phase.js +23 -26
  20. package/dist/mem/phase.js.map +1 -1
  21. package/dist/mem/sessions.js +2 -2
  22. package/dist/mem/sessions.js.map +1 -1
  23. package/dist/mem/types.d.ts +6 -6
  24. package/dist/mem/types.d.ts.map +1 -1
  25. package/dist/mem/types.js +3 -3
  26. package/dist/task/index.d.ts +2 -2
  27. package/dist/task/index.d.ts.map +1 -1
  28. package/dist/task/index.js +2 -2
  29. package/dist/task/index.js.map +1 -1
  30. package/dist/task/phase.d.ts +61 -26
  31. package/dist/task/phase.d.ts.map +1 -1
  32. package/dist/task/phase.js +152 -21
  33. package/dist/task/phase.js.map +1 -1
  34. package/dist/teamwork/api/assert.d.ts +3 -0
  35. package/dist/teamwork/api/assert.d.ts.map +1 -0
  36. package/dist/teamwork/api/assert.js +11 -0
  37. package/dist/teamwork/api/assert.js.map +1 -0
  38. package/dist/{channel → teamwork}/api/context.d.ts +8 -8
  39. package/dist/teamwork/api/context.d.ts.map +1 -0
  40. package/dist/{channel → teamwork}/api/context.js +32 -32
  41. package/dist/teamwork/api/context.js.map +1 -0
  42. package/dist/teamwork/api/coordination.d.ts +40 -0
  43. package/dist/teamwork/api/coordination.d.ts.map +1 -0
  44. package/dist/teamwork/api/coordination.js +50 -0
  45. package/dist/teamwork/api/coordination.js.map +1 -0
  46. package/dist/teamwork/api/create.d.ts +9 -0
  47. package/dist/teamwork/api/create.d.ts.map +1 -0
  48. package/dist/{channel → teamwork}/api/create.js +17 -20
  49. package/dist/teamwork/api/create.js.map +1 -0
  50. package/dist/{channel → teamwork}/api/inbox.d.ts +9 -9
  51. package/dist/teamwork/api/inbox.d.ts.map +1 -0
  52. package/dist/{channel → teamwork}/api/inbox.js +22 -22
  53. package/dist/teamwork/api/inbox.js.map +1 -0
  54. package/dist/{channel → teamwork}/api/interrupt.d.ts +5 -5
  55. package/dist/teamwork/api/interrupt.d.ts.map +1 -0
  56. package/dist/{channel → teamwork}/api/interrupt.js +10 -10
  57. package/dist/teamwork/api/interrupt.js.map +1 -0
  58. package/dist/{channel → teamwork}/api/post-thread.d.ts +4 -4
  59. package/dist/teamwork/api/post-thread.d.ts.map +1 -0
  60. package/dist/{channel → teamwork}/api/post-thread.js +13 -13
  61. package/dist/teamwork/api/post-thread.js.map +1 -0
  62. package/dist/teamwork/api/read.d.ts +17 -0
  63. package/dist/teamwork/api/read.d.ts.map +1 -0
  64. package/dist/{channel → teamwork}/api/read.js +17 -17
  65. package/dist/teamwork/api/read.js.map +1 -0
  66. package/dist/teamwork/api/resolve.d.ts +21 -0
  67. package/dist/teamwork/api/resolve.d.ts.map +1 -0
  68. package/dist/teamwork/api/resolve.js +28 -0
  69. package/dist/teamwork/api/resolve.js.map +1 -0
  70. package/dist/{channel → teamwork}/api/runtime.d.ts +4 -4
  71. package/dist/teamwork/api/runtime.d.ts.map +1 -0
  72. package/dist/teamwork/api/runtime.js.map +1 -0
  73. package/dist/teamwork/api/send.d.ts +4 -0
  74. package/dist/teamwork/api/send.d.ts.map +1 -0
  75. package/dist/{channel → teamwork}/api/send.js +7 -7
  76. package/dist/teamwork/api/send.js.map +1 -0
  77. package/dist/{channel → teamwork}/api/spawn.d.ts +1 -1
  78. package/dist/teamwork/api/spawn.d.ts.map +1 -0
  79. package/dist/teamwork/api/spawn.js +54 -0
  80. package/dist/teamwork/api/spawn.js.map +1 -0
  81. package/dist/teamwork/api/title.d.ts +5 -0
  82. package/dist/teamwork/api/title.d.ts.map +1 -0
  83. package/dist/{channel → teamwork}/api/title.js +12 -12
  84. package/dist/teamwork/api/title.js.map +1 -0
  85. package/dist/{channel → teamwork}/api/types.d.ts +11 -13
  86. package/dist/teamwork/api/types.d.ts.map +1 -0
  87. package/dist/{channel → teamwork}/api/types.js.map +1 -1
  88. package/dist/teamwork/api/watch-sessions.d.ts +40 -0
  89. package/dist/teamwork/api/watch-sessions.d.ts.map +1 -0
  90. package/dist/{channel/api/watch-channels.js → teamwork/api/watch-sessions.js} +16 -16
  91. package/dist/teamwork/api/watch-sessions.js.map +1 -0
  92. package/dist/teamwork/api/watch.d.ts +11 -0
  93. package/dist/teamwork/api/watch.d.ts.map +1 -0
  94. package/dist/{channel → teamwork}/api/watch.js +5 -5
  95. package/dist/teamwork/api/watch.js.map +1 -0
  96. package/dist/{channel → teamwork}/api/workers.d.ts +10 -10
  97. package/dist/teamwork/api/workers.d.ts.map +1 -0
  98. package/dist/{channel → teamwork}/api/workers.js +14 -14
  99. package/dist/teamwork/api/workers.js.map +1 -0
  100. package/dist/teamwork/index.d.ts +42 -0
  101. package/dist/teamwork/index.d.ts.map +1 -0
  102. package/dist/teamwork/index.js +25 -0
  103. package/dist/teamwork/index.js.map +1 -0
  104. package/dist/teamwork/internal/store/coordination.d.ts +64 -0
  105. package/dist/teamwork/internal/store/coordination.d.ts.map +1 -0
  106. package/dist/teamwork/internal/store/coordination.js +311 -0
  107. package/dist/teamwork/internal/store/coordination.js.map +1 -0
  108. package/dist/teamwork/internal/store/delivery.d.ts.map +1 -0
  109. package/dist/teamwork/internal/store/delivery.js.map +1 -0
  110. package/dist/teamwork/internal/store/events.d.ts +232 -0
  111. package/dist/teamwork/internal/store/events.d.ts.map +1 -0
  112. package/dist/{channel → teamwork}/internal/store/events.js +24 -21
  113. package/dist/teamwork/internal/store/events.js.map +1 -0
  114. package/dist/{channel → teamwork}/internal/store/filter.d.ts +5 -5
  115. package/dist/teamwork/internal/store/filter.d.ts.map +1 -0
  116. package/dist/{channel → teamwork}/internal/store/filter.js +1 -1
  117. package/dist/teamwork/internal/store/filter.js.map +1 -0
  118. package/dist/{channel → teamwork}/internal/store/inbox.d.ts +3 -3
  119. package/dist/teamwork/internal/store/inbox.d.ts.map +1 -0
  120. package/dist/{channel → teamwork}/internal/store/inbox.js +1 -1
  121. package/dist/teamwork/internal/store/inbox.js.map +1 -0
  122. package/dist/teamwork/internal/store/lock.d.ts.map +1 -0
  123. package/dist/{channel → teamwork}/internal/store/lock.js +1 -1
  124. package/dist/teamwork/internal/store/lock.js.map +1 -0
  125. package/dist/{channel → teamwork}/internal/store/paths.d.ts +17 -23
  126. package/dist/teamwork/internal/store/paths.d.ts.map +1 -0
  127. package/dist/{channel → teamwork}/internal/store/paths.js +44 -98
  128. package/dist/teamwork/internal/store/paths.js.map +1 -0
  129. package/dist/{channel → teamwork}/internal/store/schema.d.ts +12 -19
  130. package/dist/teamwork/internal/store/schema.d.ts.map +1 -0
  131. package/dist/{channel → teamwork}/internal/store/schema.js +4 -7
  132. package/dist/teamwork/internal/store/schema.js.map +1 -0
  133. package/dist/{channel → teamwork}/internal/store/seq.d.ts +2 -2
  134. package/dist/teamwork/internal/store/seq.d.ts.map +1 -0
  135. package/dist/{channel → teamwork}/internal/store/seq.js +3 -3
  136. package/dist/teamwork/internal/store/seq.js.map +1 -0
  137. package/dist/teamwork/internal/store/teamwork-session-metadata.d.ts +15 -0
  138. package/dist/teamwork/internal/store/teamwork-session-metadata.d.ts.map +1 -0
  139. package/dist/{channel/internal/store/channel-metadata.js → teamwork/internal/store/teamwork-session-metadata.js} +13 -27
  140. package/dist/teamwork/internal/store/teamwork-session-metadata.js.map +1 -0
  141. package/dist/{channel → teamwork}/internal/store/thread-state.d.ts +4 -4
  142. package/dist/teamwork/internal/store/thread-state.d.ts.map +1 -0
  143. package/dist/{channel → teamwork}/internal/store/thread-state.js +1 -1
  144. package/dist/teamwork/internal/store/thread-state.js.map +1 -0
  145. package/dist/teamwork/internal/store/watch.d.ts +10 -0
  146. package/dist/teamwork/internal/store/watch.d.ts.map +1 -0
  147. package/dist/{channel → teamwork}/internal/store/watch.js +6 -6
  148. package/dist/teamwork/internal/store/watch.js.map +1 -0
  149. package/dist/{channel → teamwork}/internal/store/worker-state.d.ts +7 -9
  150. package/dist/teamwork/internal/store/worker-state.d.ts.map +1 -0
  151. package/dist/{channel → teamwork}/internal/store/worker-state.js +6 -29
  152. package/dist/teamwork/internal/store/worker-state.js.map +1 -0
  153. package/package.json +7 -7
  154. package/dist/channel/api/assert.d.ts +0 -3
  155. package/dist/channel/api/assert.d.ts.map +0 -1
  156. package/dist/channel/api/assert.js +0 -11
  157. package/dist/channel/api/assert.js.map +0 -1
  158. package/dist/channel/api/context.d.ts.map +0 -1
  159. package/dist/channel/api/context.js.map +0 -1
  160. package/dist/channel/api/create.d.ts +0 -9
  161. package/dist/channel/api/create.d.ts.map +0 -1
  162. package/dist/channel/api/create.js.map +0 -1
  163. package/dist/channel/api/inbox.d.ts.map +0 -1
  164. package/dist/channel/api/inbox.js.map +0 -1
  165. package/dist/channel/api/interrupt.d.ts.map +0 -1
  166. package/dist/channel/api/interrupt.js.map +0 -1
  167. package/dist/channel/api/post-thread.d.ts.map +0 -1
  168. package/dist/channel/api/post-thread.js.map +0 -1
  169. package/dist/channel/api/read.d.ts +0 -17
  170. package/dist/channel/api/read.d.ts.map +0 -1
  171. package/dist/channel/api/read.js.map +0 -1
  172. package/dist/channel/api/resolve.d.ts +0 -21
  173. package/dist/channel/api/resolve.d.ts.map +0 -1
  174. package/dist/channel/api/resolve.js +0 -28
  175. package/dist/channel/api/resolve.js.map +0 -1
  176. package/dist/channel/api/runtime.d.ts.map +0 -1
  177. package/dist/channel/api/runtime.js.map +0 -1
  178. package/dist/channel/api/send.d.ts +0 -4
  179. package/dist/channel/api/send.d.ts.map +0 -1
  180. package/dist/channel/api/send.js.map +0 -1
  181. package/dist/channel/api/spawn.d.ts.map +0 -1
  182. package/dist/channel/api/spawn.js +0 -74
  183. package/dist/channel/api/spawn.js.map +0 -1
  184. package/dist/channel/api/title.d.ts +0 -5
  185. package/dist/channel/api/title.d.ts.map +0 -1
  186. package/dist/channel/api/title.js.map +0 -1
  187. package/dist/channel/api/types.d.ts.map +0 -1
  188. package/dist/channel/api/watch-channels.d.ts +0 -40
  189. package/dist/channel/api/watch-channels.d.ts.map +0 -1
  190. package/dist/channel/api/watch-channels.js.map +0 -1
  191. package/dist/channel/api/watch.d.ts +0 -11
  192. package/dist/channel/api/watch.d.ts.map +0 -1
  193. package/dist/channel/api/watch.js.map +0 -1
  194. package/dist/channel/api/workers.d.ts.map +0 -1
  195. package/dist/channel/api/workers.js.map +0 -1
  196. package/dist/channel/index.d.ts +0 -38
  197. package/dist/channel/index.d.ts.map +0 -1
  198. package/dist/channel/index.js +0 -23
  199. package/dist/channel/index.js.map +0 -1
  200. package/dist/channel/internal/store/channel-metadata.d.ts +0 -23
  201. package/dist/channel/internal/store/channel-metadata.d.ts.map +0 -1
  202. package/dist/channel/internal/store/channel-metadata.js.map +0 -1
  203. package/dist/channel/internal/store/delivery.d.ts.map +0 -1
  204. package/dist/channel/internal/store/delivery.js.map +0 -1
  205. package/dist/channel/internal/store/events.d.ts +0 -221
  206. package/dist/channel/internal/store/events.d.ts.map +0 -1
  207. package/dist/channel/internal/store/events.js.map +0 -1
  208. package/dist/channel/internal/store/filter.d.ts.map +0 -1
  209. package/dist/channel/internal/store/filter.js.map +0 -1
  210. package/dist/channel/internal/store/inbox.d.ts.map +0 -1
  211. package/dist/channel/internal/store/inbox.js.map +0 -1
  212. package/dist/channel/internal/store/lock.d.ts.map +0 -1
  213. package/dist/channel/internal/store/lock.js.map +0 -1
  214. package/dist/channel/internal/store/paths.d.ts.map +0 -1
  215. package/dist/channel/internal/store/paths.js.map +0 -1
  216. package/dist/channel/internal/store/schema.d.ts.map +0 -1
  217. package/dist/channel/internal/store/schema.js.map +0 -1
  218. package/dist/channel/internal/store/seq.d.ts.map +0 -1
  219. package/dist/channel/internal/store/seq.js.map +0 -1
  220. package/dist/channel/internal/store/thread-state.d.ts.map +0 -1
  221. package/dist/channel/internal/store/thread-state.js.map +0 -1
  222. package/dist/channel/internal/store/watch.d.ts +0 -10
  223. package/dist/channel/internal/store/watch.d.ts.map +0 -1
  224. package/dist/channel/internal/store/watch.js.map +0 -1
  225. package/dist/channel/internal/store/worker-state.d.ts.map +0 -1
  226. package/dist/channel/internal/store/worker-state.js.map +0 -1
  227. /package/dist/{channel → teamwork}/api/runtime.js +0 -0
  228. /package/dist/{channel → teamwork}/api/types.js +0 -0
  229. /package/dist/{channel → teamwork}/internal/store/delivery.d.ts +0 -0
  230. /package/dist/{channel → teamwork}/internal/store/delivery.js +0 -0
  231. /package/dist/{channel → teamwork}/internal/store/lock.d.ts +0 -0
@@ -1,27 +1,62 @@
1
- import type { TrellisTaskRecord } from "./schema.js";
2
- /**
3
- * Coarse-grained Trellis task phase derived from task status.
4
- *
5
- * Phase is a projection of {@link TrellisTaskRecord.status} only. There is
6
- * no separate `current_phase` field stored on disk — `inferTaskPhase`
7
- * exists so consumers can render the workflow phase without depending on
8
- * `.trellis/workflow.md` parsing.
9
- *
10
- * Mapping:
11
- *
12
- * status | phase
13
- * --------------------|-----------
14
- * planning | plan
15
- * in_progress | implement
16
- * review | review
17
- * completed | done | completed
18
- * <anything else> | unknown
19
- */
20
- export type TrellisTaskPhase = "plan" | "implement" | "review" | "completed" | "unknown";
21
- /**
22
- * Infer the phase of a task from either its parsed record or its raw
23
- * status string. Accepts a record so callers that already have one don't
24
- * need to re-pluck `status` first.
25
- */
26
- export declare function inferTaskPhase(recordOrStatus: TrellisTaskRecord | string | null | undefined): TrellisTaskPhase;
1
+ export declare const TASK_PHASE_IDS: readonly ["goal_exploration_and_requirements", "decision_space_construction_and_merging", "solution_design_and_convergence", "task_implementation", "delivery_review_and_closeout"];
2
+ export type TaskPhaseId = (typeof TASK_PHASE_IDS)[number];
3
+ export declare function isTaskPhaseId(value: unknown): value is TaskPhaseId;
4
+ export type TaskKind = "analysis" | "implementation" | "combined";
5
+ export type TaskComplexity = "simple" | "standard" | "complex";
6
+ export type ProjectContext = "new" | "existing";
7
+ export type TaskPhaseStatus = "not_started" | "active" | "waiting_user" | "blocked" | "accepted" | "skipped";
8
+ export interface TaskPhaseAcceptance {
9
+ artifact_revision: string;
10
+ result_revision: string;
11
+ input_revision: string;
12
+ task_route_revision: string;
13
+ evidence_refs: string[];
14
+ child_dispositions?: Record<string, "integrated" | "continue" | "independent" | "cancelled">;
15
+ }
16
+ export interface TaskPhaseRecord {
17
+ status: TaskPhaseStatus;
18
+ input_revision: string;
19
+ artifact_revision: string;
20
+ result_revision: string;
21
+ artifact_refs: string[];
22
+ result_ref: string | null;
23
+ outcome_kind: string | null;
24
+ reason: string | null;
25
+ evidence_refs: string[];
26
+ acceptance: TaskPhaseAcceptance | null;
27
+ }
28
+ export interface TaskPhaseSkipRecord {
29
+ reason: string;
30
+ evidence_refs: string[];
31
+ task_route_revision: string;
32
+ }
33
+ export interface TaskPhaseReturnRecord {
34
+ from: TaskPhaseId;
35
+ to: TaskPhaseId;
36
+ reason: string;
37
+ evidence_refs: string[];
38
+ task_route_revision: string;
39
+ }
40
+ /** Current workflow facts stored under task.json.meta.task_workflow. */
41
+ export interface TaskWorkflowState {
42
+ schema_version: 1;
43
+ task_route_revision: string;
44
+ task_kind: TaskKind;
45
+ complexity: TaskComplexity;
46
+ project_context: ProjectContext;
47
+ phase_ids: TaskPhaseId[];
48
+ current_phase_id: TaskPhaseId | null;
49
+ input_revision: string;
50
+ phases: Partial<Record<TaskPhaseId, TaskPhaseRecord>>;
51
+ implementation_authorization: {
52
+ contract_ref: string;
53
+ approval_ref: string;
54
+ task_route_revision: string;
55
+ } | null;
56
+ closeout_disposition: "delivery_ready" | "no_go" | "cancelled" | null;
57
+ skip_records: Partial<Record<TaskPhaseId, TaskPhaseSkipRecord>>;
58
+ return_record: TaskPhaseReturnRecord | null;
59
+ }
60
+ /** Validate the stable task-workflow fields before a consumer relies on them. */
61
+ export declare function parseTaskWorkflowState(value: unknown): TaskWorkflowState;
27
62
  //# sourceMappingURL=phase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"phase.d.ts","sourceRoot":"","sources":["../../src/task/phase.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,WAAW,GACX,QAAQ,GACR,WAAW,GACX,SAAS,CAAC;AAEd;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,cAAc,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAC5D,gBAAgB,CAkBlB"}
1
+ {"version":3,"file":"phase.d.ts","sourceRoot":"","sources":["../../src/task/phase.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,qLAMjB,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAED,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAC/D,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,UAAU,CAAC;AAEhD,MAAM,MAAM,eAAe,GACvB,aAAa,GACb,QAAQ,GACR,cAAc,GACd,SAAS,GACT,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,CAAC,CAAC;CAC9F;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,mBAAmB,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,WAAW,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wEAAwE;AACxE,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,CAAC,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,QAAQ,CAAC;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,eAAe,EAAE,cAAc,CAAC;IAChC,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,gBAAgB,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IACtD,4BAA4B,EAAE;QAC5B,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,mBAAmB,EAAE,MAAM,CAAC;KAC7B,GAAG,IAAI,CAAC;IACT,oBAAoB,EAAE,gBAAgB,GAAG,OAAO,GAAG,WAAW,GAAG,IAAI,CAAC;IACtE,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAChE,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC7C;AAED,iFAAiF;AACjF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CA2IxE"}
@@ -1,24 +1,155 @@
1
- /**
2
- * Infer the phase of a task from either its parsed record or its raw
3
- * status string. Accepts a record so callers that already have one don't
4
- * need to re-pluck `status` first.
5
- */
6
- export function inferTaskPhase(recordOrStatus) {
7
- const status = typeof recordOrStatus === "string"
8
- ? recordOrStatus
9
- : recordOrStatus?.status;
10
- switch (status) {
11
- case "planning":
12
- return "plan";
13
- case "in_progress":
14
- return "implement";
15
- case "review":
16
- return "review";
17
- case "completed":
18
- case "done":
19
- return "completed";
20
- default:
21
- return "unknown";
1
+ export const TASK_PHASE_IDS = [
2
+ "goal_exploration_and_requirements",
3
+ "decision_space_construction_and_merging",
4
+ "solution_design_and_convergence",
5
+ "task_implementation",
6
+ "delivery_review_and_closeout",
7
+ ];
8
+ export function isTaskPhaseId(value) {
9
+ return typeof value === "string" && TASK_PHASE_IDS.includes(value);
10
+ }
11
+ /** Validate the stable task-workflow fields before a consumer relies on them. */
12
+ export function parseTaskWorkflowState(value) {
13
+ if (!isRecord(value)) {
14
+ throw new Error("task_workflow must be an object");
15
+ }
16
+ const state = value;
17
+ if (state.schema_version !== 1)
18
+ throw new Error("task_workflow.schema_version must be 1");
19
+ if (!["analysis", "implementation", "combined"].includes(String(state.task_kind)) ||
20
+ !["simple", "standard", "complex"].includes(String(state.complexity)) ||
21
+ !["new", "existing"].includes(String(state.project_context))) {
22
+ throw new Error("task_workflow classification is invalid");
23
+ }
24
+ if (!isRevision(state.task_route_revision) || !isRevision(state.input_revision)) {
25
+ throw new Error("task_workflow revisions must be positive integer strings");
26
+ }
27
+ if (!Array.isArray(state.phase_ids) ||
28
+ state.phase_ids.length === 0 ||
29
+ Array.from(state.phase_ids).some((id) => !isTaskPhaseId(id))) {
30
+ throw new Error("task_workflow.phase_ids must contain declared phase identifiers");
31
+ }
32
+ const phaseIds = Array.from(state.phase_ids);
33
+ if (new Set(phaseIds).size !== phaseIds.length ||
34
+ phaseIds[0] !== TASK_PHASE_IDS[0] ||
35
+ phaseIds.some((id, index) => {
36
+ const previousId = phaseIds[index - 1];
37
+ return index > 0 && (previousId === undefined ||
38
+ TASK_PHASE_IDS.indexOf(id) <= TASK_PHASE_IDS.indexOf(previousId));
39
+ })) {
40
+ throw new Error("task_workflow.phase_ids must be unique, ordered, and begin with Goal Exploration and Requirements Confirmation Phase");
41
+ }
42
+ if (phaseIds[phaseIds.length - 1] !== TASK_PHASE_IDS[4]) {
43
+ throw new Error("task_workflow.phase_ids must end with Delivery Review and On-Site Closeout Phase");
44
+ }
45
+ if (state.task_kind === "analysis" && phaseIds.includes(TASK_PHASE_IDS[3])) {
46
+ throw new Error("analysis tasks cannot include the Task Implementation and Test Verification Phase");
47
+ }
48
+ if (state.current_phase_id !== null &&
49
+ (!isTaskPhaseId(state.current_phase_id) ||
50
+ !phaseIds.includes(state.current_phase_id))) {
51
+ throw new Error("task_workflow.current_phase_id must be in phase_ids or null");
52
+ }
53
+ if (!isRecord(state.phases)) {
54
+ throw new Error("task_workflow.phases must be an object");
55
+ }
56
+ const phases = state.phases;
57
+ for (const phaseId of phaseIds) {
58
+ const phase = phases[phaseId];
59
+ if (!isRecord(phase)) {
60
+ throw new Error(`task_workflow.phases.${phaseId} must be an object`);
61
+ }
62
+ const record = phase;
63
+ if (!["not_started", "active", "waiting_user", "blocked", "accepted", "skipped"].includes(String(record.status)) ||
64
+ !isRevision(record.input_revision) ||
65
+ typeof record.artifact_revision !== "string" ||
66
+ !/^[a-f0-9]{64}$/i.test(record.artifact_revision) ||
67
+ !isRevision(record.result_revision, true) ||
68
+ !isStringArray(record.artifact_refs) ||
69
+ !isStringArray(record.evidence_refs) ||
70
+ !(record.result_ref === null || typeof record.result_ref === "string") ||
71
+ !(record.outcome_kind === null || typeof record.outcome_kind === "string") ||
72
+ !(record.reason === null || typeof record.reason === "string")) {
73
+ throw new Error(`task_workflow.phases.${phaseId} is invalid`);
74
+ }
75
+ if (record.acceptance !== null)
76
+ validateAcceptance(record.acceptance, phaseId);
77
+ if (phaseId === TASK_PHASE_IDS[0] &&
78
+ record.status === "accepted" &&
79
+ (!isRecord(record.acceptance) ||
80
+ record.acceptance.artifact_revision !== record.artifact_revision ||
81
+ !Array.isArray(record.acceptance.evidence_refs) ||
82
+ record.acceptance.evidence_refs.length === 0)) {
83
+ throw new Error("accepted Goal Exploration and Requirements Confirmation Phase must retain confirmation for its current artifact revision");
84
+ }
22
85
  }
86
+ if (!isRecord(state.skip_records)) {
87
+ throw new Error("task_workflow.skip_records must be an object");
88
+ }
89
+ for (const [phaseId, skip] of Object.entries(state.skip_records)) {
90
+ const phase = isTaskPhaseId(phaseId) ? phases[phaseId] : undefined;
91
+ const phaseStatus = isRecord(phase) ? phase.status : undefined;
92
+ if (!isTaskPhaseId(phaseId) ||
93
+ (phaseIds.includes(phaseId) && phaseStatus !== "skipped") ||
94
+ !isRecord(skip) ||
95
+ typeof skip.reason !== "string" ||
96
+ !isStringArray(skip.evidence_refs) ||
97
+ skip.evidence_refs.length === 0 ||
98
+ skip.task_route_revision !== state.task_route_revision) {
99
+ throw new Error(`task_workflow.skip_records.${phaseId} is invalid`);
100
+ }
101
+ }
102
+ if (state.implementation_authorization !== null) {
103
+ const authorization = state.implementation_authorization;
104
+ if (!isRecord(authorization) ||
105
+ typeof authorization.contract_ref !== "string" ||
106
+ !authorization.contract_ref.trim() ||
107
+ typeof authorization.approval_ref !== "string" ||
108
+ !authorization.approval_ref.trim() ||
109
+ authorization.task_route_revision !== state.task_route_revision) {
110
+ throw new Error("task_workflow.implementation_authorization is invalid");
111
+ }
112
+ }
113
+ if (![null, "delivery_ready", "no_go", "cancelled"].includes(state.closeout_disposition)) {
114
+ throw new Error("task_workflow.closeout_disposition is invalid");
115
+ }
116
+ if (state.return_record !== null) {
117
+ const returned = state.return_record;
118
+ if (!isRecord(returned) ||
119
+ !isTaskPhaseId(returned.from) ||
120
+ !isTaskPhaseId(returned.to) ||
121
+ typeof returned.reason !== "string" ||
122
+ !isStringArray(returned.evidence_refs) ||
123
+ returned.evidence_refs.length === 0 ||
124
+ returned.task_route_revision !== state.task_route_revision) {
125
+ throw new Error("task_workflow.return_record is invalid");
126
+ }
127
+ }
128
+ return state;
129
+ }
130
+ function validateAcceptance(value, phaseId) {
131
+ if (!isRecord(value) ||
132
+ typeof value.artifact_revision !== "string" ||
133
+ !/^[a-f0-9]{64}$/i.test(value.artifact_revision) ||
134
+ !isRevision(value.result_revision) ||
135
+ !isRevision(value.input_revision) ||
136
+ !isRevision(value.task_route_revision) ||
137
+ !isStringArray(value.evidence_refs) ||
138
+ value.evidence_refs.length === 0 ||
139
+ (value.child_dispositions !== undefined &&
140
+ (!isRecord(value.child_dispositions) ||
141
+ Object.entries(value.child_dispositions).some(([id, disposition]) => !id.trim() || !["integrated", "continue", "independent", "cancelled"].includes(String(disposition)))))) {
142
+ throw new Error(`task_workflow.phases.${phaseId}.acceptance is invalid`);
143
+ }
144
+ }
145
+ function isRevision(value, allowZero = false) {
146
+ return (typeof value === "string" &&
147
+ (allowZero ? /^(0|[1-9][0-9]*)$/ : /^[1-9][0-9]*$/).test(value));
148
+ }
149
+ function isStringArray(value) {
150
+ return Array.isArray(value) && value.every((entry) => typeof entry === "string");
151
+ }
152
+ function isRecord(value) {
153
+ return typeof value === "object" && value !== null && !Array.isArray(value);
23
154
  }
24
155
  //# sourceMappingURL=phase.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"phase.js","sourceRoot":"","sources":["../../src/task/phase.ts"],"names":[],"mappings":"AA2BA;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,cAA6D;IAE7D,MAAM,MAAM,GACV,OAAO,cAAc,KAAK,QAAQ;QAChC,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,cAAc,EAAE,MAAM,CAAC;IAC7B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB,KAAK,aAAa;YAChB,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"phase.js","sourceRoot":"","sources":["../../src/task/phase.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,mCAAmC;IACnC,yCAAyC;IACzC,iCAAiC;IACjC,qBAAqB;IACrB,8BAA8B;CACtB,CAAC;AAIX,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAoB,CAAC,CAAC;AACpF,CAAC;AAuED,iFAAiF;AACjF,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC;IACpB,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC1F,IACE,CAAC,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7E,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrE,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,EAC5D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;QAChF,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,CAAC;IACD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;QAC/B,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,EAC5D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAkB,CAAC;IAC9D,IACE,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,MAAM;QAC1C,QAAQ,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YAC1B,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACvC,OAAO,KAAK,GAAG,CAAC,IAAI,CAClB,UAAU,KAAK,SAAS;gBACxB,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,CACjE,CAAC;QACJ,CAAC,CAAC,EACF,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sHAAsH,CAAC,CAAC;IAC1I,CAAC;IACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,KAAK,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;IACvG,CAAC;IACD,IACE,KAAK,CAAC,gBAAgB,KAAK,IAAI;QAC/B,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,gBAAgB,CAAC;YACrC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,EAC7C,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,oBAAoB,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC;QACrB,IACE,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5G,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC;YAClC,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ;YAC5C,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;YACjD,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC;YACzC,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;YACpC,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC;YACpC,CAAC,CAAC,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC;YACtE,CAAC,CAAC,MAAM,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,CAAC;YAC1E,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,EAC9D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,aAAa,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI;YAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/E,IACE,OAAO,KAAK,cAAc,CAAC,CAAC,CAAC;YAC7B,MAAM,CAAC,MAAM,KAAK,UAAU;YAC5B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;gBAC3B,MAAM,CAAC,UAAU,CAAC,iBAAiB,KAAK,MAAM,CAAC,iBAAiB;gBAChE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;gBAC/C,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,EAC/C,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,0HAA0H,CAAC,CAAC;QAC9I,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;QACjE,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnE,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/D,IACE,CAAC,aAAa,CAAC,OAAO,CAAC;YACvB,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,WAAW,KAAK,SAAS,CAAC;YACzD,CAAC,QAAQ,CAAC,IAAI,CAAC;YACf,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;YAC/B,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;YAC/B,IAAI,CAAC,mBAAmB,KAAK,KAAK,CAAC,mBAAmB,EACtD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,8BAA8B,OAAO,aAAa,CAAC,CAAC;QACtE,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,4BAA4B,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,aAAa,GAAG,KAAK,CAAC,4BAA4B,CAAC;QACzD,IACE,CAAC,QAAQ,CAAC,aAAa,CAAC;YACxB,OAAO,aAAa,CAAC,YAAY,KAAK,QAAQ;YAC9C,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE;YAClC,OAAO,aAAa,CAAC,YAAY,KAAK,QAAQ;YAC9C,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,EAAE;YAClC,aAAa,CAAC,mBAAmB,KAAK,KAAK,CAAC,mBAAmB,EAC/D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,IACE,CAAC,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CACtD,KAAK,CAAC,oBAAqC,CAC5C,EACD,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC;QACrC,IACE,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACnB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC7B,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;YACnC,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC;YACtC,QAAQ,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;YACnC,QAAQ,CAAC,mBAAmB,KAAK,KAAK,CAAC,mBAAmB,EAC1D,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,KAAqC,CAAC;AAC/C,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc,EAAE,OAAoB;IAC9D,IACE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAChB,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ;QAC3C,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAChD,CAAC,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC;QAClC,CAAC,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC;QACjC,CAAC,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC;QACtC,CAAC,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC;QACnC,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;QAChC,CAAC,KAAK,CAAC,kBAAkB,KAAK,SAAS;YACrC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC;gBAClC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAC3C,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAC3H,CAAC,CAAC,EACP,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,wBAAwB,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,SAAS,GAAG,KAAK;IACnD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAChE,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type TeamworkEvent } from "../internal/store/events.js";
2
+ export declare function readForumTeamworkEvents(sessionId: string, project: string, operation: string): Promise<TeamworkEvent[]>;
3
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/teamwork/api/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AAGrC,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,EAAE,CAAC,CAS1B"}
@@ -0,0 +1,11 @@
1
+ import { readTeamworkEvents, } from "../internal/store/events.js";
2
+ import { reduceTeamworkSessionMetadata } from "../internal/store/teamwork-session-metadata.js";
3
+ export async function readForumTeamworkEvents(sessionId, project, operation) {
4
+ const events = await readTeamworkEvents(sessionId, project);
5
+ const metadata = reduceTeamworkSessionMetadata(events);
6
+ if (metadata.type !== "forum") {
7
+ throw new Error(`Teamwork Session '${sessionId}' is type '${metadata.type}'. '${operation}' requires a forum Teamwork Session.`);
8
+ }
9
+ return events;
10
+ }
11
+ //# sourceMappingURL=assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../../src/teamwork/api/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,GAEnB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAE/F,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,OAAe,EACf,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CACb,qBAAqB,SAAS,cAAc,QAAQ,CAAC,IAAI,OAAO,SAAS,sCAAsC,CAChH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,18 +1,18 @@
1
- import { type ContextChannelEvent } from "../internal/store/events.js";
1
+ import { type ContextTeamworkEvent } from "../internal/store/events.js";
2
2
  import { type ContextEntry } from "../internal/store/schema.js";
3
3
  import type { ContextMutationOptions, ThreadContextMutationOptions } from "./types.js";
4
- export declare function addChannelContext(opts: ContextMutationOptions): Promise<ContextChannelEvent>;
5
- export declare function deleteChannelContext(opts: ContextMutationOptions): Promise<ContextChannelEvent>;
6
- export declare function listChannelContext(opts: {
7
- channel: string;
4
+ export declare function addTeamworkSessionContext(opts: ContextMutationOptions): Promise<ContextTeamworkEvent>;
5
+ export declare function deleteTeamworkSessionContext(opts: ContextMutationOptions): Promise<ContextTeamworkEvent>;
6
+ export declare function listTeamworkSessionContext(opts: {
7
+ sessionId: string;
8
8
  scope?: ContextMutationOptions["scope"];
9
9
  projectKey?: string;
10
10
  cwd?: string;
11
11
  }): Promise<ContextEntry[]>;
12
- export declare function addThreadContext(opts: ThreadContextMutationOptions): Promise<ContextChannelEvent>;
13
- export declare function deleteThreadContext(opts: ThreadContextMutationOptions): Promise<ContextChannelEvent>;
12
+ export declare function addThreadContext(opts: ThreadContextMutationOptions): Promise<ContextTeamworkEvent>;
13
+ export declare function deleteThreadContext(opts: ThreadContextMutationOptions): Promise<ContextTeamworkEvent>;
14
14
  export declare function listThreadContext(opts: {
15
- channel: string;
15
+ sessionId: string;
16
16
  thread: string;
17
17
  scope?: ContextMutationOptions["scope"];
18
18
  projectKey?: string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/teamwork/api/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAC;AAOrC,OAAO,KAAK,EACV,sBAAsB,EACtB,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAgCpB,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAiB/B;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAiB/B;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE;IACJ,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GACA,OAAO,CAAC,YAAY,EAAE,CAAC,CAUzB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAsB/B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,oBAAoB,CAAC,CAsB/B;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAoB1B"}
@@ -1,9 +1,9 @@
1
- import { appendEvent, readChannelEvents, } from "../internal/store/events.js";
2
- import { reduceChannelMetadata } from "../internal/store/channel-metadata.js";
1
+ import { appendEvent, readTeamworkEvents, } from "../internal/store/events.js";
2
+ import { reduceTeamworkSessionMetadata } from "../internal/store/teamwork-session-metadata.js";
3
3
  import { normalizeThreadKey, } from "../internal/store/schema.js";
4
4
  import { reduceThreads, } from "../internal/store/thread-state.js";
5
- import { readForumChannelEvents } from "./assert.js";
6
- import { resolveChannelRef } from "./resolve.js";
5
+ import { readForumTeamworkEvents } from "./assert.js";
6
+ import { resolveTeamworkSession } from "./resolve.js";
7
7
  async function appendContextEvent(ref, by, action, target, context, thread, origin, meta) {
8
8
  if (!context || context.length === 0) {
9
9
  throw new Error("context must contain at least one entry");
@@ -20,67 +20,67 @@ async function appendContextEvent(ref, by, action, target, context, thread, orig
20
20
  }, ref.project);
21
21
  return event;
22
22
  }
23
- export async function addChannelContext(opts) {
24
- const ref = resolveChannelRef({
25
- channel: opts.channel,
23
+ export async function addTeamworkSessionContext(opts) {
24
+ const ref = resolveTeamworkSession({
25
+ sessionId: opts.sessionId,
26
26
  ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
27
27
  ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
28
28
  ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
29
29
  });
30
- return appendContextEvent({ name: opts.channel, project: ref.project }, opts.by, "add", "channel", opts.context, undefined, opts.origin, opts.meta);
30
+ return appendContextEvent({ name: opts.sessionId, project: ref.project }, opts.by, "add", "session", opts.context, undefined, opts.origin, opts.meta);
31
31
  }
32
- export async function deleteChannelContext(opts) {
33
- const ref = resolveChannelRef({
34
- channel: opts.channel,
32
+ export async function deleteTeamworkSessionContext(opts) {
33
+ const ref = resolveTeamworkSession({
34
+ sessionId: opts.sessionId,
35
35
  ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
36
36
  ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
37
37
  ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
38
38
  });
39
- return appendContextEvent({ name: opts.channel, project: ref.project }, opts.by, "delete", "channel", opts.context, undefined, opts.origin, opts.meta);
39
+ return appendContextEvent({ name: opts.sessionId, project: ref.project }, opts.by, "delete", "session", opts.context, undefined, opts.origin, opts.meta);
40
40
  }
41
- export async function listChannelContext(opts) {
42
- const ref = resolveChannelRef({
43
- channel: opts.channel,
41
+ export async function listTeamworkSessionContext(opts) {
42
+ const ref = resolveTeamworkSession({
43
+ sessionId: opts.sessionId,
44
44
  ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
45
45
  ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
46
46
  ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
47
47
  });
48
- const events = await readChannelEvents(opts.channel, ref.project);
49
- const meta = reduceChannelMetadata(events);
48
+ const events = await readTeamworkEvents(opts.sessionId, ref.project);
49
+ const meta = reduceTeamworkSessionMetadata(events);
50
50
  return meta.context ?? [];
51
51
  }
52
52
  export async function addThreadContext(opts) {
53
- const ref = resolveChannelRef({
54
- channel: opts.channel,
53
+ const ref = resolveTeamworkSession({
54
+ sessionId: opts.sessionId,
55
55
  ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
56
56
  ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
57
57
  ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
58
58
  });
59
59
  const thread = normalizeThreadKey(opts.thread);
60
- const states = reduceThreads(await readForumChannelEvents(opts.channel, ref.project, "context add"));
61
- assertKnownThread(states, thread, opts.channel);
62
- return appendContextEvent({ name: opts.channel, project: ref.project }, opts.by, "add", "thread", opts.context, thread, opts.origin, opts.meta);
60
+ const states = reduceThreads(await readForumTeamworkEvents(opts.sessionId, ref.project, "context add"));
61
+ assertKnownThread(states, thread, opts.sessionId);
62
+ return appendContextEvent({ name: opts.sessionId, project: ref.project }, opts.by, "add", "thread", opts.context, thread, opts.origin, opts.meta);
63
63
  }
64
64
  export async function deleteThreadContext(opts) {
65
- const ref = resolveChannelRef({
66
- channel: opts.channel,
65
+ const ref = resolveTeamworkSession({
66
+ sessionId: opts.sessionId,
67
67
  ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
68
68
  ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
69
69
  ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
70
70
  });
71
71
  const thread = normalizeThreadKey(opts.thread);
72
- const states = reduceThreads(await readForumChannelEvents(opts.channel, ref.project, "context delete"));
73
- assertKnownThread(states, thread, opts.channel);
74
- return appendContextEvent({ name: opts.channel, project: ref.project }, opts.by, "delete", "thread", opts.context, thread, opts.origin, opts.meta);
72
+ const states = reduceThreads(await readForumTeamworkEvents(opts.sessionId, ref.project, "context delete"));
73
+ assertKnownThread(states, thread, opts.sessionId);
74
+ return appendContextEvent({ name: opts.sessionId, project: ref.project }, opts.by, "delete", "thread", opts.context, thread, opts.origin, opts.meta);
75
75
  }
76
76
  export async function listThreadContext(opts) {
77
- const ref = resolveChannelRef({
78
- channel: opts.channel,
77
+ const ref = resolveTeamworkSession({
78
+ sessionId: opts.sessionId,
79
79
  ...(opts.scope !== undefined ? { scope: opts.scope } : {}),
80
80
  ...(opts.projectKey !== undefined ? { projectKey: opts.projectKey } : {}),
81
81
  ...(opts.cwd !== undefined ? { cwd: opts.cwd } : {}),
82
82
  });
83
- const events = await readForumChannelEvents(opts.channel, ref.project, "context list");
83
+ const events = await readForumTeamworkEvents(opts.sessionId, ref.project, "context list");
84
84
  const states = reduceThreads(events);
85
85
  const key = normalizeThreadKey(opts.thread);
86
86
  for (const state of states) {
@@ -90,10 +90,10 @@ export async function listThreadContext(opts) {
90
90
  }
91
91
  return [];
92
92
  }
93
- function assertKnownThread(states, thread, channel) {
93
+ function assertKnownThread(states, thread, sessionId) {
94
94
  const found = states.some((state) => state.thread === thread || state.aliases.includes(thread));
95
95
  if (!found) {
96
- throw new Error(`Thread '${thread}' not found in channel '${channel}'.`);
96
+ throw new Error(`Thread '${thread}' not found in Teamwork Session '${sessionId}'.`);
97
97
  }
98
98
  }
99
99
  //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/teamwork/api/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { type CoordinationAction, type CoordinationTeamworkEvent, type CoordinationEntity, type CoordinationState } from "../internal/store/events.js";
2
+ import { type CoordinationProjection } from "../internal/store/coordination.js";
3
+ import type { TeamworkSessionScope } from "../internal/store/schema.js";
4
+ export interface RecordCoordinationEventInput {
5
+ sessionId: string;
6
+ scope?: TeamworkSessionScope;
7
+ projectKey?: string;
8
+ cwd?: string;
9
+ by: string;
10
+ batchId: string;
11
+ entity: CoordinationEntity;
12
+ action: CoordinationAction;
13
+ state?: CoordinationState;
14
+ assignmentId?: string;
15
+ attemptId?: string;
16
+ teammateId?: string;
17
+ slot?: number;
18
+ retryCount?: number;
19
+ planHash?: string;
20
+ commandId?: string;
21
+ claimId?: string;
22
+ receiptId?: string;
23
+ leaseId?: string;
24
+ protected?: boolean;
25
+ providerSessionId?: string;
26
+ terminal?: boolean;
27
+ reason?: string;
28
+ outcome?: string;
29
+ payload?: Record<string, unknown>;
30
+ idempotencyKey?: string;
31
+ }
32
+ export declare function recordCoordinationEvent(input: RecordCoordinationEventInput): Promise<CoordinationTeamworkEvent>;
33
+ export interface ReadCoordinationStateInput {
34
+ sessionId: string;
35
+ scope?: TeamworkSessionScope;
36
+ projectKey?: string;
37
+ cwd?: string;
38
+ }
39
+ export declare function readCoordinationState(input: ReadCoordinationStateInput): Promise<CoordinationProjection>;
40
+ //# sourceMappingURL=coordination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordination.d.ts","sourceRoot":"","sources":["../../../src/teamwork/api/coordination.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,4BAA4B,GAClC,OAAO,CAAC,yBAAyB,CAAC,CAmCpC;AAED,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,sBAAsB,CAAC,CASjC"}
@@ -0,0 +1,50 @@
1
+ import { appendEvent, readTeamworkEvents, } from "../internal/store/events.js";
2
+ import { reduceCoordinationState, } from "../internal/store/coordination.js";
3
+ import { resolveTeamworkSession } from "./resolve.js";
4
+ export async function recordCoordinationEvent(input) {
5
+ const ref = resolveTeamworkSession({
6
+ sessionId: input.sessionId,
7
+ ...(input.scope !== undefined ? { scope: input.scope } : {}),
8
+ ...(input.projectKey !== undefined ? { projectKey: input.projectKey } : {}),
9
+ ...(input.cwd !== undefined ? { cwd: input.cwd } : {}),
10
+ });
11
+ const partial = {
12
+ kind: "coordination",
13
+ by: input.by,
14
+ ...(input.idempotencyKey ? { idempotencyKey: input.idempotencyKey } : {}),
15
+ entity: input.entity,
16
+ action: input.action,
17
+ batchId: input.batchId,
18
+ ...(input.state ? { state: input.state } : {}),
19
+ ...(input.assignmentId ? { assignmentId: input.assignmentId } : {}),
20
+ ...(input.attemptId ? { attemptId: input.attemptId } : {}),
21
+ ...(input.teammateId ? { teammateId: input.teammateId } : {}),
22
+ ...(input.slot !== undefined ? { slot: input.slot } : {}),
23
+ ...(input.retryCount !== undefined ? { retryCount: input.retryCount } : {}),
24
+ ...(input.planHash ? { planHash: input.planHash } : {}),
25
+ ...(input.commandId ? { commandId: input.commandId } : {}),
26
+ ...(input.claimId ? { claimId: input.claimId } : {}),
27
+ ...(input.receiptId ? { receiptId: input.receiptId } : {}),
28
+ ...(input.leaseId ? { leaseId: input.leaseId } : {}),
29
+ ...(input.protected !== undefined ? { protected: input.protected } : {}),
30
+ ...(input.providerSessionId
31
+ ? { providerSessionId: input.providerSessionId }
32
+ : {}),
33
+ ...(input.terminal !== undefined ? { terminal: input.terminal } : {}),
34
+ ...(input.reason ? { reason: input.reason } : {}),
35
+ ...(input.outcome ? { outcome: input.outcome } : {}),
36
+ ...(input.payload ? { payload: input.payload } : {}),
37
+ };
38
+ return (await appendEvent(input.sessionId, partial, ref.project));
39
+ }
40
+ export async function readCoordinationState(input) {
41
+ const ref = resolveTeamworkSession({
42
+ sessionId: input.sessionId,
43
+ ...(input.scope !== undefined ? { scope: input.scope } : {}),
44
+ ...(input.projectKey !== undefined ? { projectKey: input.projectKey } : {}),
45
+ ...(input.cwd !== undefined ? { cwd: input.cwd } : {}),
46
+ });
47
+ const events = await readTeamworkEvents(input.sessionId, ref.project);
48
+ return reduceCoordinationState(events);
49
+ }
50
+ //# sourceMappingURL=coordination.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordination.js","sourceRoot":"","sources":["../../../src/teamwork/api/coordination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type CreateTeamworkEvent } from "../internal/store/events.js";
2
+ import type { CreateTeamworkSessionOptions } from "./types.js";
3
+ /**
4
+ * Create a new Teamwork Session. Throws when it already exists unless
5
+ * `force` is set, in which case the existing Teamwork Session directory is wiped
6
+ * before the create event is appended.
7
+ */
8
+ export declare function createTeamworkSession(opts: CreateTeamworkSessionOptions): Promise<CreateTeamworkEvent>;
9
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/teamwork/api/create.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAQrC,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAC;AAE/D;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,4BAA4B,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAgD9B"}