@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
@@ -1,6 +1,6 @@
1
1
  export { CollaborationStateCursorError } from "./serialization.js";
2
2
  export { createIdleExecutionStatusProjection } from "./execution-status.js";
3
- export { createMainChatAgentMessage, createMainChatMessage, createMainChatSystemMessage, hasMainChatWorklistFeedbackMessage, readCompletedWorklistFeedbackTaskIds, readMessageProjectionById, readMainChatMessageWindow, readMainChatMessagesAfter, readMainChatMessagesAfterCursor, readMainChatMessagesBeforeCursor, } from "./messages.js";
3
+ export { createMainChatAgentMessage, createMainChatMessage, createMainChatSystemMessage, hasMainChatArtifactPreviewMessage, hasMainChatTaskResultMessage, hasMainChatWorklistCompileMessage, hasMainChatWorklistFeedbackMessage, readCompletedWorklistFeedbackTaskIds, readMessageProjectionById, readMainChatMessageWindow, readMainChatMessagesAfter, readMainChatMessagesAfterCursor, readMainChatMessagesBeforeCursor, } from "./messages.js";
4
4
  export { createEmptyScratchpadProjection, readScratchpadReceiptSourceRefs, readScratchpadProjection, submitScratchpadProjection, upsertScratchpadProjection, } from "./scratchpad.js";
5
5
  export { advanceScratchpadTaskCompileSourceCursor, markScratchpadRefreshFailed, markScratchpadRefreshStarted, markScratchpadRefreshSucceeded, markScratchpadSourceDirty, readScratchpadSourceState, } from "./scratchpad-source-state.js";
6
6
  export { deleteStaleClarificationSubmitReplayHints, readActiveClarificationProjection, readClarificationRoundProjection, readClarificationRoundsForThread, readClarificationThreadResponse, readSealedClarificationRoundsWithoutSuccessor, readSubmittedTaskCompileClarificationRounds, readSubmittedTaskCompileClarificationRoundsAfterCursor, } from "./clarification-records.js";
@@ -12,6 +12,6 @@ export { recordRunNeedsHumanResult, recordRunResult } from "./run-recording.js";
12
12
  export { recoverStaleRunningTasksAsFailed } from "./recovery.js";
13
13
  export { markReadStateScope, readReadStateSummary, recordReadNotificationEvent, } from "./read-state.js";
14
14
  export { readTaskDetailProjection } from "./task-details.js";
15
- export { applyTaskCompileProposal, markTaskRunStarted, readNextRunnableTask, readRecoverableScheduledRun, readTaskProjection, readWorklistProjection, } from "./worklist.js";
15
+ export { applyTaskCompileProposal, markTaskRunStarted, readNextRunnableTask, readRecoverableScheduledRun, readCompiledTaskSummariesByWorkflowRef, readTaskProjection, readWorklistProjection, } from "./worklist.js";
16
16
  export type { ApplyTaskCompileProposalResult, CloseTaskBoundClarificationRetaskingRequiredInput, CloseTaskBoundClarificationRetaskingRequiredResult, CreateClarificationRoundAgentMessageInput, CreateClarificationRoundMessageInput, CreateMainChatAgentMessageInput, CreateMainChatMessageInput, CreateMainChatSystemMessageInput, CursorPageOptions, MarkReadStateScopeInput, MarkReadStateScopeResult, MarkTaskRunStartedInput, MarkTaskRunStartedResult, MaterializeClarificationSuccessorInput, MaterializeTaskBoundRunSuccessorInput, MaterializeTaskBoundRunSuccessorResult, MessageAuthorInput, NextRunnableTaskResult, OpenNextTaskBoundClarificationRoundInput, OpenNextTaskBoundClarificationRoundResult, OpenNextTaskCompileClarificationRoundInput, OpenNextTaskCompileClarificationRoundResult, OpenTaskCompileClarificationRoundInput, OpenTaskCompileClarificationRoundResult, ReadMainChatMessagesAfterOptions, ReadMessageWindowOptions, ReadReadStateSummaryInput, RecoverStaleRunningTasksResult, RecoverableScheduledRun, RecordReadNotificationEventInput, RecordRecoverySummaryInput, RecordRecoverySummaryResult, RecordRunNeedsHumanResultInput, RecordRunNeedsHumanResultResult, RecordRunResultInput, RecordRunResultResult, RunResultPromotionProjection, ScratchpadSnapshotInput, SubmitScratchpadInput, SubmitScratchpadResult, SealedClarificationRoundWithoutSuccessor, SubmitClarificationRoundInput, TaskCompileProposalInput, TaskCompileProposalModuleInput, TaskCompileProposalTaskInput, } from "./types.js";
17
17
  //# sourceMappingURL=index.d.ts.map
@@ -1,6 +1,6 @@
1
1
  export { CollaborationStateCursorError } from "./serialization.js";
2
2
  export { createIdleExecutionStatusProjection } from "./execution-status.js";
3
- export { createMainChatAgentMessage, createMainChatMessage, createMainChatSystemMessage, hasMainChatWorklistFeedbackMessage, readCompletedWorklistFeedbackTaskIds, readMessageProjectionById, readMainChatMessageWindow, readMainChatMessagesAfter, readMainChatMessagesAfterCursor, readMainChatMessagesBeforeCursor, } from "./messages.js";
3
+ export { createMainChatAgentMessage, createMainChatMessage, createMainChatSystemMessage, hasMainChatArtifactPreviewMessage, hasMainChatTaskResultMessage, hasMainChatWorklistCompileMessage, hasMainChatWorklistFeedbackMessage, readCompletedWorklistFeedbackTaskIds, readMessageProjectionById, readMainChatMessageWindow, readMainChatMessagesAfter, readMainChatMessagesAfterCursor, readMainChatMessagesBeforeCursor, } from "./messages.js";
4
4
  export { createEmptyScratchpadProjection, readScratchpadReceiptSourceRefs, readScratchpadProjection, submitScratchpadProjection, upsertScratchpadProjection, } from "./scratchpad.js";
5
5
  export { advanceScratchpadTaskCompileSourceCursor, markScratchpadRefreshFailed, markScratchpadRefreshStarted, markScratchpadRefreshSucceeded, markScratchpadSourceDirty, readScratchpadSourceState, } from "./scratchpad-source-state.js";
