@sift-wiki/conductor 0.1.0 → 0.2.0-beta.2

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 (132) hide show
  1. package/README.md +28 -58
  2. package/dist/adapters/claudeAgent.js +1 -0
  3. package/dist/adapters/claudeAgent.js.map +1 -1
  4. package/dist/adapters/codexAgent.js +1 -0
  5. package/dist/adapters/codexAgent.js.map +1 -1
  6. package/dist/adapters/fakeAgent.js +1 -0
  7. package/dist/adapters/fakeAgent.js.map +1 -1
  8. package/dist/adapters/httpAgent.js +1 -0
  9. package/dist/adapters/httpAgent.js.map +1 -1
  10. package/dist/adapters/processAgent.js +4 -0
  11. package/dist/adapters/processAgent.js.map +1 -1
  12. package/dist/adapters/provider/runProvider.js +4 -0
  13. package/dist/adapters/provider/runProvider.js.map +1 -1
  14. package/dist/adapters/provider/store.js +3 -4
  15. package/dist/adapters/provider/store.js.map +1 -1
  16. package/dist/adapters/types.d.ts +9 -0
  17. package/dist/cli.d.ts +12 -0
  18. package/dist/cli.js +44 -3
  19. package/dist/cli.js.map +1 -1
  20. package/dist/conductorClient.d.ts +245 -17
  21. package/dist/conductorClient.js +147 -38
  22. package/dist/conductorClient.js.map +1 -1
  23. package/dist/config.js +4 -5
  24. package/dist/config.js.map +1 -1
  25. package/dist/daemon.d.ts +23 -6
  26. package/dist/daemon.js +173 -95
  27. package/dist/daemon.js.map +1 -1
  28. package/dist/desktop/app/contracts.d.ts +71 -0
  29. package/dist/desktop/app/contracts.js +19 -0
  30. package/dist/desktop/app/contracts.js.map +1 -0
  31. package/dist/desktop/app/controller.d.ts +58 -0
  32. package/dist/desktop/app/controller.js +161 -0
  33. package/dist/desktop/app/controller.js.map +1 -0
  34. package/dist/desktop/app/runtimeController.d.ts +29 -0
  35. package/dist/desktop/app/runtimeController.js +55 -0
  36. package/dist/desktop/app/runtimeController.js.map +1 -0
  37. package/dist/localApi/authorizedPairing.d.ts +12 -0
  38. package/dist/localApi/authorizedPairing.js +18 -0
  39. package/dist/localApi/authorizedPairing.js.map +1 -0
  40. package/dist/localApi/contracts.d.ts +264 -0
  41. package/dist/localApi/contracts.js +191 -0
  42. package/dist/localApi/contracts.js.map +1 -0
  43. package/dist/localApi/recovery.d.ts +66 -0
  44. package/dist/localApi/recovery.js +115 -0
  45. package/dist/localApi/recovery.js.map +1 -0
  46. package/dist/localApi/server.d.ts +20 -0
  47. package/dist/localApi/server.js +414 -0
  48. package/dist/localApi/server.js.map +1 -0
  49. package/dist/localApi/workConsole.d.ts +74 -0
  50. package/dist/localApi/workConsole.js +342 -0
  51. package/dist/localApi/workConsole.js.map +1 -0
  52. package/dist/localApi/workContracts.d.ts +213 -0
  53. package/dist/localApi/workContracts.js +130 -0
  54. package/dist/localApi/workContracts.js.map +1 -0
  55. package/dist/localApp/platform.d.ts +2 -0
  56. package/dist/localApp/platform.js +57 -0
  57. package/dist/localApp/platform.js.map +1 -0
  58. package/dist/localApp/service.d.ts +25 -0
  59. package/dist/localApp/service.js +126 -0
  60. package/dist/localApp/service.js.map +1 -0
  61. package/dist/protocol/fenced.d.ts +135 -0
  62. package/dist/protocol/fenced.js +142 -0
  63. package/dist/protocol/fenced.js.map +1 -0
  64. package/dist/redaction.js +2 -0
  65. package/dist/redaction.js.map +1 -1
  66. package/dist/runtime/atomicFile.d.ts +6 -0
  67. package/dist/runtime/atomicFile.js +78 -0
  68. package/dist/runtime/atomicFile.js.map +1 -0
  69. package/dist/runtime/daemonCapabilities.d.ts +7 -0
  70. package/dist/runtime/daemonCapabilities.js +24 -0
  71. package/dist/runtime/daemonCapabilities.js.map +1 -0
  72. package/dist/runtime/eventOutbox.d.ts +100 -0
  73. package/dist/runtime/eventOutbox.js +206 -0
  74. package/dist/runtime/eventOutbox.js.map +1 -0
  75. package/dist/runtime/executionJournal.d.ts +102 -0
  76. package/dist/runtime/executionJournal.js +209 -0
  77. package/dist/runtime/executionJournal.js.map +1 -0
  78. package/dist/runtime/executionSafety.d.ts +76 -0
  79. package/dist/runtime/executionSafety.js +207 -0
  80. package/dist/runtime/executionSafety.js.map +1 -0
  81. package/dist/runtime/fencedExecutionState.d.ts +43 -0
  82. package/dist/runtime/fencedExecutionState.js +158 -0
  83. package/dist/runtime/fencedExecutionState.js.map +1 -0
  84. package/dist/runtime/leaseManager.d.ts +38 -0
  85. package/dist/runtime/leaseManager.js +102 -0
  86. package/dist/runtime/leaseManager.js.map +1 -0
  87. package/dist/runtime/localLogSpool.d.ts +1 -0
  88. package/dist/runtime/localLogSpool.js +4 -0
  89. package/dist/runtime/localLogSpool.js.map +1 -1
  90. package/dist/runtime/localRunQueue.d.ts +1 -1
  91. package/dist/runtime/localRunQueue.js +8 -0
  92. package/dist/runtime/localRunQueue.js.map +1 -1
  93. package/dist/runtime/localSessionCache.d.ts +1 -1
  94. package/dist/runtime/localSessionCache.js.map +1 -1
  95. package/dist/runtime/process.d.ts +13 -1
  96. package/dist/runtime/process.js +39 -9
  97. package/dist/runtime/process.js.map +1 -1
  98. package/dist/runtime/recoveryCoordinator.d.ts +19 -0
  99. package/dist/runtime/recoveryCoordinator.js +183 -0
  100. package/dist/runtime/recoveryCoordinator.js.map +1 -0
  101. package/dist/runtime/runtimeLock.d.ts +33 -0
  102. package/dist/runtime/runtimeLock.js +140 -0
  103. package/dist/runtime/runtimeLock.js.map +1 -0
  104. package/dist/runtime/runtimeService.d.ts +6 -1
  105. package/dist/runtime/runtimeService.js +54 -20
  106. package/dist/runtime/runtimeService.js.map +1 -1
  107. package/dist/runtime/taskExecution.d.ts +2 -0
  108. package/dist/runtime/taskExecution.js +18 -12
  109. package/dist/runtime/taskExecution.js.map +1 -1
  110. package/dist/types.d.ts +28 -13
  111. package/dist/userAuth/service.d.ts +26 -0
  112. package/dist/userAuth/service.js +170 -0
  113. package/dist/userAuth/service.js.map +1 -0
  114. package/dist/userAuth/store.d.ts +42 -0
  115. package/dist/userAuth/store.js +160 -0
  116. package/dist/userAuth/store.js.map +1 -0
  117. package/dist/userAuth/types.d.ts +63 -0
  118. package/dist/userAuth/types.js +29 -0
  119. package/dist/userAuth/types.js.map +1 -0
  120. package/dist/version.d.ts +1 -1
  121. package/dist/version.js +1 -1
  122. package/dist/version.js.map +1 -1
  123. package/dist/workTypes.d.ts +162 -31
  124. package/dist/workTypes.js +31 -0
  125. package/dist/workTypes.js.map +1 -1
  126. package/dist-web/assets/index-CWAdDb9V.js +72 -0
  127. package/dist-web/assets/index-CWfnzdLn.css +1 -0
  128. package/dist-web/index.html +15 -0
  129. package/docs/provider-setup.md +81 -0
  130. package/docs/quickstart.md +62 -0
  131. package/docs/troubleshooting.md +63 -0
  132. package/package.json +13 -3
