@xfey/tutti 0.1.27 → 0.1.29

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 (37) hide show
  1. package/dist/collaboration-state/index.d.ts +2 -2
  2. package/dist/collaboration-state/index.js +2 -2
  3. package/dist/collaboration-state/messages.d.ts +4 -1
  4. package/dist/collaboration-state/messages.js +37 -1
  5. package/dist/collaboration-state/scratchpad.js +15 -10
  6. package/dist/collaboration-state/worklist.d.ts +3 -2
  7. package/dist/collaboration-state/worklist.js +24 -0
  8. package/dist/control-plane/index.js +15 -10
  9. package/dist/control-plane/worklist-terminal-feedback.d.ts +9 -1
  10. package/dist/control-plane/worklist-terminal-feedback.js +99 -1
  11. package/dist/server-shell/http/routes/project-api/openapi-collaboration-routes.d.ts +8 -0
  12. package/dist/server-shell/http/routes/project-api/openapi-workspace-routes.d.ts +8 -0
  13. package/dist/server-shell/http/routes/project-api/openapi.d.ts +16 -0
  14. package/dist/server-shell/http/routes/project-api/schemas.d.ts +8 -0
  15. package/migrations/README.md +1 -1
  16. package/node_modules/@tutti/shared/dist/schemas/api/clarifications.d.ts +42 -0
  17. package/node_modules/@tutti/shared/dist/schemas/api/index.d.ts +2 -2
  18. package/node_modules/@tutti/shared/dist/schemas/api/index.js +2 -2
  19. package/node_modules/@tutti/shared/dist/schemas/api/messages.d.ts +210 -0
  20. package/node_modules/@tutti/shared/dist/schemas/api/messages.js +33 -0
  21. package/node_modules/@tutti/shared/dist/schemas/api/runtime-events.d.ts +8 -0
  22. package/node_modules/@tutti/shared/dist/schemas/api/types.d.ts +6 -2
  23. package/node_modules/@tutti/shared/dist/schemas/api/viewer-reference.d.ts +42 -0
  24. package/node_modules/@tutti/shared/dist/schemas/api/work-items.d.ts +25 -1
  25. package/node_modules/@tutti/shared/dist/schemas/api/work-items.js +16 -7
  26. package/node_modules/@tutti/shared/dist/schemas/api/workspace-commands.d.ts +16 -0
  27. package/package.json +1 -1
  28. package/prompts/prompt-flow-map.md +1 -1
  29. package/prompts/runs/README.md +1 -1
  30. package/prompts/runs/task-continuation.md +1 -1
  31. package/prompts/runs/task-retry.md +1 -1
  32. package/prompts/runs/task-run.md +1 -1
  33. package/web/assets/index-BHRlhFwi.css +1 -0
  34. package/web/assets/index-DPU2uqZl.js +29 -0
  35. package/web/index.html +2 -2
  36. package/web/assets/index-BfFYfzeO.js +0 -29
  37. package/web/assets/index-De6mK5Q2.css +0 -1
@@ -89,6 +89,48 @@ export declare const WorklistFeedbackRefSchema: import("@sinclair/typebox").TObj
89
89
  }>>>;
90
90
  primary_task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
91
91
  }>;
92
+ export declare const TaskResultRefSchema: import("@sinclair/typebox").TObject<{
93
+ kind: import("@sinclair/typebox").TLiteral<"task_result">;
94
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
95
+ title: import("@sinclair/typebox").TString;
96
+ task_id: import("@sinclair/typebox").TString;
97
+ task_title: import("@sinclair/typebox").TString;
98
+ result_key: import("@sinclair/typebox").TString;
99
+ summary: import("@sinclair/typebox").TString;
100
+ module_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
101
+ latest_run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
102
+ activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
103
+ final_note: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
104
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
105
+ path: import("@sinclair/typebox").TString;
106
+ name: import("@sinclair/typebox").TString;
107
+ group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
108
+ size_bytes: import("@sinclair/typebox").TInteger;
109
+ media_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
110
+ }>>>;
111
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
112
+ }>;
113
+ export declare const WorklistCompileRefSchema: import("@sinclair/typebox").TObject<{
114
+ kind: import("@sinclair/typebox").TLiteral<"worklist_compile">;
115
+ workflow_ref: import("@sinclair/typebox").TString;
116
+ title: import("@sinclair/typebox").TString;
117
+ task_count: import("@sinclair/typebox").TInteger;
118
+ tasks: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
119
+ task_id: import("@sinclair/typebox").TString;
120
+ title: import("@sinclair/typebox").TString;
121
+ summary: import("@sinclair/typebox").TString;
122
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
123
+ module_id: import("@sinclair/typebox").TString;
124
+ module_name: import("@sinclair/typebox").TString;
125
+ }>>;
126
+ }>;
127
+ export declare const ArtifactPreviewRefSchema: import("@sinclair/typebox").TObject<{
128
+ kind: import("@sinclair/typebox").TLiteral<"artifact_preview">;
129
+ title: import("@sinclair/typebox").TString;
130
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"available">, import("@sinclair/typebox").TLiteral<"updated">]>;
131
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
132
+ run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
133
+ }>;
92
134
  export declare const MessageRefsSchema: import("@sinclair/typebox").TObject<{
93
135
  task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
94
136
  activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -109,6 +151,20 @@ export declare const MessageRefsSchema: import("@sinclair/typebox").TObject<{
109
151
  blocked_reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"binary">, import("@sinclair/typebox").TLiteral<"too_large">, import("@sinclair/typebox").TLiteral<"unsupported_encoding">, import("@sinclair/typebox").TLiteral<"restricted_path">, import("@sinclair/typebox").TLiteral<"secret_like">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
110
152
  }>;
111
153
  }>>;
