kanban 0.1.25 → 0.1.26

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 (42) hide show
  1. package/dist/cline-sdk/cline-event-adapter.d.ts.map +1 -1
  2. package/dist/cline-sdk/cline-event-adapter.js +32 -12
  3. package/dist/cline-sdk/cline-event-adapter.js.map +1 -1
  4. package/dist/cline-sdk/cline-task-session-service.d.ts +2 -0
  5. package/dist/cline-sdk/cline-task-session-service.d.ts.map +1 -1
  6. package/dist/cline-sdk/cline-task-session-service.js +44 -0
  7. package/dist/cline-sdk/cline-task-session-service.js.map +1 -1
  8. package/dist/cline-sdk/cline-tool-call-display.d.ts +7 -0
  9. package/dist/cline-sdk/cline-tool-call-display.d.ts.map +1 -0
  10. package/dist/cline-sdk/cline-tool-call-display.js +137 -0
  11. package/dist/cline-sdk/cline-tool-call-display.js.map +1 -0
  12. package/dist/commands/hooks.d.ts +17 -0
  13. package/dist/commands/hooks.d.ts.map +1 -1
  14. package/dist/commands/hooks.js +32 -10
  15. package/dist/commands/hooks.js.map +1 -1
  16. package/dist/core/api-contract.d.ts +21 -0
  17. package/dist/core/api-contract.d.ts.map +1 -1
  18. package/dist/core/api-contract.js +2 -0
  19. package/dist/core/api-contract.js.map +1 -1
  20. package/dist/server/runtime-server.d.ts.map +1 -1
  21. package/dist/server/runtime-server.js +2 -1
  22. package/dist/server/runtime-server.js.map +1 -1
  23. package/dist/server/runtime-state-hub.d.ts +1 -1
  24. package/dist/server/runtime-state-hub.d.ts.map +1 -1
  25. package/dist/server/runtime-state-hub.js +14 -1
  26. package/dist/server/runtime-state-hub.js.map +1 -1
  27. package/dist/terminal/session-manager.d.ts.map +1 -1
  28. package/dist/terminal/session-manager.js +5 -0
  29. package/dist/terminal/session-manager.js.map +1 -1
  30. package/dist/trpc/app-router.d.ts +12 -0
  31. package/dist/trpc/app-router.d.ts.map +1 -1
  32. package/dist/trpc/workspace-api.d.ts +5 -0
  33. package/dist/trpc/workspace-api.d.ts.map +1 -1
  34. package/dist/trpc/workspace-api.js +25 -1
  35. package/dist/trpc/workspace-api.js.map +1 -1
  36. package/dist/web-ui/assets/{index-CvBlCX0D.css → index-C5_h_GRw.css} +0 -16
  37. package/dist/web-ui/assets/{index-vuE_HWl_.js → index-Ch9fifln.js} +19093 -18967
  38. package/dist/web-ui/index.html +2 -2
  39. package/dist/workspace/task-worktree.d.ts.map +1 -1
  40. package/dist/workspace/task-worktree.js +158 -4
  41. package/dist/workspace/task-worktree.js.map +1 -1
  42. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"cline-event-adapter.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/cline-event-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAeN,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAE1B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,qBAAqB,CAAC;IAC7B,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC1D,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACjE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CASnE;AAGD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAgc/E"}
1
+ {"version":3,"file":"cline-event-adapter.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/cline-event-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEzE,OAAO,EAeN,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAE1B,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,qBAAqB,CAAC;IAC7B,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,WAAW,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAC1D,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACjE;AAoBD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CASnE;AAGD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,2BAA2B,GAAG,IAAI,CAqc/E"}
@@ -1,4 +1,18 @@
1
+ import { formatClineToolCallLabel, getClineToolCallDisplay } from "./cline-tool-call-display.js";
1
2
  import { appendAssistantChunk, appendReasoningChunk, canReturnToRunning, clearActiveTurnState, createAssistantMessage, createMessage, createReasoningMessage, finishToolCallMessage, isClineUserAttentionTool, latestAssistantMessageMatches, now, setOrCreateAssistantMessage, setOrCreateReasoningMessage, startToolCallMessage, updateSummary, } from "./cline-session-state.js";
