p-spore 0.1.2 → 0.1.4

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/cli/main.d.ts.map +1 -1
  2. package/dist/cli/main.js +110 -4
  3. package/dist/cli/main.js.map +1 -1
  4. package/dist/desktop/renderer/renderer.js +7 -6
  5. package/dist/desktop/renderer/renderer.js.map +1 -1
  6. package/dist/desktop/renderer/store.d.ts +2 -8
  7. package/dist/desktop/renderer/store.d.ts.map +1 -1
  8. package/dist/desktop/renderer/store.js +3 -59
  9. package/dist/desktop/renderer/store.js.map +1 -1
  10. package/dist/memory/memory-tools.d.ts.map +1 -1
  11. package/dist/memory/memory-tools.js +25 -5
  12. package/dist/memory/memory-tools.js.map +1 -1
  13. package/dist/policy/policy.d.ts.map +1 -1
  14. package/dist/policy/policy.js +4 -1
  15. package/dist/policy/policy.js.map +1 -1
  16. package/dist/ui/shared/activity.d.ts +25 -0
  17. package/dist/ui/shared/activity.d.ts.map +1 -0
  18. package/dist/ui/shared/activity.js +370 -0
  19. package/dist/ui/shared/activity.js.map +1 -0
  20. package/dist/ui/tui/commands.d.ts +1 -1
  21. package/dist/ui/tui/commands.d.ts.map +1 -1
  22. package/dist/ui/tui/commands.js +1 -0
  23. package/dist/ui/tui/commands.js.map +1 -1
  24. package/dist/ui/tui/store.d.ts +5 -0
  25. package/dist/ui/tui/store.d.ts.map +1 -1
  26. package/dist/ui/tui/store.js +17 -0
  27. package/dist/ui/tui/store.js.map +1 -1
  28. package/dist/ui/tui/tui-app.d.ts.map +1 -1
  29. package/dist/ui/tui/tui-app.js +88 -10
  30. package/dist/ui/tui/tui-app.js.map +1 -1
  31. package/dist/ui/tui/view.d.ts +3 -0
  32. package/dist/ui/tui/view.d.ts.map +1 -1
  33. package/dist/ui/tui/view.js +137 -37
  34. package/dist/ui/tui/view.js.map +1 -1
  35. package/dist/version.d.ts +1 -1
  36. package/dist/version.js +1 -1
  37. package/package.json +1 -1