154
+ worklist_compile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
155
+ kind: import("@sinclair/typebox").TLiteral<"worklist_compile">;
156
+ workflow_ref: import("@sinclair/typebox").TString;
157
+ title: import("@sinclair/typebox").TString;
158
+ task_count: import("@sinclair/typebox").TInteger;
159
+ tasks: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
160
+ task_id: import("@sinclair/typebox").TString;
161
+ title: import("@sinclair/typebox").TString;
162
+ summary: import("@sinclair/typebox").TString;
163
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
164
+ module_id: import("@sinclair/typebox").TString;
165
+ module_name: import("@sinclair/typebox").TString;
166
+ }>>;
167
+ }>>;
112
168
  worklist_feedback: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
113
169
  kind: import("@sinclair/typebox").TLiteral<"worklist_terminal">;
114
170
  status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
@@ -138,6 +194,34 @@ export declare const MessageRefsSchema: import("@sinclair/typebox").TObject<{
138
194
  }>>>;
139
195
  primary_task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
140
196
  }>>;
197
+ task_result: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
198
+ kind: import("@sinclair/typebox").TLiteral<"task_result">;
199
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
200
+ title: import("@sinclair/typebox").TString;
201
+ task_id: import("@sinclair/typebox").TString;
202
+ task_title: import("@sinclair/typebox").TString;
203
+ result_key: import("@sinclair/typebox").TString;
204
+ summary: import("@sinclair/typebox").TString;
205
+ module_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
206
+ latest_run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
207
+ activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
208
+ final_note: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
209
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
210
+ path: import("@sinclair/typebox").TString;
211
+ name: import("@sinclair/typebox").TString;
212
+ group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
213
+ size_bytes: import("@sinclair/typebox").TInteger;
214
+ media_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
215
+ }>>>;
216
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
217
+ }>>;
218
+ artifact_preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
219
+ kind: import("@sinclair/typebox").TLiteral<"artifact_preview">;
220
+ title: import("@sinclair/typebox").TString;
221
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"available">, import("@sinclair/typebox").TLiteral<"updated">]>;
222
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
223
+ run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
224
+ }>>;
141
225
  }>;
142
226
  export declare const MessageProjectionSchema: import("@sinclair/typebox").TObject<{
143
227
  id: import("@sinclair/typebox").TString;
@@ -184,6 +268,20 @@ export declare const MessageProjectionSchema: import("@sinclair/typebox").TObjec
184
268
  blocked_reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"binary">, import("@sinclair/typebox").TLiteral<"too_large">, import("@sinclair/typebox").TLiteral<"unsupported_encoding">, import("@sinclair/typebox").TLiteral<"restricted_path">, import("@sinclair/typebox").TLiteral<"secret_like">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
185
269
  }>;
186
270
  }>>;
271
+ worklist_compile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
272
+ kind: import("@sinclair/typebox").TLiteral<"worklist_compile">;
273
+ workflow_ref: import("@sinclair/typebox").TString;
274
+ title: import("@sinclair/typebox").TString;
275
+ task_count: import("@sinclair/typebox").TInteger;
276
+ tasks: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
277
+ task_id: import("@sinclair/typebox").TString;
278
+ title: import("@sinclair/typebox").TString;
279
+ summary: import("@sinclair/typebox").TString;
280
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
281
+ module_id: import("@sinclair/typebox").TString;
282
+ module_name: import("@sinclair/typebox").TString;
283
+ }>>;
284
+ }>>;
187
285
  worklist_feedback: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
188
286
  kind: import("@sinclair/typebox").TLiteral<"worklist_terminal">;
189
287
  status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
@@ -213,6 +311,34 @@ export declare const MessageProjectionSchema: import("@sinclair/typebox").TObjec
213
311
  }>>>;
214
312
  primary_task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
215
313
  }>>;
314
+ task_result: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
315
+ kind: import("@sinclair/typebox").TLiteral<"task_result">;
316
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
317
+ title: import("@sinclair/typebox").TString;
318
+ task_id: import("@sinclair/typebox").TString;
319
+ task_title: import("@sinclair/typebox").TString;
320
+ result_key: import("@sinclair/typebox").TString;
321
+ summary: import("@sinclair/typebox").TString;
322
+ module_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
323
+ latest_run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
324
+ activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
325
+ final_note: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
326
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
327
+ path: import("@sinclair/typebox").TString;
328
+ name: import("@sinclair/typebox").TString;
329
+ group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
330
+ size_bytes: import("@sinclair/typebox").TInteger;
331
+ media_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
332
+ }>>>;
333
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
334
+ }>>;
335
+ artifact_preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
336
+ kind: import("@sinclair/typebox").TLiteral<"artifact_preview">;
337
+ title: import("@sinclair/typebox").TString;
338
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"available">, import("@sinclair/typebox").TLiteral<"updated">]>;
339
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
340
+ run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
341
+ }>>;
216
342
  }>>;