@@ -0,0 +1,342 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { ConductorApiError, ConductorHttpClient } from "../conductorClient.js";
3
+ export class WorkConsoleService {
4
+ input;
5
+ constructor(input) {
6
+ this.input = input;
7
+ }
8
+ async snapshot(request = {}) {
9
+ const authorization = await this.input.authorization.status();
10
+ if (authorization.state !== "authorized") {
11
+ return emptySnapshot("unauthorized", "Sign in to Sift to manage shared work.", this.now());
12
+ }
13
+ const config = await this.input.configStore.read();
14
+ const client = this.client(authorization.apiBaseUrl, authorization.workspaceId);
15
+ const credential = await this.input.authorization.credential();
16
+ try {
17
+ const [projects, allTasks, runs, activity, agents] = await Promise.all([
18
+ client.listProjects(credential),
19
+ client.listTasks(credential),
20
+ client.listRuns(credential),
21
+ client.listActivity(credential),
22
+ config?.conductorId === undefined
23
+ ? Promise.resolve([])
24
+ : client.listConductorAgents(credential, config.conductorId),
25
+ ]);
26
+ const selectedProjectId = selectProject(request.projectId, projects.map((project) => project.id));
27
+ const tasks = selectedProjectId === undefined
28
+ ? allTasks
29
+ : allTasks.filter((task) => task.projectId === selectedProjectId);
30
+ const events = await loadRunEvents(client, credential, runs);
31
+ const localSessions = this.input.sessionCache?.list() ?? [];
32
+ const queue = queueItems(tasks, runs, events, localSessions);
33
+ const selectedTaskId = selectTask(request.taskId, queue.map((item) => item.id));
34
+ const detail = selectedTaskId === undefined
35
+ ? undefined
36
+ : await client.readTaskDetail(credential, selectedTaskId);
37
+ return {
38
+ state: "ready",
39
+ refreshedAt: this.now(),
40
+ selectedProjectId,
41
+ selectedTaskId,
42
+ projects: projects.map((project) => ({
43
+ id: project.id,
44
+ name: project.name,
45
+ description: project.description,
46
+ stateLabel: projectStateLabel(project.status),
47
+ })),
48
+ agents: agentViews(agents),
49
+ queue,
50
+ detail: detail === undefined ? undefined : detailView(detail, runs, events, localSessions, this.input.logSpool),
51
+ activity: activityViews(activity),
52
+ };
53
+ }
54
+ catch (error) {
55
+ if (error instanceof ConductorApiError && (error.status === 0 || error.status >= 500)) {
56
+ return emptySnapshot("offline", "Sift is temporarily unavailable. Canonical changes are disabled.", this.now());
57
+ }
58
+ throw error;
59
+ }
60
+ }
61
+ async createTask(input) {
62
+ const { client, credential } = await this.authorizedClient();
63
+ return client.createWorkTask(credential, { ...input, status: "todo" });
64
+ }
65
+ async updateTask(input) {
66
+ const { client, credential } = await this.authorizedClient();
67
+ return client.updateWorkTask(credential, input);
68
+ }
69
+ async comment(input) {
70
+ const { client, credential } = await this.authorizedClient();
71
+ return client.addHumanTaskComment(credential, input.taskId, input.bodyMarkdown);
72
+ }
73
+ async dispatch(input) {
74
+ const { client, credential } = await this.authorizedClient();
75
+ return client.dispatchWorkTask(credential, {
76
+ ...input,
77
+ idempotencyKey: input.idempotencyKey ?? `conductor:${input.taskId}:${this.createId()}`,
78
+ });
79
+ }
80
+ async decideApproval(input) {
81
+ const { client, credential } = await this.authorizedClient();
82
+ return client.decideWorkApproval(credential, input);
83
+ }
84
+ async cancelRun(runId) {
85
+ const { client, credential } = await this.authorizedClient();
86
+ return client.cancelUserRun(credential, runId);
87
+ }
88
+ async authorizedClient() {
89
+ const status = await this.input.authorization.status();
90
+ if (status.state !== "authorized")
91
+ throw new Error("Sign in to Sift before managing shared work.");
92
+ return { client: this.client(status.apiBaseUrl, status.workspaceId), credential: await this.input.authorization.credential() };
93
+ }
94
+ client(apiBaseUrl, workspaceId) {
95
+ return (this.input.createClient ?? ((url, scope) => new ConductorHttpClient({ apiBaseUrl: url, userWorkspaceId: scope })))(apiBaseUrl, workspaceId);
96
+ }
97
+ now() {
98
+ return (this.input.now ?? (() => new Date()))().toISOString();
99
+ }
100
+ createId() {
101
+ return (this.input.createId ?? randomUUID)();
102
+ }
103
+ }
104
+ function emptySnapshot(state, message, refreshedAt) {
105
+ return { state, message, refreshedAt, projects: [], agents: [], queue: [], activity: [] };
106
+ }
107
+ async function loadRunEvents(client, credential, runs) {
108
+ const recent = runs.slice(0, 25);
109
+ const groups = await Promise.all(recent.map((run) => client.listUserRunEvents(credential, run.runId)));
110
+ return groups.flat();
111
+ }
112
+ function queueItems(tasks, runs, events, localSessions) {
113
+ const runsByTask = latestRunsByTask(runs);
114
+ const sessionsByRun = new Map(localSessions.map((session) => [session.runId, session]));
115
+ return tasks.map((task) => {
116
+ const run = runsByTask.get(task.id);
117
+ const latest = run === undefined ? undefined : latestMeaningfulEvent(events, run.runId);
118
+ const state = queueState(task, run?.status, run === undefined ? undefined : sessionsByRun.get(run.runId)?.status);
119
+ return {
120
+ id: task.id,
121
+ projectId: task.projectId,
122
+ title: task.title,
123
+ state,
124
+ stateLabel: queueStateLabel(state),
125
+ priority: task.priority,
126
+ assigneePrincipalId: task.assigneePrincipalId,
127
+ runId: run?.runId,
128
+ progressSummary: eventSummary(latest) ?? (run?.status === "processing" ? "Agent is working locally." : undefined),
129
+ updatedAt: task.updatedAt,
130
+ };
131
+ }).sort(compareQueueItems);
132
+ }
133
+ function detailView(detail, runs, events, localSessions, logSpool) {
134
+ const run = latestRunsByTask(runs).get(detail.task.id);
135
+ const runEvents = run === undefined
136
+ ? []
137
+ : events.filter((event) => event.runId === run.runId && event.eventType !== "log")
138
+ .sort((left, right) => left.sequence - right.sequence);
139
+ const latest = runEvents.at(-1);
140
+ const localSession = run === undefined ? undefined : localSessions.find((session) => session.runId === run.runId);
141
+ return {
142
+ id: detail.task.id,
143
+ title: detail.task.title,
144
+ bodyMarkdown: detail.task.bodyMarkdown,
145
+ status: detail.task.status,
146
+ stateLabel: taskStateLabel(detail.task.status),
147
+ priority: detail.task.priority,
148
+ assigneePrincipalId: detail.task.assigneePrincipalId,
149
+ updatedAt: detail.task.updatedAt,
150
+ run: run === undefined ? undefined : {
151
+ id: run.runId,
152
+ stateLabel: runStateLabel(run.status, latest?.eventType),
153
+ progressSummary: eventSummary(latest) ?? run.objective,
154
+ updatedAt: latest?.occurredAt ?? localSession?.updatedAt ?? detail.task.updatedAt,
155
+ localStateLabel: localSession === undefined ? undefined : localSessionLabel(localSession.status),
156
+ events: runEvents.map((event) => ({
157
+ id: event.id,
158
+ type: event.eventType,
159
+ summary: eventSummary(event) ?? eventTypeLabel(event.eventType),
160
+ occurredAt: event.occurredAt,
161
+ })),
162
+ trace: (logSpool?.list(run.runId) ?? []).map((entry) => ({
163
+ id: entry.id,
164
+ stream: entry.stream,
165
+ message: entry.message,
166
+ occurredAt: entry.occurredAt,
167
+ truncated: entry.truncated,
168
+ })),
169
+ },
170
+ comments: detail.comments.map((comment) => ({ id: comment.id, bodyMarkdown: comment.bodyMarkdown, authorPrincipalId: comment.authorPrincipalId, createdAt: comment.createdAt })),
171
+ artifacts: detail.artifacts.map(artifactView),
172
+ approvals: detail.approvals.map(approvalView),
173
+ blockers: detail.blockers.map((blocker) => ({ id: blocker.id, title: blocker.title, stateLabel: taskStateLabel(blocker.status) })),
174
+ actions: {
175
+ canEdit: !terminalTask(detail.task.status),
176
+ canDispatch: detail.task.status === "todo" || detail.task.status === "blocked",
177
+ canComment: true,
178
+ canCancel: run?.status === "queued" || run?.status === "processing",
179
+ canReview: detail.approvals.some((approval) => approval.status === "pending"),
180
+ canRetry: detail.task.status === "blocked" || run?.status === "failed" || run?.status === "cancelled",
181
+ },
182
+ };
183
+ }
184
+ function agentViews(agents) {
185
+ return agents.map((agent) => ({
186
+ conductorAgentId: agent.id,
187
+ agentPrincipalId: agent.agentPrincipalId,
188
+ localKey: agent.localKey,
189
+ displayName: agent.displayName,
190
+ adapterType: agent.adapterType,
191
+ stateLabel: agent.status === "active" ? "Available on this computer" : "Unavailable",
192
+ available: agent.status === "active",
193
+ }));
194
+ }
195
+ function activityViews(activity) {
196
+ return [...activity].sort((left, right) => right.occurredAt.localeCompare(left.occurredAt)).map((event) => ({
197
+ id: event.id,
198
+ summary: activitySummary(event.action),
199
+ occurredAt: event.occurredAt,
200
+ taskId: event.taskId,
201
+ runId: event.runId,
202
+ correlationId: stringMetadata(event.metadata, "requestId") ?? stringMetadata(event.metadata, "correlationId"),
203
+ }));
204
+ }
205
+ function latestRunsByTask(runs) {
206
+ const result = new Map();
207
+ for (const run of runs) {
208
+ const taskId = run.taskRecordId ?? run.wakeEnvelope?.task.id;
209
+ if (taskId !== undefined && !result.has(taskId))
210
+ result.set(taskId, run);
211
+ }
212
+ return result;
213
+ }
214
+ function latestMeaningfulEvent(events, runId) {
215
+ return events.filter((event) => event.runId === runId && event.eventType !== "log")
216
+ .sort((left, right) => right.sequence - left.sequence)[0];
217
+ }
218
+ function eventSummary(event) {
219
+ const summary = event?.payload["summary"];
220
+ return typeof summary === "string" ? summary : undefined;
221
+ }
222
+ function queueState(task, runStatus, localStatus) {
223
+ if (runStatus === "failed")
224
+ return "needs_attention";
225
+ if (localStatus === "failed")
226
+ return "needs_attention";
227
+ if (task.status === "in_review")
228
+ return "needs_review";
229
+ if (task.status === "blocked")
230
+ return "blocked";
231
+ if (task.status === "in_progress" || runStatus === "processing" || runStatus === "queued")
232
+ return "running";
233
+ if (task.status === "done" || task.status === "cancelled")
234
+ return "finished";
235
+ return "ready";
236
+ }
237
+ function localSessionLabel(status) {
238
+ if (status === "starting")
239
+ return "Starting on this computer";
240
+ if (status === "running")
241
+ return "Running on this computer";
242
+ if (status === "stopping")
243
+ return "Stopping on this computer";
244
+ if (status === "failed")
245
+ return "Local runtime needs attention";
246
+ if (status === "completed")
247
+ return "Completed on this computer";
248
+ if (status === "cancelled")
249
+ return "Cancelled on this computer";
250
+ return "Local runtime stopped";
251
+ }
252
+ function compareQueueItems(left, right) {
253
+ const rank = { needs_review: 0, blocked: 1, needs_attention: 2, running: 3, ready: 4, finished: 5 };
254
+ return rank[left.state] - rank[right.state] || right.updatedAt.localeCompare(left.updatedAt);
255
+ }
256
+ function selectProject(requested, ids) {
257
+ return requested !== undefined && ids.includes(requested) ? requested : ids[0];
258
+ }
259
+ function selectTask(requested, ids) {
260
+ return requested !== undefined && ids.includes(requested) ? requested : ids[0];
261
+ }
262
+ function projectStateLabel(status) {
263
+ if (status === "active")
264
+ return "Active";
265
+ if (status === "planned")
266
+ return "Planning";
267
+ if (status === "completed")
268
+ return "Completed";
269
+ return "Cancelled";
270
+ }
271
+ function taskStateLabel(status) {
272
+ const labels = {
273
+ backlog: "Not scheduled",
274
+ todo: "Ready to start",
275
+ in_progress: "In progress",
276
+ in_review: "Needs review",
277
+ blocked: "Blocked",
278
+ done: "Completed",
279
+ cancelled: "Cancelled",
280
+ };
281
+ return labels[status];
282
+ }
283
+ function queueStateLabel(state) {
284
+ const labels = { needs_review: "Needs review", blocked: "Blocked", needs_attention: "Needs attention", running: "Running", ready: "Ready", finished: "Finished" };
285
+ return labels[state];
286
+ }
287
+ function runStateLabel(status, eventType) {
288
+ if (eventType === "failed" || status === "failed")
289
+ return "Needs attention";
290
+ if (eventType === "cancelled" || status === "cancelled")
291
+ return "Cancelled";
292
+ if (eventType === "completed" || status === "completed")
293
+ return "Completed";
294
+ if (status === "processing")
295
+ return "Working locally";
296
+ return "Waiting to start";
297
+ }
298
+ function artifactView(artifact) {
299
+ return {
300
+ id: artifact.id,
301
+ title: artifact.title,
302
+ summary: artifact.summary,
303
+ stateLabel: artifact.status === "ready" ? "Ready" : artifact.status === "failed" ? "Unavailable" : "Preparing",
304
+ openTarget: artifact.url ?? artifact.brainRecordId,
305
+ intermediate: artifact.reviewState === "pending" || artifact.status === "pending",
306
+ };
307
+ }
308
+ function approvalView(approval) {
309
+ return {
310
+ id: approval.id,
311
+ typeLabel: approval.type.replaceAll("_", " "),
312
+ state: approval.status,
313
+ stateLabel: approval.status === "pending" ? "Waiting for review" : approval.status === "revision_requested" ? "Changes requested" : approval.status === "approved" ? "Approved" : "Rejected",
314
+ decisionNote: approval.decisionNote,
315
+ };
316
+ }
317
+ function activitySummary(action) {
318
+ const labels = {
319
+ "task.created": "Task added",
320
+ "task.updated": "Task updated",
321
+ "task.checked_out": "Local agent started work",
322
+ "task.comment_added": "Update posted",
323
+ "artifact.registered": "Result attached",
324
+ "approval.requested": "Review requested",
325
+ "approval.approved": "Review approved",
326
+ "approval.revision_requested": "Changes requested",
327
+ "wake.dispatched": "Sent to this computer",
328
+ "wake.finished": "Local run finished",
329
+ };
330
+ return labels[action] ?? action.replaceAll(/[._]/gu, " ");
331
+ }
332
+ function eventTypeLabel(type) {
333
+ return type.replaceAll("_", " ");
334
+ }
335
+ function terminalTask(status) {
336
+ return status === "done" || status === "cancelled";
337
+ }
338
+ function stringMetadata(metadata, key) {
339
+ const value = metadata[key];
340
+ return typeof value === "string" ? value : undefined;
341
+ }
342
+ //# sourceMappingURL=workConsole.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workConsole.js","sourceRoot":"","sources":["../../src/localApi/workConsole.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ import { z } from "zod";
2
+ export declare const workQueueStateSchema: z.ZodEnum<{
3
+ blocked: "blocked";
4
+ ready: "ready";
5
+ running: "running";
6
+ needs_review: "needs_review";
7
+ finished: "finished";
8
+ needs_attention: "needs_attention";
9
+ }>;
10
+ export declare const workConsoleSnapshotSchema: z.ZodObject<{
11
+ state: z.ZodEnum<{
12
+ ready: "ready";
13
+ unauthorized: "unauthorized";
14
+ offline: "offline";
15
+ }>;
16
+ message: z.ZodOptional<z.ZodString>;
17
+ refreshedAt: z.ZodString;
18
+ selectedProjectId: z.ZodOptional<z.ZodString>;
19
+ selectedTaskId: z.ZodOptional<z.ZodString>;
20
+ projects: z.ZodArray<z.ZodObject<{
21
+ id: z.ZodString;
22
+ name: z.ZodString;
23
+ description: z.ZodOptional<z.ZodString>;
24
+ stateLabel: z.ZodString;
25
+ }, z.core.$strict>>;
26
+ agents: z.ZodArray<z.ZodObject<{
27
+ conductorAgentId: z.ZodString;
28
+ agentPrincipalId: z.ZodString;
29
+ localKey: z.ZodString;
30
+ displayName: z.ZodString;
31
+ adapterType: z.ZodString;
32
+ stateLabel: z.ZodString;
33
+ available: z.ZodBoolean;
34
+ }, z.core.$strict>>;
35
+ queue: z.ZodArray<z.ZodObject<{
36
+ id: z.ZodString;
37
+ projectId: z.ZodOptional<z.ZodString>;
38
+ title: z.ZodString;
39
+ state: z.ZodEnum<{
40
+ blocked: "blocked";
41
+ ready: "ready";
42
+ running: "running";
43
+ needs_review: "needs_review";
44
+ finished: "finished";
45
+ needs_attention: "needs_attention";
46
+ }>;
47
+ stateLabel: z.ZodString;
48
+ priority: z.ZodEnum<{
49
+ critical: "critical";
50
+ high: "high";
51
+ medium: "medium";
52
+ low: "low";
53
+ }>;
54
+ assigneePrincipalId: z.ZodOptional<z.ZodString>;
55
+ runId: z.ZodOptional<z.ZodString>;
56
+ progressSummary: z.ZodOptional<z.ZodString>;
57
+ updatedAt: z.ZodString;
58
+ }, z.core.$strict>>;
59
+ detail: z.ZodOptional<z.ZodObject<{
60
+ id: z.ZodString;
61
+ title: z.ZodString;
62
+ bodyMarkdown: z.ZodString;
63
+ status: z.ZodEnum<{
64
+ backlog: "backlog";
65
+ todo: "todo";
66
+ in_progress: "in_progress";
67
+ in_review: "in_review";
68
+ blocked: "blocked";
69
+ done: "done";
70
+ cancelled: "cancelled";
71
+ }>;
72
+ stateLabel: z.ZodString;
73
+ priority: z.ZodEnum<{
74
+ critical: "critical";
75
+ high: "high";
76
+ medium: "medium";
77
+ low: "low";
78
+ }>;
79
+ assigneePrincipalId: z.ZodOptional<z.ZodString>;
80
+ updatedAt: z.ZodString;
81
+ run: z.ZodOptional<z.ZodObject<{
82
+ id: z.ZodString;
83
+ stateLabel: z.ZodString;
84
+ progressSummary: z.ZodString;
85
+ updatedAt: z.ZodString;
86
+ localStateLabel: z.ZodOptional<z.ZodString>;
87
+ events: z.ZodArray<z.ZodObject<{
88
+ id: z.ZodString;
89
+ type: z.ZodString;
90
+ summary: z.ZodString;
91
+ occurredAt: z.ZodString;
92
+ }, z.core.$strict>>;
93
+ trace: z.ZodArray<z.ZodObject<{
94
+ id: z.ZodString;
95
+ stream: z.ZodEnum<{
96
+ system: "system";
97
+ stdout: "stdout";
98
+ stderr: "stderr";
99
+ }>;
100
+ message: z.ZodString;
101
+ occurredAt: z.ZodString;
102
+ truncated: z.ZodBoolean;
103
+ }, z.core.$strict>>;
104
+ }, z.core.$strict>>;
105
+ comments: z.ZodArray<z.ZodObject<{
106
+ id: z.ZodString;
107
+ bodyMarkdown: z.ZodString;
108
+ authorPrincipalId: z.ZodString;
109
+ createdAt: z.ZodString;
110
+ }, z.core.$strict>>;
111
+ artifacts: z.ZodArray<z.ZodObject<{
112
+ id: z.ZodString;
113
+ title: z.ZodString;
114
+ summary: z.ZodOptional<z.ZodString>;
115
+ stateLabel: z.ZodString;
116
+ openTarget: z.ZodOptional<z.ZodString>;
117
+ intermediate: z.ZodBoolean;
118
+ }, z.core.$strict>>;
119
+ approvals: z.ZodArray<z.ZodObject<{
120
+ id: z.ZodString;
121
+ typeLabel: z.ZodString;
122
+ state: z.ZodEnum<{
123
+ pending: "pending";
124
+ approved: "approved";
125
+ rejected: "rejected";
126
+ revision_requested: "revision_requested";
127
+ }>;
128
+ stateLabel: z.ZodString;
129
+ decisionNote: z.ZodOptional<z.ZodString>;
130
+ }, z.core.$strict>>;
131
+ blockers: z.ZodArray<z.ZodObject<{
132
+ id: z.ZodString;
133
+ title: z.ZodString;
134
+ stateLabel: z.ZodString;
135
+ }, z.core.$strict>>;
136
+ actions: z.ZodObject<{
137
+ canEdit: z.ZodBoolean;
138
+ canDispatch: z.ZodBoolean;
139
+ canComment: z.ZodBoolean;
140
+ canCancel: z.ZodBoolean;
141
+ canReview: z.ZodBoolean;
142
+ canRetry: z.ZodBoolean;
143
+ }, z.core.$strict>;
144
+ }, z.core.$strict>>;
145
+ activity: z.ZodArray<z.ZodObject<{
146
+ id: z.ZodString;
147
+ summary: z.ZodString;
148
+ occurredAt: z.ZodString;
149
+ taskId: z.ZodOptional<z.ZodString>;
150
+ runId: z.ZodOptional<z.ZodString>;
151
+ correlationId: z.ZodOptional<z.ZodString>;
152
+ }, z.core.$strict>>;
153
+ }, z.core.$strict>;
154
+ export type WorkConsoleSnapshot = z.infer<typeof workConsoleSnapshotSchema>;
155
+ export declare const workSnapshotRequestSchema: z.ZodObject<{
156
+ projectId: z.ZodOptional<z.ZodString>;
157
+ taskId: z.ZodOptional<z.ZodString>;
158
+ }, z.core.$strict>;
159
+ export declare const createTaskRequestSchema: z.ZodObject<{
160
+ projectId: z.ZodOptional<z.ZodString>;
161
+ title: z.ZodString;
162
+ bodyMarkdown: z.ZodOptional<z.ZodString>;
163
+ priority: z.ZodOptional<z.ZodEnum<{
164
+ critical: "critical";
165
+ high: "high";
166
+ medium: "medium";
167
+ low: "low";
168
+ }>>;
169
+ assigneePrincipalId: z.ZodOptional<z.ZodString>;
170
+ }, z.core.$strict>;
171
+ export declare const updateTaskRequestSchema: z.ZodObject<{
172
+ taskId: z.ZodString;
173
+ title: z.ZodOptional<z.ZodString>;
174
+ bodyMarkdown: z.ZodOptional<z.ZodString>;
175
+ status: z.ZodOptional<z.ZodEnum<{
176
+ backlog: "backlog";
177
+ todo: "todo";
178
+ in_progress: "in_progress";
179
+ in_review: "in_review";
180
+ blocked: "blocked";
181
+ done: "done";
182
+ cancelled: "cancelled";
183
+ }>>;
184
+ priority: z.ZodOptional<z.ZodEnum<{
185
+ critical: "critical";
186
+ high: "high";
187
+ medium: "medium";
188
+ low: "low";
189
+ }>>;
190
+ assigneePrincipalId: z.ZodOptional<z.ZodString>;
191
+ }, z.core.$strict>;
192
+ export declare const commentTaskRequestSchema: z.ZodObject<{
193
+ taskId: z.ZodString;
194
+ bodyMarkdown: z.ZodString;
195
+ }, z.core.$strict>;
196
+ export declare const dispatchTaskRequestSchema: z.ZodObject<{
197
+ taskId: z.ZodString;
198
+ conductorAgentId: z.ZodString;
199
+ reason: z.ZodOptional<z.ZodString>;
200
+ idempotencyKey: z.ZodOptional<z.ZodString>;
201
+ }, z.core.$strict>;
202
+ export declare const approvalDecisionRequestSchema: z.ZodObject<{
203
+ approvalId: z.ZodString;
204
+ decision: z.ZodEnum<{
205
+ approved: "approved";
206
+ rejected: "rejected";
207
+ revision_requested: "revision_requested";
208
+ }>;
209
+ decisionNote: z.ZodOptional<z.ZodString>;
210
+ }, z.core.$strict>;
211
+ export declare const cancelRunRequestSchema: z.ZodObject<{
212
+ runId: z.ZodString;
213
+ }, z.core.$strict>;