@@ -0,0 +1,370 @@
1
+ export function applyCoworkActivityEvent(current, event, maximum = 100) {
2
+ if (event.type !== "tool.started" && event.type !== "tool.updated" && event.type !== "tool.completed") {
3
+ const generic = genericActivity(current, event);
4
+ if (!generic)
5
+ return current;
6
+ const existing = current.findIndex((activity) => activity.id === generic.id);
7
+ const activities = existing >= 0
8
+ ? current.map((activity, index) => index === existing ? generic : activity)
9
+ : [...current, generic];
10
+ return activities.slice(-Math.max(1, maximum));
11
+ }
12
+ const payload = asRecord(event.payload);
13
+ const toolCallId = stringValue(payload["toolCallId"]) ?? event.id;
14
+ const toolName = stringValue(payload["toolName"]) ?? "tool";
15
+ const sessionId = stringValue(payload["sessionId"]);
16
+ const index = current.findIndex((activity) => activity.id === toolCallId);
17
+ const previous = index >= 0 ? current[index] : undefined;
18
+ let next;
19
+ if (event.type === "tool.started") {
20
+ const detail = activityDetail(payload["input"], undefined);
21
+ next = {
22
+ id: toolCallId,
23
+ type: event.type,
24
+ ...(sessionId ? { sessionId } : {}),
25
+ toolName,
26
+ status: "running",
27
+ label: toolLabel(toolName, "running"),
28
+ summary: toolTarget(toolName, asRecord(payload["input"])),
29
+ ts: event.ts,
30
+ ...(detail ? { detail } : {}),
31
+ };
32
+ }
33
+ else if (event.type === "tool.updated") {
34
+ if (!previous)
35
+ return current;
36
+ const detail = activityDetail(payload["partialResult"], previous.detail);
37
+ next = {
38
+ ...previous,
39
+ type: event.type,
40
+ ...(detail ? { detail } : {}),
41
+ };
42
+ }
43
+ else {
44
+ const failed = payload["isError"] === true;
45
+ const startedAt = previous?.ts ?? event.ts;
46
+ const detail = activityDetail(payload["result"], previous?.detail);
47
+ next = {
48
+ ...(previous ?? {
49
+ id: toolCallId,
50
+ ...(sessionId ? { sessionId } : {}),
51
+ toolName,
52
+ summary: toolTarget(toolName, {}),
53
+ ts: startedAt,
54
+ }),
55
+ type: event.type,
56
+ status: failed ? "failed" : "succeeded",
57
+ label: toolLabel(toolName, failed ? "failed" : "succeeded"),
58
+ completedAt: event.ts,
59
+ durationMs: elapsedMs(startedAt, event.ts),
60
+ resultSummary: toolResultSummary(toolName, payload["result"], failed),
61
+ ...(detail ? { detail } : {}),
62
+ };
63
+ }
64
+ const activities = index >= 0
65
+ ? current.map((activity, activityIndex) => activityIndex === index ? next : activity)
66
+ : [...current, next];
67
+ return activities.slice(-Math.max(1, maximum));
68
+ }
69
+ function genericActivity(current, event) {
70
+ const visible = new Set([
71
+ "run.started",
72
+ "run.settled",
73
+ "compaction.started",
74
+ "compaction.completed",
75
+ "retry.started",
76
+ "retry.completed",
77
+ "runtime.error",
78
+ "automation.run",
79
+ "agent.updated",
80
+ "agent.message",
81
+ "mcp.health",
82
+ "resource.health",
83
+ ]);
84
+ if (!visible.has(event.type))
85
+ return undefined;
86
+ const payload = asRecord(event.payload);
87
+ const sessionId = stringValue(payload["sessionId"]);
88
+ const pair = pairedEvent(event.type);
89
+ const previous = pair?.phase === "completed"
90
+ ? [...current].reverse().find((activity) => (activity.toolName === pair.key
91
+ && activity.status === "running"
92
+ && activity.sessionId === sessionId))
93
+ : undefined;
94
+ const presentation = genericPresentation(event.type, payload);
95
+ const status = presentation.status;
96
+ const detail = activityDetail(payload, previous?.detail);
97
+ const startedAt = previous?.ts ?? event.ts;
98
+ return {
99
+ id: previous?.id ?? event.id,
100
+ type: event.type,
101
+ ...(sessionId ? { sessionId } : {}),
102
+ toolName: pair?.key ?? presentation.kind,
103
+ status,
104
+ label: presentation.label,
105
+ summary: presentation.summary,
106
+ ts: startedAt,
107
+ ...(status === "running" ? {} : {
108
+ completedAt: event.ts,
109
+ durationMs: elapsedMs(startedAt, event.ts),
110
+ }),
111
+ ...(presentation.result ? { resultSummary: presentation.result } : {}),
112
+ ...(detail ? { detail } : {}),
113
+ };
114
+ }
115
+ function pairedEvent(type) {
116
+ if (type === "run.started")
117
+ return { key: "run", phase: "started" };
118
+ if (type === "run.settled")
119
+ return { key: "run", phase: "completed" };
120
+ if (type === "compaction.started")
121
+ return { key: "compaction", phase: "started" };
122
+ if (type === "compaction.completed")
123
+ return { key: "compaction", phase: "completed" };
124
+ if (type === "retry.started")
125
+ return { key: "retry", phase: "started" };
126
+ if (type === "retry.completed")
127
+ return { key: "retry", phase: "completed" };
128
+ return undefined;
129
+ }
130
+ function genericPresentation(type, payload) {
131
+ if (type === "run.started")
132
+ return { kind: "run", status: "running", label: "Working on request", summary: "cowork session" };
133
+ if (type === "run.settled")
134
+ return { kind: "run", status: "succeeded", label: "Request finished", summary: "cowork session" };
135
+ if (type === "compaction.started") {
136
+ return { kind: "compaction", status: "running", label: "Compacting context", summary: compactText(stringValue(payload["reason"]) ?? "conversation context", 100) };
137
+ }
138
+ if (type === "compaction.completed") {
139
+ const aborted = payload["aborted"] === true;
140
+ return {
141
+ kind: "compaction",
142
+ status: aborted ? "failed" : "succeeded",
143
+ label: aborted ? "Context compaction stopped" : "Context compacted",
144
+ summary: compactText(stringValue(payload["reason"]) ?? "conversation context", 100),
145
+ };
146
+ }
147
+ if (type === "retry.started") {
148
+ const attempt = numberValue(payload["attempt"]);
149
+ const maximum = numberValue(payload["maxAttempts"]);
150
+ return {
151
+ kind: "retry",
152
+ status: "running",
153
+ label: "Retrying model request",
154
+ summary: attempt === undefined ? "automatic retry" : `attempt ${attempt}${maximum === undefined ? "" : ` of ${maximum}`}`,
155
+ };
156
+ }
157
+ if (type === "retry.completed") {
158
+ const succeeded = payload["success"] === true;
159
+ return {
160
+ kind: "retry",
161
+ status: succeeded ? "succeeded" : "failed",
162
+ label: succeeded ? "Model retry succeeded" : "Model retry failed",
163
+ summary: numberValue(payload["attempt"]) === undefined ? "automatic retry" : `attempt ${numberValue(payload["attempt"])}`,
164
+ };
165
+ }
166
+ if (type === "runtime.error") {
167
+ const error = stringValue(payload["message"]) ?? stringValue(payload["error"]) ?? "runtime reported an error";
168
+ return { kind: "runtime", status: "failed", label: "Cowork task failed", summary: compactText(redactText(error), 140) };
169
+ }
170
+ const rootKey = type === "automation.run" ? "run"
171
+ : type === "agent.updated" ? "agent"
172
+ : type === "agent.message" ? "message"
173
+ : "health";
174
+ const record = asRecord(payload[rootKey]);
175
+ const rawStatus = stringValue(record["status"]);
176
+ const failed = rawStatus === "failed" || rawStatus === "degraded" || rawStatus === "blocked";
177
+ const running = rawStatus === "running" || rawStatus === "active" || rawStatus === "starting" || rawStatus === "connecting";
178
+ const status = failed ? "failed" : running ? "running" : "succeeded";
179
+ const labels = {
180
+ "automation.run": "Automation updated",
181
+ "agent.updated": "Coworker updated",
182
+ "agent.message": "Coworker message",
183
+ "mcp.health": "Integration health changed",
184
+ "resource.health": "Resource health changed",
185
+ };
186
+ const summary = stringValue(record["title"])
187
+ ?? stringValue(record["name"])
188
+ ?? stringValue(record["serverId"])
189
+ ?? stringValue(record["key"])
190
+ ?? stringValue(record["id"])
191
+ ?? type.replaceAll(".", " ");
192
+ return {
193
+ kind: type,
194
+ status,
195
+ label: labels[type] ?? humanize(type),
196
+ summary: compactText(summary, 120),
197
+ ...(rawStatus ? { result: rawStatus } : {}),
198
+ };
199
+ }
200
+ export function toolLabel(toolName, status) {
201
+ const labels = {
202
+ read: ["Reading file", "Read file"],
203
+ edit: ["Updating file", "Updated file"],
204
+ search: ["Searching workspace", "Searched workspace"],
205
+ shell: ["Running command", "Ran command"],
206
+ memory_append: ["Saving daily memory", "Saved daily memory"],
207
+ memory_curate: ["Curating long-term memory", "Curated long-term memory"],
208
+ notify: ["Sending notification", "Sent notification"],
209
+ schedule: ["Updating automation", "Updated automation"],
210
+ agent_spawn: ["Starting coworker", "Started coworker"],
211
+ agent_send: ["Messaging coworker", "Messaged coworker"],
212
+ agent_join: ["Waiting for coworker", "Coworker finished"],
213
+ mcp_call: ["Calling integration", "Called integration"],
214
+ mcp_discover: ["Connecting integration", "Connected integration"],
215
+ };
216
+ const pair = labels[toolName];
217
+ const completed = pair?.[1] ?? humanize(toolName);
218
+ if (status === "failed")
219
+ return `${completed} failed`;
220
+ return status === "running" ? (pair?.[0] ?? `Using ${humanize(toolName)}`) : completed;
221
+ }
222
+ export function activityDetailLines(activity) {
223
+ return [
224
+ `Status ${activity.status}`,
225
+ `Step ${activity.label}`,
226
+ `Target ${activity.summary}`,
227
+ `Tool ${activity.toolName ?? "n/a"}`,
228
+ `Started ${activity.ts}`,
229
+ ...(activity.completedAt ? [`Completed ${activity.completedAt}`] : []),
230
+ ...(activity.durationMs === undefined ? [] : [`Duration ${formatDuration(activity.durationMs)}`]),
231
+ ...(activity.resultSummary ? [`Result ${activity.resultSummary}`] : []),
232
+ ...(activity.detail ? ["", "Technical details (redacted and size-limited)", activity.detail] : []),
233
+ ];
234
+ }
235
+ export function formatDuration(durationMs) {
236
+ if (durationMs < 1_000)
237
+ return `${durationMs} ms`;
238
+ if (durationMs < 60_000)
239
+ return `${(durationMs / 1_000).toFixed(durationMs < 10_000 ? 1 : 0)} s`;
240
+ const minutes = Math.floor(durationMs / 60_000);
241
+ const seconds = Math.floor((durationMs % 60_000) / 1_000);
242
+ return `${minutes}m ${seconds}s`;
243
+ }
244
+ function toolTarget(toolName, input) {
245
+ if (toolName === "read" || toolName === "edit") {
246
+ return compactPath(stringValue(input["path"]) ?? "file");
247
+ }
248
+ if (toolName === "search") {
249
+ const query = stringValue(input["query"]);
250
+ const path = stringValue(input["path"]);
251
+ return [query ? `“${compactText(query, 72)}”` : "workspace", path ? `in ${compactPath(path)}` : ""].filter(Boolean).join(" ");
252
+ }
253
+ if (toolName === "shell")
254
+ return compactText(redactText(stringValue(input["command"]) ?? "command"), 110);
255
+ if (toolName === "memory_append")
256
+ return "durable daily note";
257
+ if (toolName === "memory_curate") {
258
+ const entries = Array.isArray(input["entries"]) ? input["entries"].length : undefined;
259
+ return entries === undefined ? "MEMORY.md" : `${entries} long-term ${entries === 1 ? "fact" : "facts"}`;
260
+ }
261
+ if (toolName === "agent_spawn")
262
+ return compactText(stringValue(input["objective"]) ?? "bounded task", 90);
263
+ if (toolName === "agent_send" || toolName === "agent_join")
264
+ return stringValue(input["agentId"]) ?? "coworker";
265
+ if (toolName === "mcp_call") {
266
+ return [stringValue(input["serverId"]), stringValue(input["toolName"])].filter(Boolean).join(" / ") || "integration";
267
+ }
268
+ return "work step";
269
+ }
270
+ function toolResultSummary(toolName, result, failed) {
271
+ const root = asRecord(result);
272
+ const details = asRecord(root["details"]);
273
+ if (failed)
274
+ return compactText(redactText(firstText(root) ?? "Tool reported an error"), 140);
275
+ const bytes = numberValue(details["bytes"]);
276
+ const returnedLines = numberValue(details["returnedLines"]);
277
+ const added = numberValue(details["added"]);
278
+ const capturedBytes = numberValue(details["capturedBytes"]);
279
+ if (toolName === "edit" && bytes !== undefined)
280
+ return `${formatBytes(bytes)} written`;
281
+ if (toolName === "read" && returnedLines !== undefined)
282
+ return `${returnedLines} lines read`;
283
+ if (toolName === "memory_curate" && added !== undefined)
284
+ return `${added} ${added === 1 ? "fact" : "facts"} added`;
285
+ if (toolName === "shell" && capturedBytes !== undefined)
286
+ return `${formatBytes(capturedBytes)} output captured`;
287
+ const text = firstText(root);
288
+ return text ? compactText(redactText(text), 120) : "Completed";
289
+ }
290
+ function activityDetail(value, previous) {
291
+ if (value === undefined)
292
+ return previous;
293
+ try {
294
+ const text = JSON.stringify(redactValue(value, 0), null, 2);
295
+ const limited = text.length > 8_000 ? `${text.slice(0, 8_000)}\n… details folded at 8 KB` : text;
296
+ return previous && previous !== limited ? `${previous}\n\nLatest update\n${limited}` : limited;
297
+ }
298
+ catch {
299
+ return previous;
300
+ }
301
+ }
302
+ function redactValue(value, depth) {
303
+ if (depth > 8)
304
+ return "[depth limited]";
305
+ if (typeof value === "string")
306
+ return redactText(value.length > 4_000 ? `${value.slice(0, 4_000)}…` : value);
307
+ if (Array.isArray(value))
308
+ return value.slice(0, 50).map((item) => redactValue(item, depth + 1));
309
+ if (!isRecord(value))
310
+ return value;
311
+ const result = {};
312
+ for (const [key, child] of Object.entries(value).slice(0, 100)) {
313
+ result[key] = /api.?key|token|password|secret|authorization|cookie/i.test(key)
314
+ ? "[redacted]"
315
+ : redactValue(child, depth + 1);
316
+ }
317
+ return result;
318
+ }
319
+ function redactText(value) {
320
+ return value
321
+ .replace(/((?:api[_-]?key|token|password|secret)\s*[:=]\s*)\S+/gi, "$1[redacted]")
322
+ .replace(/\b(?:sk|ds)-[A-Za-z0-9_-]{12,}\b/g, "[redacted credential]");
323
+ }
324
+ function firstText(result) {
325
+ const content = result["content"];
326
+ if (!Array.isArray(content))
327
+ return undefined;
328
+ for (const block of content) {
329
+ const record = asRecord(block);
330
+ if (typeof record["text"] === "string")
331
+ return record["text"];
332
+ }
333
+ return undefined;
334
+ }
335
+ function elapsedMs(start, end) {
336
+ const duration = new Date(end).getTime() - new Date(start).getTime();
337
+ return Number.isFinite(duration) ? Math.max(0, duration) : 0;
338
+ }
339
+ function compactPath(value) {
340
+ const normalized = value.replaceAll("\\", "/");
341
+ const parts = normalized.split("/").filter(Boolean);
342
+ return parts.length <= 3 ? normalized : `…/${parts.slice(-3).join("/")}`;
343
+ }
344
+ function compactText(value, maximum) {
345
+ const normalized = value.replace(/\s+/g, " ").trim();
346
+ return normalized.length <= maximum ? normalized : `${normalized.slice(0, Math.max(1, maximum - 1))}…`;
347
+ }
348
+ function formatBytes(value) {
349
+ if (value < 1_024)
350
+ return `${value} B`;
351
+ if (value < 1_048_576)
352
+ return `${(value / 1_024).toFixed(1)} KB`;
353
+ return `${(value / 1_048_576).toFixed(1)} MB`;
354
+ }
355
+ function humanize(value) {
356
+ return value.replaceAll("__", " / ").replaceAll("_", " ").replaceAll(".", " ");
357
+ }
358
+ function stringValue(value) {
359
+ return typeof value === "string" && value.trim() ? value.trim() : undefined;
360
+ }
361
+ function numberValue(value) {
362
+ return typeof value === "number" && Number.isFinite(value) ? value : undefined;
363
+ }
364
+ function asRecord(value) {
365
+ return isRecord(value) ? value : {};
366
+ }
367
+ function isRecord(value) {
368
+ return typeof value === "object" && value !== null && !Array.isArray(value);
369
+ }
370
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/ui/shared/activity.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const TUI_HELP_LINES: readonly ["CONVERSATION", " text Send to selected target", " /steer TEXT Interrupt with guidance", " /follow TEXT Queue after current turn", " /abort /compact /select ID", "", "MODEL SETTINGS", " /config Show current settings", " /config wizard Launch guided setup", " /config set PROVIDER [MODEL] [THINKING]", " /config set custom-openai MODEL BASE_URL [chat|responses] [THINKING]", " /config provider deepseek|openai", " /config model MODEL /config thinking LEVEL", " /config endpoint BASE_URL [chat|responses]", " /config key /config clear-key", "", "AGENTS & AUTOMATION", " /agents /agent-spawn TEXT /agent ID MESSAGE", " /agent-join ID... /agent-cancel ID", " /jobs /runs /notifications /run JOB /cancel RUN", "", "INTEGRATIONS & RESOURCES", " /mcp /mcp-tools /mcp-discover ID /mcp-ping ID", " /resources /skills /plugins", " /resource-inspect NAME /resource-install NAME SHA256", " /resource-disable KIND NAME SHA256", "", "APPROVAL & NAVIGATION", " /approve [ID] [once|session|job] /deny [ID]", " /back /help /quit PgUp/PgDn Ctrl+C"];
1
+ export declare const TUI_HELP_LINES: readonly ["CONVERSATION", " text Send to selected target", " /steer TEXT Interrupt with guidance", " /follow TEXT Queue after current turn", " /abort /compact /select ID", " /work [STEP_ID] Work history or step details", "", "MODEL SETTINGS", " /config Show current settings", " /config wizard Launch guided setup", " /config set PROVIDER [MODEL] [THINKING]", " /config set custom-openai MODEL BASE_URL [chat|responses] [THINKING]", " /config provider deepseek|openai", " /config model MODEL /config thinking LEVEL", " /config endpoint BASE_URL [chat|responses]", " /config key /config clear-key", "", "AGENTS & AUTOMATION", " /agents /agent-spawn TEXT /agent ID MESSAGE", " /agent-join ID... /agent-cancel ID", " /jobs /runs /notifications /run JOB /cancel RUN", "", "INTEGRATIONS & RESOURCES", " /mcp /mcp-tools /mcp-discover ID /mcp-ping ID", " /resources /skills /plugins", " /resource-inspect NAME /resource-install NAME SHA256", " /resource-disable KIND NAME SHA256", "", "APPROVAL & NAVIGATION", " /approve [ID] [once|session|job] /deny [ID]", " /back /help /quit PgUp/PgDn Ctrl+C"];
2
2
  //# sourceMappingURL=commands.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/ui/tui/commands.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,ypCA+BjB,CAAC"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../../src/ui/tui/commands.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,wtCAgCjB,CAAC"}