217
343
  clarification_card: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
218
344
  thread_id: import("@sinclair/typebox").TString;
@@ -283,6 +409,20 @@ export declare const SendMainChatMessageResultSchema: import("@sinclair/typebox"
283
409
  blocked_reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"binary">, import("@sinclair/typebox").TLiteral<"too_large">, import("@sinclair/typebox").TLiteral<"unsupported_encoding">, import("@sinclair/typebox").TLiteral<"restricted_path">, import("@sinclair/typebox").TLiteral<"secret_like">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
284
410
  }>;
285
411
  }>>;
412
+ worklist_compile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
413
+ kind: import("@sinclair/typebox").TLiteral<"worklist_compile">;
414
+ workflow_ref: import("@sinclair/typebox").TString;
415
+ title: import("@sinclair/typebox").TString;
416
+ task_count: import("@sinclair/typebox").TInteger;
417
+ tasks: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
418
+ task_id: import("@sinclair/typebox").TString;
419
+ title: import("@sinclair/typebox").TString;
420
+ summary: import("@sinclair/typebox").TString;
421
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
422
+ module_id: import("@sinclair/typebox").TString;
423
+ module_name: import("@sinclair/typebox").TString;
424
+ }>>;
425
+ }>>;
286
426
  worklist_feedback: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
287
427
  kind: import("@sinclair/typebox").TLiteral<"worklist_terminal">;
288
428
  status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
@@ -312,6 +452,34 @@ export declare const SendMainChatMessageResultSchema: import("@sinclair/typebox"
312
452
  }>>>;
313
453
  primary_task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
314
454
  }>>;
455
+ task_result: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
456
+ kind: import("@sinclair/typebox").TLiteral<"task_result">;
457
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
458
+ title: import("@sinclair/typebox").TString;
459
+ task_id: import("@sinclair/typebox").TString;
460
+ task_title: import("@sinclair/typebox").TString;
461
+ result_key: import("@sinclair/typebox").TString;
462
+ summary: import("@sinclair/typebox").TString;
463
+ module_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
464
+ latest_run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
465
+ activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
466
+ final_note: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
467
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
468
+ path: import("@sinclair/typebox").TString;
469
+ name: import("@sinclair/typebox").TString;
470
+ group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
471
+ size_bytes: import("@sinclair/typebox").TInteger;
472
+ media_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
473
+ }>>>;
474
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
475
+ }>>;
476
+ artifact_preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
477
+ kind: import("@sinclair/typebox").TLiteral<"artifact_preview">;
478
+ title: import("@sinclair/typebox").TString;
479
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"available">, import("@sinclair/typebox").TLiteral<"updated">]>;
480
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
481
+ run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
482
+ }>>;
315
483
  }>>;
316
484
  clarification_card: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
317
485
  thread_id: import("@sinclair/typebox").TString;
@@ -379,6 +547,20 @@ export declare const MessageCreatedEventPayloadSchema: import("@sinclair/typebox
379
547
  blocked_reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"binary">, import("@sinclair/typebox").TLiteral<"too_large">, import("@sinclair/typebox").TLiteral<"unsupported_encoding">, import("@sinclair/typebox").TLiteral<"restricted_path">, import("@sinclair/typebox").TLiteral<"secret_like">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
380
548
  }>;
381
549
  }>>;
550
+ worklist_compile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
551
+ kind: import("@sinclair/typebox").TLiteral<"worklist_compile">;
552
+ workflow_ref: import("@sinclair/typebox").TString;
553
+ title: import("@sinclair/typebox").TString;
554
+ task_count: import("@sinclair/typebox").TInteger;
555
+ tasks: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
556
+ task_id: import("@sinclair/typebox").TString;
557
+ title: import("@sinclair/typebox").TString;
558
+ summary: import("@sinclair/typebox").TString;
559
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
560
+ module_id: import("@sinclair/typebox").TString;
561
+ module_name: import("@sinclair/typebox").TString;
562
+ }>>;
563
+ }>>;
382
564
  worklist_feedback: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
383
565
  kind: import("@sinclair/typebox").TLiteral<"worklist_terminal">;
384
566
  status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
@@ -408,6 +590,34 @@ export declare const MessageCreatedEventPayloadSchema: import("@sinclair/typebox
408
590
  }>>>;
409
591
  primary_task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
410
592
  }>>;
593
+ task_result: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
594
+ kind: import("@sinclair/typebox").TLiteral<"task_result">;
595
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
596
+ title: import("@sinclair/typebox").TString;
597
+ task_id: import("@sinclair/typebox").TString;
598
+ task_title: import("@sinclair/typebox").TString;
599
+ result_key: import("@sinclair/typebox").TString;
600
+ summary: import("@sinclair/typebox").TString;
601
+ module_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
602
+ latest_run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
603
+ activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
604
+ final_note: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
605
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
606
+ path: import("@sinclair/typebox").TString;
607
+ name: import("@sinclair/typebox").TString;
608
+ group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
609
+ size_bytes: import("@sinclair/typebox").TInteger;
610
+ media_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
611
+ }>>>;
612
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
613
+ }>>;
614
+ artifact_preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
615
+ kind: import("@sinclair/typebox").TLiteral<"artifact_preview">;
616
+ title: import("@sinclair/typebox").TString;
617
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"available">, import("@sinclair/typebox").TLiteral<"updated">]>;
618
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
619
+ run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
620
+ }>>;
411
621
  }>>;