3
+ function getRetainedClineToolActivity(entry) {
4
+ const latestHookActivity = entry.summary.latestHookActivity;
5
+ if (!latestHookActivity || latestHookActivity.source !== "cline-sdk" || !latestHookActivity.toolName) {
6
+ return {
7
+ toolName: null,
8
+ toolInputSummary: null,
9
+ };
10
+ }
11
+ return {
12
+ toolName: latestHookActivity.toolName,
13
+ toolInputSummary: latestHookActivity.toolInputSummary ?? null,
14
+ };
15
+ }
2
16
  export function extractClineSessionId(event) {
3
17
  if (!event || typeof event !== "object" || !("payload" in event)) {
4
18
  return null;
@@ -39,13 +53,15 @@ export function applyClineSessionEvent(input) {
39
53
  else if (typeof text === "string" && text.length > 0) {
40
54
  input.emitMessage(taskId, appendAssistantChunk(entry, taskId, text));
41
55
  }
56
+ const retainedToolActivity = getRetainedClineToolActivity(entry);
42
57
  emitSummary(input, {
43
58
  state: "running",
44
59
  lastOutputAt: now(),
45
60
  lastHookAt: now(),
46
61
  latestHookActivity: {
47
62
  activityText: "Agent active",
48
- toolName: null,
63
+ toolName: retainedToolActivity.toolName,
64
+ toolInputSummary: retainedToolActivity.toolInputSummary,
49
65
  finalMessage: null,
50
66
  hookEventName: "assistant_delta",
51
67
  notificationType: null,
@@ -93,6 +109,7 @@ export function applyClineSessionEvent(input) {
93
109
  latestHookActivity: {
94
110
  activityText: finalText ? `Final: ${finalText}` : "Waiting for review",
95
111
  toolName: null,
112
+ toolInputSummary: null,
96
113
  finalMessage: finalText || null,
97
114
  hookEventName: "agent_end",
98
115
  notificationType: null,
@@ -189,6 +206,7 @@ export function applyClineSessionEvent(input) {
189
206
  ? event.payload.event.toolCallId
190
207
  : null;
191
208
  const toolInput = "input" in event.payload.event ? event.payload.event.input : undefined;
209
+ const toolDisplay = getClineToolCallDisplay(toolName, toolInput);
192
210
  const isUserAttentionTool = isClineUserAttentionTool(toolName);
193
211
  input.emitMessage(taskId, startToolCallMessage(entry, taskId, {
194
212
  toolName,
@@ -199,8 +217,9 @@ export function applyClineSessionEvent(input) {
199
217
  lastOutputAt: now(),
200
218
  lastHookAt: now(),
201
219
  latestHookActivity: {
202
- activityText: toolName ? `Using ${toolName}` : "Using tool",
203
- toolName,
220
+ activityText: `Using ${formatClineToolCallLabel(toolDisplay.toolName, toolDisplay.inputSummary)}`,
221
+ toolName: toolDisplay.toolName,
222
+ toolInputSummary: toolDisplay.inputSummary,
204
223
  finalMessage: null,
205
224
  hookEventName: "tool_call",
206
225
  notificationType: isUserAttentionTool ? "user_attention" : null,
@@ -245,6 +264,8 @@ export function applyClineSessionEvent(input) {
245
264
  const durationMs = "durationMs" in event.payload.event && typeof event.payload.event.durationMs === "number"
246
265
  ? event.payload.event.durationMs
247
266
  : null;
267
+ const toolInput = toolCallId ? entry.toolInputByToolCallId.get(toolCallId) : undefined;
268
+ const toolDisplay = getClineToolCallDisplay(toolName, toolInput);
248
269
  const isUserAttentionTool = isClineUserAttentionTool(toolName);
249
270
  input.emitMessage(taskId, finishToolCallMessage(entry, taskId, {
250
271
  toolName,
@@ -257,14 +278,9 @@ export function applyClineSessionEvent(input) {
257
278
  lastOutputAt: now(),
258
279
  lastHookAt: now(),
259
280
  latestHookActivity: {
260
- activityText: toolError
261
- ? toolName
262
- ? `Failed ${toolName}`
263
- : "Failed tool"
264
- : toolName
265
- ? `Completed ${toolName}`
266
- : "Completed tool",
267
- toolName,
281
+ activityText: `${toolError ? "Failed" : "Completed"} ${formatClineToolCallLabel(toolDisplay.toolName, toolDisplay.inputSummary)}`,
282
+ toolName: toolDisplay.toolName,
283
+ toolInputSummary: toolDisplay.inputSummary,
268
284
  finalMessage: null,
269
285
  hookEventName: "tool_result",
270
286
  notificationType: null,
@@ -321,13 +337,15 @@ export function applyClineSessionEvent(input) {
321
337
  return;
322
338
  }
323
339
  input.emitMessage(taskId, appendAssistantChunk(entry, taskId, chunk));
340
+ const retainedToolActivity = getRetainedClineToolActivity(entry);
324
341
  emitSummary(input, {
325
342
  state: "running",
326
343
  lastOutputAt: now(),
327
344
  lastHookAt: now(),
328
345
  latestHookActivity: {
329
346
  activityText: "Agent active",
330
- toolName: null,
347
+ toolName: retainedToolActivity.toolName,
348
+ toolInputSummary: retainedToolActivity.toolInputSummary,
331
349
  finalMessage: null,
332
350
  hookEventName: "assistant_delta",
333
351
  notificationType: null,
@@ -355,6 +373,7 @@ export function applyClineSessionEvent(input) {
355
373
  latestHookActivity: {
356
374
  activityText,
357
375
  toolName,
376
+ toolInputSummary: null,
358
377
  finalMessage: null,
359
378
  hookEventName,
360
379
  notificationType: null,
@@ -417,6 +436,7 @@ function emitTurnCanceled(input) {
417
436
  latestHookActivity: {
418
437
  activityText: "Turn canceled",
419
438
  toolName: null,
439
+ toolInputSummary: null,
420
440
  finalMessage: null,
421
441
  hookEventName: "turn_canceled",
422
442
  notificationType: null,
@@ -1 +1 @@
1
- {"version":3,"file":"cline-event-adapter.js","sourceRoot":"","sources":["../../src/cline-sdk/cline-event-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["// Translates raw SDK session events into Kanban summary and message mutations.\n// Keep protocol-specific parsing here so the runtime and repository can stay\n// focused on lifecycle, storage, and task-facing orchestration.\nimport type { RuntimeTaskSessionSummary } from \"../core/api-contract.js\";\nimport {\n\tappendAssistantChunk,\n\tappendReasoningChunk,\n\tcanReturnToRunning,\n\tclearActiveTurnState,\n\tcreateAssistantMessage,\n\tcreateMessage,\n\tcreateReasoningMessage,\n\tfinishToolCallMessage,\n\tisClineUserAttentionTool,\n\tlatestAssistantMessageMatches,\n\tnow,\n\tsetOrCreateAssistantMessage,\n\tsetOrCreateReasoningMessage,\n\tstartToolCallMessage,\n\ttype ClineTaskMessage,\n\ttype ClineTaskSessionEntry,\n\tupdateSummary,\n} from \"./cline-session-state.js\";\n\nexport interface ApplyClineSessionEventInput {\n\tevent: unknown;\n\ttaskId: string;\n\tentry: ClineTaskSessionEntry;\n\tpendingTurnCancelTaskIds: Set<string>;\n\temitSummary: (summary: RuntimeTaskSessionSummary) => void;\n\temitMessage: (taskId: string, message: ClineTaskMessage) => void;\n}\n\nexport function extractClineSessionId(event: unknown): string | null {\n\tif (!event || typeof event !== \"object\" || !(\"payload\" in event)) {\n\t\treturn null;\n\t}\n\tconst payload = event.payload;\n\tif (!payload || typeof payload !== \"object\" || !(\"sessionId\" in payload)) {\n\t\treturn null;\n\t}\n\treturn typeof payload.sessionId === \"string\" ? payload.sessionId : null;\n}\n\n// Translate raw SDK events into Kanban summary and chat mutations so the session service can stay focused on host ownership.\nexport function applyClineSessionEvent(input: ApplyClineSessionEventInput): void {\n\tconst { entry, event, taskId } = input;\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_start\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"text\"\n\t) {\n\t\tconst accumulated =\n\t\t\t\"accumulated\" in event.payload.event && typeof event.payload.event.accumulated === \"string\"\n\t\t\t\t? event.payload.event.accumulated\n\t\t\t\t: null;\n\t\tconst text =\n\t\t\t\"text\" in event.payload.event && typeof event.payload.event.text === \"string\"\n\t\t\t\t? event.payload.event.text\n\t\t\t\t: null;\n\t\tif (typeof accumulated === \"string\") {\n\t\t\tconst message =\n\t\t\t\tsetOrCreateAssistantMessage(entry, taskId, accumulated) ?? createAssistantMessage(entry, taskId, accumulated);\n\t\t\tinput.emitMessage(taskId, message);\n\t\t} else if (typeof text === \"string\" && text.length > 0) {\n\t\t\tinput.emitMessage(taskId, appendAssistantChunk(entry, taskId, text));\n\t\t}\n\t\temitSummary(input, {\n\t\t\tstate: \"running\",\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: \"Agent active\",\n\t\t\t\ttoolName: null,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"assistant_delta\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"done\"\n\t) {\n\t\tconst finalText =\n\t\t\t\"text\" in event.payload.event && typeof event.payload.event.text === \"string\"\n\t\t\t\t? event.payload.event.text.trim()\n\t\t\t\t: \"\";\n\t\tif (finalText) {\n\t\t\tconst message = setOrCreateAssistantMessage(entry, taskId, finalText);\n\t\t\tif (message) {\n\t\t\t\tinput.emitMessage(taskId, message);\n\t\t\t} else if (!latestAssistantMessageMatches(entry, finalText)) {\n\t\t\t\tconst assistantMessage = createMessage(taskId, \"assistant\", finalText);\n\t\t\t\tentry.messages.push(assistantMessage);\n\t\t\t\tinput.emitMessage(taskId, assistantMessage);\n\t\t\t}\n\t\t}\n\n\t\tconst doneReason =\n\t\t\t\"reason\" in event.payload.event && typeof event.payload.event.reason === \"string\"\n\t\t\t\t? event.payload.event.reason\n\t\t\t\t: \"completed\";\n\t\tif (doneReason === \"aborted\" && input.pendingTurnCancelTaskIds.has(taskId)) {\n\t\t\temitTurnCanceled(input);\n\t\t\treturn;\n\t\t}\n\n\t\tconst summaryPatch: Partial<RuntimeTaskSessionSummary> = {\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: finalText ? `Final: ${finalText}` : \"Waiting for review\",\n\t\t\t\ttoolName: null,\n\t\t\t\tfinalMessage: finalText || null,\n\t\t\t\thookEventName: \"agent_end\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t};\n\t\tif (doneReason === \"aborted\") {\n\t\t\tsummaryPatch.state = \"interrupted\";\n\t\t\tsummaryPatch.reviewReason = \"interrupted\";\n\t\t} else if (doneReason === \"error\") {\n\t\t\tsummaryPatch.state = \"failed\";\n\t\t\tsummaryPatch.reviewReason = \"error\";\n\t\t} else {\n\t\t\tsummaryPatch.state = \"awaiting_review\";\n\t\t\tsummaryPatch.reviewReason = \"hook\";\n\t\t}\n\n\t\tclearActiveTurnState(entry);\n\t\temitSummary(input, summaryPatch);\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_start\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"reasoning\"\n\t) {\n\t\tconst reasoning =\n\t\t\t\"reasoning\" in event.payload.event && typeof event.payload.event.reasoning === \"string\"\n\t\t\t\t? event.payload.event.reasoning\n\t\t\t\t: null;\n\t\tif (reasoning && reasoning.length > 0) {\n\t\t\tinput.emitMessage(taskId, appendReasoningChunk(entry, taskId, reasoning));\n\t\t\temitSummary(input, {\n\t\t\t\tstate: \"running\",\n\t\t\t\tlastOutputAt: now(),\n\t\t\t});\n\t\t}\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_end\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"reasoning\"\n\t) {\n\t\tconst reasoning =\n\t\t\t\"reasoning\" in event.payload.event && typeof event.payload.event.reasoning === \"string\"\n\t\t\t\t? event.payload.event.reasoning\n\t\t\t\t: null;\n\t\tif (reasoning) {\n\t\t\tconst message =\n\t\t\t\tsetOrCreateReasoningMessage(entry, taskId, reasoning) ?? createReasoningMessage(entry, taskId, reasoning);\n\t\t\tinput.emitMessage(taskId, message);\n\t\t}\n\t\tentry.activeReasoningMessageId = null;\n\t\temitSummary(input, {\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_start\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"tool\"\n\t) {\n\t\tconst toolName =\n\t\t\t\"toolName\" in event.payload.event && typeof event.payload.event.toolName === \"string\"\n\t\t\t\t? event.payload.event.toolName\n\t\t\t\t: null;\n\t\tconst toolCallId =\n\t\t\t\"toolCallId\" in event.payload.event && typeof event.payload.event.toolCallId === \"string\"\n\t\t\t\t? event.payload.event.toolCallId\n\t\t\t\t: null;\n\t\tconst toolInput = \"input\" in event.payload.event ? event.payload.event.input : undefined;\n\t\tconst isUserAttentionTool = isClineUserAttentionTool(toolName);\n\t\tinput.emitMessage(\n\t\t\ttaskId,\n\t\t\tstartToolCallMessage(entry, taskId, {\n\t\t\t\ttoolName,\n\t\t\t\ttoolCallId,\n\t\t\t\tinput: toolInput,\n\t\t\t}),\n\t\t);\n\t\tconst summaryPatch: Partial<RuntimeTaskSessionSummary> = {\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: toolName ? `Using ${toolName}` : \"Using tool\",\n\t\t\t\ttoolName,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"tool_call\",\n\t\t\t\tnotificationType: isUserAttentionTool ? \"user_attention\" : null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t};\n\t\tif (isUserAttentionTool && entry.summary.state === \"running\") {\n\t\t\tsummaryPatch.state = \"awaiting_review\";\n\t\t\tsummaryPatch.reviewReason = \"hook\";\n\t\t} else if (!isUserAttentionTool && canReturnToRunning(entry.summary.reviewReason)) {\n\t\t\tsummaryPatch.state = \"running\";\n\t\t\tsummaryPatch.reviewReason = null;\n\t\t}\n\t\temitSummary(input, summaryPatch);\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_end\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"tool\"\n\t) {\n\t\tconst toolName =\n\t\t\t\"toolName\" in event.payload.event && typeof event.payload.event.toolName === \"string\"\n\t\t\t\t? event.payload.event.toolName\n\t\t\t\t: null;\n\t\tconst toolCallId =\n\t\t\t\"toolCallId\" in event.payload.event && typeof event.payload.event.toolCallId === \"string\"\n\t\t\t\t? event.payload.event.toolCallId\n\t\t\t\t: null;\n\t\tconst toolOutput = \"output\" in event.payload.event ? event.payload.event.output : undefined;\n\t\tconst toolError =\n\t\t\t\"error\" in event.payload.event && typeof event.payload.event.error === \"string\"\n\t\t\t\t? event.payload.event.error\n\t\t\t\t: null;\n\t\tconst durationMs =\n\t\t\t\"durationMs\" in event.payload.event && typeof event.payload.event.durationMs === \"number\"\n\t\t\t\t? event.payload.event.durationMs\n\t\t\t\t: null;\n\t\tconst isUserAttentionTool = isClineUserAttentionTool(toolName);\n\t\tinput.emitMessage(\n\t\t\ttaskId,\n\t\t\tfinishToolCallMessage(entry, taskId, {\n\t\t\t\ttoolName,\n\t\t\t\ttoolCallId,\n\t\t\t\toutput: toolOutput,\n\t\t\t\terror: toolError,\n\t\t\t\tdurationMs,\n\t\t\t}),\n\t\t);\n\t\tconst summaryPatch: Partial<RuntimeTaskSessionSummary> = {\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: toolError\n\t\t\t\t\t? toolName\n\t\t\t\t\t\t? `Failed ${toolName}`\n\t\t\t\t\t\t: \"Failed tool\"\n\t\t\t\t\t: toolName\n\t\t\t\t\t\t? `Completed ${toolName}`\n\t\t\t\t\t\t: \"Completed tool\",\n\t\t\t\ttoolName,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"tool_result\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t};\n\t\tif (isUserAttentionTool && canReturnToRunning(entry.summary.reviewReason)) {\n\t\t\tsummaryPatch.state = \"running\";\n\t\t\tsummaryPatch.reviewReason = null;\n\t\t}\n\t\temitSummary(input, summaryPatch);\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_end\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"text\"\n\t) {\n\t\tconst text =\n\t\t\t\"text\" in event.payload.event && typeof event.payload.event.text === \"string\"\n\t\t\t\t? event.payload.event.text\n\t\t\t\t: null;\n\t\tif (text) {\n\t\t\tconst message =\n\t\t\t\tsetOrCreateAssistantMessage(entry, taskId, text) ?? createAssistantMessage(entry, taskId, text);\n\t\t\tinput.emitMessage(taskId, message);\n\t\t}\n\t\tentry.activeAssistantMessageId = null;\n\t\temitSummary(input, {\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"chunk\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"stream\" in event.payload &&\n\t\tevent.payload.stream === \"agent\" &&\n\t\t\"chunk\" in event.payload &&\n\t\ttypeof event.payload.chunk === \"string\"\n\t) {\n\t\tconst chunk = event.payload.chunk;\n\t\tif (chunk.length === 0 || isLikelySerializedAgentEventChunk(chunk)) {\n\t\t\treturn;\n\t\t}\n\t\tinput.emitMessage(taskId, appendAssistantChunk(entry, taskId, chunk));\n\t\temitSummary(input, {\n\t\t\tstate: \"running\",\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: \"Agent active\",\n\t\t\t\ttoolName: null,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"assistant_delta\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"hook\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\"\n\t) {\n\t\tconst hookEventName =\n\t\t\t\"hookEventName\" in event.payload && typeof event.payload.hookEventName === \"string\"\n\t\t\t\t? event.payload.hookEventName\n\t\t\t\t: null;\n\t\tconst toolName =\n\t\t\t\"toolName\" in event.payload && typeof event.payload.toolName === \"string\"\n\t\t\t\t? event.payload.toolName\n\t\t\t\t: null;\n\t\tconst activityText = hookEventName && toolName ? `${hookEventName}: ${toolName}` : hookEventName;\n\t\temitSummary(input, {\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText,\n\t\t\t\ttoolName,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName,\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"ended\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"reason\" in event.payload &&\n\t\ttypeof event.payload.reason === \"string\"\n\t) {\n\t\tconst interrupted =\n\t\t\tevent.payload.reason.includes(\"abort\") || event.payload.reason.includes(\"interrupt\");\n\t\tif (interrupted && input.pendingTurnCancelTaskIds.has(taskId)) {\n\t\t\temitTurnCanceled(input);\n\t\t\treturn;\n\t\t}\n\t\tclearActiveTurnState(entry);\n\t\temitSummary(input, {\n\t\t\tstate: interrupted ? \"interrupted\" : \"awaiting_review\",\n\t\t\treviewReason: interrupted ? \"interrupted\" : \"exit\",\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"status\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"status\" in event.payload &&\n\t\ttypeof event.payload.status === \"string\"\n\t) {\n\t\tif (event.payload.status !== \"running\") {\n\t\t\tclearActiveTurnState(entry);\n\t\t}\n\t\temitSummary(input, {\n\t\t\tstate: event.payload.status === \"running\" ? \"running\" : entry.summary.state,\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t}\n}\n\nfunction emitSummary(input: ApplyClineSessionEventInput, patch: Partial<RuntimeTaskSessionSummary>): void {\n\tinput.emitSummary(updateSummary(input.entry, patch));\n}\n\nfunction emitTurnCanceled(input: ApplyClineSessionEventInput): void {\n\tinput.pendingTurnCancelTaskIds.delete(input.taskId);\n\tclearActiveTurnState(input.entry);\n\temitSummary(input, {\n\t\tstate: \"idle\",\n\t\treviewReason: null,\n\t\tlastOutputAt: now(),\n\t\tlastHookAt: now(),\n\t\tlatestHookActivity: {\n\t\t\tactivityText: \"Turn canceled\",\n\t\t\ttoolName: null,\n\t\t\tfinalMessage: null,\n\t\t\thookEventName: \"turn_canceled\",\n\t\t\tnotificationType: null,\n\t\t\tsource: \"cline-sdk\",\n\t\t},\n\t});\n}\n\nfunction isLikelySerializedAgentEventChunk(chunk: string): boolean {\n\tconst trimmed = chunk.trim();\n\tif (!trimmed) {\n\t\treturn false;\n\t}\n\tif (!(trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\"))) {\n\t\treturn false;\n\t}\n\ttry {\n\t\tconst parsed = JSON.parse(trimmed);\n\t\treturn Boolean(parsed && typeof parsed === \"object\" && \"type\" in parsed);\n\t} catch {\n\t\treturn false;\n\t}\n}\n"]}
1
+ {"version":3,"file":"cline-event-adapter.js","sourceRoot":"","sources":["../../src/cline-sdk/cline-event-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["// Translates raw SDK session events into Kanban summary and message mutations.\n// Keep protocol-specific parsing here so the runtime and repository can stay\n// focused on lifecycle, storage, and task-facing orchestration.\nimport type { RuntimeTaskSessionSummary } from \"../core/api-contract.js\";\nimport { formatClineToolCallLabel, getClineToolCallDisplay } from \"./cline-tool-call-display.js\";\nimport {\n\tappendAssistantChunk,\n\tappendReasoningChunk,\n\tcanReturnToRunning,\n\tclearActiveTurnState,\n\tcreateAssistantMessage,\n\tcreateMessage,\n\tcreateReasoningMessage,\n\tfinishToolCallMessage,\n\tisClineUserAttentionTool,\n\tlatestAssistantMessageMatches,\n\tnow,\n\tsetOrCreateAssistantMessage,\n\tsetOrCreateReasoningMessage,\n\tstartToolCallMessage,\n\ttype ClineTaskMessage,\n\ttype ClineTaskSessionEntry,\n\tupdateSummary,\n} from \"./cline-session-state.js\";\n\nexport interface ApplyClineSessionEventInput {\n\tevent: unknown;\n\ttaskId: string;\n\tentry: ClineTaskSessionEntry;\n\tpendingTurnCancelTaskIds: Set<string>;\n\temitSummary: (summary: RuntimeTaskSessionSummary) => void;\n\temitMessage: (taskId: string, message: ClineTaskMessage) => void;\n}\n\nfunction getRetainedClineToolActivity(entry: ClineTaskSessionEntry): {\n\ttoolName: string | null;\n\ttoolInputSummary: string | null;\n} {\n\tconst latestHookActivity = entry.summary.latestHookActivity;\n\tif (!latestHookActivity || latestHookActivity.source !== \"cline-sdk\" || !latestHookActivity.toolName) {\n\t\treturn {\n\t\t\ttoolName: null,\n\t\t\ttoolInputSummary: null,\n\t\t};\n\t}\n\n\treturn {\n\t\ttoolName: latestHookActivity.toolName,\n\t\ttoolInputSummary: latestHookActivity.toolInputSummary ?? null,\n\t};\n}\n\nexport function extractClineSessionId(event: unknown): string | null {\n\tif (!event || typeof event !== \"object\" || !(\"payload\" in event)) {\n\t\treturn null;\n\t}\n\tconst payload = event.payload;\n\tif (!payload || typeof payload !== \"object\" || !(\"sessionId\" in payload)) {\n\t\treturn null;\n\t}\n\treturn typeof payload.sessionId === \"string\" ? payload.sessionId : null;\n}\n\n// Translate raw SDK events into Kanban summary and chat mutations so the session service can stay focused on host ownership.\nexport function applyClineSessionEvent(input: ApplyClineSessionEventInput): void {\n\tconst { entry, event, taskId } = input;\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_start\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"text\"\n\t) {\n\t\tconst accumulated =\n\t\t\t\"accumulated\" in event.payload.event && typeof event.payload.event.accumulated === \"string\"\n\t\t\t\t? event.payload.event.accumulated\n\t\t\t\t: null;\n\t\tconst text =\n\t\t\t\"text\" in event.payload.event && typeof event.payload.event.text === \"string\"\n\t\t\t\t? event.payload.event.text\n\t\t\t\t: null;\n\t\tif (typeof accumulated === \"string\") {\n\t\t\tconst message =\n\t\t\t\tsetOrCreateAssistantMessage(entry, taskId, accumulated) ?? createAssistantMessage(entry, taskId, accumulated);\n\t\t\tinput.emitMessage(taskId, message);\n\t\t} else if (typeof text === \"string\" && text.length > 0) {\n\t\t\tinput.emitMessage(taskId, appendAssistantChunk(entry, taskId, text));\n\t\t}\n\t\tconst retainedToolActivity = getRetainedClineToolActivity(entry);\n\t\temitSummary(input, {\n\t\t\tstate: \"running\",\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: \"Agent active\",\n\t\t\t\ttoolName: retainedToolActivity.toolName,\n\t\t\t\ttoolInputSummary: retainedToolActivity.toolInputSummary,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"assistant_delta\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"done\"\n\t) {\n\t\tconst finalText =\n\t\t\t\"text\" in event.payload.event && typeof event.payload.event.text === \"string\"\n\t\t\t\t? event.payload.event.text.trim()\n\t\t\t\t: \"\";\n\t\tif (finalText) {\n\t\t\tconst message = setOrCreateAssistantMessage(entry, taskId, finalText);\n\t\t\tif (message) {\n\t\t\t\tinput.emitMessage(taskId, message);\n\t\t\t} else if (!latestAssistantMessageMatches(entry, finalText)) {\n\t\t\t\tconst assistantMessage = createMessage(taskId, \"assistant\", finalText);\n\t\t\t\tentry.messages.push(assistantMessage);\n\t\t\t\tinput.emitMessage(taskId, assistantMessage);\n\t\t\t}\n\t\t}\n\n\t\tconst doneReason =\n\t\t\t\"reason\" in event.payload.event && typeof event.payload.event.reason === \"string\"\n\t\t\t\t? event.payload.event.reason\n\t\t\t\t: \"completed\";\n\t\tif (doneReason === \"aborted\" && input.pendingTurnCancelTaskIds.has(taskId)) {\n\t\t\temitTurnCanceled(input);\n\t\t\treturn;\n\t\t}\n\n\t\tconst summaryPatch: Partial<RuntimeTaskSessionSummary> = {\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: finalText ? `Final: ${finalText}` : \"Waiting for review\",\n\t\t\t\ttoolName: null,\n\t\t\t\ttoolInputSummary: null,\n\t\t\t\tfinalMessage: finalText || null,\n\t\t\t\thookEventName: \"agent_end\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t};\n\t\tif (doneReason === \"aborted\") {\n\t\t\tsummaryPatch.state = \"interrupted\";\n\t\t\tsummaryPatch.reviewReason = \"interrupted\";\n\t\t} else if (doneReason === \"error\") {\n\t\t\tsummaryPatch.state = \"failed\";\n\t\t\tsummaryPatch.reviewReason = \"error\";\n\t\t} else {\n\t\t\tsummaryPatch.state = \"awaiting_review\";\n\t\t\tsummaryPatch.reviewReason = \"hook\";\n\t\t}\n\n\t\tclearActiveTurnState(entry);\n\t\temitSummary(input, summaryPatch);\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_start\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"reasoning\"\n\t) {\n\t\tconst reasoning =\n\t\t\t\"reasoning\" in event.payload.event && typeof event.payload.event.reasoning === \"string\"\n\t\t\t\t? event.payload.event.reasoning\n\t\t\t\t: null;\n\t\tif (reasoning && reasoning.length > 0) {\n\t\t\tinput.emitMessage(taskId, appendReasoningChunk(entry, taskId, reasoning));\n\t\t\temitSummary(input, {\n\t\t\t\tstate: \"running\",\n\t\t\t\tlastOutputAt: now(),\n\t\t\t});\n\t\t}\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_end\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"reasoning\"\n\t) {\n\t\tconst reasoning =\n\t\t\t\"reasoning\" in event.payload.event && typeof event.payload.event.reasoning === \"string\"\n\t\t\t\t? event.payload.event.reasoning\n\t\t\t\t: null;\n\t\tif (reasoning) {\n\t\t\tconst message =\n\t\t\t\tsetOrCreateReasoningMessage(entry, taskId, reasoning) ?? createReasoningMessage(entry, taskId, reasoning);\n\t\t\tinput.emitMessage(taskId, message);\n\t\t}\n\t\tentry.activeReasoningMessageId = null;\n\t\temitSummary(input, {\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_start\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"tool\"\n\t) {\n\t\tconst toolName =\n\t\t\t\"toolName\" in event.payload.event && typeof event.payload.event.toolName === \"string\"\n\t\t\t\t? event.payload.event.toolName\n\t\t\t\t: null;\n\t\tconst toolCallId =\n\t\t\t\"toolCallId\" in event.payload.event && typeof event.payload.event.toolCallId === \"string\"\n\t\t\t\t? event.payload.event.toolCallId\n\t\t\t\t: null;\n\t\tconst toolInput = \"input\" in event.payload.event ? event.payload.event.input : undefined;\n\t\tconst toolDisplay = getClineToolCallDisplay(toolName, toolInput);\n\t\tconst isUserAttentionTool = isClineUserAttentionTool(toolName);\n\t\tinput.emitMessage(\n\t\t\ttaskId,\n\t\t\tstartToolCallMessage(entry, taskId, {\n\t\t\t\ttoolName,\n\t\t\t\ttoolCallId,\n\t\t\t\tinput: toolInput,\n\t\t\t}),\n\t\t);\n\t\tconst summaryPatch: Partial<RuntimeTaskSessionSummary> = {\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: `Using ${formatClineToolCallLabel(toolDisplay.toolName, toolDisplay.inputSummary)}`,\n\t\t\t\ttoolName: toolDisplay.toolName,\n\t\t\t\ttoolInputSummary: toolDisplay.inputSummary,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"tool_call\",\n\t\t\t\tnotificationType: isUserAttentionTool ? \"user_attention\" : null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t};\n\t\tif (isUserAttentionTool && entry.summary.state === \"running\") {\n\t\t\tsummaryPatch.state = \"awaiting_review\";\n\t\t\tsummaryPatch.reviewReason = \"hook\";\n\t\t} else if (!isUserAttentionTool && canReturnToRunning(entry.summary.reviewReason)) {\n\t\t\tsummaryPatch.state = \"running\";\n\t\t\tsummaryPatch.reviewReason = null;\n\t\t}\n\t\temitSummary(input, summaryPatch);\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_end\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"tool\"\n\t) {\n\t\tconst toolName =\n\t\t\t\"toolName\" in event.payload.event && typeof event.payload.event.toolName === \"string\"\n\t\t\t\t? event.payload.event.toolName\n\t\t\t\t: null;\n\t\tconst toolCallId =\n\t\t\t\"toolCallId\" in event.payload.event && typeof event.payload.event.toolCallId === \"string\"\n\t\t\t\t? event.payload.event.toolCallId\n\t\t\t\t: null;\n\t\tconst toolOutput = \"output\" in event.payload.event ? event.payload.event.output : undefined;\n\t\tconst toolError =\n\t\t\t\"error\" in event.payload.event && typeof event.payload.event.error === \"string\"\n\t\t\t\t? event.payload.event.error\n\t\t\t\t: null;\n\t\tconst durationMs =\n\t\t\t\"durationMs\" in event.payload.event && typeof event.payload.event.durationMs === \"number\"\n\t\t\t\t? event.payload.event.durationMs\n\t\t\t\t: null;\n\t\tconst toolInput = toolCallId ? entry.toolInputByToolCallId.get(toolCallId) : undefined;\n\t\tconst toolDisplay = getClineToolCallDisplay(toolName, toolInput);\n\t\tconst isUserAttentionTool = isClineUserAttentionTool(toolName);\n\t\tinput.emitMessage(\n\t\t\ttaskId,\n\t\t\tfinishToolCallMessage(entry, taskId, {\n\t\t\t\ttoolName,\n\t\t\t\ttoolCallId,\n\t\t\t\toutput: toolOutput,\n\t\t\t\terror: toolError,\n\t\t\t\tdurationMs,\n\t\t\t}),\n\t\t);\n\t\tconst summaryPatch: Partial<RuntimeTaskSessionSummary> = {\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: `${toolError ? \"Failed\" : \"Completed\"} ${formatClineToolCallLabel(toolDisplay.toolName, toolDisplay.inputSummary)}`,\n\t\t\t\ttoolName: toolDisplay.toolName,\n\t\t\t\ttoolInputSummary: toolDisplay.inputSummary,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"tool_result\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t};\n\t\tif (isUserAttentionTool && canReturnToRunning(entry.summary.reviewReason)) {\n\t\t\tsummaryPatch.state = \"running\";\n\t\t\tsummaryPatch.reviewReason = null;\n\t\t}\n\t\temitSummary(input, summaryPatch);\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"agent_event\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"event\" in event.payload &&\n\t\tevent.payload.event &&\n\t\ttypeof event.payload.event === \"object\" &&\n\t\t\"type\" in event.payload.event &&\n\t\tevent.payload.event.type === \"content_end\" &&\n\t\t\"contentType\" in event.payload.event &&\n\t\tevent.payload.event.contentType === \"text\"\n\t) {\n\t\tconst text =\n\t\t\t\"text\" in event.payload.event && typeof event.payload.event.text === \"string\"\n\t\t\t\t? event.payload.event.text\n\t\t\t\t: null;\n\t\tif (text) {\n\t\t\tconst message =\n\t\t\t\tsetOrCreateAssistantMessage(entry, taskId, text) ?? createAssistantMessage(entry, taskId, text);\n\t\t\tinput.emitMessage(taskId, message);\n\t\t}\n\t\tentry.activeAssistantMessageId = null;\n\t\temitSummary(input, {\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"chunk\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"stream\" in event.payload &&\n\t\tevent.payload.stream === \"agent\" &&\n\t\t\"chunk\" in event.payload &&\n\t\ttypeof event.payload.chunk === \"string\"\n\t) {\n\t\tconst chunk = event.payload.chunk;\n\t\tif (chunk.length === 0 || isLikelySerializedAgentEventChunk(chunk)) {\n\t\t\treturn;\n\t\t}\n\t\tinput.emitMessage(taskId, appendAssistantChunk(entry, taskId, chunk));\n\t\tconst retainedToolActivity = getRetainedClineToolActivity(entry);\n\t\temitSummary(input, {\n\t\t\tstate: \"running\",\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: \"Agent active\",\n\t\t\t\ttoolName: retainedToolActivity.toolName,\n\t\t\t\ttoolInputSummary: retainedToolActivity.toolInputSummary,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"assistant_delta\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"hook\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\"\n\t) {\n\t\tconst hookEventName =\n\t\t\t\"hookEventName\" in event.payload && typeof event.payload.hookEventName === \"string\"\n\t\t\t\t? event.payload.hookEventName\n\t\t\t\t: null;\n\t\tconst toolName =\n\t\t\t\"toolName\" in event.payload && typeof event.payload.toolName === \"string\"\n\t\t\t\t? event.payload.toolName\n\t\t\t\t: null;\n\t\tconst activityText = hookEventName && toolName ? `${hookEventName}: ${toolName}` : hookEventName;\n\t\temitSummary(input, {\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText,\n\t\t\t\ttoolName,\n\t\t\t\ttoolInputSummary: null,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName,\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"ended\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"reason\" in event.payload &&\n\t\ttypeof event.payload.reason === \"string\"\n\t) {\n\t\tconst interrupted =\n\t\t\tevent.payload.reason.includes(\"abort\") || event.payload.reason.includes(\"interrupt\");\n\t\tif (interrupted && input.pendingTurnCancelTaskIds.has(taskId)) {\n\t\t\temitTurnCanceled(input);\n\t\t\treturn;\n\t\t}\n\t\tclearActiveTurnState(entry);\n\t\temitSummary(input, {\n\t\t\tstate: interrupted ? \"interrupted\" : \"awaiting_review\",\n\t\t\treviewReason: interrupted ? \"interrupted\" : \"exit\",\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\treturn;\n\t}\n\n\tif (\n\t\tevent &&\n\t\ttypeof event === \"object\" &&\n\t\t\"type\" in event &&\n\t\tevent.type === \"status\" &&\n\t\t\"payload\" in event &&\n\t\tevent.payload &&\n\t\ttypeof event.payload === \"object\" &&\n\t\t\"status\" in event.payload &&\n\t\ttypeof event.payload.status === \"string\"\n\t) {\n\t\tif (event.payload.status !== \"running\") {\n\t\t\tclearActiveTurnState(entry);\n\t\t}\n\t\temitSummary(input, {\n\t\t\tstate: event.payload.status === \"running\" ? \"running\" : entry.summary.state,\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t}\n}\n\nfunction emitSummary(input: ApplyClineSessionEventInput, patch: Partial<RuntimeTaskSessionSummary>): void {\n\tinput.emitSummary(updateSummary(input.entry, patch));\n}\n\nfunction emitTurnCanceled(input: ApplyClineSessionEventInput): void {\n\tinput.pendingTurnCancelTaskIds.delete(input.taskId);\n\tclearActiveTurnState(input.entry);\n\temitSummary(input, {\n\t\tstate: \"idle\",\n\t\treviewReason: null,\n\t\tlastOutputAt: now(),\n\t\tlastHookAt: now(),\n\t\tlatestHookActivity: {\n\t\t\tactivityText: \"Turn canceled\",\n\t\t\ttoolName: null,\n\t\t\ttoolInputSummary: null,\n\t\t\tfinalMessage: null,\n\t\t\thookEventName: \"turn_canceled\",\n\t\t\tnotificationType: null,\n\t\t\tsource: \"cline-sdk\",\n\t\t},\n\t});\n}\n\nfunction isLikelySerializedAgentEventChunk(chunk: string): boolean {\n\tconst trimmed = chunk.trim();\n\tif (!trimmed) {\n\t\treturn false;\n\t}\n\tif (!(trimmed.startsWith(\"{\") || trimmed.startsWith(\"[\"))) {\n\t\treturn false;\n\t}\n\ttry {\n\t\tconst parsed = JSON.parse(trimmed);\n\t\treturn Boolean(parsed && typeof parsed === \"object\" && \"type\" in parsed);\n\t} catch {\n\t\treturn false;\n\t}\n}\n"]}
@@ -52,6 +52,8 @@ export declare class InMemoryClineTaskSessionService implements ClineTaskSession
52
52
  dispose(): Promise<void>;
53
53
  private emitSummary;
54
54
  private emitMessage;
55
+ private shouldCaptureReviewCheckpoint;
56
+ private captureReviewCheckpoint;
55
57
  private handleTaskEvent;
56
58
  }
57
59
  export declare function createInMemoryClineTaskSessionService(options?: CreateInMemoryClineTaskSessionServiceOptions): ClineTaskSessionService;
@@ -1 +1 @@
1
- {"version":3,"file":"cline-task-session-service.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/cline-task-session-service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAGpG,OAAO,EAAE,KAAK,sBAAsB,EAAwC,MAAM,+BAA+B,CAAC;AAClH,OAAO,EACN,KAAK,mBAAmB,EACxB,KAAK,wCAAwC,EAE7C,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,KAAK,gBAAgB,EAUrB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,MAAM,WAAW,4BAA4B;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,uBAAuB;IACvC,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC9E,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACrF,gBAAgB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC5F,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAC3E,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAC5E,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAC1E,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAC9F,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI,CAAC;IAC7D,aAAa,IAAI,yBAAyB,EAAE,CAAC;IAC7C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;IACjD,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrE,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,GAAG,yBAAyB,GAAG,IAAI,CAAC;IAC7G,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,4CAA4C;IAC5D,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,wCAAwC,KAAK,mBAAmB,CAAC;IAClG,uBAAuB,CAAC,EAAE,MAAM,sBAAsB,CAAC;CACvD;AA2BD,qBAAa,+BAAgC,YAAW,uBAAuB;IAC9E,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAqB;IAC9D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IACrD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyB;gBAE/C,OAAO,GAAE,4CAAiD;IAWtE,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,GAAG,MAAM,IAAI;IAI7E,SAAS,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI;IAI9E,gBAAgB,CAAC,OAAO,EAAE,4BAA4B,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAuG3F,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAoB1E,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAiB3E,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IA8BzE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAuEnG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI;IAI5D,aAAa,IAAI,yBAAyB,EAAE;IAI5C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAI1C,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAM1E,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,GAAG,yBAAyB,GAAG,IAAI;IAStG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,eAAe;CAkBvB;AAED,wBAAgB,qCAAqC,CACpD,OAAO,GAAE,4CAAiD,GACxD,uBAAuB,CAEzB"}
1
+ {"version":3,"file":"cline-task-session-service.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/cline-task-session-service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
+ import { isHomeAgentSessionId } from "../core/home-agent-session.js";
1
2
  import { resolveHomeAgentAppendSystemPrompt } from "../prompts/append-system-prompt.js";
3
+ import { captureTaskTurnCheckpoint, deleteTaskTurnCheckpointRef } from "../workspace/turn-checkpoints.js";
2
4
  import { applyClineSessionEvent } from "./cline-event-adapter.js";
3
5
  import { createInMemoryClineMessageRepository } from "./cline-message-repository.js";
4
6
  import { createInMemoryClineSessionRuntime, } from "./cline-session-runtime.js";
@@ -83,6 +85,7 @@ export class InMemoryClineTaskSessionService {
83
85
  latestHookActivity: {
84
86
  activityText: "Agent active",
85
87
  toolName: null,
88
+ toolInputSummary: null,
86
89
  finalMessage: null,
87
90
  hookEventName: "turn_start",
88
91
  notificationType: null,
@@ -193,6 +196,7 @@ export class InMemoryClineTaskSessionService {
193
196
  latestHookActivity: {
194
197
  activityText: "Turn canceled",
195
198
  toolName: null,
199
+ toolInputSummary: null,
196
200
  finalMessage: null,
197
201
  hookEventName: "turn_canceled",
198
202
  notificationType: null,
@@ -227,6 +231,7 @@ export class InMemoryClineTaskSessionService {
227
231
  latestHookActivity: {
228
232
  activityText: "Agent active",
229
233
  toolName: null,
234
+ toolInputSummary: null,
230
235
  finalMessage: null,
231
236
  hookEventName: "turn_start",
232
237
  notificationType: null,
@@ -296,23 +301,62 @@ export class InMemoryClineTaskSessionService {
296
301
  emitMessage(taskId, message) {
297
302
  this.messageRepository.emitMessage(taskId, message);
298
303
  }
304
+ shouldCaptureReviewCheckpoint(previousSummary, nextSummary) {
305
+ if (!nextSummary) {
306
+ return false;
307
+ }
308
+ if (isHomeAgentSessionId(nextSummary.taskId) || !nextSummary.workspacePath) {
309
+ return false;
310
+ }
311
+ return previousSummary.state !== "awaiting_review" && nextSummary.state === "awaiting_review";
312
+ }
313
+ captureReviewCheckpoint(taskId, summary) {
314
+ const nextTurn = (summary.latestTurnCheckpoint?.turn ?? 0) + 1;
315
+ const staleRef = summary.previousTurnCheckpoint?.ref ?? null;
316
+ void captureTaskTurnCheckpoint({
317
+ cwd: summary.workspacePath ?? ".",
318
+ taskId,
319
+ turn: nextTurn,
320
+ })
321
+ .then((checkpoint) => {
322
+ this.applyTurnCheckpoint(taskId, checkpoint);
323
+ if (!staleRef) {
324
+ return;
325
+ }
326
+ void deleteTaskTurnCheckpointRef({
327
+ cwd: summary.workspacePath ?? ".",
328
+ ref: staleRef,
329
+ }).catch(() => {
330
+ // Best effort cleanup only.
331
+ });
332
+ })
333
+ .catch(() => {
334
+ // Best effort checkpointing only.
335
+ });
336
+ }
299
337
  handleTaskEvent(taskId, event) {
300
338
  const entry = this.messageRepository.getTaskEntry(taskId);
301
339
  if (!entry) {
302
340
  return;
303
341
  }
342
+ const previousSummary = cloneSummary(entry.summary);
343
+ let latestSummary = null;
304
344
  applyClineSessionEvent({
305
345
  event,
306
346
  taskId,
307
347
  entry,
308
348
  pendingTurnCancelTaskIds: this.pendingTurnCancelTaskIds,
309
349
  emitSummary: (summary) => {
350
+ latestSummary = summary;
310
351
  this.emitSummary(summary);
311
352
  },
312
353
  emitMessage: (taskIdFromEvent, message) => {
313
354
  this.emitMessage(taskIdFromEvent, message);
314
355
  },
315
356
  });
357
+ if (this.shouldCaptureReviewCheckpoint(previousSummary, latestSummary)) {
358
+ this.captureReviewCheckpoint(taskId, latestSummary);
359
+ }
316
360
  }
317
361
  }
318
362
  export function createInMemoryClineTaskSessionService(options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"cline-task-session-service.js","sourceRoot":"","sources":["../../src/cline-sdk/cline-task-session-service.ts"],"names":[],"mappings":"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","sourcesContent":["// Task-oriented facade for native Cline sessions.\n// runtime-api.ts uses this service to start sessions, send messages, load\n// history, and subscribe to summaries and chat events without knowing SDK\n// host, repository, or event-adapter details.\nimport type { RuntimeTaskSessionSummary, RuntimeTaskTurnCheckpoint } from \"../core/api-contract.js\";\nimport { resolveHomeAgentAppendSystemPrompt } from \"../prompts/append-system-prompt.js\";\nimport { applyClineSessionEvent } from \"./cline-event-adapter.js\";\nimport { type ClineMessageRepository, createInMemoryClineMessageRepository } from \"./cline-message-repository.js\";\nimport {\n\ttype ClineSessionRuntime,\n\ttype CreateInMemoryClineSessionRuntimeOptions,\n\tcreateInMemoryClineSessionRuntime,\n} from \"./cline-session-runtime.js\";\nimport {\n\ttype ClineTaskMessage,\n\ttype ClineTaskSessionEntry,\n\tclearActiveTurnState,\n\tcloneSummary,\n\tcreateAssistantMessage,\n\tcreateDefaultSummary,\n\tcreateMessage,\n\tnow,\n\tsetOrCreateAssistantMessage,\n\tupdateSummary,\n} from \"./cline-session-state.js\";\nimport { resolveClineSdkSystemPrompt } from \"./sdk-runtime-boundary.js\";\n\nexport type { ClineTaskMessage } from \"./cline-session-state.js\";\n\nexport interface StartClineTaskSessionRequest {\n\ttaskId: string;\n\tcwd: string;\n\tprompt: string;\n\tresumeFromTrash?: boolean;\n\tproviderId?: string | null;\n\tmodelId?: string | null;\n\tapiKey?: string | null;\n\tbaseUrl?: string | null;\n}\n\nexport interface ClineTaskSessionService {\n\tonSummary(listener: (summary: RuntimeTaskSessionSummary) => void): () => void;\n\tonMessage(listener: (taskId: string, message: ClineTaskMessage) => void): () => void;\n\tstartTaskSession(request: StartClineTaskSessionRequest): Promise<RuntimeTaskSessionSummary>;\n\tstopTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null>;\n\tabortTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null>;\n\tcancelTaskTurn(taskId: string): Promise<RuntimeTaskSessionSummary | null>;\n\tsendTaskSessionInput(taskId: string, text: string): Promise<RuntimeTaskSessionSummary | null>;\n\tgetSummary(taskId: string): RuntimeTaskSessionSummary | null;\n\tlistSummaries(): RuntimeTaskSessionSummary[];\n\tlistMessages(taskId: string): ClineTaskMessage[];\n\tloadTaskSessionMessages(taskId: string): Promise<ClineTaskMessage[]>;\n\tapplyTurnCheckpoint(taskId: string, checkpoint: RuntimeTaskTurnCheckpoint): RuntimeTaskSessionSummary | null;\n\tdispose(): Promise<void>;\n}\n\nexport interface CreateInMemoryClineTaskSessionServiceOptions {\n\tcreateSessionRuntime?: (options: CreateInMemoryClineSessionRuntimeOptions) => ClineSessionRuntime;\n\tcreateMessageRepository?: () => ClineMessageRepository;\n}\n\nfunction toErrorMessage(error: unknown): string {\n\tif (error instanceof Error) {\n\t\tconst message = error.message.trim();\n\t\tif (message.length > 0) {\n\t\t\treturn message;\n\t\t}\n\t}\n\treturn \"Unknown error\";\n}\n\nfunction readAgentResultText(result: unknown): string | null {\n\tif (!result || typeof result !== \"object\") {\n\t\treturn null;\n\t}\n\tif (!(\"text\" in result)) {\n\t\treturn null;\n\t}\n\tconst text = result.text;\n\tif (typeof text !== \"string\") {\n\t\treturn null;\n\t}\n\tconst normalized = text.trim();\n\treturn normalized.length > 0 ? normalized : null;\n}\n\nexport class InMemoryClineTaskSessionService implements ClineTaskSessionService {\n\tprivate readonly pendingTurnCancelTaskIds = new Set<string>();\n\tprivate readonly sessionRuntime: ClineSessionRuntime;\n\tprivate readonly messageRepository: ClineMessageRepository;\n\n\tconstructor(options: CreateInMemoryClineTaskSessionServiceOptions = {}) {\n\t\tconst createSessionRuntime = options.createSessionRuntime ?? createInMemoryClineSessionRuntime;\n\t\tconst createMessageRepository = options.createMessageRepository ?? createInMemoryClineMessageRepository;\n\t\tthis.sessionRuntime = createSessionRuntime({\n\t\t\tonTaskEvent: (taskId: string, event: unknown) => {\n\t\t\t\tthis.handleTaskEvent(taskId, event);\n\t\t\t},\n\t\t});\n\t\tthis.messageRepository = createMessageRepository();\n\t}\n\n\tonSummary(listener: (summary: RuntimeTaskSessionSummary) => void): () => void {\n\t\treturn this.messageRepository.onSummary(listener);\n\t}\n\n\tonMessage(listener: (taskId: string, message: ClineTaskMessage) => void): () => void {\n\t\treturn this.messageRepository.onMessage(listener);\n\t}\n\n\tasync startTaskSession(request: StartClineTaskSessionRequest): Promise<RuntimeTaskSessionSummary> {\n\t\tconst existing = this.messageRepository.getTaskEntry(request.taskId);\n\t\tif (existing && (existing.summary.state === \"running\" || existing.summary.state === \"awaiting_review\")) {\n\t\t\treturn cloneSummary(existing.summary);\n\t\t}\n\n\t\tconst providerId = request.providerId?.trim() || \"anthropic\";\n\t\tconst modelId = request.modelId?.trim() || \"claude-sonnet-4-6\";\n\n\t\tconst summary: RuntimeTaskSessionSummary = {\n\t\t\t...createDefaultSummary(request.taskId),\n\t\t\tstate: \"running\",\n\t\t\tworkspacePath: request.cwd,\n\t\t\tstartedAt: now(),\n\t\t\tlastOutputAt: now(),\n\t\t};\n\t\tconst entry: ClineTaskSessionEntry = {\n\t\t\tsummary,\n\t\t\tmessages: [],\n\t\t\tactiveAssistantMessageId: null,\n\t\t\tactiveReasoningMessageId: null,\n\t\t\ttoolMessageIdByToolCallId: new Map<string, string>(),\n\t\t\ttoolInputByToolCallId: new Map<string, unknown>(),\n\t\t};\n\t\tthis.messageRepository.setTaskEntry(request.taskId, entry);\n\t\tthis.pendingTurnCancelTaskIds.delete(request.taskId);\n\n\t\tif (!request.resumeFromTrash && request.prompt.trim().length > 0) {\n\t\t\tconst message = createMessage(request.taskId, \"user\", request.prompt.trim());\n\t\t\tentry.messages.push(message);\n\t\t\tthis.emitMessage(request.taskId, message);\n\t\t\tconst runningSummary = updateSummary(entry, {\n\t\t\t\tstate: \"running\",\n\t\t\t\treviewReason: null,\n\t\t\t\tlastOutputAt: now(),\n\t\t\t\tlastHookAt: now(),\n\t\t\t\tlatestHookActivity: {\n\t\t\t\t\tactivityText: \"Agent active\",\n\t\t\t\t\ttoolName: null,\n\t\t\t\t\tfinalMessage: null,\n\t\t\t\t\thookEventName: \"turn_start\",\n\t\t\t\t\tnotificationType: null,\n\t\t\t\t\tsource: \"cline-sdk\",\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis.emitSummary(runningSummary);\n\t\t}\n\t\tthis.emitSummary(summary);\n\n\t\tvoid (async () => {\n\t\t\tconst assistantCountBeforeStart = entry.messages.filter((message) => message.role === \"assistant\").length;\n\t\t\ttry {\n\t\t\t\tlet systemPrompt = await resolveClineSdkSystemPrompt({\n\t\t\t\t\tcwd: request.cwd,\n\t\t\t\t\tproviderId,\n\t\t\t\t});\n\t\t\t\tconst appendedSystemPrompt = resolveHomeAgentAppendSystemPrompt(request.taskId);\n\t\t\t\tif (appendedSystemPrompt) {\n\t\t\t\t\tsystemPrompt = `${systemPrompt}\\n\\n${appendedSystemPrompt}`;\n\t\t\t\t}\n\n\t\t\t\tconst startResult = await this.sessionRuntime.startTaskSession({\n\t\t\t\t\ttaskId: request.taskId,\n\t\t\t\t\tcwd: request.cwd,\n\t\t\t\t\tprompt: request.prompt,\n\t\t\t\t\tproviderId,\n\t\t\t\t\tmodelId,\n\t\t\t\t\tapiKey: request.apiKey,\n\t\t\t\t\tbaseUrl: request.baseUrl,\n\t\t\t\t\tsystemPrompt,\n\t\t\t\t});\n\n\t\t\t\tconst initialAgentText = readAgentResultText(startResult.result);\n\t\t\t\tif (initialAgentText) {\n\t\t\t\t\tconst assistantCountAfterStart = entry.messages.filter((message) => message.role === \"assistant\").length;\n\t\t\t\t\tif (assistantCountAfterStart > assistantCountBeforeStart) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst agentMessage =\n\t\t\t\t\t\tsetOrCreateAssistantMessage(entry, request.taskId, initialAgentText) ??\n\t\t\t\t\t\tcreateAssistantMessage(entry, request.taskId, initialAgentText);\n\t\t\t\t\tthis.emitMessage(request.taskId, agentMessage);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconst failedMessage = createMessage(\n\t\t\t\t\trequest.taskId,\n\t\t\t\t\t\"system\",\n\t\t\t\t\t`Cline SDK start failed: ${toErrorMessage(error)}.`,\n\t\t\t\t);\n\t\t\t\tentry.messages.push(failedMessage);\n\t\t\t\tthis.emitMessage(request.taskId, failedMessage);\n\t\t\t\tconst failedSummary = updateSummary(entry, {\n\t\t\t\t\tstate: \"failed\",\n\t\t\t\t\treviewReason: \"exit\",\n\t\t\t\t\tlastOutputAt: now(),\n\t\t\t\t});\n\t\t\t\tthis.emitSummary(failedSummary);\n\t\t\t}\n\t\t})();\n\n\t\treturn cloneSummary(summary);\n\t}\n\n\tasync stopTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.pendingTurnCancelTaskIds.delete(taskId);\n\t\tawait this.sessionRuntime.stopTaskSession(taskId).catch(() => null);\n\t\tif (entry.summary.state === \"idle\") {\n\t\t\treturn cloneSummary(entry.summary);\n\t\t}\n\t\tconst summary = updateSummary(entry, {\n\t\t\tstate: \"interrupted\",\n\t\t\treviewReason: \"interrupted\",\n\t\t\texitCode: null,\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tasync abortTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.pendingTurnCancelTaskIds.delete(taskId);\n\t\tawait this.sessionRuntime.abortTaskSession(taskId).catch(() => null);\n\t\tconst summary = updateSummary(entry, {\n\t\t\tstate: \"interrupted\",\n\t\t\treviewReason: \"interrupted\",\n\t\t\texitCode: null,\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tasync cancelTaskTurn(taskId: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn null;\n\t\t}\n\t\tif (entry.summary.state !== \"running\") {\n\t\t\treturn null;\n\t\t}\n\t\tthis.pendingTurnCancelTaskIds.add(taskId);\n\t\tawait this.sessionRuntime.abortTaskSession(taskId).catch(() => null);\n\t\tclearActiveTurnState(entry);\n\t\tconst summary = updateSummary(entry, {\n\t\t\tstate: \"idle\",\n\t\t\treviewReason: null,\n\t\t\texitCode: null,\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: \"Turn canceled\",\n\t\t\t\ttoolName: null,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"turn_canceled\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tasync sendTaskSessionInput(taskId: string, text: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn null;\n\t\t}\n\t\tif (\n\t\t\tentry.summary.state !== \"running\" &&\n\t\t\tentry.summary.state !== \"awaiting_review\" &&\n\t\t\tentry.summary.state !== \"idle\"\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.pendingTurnCancelTaskIds.delete(taskId);\n\t\tconst normalized = text.trim();\n\t\tif (normalized.length > 0) {\n\t\t\tconst message = createMessage(taskId, \"user\", normalized);\n\t\t\tentry.messages.push(message);\n\t\t\tthis.emitMessage(taskId, message);\n\t\t\tclearActiveTurnState(entry);\n\t\t\tconst waitingSummary = updateSummary(entry, {\n\t\t\t\tstate: \"running\",\n\t\t\t\treviewReason: null,\n\t\t\t\tlastOutputAt: now(),\n\t\t\t\tlastHookAt: now(),\n\t\t\t\tlatestHookActivity: {\n\t\t\t\t\tactivityText: \"Agent active\",\n\t\t\t\t\ttoolName: null,\n\t\t\t\t\tfinalMessage: null,\n\t\t\t\t\thookEventName: \"turn_start\",\n\t\t\t\t\tnotificationType: null,\n\t\t\t\t\tsource: \"cline-sdk\",\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis.emitSummary(waitingSummary);\n\t\t\tconst assistantCountBeforeSend = entry.messages.filter((message) => message.role === \"assistant\").length;\n\t\t\tvoid this.sessionRuntime\n\t\t\t\t.sendTaskSessionInput(taskId, normalized)\n\t\t\t\t.then((result: unknown) => {\n\t\t\t\t\tconst agentText = readAgentResultText(result);\n\t\t\t\t\tif (agentText) {\n\t\t\t\t\t\tconst assistantCountAfterSend = entry.messages.filter(\n\t\t\t\t\t\t\t(message) => message.role === \"assistant\",\n\t\t\t\t\t\t).length;\n\t\t\t\t\t\tif (assistantCountAfterSend > assistantCountBeforeSend) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst agentMessage =\n\t\t\t\t\t\t\tsetOrCreateAssistantMessage(entry, taskId, agentText) ??\n\t\t\t\t\t\t\tcreateAssistantMessage(entry, taskId, agentText);\n\t\t\t\t\t\tthis.emitMessage(taskId, agentMessage);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tconst systemMessage = createMessage(\n\t\t\t\t\t\ttaskId,\n\t\t\t\t\t\t\"system\",\n\t\t\t\t\t\t`Cline SDK send failed: ${toErrorMessage(error)}.`,\n\t\t\t\t\t);\n\t\t\t\t\tentry.messages.push(systemMessage);\n\t\t\t\t\tthis.emitMessage(taskId, systemMessage);\n\t\t\t\t});\n\t\t}\n\t\tconst summary = updateSummary(entry, {\n\t\t\tstate: \"running\",\n\t\t\treviewReason: null,\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tgetSummary(taskId: string): RuntimeTaskSessionSummary | null {\n\t\treturn this.messageRepository.getSummary(taskId);\n\t}\n\n\tlistSummaries(): RuntimeTaskSessionSummary[] {\n\t\treturn this.messageRepository.listSummaries();\n\t}\n\n\tlistMessages(taskId: string): ClineTaskMessage[] {\n\t\treturn this.messageRepository.listMessages(taskId);\n\t}\n\n\tasync loadTaskSessionMessages(taskId: string): Promise<ClineTaskMessage[]> {\n\t\treturn await this.messageRepository.hydrateTaskMessages(taskId, async () => {\n\t\t\treturn await this.sessionRuntime.readPersistedTaskSession(taskId);\n\t\t});\n\t}\n\n\tapplyTurnCheckpoint(taskId: string, checkpoint: RuntimeTaskTurnCheckpoint): RuntimeTaskSessionSummary | null {\n\t\tconst summary = this.messageRepository.applyTurnCheckpoint(taskId, checkpoint);\n\t\tif (!summary) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tasync dispose(): Promise<void> {\n\t\tawait this.sessionRuntime.dispose();\n\t\tthis.pendingTurnCancelTaskIds.clear();\n\t\tthis.messageRepository.dispose();\n\t}\n\n\tprivate emitSummary(summary: RuntimeTaskSessionSummary): void {\n\t\tthis.messageRepository.emitSummary(summary);\n\t}\n\n\tprivate emitMessage(taskId: string, message: ClineTaskMessage): void {\n\t\tthis.messageRepository.emitMessage(taskId, message);\n\t}\n\n\tprivate handleTaskEvent(taskId: string, event: unknown): void {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn;\n\t\t}\n\t\tapplyClineSessionEvent({\n\t\t\tevent,\n\t\t\ttaskId,\n\t\t\tentry,\n\t\t\tpendingTurnCancelTaskIds: this.pendingTurnCancelTaskIds,\n\t\t\temitSummary: (summary: RuntimeTaskSessionSummary) => {\n\t\t\t\tthis.emitSummary(summary);\n\t\t\t},\n\t\t\temitMessage: (taskIdFromEvent: string, message: ClineTaskMessage) => {\n\t\t\t\tthis.emitMessage(taskIdFromEvent, message);\n\t\t\t},\n\t\t});\n\t}\n}\n\nexport function createInMemoryClineTaskSessionService(\n\toptions: CreateInMemoryClineTaskSessionServiceOptions = {},\n): ClineTaskSessionService {\n\treturn new InMemoryClineTaskSessionService(options);\n}\n"]}
1
+ {"version":3,"file":"cline-task-session-service.js","sourceRoot":"","sources":["../../src/cline-sdk/cline-task-session-service.ts"],"names":[],"mappings":"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","sourcesContent":["// Task-oriented facade for native Cline sessions.\n// runtime-api.ts uses this service to start sessions, send messages, load\n// history, and subscribe to summaries and chat events without knowing SDK\n// host, repository, or event-adapter details.\nimport type { RuntimeTaskSessionSummary, RuntimeTaskTurnCheckpoint } from \"../core/api-contract.js\";\nimport { isHomeAgentSessionId } from \"../core/home-agent-session.js\";\nimport { resolveHomeAgentAppendSystemPrompt } from \"../prompts/append-system-prompt.js\";\nimport { captureTaskTurnCheckpoint, deleteTaskTurnCheckpointRef } from \"../workspace/turn-checkpoints.js\";\nimport { applyClineSessionEvent } from \"./cline-event-adapter.js\";\nimport { type ClineMessageRepository, createInMemoryClineMessageRepository } from \"./cline-message-repository.js\";\nimport {\n\ttype ClineSessionRuntime,\n\ttype CreateInMemoryClineSessionRuntimeOptions,\n\tcreateInMemoryClineSessionRuntime,\n} from \"./cline-session-runtime.js\";\nimport {\n\ttype ClineTaskMessage,\n\ttype ClineTaskSessionEntry,\n\tclearActiveTurnState,\n\tcloneSummary,\n\tcreateAssistantMessage,\n\tcreateDefaultSummary,\n\tcreateMessage,\n\tnow,\n\tsetOrCreateAssistantMessage,\n\tupdateSummary,\n} from \"./cline-session-state.js\";\nimport { resolveClineSdkSystemPrompt } from \"./sdk-runtime-boundary.js\";\n\nexport type { ClineTaskMessage } from \"./cline-session-state.js\";\n\nexport interface StartClineTaskSessionRequest {\n\ttaskId: string;\n\tcwd: string;\n\tprompt: string;\n\tresumeFromTrash?: boolean;\n\tproviderId?: string | null;\n\tmodelId?: string | null;\n\tapiKey?: string | null;\n\tbaseUrl?: string | null;\n}\n\nexport interface ClineTaskSessionService {\n\tonSummary(listener: (summary: RuntimeTaskSessionSummary) => void): () => void;\n\tonMessage(listener: (taskId: string, message: ClineTaskMessage) => void): () => void;\n\tstartTaskSession(request: StartClineTaskSessionRequest): Promise<RuntimeTaskSessionSummary>;\n\tstopTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null>;\n\tabortTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null>;\n\tcancelTaskTurn(taskId: string): Promise<RuntimeTaskSessionSummary | null>;\n\tsendTaskSessionInput(taskId: string, text: string): Promise<RuntimeTaskSessionSummary | null>;\n\tgetSummary(taskId: string): RuntimeTaskSessionSummary | null;\n\tlistSummaries(): RuntimeTaskSessionSummary[];\n\tlistMessages(taskId: string): ClineTaskMessage[];\n\tloadTaskSessionMessages(taskId: string): Promise<ClineTaskMessage[]>;\n\tapplyTurnCheckpoint(taskId: string, checkpoint: RuntimeTaskTurnCheckpoint): RuntimeTaskSessionSummary | null;\n\tdispose(): Promise<void>;\n}\n\nexport interface CreateInMemoryClineTaskSessionServiceOptions {\n\tcreateSessionRuntime?: (options: CreateInMemoryClineSessionRuntimeOptions) => ClineSessionRuntime;\n\tcreateMessageRepository?: () => ClineMessageRepository;\n}\n\nfunction toErrorMessage(error: unknown): string {\n\tif (error instanceof Error) {\n\t\tconst message = error.message.trim();\n\t\tif (message.length > 0) {\n\t\t\treturn message;\n\t\t}\n\t}\n\treturn \"Unknown error\";\n}\n\nfunction readAgentResultText(result: unknown): string | null {\n\tif (!result || typeof result !== \"object\") {\n\t\treturn null;\n\t}\n\tif (!(\"text\" in result)) {\n\t\treturn null;\n\t}\n\tconst text = result.text;\n\tif (typeof text !== \"string\") {\n\t\treturn null;\n\t}\n\tconst normalized = text.trim();\n\treturn normalized.length > 0 ? normalized : null;\n}\n\nexport class InMemoryClineTaskSessionService implements ClineTaskSessionService {\n\tprivate readonly pendingTurnCancelTaskIds = new Set<string>();\n\tprivate readonly sessionRuntime: ClineSessionRuntime;\n\tprivate readonly messageRepository: ClineMessageRepository;\n\n\tconstructor(options: CreateInMemoryClineTaskSessionServiceOptions = {}) {\n\t\tconst createSessionRuntime = options.createSessionRuntime ?? createInMemoryClineSessionRuntime;\n\t\tconst createMessageRepository = options.createMessageRepository ?? createInMemoryClineMessageRepository;\n\t\tthis.sessionRuntime = createSessionRuntime({\n\t\t\tonTaskEvent: (taskId: string, event: unknown) => {\n\t\t\t\tthis.handleTaskEvent(taskId, event);\n\t\t\t},\n\t\t});\n\t\tthis.messageRepository = createMessageRepository();\n\t}\n\n\tonSummary(listener: (summary: RuntimeTaskSessionSummary) => void): () => void {\n\t\treturn this.messageRepository.onSummary(listener);\n\t}\n\n\tonMessage(listener: (taskId: string, message: ClineTaskMessage) => void): () => void {\n\t\treturn this.messageRepository.onMessage(listener);\n\t}\n\n\tasync startTaskSession(request: StartClineTaskSessionRequest): Promise<RuntimeTaskSessionSummary> {\n\t\tconst existing = this.messageRepository.getTaskEntry(request.taskId);\n\t\tif (existing && (existing.summary.state === \"running\" || existing.summary.state === \"awaiting_review\")) {\n\t\t\treturn cloneSummary(existing.summary);\n\t\t}\n\n\t\tconst providerId = request.providerId?.trim() || \"anthropic\";\n\t\tconst modelId = request.modelId?.trim() || \"claude-sonnet-4-6\";\n\n\t\tconst summary: RuntimeTaskSessionSummary = {\n\t\t\t...createDefaultSummary(request.taskId),\n\t\t\tstate: \"running\",\n\t\t\tworkspacePath: request.cwd,\n\t\t\tstartedAt: now(),\n\t\t\tlastOutputAt: now(),\n\t\t};\n\t\tconst entry: ClineTaskSessionEntry = {\n\t\t\tsummary,\n\t\t\tmessages: [],\n\t\t\tactiveAssistantMessageId: null,\n\t\t\tactiveReasoningMessageId: null,\n\t\t\ttoolMessageIdByToolCallId: new Map<string, string>(),\n\t\t\ttoolInputByToolCallId: new Map<string, unknown>(),\n\t\t};\n\t\tthis.messageRepository.setTaskEntry(request.taskId, entry);\n\t\tthis.pendingTurnCancelTaskIds.delete(request.taskId);\n\n\t\tif (!request.resumeFromTrash && request.prompt.trim().length > 0) {\n\t\t\tconst message = createMessage(request.taskId, \"user\", request.prompt.trim());\n\t\t\tentry.messages.push(message);\n\t\t\tthis.emitMessage(request.taskId, message);\n\t\t\tconst runningSummary = updateSummary(entry, {\n\t\t\t\tstate: \"running\",\n\t\t\t\treviewReason: null,\n\t\t\t\tlastOutputAt: now(),\n\t\t\t\tlastHookAt: now(),\n\t\t\t\tlatestHookActivity: {\n\t\t\t\t\tactivityText: \"Agent active\",\n\t\t\t\t\ttoolName: null,\n\t\t\t\t\ttoolInputSummary: null,\n\t\t\t\t\tfinalMessage: null,\n\t\t\t\t\thookEventName: \"turn_start\",\n\t\t\t\t\tnotificationType: null,\n\t\t\t\t\tsource: \"cline-sdk\",\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis.emitSummary(runningSummary);\n\t\t}\n\t\tthis.emitSummary(summary);\n\n\t\tvoid (async () => {\n\t\t\tconst assistantCountBeforeStart = entry.messages.filter((message) => message.role === \"assistant\").length;\n\t\t\ttry {\n\t\t\t\tlet systemPrompt = await resolveClineSdkSystemPrompt({\n\t\t\t\t\tcwd: request.cwd,\n\t\t\t\t\tproviderId,\n\t\t\t\t});\n\t\t\t\tconst appendedSystemPrompt = resolveHomeAgentAppendSystemPrompt(request.taskId);\n\t\t\t\tif (appendedSystemPrompt) {\n\t\t\t\t\tsystemPrompt = `${systemPrompt}\\n\\n${appendedSystemPrompt}`;\n\t\t\t\t}\n\n\t\t\t\tconst startResult = await this.sessionRuntime.startTaskSession({\n\t\t\t\t\ttaskId: request.taskId,\n\t\t\t\t\tcwd: request.cwd,\n\t\t\t\t\tprompt: request.prompt,\n\t\t\t\t\tproviderId,\n\t\t\t\t\tmodelId,\n\t\t\t\t\tapiKey: request.apiKey,\n\t\t\t\t\tbaseUrl: request.baseUrl,\n\t\t\t\t\tsystemPrompt,\n\t\t\t\t});\n\n\t\t\t\tconst initialAgentText = readAgentResultText(startResult.result);\n\t\t\t\tif (initialAgentText) {\n\t\t\t\t\tconst assistantCountAfterStart = entry.messages.filter((message) => message.role === \"assistant\").length;\n\t\t\t\t\tif (assistantCountAfterStart > assistantCountBeforeStart) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst agentMessage =\n\t\t\t\t\t\tsetOrCreateAssistantMessage(entry, request.taskId, initialAgentText) ??\n\t\t\t\t\t\tcreateAssistantMessage(entry, request.taskId, initialAgentText);\n\t\t\t\t\tthis.emitMessage(request.taskId, agentMessage);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconst failedMessage = createMessage(\n\t\t\t\t\trequest.taskId,\n\t\t\t\t\t\"system\",\n\t\t\t\t\t`Cline SDK start failed: ${toErrorMessage(error)}.`,\n\t\t\t\t);\n\t\t\t\tentry.messages.push(failedMessage);\n\t\t\t\tthis.emitMessage(request.taskId, failedMessage);\n\t\t\t\tconst failedSummary = updateSummary(entry, {\n\t\t\t\t\tstate: \"failed\",\n\t\t\t\t\treviewReason: \"exit\",\n\t\t\t\t\tlastOutputAt: now(),\n\t\t\t\t});\n\t\t\t\tthis.emitSummary(failedSummary);\n\t\t\t}\n\t\t})();\n\n\t\treturn cloneSummary(summary);\n\t}\n\n\tasync stopTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.pendingTurnCancelTaskIds.delete(taskId);\n\t\tawait this.sessionRuntime.stopTaskSession(taskId).catch(() => null);\n\t\tif (entry.summary.state === \"idle\") {\n\t\t\treturn cloneSummary(entry.summary);\n\t\t}\n\t\tconst summary = updateSummary(entry, {\n\t\t\tstate: \"interrupted\",\n\t\t\treviewReason: \"interrupted\",\n\t\t\texitCode: null,\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tasync abortTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.pendingTurnCancelTaskIds.delete(taskId);\n\t\tawait this.sessionRuntime.abortTaskSession(taskId).catch(() => null);\n\t\tconst summary = updateSummary(entry, {\n\t\t\tstate: \"interrupted\",\n\t\t\treviewReason: \"interrupted\",\n\t\t\texitCode: null,\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tasync cancelTaskTurn(taskId: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn null;\n\t\t}\n\t\tif (entry.summary.state !== \"running\") {\n\t\t\treturn null;\n\t\t}\n\t\tthis.pendingTurnCancelTaskIds.add(taskId);\n\t\tawait this.sessionRuntime.abortTaskSession(taskId).catch(() => null);\n\t\tclearActiveTurnState(entry);\n\t\tconst summary = updateSummary(entry, {\n\t\t\tstate: \"idle\",\n\t\t\treviewReason: null,\n\t\t\texitCode: null,\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: \"Turn canceled\",\n\t\t\t\ttoolName: null,\n\t\t\t\ttoolInputSummary: null,\n\t\t\t\tfinalMessage: null,\n\t\t\t\thookEventName: \"turn_canceled\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tasync sendTaskSessionInput(taskId: string, text: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn null;\n\t\t}\n\t\tif (\n\t\t\tentry.summary.state !== \"running\" &&\n\t\t\tentry.summary.state !== \"awaiting_review\" &&\n\t\t\tentry.summary.state !== \"idle\"\n\t\t) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.pendingTurnCancelTaskIds.delete(taskId);\n\t\tconst normalized = text.trim();\n\t\tif (normalized.length > 0) {\n\t\t\tconst message = createMessage(taskId, \"user\", normalized);\n\t\t\tentry.messages.push(message);\n\t\t\tthis.emitMessage(taskId, message);\n\t\t\tclearActiveTurnState(entry);\n\t\t\tconst waitingSummary = updateSummary(entry, {\n\t\t\t\tstate: \"running\",\n\t\t\t\treviewReason: null,\n\t\t\t\tlastOutputAt: now(),\n\t\t\t\tlastHookAt: now(),\n\t\t\t\tlatestHookActivity: {\n\t\t\t\t\tactivityText: \"Agent active\",\n\t\t\t\t\ttoolName: null,\n\t\t\t\t\ttoolInputSummary: null,\n\t\t\t\t\tfinalMessage: null,\n\t\t\t\t\thookEventName: \"turn_start\",\n\t\t\t\t\tnotificationType: null,\n\t\t\t\t\tsource: \"cline-sdk\",\n\t\t\t\t},\n\t\t\t});\n\t\t\tthis.emitSummary(waitingSummary);\n\t\t\tconst assistantCountBeforeSend = entry.messages.filter((message) => message.role === \"assistant\").length;\n\t\t\tvoid this.sessionRuntime\n\t\t\t\t.sendTaskSessionInput(taskId, normalized)\n\t\t\t\t.then((result: unknown) => {\n\t\t\t\t\tconst agentText = readAgentResultText(result);\n\t\t\t\t\tif (agentText) {\n\t\t\t\t\t\tconst assistantCountAfterSend = entry.messages.filter(\n\t\t\t\t\t\t\t(message) => message.role === \"assistant\",\n\t\t\t\t\t\t).length;\n\t\t\t\t\t\tif (assistantCountAfterSend > assistantCountBeforeSend) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst agentMessage =\n\t\t\t\t\t\t\tsetOrCreateAssistantMessage(entry, taskId, agentText) ??\n\t\t\t\t\t\t\tcreateAssistantMessage(entry, taskId, agentText);\n\t\t\t\t\t\tthis.emitMessage(taskId, agentMessage);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch((error: unknown) => {\n\t\t\t\t\tconst systemMessage = createMessage(\n\t\t\t\t\t\ttaskId,\n\t\t\t\t\t\t\"system\",\n\t\t\t\t\t\t`Cline SDK send failed: ${toErrorMessage(error)}.`,\n\t\t\t\t\t);\n\t\t\t\t\tentry.messages.push(systemMessage);\n\t\t\t\t\tthis.emitMessage(taskId, systemMessage);\n\t\t\t\t});\n\t\t}\n\t\tconst summary = updateSummary(entry, {\n\t\t\tstate: \"running\",\n\t\t\treviewReason: null,\n\t\t\tlastOutputAt: now(),\n\t\t});\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tgetSummary(taskId: string): RuntimeTaskSessionSummary | null {\n\t\treturn this.messageRepository.getSummary(taskId);\n\t}\n\n\tlistSummaries(): RuntimeTaskSessionSummary[] {\n\t\treturn this.messageRepository.listSummaries();\n\t}\n\n\tlistMessages(taskId: string): ClineTaskMessage[] {\n\t\treturn this.messageRepository.listMessages(taskId);\n\t}\n\n\tasync loadTaskSessionMessages(taskId: string): Promise<ClineTaskMessage[]> {\n\t\treturn await this.messageRepository.hydrateTaskMessages(taskId, async () => {\n\t\t\treturn await this.sessionRuntime.readPersistedTaskSession(taskId);\n\t\t});\n\t}\n\n\tapplyTurnCheckpoint(taskId: string, checkpoint: RuntimeTaskTurnCheckpoint): RuntimeTaskSessionSummary | null {\n\t\tconst summary = this.messageRepository.applyTurnCheckpoint(taskId, checkpoint);\n\t\tif (!summary) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.emitSummary(summary);\n\t\treturn summary;\n\t}\n\n\tasync dispose(): Promise<void> {\n\t\tawait this.sessionRuntime.dispose();\n\t\tthis.pendingTurnCancelTaskIds.clear();\n\t\tthis.messageRepository.dispose();\n\t}\n\n\tprivate emitSummary(summary: RuntimeTaskSessionSummary): void {\n\t\tthis.messageRepository.emitSummary(summary);\n\t}\n\n\tprivate emitMessage(taskId: string, message: ClineTaskMessage): void {\n\t\tthis.messageRepository.emitMessage(taskId, message);\n\t}\n\n\tprivate shouldCaptureReviewCheckpoint(\n\t\tpreviousSummary: RuntimeTaskSessionSummary,\n\t\tnextSummary: RuntimeTaskSessionSummary | null,\n\t): nextSummary is RuntimeTaskSessionSummary {\n\t\tif (!nextSummary) {\n\t\t\treturn false;\n\t\t}\n\t\tif (isHomeAgentSessionId(nextSummary.taskId) || !nextSummary.workspacePath) {\n\t\t\treturn false;\n\t\t}\n\t\treturn previousSummary.state !== \"awaiting_review\" && nextSummary.state === \"awaiting_review\";\n\t}\n\n\tprivate captureReviewCheckpoint(taskId: string, summary: RuntimeTaskSessionSummary): void {\n\t\tconst nextTurn = (summary.latestTurnCheckpoint?.turn ?? 0) + 1;\n\t\tconst staleRef = summary.previousTurnCheckpoint?.ref ?? null;\n\t\tvoid captureTaskTurnCheckpoint({\n\t\t\tcwd: summary.workspacePath ?? \".\",\n\t\t\ttaskId,\n\t\t\tturn: nextTurn,\n\t\t})\n\t\t\t.then((checkpoint) => {\n\t\t\t\tthis.applyTurnCheckpoint(taskId, checkpoint);\n\t\t\t\tif (!staleRef) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvoid deleteTaskTurnCheckpointRef({\n\t\t\t\t\tcwd: summary.workspacePath ?? \".\",\n\t\t\t\t\tref: staleRef,\n\t\t\t\t}).catch(() => {\n\t\t\t\t\t// Best effort cleanup only.\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\t// Best effort checkpointing only.\n\t\t\t});\n\t}\n\n\tprivate handleTaskEvent(taskId: string, event: unknown): void {\n\t\tconst entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\treturn;\n\t\t}\n\t\tconst previousSummary = cloneSummary(entry.summary);\n\t\tlet latestSummary: RuntimeTaskSessionSummary | null = null;\n\t\tapplyClineSessionEvent({\n\t\t\tevent,\n\t\t\ttaskId,\n\t\t\tentry,\n\t\t\tpendingTurnCancelTaskIds: this.pendingTurnCancelTaskIds,\n\t\t\temitSummary: (summary: RuntimeTaskSessionSummary) => {\n\t\t\t\tlatestSummary = summary;\n\t\t\t\tthis.emitSummary(summary);\n\t\t\t},\n\t\t\temitMessage: (taskIdFromEvent: string, message: ClineTaskMessage) => {\n\t\t\t\tthis.emitMessage(taskIdFromEvent, message);\n\t\t\t},\n\t\t});\n\t\tif (this.shouldCaptureReviewCheckpoint(previousSummary, latestSummary)) {\n\t\t\tthis.captureReviewCheckpoint(taskId, latestSummary);\n\t\t}\n\t}\n}\n\nexport function createInMemoryClineTaskSessionService(\n\toptions: CreateInMemoryClineTaskSessionServiceOptions = {},\n): ClineTaskSessionService {\n\treturn new InMemoryClineTaskSessionService(options);\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export interface ClineToolCallDisplay {
2
+ toolName: string;
3
+ inputSummary: string | null;
4
+ }
5
+ export declare function getClineToolCallDisplay(toolName: string | null | undefined, input: unknown): ClineToolCallDisplay;
6
+ export declare function formatClineToolCallLabel(toolName: string | null | undefined, inputSummary: string | null | undefined): string;
7
+ //# sourceMappingURL=cline-tool-call-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cline-tool-call-display.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/cline-tool-call-display.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA6ID,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAQjH;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAI7H"}