@@ -4,6 +4,7 @@ export const TUI_HELP_LINES = [
4
4
  " /steer TEXT Interrupt with guidance",
5
5
  " /follow TEXT Queue after current turn",
6
6
  " /abort /compact /select ID",
7
+ " /work [STEP_ID] Work history or step details",
7
8
  "",
8
9
  "MODEL SETTINGS",
9
10
  " /config Show current settings",
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/ui/tui/commands.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc;IACd,wDAAwD;IACxD,wDAAwD;IACxD,yDAAyD;IACzD,gCAAgC;IAChC,EAAE;IACF,gBAAgB;IAChB,sDAAsD;IACtD,oDAAoD;IACpD,2CAA2C;IAC3C,wEAAwE;IACxE,oCAAoC;IACpC,+CAA+C;IAC/C,8CAA8C;IAC9C,kCAAkC;IAClC,EAAE;IACF,qBAAqB;IACrB,iDAAiD;IACjD,uCAAuC;IACvC,uDAAuD;IACvD,EAAE;IACF,0BAA0B;IAC1B,oDAAoD;IACpD,iCAAiC;IACjC,yDAAyD;IACzD,sCAAsC;IACtC,EAAE;IACF,uBAAuB;IACvB,gDAAgD;IAChD,0CAA0C;CAClC,CAAC"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/ui/tui/commands.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc;IACd,wDAAwD;IACxD,wDAAwD;IACxD,yDAAyD;IACzD,gCAAgC;IAChC,6DAA6D;IAC7D,EAAE;IACF,gBAAgB;IAChB,sDAAsD;IACtD,oDAAoD;IACpD,2CAA2C;IAC3C,wEAAwE;IACxE,oCAAoC;IACpC,+CAA+C;IAC/C,8CAA8C;IAC9C,kCAAkC;IAClC,EAAE;IACF,qBAAqB;IACrB,iDAAiD;IACjD,uCAAuC;IACvC,uDAAuD;IACvD,EAAE;IACF,0BAA0B;IAC1B,oDAAoD;IACpD,iCAAiC;IACjC,yDAAyD;IACzD,sCAAsC;IACtC,EAAE;IACF,uBAAuB;IACvB,gDAAgD;IAChD,0CAA0C;CAClC,CAAC"}
@@ -1,5 +1,7 @@
1
+ import type { ModelRef } from "../../domain/runtime.js";
1
2
  import type { KernelState } from "../../kernel/state.js";