6
6
  export { deleteStaleClarificationSubmitReplayHints, readActiveClarificationProjection, readClarificationRoundProjection, readClarificationRoundsForThread, readClarificationThreadResponse, readSealedClarificationRoundsWithoutSuccessor, readSubmittedTaskCompileClarificationRounds, readSubmittedTaskCompileClarificationRoundsAfterCursor, } from "./clarification-records.js";
@@ -12,5 +12,5 @@ export { recordRunNeedsHumanResult, recordRunResult } from "./run-recording.js";
12
12
  export { recoverStaleRunningTasksAsFailed } from "./recovery.js";
13
13
  export { markReadStateScope, readReadStateSummary, recordReadNotificationEvent, } from "./read-state.js";
14
14
  export { readTaskDetailProjection } from "./task-details.js";
15
- export { applyTaskCompileProposal, markTaskRunStarted, readNextRunnableTask, readRecoverableScheduledRun, readTaskProjection, readWorklistProjection, } from "./worklist.js";
15
+ export { applyTaskCompileProposal, markTaskRunStarted, readNextRunnableTask, readRecoverableScheduledRun, readCompiledTaskSummariesByWorkflowRef, readTaskProjection, readWorklistProjection, } from "./worklist.js";
16
16
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { type MessageId, type TaskId } from "@tutti/shared/ids";
1
+ import { type MessageId, type RunResultId, type TaskId, type WorkflowInvocationRef } from "@tutti/shared/ids";
2
2
  import type { MessageProjection, MessageWindow } from "@tutti/shared/schemas/api";
3
3
  import type { SqliteDatabase } from "../store/index.js";
4
4
  import type { CreateMainChatAgentMessageInput, CreateMainChatMessageInput, CreateMainChatSystemMessageInput, ReadMainChatMessagesAfterOptions, ReadMessageWindowOptions } from "./types.js";