412
622
  clarification_card: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
413
623
  thread_id: import("@sinclair/typebox").TString;
@@ -2,6 +2,7 @@ import { Type } from "@sinclair/typebox";
2
2
  import { ActivityRefSchema, ClarificationRoundRefSchema, ClarificationThreadRefSchema, CursorSchema, IsoDateTimeStringSchema, MessageIdSchema, RunResultIdSchema, TaskIdSchema, WorkflowInvocationRefSchema, } from "../domain/index.js";
3
3
  import { ACCOUNT_AVATAR_COLORS } from "../../domain/index.js";
4
4
  import { InterruptedCommandDispositionSchema, NonEmptyStringSchema, commandEnvelopeSchema, commandResponseWithResultSchema, timelineWindowSchema, } from "./primitives.js";
5
+ import { WorklistCompiledTaskSummarySchema } from "./work-items.js";
5
6
  export const AccountAvatarColorSchema = Type.Union(ACCOUNT_AVATAR_COLORS.map((color) => Type.Literal(color)));
6
7
  export const AccountAvatarProjectionSchema = Type.Union([
7
8
  Type.Object({
@@ -91,6 +92,35 @@ export const WorklistFeedbackRefSchema = Type.Object({
91
92
  generated_files: Type.Optional(Type.Array(WorklistFeedbackGeneratedFileSchema)),
92
93
  primary_task_id: Type.Optional(TaskIdSchema),
93
94
  }, { additionalProperties: false });
95
+ export const TaskResultRefSchema = Type.Object({
96
+ kind: Type.Literal("task_result"),
97
+ status: Type.Union([Type.Literal("completed"), Type.Literal("failed")]),
98
+ title: NonEmptyStringSchema,
99
+ task_id: TaskIdSchema,
100
+ task_title: NonEmptyStringSchema,
101
+ result_key: NonEmptyStringSchema,
102
+ summary: Type.String(),
103
+ module_name: Type.Optional(NonEmptyStringSchema),
104
+ latest_run_result_id: Type.Optional(RunResultIdSchema),
105
+ activity_ref: Type.Optional(ActivityRefSchema),
106
+ final_note: Type.Optional(Type.String()),
107
+ generated_files: Type.Optional(Type.Array(WorklistFeedbackGeneratedFileSchema)),
108
+ error_code: Type.Optional(NonEmptyStringSchema),
109
+ }, { additionalProperties: false });
110
+ export const WorklistCompileRefSchema = Type.Object({
111
+ kind: Type.Literal("worklist_compile"),
112
+ workflow_ref: WorkflowInvocationRefSchema,
113
+ title: NonEmptyStringSchema,
114
+ task_count: Type.Integer({ minimum: 0 }),
115
+ tasks: Type.Array(WorklistCompiledTaskSummarySchema),
116
+ }, { additionalProperties: false });
117
+ export const ArtifactPreviewRefSchema = Type.Object({
118
+ kind: Type.Literal("artifact_preview"),
119
+ title: NonEmptyStringSchema,
120
+ status: Type.Union([Type.Literal("available"), Type.Literal("updated")]),
121
+ task_id: Type.Optional(TaskIdSchema),
122
+ run_result_id: Type.Optional(RunResultIdSchema),
123
+ }, { additionalProperties: false });
94
124
  export const MessageRefsSchema = Type.Object({
95
125
  task_id: Type.Optional(TaskIdSchema),
96
126
  activity_ref: Type.Optional(ActivityRefSchema),
@@ -99,7 +129,10 @@ export const MessageRefsSchema = Type.Object({
99
129
  clarification_round_ref: Type.Optional(ClarificationRoundRefSchema),
100
130
  scratchpad_source: Type.Optional(Type.Union([Type.Literal("include"), Type.Literal("exclude")])),
101
131
  reference_file: Type.Optional(MessageReferenceFileRefSchema),
132
+ worklist_compile: Type.Optional(WorklistCompileRefSchema),
102
133
  worklist_feedback: Type.Optional(WorklistFeedbackRefSchema),
134
+ task_result: Type.Optional(TaskResultRefSchema),
135
+ artifact_preview: Type.Optional(ArtifactPreviewRefSchema),
103
136
  }, { additionalProperties: false });
104
137
  export const MessageProjectionSchema = Type.Object({
105
138
  id: MessageIdSchema,
@@ -515,6 +515,14 @@ export declare const ScratchpadUpdatedEventPayloadSchema: import("@sinclair/type
515
515
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
516
516
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
517
517
  submitted_at: import("@sinclair/typebox").TString;
518
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
519
+ task_id: import("@sinclair/typebox").TString;
520
+ title: import("@sinclair/typebox").TString;
521
+ summary: import("@sinclair/typebox").TString;
522
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
523
+ module_id: import("@sinclair/typebox").TString;
524
+ module_name: import("@sinclair/typebox").TString;
525
+ }>>>;
518
526
  }>>;
519
527
  }>;
520
528
  activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -6,8 +6,8 @@ import type { ProviderUsageBreakdownProjectionSchema, ProviderUsageCategorySchem
6
6
  import type { ProjectTimelineItemKindSchema, ProjectTimelineItemSchema, ProjectTimelineItemStatusSchema, ProjectTimelineResponseSchema, ProjectTimelineTaskUpdateStateSchema, ProjectTimelineClarificationTraceSchema, ProjectTimelineTraceCardSchema, ProjectTimelineTraceLinkSchema } from "./project-timeline.js";
7
7
  import type { PresignedUploadPutSchema, RelayUploadProjectionSchema, RelayUploadPurposeSchema, Sha256DigestSchema, StagedUploadReferenceSchema, StartRelayUploadDispositionSchema, StartRelayUploadPayloadSchema, StartRelayUploadResultSchema } from "./uploads.js";
8
8
  import type { MarkReadDispositionSchema, MarkReadPayloadSchema, MarkReadResultSchema, ReadStateScopeProjectionSchema, ReadStateScopeSchema, ReadStateSummaryProjectionSchema } from "./read-state.js";
9
- import type { GetMessagesRequestSchema, MessageCreatedEventPayloadSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, ReferenceFileCategorySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResultSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackItemSchema, WorklistFeedbackRefSchema } from "./messages.js";
10
- import type { CheckSkipReasonCodeSchema, ExternalSideEffectSummaryProjectionSchema, GetRecoverySummariesRequestSchema, GetRecoverySummaryResponseSchema, RecoverySummaryProjectionSchema, RunResultProjectionSchema, ScratchpadProjectionSchema, ScratchpadReceiptProjectionSchema, TaskContractProjectionSchema, TaskDetailProjectionSchema, TaskDetailResultProjectionSchema, TaskModuleProjectionSchema, TaskProjectionSchema, TaskStatusSchema, WorklistProjectionSchema } from "./work-items.js";
9
+ import type { GetMessagesRequestSchema, MessageCreatedEventPayloadSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, ReferenceFileCategorySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResultSchema, ArtifactPreviewRefSchema, TaskResultRefSchema, WorklistCompileRefSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackItemSchema, WorklistFeedbackRefSchema } from "./messages.js";
10
+ import type { CheckSkipReasonCodeSchema, ExternalSideEffectSummaryProjectionSchema, GetRecoverySummariesRequestSchema, GetRecoverySummaryResponseSchema, RecoverySummaryProjectionSchema, RunResultProjectionSchema, ScratchpadProjectionSchema, ScratchpadReceiptProjectionSchema, TaskContractProjectionSchema, TaskDetailProjectionSchema, TaskDetailResultProjectionSchema, TaskModuleProjectionSchema, TaskProjectionSchema, TaskStatusSchema, WorklistCompiledTaskSummarySchema, WorklistProjectionSchema } from "./work-items.js";
11
11
  import type { ActiveApprovalProjectionSchema, ApprovalCommandProjectionSchema, ApprovalDecisionKindSchema, ApprovalDecisionOptionProjectionSchema, ApprovalFileChangeProjectionSchema, ApprovalPermissionsProjectionSchema, ApprovalRequestKindSchema, ApprovalRequestProjectionSchema, ApprovalResolutionOutcomeSchema, ApprovalResolutionProjectionSchema, DecideApprovalDispositionSchema, DecideApprovalPayloadSchema, DecideApprovalResultSchema } from "./approvals.js";
12
12
  import type { ActiveClarificationProjectionSchema, ClarificationChangedEventPayloadSchema, ClarificationOwnerProjectionSchema, ClarificationRequestPayloadSchema, ClarificationRoundProjectionSchema, ClarificationRoundSummaryProjectionSchema, ClarificationSuccessorRefSchema, ClarificationThreadProjectionSchema, ContextRefSchema, GetClarificationRoundMessagesRequestSchema, GetClarificationRoundResponseSchema, GetClarificationThreadResponseSchema, HumanInteractionPayloadSchema, HumanRequestPayloadSchema, SendClarificationRoundMessageDispositionSchema, SendClarificationRoundMessagePayloadSchema, SendClarificationRoundMessageResultSchema, SubmitClarificationRoundDispositionSchema, SubmitClarificationRoundPayloadSchema, SubmitClarificationRoundResultSchema } from "./clarifications.js";
13
13
  import type { GetProjectDocRequestSchema, GetProjectDocResponseSchema, GetProjectDocsResponseSchema, GetReferenceFilesRequestSchema, GetReferenceFilesResponseSchema, GetViewerAssetRequestSchema, GetViewerFileRequestSchema, GetViewerFileResponseSchema, GetViewerTreeRequestSchema, GetViewerTreeResponseSchema, ProjectDocKeySchema, ProjectDocParamsSchema, ProjectDocSummaryProjectionSchema, ReferenceDirectoryProjectionSchema, ReferenceFileProjectionSchema, ReferenceSummaryProjectionSchema, ReferenceTextReadBlockedReasonSchema, RefreshReferenceSummariesDispositionSchema, RefreshReferenceSummariesPayloadSchema, RefreshReferenceSummariesResultSchema, UploadReferenceFileDispositionSchema, UploadReferenceFilePayloadSchema, UploadReferenceFileResultSchema, ViewerAssetVariantSchema, ViewerFileContentProjectionSchema, ViewerFileProjectionSchema, ViewerPathSchema, ViewerRepoSnapshotSchema, ViewerTreeEntryProjectionSchema, ViewerTreeTextReadBlockedReasonSchema, ViewerUnreadableReasonSchema } from "./viewer-reference.js";
@@ -101,6 +101,10 @@ export type MarkReadResult = Static<typeof MarkReadResultSchema>;
101
101
  export type MarkReadResponse = CommandResponse<MarkReadDisposition, MarkReadResult>;
102
102
  export type ReferenceFileCategory = Static<typeof ReferenceFileCategorySchema>;
103
103
  export type MessageReferenceFileRef = Static<typeof MessageReferenceFileRefSchema>;
104
+ export type WorklistCompiledTaskSummary = Static<typeof WorklistCompiledTaskSummarySchema>;
105
+ export type WorklistCompileRef = Static<typeof WorklistCompileRefSchema>;
106
+ export type ArtifactPreviewRef = Static<typeof ArtifactPreviewRefSchema>;
107
+ export type TaskResultRef = Static<typeof TaskResultRefSchema>;
104
108
  export type WorklistFeedbackItem = Static<typeof WorklistFeedbackItemSchema>;
105
109
  export type WorklistFeedbackGeneratedFile = Static<typeof WorklistFeedbackGeneratedFileSchema>;
106
110
  export type WorklistFeedbackRef = Static<typeof WorklistFeedbackRefSchema>;
@@ -424,6 +424,20 @@ export declare const UploadReferenceFileResultSchema: import("@sinclair/typebox"
424
424
  blocked_reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"binary">, import("@sinclair/typebox").TLiteral<"too_large">, import("@sinclair/typebox").TLiteral<"unsupported_encoding">, import("@sinclair/typebox").TLiteral<"restricted_path">, import("@sinclair/typebox").TLiteral<"secret_like">, import("@sinclair/typebox").TLiteral<"unknown">]>>;
425
425
  }>;
426
426
  }>>;
427
+ worklist_compile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
428
+ kind: import("@sinclair/typebox").TLiteral<"worklist_compile">;
429
+ workflow_ref: import("@sinclair/typebox").TString;
430
+ title: import("@sinclair/typebox").TString;
431
+ task_count: import("@sinclair/typebox").TInteger;
432
+ tasks: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
433
+ task_id: import("@sinclair/typebox").TString;
434
+ title: import("@sinclair/typebox").TString;
435
+ summary: import("@sinclair/typebox").TString;
436
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
437
+ module_id: import("@sinclair/typebox").TString;
438
+ module_name: import("@sinclair/typebox").TString;
439
+ }>>;
440
+ }>>;
427
441
  worklist_feedback: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
428
442
  kind: import("@sinclair/typebox").TLiteral<"worklist_terminal">;
429
443
  status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
@@ -453,6 +467,34 @@ export declare const UploadReferenceFileResultSchema: import("@sinclair/typebox"
453
467
  }>>>;
454
468
  primary_task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
455
469
  }>>;
470
+ task_result: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
471
+ kind: import("@sinclair/typebox").TLiteral<"task_result">;
472
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
473
+ title: import("@sinclair/typebox").TString;
474
+ task_id: import("@sinclair/typebox").TString;
475
+ task_title: import("@sinclair/typebox").TString;
476
+ result_key: import("@sinclair/typebox").TString;
477
+ summary: import("@sinclair/typebox").TString;
478
+ module_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
479
+ latest_run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
480
+ activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
481
+ final_note: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
482
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
483
+ path: import("@sinclair/typebox").TString;
484
+ name: import("@sinclair/typebox").TString;
485
+ group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
486
+ size_bytes: import("@sinclair/typebox").TInteger;
487
+ media_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
488
+ }>>>;
489
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
490
+ }>>;
491
+ artifact_preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
492
+ kind: import("@sinclair/typebox").TLiteral<"artifact_preview">;
493
+ title: import("@sinclair/typebox").TString;
494
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"available">, import("@sinclair/typebox").TLiteral<"updated">]>;
495
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
496
+ run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
497
+ }>>;
456
498
  }>>;
