kanban 0.1.39 → 0.1.41

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 (41) hide show
  1. package/dist/cline-sdk/cline-mcp-runtime-service.d.ts.map +1 -1
  2. package/dist/cline-sdk/cline-mcp-runtime-service.js +35 -10
  3. package/dist/cline-sdk/cline-mcp-runtime-service.js.map +1 -1
  4. package/dist/cline-sdk/cline-session-runtime.d.ts +20 -2
  5. package/dist/cline-sdk/cline-session-runtime.d.ts.map +1 -1
  6. package/dist/cline-sdk/cline-session-runtime.js +68 -10
  7. package/dist/cline-sdk/cline-session-runtime.js.map +1 -1
  8. package/dist/cline-sdk/cline-session-state.d.ts +1 -0
  9. package/dist/cline-sdk/cline-session-state.d.ts.map +1 -1
  10. package/dist/cline-sdk/cline-session-state.js +12 -3
  11. package/dist/cline-sdk/cline-session-state.js.map +1 -1
  12. package/dist/cline-sdk/cline-task-session-service.d.ts +1 -0
  13. package/dist/cline-sdk/cline-task-session-service.d.ts.map +1 -1
  14. package/dist/cline-sdk/cline-task-session-service.js +76 -23
  15. package/dist/cline-sdk/cline-task-session-service.js.map +1 -1
  16. package/dist/cline-sdk/sdk-provider-boundary.d.ts.map +1 -1
  17. package/dist/cline-sdk/sdk-provider-boundary.js +5 -8
  18. package/dist/cline-sdk/sdk-provider-boundary.js.map +1 -1
  19. package/dist/core/api-contract.d.ts +72 -0
  20. package/dist/core/api-contract.d.ts.map +1 -1
  21. package/dist/core/api-contract.js +3 -2
  22. package/dist/core/api-contract.js.map +1 -1
  23. package/dist/prompts/append-system-prompt.d.ts.map +1 -1
  24. package/dist/prompts/append-system-prompt.js +4 -2
  25. package/dist/prompts/append-system-prompt.js.map +1 -1
  26. package/dist/server/browser.d.ts +1 -4
  27. package/dist/server/browser.d.ts.map +1 -1
  28. package/dist/server/browser.js +13 -53
  29. package/dist/server/browser.js.map +1 -1
  30. package/dist/trpc/app-router.d.ts +10 -0
  31. package/dist/trpc/app-router.d.ts.map +1 -1
  32. package/dist/trpc/runtime-api.js +3 -3
  33. package/dist/trpc/runtime-api.js.map +1 -1
  34. package/dist/web-ui/assets/{index-WG8Dagzd.css → index-CuBw4lTr.css} +30 -0
  35. package/dist/web-ui/assets/{index-DG-IZT6_.js → index-OpsLqYwc.js} +8622 -8617
  36. package/dist/web-ui/assets/{index-DG-IZT6_.js.map → index-OpsLqYwc.js.map} +1 -1
  37. package/dist/web-ui/index.html +2 -2
  38. package/dist/workspace/git-utils.d.ts.map +1 -1
  39. package/dist/workspace/git-utils.js +17 -4
  40. package/dist/workspace/git-utils.js.map +1 -1
  41. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"file":"cline-session-runtime.js","sources":["../../src/cline-sdk/cline-session-runtime.ts"],"sourceRoot":"","sourcesContent":["// Owns the live SDK session host plus taskId to sessionId bindings.\n// This is the runtime-facing layer for starting, looking up, resuming, and\n// stopping native Cline sessions without exposing SDK details upstream.\nimport type { RuntimeTaskImage, RuntimeTaskSessionMode } from \"../core/api-contract.js\";\nimport {\n\tcreateClineMcpRuntimeService,\n\ttype ClineMcpRuntimeService,\n\ttype ClineMcpToolBundle,\n} from \"./cline-mcp-runtime-service.js\";\nimport { extractClineSessionId } from \"./cline-event-adapter.js\";\nimport { createSessionId } from \"./cline-session-state.js\";\nimport {\n\ttype ClineSdkPersistedMessage,\n\ttype ClineSdkSessionHost,\n\ttype ClineSdkSessionRecord,\n\ttype ClineSdkUserInstructionWatcher,\n\tcreateClineSdkSessionHost,\n} from \"./sdk-runtime-boundary.js\";\n\nconst DEFAULT_CLINE_MAX_CONSECUTIVE_MISTAKES = 3;\n\nfunction toSdkUserImages(images?: RuntimeTaskImage[]): string[] | undefined {\n\tif (!images || images.length === 0) {\n\t\treturn undefined;\n\t}\n\tconst userImages = images\n\t\t.map((image) => {\n\t\t\tconst mimeType = image.mimeType.trim();\n\t\t\tconst data = image.data.trim();\n\t\t\tif (!mimeType || !data) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn `data:${mimeType};base64,${data}`;\n\t\t})\n\t\t.filter((image): image is string => image !== null);\n\treturn userImages.length > 0 ? userImages : undefined;\n}\n\nexport interface StartClineSessionRuntimeRequest {\n\ttaskId: string;\n\tcwd: string;\n\tprompt: string;\n\timages?: RuntimeTaskImage[];\n\tproviderId: string;\n\tmodelId: string;\n\tmode?: RuntimeTaskSessionMode;\n\tapiKey?: string | null;\n\tbaseUrl?: string | null;\n\tsystemPrompt: string;\n\tuserInstructionWatcher?: ClineSdkUserInstructionWatcher;\n\trequestToolApproval?: (request: unknown) => Promise<unknown>;\n}\n\nexport interface StartClineSessionRuntimeResult {\n\tsessionId: string;\n\tresult: unknown;\n\twarnings?: string[];\n}\n\nexport interface ClinePersistedTaskSessionSnapshot {\n\trecord: ClineSdkSessionRecord;\n\tmessages: ClineSdkPersistedMessage[];\n}\n\nexport interface ClineSessionRuntime {\n\tstartTaskSession(request: StartClineSessionRuntimeRequest): Promise<StartClineSessionRuntimeResult>;\n\tsendTaskSessionInput(taskId: string, prompt: string, mode?: RuntimeTaskSessionMode, images?: RuntimeTaskImage[]): Promise<unknown>;\n\tresumeTaskSession(taskId: string): Promise<ClinePersistedTaskSessionSnapshot | null>;\n\tstopTaskSession(taskId: string): Promise<void>;\n\tabortTaskSession(taskId: string): Promise<void>;\n\tgetTaskSessionId(taskId: string): string | null;\n\treadPersistedTaskSession(taskId: string): Promise<ClinePersistedTaskSessionSnapshot | null>;\n\tdispose(): Promise<void>;\n}\n\nexport interface CreateInMemoryClineSessionRuntimeOptions {\n\tonTaskEvent?: (taskId: string, event: unknown) => void;\n\tcreateSessionHost?: () => Promise<ClineSdkSessionHost>;\n\tcreateMcpRuntimeService?: () => ClineMcpRuntimeService;\n}\n\n// Own the SDK session host plus the taskId <-> sessionId bindings so higher layers can stay task-oriented.\nexport class InMemoryClineSessionRuntime implements ClineSessionRuntime {\n\tprivate readonly onTaskEvent: ((taskId: string, event: unknown) => void) | null;\n\tprivate readonly createSessionHost: () => Promise<ClineSdkSessionHost>;\n\tprivate readonly clineMcpRuntimeService: ClineMcpRuntimeService;\n\tprivate readonly sessionIdByTaskId = new Map<string, string>();\n\tprivate readonly taskIdBySessionId = new Map<string, string>();\n\tprivate readonly mcpToolBundleByTaskId = new Map<string, ClineMcpToolBundle>();\n\tprivate sessionHostPromise: Promise<ClineSdkSessionHost> | null = null;\n\n\tconstructor(options: CreateInMemoryClineSessionRuntimeOptions = {}) {\n\t\tthis.onTaskEvent = options.onTaskEvent ?? null;\n\t\tthis.createSessionHost = options.createSessionHost ?? createClineSdkSessionHost;\n\t\tconst createMcpRuntimeService = options.createMcpRuntimeService ?? createClineMcpRuntimeService;\n\t\tthis.clineMcpRuntimeService = createMcpRuntimeService();\n\t}\n\n\tasync startTaskSession(request: StartClineSessionRuntimeRequest): Promise<StartClineSessionRuntimeResult> {\n\t\tconst requestedSessionId = createSessionId(request.taskId);\n\t\tthis.bindTaskSession(request.taskId, requestedSessionId);\n\n\t\tlet mcpToolBundle: ClineMcpToolBundle | null = null;\n\t\tlet startWarnings: string[] = [];\n\t\ttry {\n\t\t\tmcpToolBundle = await this.clineMcpRuntimeService.createToolBundle();\n\t\t\tstartWarnings = mcpToolBundle.warnings;\n\t\t} catch (error) {\n\t\t\tmcpToolBundle = null;\n\t\t\tconst message = error instanceof Error ? error.message.trim() : String(error);\n\t\t\tif (message.length > 0) {\n\t\t\t\tstartWarnings = [`Failed to load MCP tools: ${message}`];\n\t\t\t}\n\t\t}\n\t\tthis.replaceTaskMcpToolBundle(request.taskId, mcpToolBundle);\n\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tlet startResult: StartClineSessionRuntimeResult;\n\t\ttry {\n\t\t\tstartResult = await sessionHost.start({\n\t\t\t\tconfig: {\n\t\t\t\t\tsessionId: requestedSessionId,\n\t\t\t\t\tproviderId: request.providerId,\n\t\t\t\t\tmodelId: request.modelId,\n\t\t\t\t\tapiKey: request.apiKey?.trim() || undefined,\n\t\t\t\t\tbaseUrl: request.baseUrl?.trim() || undefined,\n\t\t\t\t\tcwd: request.cwd,\n\t\t\t\t\tmode: request.mode ?? \"act\",\n\t\t\t\t\tenableTools: true,\n\t\t\t\t\tenableSpawnAgent: false,\n\t\t\t\t\tenableAgentTeams: false,\n\t\t\t\t\tmaxConsecutiveMistakes: DEFAULT_CLINE_MAX_CONSECUTIVE_MISTAKES,\n\t\t\t\t\tsystemPrompt: request.systemPrompt,\n\t\t\t\t\t...(mcpToolBundle && mcpToolBundle.tools.length > 0 ? { extraTools: mcpToolBundle.tools } : {}),\n\t\t\t\t},\n\t\t\t\tprompt: request.prompt,\n\t\t\t\tinteractive: true,\n\t\t\t\tuserImages: toSdkUserImages(request.images),\n\t\t\t\tuserInstructionWatcher: request.userInstructionWatcher,\n\t\t\t\trequestToolApproval: request.requestToolApproval,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tawait this.releaseTaskMcpToolBundle(request.taskId);\n\t\t\tthrow error;\n\t\t}\n\n\t\tthis.bindTaskSession(request.taskId, startResult.sessionId);\n\t\tif (startResult.sessionId !== requestedSessionId) {\n\t\t\tthis.taskIdBySessionId.delete(requestedSessionId);\n\t\t}\n\n\t\treturn {\n\t\t\t...startResult,\n\t\t\t...(startWarnings.length > 0 ? { warnings: startWarnings } : {}),\n\t\t};\n\t}\n\n\tasync sendTaskSessionInput(\n\t\ttaskId: string,\n\t\tprompt: string,\n\t\tmode?: RuntimeTaskSessionMode,\n\t\timages?: RuntimeTaskImage[],\n\t): Promise<unknown> {\n\t\tconst sessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (!sessionId) {\n\t\t\tthrow new Error(`No active Cline session for task ${taskId}.`);\n\t\t}\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tif (mode) {\n\t\t\tthis.updateActiveSessionMode(sessionHost, sessionId, mode);\n\t\t}\n\t\treturn await sessionHost.send({\n\t\t\tsessionId,\n\t\t\tprompt,\n\t\t\tuserImages: toSdkUserImages(images),\n\t\t});\n\t}\n\n\tasync resumeTaskSession(taskId: string): Promise<ClinePersistedTaskSessionSnapshot | null> {\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tconst record = await this.findPersistedTaskSessionRecord(taskId, sessionHost);\n\t\tif (!record) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.bindTaskSession(taskId, record.sessionId);\n\t\tconst messages = await sessionHost.readMessages(record.sessionId);\n\t\treturn {\n\t\t\trecord,\n\t\t\tmessages,\n\t\t};\n\t}\n\n\tasync stopTaskSession(taskId: string): Promise<void> {\n\t\tconst sessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (!sessionId) {\n\t\t\tawait this.releaseTaskMcpToolBundle(taskId);\n\t\t\treturn;\n\t\t}\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tawait sessionHost.stop(sessionId);\n\t\tawait this.releaseTaskMcpToolBundle(taskId);\n\t}\n\n\tasync abortTaskSession(taskId: string): Promise<void> {\n\t\tconst sessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (!sessionId) {\n\t\t\tawait this.releaseTaskMcpToolBundle(taskId);\n\t\t\treturn;\n\t\t}\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tawait sessionHost.abort(sessionId);\n\t\tawait this.releaseTaskMcpToolBundle(taskId);\n\t}\n\n\tgetTaskSessionId(taskId: string): string | null {\n\t\treturn this.sessionIdByTaskId.get(taskId) ?? null;\n\t}\n\n\tasync readPersistedTaskSession(taskId: string): Promise<ClinePersistedTaskSessionSnapshot | null> {\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tconst record = await this.findPersistedTaskSessionRecord(taskId, sessionHost);\n\t\tif (!record) {\n\t\t\treturn null;\n\t\t}\n\t\tconst messages = await sessionHost.readMessages(record.sessionId);\n\t\treturn {\n\t\t\trecord,\n\t\t\tmessages,\n\t\t};\n\t}\n\n\tasync dispose(): Promise<void> {\n\t\tconst hostPromise = this.sessionHostPromise;\n\t\tthis.sessionHostPromise = null;\n\t\tif (hostPromise) {\n\t\t\ttry {\n\t\t\t\tconst host = await hostPromise;\n\t\t\t\tawait host.dispose(\"kanban-runtime-dispose\");\n\t\t\t} catch {\n\t\t\t\t// Ignore host disposal errors.\n\t\t\t}\n\t\t}\n\t\tthis.sessionIdByTaskId.clear();\n\t\tthis.taskIdBySessionId.clear();\n\n\t\tconst mcpBundles = [...this.mcpToolBundleByTaskId.values()];\n\t\tthis.mcpToolBundleByTaskId.clear();\n\t\tawait Promise.all(\n\t\t\tmcpBundles.map(async (bundle) => {\n\t\t\t\tawait bundle.dispose().catch(() => undefined);\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate replaceTaskMcpToolBundle(taskId: string, bundle: ClineMcpToolBundle | null): void {\n\t\tconst current = this.mcpToolBundleByTaskId.get(taskId);\n\t\tif (current) {\n\t\t\tvoid current.dispose().catch(() => undefined);\n\t\t\tthis.mcpToolBundleByTaskId.delete(taskId);\n\t\t}\n\t\tif (bundle) {\n\t\t\tthis.mcpToolBundleByTaskId.set(taskId, bundle);\n\t\t}\n\t}\n\n\tprivate async releaseTaskMcpToolBundle(taskId: string): Promise<void> {\n\t\tconst current = this.mcpToolBundleByTaskId.get(taskId);\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\t\tthis.mcpToolBundleByTaskId.delete(taskId);\n\t\tawait current.dispose().catch(() => undefined);\n\t}\n\n\tprivate bindTaskSession(taskId: string, sessionId: string): void {\n\t\tconst previousSessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (previousSessionId) {\n\t\t\tthis.taskIdBySessionId.delete(previousSessionId);\n\t\t}\n\t\tthis.sessionIdByTaskId.set(taskId, sessionId);\n\t\tthis.taskIdBySessionId.set(sessionId, taskId);\n\t}\n\n\tprivate async findPersistedTaskSessionRecord(\n\t\ttaskId: string,\n\t\tsessionHost: ClineSdkSessionHost,\n\t): Promise<ClineSdkSessionRecord | null> {\n\t\tconst activeSessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (activeSessionId) {\n\t\t\tconst activeRecord = (await sessionHost.get(activeSessionId)) ?? null;\n\t\t\tif (activeRecord) {\n\t\t\t\treturn activeRecord;\n\t\t\t}\n\t\t}\n\n\t\tconst sessionIdPrefix = `${taskId}-`;\n\t\tconst records: ClineSdkSessionRecord[] = await sessionHost.list();\n\t\tconst matchingRecord = records\n\t\t\t.filter((record: ClineSdkSessionRecord) => record.sessionId.startsWith(sessionIdPrefix))\n\t\t\t.sort((left: ClineSdkSessionRecord, right: ClineSdkSessionRecord) => {\n\t\t\t\tconst leftTimestamp = Date.parse(left.updatedAt || left.startedAt);\n\t\t\t\tconst rightTimestamp = Date.parse(right.updatedAt || right.startedAt);\n\t\t\t\treturn rightTimestamp - leftTimestamp;\n\t\t\t})[0];\n\t\treturn matchingRecord ?? null;\n\t}\n\n\tprivate async ensureSessionHost(): Promise<ClineSdkSessionHost> {\n\t\tif (!this.sessionHostPromise) {\n\t\t\tthis.sessionHostPromise = this.createSessionHost().then((sessionHost: ClineSdkSessionHost) => {\n\t\t\t\tsessionHost.subscribe((event: unknown) => {\n\t\t\t\t\tthis.handleSessionEvent(event);\n\t\t\t\t});\n\t\t\t\treturn sessionHost;\n\t\t\t});\n\t\t}\n\t\treturn await this.sessionHostPromise;\n\t}\n\n\tprivate updateActiveSessionMode(\n\t\tsessionHost: ClineSdkSessionHost,\n\t\tsessionId: string,\n\t\tmode: RuntimeTaskSessionMode,\n\t): void {\n\t\tconst hostWithSessions = sessionHost as unknown as {\n\t\t\tsessions?: Map<string, { config?: { mode?: RuntimeTaskSessionMode } }>;\n\t\t};\n\t\tconst activeSession = hostWithSessions.sessions?.get(sessionId);\n\t\tif (activeSession?.config) {\n\t\t\tactiveSession.config.mode = mode;\n\t\t}\n\t}\n\n\tprivate handleSessionEvent(event: unknown): void {\n\t\tif (!this.onTaskEvent) {\n\t\t\treturn;\n\t\t}\n\t\tconst sessionId = extractClineSessionId(event);\n\t\tif (!sessionId) {\n\t\t\treturn;\n\t\t}\n\t\tconst taskId = this.taskIdBySessionId.get(sessionId);\n\t\tif (!taskId) {\n\t\t\treturn;\n\t\t}\n\t\tthis.onTaskEvent(taskId, event);\n\t}\n}\n\nexport function createInMemoryClineSessionRuntime(\n\toptions: CreateInMemoryClineSessionRuntimeOptions = {},\n): ClineSessionRuntime {\n\treturn new InMemoryClineSessionRuntime(options);\n}\n"],"names":[],"mappings":"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","debugId":"273a8d56-0caf-5898-a5fe-60e95ff9dfbc"}
