kanban 0.1.31 → 0.1.32

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 (51) hide show
  1. package/dist/cline-sdk/cline-task-session-service.d.ts.map +1 -1
  2. package/dist/cline-sdk/cline-task-session-service.js +11 -2
  3. package/dist/cline-sdk/cline-task-session-service.js.map +1 -1
  4. package/dist/commands/task.d.ts.map +1 -1
  5. package/dist/commands/task.js +176 -142
  6. package/dist/commands/task.js.map +1 -1
  7. package/dist/core/api-contract.d.ts +6 -0
  8. package/dist/core/api-contract.d.ts.map +1 -1
  9. package/dist/core/api-contract.js +5 -0
  10. package/dist/core/api-contract.js.map +1 -1
  11. package/dist/core/api-validation.d.ts.map +1 -1
  12. package/dist/core/api-validation.js +1 -0
  13. package/dist/core/api-validation.js.map +1 -1
  14. package/dist/fs/locked-file-system.d.ts.map +1 -1
  15. package/dist/fs/locked-file-system.js +14 -14
  16. package/dist/fs/locked-file-system.js.map +1 -1
  17. package/dist/prompts/append-system-prompt.d.ts.map +1 -1
  18. package/dist/prompts/append-system-prompt.js +4 -0
  19. package/dist/prompts/append-system-prompt.js.map +1 -1
  20. package/dist/state/workspace-state.d.ts +14 -1
  21. package/dist/state/workspace-state.d.ts.map +1 -1
  22. package/dist/state/workspace-state.js +42 -0
  23. package/dist/state/workspace-state.js.map +1 -1
  24. package/dist/terminal/claude-workspace-trust.d.ts.map +1 -1
  25. package/dist/terminal/claude-workspace-trust.js +2 -4
  26. package/dist/terminal/claude-workspace-trust.js.map +1 -1
  27. package/dist/trpc/app-router.d.ts +11 -1
  28. package/dist/trpc/app-router.d.ts.map +1 -1
  29. package/dist/trpc/app-router.js +6 -1
  30. package/dist/trpc/app-router.js.map +1 -1
  31. package/dist/trpc/projects-api.d.ts.map +1 -1
  32. package/dist/trpc/projects-api.js +8 -0
  33. package/dist/trpc/projects-api.js.map +1 -1
  34. package/dist/trpc/workspace-api.d.ts.map +1 -1
  35. package/dist/trpc/workspace-api.js +7 -0
  36. package/dist/trpc/workspace-api.js.map +1 -1
  37. package/dist/web-ui/assets/index-BMX-aVkC.js +39201 -0
  38. package/dist/web-ui/index.html +1 -1
  39. package/dist/workspace/task-worktree-path.d.ts +2 -1
  40. package/dist/workspace/task-worktree-path.d.ts.map +1 -1
  41. package/dist/workspace/task-worktree-path.js +2 -1
  42. package/dist/workspace/task-worktree-path.js.map +1 -1
  43. package/dist/workspace/task-worktree-turbopack.d.ts +8 -0
  44. package/dist/workspace/task-worktree-turbopack.d.ts.map +1 -0
  45. package/dist/workspace/task-worktree-turbopack.js +180 -0
  46. package/dist/workspace/task-worktree-turbopack.js.map +1 -0
  47. package/dist/workspace/task-worktree.d.ts.map +1 -1
  48. package/dist/workspace/task-worktree.js +22 -6
  49. package/dist/workspace/task-worktree.js.map +1 -1
  50. package/package.json +1 -1
  51. package/dist/web-ui/assets/index-44lk2Yiz.js +0 -33815
@@ -1 +1 @@
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
+ {"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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"}
@@ -190,9 +190,18 @@ export class InMemoryClineTaskSessionService {
190
190
  return cloneSummary(summary);
191
191
  }