457
499
  clarification_card: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
458
500
  thread_id: import("@sinclair/typebox").TString;
@@ -16,6 +16,15 @@ export declare const ResultAnchorSchema: import("@sinclair/typebox").TUnion<[imp
16
16
  kind: import("@sinclair/typebox").TLiteral<"clarification_round">;
17
17
  clarification_round_ref: import("@sinclair/typebox").TString;
18
18
  }>]>;
19
+ export declare const TaskStatusSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
20
+ export declare const WorklistCompiledTaskSummarySchema: import("@sinclair/typebox").TObject<{
21
+ task_id: import("@sinclair/typebox").TString;
22
+ title: import("@sinclair/typebox").TString;
23
+ summary: import("@sinclair/typebox").TString;
24
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
25
+ module_id: import("@sinclair/typebox").TString;
26
+ module_name: import("@sinclair/typebox").TString;
27
+ }>;
19
28
  export declare const ScratchpadReceiptProjectionSchema: import("@sinclair/typebox").TObject<{
20
29
  workflow_ref: import("@sinclair/typebox").TString;
21
30
  activity_ref: import("@sinclair/typebox").TString;
@@ -25,6 +34,14 @@ export declare const ScratchpadReceiptProjectionSchema: import("@sinclair/typebo
25
34
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
26
35
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
27
36
  submitted_at: import("@sinclair/typebox").TString;
37
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
38
+ task_id: import("@sinclair/typebox").TString;
39
+ title: import("@sinclair/typebox").TString;
40
+ summary: import("@sinclair/typebox").TString;
41
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
42
+ module_id: import("@sinclair/typebox").TString;
43
+ module_name: import("@sinclair/typebox").TString;
44
+ }>>>;
28
45
  }>;