1
+ {"version":3,"file":"cline-session-runtime.js","sources":["../../src/cline-sdk/cline-session-runtime.ts"],"sourceRoot":"","sourcesContent":["// Owns the live SDK session host plus taskId to sessionId bindings.\n// This is the runtime-facing layer for starting, looking up, resuming, and\n// stopping native Cline sessions without exposing SDK details upstream.\nimport type { RuntimeTaskImage, RuntimeTaskSessionMode } from \"../core/api-contract.js\";\nimport {\n\tcreateClineMcpRuntimeService,\n\ttype ClineMcpRuntimeService,\n\ttype ClineMcpToolBundle,\n} from \"./cline-mcp-runtime-service.js\";\nimport { extractClineSessionId } from \"./cline-event-adapter.js\";\nimport { buildSessionIdPrefix, createSessionId } from \"./cline-session-state.js\";\nimport {\n\ttype ClineSdkPersistedMessage,\n\ttype ClineSdkSessionHost,\n\ttype ClineSdkSessionRecord,\n\ttype ClineSdkUserInstructionWatcher,\n\tcreateClineSdkSessionHost,\n} from \"./sdk-runtime-boundary.js\";\n\nconst DEFAULT_CLINE_MAX_CONSECUTIVE_MISTAKES = 6;\n\nfunction toSdkUserImages(images?: RuntimeTaskImage[]): string[] | undefined {\n\tif (!images || images.length === 0) {\n\t\treturn undefined;\n\t}\n\tconst userImages = images\n\t\t.map((image) => {\n\t\t\tconst mimeType = image.mimeType.trim();\n\t\t\tconst data = image.data.trim();\n\t\t\tif (!mimeType || !data) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\treturn `data:${mimeType};base64,${data}`;\n\t\t})\n\t\t.filter((image): image is string => image !== null);\n\treturn userImages.length > 0 ? userImages : undefined;\n}\n\nexport interface StartClineSessionRuntimeRequest {\n\ttaskId: string;\n\tcwd: string;\n\tprompt: string;\n\tinitialMessages?: ClineSdkPersistedMessage[];\n\timages?: RuntimeTaskImage[];\n\tproviderId: string;\n\tmodelId: string;\n\tmode?: RuntimeTaskSessionMode;\n\tapiKey?: string | null;\n\tbaseUrl?: string | null;\n\tsystemPrompt: string;\n\tuserInstructionWatcher?: ClineSdkUserInstructionWatcher;\n\trequestToolApproval?: (request: unknown) => Promise<unknown>;\n}\n\nexport interface StartClineSessionRuntimeResult {\n\tsessionId: string;\n\tresult: unknown;\n\twarnings?: string[];\n}\n\nexport interface ClinePersistedTaskSessionSnapshot {\n\trecord: ClineSdkSessionRecord;\n\tmessages: ClineSdkPersistedMessage[];\n}\n\nexport interface ClineSessionRuntime {\n\tstartTaskSession(request: StartClineSessionRuntimeRequest): Promise<StartClineSessionRuntimeResult>;\n\trestartTaskSession(input: {\n\t\ttaskId: string;\n\t\tprompt: string;\n\t\tinitialMessages?: ClineSdkPersistedMessage[];\n\t\timages?: RuntimeTaskImage[];\n\t\tmode?: RuntimeTaskSessionMode;\n\t}): Promise<StartClineSessionRuntimeResult>;\n\tsendTaskSessionInput(\n\t\ttaskId: string,\n\t\tprompt: string,\n\t\tmode?: RuntimeTaskSessionMode,\n\t\timages?: RuntimeTaskImage[],\n\t\tdelivery?: \"queue\" | \"steer\",\n\t): Promise<unknown>;\n\tresumeTaskSession(taskId: string): Promise<ClinePersistedTaskSessionSnapshot | null>;\n\tstopTaskSession(taskId: string): Promise<void>;\n\tabortTaskSession(taskId: string): Promise<void>;\n\tgetTaskSessionId(taskId: string): string | null;\n\treadPersistedTaskSession(taskId: string): Promise<ClinePersistedTaskSessionSnapshot | null>;\n\tdispose(): Promise<void>;\n}\n\nexport interface CreateInMemoryClineSessionRuntimeOptions {\n\tonTaskEvent?: (taskId: string, event: unknown) => void;\n\tcreateSessionHost?: () => Promise<ClineSdkSessionHost>;\n\tcreateMcpRuntimeService?: () => ClineMcpRuntimeService;\n}\n\n// Own the SDK session host plus the taskId <-> sessionId bindings so higher layers can stay task-oriented.\nexport class InMemoryClineSessionRuntime implements ClineSessionRuntime {\n\tprivate readonly onTaskEvent: ((taskId: string, event: unknown) => void) | null;\n\tprivate readonly createSessionHost: () => Promise<ClineSdkSessionHost>;\n\tprivate readonly clineMcpRuntimeService: ClineMcpRuntimeService;\n\tprivate readonly sessionIdByTaskId = new Map<string, string>();\n\tprivate readonly taskIdBySessionId = new Map<string, string>();\n\tprivate readonly lastStartRequestByTaskId = new Map<\n\t\tstring,\n\t\tOmit<StartClineSessionRuntimeRequest, \"prompt\" | \"images\" | \"initialMessages\">\n\t>();\n\tprivate readonly mcpToolBundleByTaskId = new Map<string, ClineMcpToolBundle>();\n\tprivate sessionHostPromise: Promise<ClineSdkSessionHost> | null = null;\n\n\tconstructor(options: CreateInMemoryClineSessionRuntimeOptions = {}) {\n\t\tthis.onTaskEvent = options.onTaskEvent ?? null;\n\t\tthis.createSessionHost = options.createSessionHost ?? createClineSdkSessionHost;\n\t\tconst createMcpRuntimeService = options.createMcpRuntimeService ?? createClineMcpRuntimeService;\n\t\tthis.clineMcpRuntimeService = createMcpRuntimeService();\n\t}\n\n\tasync startTaskSession(request: StartClineSessionRuntimeRequest): Promise<StartClineSessionRuntimeResult> {\n\t\tconst requestedSessionId = createSessionId(request.taskId);\n\t\tconst resolvedMode: RuntimeTaskSessionMode = request.mode ?? \"act\";\n\t\tthis.lastStartRequestByTaskId.set(request.taskId, {\n\t\t\ttaskId: request.taskId,\n\t\t\tcwd: request.cwd,\n\t\t\tproviderId: request.providerId,\n\t\t\tmodelId: request.modelId,\n\t\t\tmode: resolvedMode,\n\t\t\tapiKey: request.apiKey,\n\t\t\tbaseUrl: request.baseUrl,\n\t\t\tsystemPrompt: request.systemPrompt,\n\t\t\tuserInstructionWatcher: request.userInstructionWatcher,\n\t\t\trequestToolApproval: request.requestToolApproval,\n\t\t});\n\t\tthis.bindTaskSession(request.taskId, requestedSessionId);\n\n\t\tlet mcpToolBundle: ClineMcpToolBundle | null = null;\n\t\tlet startWarnings: string[] = [];\n\t\ttry {\n\t\t\tmcpToolBundle = await this.clineMcpRuntimeService.createToolBundle();\n\t\t\tstartWarnings = mcpToolBundle.warnings;\n\t\t} catch (error) {\n\t\t\tmcpToolBundle = null;\n\t\t\tconst message = error instanceof Error ? error.message.trim() : String(error);\n\t\t\tif (message.length > 0) {\n\t\t\t\tstartWarnings = [`Failed to load MCP tools: ${message}`];\n\t\t\t}\n\t\t}\n\t\tthis.replaceTaskMcpToolBundle(request.taskId, mcpToolBundle);\n\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tlet startResult: StartClineSessionRuntimeResult;\n\t\ttry {\n\t\t\tstartResult = await sessionHost.start({\n\t\t\t\tconfig: {\n\t\t\t\t\tsessionId: requestedSessionId,\n\t\t\t\t\tproviderId: request.providerId,\n\t\t\t\t\tmodelId: request.modelId,\n\t\t\t\t\tapiKey: request.apiKey?.trim() || undefined,\n\t\t\t\t\tbaseUrl: request.baseUrl?.trim() || undefined,\n\t\t\t\t\tcwd: request.cwd,\n\t\t\t\t\tmode: resolvedMode,\n\t\t\t\t\tenableTools: true,\n\t\t\t\t\tenableSpawnAgent: false,\n\t\t\t\t\tenableAgentTeams: false,\n\t\t\t\t\tmaxConsecutiveMistakes: DEFAULT_CLINE_MAX_CONSECUTIVE_MISTAKES,\n\t\t\t\t\tsystemPrompt: request.systemPrompt,\n\t\t\t\t\t...(mcpToolBundle && mcpToolBundle.tools.length > 0 ? { extraTools: mcpToolBundle.tools } : {}),\n\t\t\t\t\t},\n\t\t\t\t\tprompt: request.prompt,\n\t\t\t\t\tinitialMessages: request.initialMessages,\n\t\t\t\t\tinteractive: true,\n\t\t\t\t\tuserImages: toSdkUserImages(request.images),\n\t\t\t\t\tuserInstructionWatcher: request.userInstructionWatcher,\n\t\t\t\t\trequestToolApproval: request.requestToolApproval,\n\t\t\t\t});\n\t\t} catch (error) {\n\t\t\tthis.clearTaskSessionBinding(request.taskId, requestedSessionId);\n\t\t\tawait this.releaseTaskMcpToolBundle(request.taskId);\n\t\t\tthrow error;\n\t\t}\n\n\t\tthis.bindTaskSession(request.taskId, startResult.sessionId);\n\t\tif (startResult.sessionId !== requestedSessionId) {\n\t\t\tthis.taskIdBySessionId.delete(requestedSessionId);\n\t\t}\n\n\t\treturn {\n\t\t\t...startResult,\n\t\t\t...(startWarnings.length > 0 ? { warnings: startWarnings } : {}),\n\t\t};\n\t}\n\n\tasync restartTaskSession(input: {\n\t\ttaskId: string;\n\t\tprompt: string;\n\t\tinitialMessages?: ClineSdkPersistedMessage[];\n\t\timages?: RuntimeTaskImage[];\n\t\tmode?: RuntimeTaskSessionMode;\n\t}): Promise<StartClineSessionRuntimeResult> {\n\t\tconst lastStartRequest = this.lastStartRequestByTaskId.get(input.taskId);\n\t\tif (!lastStartRequest) {\n\t\t\tthrow new Error(`No previous Cline session config is available for task ${input.taskId}.`);\n\t\t}\n\n\t\treturn await this.startTaskSession({\n\t\t\t...lastStartRequest,\n\t\t\tprompt: input.prompt,\n\t\t\tinitialMessages: input.initialMessages,\n\t\t\timages: input.images,\n\t\t\tmode: input.mode ?? lastStartRequest.mode,\n\t\t});\n\t}\n\n\tasync sendTaskSessionInput(\n\t\ttaskId: string,\n\t\tprompt: string,\n\t\tmode?: RuntimeTaskSessionMode,\n\t\timages?: RuntimeTaskImage[],\n\t\tdelivery?: \"queue\" | \"steer\",\n\t): Promise<unknown> {\n\t\tconst sessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (!sessionId) {\n\t\t\tthrow new Error(`No active Cline session for task ${taskId}.`);\n\t\t}\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tif (mode) {\n\t\t\tthis.updateActiveSessionMode(sessionHost, sessionId, mode);\n\t\t\tthis.updateLastStartRequestMode(taskId, mode);\n\t\t}\n\t\treturn await sessionHost.send({\n\t\t\tsessionId,\n\t\t\tprompt,\n\t\t\tuserImages: toSdkUserImages(images),\n\t\t\t...(delivery ? { delivery } : {}),\n\t\t});\n\t}\n\n\tasync resumeTaskSession(taskId: string): Promise<ClinePersistedTaskSessionSnapshot | null> {\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tconst record = await this.findPersistedTaskSessionRecord(taskId, sessionHost);\n\t\tif (!record) {\n\t\t\treturn null;\n\t\t}\n\t\tthis.bindTaskSession(taskId, record.sessionId);\n\t\tconst messages = await sessionHost.readMessages(record.sessionId);\n\t\treturn {\n\t\t\trecord,\n\t\t\tmessages,\n\t\t};\n\t}\n\n\tasync stopTaskSession(taskId: string): Promise<void> {\n\t\tconst sessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (!sessionId) {\n\t\t\tawait this.releaseTaskMcpToolBundle(taskId);\n\t\t\treturn;\n\t\t}\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tawait sessionHost.stop(sessionId);\n\t\tawait this.releaseTaskMcpToolBundle(taskId);\n\t}\n\n\tasync abortTaskSession(taskId: string): Promise<void> {\n\t\tconst sessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (!sessionId) {\n\t\t\tawait this.releaseTaskMcpToolBundle(taskId);\n\t\t\treturn;\n\t\t}\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tawait sessionHost.abort(sessionId);\n\t\tawait this.releaseTaskMcpToolBundle(taskId);\n\t}\n\n\tgetTaskSessionId(taskId: string): string | null {\n\t\treturn this.sessionIdByTaskId.get(taskId) ?? null;\n\t}\n\n\tasync readPersistedTaskSession(taskId: string): Promise<ClinePersistedTaskSessionSnapshot | null> {\n\t\tconst sessionHost = await this.ensureSessionHost();\n\t\tconst record = await this.findPersistedTaskSessionRecord(taskId, sessionHost);\n\t\tif (!record) {\n\t\t\treturn null;\n\t\t}\n\t\tconst messages = await sessionHost.readMessages(record.sessionId);\n\t\treturn {\n\t\t\trecord,\n\t\t\tmessages,\n\t\t};\n\t}\n\n\tasync dispose(): Promise<void> {\n\t\tconst hostPromise = this.sessionHostPromise;\n\t\tthis.sessionHostPromise = null;\n\t\tif (hostPromise) {\n\t\t\ttry {\n\t\t\t\tconst host = await hostPromise;\n\t\t\t\tawait host.dispose(\"kanban-runtime-dispose\");\n\t\t\t} catch {\n\t\t\t\t// Ignore host disposal errors.\n\t\t\t}\n\t\t}\n\t\tthis.sessionIdByTaskId.clear();\n\t\tthis.taskIdBySessionId.clear();\n\t\tthis.lastStartRequestByTaskId.clear();\n\n\t\tconst mcpBundles = [...this.mcpToolBundleByTaskId.values()];\n\t\tthis.mcpToolBundleByTaskId.clear();\n\t\tawait Promise.all(\n\t\t\tmcpBundles.map(async (bundle) => {\n\t\t\t\tawait bundle.dispose().catch(() => undefined);\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate replaceTaskMcpToolBundle(taskId: string, bundle: ClineMcpToolBundle | null): void {\n\t\tconst current = this.mcpToolBundleByTaskId.get(taskId);\n\t\tif (current) {\n\t\t\tvoid current.dispose().catch(() => undefined);\n\t\t\tthis.mcpToolBundleByTaskId.delete(taskId);\n\t\t}\n\t\tif (bundle) {\n\t\t\tthis.mcpToolBundleByTaskId.set(taskId, bundle);\n\t\t}\n\t}\n\n\tprivate async releaseTaskMcpToolBundle(taskId: string): Promise<void> {\n\t\tconst current = this.mcpToolBundleByTaskId.get(taskId);\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\t\tthis.mcpToolBundleByTaskId.delete(taskId);\n\t\tawait current.dispose().catch(() => undefined);\n\t}\n\n\tprivate bindTaskSession(taskId: string, sessionId: string): void {\n\t\tconst previousSessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (previousSessionId) {\n\t\t\tthis.taskIdBySessionId.delete(previousSessionId);\n\t\t}\n\t\tthis.sessionIdByTaskId.set(taskId, sessionId);\n\t\tthis.taskIdBySessionId.set(sessionId, taskId);\n\t}\n\n\tprivate clearTaskSessionBinding(taskId: string, sessionId?: string): void {\n\t\tconst activeSessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (!activeSessionId) {\n\t\t\treturn;\n\t\t}\n\t\tif (sessionId && activeSessionId !== sessionId) {\n\t\t\treturn;\n\t\t}\n\t\tthis.sessionIdByTaskId.delete(taskId);\n\t\tthis.taskIdBySessionId.delete(activeSessionId);\n\t}\n\n\tprivate async findPersistedTaskSessionRecord(\n\t\ttaskId: string,\n\t\tsessionHost: ClineSdkSessionHost,\n\t): Promise<ClineSdkSessionRecord | null> {\n\t\tconst activeSessionId = this.sessionIdByTaskId.get(taskId);\n\t\tif (activeSessionId) {\n\t\t\tconst activeRecord = (await sessionHost.get(activeSessionId)) ?? null;\n\t\t\tif (activeRecord) {\n\t\t\t\treturn activeRecord;\n\t\t\t}\n\t\t}\n\n\t\tconst sessionIdPrefix = buildSessionIdPrefix(taskId);\n\t\tconst records: ClineSdkSessionRecord[] = await sessionHost.list();\n\t\tconst matchingRecord = records\n\t\t\t.filter((record: ClineSdkSessionRecord) => record.sessionId.startsWith(sessionIdPrefix))\n\t\t\t.sort((left: ClineSdkSessionRecord, right: ClineSdkSessionRecord) => {\n\t\t\t\tconst leftTimestamp = Date.parse(left.updatedAt || left.startedAt);\n\t\t\t\tconst rightTimestamp = Date.parse(right.updatedAt || right.startedAt);\n\t\t\t\treturn rightTimestamp - leftTimestamp;\n\t\t\t})[0];\n\t\treturn matchingRecord ?? null;\n\t}\n\n\tprivate async ensureSessionHost(): Promise<ClineSdkSessionHost> {\n\t\tif (!this.sessionHostPromise) {\n\t\t\tthis.sessionHostPromise = this.createSessionHost().then((sessionHost: ClineSdkSessionHost) => {\n\t\t\t\tsessionHost.subscribe((event: unknown) => {\n\t\t\t\t\tthis.handleSessionEvent(event);\n\t\t\t\t});\n\t\t\t\treturn sessionHost;\n\t\t\t});\n\t\t}\n\t\treturn await this.sessionHostPromise;\n\t}\n\n\tprivate updateActiveSessionMode(\n\t\tsessionHost: ClineSdkSessionHost,\n\t\tsessionId: string,\n\t\tmode: RuntimeTaskSessionMode,\n\t): void {\n\t\tconst hostWithSessions = sessionHost as unknown as {\n\t\t\tsessions?: Map<string, { config?: { mode?: RuntimeTaskSessionMode } }>;\n\t\t};\n\t\tconst activeSession = hostWithSessions.sessions?.get(sessionId);\n\t\tif (activeSession?.config) {\n\t\t\tactiveSession.config.mode = mode;\n\t\t}\n\t}\n\n\tprivate updateLastStartRequestMode(taskId: string, mode: RuntimeTaskSessionMode): void {\n\t\tconst lastStartRequest = this.lastStartRequestByTaskId.get(taskId);\n\t\tif (!lastStartRequest) {\n\t\t\treturn;\n\t\t}\n\t\tthis.lastStartRequestByTaskId.set(taskId, {\n\t\t\t...lastStartRequest,\n\t\t\tmode,\n\t\t});\n\t}\n\n\tprivate handleSessionEvent(event: unknown): void {\n\t\tconst sessionId = extractClineSessionId(event);\n\t\tif (!sessionId) {\n\t\t\treturn;\n\t\t}\n\t\tconst taskId = this.taskIdBySessionId.get(sessionId);\n\t\tif (!taskId) {\n\t\t\treturn;\n\t\t}\n\t\tconst eventRecord =\n\t\t\tevent && typeof event === \"object\" ? (event as { type?: unknown }) : null;\n\t\tconst ended = eventRecord?.type === \"ended\";\n\t\tif (this.onTaskEvent) {\n\t\t\tthis.onTaskEvent(taskId, event);\n\t\t}\n\t\tif (ended) {\n\t\t\tthis.clearTaskSessionBinding(taskId, sessionId);\n\t\t\tvoid this.releaseTaskMcpToolBundle(taskId);\n\t\t}\n\t}\n}\n\nexport function createInMemoryClineSessionRuntime(\n\toptions: CreateInMemoryClineSessionRuntimeOptions = {},\n): ClineSessionRuntime {\n\treturn new InMemoryClineSessionRuntime(options);\n}\n"],"names":[],"mappings":"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","debugId":"61b3decb-d642-570f-84d6-088fcd51b7a2"}
@@ -31,6 +31,7 @@ export declare function updateSummary(entry: ClineTaskSessionEntry, patch: Parti
31
31
  export declare function createMessage(taskId: string, role: ClineTaskMessage["role"], content: string, images?: RuntimeTaskImage[]): ClineTaskMessage;
32
32
  export declare function createMessageWithMeta(taskId: string, role: ClineTaskMessage["role"], content: string, meta: ClineTaskMessage["meta"], images?: RuntimeTaskImage[]): ClineTaskMessage;
33
33
  export declare function createSessionId(taskId: string): string;
34
+ export declare function buildSessionIdPrefix(taskId: string): string;
34
35
  export declare function isClineUserAttentionTool(toolName: string | null): boolean;
35
36
  export declare function canReturnToRunning(reviewReason: RuntimeTaskSessionSummary["reviewReason"]): boolean;
36
37
  export declare function latestAssistantMessageMatches(entry: ClineTaskSessionEntry, content: string): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"cline-session-state.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/cline-session-state.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAI3F,MAAM,WAAW,qBAAqB;IACrC,OAAO,EAAE,yBAAyB,CAAC;IACnC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,yBAAyB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACxE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACvB,GAAG,IAAI,CAAC;CACT;AAED,wBAAgB,GAAG,IAAI,MAAM,CAE5B;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,yBAAyB,GAAG,yBAAyB,CAO1F;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,CAMxE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,CAkB9E;AAED,wBAAgB,aAAa,CAC5B,KAAK,EAAE,qBAAqB,EAC5B,KAAK,EAAE,OAAO,CAAC,yBAAyB,CAAC,GACvC,yBAAyB,CAO3B;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAQ5I;AAED,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC9B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAC9B,MAAM,CAAC,EAAE,gBAAgB,EAAE,GACzB,gBAAgB,CAKlB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAKzE;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,yBAAyB,CAAC,cAAc,CAAC,GAAG,OAAO,CAEnG;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAMpG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,CAKvE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAYlH;AAED,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACb,gBAAgB,GAAG,IAAI,CAYzB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAYlH;AAED,wBAAgB,2BAA2B,CAC1C,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACb,gBAAgB,GAAG,IAAI,CAYzB;AAED,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACb,gBAAgB,CAKlB;AAED,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACb,gBAAgB,CAOlB;AAED,wBAAgB,oBAAoB,CACnC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACN,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,OAAO,CAAC;CACf,GACC,gBAAgB,CAiBlB;AAED,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE;IACN,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,GACC,gBAAgB,CA4ClB"}