@@ -9,6 +9,9 @@ export declare function createMainChatSystemMessage(db: SqliteDatabase, input: C
9
9
  export declare function createMainChatAgentMessage(db: SqliteDatabase, input: CreateMainChatAgentMessageInput): MessageProjection;
10
10
  export declare function readMessageProjectionById(db: SqliteDatabase, messageId: MessageId): MessageProjection | null;
11
11
  export declare function hasMainChatWorklistFeedbackMessage(db: SqliteDatabase, feedbackKey: string): boolean;
12
+ export declare function hasMainChatTaskResultMessage(db: SqliteDatabase, resultKey: string): boolean;
13
+ export declare function hasMainChatWorklistCompileMessage(db: SqliteDatabase, workflowRef: WorkflowInvocationRef): boolean;
14
+ export declare function hasMainChatArtifactPreviewMessage(db: SqliteDatabase, runResultId: RunResultId): boolean;
12
15
  export declare function readCompletedWorklistFeedbackTaskIds(db: SqliteDatabase): Set<TaskId>;
13
16
  export declare function readMainChatMessageWindow(db: SqliteDatabase, options?: ReadMessageWindowOptions): MessageWindow;
14
17
  export declare function readMainChatMessagesAfter(db: SqliteDatabase, options: ReadMainChatMessagesAfterOptions): MessageProjection[];
@@ -1,4 +1,4 @@
1
- import { createMessageId } from "@tutti/shared/ids";
1
+ import { createMessageId, } from "@tutti/shared/ids";
2
2
  import { clampLimit, decodeCursor, messageCursor, nowIso, parseJson, stringifyJson, } from "./serialization.js";
3
3
  import { recordReadNotificationEvent } from "./read-state.js";
4
4
  function readClarificationCardForMessage(db, messageId) {
@@ -207,6 +207,42 @@ export function hasMainChatWorklistFeedbackMessage(db, feedbackKey) {
207
207
  .get(feedbackKey);
208
208
  return row !== undefined;
209
209
  }
210
+ export function hasMainChatTaskResultMessage(db, resultKey) {
211
+ const row = db
212
+ .prepare(`
213
+ SELECT 1 AS exists_flag
214
+ FROM messages
215
+ WHERE scope_kind = 'main_chat'
216
+ AND json_extract(refs_json, '$.task_result.result_key') = ?
217
+ LIMIT 1
218
+ `)
219
+ .get(resultKey);
220
+ return row !== undefined;
221
+ }
222
+ export function hasMainChatWorklistCompileMessage(db, workflowRef) {
223
+ const row = db
224
+ .prepare(`
225
+ SELECT 1 AS exists_flag
226
+ FROM messages
227
+ WHERE scope_kind = 'main_chat'
228
+ AND json_extract(refs_json, '$.worklist_compile.workflow_ref') = ?
229
+ LIMIT 1
230
+ `)
231
+ .get(workflowRef);
232
+ return row !== undefined;
233
+ }
234
+ export function hasMainChatArtifactPreviewMessage(db, runResultId) {
235
+ const row = db
236
+ .prepare(`
237
+ SELECT 1 AS exists_flag
238
+ FROM messages
239
+ WHERE scope_kind = 'main_chat'
240
+ AND json_extract(refs_json, '$.artifact_preview.run_result_id') = ?
241
+ LIMIT 1
242
+ `)
243
+ .get(runResultId);
244
+ return row !== undefined;
245
+ }
210
246
  export function readCompletedWorklistFeedbackTaskIds(db) {
211
247
  const rows = db
212
248
  .prepare(`
@@ -1,4 +1,5 @@
1
1
  import { nowIso, parseJson, stringifyJson } from "./serialization.js";
2
+ import { readCompiledTaskSummariesByWorkflowRef } from "./worklist.js";
2
3
  const SCRATCHPAD_RECEIPT_LIMIT = 100;
3
4
  function normalizeSourceRefs(sourceRefs = []) {
4
5
  const byMessageId = new Map();
@@ -80,16 +81,20 @@ function readScratchpadReceipts(db) {
80
81
  LIMIT ${SCRATCHPAD_RECEIPT_LIMIT}
81
82
  `)
82
83
  .all();
83
- return rows.map((row) => ({
84
- workflow_ref: row.workflow_ref,
85
- activity_ref: row.activity_ref,
86
- topic: row.topic,
87
- background_summary: row.background_summary,
88
- current_consensus: parseJson(row.current_consensus_json, []),
89
- open_questions: parseJson(row.open_questions_json, []),
90
- task_changes: parseJson(row.task_changes_json, []),
91
- submitted_at: row.submitted_at,
92
- }));
84
+ return rows.map((row) => {
85
+ const compiledTasks = readCompiledTaskSummariesByWorkflowRef(db, row.workflow_ref);
86
+ return {
87
+ workflow_ref: row.workflow_ref,
88
+ activity_ref: row.activity_ref,
89
+ topic: row.topic,
90
+ background_summary: row.background_summary,
91
+ current_consensus: parseJson(row.current_consensus_json, []),
92
+ open_questions: parseJson(row.open_questions_json, []),
93
+ task_changes: parseJson(row.task_changes_json, []),
94
+ submitted_at: row.submitted_at,
95
+ ...(compiledTasks.length === 0 ? {} : { compiled_tasks: compiledTasks }),
96
+ };
97
+ });
93
98
  }
94
99
  export function upsertScratchpadProjection(db, input) {
95
100
  const updatedAt = nowIso(input.now);
@@ -1,8 +1,9 @@
1
- import { type TaskId } from "@tutti/shared/ids";
2
- import type { TaskProjection, WorklistProjection } from "@tutti/shared/schemas/api";
1
+ import { type TaskId, type WorkflowInvocationRef } from "@tutti/shared/ids";
2
+ import type { TaskProjection, WorklistCompiledTaskSummary, WorklistProjection } from "@tutti/shared/schemas/api";
3
3
  import type { SqliteDatabase } from "../store/index.js";
4
4
  import type { ApplyTaskCompileProposalResult, MarkTaskRunStartedInput, MarkTaskRunStartedResult, NextRunnableTaskResult, RecoverableScheduledRun, TaskCompileProposalInput } from "./types.js";
5
5
  export declare function readTaskProjection(db: SqliteDatabase, taskId: TaskId): TaskProjection | null;
6
+ export declare function readCompiledTaskSummariesByWorkflowRef(db: SqliteDatabase, workflowRef: WorkflowInvocationRef): WorklistCompiledTaskSummary[];
6
7
  export declare function readWorklistProjection(db: SqliteDatabase): WorklistProjection;
7
8
  export declare function readNextRunnableTask(db: SqliteDatabase): NextRunnableTaskResult;
8
9
  export declare function readRecoverableScheduledRun(db: SqliteDatabase): RecoverableScheduledRun | null;
@@ -44,6 +44,30 @@ export function readTaskProjection(db, taskId) {
44
44
  const row = db.prepare("SELECT * FROM tasks WHERE id = ?").get(taskId);
45
45
  return row === undefined ? null : mapTaskRow(row);
46
46
  }
47
+ export function readCompiledTaskSummariesByWorkflowRef(db, workflowRef) {
48
+ const rows = db
49
+ .prepare(`
50
+ SELECT
51
+ tasks.*,
52
+ task_modules.name AS module_name
53
+ FROM tasks
54
+ JOIN task_modules ON task_modules.id = tasks.module_id
55
+ WHERE tasks.created_from_workflow_ref = ?
56
+ ORDER BY task_modules.sort_order ASC,
57
+ task_modules.id ASC,
58
+ tasks.sort_order ASC,
59
+ tasks.id ASC
60
+ `)
61
+ .all(workflowRef);
62
+ return rows.map((row) => ({
63
+ task_id: row.id,
64
+ title: row.title,
65
+ summary: row.summary,
66
+ status: row.status,
67
+ module_id: row.module_id,
68
+ module_name: row.module_name,
69
+ }));
70
+ }
47
71
  export function readWorklistProjection(db) {
48
72
  const moduleRows = db
49
73
  .prepare(`
@@ -15,7 +15,7 @@ import { startControlPlaneTaskBoundFollowUpCheck } from "./follow-up-start.js";
15
15
  import { runControlPlaneSchedulerForTaskArrival, runControlPlaneSchedulerNow, } from "./run-scheduler.js";
16
16
  import { startControlPlaneRunForTask } from "./run-start.js";
17
17
  import { runSendClarificationRoundMessage, runSubmitClarificationRound, } from "./clarification-commands.js";
18
- import { emitWorklistCompletedFeedback, emitWorklistFailedFeedback, } from "./worklist-terminal-feedback.js";
18
+ import { emitTaskCompletedResultMessage, emitTaskFailedResultMessage, } from "./worklist-terminal-feedback.js";
19
19
  export class Phase5ControlPlane {
20
20
  engine;
21
21
  runEngine;
@@ -283,14 +283,27 @@ export class Phase5ControlPlane {
283
283
  }
284
284
  handleRunTerminalTransition(state) {
285
285
  if (state.activity.status === "finished") {
286
+ if (state.activity.task_id !== undefined) {
287
+ emitTaskCompletedResultMessage({
288
+ store: this.store,
289
+ events: this.events,
290
+ taskId: state.activity.task_id,
291
+ activityRef: state.activity.activity_ref,
292
+ ...(this.projectContext === undefined
293
+ ? {}
294
+ : { workspaceRoot: this.projectContext.workspaceRoot }),
295
+ now: this.now,
296
+ });
297
+ }
286
298
  this.maybeScheduleAfterRunCompletion();
287
299
  return;
288
300
  }
289
301
  if (state.activity.status === "failed" && state.activity.task_id !== undefined) {
290
- emitWorklistFailedFeedback({
302
+ emitTaskFailedResultMessage({
291
303
  store: this.store,
292
304
  events: this.events,
293
305
  taskId: state.activity.task_id,
306
+ activityRef: state.activity.activity_ref,
294
307
  now: this.now,
295
308
  });
296
309
  }
@@ -310,14 +323,6 @@ export class Phase5ControlPlane {
310
323
  if (this.tryRunTaskArrivalScheduler()) {
311
324
  return;
312
325
  }
313
- emitWorklistCompletedFeedback({
314
- store: this.store,
315
- events: this.events,
316
- ...(this.projectContext === undefined
317
- ? {}
318
- : { workspaceRoot: this.projectContext.workspaceRoot }),
319
- now: this.now,
320
- });
321
326
  this.maybeStartContextSyncAfterWorklistCompletion();
322
327
  }
323
328
  worklistCompletionContextSyncTrigger() {
@@ -1,4 +1,4 @@
1
- import type { TaskId } from "@tutti/shared/ids";
1
+ import type { ActivityRef, TaskId } from "@tutti/shared/ids";
2
2
  import type { MessageProjection } from "@tutti/shared/schemas/api";
3
3
  import type { HostProjectStore } from "../store/index.js";
4
4
  import type { WorkspaceEventBus } from "../server-shell/http/workspace-events.js";
@@ -8,6 +8,14 @@ type EmitWorklistFeedbackInput = {
8
8
  workspaceRoot?: string;
9
9
  now: () => Date;
10
10
  };
11
+ export declare function emitTaskCompletedResultMessage(input: EmitWorklistFeedbackInput & {
12
+ taskId: TaskId;
13
+ activityRef?: ActivityRef;
14
+ }): MessageProjection | null;
15
+ export declare function emitTaskFailedResultMessage(input: EmitWorklistFeedbackInput & {
16
+ taskId: TaskId;
17
+ activityRef?: ActivityRef;
18
+ }): MessageProjection | null;
11
19
  export declare function emitWorklistCompletedFeedback(input: EmitWorklistFeedbackInput): MessageProjection | null;
12
20
  export declare function emitWorklistFailedFeedback(input: EmitWorklistFeedbackInput & {
13
21
  taskId: TaskId;
@@ -1,5 +1,5 @@
1
1
  import { readViewerFile, referenceFileSourceForPath, referenceMediaTypeForPath, referenceTuttiGroupForPath, } from "../workspace-ops/index.js";
2
- import { createMainChatAgentMessage, hasMainChatWorklistFeedbackMessage, readCompletedWorklistFeedbackTaskIds, readTaskDetailProjection, readWorklistProjection, } from "../collaboration-state/index.js";
2
+ import { createMainChatAgentMessage, hasMainChatTaskResultMessage, hasMainChatWorklistFeedbackMessage, readCompletedWorklistFeedbackTaskIds, readTaskDetailProjection, readWorklistProjection, } from "../collaboration-state/index.js";
3
3
  import { mainChatInvalidates } from "./invalidations.js";
4
4
  const BODY_ITEM_LIMIT = 12;
5
5
  function summaryText(value, fallback) {
@@ -177,6 +177,104 @@ function markdownFallback(feedback) {
177
177
  }
178
178
  return lines.join("\n");
179
179
  }
180
+ function taskResultKey(item) {
181
+ return `task-result:${item.status}:${item.task_id}:${item.latest_run_result_id ?? "no-result"}`;
182
+ }
183
+ function taskResultFallback(result) {
184
+ const moduleText = result.module_name === undefined ? "" : ` (${result.module_name})`;
185
+ const lines = [result.title, "", `${result.task_title}${moduleText}`, ""];
186
+ if (result.final_note !== undefined && result.final_note.trim().length > 0) {
187
+ lines.push(result.final_note.trim(), "");
188
+ }
189
+ if (result.generated_files !== undefined && result.generated_files.length > 0) {
190
+ lines.push("Generated files:");
191
+ for (const file of result.generated_files) {
192
+ lines.push(`- ${file.name}`);
193
+ }
194
+ lines.push("");
195
+ }
196
+ if (result.summary.trim().length > 0) {
197
+ lines.push(result.summary.trim(), "");
198
+ }
199
+ if (result.status === "failed") {
200
+ lines.push("Review the Worklist task detail for the failure context.");
201
+ }
202
+ else {
203
+ lines.push("Open the Worklist task detail to review the result.");
204
+ }
205
+ return lines.join("\n");
206
+ }
207
+ function publishTaskResultMessage(input, result) {
208
+ if (hasMainChatTaskResultMessage(input.store.db, result.result_key)) {
209
+ return null;
210
+ }
211
+ const message = createMainChatAgentMessage(input.store.db, {
212
+ body: taskResultFallback(result),
213
+ refs: {
214
+ scratchpad_source: "exclude",
215
+ task_id: result.task_id,
216
+ ...(result.activity_ref === undefined ? {} : { activity_ref: result.activity_ref }),
217
+ task_result: result,
218
+ },
219
+ now: input.now,
220
+ });
221
+ input.events.publish({
222
+ event_type: "message.created",
223
+ payload: { message },
224
+ invalidates: mainChatInvalidates(),
225
+ });
226
+ return message;
227
+ }
228
+ export function emitTaskCompletedResultMessage(input) {
229
+ const entry = readWorklistTaskEntries(input.store).find((item) => item.task.id === input.taskId);
230
+ if (entry === undefined || entry.task.status !== "done") {
231
+ return null;
232
+ }
233
+ const item = feedbackItemFromEntry(entry);
234
+ const finalNote = userNoteCandidateFromEntry(entry);
235
+ const generatedFiles = generatedFilesForCompletedEntries(input, [entry]);
236
+ const result = {
237
+ kind: "task_result",
238
+ status: "completed",
239
+ title: "Task completed",
240
+ task_id: item.task_id,
241
+ task_title: item.title,
242
+ result_key: taskResultKey(item),
243
+ summary: item.summary,
244
+ ...(item.module_name === undefined ? {} : { module_name: item.module_name }),
245
+ ...(item.latest_run_result_id === undefined
246
+ ? {}
247
+ : { latest_run_result_id: item.latest_run_result_id }),
248
+ ...(input.activityRef === undefined ? {} : { activity_ref: input.activityRef }),
249
+ ...(finalNote === undefined ? {} : { final_note: finalNote }),
250
+ ...(generatedFiles.length === 0 ? {} : { generated_files: generatedFiles }),
251
+ };
252
+ return publishTaskResultMessage(input, result);
253
+ }
254
+ export function emitTaskFailedResultMessage(input) {
255
+ const entry = readWorklistTaskEntries(input.store).find((item) => item.task.id === input.taskId);
256
+ if (entry === undefined || entry.task.status !== "failed") {
257
+ return null;
258
+ }
259
+ const item = feedbackItemFromEntry(entry);
260
+ const errorCode = entry.detail?.detail.result.error_code;
261
+ const result = {
262
+ kind: "task_result",
263
+ status: "failed",
264
+ title: "Task failed",
265
+ task_id: item.task_id,
266
+ task_title: item.title,
267
+ result_key: taskResultKey(item),
268
+ summary: item.summary,
269
+ ...(item.module_name === undefined ? {} : { module_name: item.module_name }),
270
+ ...(item.latest_run_result_id === undefined
271
+ ? {}
272
+ : { latest_run_result_id: item.latest_run_result_id }),
273
+ ...(input.activityRef === undefined ? {} : { activity_ref: input.activityRef }),
274
+ ...(errorCode === undefined ? {} : { error_code: errorCode }),
275
+ };
276
+ return publishTaskResultMessage(input, result);
277
+ }
180
278
  function publishFeedbackMessage(input, feedback) {
181
279
  if (hasExistingFeedback(input.store, feedback.feedback_key)) {
182
280
  return null;
@@ -109,6 +109,14 @@ export declare const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES: ({
109
109
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
110
110
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
111
111
  submitted_at: import("@sinclair/typebox").TString;
112
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
113
+ task_id: import("@sinclair/typebox").TString;
114
+ title: import("@sinclair/typebox").TString;
115
+ summary: import("@sinclair/typebox").TString;
116
+ 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">]>;
117
+ module_id: import("@sinclair/typebox").TString;
118
+ module_name: import("@sinclair/typebox").TString;
119
+ }>>>;
112
120
  }>>;
113
121
  }>;
114
122
  contentType?: never;
@@ -969,6 +969,14 @@ export declare const HOST_PROJECT_WORKSPACE_OPENAPI_ROUTES: ({
969
969
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
970
970
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
971
971
  submitted_at: import("@sinclair/typebox").TString;
972
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
973
+ task_id: import("@sinclair/typebox").TString;
974
+ title: import("@sinclair/typebox").TString;
975
+ summary: import("@sinclair/typebox").TString;
976
+ 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">]>;
977
+ module_id: import("@sinclair/typebox").TString;
978
+ module_name: import("@sinclair/typebox").TString;
979
+ }>>>;
972
980
  }>>;
973
981
  }>;
974
982
  readonly worklist: import("@sinclair/typebox").TObject<{
@@ -271,6 +271,14 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
271
271
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
272
272
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
273
273
  submitted_at: import("@sinclair/typebox").TString;
274
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
275
+ task_id: import("@sinclair/typebox").TString;
276
+ title: import("@sinclair/typebox").TString;
277
+ summary: import("@sinclair/typebox").TString;
278
+ 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">]>;
279
+ module_id: import("@sinclair/typebox").TString;
280
+ module_name: import("@sinclair/typebox").TString;
281
+ }>>>;
274
282
  }>>;
275
283
  }>;
276
284
  contentType?: never;
@@ -2226,6 +2234,14 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
2226
2234
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
2227
2235
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
2228
2236
  submitted_at: import("@sinclair/typebox").TString;
2237
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
2238
+ task_id: import("@sinclair/typebox").TString;
2239
+ title: import("@sinclair/typebox").TString;
2240
+ summary: import("@sinclair/typebox").TString;
2241
+ 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">]>;
2242
+ module_id: import("@sinclair/typebox").TString;
2243
+ module_name: import("@sinclair/typebox").TString;
2244
+ }>>>;
2229
2245
  }>>;
2230
2246
  }>;
2231
2247
  readonly worklist: import("@sinclair/typebox").TObject<{
@@ -951,6 +951,14 @@ export declare const BootstrapResponseSchema: {
951
951
  open_questions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
952
952
  task_changes: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
953
953
  submitted_at: import("@sinclair/typebox").TString;
954
+ compiled_tasks: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
955
+ task_id: import("@sinclair/typebox").TString;
956
+ title: import("@sinclair/typebox").TString;
957
+ summary: import("@sinclair/typebox").TString;
958
+ 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">]>;
959
+ module_id: import("@sinclair/typebox").TString;
960
+ module_name: import("@sinclair/typebox").TString;
961
+ }>>>;
954
962
  }>>;
955
963
  }>;
956
964
  readonly worklist: import("@sinclair/typebox").TObject<{
@@ -31,7 +31,7 @@
31
31
 
32
32
  - `0001_init.sql`、`0002_allow_sealed_round_successor_note.sql`、`0003_drop_scratchpad_source_message_refs.sql`、`0004_read_state.sql`、`0005_provider_usage.sql`、`0006_scratchpad_source_state.sql`、`0007_workspace_signal_read_state_scopes.sql`、`0008_provider_usage_anchors.sql`、`0009_project_timeline_events.sql`、`0010_project_brief.sql`、`0011_message_author_avatar.sql`、`0012_scratchpad_receipts.sql` 与 `0013_scratchpad_receipt_sources.sql` 已存在,代表当前 host project SQLite schema contract。
33
33
  - SQLite adapter、migration runner、checksum 校验、store metadata 初始化、transaction helper 与 command recovery scan helper 已实现。
34
- - 协作 repository 与 Control Plane 已实现第一批业务读写;Phase 7 首批已复用 `0001_init.sql` 中的 `tasks.latest_run_result_id`、`task_details.result_json` 与 `run_results` 表完成 Run result / checks / promotion 摘要持久化。Control Plane recovery resolver 与 task-bound continuation / retry 复用现有 schema;deterministic promotion reconcile 的业务 truth 仍写入最终 Run result / task detail result,Timeline 默认从 `tasks`、`run_results` 与主群聊 `refs.worklist_feedback` 投影三类任务级审计节点,`project_timeline_events` 只保留缺少稳定 record 的轻量可观测性事件。merge workspace 不进入 SQLite truth。`provider_usage_events` 只保存 token 计数、调用来源、模型名、记录时间和可空 anchor,不保存 provider secret、prompt 或 raw response。store 基础设施本身已经可以创建并迁移 `tutti.sqlite`。
34
+ - 协作 repository 与 Control Plane 已实现第一批业务读写;Phase 7 首批已复用 `0001_init.sql` 中的 `tasks.latest_run_result_id`、`task_details.result_json` 与 `run_results` 表完成 Run result / checks / promotion 摘要持久化。Control Plane recovery resolver 与 task-bound continuation / retry 复用现有 schema;deterministic promotion reconcile 的业务 truth 仍写入最终 Run result / task detail result,Timeline 默认从 `tasks`、`run_results` 与历史主群聊 `refs.worklist_feedback` 投影任务级审计节点,当前 task terminal Chat feedback 写入 `refs.task_result` 消息;`project_timeline_events` 只保留缺少稳定 record 的轻量可观测性事件。merge workspace 不进入 SQLite truth。`provider_usage_events` 只保存 token 计数、调用来源、模型名、记录时间和可空 anchor,不保存 provider secret、prompt 或 raw response。store 基础设施本身已经可以创建并迁移 `tutti.sqlite`。
35
35
 
36
36
  ## PRAGMA 边界
37
37
 
@@ -526,6 +526,20 @@ export declare const SendClarificationRoundMessageResultSchema: import("@sinclai
526
526
  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">]>>;
527
527
  }>;
528
528
  }>>;
529
+ worklist_compile: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
530
+ kind: import("@sinclair/typebox").TLiteral<"worklist_compile">;
531
+ workflow_ref: import("@sinclair/typebox").TString;
532
+ title: import("@sinclair/typebox").TString;
533
+ task_count: import("@sinclair/typebox").TInteger;
534
+ tasks: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
535
+ task_id: import("@sinclair/typebox").TString;
536
+ title: import("@sinclair/typebox").TString;
537
+ summary: import("@sinclair/typebox").TString;
538
+ 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">]>;
539
+ module_id: import("@sinclair/typebox").TString;
540
+ module_name: import("@sinclair/typebox").TString;
541
+ }>>;
542
+ }>>;
529
543
  worklist_feedback: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
530
544
  kind: import("@sinclair/typebox").TLiteral<"worklist_terminal">;
531
545
  status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
@@ -555,6 +569,34 @@ export declare const SendClarificationRoundMessageResultSchema: import("@sinclai
555
569
  }>>>;
556
570
  primary_task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
557
571
  }>>;
572
+ task_result: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
573
+ kind: import("@sinclair/typebox").TLiteral<"task_result">;
574
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
575
+ title: import("@sinclair/typebox").TString;
576
+ task_id: import("@sinclair/typebox").TString;
577
+ task_title: import("@sinclair/typebox").TString;
578
+ result_key: import("@sinclair/typebox").TString;
579
+ summary: import("@sinclair/typebox").TString;
580
+ module_name: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
581
+ latest_run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
582
+ activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
583
+ final_note: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
584
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
585
+ path: import("@sinclair/typebox").TString;
586
+ name: import("@sinclair/typebox").TString;
587
+ group: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
588
+ size_bytes: import("@sinclair/typebox").TInteger;
589
+ media_type: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
590
+ }>>>;
591
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
592
+ }>>;
593
+ artifact_preview: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
594
+ kind: import("@sinclair/typebox").TLiteral<"artifact_preview">;
595
+ title: import("@sinclair/typebox").TString;
596
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"available">, import("@sinclair/typebox").TLiteral<"updated">]>;
597
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
598
+ run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
599
+ }>>;
558
600
  }>>;
559
601
  clarification_card: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
560
602
  thread_id: import("@sinclair/typebox").TString;
@@ -6,8 +6,8 @@ export { ProviderUsageBreakdownProjectionSchema, ProviderUsageCategorySchema, Pr
6
6
  export { ProjectTimelineChangeStatusSchema, ProjectTimelineClarificationTraceSchema, ProjectTimelineDecisionSummarySchema, ProjectTimelineItemKindSchema, ProjectTimelineItemSchema, ProjectTimelineItemStatusSchema, ProjectTimelineResponseSchema, ProjectTimelineSourceSnippetSchema, ProjectTimelineTaskUpdateStateSchema, ProjectTimelineTraceCardSchema, ProjectTimelineTraceLinkSchema, ProjectTimelineTraceToneSchema, } from "./project-timeline.js";
7
7
  export { MAX_REFERENCE_STAGED_UPLOAD_BYTES, MAX_SKILL_ZIP_STAGED_UPLOAD_BYTES, MAX_STAGED_UPLOAD_BYTES, PresignedUploadPutSchema, ReferenceFileStartRelayUploadPayloadSchema, ReferenceStagedUploadReferenceProperties, RelayUploadProjectionSchema, RelayUploadPurposeSchema, Sha256DigestSchema, SkillZipStartRelayUploadPayloadSchema, SkillZipStagedUploadReferenceProperties, StagedUploadReferenceProperties, StagedUploadReferenceSchema, StartRelayUploadBodySchema, StartRelayUploadDispositionSchema, StartRelayUploadPayloadSchema, StartRelayUploadResponseSchema, StartRelayUploadResultSchema, maxStagedUploadBytesForPurpose, } from "./uploads.js";
8
8
  export { MarkReadBodySchema, MarkReadDispositionSchema, MarkReadPayloadSchema, MarkReadResponseSchema, MarkReadResultSchema, ReadStateScopeProjectionSchema, ReadStateScopeSchema, ReadStateSummaryProjectionSchema, } from "./read-state.js";
9
- export { GetMessagesRequestSchema, MessageAuthorSchema, MessageCreatedEventPayloadSchema, MessageKindSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, MessageRefsSchema, MessageScopeSchema, MessageWindowSchema, ReferenceFileCategorySchema, SendMainChatMessageBodySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResponseSchema, SendMainChatMessageResultSchema, WorklistFeedbackItemSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackRefSchema, } from "./messages.js";
10
- export { CheckSkipReasonCodeSchema, ExternalSideEffectSummaryProjectionSchema, GetRecoverySummariesRequestSchema, GetRecoverySummariesResponseSchema, GetRecoverySummaryResponseSchema, RecoverySummaryProjectionSchema, ResultAnchorSchema, RunLineageSchema, RunResultProjectionSchema, ScratchpadProjectionSchema, ScratchpadReceiptProjectionSchema, TaskContractProjectionSchema, TaskDetailProjectionSchema, TaskDetailResultProjectionSchema, TaskModuleProjectionSchema, TaskProjectionSchema, TaskRunResultsPageSchema, TaskStatusSchema, WorklistProjectionSchema, } from "./work-items.js";
9
+ export { GetMessagesRequestSchema, MessageAuthorSchema, MessageCreatedEventPayloadSchema, MessageKindSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, MessageRefsSchema, MessageScopeSchema, MessageWindowSchema, ReferenceFileCategorySchema, SendMainChatMessageBodySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResponseSchema, SendMainChatMessageResultSchema, ArtifactPreviewRefSchema, TaskResultRefSchema, WorklistCompileRefSchema, WorklistFeedbackItemSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackRefSchema, } from "./messages.js";
10
+ export { CheckSkipReasonCodeSchema, ExternalSideEffectSummaryProjectionSchema, GetRecoverySummariesRequestSchema, GetRecoverySummariesResponseSchema, GetRecoverySummaryResponseSchema, RecoverySummaryProjectionSchema, ResultAnchorSchema, RunLineageSchema, RunResultProjectionSchema, ScratchpadProjectionSchema, ScratchpadReceiptProjectionSchema, TaskContractProjectionSchema, TaskDetailProjectionSchema, TaskDetailResultProjectionSchema, TaskModuleProjectionSchema, TaskProjectionSchema, TaskRunResultsPageSchema, TaskStatusSchema, WorklistCompiledTaskSummarySchema, WorklistProjectionSchema, } from "./work-items.js";
11
11
  export { ActiveApprovalProjectionSchema, ApprovalCommandProjectionSchema, ApprovalDecisionKindSchema, ApprovalDecisionOptionProjectionSchema, ApprovalDecisionToneSchema, ApprovalFileChangeProjectionSchema, ApprovalPermissionsProjectionSchema, ApprovalRequestKindSchema, ApprovalRequestProjectionSchema, ApprovalResolutionOutcomeSchema, ApprovalResolutionProjectionSchema, DecideApprovalBodySchema, DecideApprovalDispositionSchema, DecideApprovalPayloadSchema, DecideApprovalResponseSchema, DecideApprovalResultSchema, } from "./approvals.js";
12
12
  export { ActiveClarificationProjectionSchema, ClarificationChangedEventPayloadSchema, ClarificationOwnerProjectionSchema, ClarificationRequestPayloadSchema, ClarificationRoundProjectionSchema, ClarificationRoundSummaryProjectionSchema, ClarificationSuccessorRefSchema, ClarificationThreadProjectionSchema, ContextRefSchema, GetClarificationRoundMessagesRequestSchema, GetClarificationRoundResponseSchema, GetClarificationThreadResponseSchema, HumanInteractionPayloadSchema, HumanRequestPayloadSchema, SendClarificationRoundMessageBodySchema, SendClarificationRoundMessageDispositionSchema, SendClarificationRoundMessagePayloadSchema, SendClarificationRoundMessageResponseSchema, SendClarificationRoundMessageResultSchema, SubmitClarificationRoundBodySchema, SubmitClarificationRoundDispositionSchema, SubmitClarificationRoundPayloadSchema, SubmitClarificationRoundResponseSchema, SubmitClarificationRoundResultSchema, } from "./clarifications.js";
13
13
  export { GetProjectDocRequestSchema, GetProjectDocResponseSchema, GetProjectDocsResponseSchema, GetReferenceFilesRequestSchema, GetReferenceFilesResponseSchema, GetViewerAssetRequestSchema, GetViewerFileRequestSchema, GetViewerFileResponseSchema, GetViewerTreeRequestSchema, GetViewerTreeResponseSchema, ProjectDocKeySchema, ProjectDocParamsSchema, ProjectDocSummaryProjectionSchema, ReferenceDirectoryProjectionSchema, ReferenceFileProjectionSchema, ReferenceSummaryProjectionSchema, ReferenceTextReadBlockedReasonSchema, RefreshReferenceSummariesBodySchema, RefreshReferenceSummariesDispositionSchema, RefreshReferenceSummariesPayloadSchema, RefreshReferenceSummariesResponseSchema, RefreshReferenceSummariesResultSchema, UploadReferenceFileBodySchema, UploadReferenceFileDispositionSchema, UploadReferenceFilePayloadSchema, UploadReferenceFileResponseSchema, UploadReferenceFileResultSchema, ViewerAssetVariantSchema, ViewerFileContentProjectionSchema, ViewerFileProjectionSchema, ViewerPageSchema, ViewerPathSchema, ViewerRepoSnapshotSchema, ViewerTreeEntryProjectionSchema, ViewerTreeTextReadBlockedReasonSchema, ViewerUnreadableReasonSchema, } from "./viewer-reference.js";
@@ -5,8 +5,8 @@ export { ProviderUsageBreakdownProjectionSchema, ProviderUsageCategorySchema, Pr
5
5
  export { ProjectTimelineChangeStatusSchema, ProjectTimelineClarificationTraceSchema, ProjectTimelineDecisionSummarySchema, ProjectTimelineItemKindSchema, ProjectTimelineItemSchema, ProjectTimelineItemStatusSchema, ProjectTimelineResponseSchema, ProjectTimelineSourceSnippetSchema, ProjectTimelineTaskUpdateStateSchema, ProjectTimelineTraceCardSchema, ProjectTimelineTraceLinkSchema, ProjectTimelineTraceToneSchema, } from "./project-timeline.js";
6
6
  export { MAX_REFERENCE_STAGED_UPLOAD_BYTES, MAX_SKILL_ZIP_STAGED_UPLOAD_BYTES, MAX_STAGED_UPLOAD_BYTES, PresignedUploadPutSchema, ReferenceFileStartRelayUploadPayloadSchema, ReferenceStagedUploadReferenceProperties, RelayUploadProjectionSchema, RelayUploadPurposeSchema, Sha256DigestSchema, SkillZipStartRelayUploadPayloadSchema, SkillZipStagedUploadReferenceProperties, StagedUploadReferenceProperties, StagedUploadReferenceSchema, StartRelayUploadBodySchema, StartRelayUploadDispositionSchema, StartRelayUploadPayloadSchema, StartRelayUploadResponseSchema, StartRelayUploadResultSchema, maxStagedUploadBytesForPurpose, } from "./uploads.js";
7
7
  export { MarkReadBodySchema, MarkReadDispositionSchema, MarkReadPayloadSchema, MarkReadResponseSchema, MarkReadResultSchema, ReadStateScopeProjectionSchema, ReadStateScopeSchema, ReadStateSummaryProjectionSchema, } from "./read-state.js";
8
- export { GetMessagesRequestSchema, MessageAuthorSchema, MessageCreatedEventPayloadSchema, MessageKindSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, MessageRefsSchema, MessageScopeSchema, MessageWindowSchema, ReferenceFileCategorySchema, SendMainChatMessageBodySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResponseSchema, SendMainChatMessageResultSchema, WorklistFeedbackItemSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackRefSchema, } from "./messages.js";
9
- export { CheckSkipReasonCodeSchema, ExternalSideEffectSummaryProjectionSchema, GetRecoverySummariesRequestSchema, GetRecoverySummariesResponseSchema, GetRecoverySummaryResponseSchema, RecoverySummaryProjectionSchema, ResultAnchorSchema, RunLineageSchema, RunResultProjectionSchema, ScratchpadProjectionSchema, ScratchpadReceiptProjectionSchema, TaskContractProjectionSchema, TaskDetailProjectionSchema, TaskDetailResultProjectionSchema, TaskModuleProjectionSchema, TaskProjectionSchema, TaskRunResultsPageSchema, TaskStatusSchema, WorklistProjectionSchema, } from "./work-items.js";
8
+ export { GetMessagesRequestSchema, MessageAuthorSchema, MessageCreatedEventPayloadSchema, MessageKindSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, MessageRefsSchema, MessageScopeSchema, MessageWindowSchema, ReferenceFileCategorySchema, SendMainChatMessageBodySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResponseSchema, SendMainChatMessageResultSchema, ArtifactPreviewRefSchema, TaskResultRefSchema, WorklistCompileRefSchema, WorklistFeedbackItemSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackRefSchema, } from "./messages.js";
9
+ export { CheckSkipReasonCodeSchema, ExternalSideEffectSummaryProjectionSchema, GetRecoverySummariesRequestSchema, GetRecoverySummariesResponseSchema, GetRecoverySummaryResponseSchema, RecoverySummaryProjectionSchema, ResultAnchorSchema, RunLineageSchema, RunResultProjectionSchema, ScratchpadProjectionSchema, ScratchpadReceiptProjectionSchema, TaskContractProjectionSchema, TaskDetailProjectionSchema, TaskDetailResultProjectionSchema, TaskModuleProjectionSchema, TaskProjectionSchema, TaskRunResultsPageSchema, TaskStatusSchema, WorklistCompiledTaskSummarySchema, WorklistProjectionSchema, } from "./work-items.js";
10
10
  export { ActiveApprovalProjectionSchema, ApprovalCommandProjectionSchema, ApprovalDecisionKindSchema, ApprovalDecisionOptionProjectionSchema, ApprovalDecisionToneSchema, ApprovalFileChangeProjectionSchema, ApprovalPermissionsProjectionSchema, ApprovalRequestKindSchema, ApprovalRequestProjectionSchema, ApprovalResolutionOutcomeSchema, ApprovalResolutionProjectionSchema, DecideApprovalBodySchema, DecideApprovalDispositionSchema, DecideApprovalPayloadSchema, DecideApprovalResponseSchema, DecideApprovalResultSchema, } from "./approvals.js";
11
11
  export { ActiveClarificationProjectionSchema, ClarificationChangedEventPayloadSchema, ClarificationOwnerProjectionSchema, ClarificationRequestPayloadSchema, ClarificationRoundProjectionSchema, ClarificationRoundSummaryProjectionSchema, ClarificationSuccessorRefSchema, ClarificationThreadProjectionSchema, ContextRefSchema, GetClarificationRoundMessagesRequestSchema, GetClarificationRoundResponseSchema, GetClarificationThreadResponseSchema, HumanInteractionPayloadSchema, HumanRequestPayloadSchema, SendClarificationRoundMessageBodySchema, SendClarificationRoundMessageDispositionSchema, SendClarificationRoundMessagePayloadSchema, SendClarificationRoundMessageResponseSchema, SendClarificationRoundMessageResultSchema, SubmitClarificationRoundBodySchema, SubmitClarificationRoundDispositionSchema, SubmitClarificationRoundPayloadSchema, SubmitClarificationRoundResponseSchema, SubmitClarificationRoundResultSchema, } from "./clarifications.js";
12
12
  export { GetProjectDocRequestSchema, GetProjectDocResponseSchema, GetProjectDocsResponseSchema, GetReferenceFilesRequestSchema, GetReferenceFilesResponseSchema, GetViewerAssetRequestSchema, GetViewerFileRequestSchema, GetViewerFileResponseSchema, GetViewerTreeRequestSchema, GetViewerTreeResponseSchema, ProjectDocKeySchema, ProjectDocParamsSchema, ProjectDocSummaryProjectionSchema, ReferenceDirectoryProjectionSchema, ReferenceFileProjectionSchema, ReferenceSummaryProjectionSchema, ReferenceTextReadBlockedReasonSchema, RefreshReferenceSummariesBodySchema, RefreshReferenceSummariesDispositionSchema, RefreshReferenceSummariesPayloadSchema, RefreshReferenceSummariesResponseSchema, RefreshReferenceSummariesResultSchema, UploadReferenceFileBodySchema, UploadReferenceFileDispositionSchema, UploadReferenceFilePayloadSchema, UploadReferenceFileResponseSchema, UploadReferenceFileResultSchema, ViewerAssetVariantSchema, ViewerFileContentProjectionSchema, ViewerFileProjectionSchema, ViewerPageSchema, ViewerPathSchema, ViewerRepoSnapshotSchema, ViewerTreeEntryProjectionSchema, ViewerTreeTextReadBlockedReasonSchema, ViewerUnreadableReasonSchema, } from "./viewer-reference.js";