29
46
  export declare const ScratchpadProjectionSchema: import("@sinclair/typebox").TObject<{
30
47
  id: import("@sinclair/typebox").TLiteral<"current">;
@@ -48,9 +65,16 @@ export declare const ScratchpadProjectionSchema: import("@sinclair/typebox").TOb
48
65
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
49
66
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
50
67
  submitted_at: import("@sinclair/typebox").TString;
68
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
69
+ task_id: import("@sinclair/typebox").TString;
70
+ title: import("@sinclair/typebox").TString;
71
+ summary: import("@sinclair/typebox").TString;
72
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
73
+ module_id: import("@sinclair/typebox").TString;
74
+ module_name: import("@sinclair/typebox").TString;
75
+ }>>>;
51
76
  }>>;
52
77
  }>;
53
- export declare const TaskStatusSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
54
78
  export declare const TaskModuleProjectionSchema: import("@sinclair/typebox").TObject<{
55
79
  id: import("@sinclair/typebox").TString;
56
80
  name: import("@sinclair/typebox").TString;
@@ -20,6 +20,21 @@ export const ResultAnchorSchema = Type.Union([
20
20
  clarification_round_ref: ClarificationRoundRefSchema,
21
21
  }, { additionalProperties: false }),
22
22
  ]);
23
+ export const TaskStatusSchema = Type.Union([
24
+ Type.Literal("todo"),
25
+ Type.Literal("running"),
26
+ Type.Literal("pending"),
27
+ Type.Literal("done"),
28
+ Type.Literal("failed"),
29
+ ]);
30
+ export const WorklistCompiledTaskSummarySchema = Type.Object({
31
+ task_id: TaskIdSchema,
32
+ title: NonEmptyStringSchema,
33
+ summary: Type.String(),
34
+ status: TaskStatusSchema,
35
+ module_id: TaskModuleIdSchema,
36
+ module_name: NonEmptyStringSchema,
37
+ }, { additionalProperties: false });
23
38
  export const ScratchpadReceiptProjectionSchema = Type.Object({
24
39
  workflow_ref: WorkflowInvocationRefSchema,
25
40
  activity_ref: ActivityRefSchema,
@@ -29,6 +44,7 @@ export const ScratchpadReceiptProjectionSchema = Type.Object({
29
44
  open_questions: Type.Array(Type.String()),
30
45
  task_changes: Type.Array(Type.String()),
31
46
  submitted_at: IsoDateTimeStringSchema,
47
+ compiled_tasks: Type.Optional(Type.Array(WorklistCompiledTaskSummarySchema)),
32
48
  }, { additionalProperties: false });
33
49
  export const ScratchpadProjectionSchema = Type.Object({
34
50
  id: Type.Literal("current"),
@@ -45,13 +61,6 @@ export const ScratchpadProjectionSchema = Type.Object({
45
61
  submitted_at: Type.Optional(IsoDateTimeStringSchema),
46
62
  receipts: Type.Array(ScratchpadReceiptProjectionSchema),
47
63
  }, { additionalProperties: false });
48
- export const TaskStatusSchema = Type.Union([
49
- Type.Literal("todo"),
50
- Type.Literal("running"),
51
- Type.Literal("pending"),
52
- Type.Literal("done"),
53
- Type.Literal("failed"),
54
- ]);
55
64
  export const TaskModuleProjectionSchema = Type.Object({
56
65
  id: TaskModuleIdSchema,
57
66
  name: NonEmptyStringSchema,
@@ -40,6 +40,14 @@ export declare const RefreshScratchpadResultSchema: import("@sinclair/typebox").
40
40
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
41
41
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
42
42
  submitted_at: import("@sinclair/typebox").TString;
43
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
44
+ task_id: import("@sinclair/typebox").TString;
45
+ title: import("@sinclair/typebox").TString;
46
+ summary: import("@sinclair/typebox").TString;
47
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
48
+ module_id: import("@sinclair/typebox").TString;
49
+ module_name: import("@sinclair/typebox").TString;
50
+ }>>>;
43
51
  }>>;
44
52
  }>>;
45
53
  }>;
@@ -77,6 +85,14 @@ export declare const SubmitWorklistDispositionSchema: import("@sinclair/typebox"
77
85
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
78
86
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
79
87
  submitted_at: import("@sinclair/typebox").TString;
88
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
89
+ task_id: import("@sinclair/typebox").TString;
90
+ title: import("@sinclair/typebox").TString;
91
+ summary: import("@sinclair/typebox").TString;
92
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"todo">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
93
+ module_id: import("@sinclair/typebox").TString;
94
+ module_name: import("@sinclair/typebox").TString;
95
+ }>>>;
80
96
  }>>;
81
97
  }>;