2
3
  import type { EventEnvelope, ServerHelloFrame } from "../../protocol/schema.js";
4
+ import { type CoworkActivity } from "../shared/activity.js";
3
5
  export interface TuiStoreSnapshot {
4
6
  connected: boolean;
5
7
  instanceId?: string;
@@ -12,6 +14,8 @@ export interface TuiStoreSnapshot {
12
14
  received: number;
13
15
  };
14
16
  streamingText: Readonly<Record<string, string>>;
17
+ activities: readonly CoworkActivity[];
18
+ configuredModel?: ModelRef;
15
19
  notice: string;
16
20
  panel?: {
17
21
  title: string;
@@ -24,6 +28,7 @@ export declare class TuiStore {
24
28
  applyHello(hello: ServerHelloFrame): void;
25
29
  disconnected(message: string): void;
26
30
  setNotice(notice: string): void;
31
+ setConfiguredModel(model: ModelRef | undefined): void;
27
32
  setPanel(title: string, lines: readonly string[]): void;
28
33
  clearPanel(): void;
29
34
  selectSession(id: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/ui/tui/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAShF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CACrD;AAED,qBAAa,QAAQ;;IAOnB,QAAQ,IAAI,gBAAgB;IAI5B,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAYzC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAIvD,UAAU,IAAI,IAAI;IAOlB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAMjC,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CASvC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/ui/tui/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAStF,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IACtC,eAAe,CAAC,EAAE,QAAQ,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CACrD;AAED,qBAAa,QAAQ;;IAQnB,QAAQ,IAAI,gBAAgB;IAI5B,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAczC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAInC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI;IASrD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAIvD,UAAU,IAAI,IAAI;IAOlB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM;IAMjC,UAAU,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAavC"}
@@ -1,8 +1,10 @@
1
+ import { applyCoworkActivityEvent } from "../shared/activity.js";
1
2
  import { applyProtocolEvent, initialProtocolUiState, replaceProtocolSnapshot, selectProtocolSession, } from "../shared/protocol-state.js";
2
3
  export class TuiStore {
3
4
  #state = {
4
5
  connected: false,
5
6
  ...initialProtocolUiState(),
7
+ activities: [],
6
8
  notice: "Connecting to daemon…",
7
9
  };
8
10
  snapshot() {
@@ -10,9 +12,11 @@ export class TuiStore {
10
12
  }
11
13
  applyHello(hello) {
12
14
  const cursors = { ...this.#state.cursors, [hello.streamId]: hello.latestSeq };
15
+ const activities = this.#state.instanceId && this.#state.instanceId !== hello.instanceId ? [] : this.#state.activities;
13
16
  this.#state = {
14
17
  ...this.#state,
15
18
  ...replaceProtocolSnapshot(protocolState(this.#state), hello.snapshot, cursors),
19
+ activities,
16
20
  connected: true,
17
21
  instanceId: hello.instanceId,
18
22
  notice: "Connected",
@@ -25,6 +29,15 @@ export class TuiStore {
25
29
  setNotice(notice) {
26
30
  this.#state = { ...this.#state, notice };
27
31
  }
32
+ setConfiguredModel(model) {
33
+ if (model)
34
+ this.#state = { ...this.#state, configuredModel: { ...model } };
35
+ else {
36
+ const next = { ...this.#state };
37
+ delete next.configuredModel;
38
+ this.#state = next;
39
+ }
40
+ }
28
41
  setPanel(title, lines) {
29
42
  this.#state = { ...this.#state, panel: { title, lines: [...lines] }, notice: `${title} opened; use /back or Esc to return` };
30
43
  }
@@ -42,9 +55,13 @@ export class TuiStore {
42
55
  }
43
56
  applyEvent(event) {
44
57
  const result = applyProtocolEvent(protocolState(this.#state), event);
58
+ const activities = result.applied
59
+ ? applyCoworkActivityEvent(this.#state.activities, event)
60
+ : this.#state.activities;
45
61
  this.#state = {
46
62
  ...this.#state,
47
63
  ...result.state,
64
+ activities,
48
65
  ...(result.notificationNotice ? { notice: result.notificationNotice } : {}),
49
66
  ...(result.state.gap ? { notice: `Event gap detected on ${result.state.gap.streamId}; reconnecting for a snapshot` } : {}),
50
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/ui/tui/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/ui/tui/store.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tui-app.d.ts","sourceRoot":"","sources":["../../../src/ui/tui/tui-app.ts"],"names":[],"mappings":"AAMA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAIvB,MAAM,gCAAgC,CAAC;AAMxC,MAAM,WAAW,eAAe;IAC9B,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,iBAAiB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,wBAAwB,0CAA0C,CAAC;AAEhF,eAAO,MAAM,uBAAuB,UAOnC,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI1E;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClG;AAED,qBAAa,YAAY;;gBAcX,OAAO,EAAE,aAAa;IAK5B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAukB3B"}
1
+ {"version":3,"file":"tui-app.d.ts","sourceRoot":"","sources":["../../../src/ui/tui/tui-app.ts"],"names":[],"mappings":"AAMA,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,iBAAiB,EAIvB,MAAM,gCAAgC,CAAC;AAOxC,MAAM,WAAW,eAAe;IAC9B,GAAG,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,iBAAiB,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACxC;AAED,eAAO,MAAM,wBAAwB,0CAA0C,CAAC;AAEhF,eAAO,MAAM,uBAAuB,UAOnC,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI1E;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,eAAe,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAClG;AAED,qBAAa,YAAY;;gBAcX,OAAO,EAAE,aAAa;IAK5B,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CA+oB3B"}