192
192
  async stopTaskSession(taskId) {
193
- const entry = this.messageRepository.getTaskEntry(taskId);
193
+ let entry = this.messageRepository.getTaskEntry(taskId);
194
194
  if (!entry) {
195
- return null;
195
+ // Runtime restarts can clear in-memory task entries while the SDK still has a persisted
196
+ // session for this task. Rebind first so stop() can target that recovered session id.
197
+ const reboundSummary = await this.rebindPersistedTaskSession(taskId);
198
+ if (!reboundSummary) {
199
+ return null;
200
+ }
201
+ entry = this.messageRepository.getTaskEntry(taskId);
202
+ if (!entry) {
203
+ return reboundSummary;
204
+ }
196
205
  }
197
206
  this.pendingTurnCancelTaskIds.delete(taskId);
198
207
  await this.sessionRuntime.stopTaskSession(taskId).catch(() => null);
@@ -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 {\n\tRuntimeTaskImage,\n\tRuntimeTaskSessionMode,\n\tRuntimeTaskSessionSummary,\n\tRuntimeTaskTurnCheckpoint,\n} 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 {\n\ttype ClineMessageRepository,\n\tcreateInMemoryClineMessageRepository,\n\tcreateTaskEntryFromPersistedSession,\n} from \"./cline-message-repository.js\";\nimport { type ClineRuntimeSetup, createClineRuntimeSetup } from \"./cline-runtime-setup.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\timages?: RuntimeTaskImage[];\n\tresumeFromTrash?: boolean;\n\tproviderId?: string | null;\n\tmodelId?: string | null;\n\tmode?: RuntimeTaskSessionMode;\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(\n\t\ttaskId: string,\n\t\ttext: string,\n\t\tmode?: RuntimeTaskSessionMode,\n\t\timages?: RuntimeTaskImage[],\n\t): Promise<RuntimeTaskSessionSummary | null>;\n\trebindPersistedTaskSession(taskId: 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\tcreateRuntimeSetup?: (workspacePath: string) => Promise<ClineRuntimeSetup>;\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\nfunction formatStartWarnings(warnings: readonly string[] | undefined): string | null {\n\tif (!warnings) {\n\t\treturn null;\n\t}\n\tconst normalized = warnings.map((warning) => warning.trim()).filter((warning) => warning.length > 0);\n\tif (normalized.length === 0) {\n\t\treturn null;\n\t}\n\tif (normalized.length === 1) {\n\t\treturn normalized[0] ?? null;\n\t}\n\treturn `${normalized[0]} (+${normalized.length - 1} more MCP warning${normalized.length === 2 ? \"\" : \"s\"})`;\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\tprivate readonly createRuntimeSetup: (workspacePath: string) => Promise<ClineRuntimeSetup>;\n\tprivate readonly runtimeSetupByWorkspacePath = new Map<string, Promise<ClineRuntimeSetup>>();\n\n\tconstructor(options: CreateInMemoryClineTaskSessionServiceOptions = {}) {\n\t\tconst createSessionRuntime = options.createSessionRuntime ?? createInMemoryClineSessionRuntime;\n\t\tconst createMessageRepository = options.createMessageRepository ?? createInMemoryClineMessageRepository;\n\t\tthis.createRuntimeSetup = options.createRuntimeSetup ?? createClineRuntimeSetup;\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\tprivate emitTaskFailure(\n\t\ttaskId: string,\n\t\tentry: ClineTaskSessionEntry,\n\t\tcontext: \"start\" | \"send\",\n\t\terror: unknown,\n\t): void {\n\t\tconst errorMessage = toErrorMessage(error);\n\t\tconst systemMessage = createMessage(taskId, \"system\", `Cline SDK ${context} failed: ${errorMessage}.`);\n\t\tentry.messages.push(systemMessage);\n\t\tthis.emitMessage(taskId, systemMessage);\n\t\tclearActiveTurnState(entry);\n\t\tconst failedSummary = updateSummary(entry, {\n\t\t\tstate: \"failed\",\n\t\t\treviewReason: \"error\",\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: `${context === \"start\" ? \"Start\" : \"Send\"} failed: ${errorMessage}`,\n\t\t\t\ttoolName: null,\n\t\t\t\ttoolInputSummary: null,\n\t\t\t\tfinalMessage: errorMessage,\n\t\t\t\thookEventName: \"agent_error\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\tthis.emitSummary(failedSummary);\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: request.resumeFromTrash ? \"awaiting_review\" : \"running\",\n\t\t\tworkspacePath: request.cwd,\n\t\t\tstartedAt: now(),\n\t\t\tlastOutputAt: now(),\n\t\t\treviewReason: request.resumeFromTrash ? \"attention\" : null,\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\tconst normalizedPrompt = request.prompt.trim();\n\t\tconst hasRequestImages = Boolean(request.images && request.images.length > 0);\n\n\t\tif (!request.resumeFromTrash && (normalizedPrompt.length > 0 || hasRequestImages)) {\n\t\t\tconst message = createMessage(request.taskId, \"user\", normalizedPrompt, request.images);\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\tconst runtimeSetup = await this.ensureRuntimeSetup(request.cwd);\n\t\t\t\tconst runtimePrompt = runtimeSetup.resolvePrompt(request.prompt);\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\trules: runtimeSetup.loadRules(),\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: runtimePrompt,\n\t\t\t\t\timages: request.images,\n\t\t\t\t\tproviderId,\n\t\t\t\t\tmodelId,\n\t\t\t\t\tmode: request.mode,\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\tuserInstructionWatcher: runtimeSetup.watcher,\n\t\t\t\t\trequestToolApproval: runtimeSetup.requestToolApproval,\n\t\t\t\t});\n\t\t\t\tconst warningMessage = formatStartWarnings(startResult.warnings);\n\t\t\t\tif (warningMessage) {\n\t\t\t\t\tthis.emitSummary(\n\t\t\t\t\t\tupdateSummary(entry, {\n\t\t\t\t\t\t\twarningMessage,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\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\tthis.emitTaskFailure(request.taskId, entry, \"start\", error);\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(\n\t\ttaskId: string,\n\t\ttext: string,\n\t\tmode?: RuntimeTaskSessionMode,\n\t\timages?: RuntimeTaskImage[],\n\t): 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\tconst hasImages = Boolean(images && images.length > 0);\n\t\tif (normalized.length === 0 && !hasImages) {\n\t\t\treturn null;\n\t\t}\n\t\t{\n\t\t\tconst message = createMessage(taskId, \"user\", normalized, images);\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.ensureRuntimeSetup(entry.summary.workspacePath ?? \"\")\n\t\t\t\t.then((runtimeSetup) =>\n\t\t\t\t\tthis.sessionRuntime.sendTaskSessionInput(taskId, runtimeSetup.resolvePrompt(normalized), mode, images),\n\t\t\t\t)\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\tthis.emitTaskFailure(taskId, entry, \"send\", error);\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\tasync rebindPersistedTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst existingEntry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (existingEntry) {\n\t\t\treturn cloneSummary(existingEntry.summary);\n\t\t}\n\t\tconst snapshot = await this.sessionRuntime.resumeTaskSession(taskId);\n\t\tif (!snapshot) {\n\t\t\treturn null;\n\t\t}\n\t\tconst startedAt = Date.parse(snapshot.record.startedAt);\n\t\tconst updatedAt = Date.parse(snapshot.record.updatedAt || snapshot.record.startedAt);\n\t\tconst persistedCwd = typeof snapshot.record.cwd === \"string\" ? snapshot.record.cwd.trim() : \"\";\n\t\tconst persistedWorkspaceRoot =\n\t\t\ttypeof snapshot.record.workspaceRoot === \"string\" ? snapshot.record.workspaceRoot.trim() : \"\";\n\t\tconst entry = createTaskEntryFromPersistedSession(taskId, snapshot.messages, {\n\t\t\tagentId: \"cline\",\n\t\t\tstate: \"awaiting_review\",\n\t\t\treviewReason: \"attention\",\n\t\t\tworkspacePath: persistedCwd || persistedWorkspaceRoot || null,\n\t\t\tstartedAt: Number.isFinite(startedAt) ? startedAt : null,\n\t\t\tlastOutputAt: Number.isFinite(updatedAt) ? updatedAt : null,\n\t\t});\n\t\tthis.messageRepository.setTaskEntry(taskId, entry);\n\t\treturn cloneSummary(entry.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\tfor (const setupPromise of this.runtimeSetupByWorkspacePath.values()) {\n\t\t\ttry {\n\t\t\t\tconst setup = await setupPromise;\n\t\t\t\tawait setup.dispose();\n\t\t\t} catch {\n\t\t\t\t// Ignore runtime setup disposal failures.\n\t\t\t}\n\t\t}\n\t\tthis.runtimeSetupByWorkspacePath.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 async ensureRuntimeSetup(workspacePath: string): Promise<ClineRuntimeSetup> {\n\t\tconst normalizedWorkspacePath = workspacePath.trim();\n\t\tlet setupPromise = this.runtimeSetupByWorkspacePath.get(normalizedWorkspacePath);\n\t\tif (!setupPromise) {\n\t\t\tsetupPromise = this.createRuntimeSetup(normalizedWorkspacePath);\n\t\t\tthis.runtimeSetupByWorkspacePath.set(normalizedWorkspacePath, setupPromise);\n\t\t}\n\t\treturn await setupPromise;\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"]}
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 {\n\tRuntimeTaskImage,\n\tRuntimeTaskSessionMode,\n\tRuntimeTaskSessionSummary,\n\tRuntimeTaskTurnCheckpoint,\n} 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 {\n\ttype ClineMessageRepository,\n\tcreateInMemoryClineMessageRepository,\n\tcreateTaskEntryFromPersistedSession,\n} from \"./cline-message-repository.js\";\nimport { type ClineRuntimeSetup, createClineRuntimeSetup } from \"./cline-runtime-setup.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\timages?: RuntimeTaskImage[];\n\tresumeFromTrash?: boolean;\n\tproviderId?: string | null;\n\tmodelId?: string | null;\n\tmode?: RuntimeTaskSessionMode;\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(\n\t\ttaskId: string,\n\t\ttext: string,\n\t\tmode?: RuntimeTaskSessionMode,\n\t\timages?: RuntimeTaskImage[],\n\t): Promise<RuntimeTaskSessionSummary | null>;\n\trebindPersistedTaskSession(taskId: 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\tcreateRuntimeSetup?: (workspacePath: string) => Promise<ClineRuntimeSetup>;\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\nfunction formatStartWarnings(warnings: readonly string[] | undefined): string | null {\n\tif (!warnings) {\n\t\treturn null;\n\t}\n\tconst normalized = warnings.map((warning) => warning.trim()).filter((warning) => warning.length > 0);\n\tif (normalized.length === 0) {\n\t\treturn null;\n\t}\n\tif (normalized.length === 1) {\n\t\treturn normalized[0] ?? null;\n\t}\n\treturn `${normalized[0]} (+${normalized.length - 1} more MCP warning${normalized.length === 2 ? \"\" : \"s\"})`;\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\tprivate readonly createRuntimeSetup: (workspacePath: string) => Promise<ClineRuntimeSetup>;\n\tprivate readonly runtimeSetupByWorkspacePath = new Map<string, Promise<ClineRuntimeSetup>>();\n\n\tconstructor(options: CreateInMemoryClineTaskSessionServiceOptions = {}) {\n\t\tconst createSessionRuntime = options.createSessionRuntime ?? createInMemoryClineSessionRuntime;\n\t\tconst createMessageRepository = options.createMessageRepository ?? createInMemoryClineMessageRepository;\n\t\tthis.createRuntimeSetup = options.createRuntimeSetup ?? createClineRuntimeSetup;\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\tprivate emitTaskFailure(\n\t\ttaskId: string,\n\t\tentry: ClineTaskSessionEntry,\n\t\tcontext: \"start\" | \"send\",\n\t\terror: unknown,\n\t): void {\n\t\tconst errorMessage = toErrorMessage(error);\n\t\tconst systemMessage = createMessage(taskId, \"system\", `Cline SDK ${context} failed: ${errorMessage}.`);\n\t\tentry.messages.push(systemMessage);\n\t\tthis.emitMessage(taskId, systemMessage);\n\t\tclearActiveTurnState(entry);\n\t\tconst failedSummary = updateSummary(entry, {\n\t\t\tstate: \"failed\",\n\t\t\treviewReason: \"error\",\n\t\t\tlastOutputAt: now(),\n\t\t\tlastHookAt: now(),\n\t\t\tlatestHookActivity: {\n\t\t\t\tactivityText: `${context === \"start\" ? \"Start\" : \"Send\"} failed: ${errorMessage}`,\n\t\t\t\ttoolName: null,\n\t\t\t\ttoolInputSummary: null,\n\t\t\t\tfinalMessage: errorMessage,\n\t\t\t\thookEventName: \"agent_error\",\n\t\t\t\tnotificationType: null,\n\t\t\t\tsource: \"cline-sdk\",\n\t\t\t},\n\t\t});\n\t\tthis.emitSummary(failedSummary);\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: request.resumeFromTrash ? \"awaiting_review\" : \"running\",\n\t\t\tworkspacePath: request.cwd,\n\t\t\tstartedAt: now(),\n\t\t\tlastOutputAt: now(),\n\t\t\treviewReason: request.resumeFromTrash ? \"attention\" : null,\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\tconst normalizedPrompt = request.prompt.trim();\n\t\tconst hasRequestImages = Boolean(request.images && request.images.length > 0);\n\n\t\tif (!request.resumeFromTrash && (normalizedPrompt.length > 0 || hasRequestImages)) {\n\t\t\tconst message = createMessage(request.taskId, \"user\", normalizedPrompt, request.images);\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\tconst runtimeSetup = await this.ensureRuntimeSetup(request.cwd);\n\t\t\t\tconst runtimePrompt = runtimeSetup.resolvePrompt(request.prompt);\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\trules: runtimeSetup.loadRules(),\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: runtimePrompt,\n\t\t\t\t\timages: request.images,\n\t\t\t\t\tproviderId,\n\t\t\t\t\tmodelId,\n\t\t\t\t\tmode: request.mode,\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\tuserInstructionWatcher: runtimeSetup.watcher,\n\t\t\t\t\trequestToolApproval: runtimeSetup.requestToolApproval,\n\t\t\t\t});\n\t\t\t\tconst warningMessage = formatStartWarnings(startResult.warnings);\n\t\t\t\tif (warningMessage) {\n\t\t\t\t\tthis.emitSummary(\n\t\t\t\t\t\tupdateSummary(entry, {\n\t\t\t\t\t\t\twarningMessage,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\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\tthis.emitTaskFailure(request.taskId, entry, \"start\", error);\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\tlet entry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (!entry) {\n\t\t\t// Runtime restarts can clear in-memory task entries while the SDK still has a persisted\n\t\t\t// session for this task. Rebind first so stop() can target that recovered session id.\n\t\t\tconst reboundSummary = await this.rebindPersistedTaskSession(taskId);\n\t\t\tif (!reboundSummary) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tentry = this.messageRepository.getTaskEntry(taskId);\n\t\t\tif (!entry) {\n\t\t\t\treturn reboundSummary;\n\t\t\t}\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(\n\t\ttaskId: string,\n\t\ttext: string,\n\t\tmode?: RuntimeTaskSessionMode,\n\t\timages?: RuntimeTaskImage[],\n\t): 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\tconst hasImages = Boolean(images && images.length > 0);\n\t\tif (normalized.length === 0 && !hasImages) {\n\t\t\treturn null;\n\t\t}\n\t\t{\n\t\t\tconst message = createMessage(taskId, \"user\", normalized, images);\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.ensureRuntimeSetup(entry.summary.workspacePath ?? \"\")\n\t\t\t\t.then((runtimeSetup) =>\n\t\t\t\t\tthis.sessionRuntime.sendTaskSessionInput(taskId, runtimeSetup.resolvePrompt(normalized), mode, images),\n\t\t\t\t)\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\tthis.emitTaskFailure(taskId, entry, \"send\", error);\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\tasync rebindPersistedTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null> {\n\t\tconst existingEntry = this.messageRepository.getTaskEntry(taskId);\n\t\tif (existingEntry) {\n\t\t\treturn cloneSummary(existingEntry.summary);\n\t\t}\n\t\tconst snapshot = await this.sessionRuntime.resumeTaskSession(taskId);\n\t\tif (!snapshot) {\n\t\t\treturn null;\n\t\t}\n\t\tconst startedAt = Date.parse(snapshot.record.startedAt);\n\t\tconst updatedAt = Date.parse(snapshot.record.updatedAt || snapshot.record.startedAt);\n\t\tconst persistedCwd = typeof snapshot.record.cwd === \"string\" ? snapshot.record.cwd.trim() : \"\";\n\t\tconst persistedWorkspaceRoot =\n\t\t\ttypeof snapshot.record.workspaceRoot === \"string\" ? snapshot.record.workspaceRoot.trim() : \"\";\n\t\tconst entry = createTaskEntryFromPersistedSession(taskId, snapshot.messages, {\n\t\t\tagentId: \"cline\",\n\t\t\tstate: \"awaiting_review\",\n\t\t\treviewReason: \"attention\",\n\t\t\tworkspacePath: persistedCwd || persistedWorkspaceRoot || null,\n\t\t\tstartedAt: Number.isFinite(startedAt) ? startedAt : null,\n\t\t\tlastOutputAt: Number.isFinite(updatedAt) ? updatedAt : null,\n\t\t});\n\t\tthis.messageRepository.setTaskEntry(taskId, entry);\n\t\treturn cloneSummary(entry.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\tfor (const setupPromise of this.runtimeSetupByWorkspacePath.values()) {\n\t\t\ttry {\n\t\t\t\tconst setup = await setupPromise;\n\t\t\t\tawait setup.dispose();\n\t\t\t} catch {\n\t\t\t\t// Ignore runtime setup disposal failures.\n\t\t\t}\n\t\t}\n\t\tthis.runtimeSetupByWorkspacePath.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 async ensureRuntimeSetup(workspacePath: string): Promise<ClineRuntimeSetup> {\n\t\tconst normalizedWorkspacePath = workspacePath.trim();\n\t\tlet setupPromise = this.runtimeSetupByWorkspacePath.get(normalizedWorkspacePath);\n\t\tif (!setupPromise) {\n\t\t\tsetupPromise = this.createRuntimeSetup(normalizedWorkspacePath);\n\t\t\tthis.runtimeSetupByWorkspacePath.set(normalizedWorkspacePath, setupPromise);\n\t\t}\n\t\treturn await setupPromise;\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8zBzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6L1D"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../src/commands/task.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAs2BzC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6L1D"}