1
+ {"version":3,"file":"cline-session-state.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/cline-session-state.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="2cdbe557-46dd-5725-b456-847fd3aeef6b")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="fac69471-392b-5cbd-95c2-178d6ca436c2")}catch(e){}}();
3
3
  const CLINE_USER_ATTENTION_TOOL_NAMES = new Set(["ask_followup_question", "plan_mode_respond"]);
4
+ const WINDOWS_INVALID_SESSION_ID_CHARS = /[<>:"/\\|?*]/g;
4
5
  export function now() {
5
6
  return Date.now();
6
7
  }
@@ -23,6 +24,7 @@ export function createDefaultSummary(taskId) {
23
24
  return {
24
25
  taskId,
25
26
  state: "idle",
27
+ mode: null,
26
28
  agentId: "cline",
27
29
  workspacePath: null,
28
30
  pid: null,
@@ -62,7 +64,14 @@ export function createMessageWithMeta(taskId, role, content, meta, images) {
62
64
  };
63
65
  }
64
66
  export function createSessionId(taskId) {
65
- return `${taskId}-${now()}-${Math.random().toString(36).slice(2, 10)}`;
67
+ return `${toSessionIdTaskPrefix(taskId)}-${now()}-${Math.random().toString(36).slice(2, 10)}`;
68
+ }
69
+ export function buildSessionIdPrefix(taskId) {
70
+ return `${toSessionIdTaskPrefix(taskId)}-`;
71
+ }
72
+ function toSessionIdTaskPrefix(taskId) {
73
+ const normalized = taskId.replace(WINDOWS_INVALID_SESSION_ID_CHARS, "_").trim();
74
+ return normalized.length > 0 ? normalized : "session";
66
75
  }
67
76
  export function isClineUserAttentionTool(toolName) {
68
77
  if (!toolName) {
@@ -276,4 +285,4 @@ function getLatestAssistantMessage(entry) {
276
285
  return null;
277
286
  }
278
287
  //# sourceMappingURL=cline-session-state.js.map
279
- //# debugId=2cdbe557-46dd-5725-b456-847fd3aeef6b
288
+ //# debugId=fac69471-392b-5cbd-95c2-178d6ca436c2
@@ -1 +1 @@
1
- {"version":3,"file":"cline-session-state.js","sources":["../../src/cline-sdk/cline-session-state.ts"],"sourceRoot":"","sourcesContent":["// Pure state helpers for native Cline sessions.\n// This module owns the in-memory summary and message shape plus the low-level\n// mutations shared by the event adapter and the message repository.\nimport type { RuntimeTaskImage, RuntimeTaskSessionSummary } from \"../core/api-contract.js\";\n\nconst CLINE_USER_ATTENTION_TOOL_NAMES = new Set([\"ask_followup_question\", \"plan_mode_respond\"]);\n\nexport interface ClineTaskSessionEntry {\n\tsummary: RuntimeTaskSessionSummary;\n\tmessages: ClineTaskMessage[];\n\tactiveAssistantMessageId: string | null;\n\tactiveReasoningMessageId: string | null;\n\ttoolMessageIdByToolCallId: Map<string, string>;\n\ttoolInputByToolCallId: Map<string, unknown>;\n}\n\nexport interface ClineTaskMessage {\n\tid: string;\n\trole: \"user\" | \"assistant\" | \"system\" | \"tool\" | \"reasoning\" | \"status\";\n\tcontent: string;\n\timages?: RuntimeTaskImage[];\n\tcreatedAt: number;\n\tmeta?: {\n\t\ttoolName?: string | null;\n\t\thookEventName?: string | null;\n\t\ttoolCallId?: string | null;\n\t\tstreamType?: string | null;\n\t\tmessageKind?: string | null;\n\t\tdisplayRole?: string | null;\n\t\treason?: string | null;\n\t} | null;\n}\n\nexport function now(): number {\n\treturn Date.now();\n}\n\nexport function cloneSummary(summary: RuntimeTaskSessionSummary): RuntimeTaskSessionSummary {\n\treturn {\n\t\t...summary,\n\t\tlatestHookActivity: summary.latestHookActivity ? { ...summary.latestHookActivity } : null,\n\t\tlatestTurnCheckpoint: summary.latestTurnCheckpoint ? { ...summary.latestTurnCheckpoint } : null,\n\t\tpreviousTurnCheckpoint: summary.previousTurnCheckpoint ? { ...summary.previousTurnCheckpoint } : null,\n\t};\n}\n\nexport function cloneMessage(message: ClineTaskMessage): ClineTaskMessage {\n\treturn {\n\t\t...message,\n\t\timages: message.images ? message.images.map((image) => ({ ...image })) : message.images,\n\t\tmeta: message.meta ? { ...message.meta } : message.meta,\n\t};\n}\n\nexport function createDefaultSummary(taskId: string): RuntimeTaskSessionSummary {\n\treturn {\n\t\ttaskId,\n\t\tstate: \"idle\",\n\t\tagentId: \"cline\",\n\t\tworkspacePath: null,\n\t\tpid: null,\n\t\tstartedAt: null,\n\t\tupdatedAt: now(),\n\t\tlastOutputAt: null,\n\t\treviewReason: null,\n\t\texitCode: null,\n\t\tlastHookAt: null,\n\t\tlatestHookActivity: null,\n\t\twarningMessage: null,\n\t\tlatestTurnCheckpoint: null,\n\t\tpreviousTurnCheckpoint: null,\n\t};\n}\n\nexport function updateSummary(\n\tentry: ClineTaskSessionEntry,\n\tpatch: Partial<RuntimeTaskSessionSummary>,\n): RuntimeTaskSessionSummary {\n\tentry.summary = {\n\t\t...entry.summary,\n\t\t...patch,\n\t\tupdatedAt: now(),\n\t};\n\treturn cloneSummary(entry.summary);\n}\n\nexport function createMessage(taskId: string, role: ClineTaskMessage[\"role\"], content: string, images?: RuntimeTaskImage[]): ClineTaskMessage {\n\treturn {\n\t\tid: `${taskId}-${now()}-${Math.random().toString(36).slice(2, 8)}`,\n\t\trole,\n\t\tcontent,\n\t\timages: images && images.length > 0 ? images.map((image) => ({ ...image })) : undefined,\n\t\tcreatedAt: now(),\n\t};\n}\n\nexport function createMessageWithMeta(\n\ttaskId: string,\n\trole: ClineTaskMessage[\"role\"],\n\tcontent: string,\n\tmeta: ClineTaskMessage[\"meta\"],\n\timages?: RuntimeTaskImage[],\n): ClineTaskMessage {\n\treturn {\n\t\t...createMessage(taskId, role, content, images),\n\t\tmeta,\n\t};\n}\n\nexport function createSessionId(taskId: string): string {\n\treturn `${taskId}-${now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nexport function isClineUserAttentionTool(toolName: string | null): boolean {\n\tif (!toolName) {\n\t\treturn false;\n\t}\n\treturn CLINE_USER_ATTENTION_TOOL_NAMES.has(toolName.trim().toLowerCase());\n}\n\nexport function canReturnToRunning(reviewReason: RuntimeTaskSessionSummary[\"reviewReason\"]): boolean {\n\treturn reviewReason === \"attention\" || reviewReason === \"hook\" || reviewReason === \"error\";\n}\n\nexport function latestAssistantMessageMatches(entry: ClineTaskSessionEntry, content: string): boolean {\n\tconst latestAssistant = getLatestAssistantMessage(entry);\n\tif (!latestAssistant) {\n\t\treturn false;\n\t}\n\treturn latestAssistant.content.trim() === content.trim();\n}\n\nexport function clearActiveTurnState(entry: ClineTaskSessionEntry): void {\n\tentry.activeAssistantMessageId = null;\n\tentry.activeReasoningMessageId = null;\n\tentry.toolMessageIdByToolCallId.clear();\n\tentry.toolInputByToolCallId.clear();\n}\n\nexport function appendAssistantChunk(entry: ClineTaskSessionEntry, taskId: string, chunk: string): ClineTaskMessage {\n\tconst existingMessageId = entry.activeAssistantMessageId;\n\tif (existingMessageId) {\n\t\tconst updatedMessage = updateMessageInEntry(entry, existingMessageId, (currentMessage) => ({\n\t\t\t...currentMessage,\n\t\t\tcontent: `${currentMessage.content}${chunk}`,\n\t\t}));\n\t\tif (updatedMessage) {\n\t\t\treturn updatedMessage;\n\t\t}\n\t}\n\treturn createAssistantMessage(entry, taskId, chunk);\n}\n\nexport function setOrCreateAssistantMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tcontent: string,\n): ClineTaskMessage | null {\n\tif (!entry.activeAssistantMessageId) {\n\t\treturn null;\n\t}\n\tconst updatedMessage = updateMessageInEntry(entry, entry.activeAssistantMessageId, (currentMessage) => ({\n\t\t...currentMessage,\n\t\tcontent,\n\t}));\n\tif (updatedMessage) {\n\t\treturn updatedMessage;\n\t}\n\treturn createAssistantMessage(entry, taskId, content);\n}\n\nexport function appendReasoningChunk(entry: ClineTaskSessionEntry, taskId: string, chunk: string): ClineTaskMessage {\n\tconst existingMessageId = entry.activeReasoningMessageId;\n\tif (existingMessageId) {\n\t\tconst updatedMessage = updateMessageInEntry(entry, existingMessageId, (currentMessage) => ({\n\t\t\t...currentMessage,\n\t\t\tcontent: `${currentMessage.content}${chunk}`,\n\t\t}));\n\t\tif (updatedMessage) {\n\t\t\treturn updatedMessage;\n\t\t}\n\t}\n\treturn createReasoningMessage(entry, taskId, chunk);\n}\n\nexport function setOrCreateReasoningMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tcontent: string,\n): ClineTaskMessage | null {\n\tif (!entry.activeReasoningMessageId) {\n\t\treturn null;\n\t}\n\tconst updatedMessage = updateMessageInEntry(entry, entry.activeReasoningMessageId, (currentMessage) => ({\n\t\t...currentMessage,\n\t\tcontent,\n\t}));\n\tif (updatedMessage) {\n\t\treturn updatedMessage;\n\t}\n\treturn createReasoningMessage(entry, taskId, content);\n}\n\nexport function createAssistantMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tcontent: string,\n): ClineTaskMessage {\n\tconst message = createMessage(taskId, \"assistant\", content);\n\tentry.messages.push(message);\n\tentry.activeAssistantMessageId = message.id;\n\treturn message;\n}\n\nexport function createReasoningMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tcontent: string,\n): ClineTaskMessage {\n\tconst message = createMessageWithMeta(taskId, \"reasoning\", content, {\n\t\tstreamType: \"reasoning\",\n\t});\n\tentry.messages.push(message);\n\tentry.activeReasoningMessageId = message.id;\n\treturn message;\n}\n\nexport function startToolCallMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tinput: {\n\t\ttoolName: string | null;\n\t\ttoolCallId: string | null;\n\t\tinput: unknown;\n\t},\n): ClineTaskMessage {\n\tconst toolContent = buildToolCallContent({\n\t\ttoolName: input.toolName,\n\t\tinput: input.input,\n\t});\n\tconst message = createMessageWithMeta(taskId, \"tool\", toolContent, {\n\t\ttoolName: input.toolName,\n\t\thookEventName: \"tool_call_start\",\n\t\ttoolCallId: input.toolCallId,\n\t\tstreamType: \"tool\",\n\t});\n\tentry.messages.push(message);\n\tif (input.toolCallId) {\n\t\tentry.toolMessageIdByToolCallId.set(input.toolCallId, message.id);\n\t\tentry.toolInputByToolCallId.set(input.toolCallId, input.input);\n\t}\n\treturn message;\n}\n\nexport function finishToolCallMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tinput: {\n\t\ttoolName: string | null;\n\t\ttoolCallId: string | null;\n\t\toutput: unknown;\n\t\terror: string | null;\n\t\tdurationMs: number | null;\n\t},\n): ClineTaskMessage {\n\tconst existingMessageId = input.toolCallId\n\t\t? entry.toolMessageIdByToolCallId.get(input.toolCallId) ?? null\n\t\t: null;\n\tconst toolInput = input.toolCallId ? entry.toolInputByToolCallId.get(input.toolCallId) : undefined;\n\tconst content = buildToolCallContent({\n\t\ttoolName: input.toolName,\n\t\tinput: toolInput,\n\t\toutput: input.output,\n\t\terror: input.error,\n\t\tdurationMs: input.durationMs,\n\t});\n\tif (existingMessageId) {\n\t\tconst updatedMessage = updateMessageInEntry(entry, existingMessageId, (currentMessage) => ({\n\t\t\t...currentMessage,\n\t\t\tcontent,\n\t\t\tmeta: {\n\t\t\t\t...(currentMessage.meta ?? {}),\n\t\t\t\ttoolName: input.toolName,\n\t\t\t\thookEventName: \"tool_call_end\",\n\t\t\t\ttoolCallId: input.toolCallId,\n\t\t\t\tstreamType: \"tool\",\n\t\t\t},\n\t\t}));\n\t\tif (updatedMessage) {\n\t\t\tif (input.toolCallId) {\n\t\t\t\tentry.toolMessageIdByToolCallId.delete(input.toolCallId);\n\t\t\t\tentry.toolInputByToolCallId.delete(input.toolCallId);\n\t\t\t}\n\t\t\treturn updatedMessage;\n\t\t}\n\t}\n\tconst message = createMessageWithMeta(taskId, \"tool\", content, {\n\t\ttoolName: input.toolName,\n\t\thookEventName: \"tool_call_end\",\n\t\ttoolCallId: input.toolCallId,\n\t\tstreamType: \"tool\",\n\t});\n\tif (input.toolCallId) {\n\t\tentry.toolMessageIdByToolCallId.delete(input.toolCallId);\n\t\tentry.toolInputByToolCallId.delete(input.toolCallId);\n\t}\n\tentry.messages.push(message);\n\treturn message;\n}\n\nfunction stringifyPayload(payload: unknown): string {\n\tif (payload === undefined || payload === null) {\n\t\treturn \"\";\n\t}\n\tif (typeof payload === \"string\") {\n\t\treturn payload;\n\t}\n\ttry {\n\t\treturn JSON.stringify(payload, null, 2);\n\t} catch {\n\t\treturn String(payload);\n\t}\n}\n\nfunction buildToolCallContent(input: {\n\ttoolName: string | null;\n\tinput: unknown;\n\toutput?: unknown;\n\terror?: string | null;\n\tdurationMs?: number | null;\n}): string {\n\tconst lines: string[] = [];\n\tlines.push(`Tool: ${input.toolName ?? \"unknown\"}`);\n\tconst inputText = stringifyPayload(input.input);\n\tif (inputText) {\n\t\tlines.push(\"Input:\");\n\t\tlines.push(inputText);\n\t}\n\tif (input.error) {\n\t\tlines.push(\"Error:\");\n\t\tlines.push(input.error);\n\t} else if (input.output !== undefined) {\n\t\tconst outputText = stringifyPayload(input.output);\n\t\tif (outputText) {\n\t\t\tlines.push(\"Output:\");\n\t\t\tlines.push(outputText);\n\t\t}\n\t}\n\tif (typeof input.durationMs === \"number\" && Number.isFinite(input.durationMs)) {\n\t\tlines.push(`Duration: ${Math.max(0, Math.round(input.durationMs))}ms`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nfunction updateMessageInEntry(\n\tentry: ClineTaskSessionEntry,\n\tmessageId: string,\n\tupdater: (currentMessage: ClineTaskMessage) => ClineTaskMessage,\n): ClineTaskMessage | null {\n\tconst messageIndex = entry.messages.findIndex((message) => message.id === messageId);\n\tif (messageIndex < 0) {\n\t\treturn null;\n\t}\n\tconst currentMessage = entry.messages[messageIndex];\n\tif (!currentMessage) {\n\t\treturn null;\n\t}\n\tconst nextMessage = updater(currentMessage);\n\tentry.messages[messageIndex] = nextMessage;\n\treturn nextMessage;\n}\n\nfunction getLatestAssistantMessage(entry: ClineTaskSessionEntry): ClineTaskMessage | null {\n\tfor (let index = entry.messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = entry.messages[index];\n\t\tif (message?.role === \"assistant\") {\n\t\t\treturn message;\n\t\t}\n\t}\n\treturn null;\n}\n"],"names":[],"mappings":"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","debugId":"2cdbe557-46dd-5725-b456-847fd3aeef6b"}
1
+ {"version":3,"file":"cline-session-state.js","sources":["../../src/cline-sdk/cline-session-state.ts"],"sourceRoot":"","sourcesContent":["// Pure state helpers for native Cline sessions.\n// This module owns the in-memory summary and message shape plus the low-level\n// mutations shared by the event adapter and the message repository.\nimport type { RuntimeTaskImage, RuntimeTaskSessionSummary } from \"../core/api-contract.js\";\n\nconst CLINE_USER_ATTENTION_TOOL_NAMES = new Set([\"ask_followup_question\", \"plan_mode_respond\"]);\nconst WINDOWS_INVALID_SESSION_ID_CHARS = /[<>:\"/\\\\|?*]/g;\n\nexport interface ClineTaskSessionEntry {\n\tsummary: RuntimeTaskSessionSummary;\n\tmessages: ClineTaskMessage[];\n\tactiveAssistantMessageId: string | null;\n\tactiveReasoningMessageId: string | null;\n\ttoolMessageIdByToolCallId: Map<string, string>;\n\ttoolInputByToolCallId: Map<string, unknown>;\n}\n\nexport interface ClineTaskMessage {\n\tid: string;\n\trole: \"user\" | \"assistant\" | \"system\" | \"tool\" | \"reasoning\" | \"status\";\n\tcontent: string;\n\timages?: RuntimeTaskImage[];\n\tcreatedAt: number;\n\tmeta?: {\n\t\ttoolName?: string | null;\n\t\thookEventName?: string | null;\n\t\ttoolCallId?: string | null;\n\t\tstreamType?: string | null;\n\t\tmessageKind?: string | null;\n\t\tdisplayRole?: string | null;\n\t\treason?: string | null;\n\t} | null;\n}\n\nexport function now(): number {\n\treturn Date.now();\n}\n\nexport function cloneSummary(summary: RuntimeTaskSessionSummary): RuntimeTaskSessionSummary {\n\treturn {\n\t\t...summary,\n\t\tlatestHookActivity: summary.latestHookActivity ? { ...summary.latestHookActivity } : null,\n\t\tlatestTurnCheckpoint: summary.latestTurnCheckpoint ? { ...summary.latestTurnCheckpoint } : null,\n\t\tpreviousTurnCheckpoint: summary.previousTurnCheckpoint ? { ...summary.previousTurnCheckpoint } : null,\n\t};\n}\n\nexport function cloneMessage(message: ClineTaskMessage): ClineTaskMessage {\n\treturn {\n\t\t...message,\n\t\timages: message.images ? message.images.map((image) => ({ ...image })) : message.images,\n\t\tmeta: message.meta ? { ...message.meta } : message.meta,\n\t};\n}\n\nexport function createDefaultSummary(taskId: string): RuntimeTaskSessionSummary {\n\treturn {\n\t\ttaskId,\n\t\tstate: \"idle\",\n\t\tmode: null,\n\t\tagentId: \"cline\",\n\t\tworkspacePath: null,\n\t\tpid: null,\n\t\tstartedAt: null,\n\t\tupdatedAt: now(),\n\t\tlastOutputAt: null,\n\t\treviewReason: null,\n\t\texitCode: null,\n\t\tlastHookAt: null,\n\t\tlatestHookActivity: null,\n\t\twarningMessage: null,\n\t\tlatestTurnCheckpoint: null,\n\t\tpreviousTurnCheckpoint: null,\n\t};\n}\n\nexport function updateSummary(\n\tentry: ClineTaskSessionEntry,\n\tpatch: Partial<RuntimeTaskSessionSummary>,\n): RuntimeTaskSessionSummary {\n\tentry.summary = {\n\t\t...entry.summary,\n\t\t...patch,\n\t\tupdatedAt: now(),\n\t};\n\treturn cloneSummary(entry.summary);\n}\n\nexport function createMessage(taskId: string, role: ClineTaskMessage[\"role\"], content: string, images?: RuntimeTaskImage[]): ClineTaskMessage {\n\treturn {\n\t\tid: `${taskId}-${now()}-${Math.random().toString(36).slice(2, 8)}`,\n\t\trole,\n\t\tcontent,\n\t\timages: images && images.length > 0 ? images.map((image) => ({ ...image })) : undefined,\n\t\tcreatedAt: now(),\n\t};\n}\n\nexport function createMessageWithMeta(\n\ttaskId: string,\n\trole: ClineTaskMessage[\"role\"],\n\tcontent: string,\n\tmeta: ClineTaskMessage[\"meta\"],\n\timages?: RuntimeTaskImage[],\n): ClineTaskMessage {\n\treturn {\n\t\t...createMessage(taskId, role, content, images),\n\t\tmeta,\n\t};\n}\n\nexport function createSessionId(taskId: string): string {\n\treturn `${toSessionIdTaskPrefix(taskId)}-${now()}-${Math.random().toString(36).slice(2, 10)}`;\n}\n\nexport function buildSessionIdPrefix(taskId: string): string {\n\treturn `${toSessionIdTaskPrefix(taskId)}-`;\n}\n\nfunction toSessionIdTaskPrefix(taskId: string): string {\n\tconst normalized = taskId.replace(WINDOWS_INVALID_SESSION_ID_CHARS, \"_\").trim();\n\treturn normalized.length > 0 ? normalized : \"session\";\n}\n\nexport function isClineUserAttentionTool(toolName: string | null): boolean {\n\tif (!toolName) {\n\t\treturn false;\n\t}\n\treturn CLINE_USER_ATTENTION_TOOL_NAMES.has(toolName.trim().toLowerCase());\n}\n\nexport function canReturnToRunning(reviewReason: RuntimeTaskSessionSummary[\"reviewReason\"]): boolean {\n\treturn reviewReason === \"attention\" || reviewReason === \"hook\" || reviewReason === \"error\";\n}\n\nexport function latestAssistantMessageMatches(entry: ClineTaskSessionEntry, content: string): boolean {\n\tconst latestAssistant = getLatestAssistantMessage(entry);\n\tif (!latestAssistant) {\n\t\treturn false;\n\t}\n\treturn latestAssistant.content.trim() === content.trim();\n}\n\nexport function clearActiveTurnState(entry: ClineTaskSessionEntry): void {\n\tentry.activeAssistantMessageId = null;\n\tentry.activeReasoningMessageId = null;\n\tentry.toolMessageIdByToolCallId.clear();\n\tentry.toolInputByToolCallId.clear();\n}\n\nexport function appendAssistantChunk(entry: ClineTaskSessionEntry, taskId: string, chunk: string): ClineTaskMessage {\n\tconst existingMessageId = entry.activeAssistantMessageId;\n\tif (existingMessageId) {\n\t\tconst updatedMessage = updateMessageInEntry(entry, existingMessageId, (currentMessage) => ({\n\t\t\t...currentMessage,\n\t\t\tcontent: `${currentMessage.content}${chunk}`,\n\t\t}));\n\t\tif (updatedMessage) {\n\t\t\treturn updatedMessage;\n\t\t}\n\t}\n\treturn createAssistantMessage(entry, taskId, chunk);\n}\n\nexport function setOrCreateAssistantMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tcontent: string,\n): ClineTaskMessage | null {\n\tif (!entry.activeAssistantMessageId) {\n\t\treturn null;\n\t}\n\tconst updatedMessage = updateMessageInEntry(entry, entry.activeAssistantMessageId, (currentMessage) => ({\n\t\t...currentMessage,\n\t\tcontent,\n\t}));\n\tif (updatedMessage) {\n\t\treturn updatedMessage;\n\t}\n\treturn createAssistantMessage(entry, taskId, content);\n}\n\nexport function appendReasoningChunk(entry: ClineTaskSessionEntry, taskId: string, chunk: string): ClineTaskMessage {\n\tconst existingMessageId = entry.activeReasoningMessageId;\n\tif (existingMessageId) {\n\t\tconst updatedMessage = updateMessageInEntry(entry, existingMessageId, (currentMessage) => ({\n\t\t\t...currentMessage,\n\t\t\tcontent: `${currentMessage.content}${chunk}`,\n\t\t}));\n\t\tif (updatedMessage) {\n\t\t\treturn updatedMessage;\n\t\t}\n\t}\n\treturn createReasoningMessage(entry, taskId, chunk);\n}\n\nexport function setOrCreateReasoningMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tcontent: string,\n): ClineTaskMessage | null {\n\tif (!entry.activeReasoningMessageId) {\n\t\treturn null;\n\t}\n\tconst updatedMessage = updateMessageInEntry(entry, entry.activeReasoningMessageId, (currentMessage) => ({\n\t\t...currentMessage,\n\t\tcontent,\n\t}));\n\tif (updatedMessage) {\n\t\treturn updatedMessage;\n\t}\n\treturn createReasoningMessage(entry, taskId, content);\n}\n\nexport function createAssistantMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tcontent: string,\n): ClineTaskMessage {\n\tconst message = createMessage(taskId, \"assistant\", content);\n\tentry.messages.push(message);\n\tentry.activeAssistantMessageId = message.id;\n\treturn message;\n}\n\nexport function createReasoningMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tcontent: string,\n): ClineTaskMessage {\n\tconst message = createMessageWithMeta(taskId, \"reasoning\", content, {\n\t\tstreamType: \"reasoning\",\n\t});\n\tentry.messages.push(message);\n\tentry.activeReasoningMessageId = message.id;\n\treturn message;\n}\n\nexport function startToolCallMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tinput: {\n\t\ttoolName: string | null;\n\t\ttoolCallId: string | null;\n\t\tinput: unknown;\n\t},\n): ClineTaskMessage {\n\tconst toolContent = buildToolCallContent({\n\t\ttoolName: input.toolName,\n\t\tinput: input.input,\n\t});\n\tconst message = createMessageWithMeta(taskId, \"tool\", toolContent, {\n\t\ttoolName: input.toolName,\n\t\thookEventName: \"tool_call_start\",\n\t\ttoolCallId: input.toolCallId,\n\t\tstreamType: \"tool\",\n\t});\n\tentry.messages.push(message);\n\tif (input.toolCallId) {\n\t\tentry.toolMessageIdByToolCallId.set(input.toolCallId, message.id);\n\t\tentry.toolInputByToolCallId.set(input.toolCallId, input.input);\n\t}\n\treturn message;\n}\n\nexport function finishToolCallMessage(\n\tentry: ClineTaskSessionEntry,\n\ttaskId: string,\n\tinput: {\n\t\ttoolName: string | null;\n\t\ttoolCallId: string | null;\n\t\toutput: unknown;\n\t\terror: string | null;\n\t\tdurationMs: number | null;\n\t},\n): ClineTaskMessage {\n\tconst existingMessageId = input.toolCallId\n\t\t? entry.toolMessageIdByToolCallId.get(input.toolCallId) ?? null\n\t\t: null;\n\tconst toolInput = input.toolCallId ? entry.toolInputByToolCallId.get(input.toolCallId) : undefined;\n\tconst content = buildToolCallContent({\n\t\ttoolName: input.toolName,\n\t\tinput: toolInput,\n\t\toutput: input.output,\n\t\terror: input.error,\n\t\tdurationMs: input.durationMs,\n\t});\n\tif (existingMessageId) {\n\t\tconst updatedMessage = updateMessageInEntry(entry, existingMessageId, (currentMessage) => ({\n\t\t\t...currentMessage,\n\t\t\tcontent,\n\t\t\tmeta: {\n\t\t\t\t...(currentMessage.meta ?? {}),\n\t\t\t\ttoolName: input.toolName,\n\t\t\t\thookEventName: \"tool_call_end\",\n\t\t\t\ttoolCallId: input.toolCallId,\n\t\t\t\tstreamType: \"tool\",\n\t\t\t},\n\t\t}));\n\t\tif (updatedMessage) {\n\t\t\tif (input.toolCallId) {\n\t\t\t\tentry.toolMessageIdByToolCallId.delete(input.toolCallId);\n\t\t\t\tentry.toolInputByToolCallId.delete(input.toolCallId);\n\t\t\t}\n\t\t\treturn updatedMessage;\n\t\t}\n\t}\n\tconst message = createMessageWithMeta(taskId, \"tool\", content, {\n\t\ttoolName: input.toolName,\n\t\thookEventName: \"tool_call_end\",\n\t\ttoolCallId: input.toolCallId,\n\t\tstreamType: \"tool\",\n\t});\n\tif (input.toolCallId) {\n\t\tentry.toolMessageIdByToolCallId.delete(input.toolCallId);\n\t\tentry.toolInputByToolCallId.delete(input.toolCallId);\n\t}\n\tentry.messages.push(message);\n\treturn message;\n}\n\nfunction stringifyPayload(payload: unknown): string {\n\tif (payload === undefined || payload === null) {\n\t\treturn \"\";\n\t}\n\tif (typeof payload === \"string\") {\n\t\treturn payload;\n\t}\n\ttry {\n\t\treturn JSON.stringify(payload, null, 2);\n\t} catch {\n\t\treturn String(payload);\n\t}\n}\n\nfunction buildToolCallContent(input: {\n\ttoolName: string | null;\n\tinput: unknown;\n\toutput?: unknown;\n\terror?: string | null;\n\tdurationMs?: number | null;\n}): string {\n\tconst lines: string[] = [];\n\tlines.push(`Tool: ${input.toolName ?? \"unknown\"}`);\n\tconst inputText = stringifyPayload(input.input);\n\tif (inputText) {\n\t\tlines.push(\"Input:\");\n\t\tlines.push(inputText);\n\t}\n\tif (input.error) {\n\t\tlines.push(\"Error:\");\n\t\tlines.push(input.error);\n\t} else if (input.output !== undefined) {\n\t\tconst outputText = stringifyPayload(input.output);\n\t\tif (outputText) {\n\t\t\tlines.push(\"Output:\");\n\t\t\tlines.push(outputText);\n\t\t}\n\t}\n\tif (typeof input.durationMs === \"number\" && Number.isFinite(input.durationMs)) {\n\t\tlines.push(`Duration: ${Math.max(0, Math.round(input.durationMs))}ms`);\n\t}\n\treturn lines.join(\"\\n\");\n}\n\nfunction updateMessageInEntry(\n\tentry: ClineTaskSessionEntry,\n\tmessageId: string,\n\tupdater: (currentMessage: ClineTaskMessage) => ClineTaskMessage,\n): ClineTaskMessage | null {\n\tconst messageIndex = entry.messages.findIndex((message) => message.id === messageId);\n\tif (messageIndex < 0) {\n\t\treturn null;\n\t}\n\tconst currentMessage = entry.messages[messageIndex];\n\tif (!currentMessage) {\n\t\treturn null;\n\t}\n\tconst nextMessage = updater(currentMessage);\n\tentry.messages[messageIndex] = nextMessage;\n\treturn nextMessage;\n}\n\nfunction getLatestAssistantMessage(entry: ClineTaskSessionEntry): ClineTaskMessage | null {\n\tfor (let index = entry.messages.length - 1; index >= 0; index -= 1) {\n\t\tconst message = entry.messages[index];\n\t\tif (message?.role === \"assistant\") {\n\t\t\treturn message;\n\t\t}\n\t}\n\treturn null;\n}\n"],"names":[],"mappings":"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","debugId":"fac69471-392b-5cbd-95c2-178d6ca436c2"}
@@ -47,6 +47,7 @@ export declare class InMemoryClineTaskSessionService implements ClineTaskSession
47
47
  onSummary(listener: (summary: RuntimeTaskSessionSummary) => void): () => void;
48
48
  onMessage(listener: (taskId: string, message: ClineTaskMessage) => void): () => void;
49
49
  private emitTaskFailure;
50
+ private dispatchResolvedTaskInput;
50
51
  startTaskSession(request: StartClineTaskSessionRequest): Promise<RuntimeTaskSessionSummary>;
51
52
  stopTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null>;
52
53
  abortTaskSession(taskId: string): Promise<RuntimeTaskSessionSummary | null>;
@@ -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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"}
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="3e84ad45-03bb-51dd-b40e-0023663659a9")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4e409993-3fea-5c84-979b-3a831de5c01f")}catch(e){}}();
3
3
  import { isHomeAgentSessionId } from "../core/home-agent-session.js";
4
4
  import { resolveHomeAgentAppendSystemPrompt } from "../prompts/append-system-prompt.js";
5
5
  import { captureTaskTurnCheckpoint, deleteTaskTurnCheckpointRef } from "../workspace/turn-checkpoints.js";
@@ -92,6 +92,25 @@ export class InMemoryClineTaskSessionService {
92
92
  });
93
93
  this.emitSummary(errorSummary);
94
94
  }
95
+ async dispatchResolvedTaskInput(input) {
96
+ if (this.sessionRuntime.getTaskSessionId(input.taskId)) {
97
+ return {
98
+ result: await this.sessionRuntime.sendTaskSessionInput(input.taskId, input.prompt, input.mode, input.images, input.delivery),
99
+ };
100
+ }
101
+ const persistedSnapshot = await this.sessionRuntime.readPersistedTaskSession(input.taskId);
102
+ const restartedSession = await this.sessionRuntime.restartTaskSession({
103
+ taskId: input.taskId,
104
+ prompt: input.prompt,
105
+ mode: input.mode,
106
+ images: input.images,
107
+ initialMessages: persistedSnapshot?.messages,
108
+ });
109
+ return {
110
+ result: restartedSession.result,
111
+ warnings: restartedSession.warnings,
112
+ };
113
+ }
95
114
  async startTaskSession(request) {
96
115
  const existing = this.messageRepository.getTaskEntry(request.taskId);
97
116
  if (existing && (existing.summary.state === "running" || existing.summary.state === "awaiting_review")) {
@@ -99,22 +118,35 @@ export class InMemoryClineTaskSessionService {
99
118
  }
100
119
  const providerId = request.providerId?.trim() || "anthropic";
101
120
  const modelId = request.modelId?.trim() || "claude-sonnet-4-6";
102
- const summary = {
103
- ...createDefaultSummary(request.taskId),
104
- state: request.resumeFromTrash ? "awaiting_review" : "running",
105
- workspacePath: request.cwd,
106
- startedAt: now(),
107
- lastOutputAt: now(),
108
- reviewReason: request.resumeFromTrash ? "attention" : null,
109
- };
110
- const entry = {
111
- summary,
112
- messages: [],
113
- activeAssistantMessageId: null,
114
- activeReasoningMessageId: null,
115
- toolMessageIdByToolCallId: new Map(),
116
- toolInputByToolCallId: new Map(),
117
- };
121
+ const resolvedMode = request.mode ?? "act";
122
+ const persistedResumeSnapshot = request.resumeFromTrash
123
+ ? await this.sessionRuntime.readPersistedTaskSession(request.taskId).catch(() => null)
124
+ : null;
125
+ const entry = request.resumeFromTrash && persistedResumeSnapshot
126
+ ? createTaskEntryFromPersistedSession(request.taskId, persistedResumeSnapshot.messages, {
127
+ state: "awaiting_review",
128
+ mode: resolvedMode,
129
+ workspacePath: request.cwd,
130
+ startedAt: now(),
131
+ lastOutputAt: now(),
132
+ reviewReason: "attention",
133
+ })
134
+ : {
135
+ summary: {
136
+ ...createDefaultSummary(request.taskId),
137
+ state: request.resumeFromTrash ? "awaiting_review" : "running",
138
+ mode: resolvedMode,
139
+ workspacePath: request.cwd,
140
+ startedAt: now(),
141
+ lastOutputAt: now(),
142
+ reviewReason: request.resumeFromTrash ? "attention" : null,
143
+ },
144
+ messages: [],
145
+ activeAssistantMessageId: null,
146
+ activeReasoningMessageId: null,
147
+ toolMessageIdByToolCallId: new Map(),
148
+ toolInputByToolCallId: new Map(),
149
+ };
118
150
  this.messageRepository.setTaskEntry(request.taskId, entry);
119
151
  this.pendingTurnCancelTaskIds.delete(request.taskId);
120
152
  const normalizedPrompt = request.prompt.trim();
@@ -140,7 +172,7 @@ export class InMemoryClineTaskSessionService {
140
172
  });
141
173
  this.emitSummary(runningSummary);
142
174
  }
143
- this.emitSummary(summary);
175
+ this.emitSummary(entry.summary);
144
176
  void (async () => {
145
177
  const assistantCountBeforeStart = entry.messages.filter((message) => message.role === "assistant").length;
146
178
  try {
@@ -159,10 +191,11 @@ export class InMemoryClineTaskSessionService {
159
191
  taskId: request.taskId,
160
192
  cwd: request.cwd,
161
193
  prompt: runtimePrompt,
194
+ initialMessages: request.resumeFromTrash ? persistedResumeSnapshot?.messages : undefined,
162
195
  images: request.images,
163
196
  providerId,
164
197
  modelId,
165
- mode: request.mode,
198
+ mode: resolvedMode,
166
199
  apiKey: request.apiKey,
167
200
  baseUrl: request.baseUrl,
168
201
  systemPrompt,
@@ -190,7 +223,7 @@ export class InMemoryClineTaskSessionService {
190
223
  this.emitTaskFailure(request.taskId, entry, "start", error);
191
224
  }
192
225
  })();
193
- return cloneSummary(summary);
226
+ return cloneSummary(entry.summary);
194
227
  }
195
228
  async stopTaskSession(taskId) {
196
229
  let entry = this.messageRepository.getTaskEntry(taskId);
@@ -280,6 +313,7 @@ export class InMemoryClineTaskSessionService {
280
313
  this.pendingTurnCancelTaskIds.delete(taskId);
281
314
  const normalized = text.trim();
282
315
  const hasImages = Boolean(images && images.length > 0);
316
+ const effectiveMode = mode ?? entry.summary.mode ?? "act";
283
317
  if (normalized.length === 0 && !hasImages) {
284
318
  return null;
285
319
  }
@@ -288,9 +322,12 @@ export class InMemoryClineTaskSessionService {
288
322
  entry.messages.push(message);
289
323
  this.emitMessage(taskId, message);
290
324
  clearActiveTurnState(entry);
325
+ const queueDelivery = entry.summary.state === "running";
291
326
  const waitingSummary = updateSummary(entry, {
292
327
  state: "running",
328
+ mode: effectiveMode,
293
329
  reviewReason: null,
330
+ warningMessage: null,
294
331
  lastOutputAt: now(),
295
332
  lastHookAt: now(),
296
333
  latestHookActivity: {
@@ -306,8 +343,22 @@ export class InMemoryClineTaskSessionService {
306
343
  this.emitSummary(waitingSummary);
307
344
  const assistantCountBeforeSend = entry.messages.filter((message) => message.role === "assistant").length;
308
345
  void this.ensureRuntimeSetup(entry.summary.workspacePath ?? "")
309
- .then((runtimeSetup) => this.sessionRuntime.sendTaskSessionInput(taskId, runtimeSetup.resolvePrompt(normalized), mode, images))
310
- .then((result) => {
346
+ .then(async (runtimeSetup) => {
347
+ return await this.dispatchResolvedTaskInput({
348
+ taskId,
349
+ prompt: runtimeSetup.resolvePrompt(normalized),
350
+ mode: effectiveMode,
351
+ images,
352
+ delivery: queueDelivery ? "queue" : undefined,
353
+ });
354
+ })
355
+ .then(({ result, warnings }) => {
356
+ const warningMessage = formatStartWarnings(warnings);
357
+ if (warningMessage) {
358
+ this.emitSummary(updateSummary(entry, {
359
+ warningMessage,
360
+ }));
361
+ }
311
362
  const agentText = readAgentResultText(result);
312
363
  if (agentText) {
313
364
  const assistantCountAfterSend = entry.messages.filter((message) => message.role === "assistant").length;
@@ -325,6 +376,7 @@ export class InMemoryClineTaskSessionService {
325
376
  }
326
377
  const summary = updateSummary(entry, {
327
378
  state: "running",
379
+ mode: effectiveMode,
328
380
  reviewReason: null,
329
381
  lastOutputAt: now(),
330
382
  });
@@ -349,6 +401,7 @@ export class InMemoryClineTaskSessionService {
349
401
  const entry = createTaskEntryFromPersistedSession(taskId, snapshot.messages, {
350
402
  agentId: "cline",
351
403
  state: reboundState,
404
+ mode: existingEntry?.summary.mode ?? null,
352
405
  reviewReason: reboundReviewReason,
353
406
  workspacePath: persistedCwd || persistedWorkspaceRoot || null,
354
407
  startedAt: Number.isFinite(startedAt) ? startedAt : null,
@@ -475,4 +528,4 @@ export function createInMemoryClineTaskSessionService(options = {}) {
475
528
  return new InMemoryClineTaskSessionService(options);
476
529
  }
477
530
  //# sourceMappingURL=cline-task-session-service.js.map
478
- //# debugId=3e84ad45-03bb-51dd-b40e-0023663659a9
531
+ //# debugId=4e409993-3fea-5c84-979b-3a831de5c01f