82
98
  }>, import("@sinclair/typebox").TObject<{
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xfey/tutti",
3
- "version": "0.1.27",
3
+ "version": "0.1.29",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -127,7 +127,7 @@ launch / join
127
127
  -> 可自纠 pipeline feedback 时在当前 Run 内部 retry
128
128
  -> promotion
129
129
  -> 如果 canonical Project Docs 被 promotion 修改,Project Brief 非阻塞尽力刷新
130
- -> Worklist terminal feedback
130
+ -> task result feedback
131
131
  -> 当前 Worklist 全部 done 后阶段性 context_sync
132
132
  -> Project Brief 尽力刷新
133
133
  -> 回写状态 / 文档 / 下一轮讨论
@@ -10,7 +10,7 @@ Templates in this directory may describe task contracts, repo evidence, check ex
10
10
  `task-run.md` allows `needs_human` only for human requirement decisions, non-secret context, or risk confirmation. Unusable candidates, ordinary missing diffs, or repo/tooling errors that prevent implementation should be returned as `failed` so the Run does not open task-bound clarification incorrectly. If the task contract does not require repository file changes, the output can use `completed_no_repo_changes`; otherwise a completed implementation is expected to produce a candidate diff. If the candidate is complete but Codex self-validation commands are unavailable or blocked, the task-run output should still be `completed`; Tutti checks are the authoritative validation gate.
11
11
  Initial `task-run.md`, active `task-continuation.md`, and active pipeline `task-retry.md` receive only the compact task contract fields `title / goal / scope`; continuation adds the required `continuation` block, and pipeline self-correction retry adds the required `correction` block with only the previous failure summary, machine-generated reason code, correction guidance, and optional promotion failure summary. Provider-facing prompts do not receive task ids, task summaries, Run lineage, workflow anchors, changed paths, docs status, checks status, or the safety audit context entry.
12
12
  All three Run templates use a slim mutually exclusive structured output schema under `result`: exactly one of `completed.{summary,user_note_candidate}`, `completed_no_repo_changes.{summary,user_note_candidate}`, `needs_human.{title,summary,request}`, or `failed.summary`. The `summary` is a concise, human-readable result note for project members who may not inspect the code. Completed branches also require `user_note_candidate`, which is either a short user-facing final-card sentence or `null`; it must not repeat `summary` or include file paths. Checks, docs, promotion, changed paths, and other Tutti status stay in structured fields derived by the Run pipeline. They do not ask Codex to self-report docs status or changed paths; both come from Run pipeline Git diff and derived projection.
13
- Run templates describe `docs/reference/` as a user-visible file exchange area. Human uploads remain under `docs/reference/files/` and `docs/reference/images/`; `docs/reference/tutti/**` is for Tutti-generated files intended for direct member review in References, not temporary output, internal notes, logs, or canonical project documentation. Generated user-visible files must be written under `docs/reference/tutti/`, with `docs/reference/tutti/<meaningful-folder>/...` used when the folder name should be shown as a References UI group. Generated files under `docs/reference/tutti/` are discovered from promoted changed paths, rendered by References automatically, and may be listed in Worklist terminal feedback.
13
+ Run templates describe `docs/reference/` as a user-visible file exchange area. Human uploads remain under `docs/reference/files/` and `docs/reference/images/`; `docs/reference/tutti/**` is for Tutti-generated files intended for direct member review in References, not temporary output, internal notes, logs, or canonical project documentation. Generated user-visible files must be written under `docs/reference/tutti/`, with `docs/reference/tutti/<meaningful-folder>/...` used when the folder name should be shown as a References UI group. Generated files under `docs/reference/tutti/` are discovered from promoted changed paths, rendered by References automatically, and may be listed in completed task result cards.
14
14
  Initial `task-run.md`, active `task-continuation.md`, and active pipeline `task-retry.md` also instruct Codex to write or update the single active `tutti.artifact.json` manifest only when the task creates or updates a member-viewable visual artifact. The manifest schema requires top-level `version: 1`; it must include a viewer-facing `artifact.title` and must set `artifact.network: true` when the preview loads remote browser resources. The manifest remains repo truth and is not reported through the structured output schema.
15
15
  Active task-bound follow-up still only starts continuation Runs from `Run.needs_human`. Pipeline self-correction retry happens before a terminal Run result is recorded and does not open clarification.
16
16
  Provider transient retry is separate from self-correction. If a retryable Codex app-server workspace-write failure occurs before usable structured output, Run pipeline may rerun the same prompt family once in a fresh run workspace: initial Runs stay on `task-run.md`, continuation Runs stay on `task-continuation.md`, and self-correction attempts stay on `task-retry.md`. This retry does not add `RunCorrectionContext` unless the failed attempt was already a self-correction attempt.