kanban 0.1.41 → 0.1.43

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 (34) hide show
  1. package/dist/cli.js +3 -3
  2. package/dist/cli.js.map +1 -1
  3. package/dist/cline-sdk/cline-provider-service.d.ts +2 -1
  4. package/dist/cline-sdk/cline-provider-service.d.ts.map +1 -1
  5. package/dist/cline-sdk/cline-provider-service.js +44 -3
  6. package/dist/cline-sdk/cline-provider-service.js.map +1 -1
  7. package/dist/cline-sdk/sdk-provider-boundary.d.ts +9 -0
  8. package/dist/cline-sdk/sdk-provider-boundary.d.ts.map +1 -1
  9. package/dist/cline-sdk/sdk-provider-boundary.js +13 -2
  10. package/dist/cline-sdk/sdk-provider-boundary.js.map +1 -1
  11. package/dist/core/api-contract.d.ts +5 -0
  12. package/dist/core/api-contract.d.ts.map +1 -1
  13. package/dist/core/api-contract.js +6 -2
  14. package/dist/core/api-contract.js.map +1 -1
  15. package/dist/server/directory-picker.d.ts.map +1 -1
  16. package/dist/server/directory-picker.js +6 -2
  17. package/dist/server/directory-picker.js.map +1 -1
  18. package/dist/trpc/app-router.d.ts +10 -1
  19. package/dist/trpc/app-router.d.ts.map +1 -1
  20. package/dist/trpc/app-router.js +8 -3
  21. package/dist/trpc/app-router.js.map +1 -1
  22. package/dist/trpc/runtime-api.d.ts.map +1 -1
  23. package/dist/trpc/runtime-api.js +5 -2
  24. package/dist/trpc/runtime-api.js.map +1 -1
  25. package/dist/update/auto-update.d.ts +1 -0
  26. package/dist/update/auto-update.d.ts.map +1 -1
  27. package/dist/update/auto-update.js +12 -3
  28. package/dist/update/auto-update.js.map +1 -1
  29. package/dist/web-ui/assets/{index-CuBw4lTr.css → index-Dh6GANSR.css} +0 -13
  30. package/dist/web-ui/assets/{index-OpsLqYwc.js → index-Dr0xh0wu.js} +12573 -12638
  31. package/dist/web-ui/assets/index-Dr0xh0wu.js.map +1 -0
  32. package/dist/web-ui/index.html +2 -2
  33. package/package.json +1 -1
  34. package/dist/web-ui/assets/index-OpsLqYwc.js.map +0 -1
package/dist/cli.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- !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]="23b379fd-89d4-5835-be6c-dc8e7efcb530")}catch(e){}}();
3
+ !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]="461d1b47-e68d-5084-b1e0-e90ad020250e")}catch(e){}}();
4
4
  import { captureNodeException, flushNodeTelemetry } from "./telemetry/sentry-node.js";
5
5
  import { spawn, spawnSync } from "node:child_process";
6
6
  import { stat } from "node:fs/promises";
@@ -359,7 +359,7 @@ async function runMainCommand(options, shouldAutoOpenBrowser) {
359
359
  }
360
360
  throw error;
361
361
  }
362
- console.log(`Kanban running at ${runtime.url}`);
362
+ console.log(`Cline Kanban running at ${runtime.url}`);
363
363
  if (!options.noOpen && shouldAutoOpenBrowser) {
364
364
  try {
365
365
  openInBrowser(runtime.url, {
@@ -456,4 +456,4 @@ void run().catch(async (error) => {
456
456
  process.exit(1);
457
457
  });
458
458
  //# sourceMappingURL=cli.js.map
459
- //# debugId=23b379fd-89d4-5835-be6c-dc8e7efcb530
459
+ //# debugId=461d1b47-e68d-5084-b1e0-e90ad020250e
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sources":["../src/cli.ts"],"sourceRoot":"","sourcesContent":["#!/usr/bin/env node\n\nimport { captureNodeException, flushNodeTelemetry } from \"./telemetry/sentry-node.js\";\nimport { spawn, spawnSync } from \"node:child_process\";\nimport { stat } from \"node:fs/promises\";\nimport { createServer as createNetServer } from \"node:net\";\nimport { Command, Option } from \"commander\";\nimport packageJson from \"../package.json\" with { type: \"json\" };\n\nimport { registerHooksCommand } from \"./commands/hooks.js\";\nimport { registerTaskCommand } from \"./commands/task.js\";\nimport { loadGlobalRuntimeConfig, loadRuntimeConfig } from \"./config/runtime-config.js\";\nimport type { RuntimeCommandRunResponse } from \"./core/api-contract.js\";\nimport { createGitProcessEnv } from \"./core/git-process-env.js\";\nimport {\n\tinstallGracefulShutdownHandlers,\n\tshouldSuppressImmediateDuplicateShutdownSignals,\n} from \"./core/graceful-shutdown.js\";\nimport {\n\tbuildKanbanRuntimeUrl,\n\tDEFAULT_KANBAN_RUNTIME_PORT,\n\tgetKanbanRuntimeHost,\n\tgetKanbanRuntimeOrigin,\n\tgetKanbanRuntimePort,\n\tparseRuntimePort,\n\tsetKanbanRuntimeHost,\n\tsetKanbanRuntimePort,\n} from \"./core/runtime-endpoint.js\";\nimport { terminateProcessForTimeout } from \"./server/process-termination.js\";\nimport type { RuntimeStateHub } from \"./server/runtime-state-hub.js\";\nimport type { TerminalSessionManager } from \"./terminal/session-manager.js\";\n\ninterface CliOptions {\n\tnoOpen: boolean;\n\tskipShutdownCleanup: boolean;\n\thost: string | null;\n\tport: { mode: \"fixed\"; value: number } | { mode: \"auto\" } | null;\n}\n\nconst KANBAN_VERSION = typeof packageJson.version === \"string\" ? packageJson.version : \"0.1.0\";\n\nfunction parseCliPortValue(rawValue: string): { mode: \"fixed\"; value: number } | { mode: \"auto\" } {\n\tconst normalized = rawValue.trim().toLowerCase();\n\tif (!normalized) {\n\t\tthrow new Error(\"Missing value for --port.\");\n\t}\n\tif (normalized === \"auto\") {\n\t\treturn { mode: \"auto\" };\n\t}\n\ttry {\n\t\treturn { mode: \"fixed\", value: parseRuntimePort(normalized) };\n\t} catch {\n\t\tthrow new Error(`Invalid port value: ${rawValue}. Expected an integer from 1-65535 or \"auto\".`);\n\t}\n}\n\ninterface RootCommandOptions {\n\thost?: string;\n\tport?: { mode: \"fixed\"; value: number } | { mode: \"auto\" };\n\topen?: boolean;\n\tskipShutdownCleanup?: boolean;\n}\n\n/**\n * Decide whether this CLI invocation should auto-open a browser tab.\n *\n * This uses a positive allowlist for app-launch shapes like `kanban`,\n * `kanban --agent codex`, and `kanban --port 3484`. Any subcommand or\n * unexpected argument is treated as a command-style invocation instead.\n */\nfunction shouldAutoOpenBrowserTabForInvocation(argv: string[]): boolean {\n\tconst launchFlags = new Set([\"--open\", \"--no-open\", \"--skip-shutdown-cleanup\"]);\n\tconst launchOptionsWithValues = new Set([\"--host\", \"--port\", \"--agent\"]);\n\n\tfor (let index = 0; index < argv.length; index += 1) {\n\t\tconst arg = argv[index];\n\t\tif (!arg) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!arg.startsWith(\"-\")) {\n\t\t\treturn false;\n\t\t}\n\t\tif (launchFlags.has(arg)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst optionName = arg.split(\"=\", 1)[0] ?? arg;\n\t\tif (!launchOptionsWithValues.has(optionName)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (arg.includes(\"=\")) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst optionValue = argv[index + 1];\n\t\tif (!optionValue) {\n\t\t\treturn false;\n\t\t}\n\t\tindex += 1;\n\t}\n\n\treturn true;\n}\n\nasync function isPortAvailable(port: number): Promise<boolean> {\n\treturn await new Promise<boolean>((resolve) => {\n\t\tconst probe = createNetServer();\n\t\tprobe.once(\"error\", () => {\n\t\t\tresolve(false);\n\t\t});\n\t\tprobe.listen(port, getKanbanRuntimeHost(), () => {\n\t\t\tprobe.close(() => {\n\t\t\t\tresolve(true);\n\t\t\t});\n\t\t});\n\t});\n}\n\nasync function findAvailableRuntimePort(startPort: number): Promise<number> {\n\tfor (let candidate = startPort; candidate <= 65535; candidate += 1) {\n\t\tif (await isPortAvailable(candidate)) {\n\t\t\treturn candidate;\n\t\t}\n\t}\n\tthrow new Error(\"No available runtime port found.\");\n}\n\nasync function applyRuntimePortOption(portOption: CliOptions[\"port\"]): Promise<number | null> {\n\tif (!portOption) {\n\t\treturn null;\n\t}\n\tif (portOption.mode === \"fixed\") {\n\t\tsetKanbanRuntimePort(portOption.value);\n\t\treturn portOption.value;\n\t}\n\tconst autoPort = await findAvailableRuntimePort(DEFAULT_KANBAN_RUNTIME_PORT);\n\tsetKanbanRuntimePort(autoPort);\n\treturn autoPort;\n}\n\nasync function assertPathIsDirectory(path: string): Promise<void> {\n\tconst info = await stat(path);\n\tif (!info.isDirectory()) {\n\t\tthrow new Error(`Project path is not a directory: ${path}`);\n\t}\n}\n\nasync function pathIsDirectory(path: string): Promise<boolean> {\n\ttry {\n\t\tconst info = await stat(path);\n\t\treturn info.isDirectory();\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasGitRepository(path: string): boolean {\n\tconst result = spawnSync(\"git\", [\"rev-parse\", \"--is-inside-work-tree\"], {\n\t\tcwd: path,\n\t\tencoding: \"utf8\",\n\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\tenv: createGitProcessEnv(),\n\t});\n\treturn result.status === 0 && result.stdout.trim() === \"true\";\n}\n\nfunction isAddressInUseError(error: unknown): error is NodeJS.ErrnoException {\n\treturn (\n\t\ttypeof error === \"object\" &&\n\t\terror !== null &&\n\t\t\"code\" in error &&\n\t\t(error as NodeJS.ErrnoException).code === \"EADDRINUSE\"\n\t);\n}\n\nasync function canReachKanbanServer(workspaceId: string | null): Promise<boolean> {\n\ttry {\n\t\tconst headers: Record<string, string> = {};\n\t\tif (workspaceId) {\n\t\t\theaders[\"x-kanban-workspace-id\"] = workspaceId;\n\t\t}\n\t\tconst response = await fetch(buildKanbanRuntimeUrl(\"/api/trpc/projects.list\"), {\n\t\t\tmethod: \"GET\",\n\t\t\theaders,\n\t\t\tsignal: AbortSignal.timeout(1_500),\n\t\t});\n\t\tif (response.status === 404) {\n\t\t\treturn false;\n\t\t}\n\t\tconst payload = (await response.json().catch(() => null)) as {\n\t\t\tresult?: { data?: unknown };\n\t\t\terror?: unknown;\n\t\t} | null;\n\t\treturn Boolean(payload && (payload.result || payload.error));\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function tryOpenExistingServer(options: { noOpen: boolean; shouldAutoOpenBrowser: boolean }): Promise<boolean> {\n\tlet workspaceId: string | null = null;\n\tif (hasGitRepository(process.cwd())) {\n\t\tconst { loadWorkspaceContext } = await import(\"./state/workspace-state.js\");\n\t\tconst context = await loadWorkspaceContext(process.cwd());\n\t\tworkspaceId = context.workspaceId;\n\t}\n\tconst running = await canReachKanbanServer(workspaceId);\n\tif (!running) {\n\t\treturn false;\n\t}\n\tconst projectUrl = workspaceId\n\t\t? buildKanbanRuntimeUrl(`/${encodeURIComponent(workspaceId)}`)\n\t\t: getKanbanRuntimeOrigin();\n\tconsole.log(`Kanban already running at ${getKanbanRuntimeOrigin()}`);\n\tif (!options.noOpen && options.shouldAutoOpenBrowser) {\n\t\ttry {\n\t\t\tconst { openInBrowser } = await import(\"./server/browser.js\");\n\t\t\topenInBrowser(projectUrl, {\n\t\t\t\twarn: (message) => {\n\t\t\t\t\tconsole.warn(message);\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconsole.warn(`Could not open browser automatically: ${message}`);\n\t\t}\n\t}\n\tconsole.log(`Project URL: ${projectUrl}`);\n\treturn true;\n}\n\nasync function runScopedCommand(command: string, cwd: string): Promise<RuntimeCommandRunResponse> {\n\tconst startedAt = Date.now();\n\tconst outputLimitBytes = 64 * 1024;\n\n\treturn await new Promise<RuntimeCommandRunResponse>((resolve, reject) => {\n\t\tconst child = spawn(command, {\n\t\t\tcwd,\n\t\t\tshell: true,\n\t\t\tenv: process.env,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t});\n\n\t\tif (!child.stdout || !child.stderr) {\n\t\t\treject(new Error(\"Shortcut process did not expose stdout/stderr.\"));\n\t\t\treturn;\n\t\t}\n\n\t\tlet stdout = \"\";\n\t\tlet stderr = \"\";\n\n\t\tconst appendOutput = (current: string, chunk: string): string => {\n\t\t\tconst next = current + chunk;\n\t\t\tif (next.length <= outputLimitBytes) {\n\t\t\t\treturn next;\n\t\t\t}\n\t\t\treturn next.slice(0, outputLimitBytes);\n\t\t};\n\n\t\tchild.stdout.on(\"data\", (chunk: Buffer | string) => {\n\t\t\tstdout = appendOutput(stdout, String(chunk));\n\t\t});\n\n\t\tchild.stderr.on(\"data\", (chunk: Buffer | string) => {\n\t\t\tstderr = appendOutput(stderr, String(chunk));\n\t\t});\n\n\t\tchild.on(\"error\", (error) => {\n\t\t\treject(error);\n\t\t});\n\n\t\tconst timeout = setTimeout(() => {\n\t\t\tterminateProcessForTimeout(child);\n\t\t}, 60_000);\n\n\t\tchild.on(\"close\", (code) => {\n\t\t\tclearTimeout(timeout);\n\t\t\tconst exitCode = typeof code === \"number\" ? code : 1;\n\t\t\tconst combinedOutput = [stdout.trim(), stderr.trim()].filter(Boolean).join(\"\\n\");\n\t\t\tresolve({\n\t\t\t\texitCode,\n\t\t\t\tstdout: stdout.trim(),\n\t\t\t\tstderr: stderr.trim(),\n\t\t\t\tcombinedOutput,\n\t\t\t\tdurationMs: Date.now() - startedAt,\n\t\t\t});\n\t\t});\n\t});\n}\n\nasync function startServer(): Promise<{\n\turl: string;\n\tclose: () => Promise<void>;\n\tshutdown: (options?: { skipSessionCleanup?: boolean }) => Promise<void>;\n}> {\n\t/*\n\t\tServer-only modules are loaded lazily because task-oriented subcommands like\n\t\t`kanban task create` and `kanban hooks ingest` do not need the runtime server.\n\n\t\tA regression in 25ba59f showed that eagerly importing the runtime stack here\n\t\tcould leave the source CLI process alive after the command had already printed\n\t\tits JSON result. The issue first appeared after the native Cline SDK runtime\n\t\twas added to the server import graph. We have not yet isolated the deepest\n\t\thandle creator inside that graph, so we keep command-style subcommands on the\n\t\tlightweight path and only load the server stack when we actually start Kanban.\n\t*/\n\tconst [\n\t\t{ resolveProjectInputPath },\n\t\t{ pickDirectoryPathFromSystemDialog },\n\t\t{ createRuntimeServer },\n\t\t{ createRuntimeStateHub },\n\t\t{ resolveInteractiveShellCommand },\n\t\t{ shutdownRuntimeServer },\n\t\t{ collectProjectWorktreeTaskIdsForRemoval, createWorkspaceRegistry },\n\t] = await Promise.all([\n\t\timport(\"./projects/project-path.js\"),\n\t\timport(\"./server/directory-picker.js\"),\n\t\timport(\"./server/runtime-server.js\"),\n\t\timport(\"./server/runtime-state-hub.js\"),\n\t\timport(\"./server/shell.js\"),\n\t\timport(\"./server/shutdown-coordinator.js\"),\n\t\timport(\"./server/workspace-registry.js\"),\n\t]);\n\tlet runtimeStateHub: RuntimeStateHub | undefined;\n\tconst workspaceRegistry = await createWorkspaceRegistry({\n\t\tcwd: process.cwd(),\n\t\tloadGlobalRuntimeConfig,\n\t\tloadRuntimeConfig,\n\t\thasGitRepository,\n\t\tpathIsDirectory,\n\t\tonTerminalManagerReady: (workspaceId, manager) => {\n\t\t\truntimeStateHub?.trackTerminalManager(workspaceId, manager);\n\t\t},\n\t});\n\truntimeStateHub = createRuntimeStateHub({\n\t\tworkspaceRegistry,\n\t});\n\tconst runtimeHub = runtimeStateHub;\n\tfor (const { workspaceId, terminalManager } of workspaceRegistry.listManagedWorkspaces()) {\n\t\truntimeHub.trackTerminalManager(workspaceId, terminalManager);\n\t}\n\n\tconst disposeTrackedWorkspace = (\n\t\tworkspaceId: string,\n\t\toptions?: {\n\t\t\tstopTerminalSessions?: boolean;\n\t\t},\n\t): { terminalManager: TerminalSessionManager | null; workspacePath: string | null } => {\n\t\tconst disposed = workspaceRegistry.disposeWorkspace(workspaceId, {\n\t\t\tstopTerminalSessions: options?.stopTerminalSessions,\n\t\t});\n\t\truntimeHub.disposeWorkspace(workspaceId);\n\t\treturn disposed;\n\t};\n\n\tconst runtimeServer = await createRuntimeServer({\n\t\tworkspaceRegistry,\n\t\truntimeStateHub: runtimeHub,\n\t\twarn: (message) => {\n\t\t\tconsole.warn(`[kanban] ${message}`);\n\t\t},\n\t\tensureTerminalManagerForWorkspace: workspaceRegistry.ensureTerminalManagerForWorkspace,\n\t\tresolveInteractiveShellCommand,\n\t\trunCommand: runScopedCommand,\n\t\tresolveProjectInputPath,\n\t\tassertPathIsDirectory,\n\t\thasGitRepository,\n\t\tdisposeWorkspace: disposeTrackedWorkspace,\n\t\tcollectProjectWorktreeTaskIdsForRemoval,\n\t\tpickDirectoryPathFromSystemDialog,\n\t});\n\n\tconst close = async () => {\n\t\tawait runtimeServer.close();\n\t};\n\n\tconst shutdown = async (options?: { skipSessionCleanup?: boolean }) => {\n\t\tawait shutdownRuntimeServer({\n\t\t\tworkspaceRegistry,\n\t\t\twarn: (message) => {\n\t\t\t\tconsole.warn(`[kanban] ${message}`);\n\t\t\t},\n\t\t\tcloseRuntimeServer: close,\n\t\t\tskipSessionCleanup: options?.skipSessionCleanup ?? false,\n\t\t});\n\t};\n\n\treturn {\n\t\turl: runtimeServer.url,\n\t\tclose,\n\t\tshutdown,\n\t};\n}\n\nasync function startServerWithAutoPortRetry(options: CliOptions): Promise<Awaited<ReturnType<typeof startServer>>> {\n\tif (options.port?.mode !== \"auto\") {\n\t\treturn await startServer();\n\t}\n\n\twhile (true) {\n\t\ttry {\n\t\t\treturn await startServer();\n\t\t} catch (error) {\n\t\t\tif (!isAddressInUseError(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst currentPort = getKanbanRuntimePort();\n\t\t\tconst retryPort = await findAvailableRuntimePort(currentPort + 1);\n\t\t\tsetKanbanRuntimePort(retryPort);\n\t\t\tconsole.warn(`Runtime port ${currentPort} became busy during startup, retrying on ${retryPort}.`);\n\t\t}\n\t}\n}\n\nasync function runMainCommand(options: CliOptions, shouldAutoOpenBrowser: boolean): Promise<void> {\n\tif (options.host) {\n\t\tsetKanbanRuntimeHost(options.host);\n\t\tconsole.log(`Binding to host ${options.host}.`);\n\t}\n\n\tconst [{ openInBrowser }, { autoUpdateOnStartup, runPendingAutoUpdateOnShutdown }] = await Promise.all([\n\t\timport(\"./server/browser.js\"),\n\t\timport(\"./update/auto-update.js\"),\n\t]);\n\n\tconst selectedPort = await applyRuntimePortOption(options.port);\n\tif (selectedPort !== null) {\n\t\tconsole.log(`Using runtime port ${selectedPort}.`);\n\t}\n\n\tautoUpdateOnStartup({\n\t\tcurrentVersion: KANBAN_VERSION,\n\t});\n\n\tlet runtime: Awaited<ReturnType<typeof startServer>>;\n\ttry {\n\t\truntime = await startServerWithAutoPortRetry(options);\n\t} catch (error) {\n\t\tif (\n\t\t\toptions.port?.mode !== \"auto\" &&\n\t\t\tisAddressInUseError(error) &&\n\t\t\t(await tryOpenExistingServer({ noOpen: options.noOpen, shouldAutoOpenBrowser }))\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tthrow error;\n\t}\n\tconsole.log(`Kanban running at ${runtime.url}`);\n\tif (!options.noOpen && shouldAutoOpenBrowser) {\n\t\ttry {\n\t\t\topenInBrowser(runtime.url, {\n\t\t\t\twarn: (message) => {\n\t\t\t\t\tconsole.warn(message);\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconsole.warn(`Could not open browser automatically: ${message}`);\n\t\t}\n\t}\n\tconsole.log(\"Press Ctrl+C to stop.\");\n\n\tlet isShuttingDown = false;\n\tconst shutdown = async () => {\n\t\tif (isShuttingDown) {\n\t\t\treturn;\n\t\t}\n\t\tisShuttingDown = true;\n\t\trunPendingAutoUpdateOnShutdown();\n\t\tif (options.skipShutdownCleanup) {\n\t\t\tconsole.warn(\"Skipping shutdown task cleanup for this instance.\");\n\t\t}\n\t\tawait runtime.shutdown({\n\t\t\tskipSessionCleanup: options.skipShutdownCleanup,\n\t\t});\n\t};\n\n\tinstallGracefulShutdownHandlers({\n\t\tprocess,\n\t\tdelayMs: 10000,\n\t\texit: (code) => {\n\t\t\tprocess.exit(code);\n\t\t},\n\t\tonShutdown: async () => {\n\t\t\tawait shutdown();\n\t\t},\n\t\tonShutdownError: (error) => {\n\t\t\tcaptureNodeException(error, { area: \"shutdown\" });\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconsole.error(`Shutdown failed: ${message}`);\n\t\t},\n\t\tonTimeout: (delayMs) => {\n\t\t\tconsole.error(`Forced exit after shutdown timeout (${delayMs}ms).`);\n\t\t},\n\t\tonSecondSignal: (signal) => {\n\t\t\tconsole.error(`Forced exit on second signal: ${signal}`);\n\t\t},\n\t\tsuppressImmediateDuplicateSignals: shouldSuppressImmediateDuplicateShutdownSignals(),\n\t});\n}\n\nfunction createProgram(invocationArgs: string[]): Command {\n\tconst shouldAutoOpenBrowser = shouldAutoOpenBrowserTabForInvocation(invocationArgs);\n\tconst program = new Command();\n\tprogram\n\t\t.name(\"kanban\")\n\t\t.description(\"Local orchestration board for coding agents.\")\n\t\t.version(KANBAN_VERSION, \"-v, --version\", \"Output the version number\")\n\t\t.option(\"--host <ip>\", \"Host IP to bind the server to (default: 127.0.0.1).\")\n\t\t.option(\"--port <number|auto>\", \"Runtime port (1-65535) or auto.\", parseCliPortValue)\n\t\t.option(\"--no-open\", \"Do not open browser automatically.\")\n\t\t.option(\"--skip-shutdown-cleanup\", \"Do not move sessions to trash or delete task worktrees on shutdown.\")\n\t\t.showHelpAfterError()\n\t\t.addHelpText(\"after\", `\\nRuntime URL: ${getKanbanRuntimeOrigin()}`);\n\n\tprogram.addOption(new Option(\"--agent <id>\", \"Deprecated compatibility flag. Ignored.\").hideHelp());\n\n\tregisterTaskCommand(program);\n\tregisterHooksCommand(program);\n\n\tprogram\n\t\t.command(\"mcp\")\n\t\t.description(\"Deprecated compatibility command.\")\n\t\t.action(() => {\n\t\t\tconsole.warn(\"Deprecated. Please uninstall Kanban MCP.\");\n\t\t});\n\n\tprogram.action(async (options: RootCommandOptions) => {\n\t\tawait runMainCommand(\n\t\t\t{\n\t\t\t\thost: options.host ?? null,\n\t\t\t\tport: options.port ?? null,\n\t\t\t\tnoOpen: options.open === false,\n\t\t\t\tskipShutdownCleanup: options.skipShutdownCleanup === true,\n\t\t\t},\n\t\t\tshouldAutoOpenBrowser,\n\t\t);\n\t});\n\n\treturn program;\n}\n\nasync function run(): Promise<void> {\n\tconst argv = process.argv.slice(2);\n\tconst program = createProgram(argv);\n\tawait program.parseAsync(argv, { from: \"user\" });\n}\n\nvoid run().catch(async (error) => {\n\tcaptureNodeException(error, { area: \"startup\" });\n\tawait flushNodeTelemetry();\n\tconst message = error instanceof Error ? error.message : String(error);\n\tconsole.error(`Failed to start Kanban: ${message}`);\n\tprocess.exit(1);\n});\n"],"names":[],"mappings":";;;AAEA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACtF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,YAAY,IAAI,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,WAAW,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACN,+BAA+B,EAC/B,+CAA+C,GAC/C,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACN,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAW7E,MAAM,cAAc,GAAG,OAAO,WAAW,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AAE/F,SAAS,iBAAiB,CAAC,QAAgB;IAC1C,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC9C,CAAC;IACD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,CAAC;QACJ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;IAC/D,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,+CAA+C,CAAC,CAAC;IACjG,CAAC;AACF,CAAC;AASD;;;;;;GAMG;AACH,SAAS,qCAAqC,CAAC,IAAc;IAC5D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAChF,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,SAAS;QACV,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,SAAS;QACV,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QAC/C,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,SAAS;QACV,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,KAAK,IAAI,CAAC,CAAC;IACZ,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACxB,OAAO,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,EAAE,EAAE,GAAG,EAAE;YAC/C,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;gBAChB,OAAO,CAAC,IAAI,CAAC,CAAC;YACf,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,SAAiB;IACxD,KAAK,IAAI,SAAS,GAAG,SAAS,EAAE,SAAS,IAAI,KAAK,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QACpE,IAAI,MAAM,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACrD,CAAC;AAED,KAAK,UAAU,sBAAsB,CAAC,UAA8B;IACnE,IAAI,CAAC,UAAU,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACjC,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACvC,OAAO,UAAU,CAAC,KAAK,CAAC;IACzB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,wBAAwB,CAAC,2BAA2B,CAAC,CAAC;IAC7E,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC/B,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;AACF,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE;QACvE,GAAG,EAAE,IAAI;QACT,QAAQ,EAAE,MAAM;QAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;QACnC,GAAG,EAAE,mBAAmB,EAAE;KAC1B,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC;AAC/D,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IAC1C,OAAO,CACN,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACd,KAA+B,CAAC,IAAI,KAAK,YAAY,CACtD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,WAA0B;IAC7D,IAAI,CAAC;QACJ,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,IAAI,WAAW,EAAE,CAAC;YACjB,OAAO,CAAC,uBAAuB,CAAC,GAAG,WAAW,CAAC;QAChD,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qBAAqB,CAAC,yBAAyB,CAAC,EAAE;YAC9E,MAAM,EAAE,KAAK;YACb,OAAO;YACP,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;SAClC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAGhD,CAAC;QACT,OAAO,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAA4D;IAChG,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACrC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,4BAA4B,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1D,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACnC,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,UAAU,GAAG,WAAW;QAC7B,CAAC,CAAC,qBAAqB,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9D,CAAC,CAAC,sBAAsB,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,6BAA6B,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACtD,IAAI,CAAC;YACJ,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;YAC9D,aAAa,CAAC,UAAU,EAAE;gBACzB,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;oBACjB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvB,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC;AACb,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,GAAW;IAC3D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,CAAC;IAEnC,OAAO,MAAM,IAAI,OAAO,CAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACvE,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE;YAC5B,GAAG;YACH,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;YACpE,OAAO;QACR,CAAC;QAED,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,MAAM,YAAY,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE;YAC/D,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,CAAC;YAC7B,IAAI,IAAI,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;gBACrC,OAAO,IAAI,CAAC;YACb,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACxC,CAAC,CAAC;QAEF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YAClD,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;YAClD,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC/B,0BAA0B,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,MAAM,cAAc,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjF,OAAO,CAAC;gBACP,QAAQ;gBACR,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;gBACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;gBACrB,cAAc;gBACd,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aAClC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,WAAW;IAKzB;;;;;;;;;;MAUE;IACF,MAAM,CACL,EAAE,uBAAuB,EAAE,EAC3B,EAAE,iCAAiC,EAAE,EACrC,EAAE,mBAAmB,EAAE,EACvB,EAAE,qBAAqB,EAAE,EACzB,EAAE,8BAA8B,EAAE,EAClC,EAAE,qBAAqB,EAAE,EACzB,EAAE,uCAAuC,EAAE,uBAAuB,EAAE,EACpE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrB,MAAM,CAAC,4BAA4B,CAAC;QACpC,MAAM,CAAC,8BAA8B,CAAC;QACtC,MAAM,CAAC,4BAA4B,CAAC;QACpC,MAAM,CAAC,+BAA+B,CAAC;QACvC,MAAM,CAAC,mBAAmB,CAAC;QAC3B,MAAM,CAAC,kCAAkC,CAAC;QAC1C,MAAM,CAAC,gCAAgC,CAAC;KACxC,CAAC,CAAC;IACH,IAAI,eAA4C,CAAC;IACjD,MAAM,iBAAiB,GAAG,MAAM,uBAAuB,CAAC;QACvD,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,uBAAuB;QACvB,iBAAiB;QACjB,gBAAgB;QAChB,eAAe;QACf,sBAAsB,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE;YAChD,eAAe,EAAE,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7D,CAAC;KACD,CAAC,CAAC;IACH,eAAe,GAAG,qBAAqB,CAAC;QACvC,iBAAiB;KACjB,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,eAAe,CAAC;IACnC,KAAK,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,iBAAiB,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC1F,UAAU,CAAC,oBAAoB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,uBAAuB,GAAG,CAC/B,WAAmB,EACnB,OAEC,EACkF,EAAE;QACrF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,EAAE;YAChE,oBAAoB,EAAE,OAAO,EAAE,oBAAoB;SACnD,CAAC,CAAC;QACH,UAAU,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACzC,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC;QAC/C,iBAAiB;QACjB,eAAe,EAAE,UAAU;QAC3B,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC;QACD,iCAAiC,EAAE,iBAAiB,CAAC,iCAAiC;QACtF,8BAA8B;QAC9B,UAAU,EAAE,gBAAgB;QAC5B,uBAAuB;QACvB,qBAAqB;QACrB,gBAAgB;QAChB,gBAAgB,EAAE,uBAAuB;QACzC,uCAAuC;QACvC,iCAAiC;KACjC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACxB,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,OAA0C,EAAE,EAAE;QACrE,MAAM,qBAAqB,CAAC;YAC3B,iBAAiB;YACjB,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;YACrC,CAAC;YACD,kBAAkB,EAAE,KAAK;YACzB,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,IAAI,KAAK;SACxD,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACN,GAAG,EAAE,aAAa,CAAC,GAAG;QACtB,KAAK;QACL,QAAQ;KACR,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,OAAmB;IAC9D,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QACnC,OAAO,MAAM,WAAW,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO,IAAI,EAAE,CAAC;QACb,IAAI,CAAC;YACJ,OAAO,MAAM,WAAW,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,CAAC;YACb,CAAC;YACD,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YAClE,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,gBAAgB,WAAW,4CAA4C,SAAS,GAAG,CAAC,CAAC;QACnG,CAAC;IACF,CAAC;AACF,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAAmB,EAAE,qBAA8B;IAChF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,mBAAmB,EAAE,8BAA8B,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACtG,MAAM,CAAC,qBAAqB,CAAC;QAC7B,MAAM,CAAC,yBAAyB,CAAC;KACjC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,MAAM,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,GAAG,CAAC,CAAC;IACpD,CAAC;IAED,mBAAmB,CAAC;QACnB,cAAc,EAAE,cAAc;KAC9B,CAAC,CAAC;IAEH,IAAI,OAAgD,CAAC;IACrD,IAAI,CAAC;QACJ,OAAO,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IACC,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM;YAC7B,mBAAmB,CAAC,KAAK,CAAC;YAC1B,CAAC,MAAM,qBAAqB,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC,CAAC,EAC/E,CAAC;YACF,OAAO;QACR,CAAC;QACD,MAAM,KAAK,CAAC;IACb,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,qBAAqB,EAAE,CAAC;QAC9C,IAAI,CAAC;YACJ,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC1B,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE;oBACjB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvB,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IAErC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC3B,IAAI,cAAc,EAAE,CAAC;YACpB,OAAO;QACR,CAAC;QACD,cAAc,GAAG,IAAI,CAAC;QACtB,8BAA8B,EAAE,CAAC;QACjC,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,OAAO,CAAC,QAAQ,CAAC;YACtB,kBAAkB,EAAE,OAAO,CAAC,mBAAmB;SAC/C,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,+BAA+B,CAAC;QAC/B,OAAO;QACP,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,UAAU,EAAE,KAAK,IAAI,EAAE;YACtB,MAAM,QAAQ,EAAE,CAAC;QAClB,CAAC;QACD,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,oBAAoB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACtB,OAAO,CAAC,KAAK,CAAC,uCAAuC,OAAO,MAAM,CAAC,CAAC;QACrE,CAAC;QACD,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1B,OAAO,CAAC,KAAK,CAAC,iCAAiC,MAAM,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,iCAAiC,EAAE,+CAA+C,EAAE;KACpF,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,cAAwB;IAC9C,MAAM,qBAAqB,GAAG,qCAAqC,CAAC,cAAc,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAC9B,OAAO;SACL,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,8CAA8C,CAAC;SAC3D,OAAO,CAAC,cAAc,EAAE,eAAe,EAAE,2BAA2B,CAAC;SACrE,MAAM,CAAC,aAAa,EAAE,qDAAqD,CAAC;SAC5E,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,EAAE,iBAAiB,CAAC;SACpF,MAAM,CAAC,WAAW,EAAE,oCAAoC,CAAC;SACzD,MAAM,CAAC,yBAAyB,EAAE,qEAAqE,CAAC;SACxG,kBAAkB,EAAE;SACpB,WAAW,CAAC,OAAO,EAAE,kBAAkB,sBAAsB,EAAE,EAAE,CAAC,CAAC;IAErE,OAAO,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,cAAc,EAAE,yCAAyC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEpG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAE9B,OAAO;SACL,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,mCAAmC,CAAC;SAChD,MAAM,CAAC,GAAG,EAAE;QACZ,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QACpD,MAAM,cAAc,CACnB;YACC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI;YAC1B,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,KAAK;YAC9B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,KAAK,IAAI;SACzD,EACD,qBAAqB,CACrB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,GAAG;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IAChC,oBAAoB,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACjD,MAAM,kBAAkB,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjB,CAAC,CAAC,CAAC","debugId":"23b379fd-89d4-5835-be6c-dc8e7efcb530"}
1
+ {"version":3,"file":"cli.js","sources":["../src/cli.ts"],"sourceRoot":"","sourcesContent":["#!/usr/bin/env node\n\nimport { captureNodeException, flushNodeTelemetry } from \"./telemetry/sentry-node.js\";\nimport { spawn, spawnSync } from \"node:child_process\";\nimport { stat } from \"node:fs/promises\";\nimport { createServer as createNetServer } from \"node:net\";\nimport { Command, Option } from \"commander\";\nimport packageJson from \"../package.json\" with { type: \"json\" };\n\nimport { registerHooksCommand } from \"./commands/hooks.js\";\nimport { registerTaskCommand } from \"./commands/task.js\";\nimport { loadGlobalRuntimeConfig, loadRuntimeConfig } from \"./config/runtime-config.js\";\nimport type { RuntimeCommandRunResponse } from \"./core/api-contract.js\";\nimport { createGitProcessEnv } from \"./core/git-process-env.js\";\nimport {\n\tinstallGracefulShutdownHandlers,\n\tshouldSuppressImmediateDuplicateShutdownSignals,\n} from \"./core/graceful-shutdown.js\";\nimport {\n\tbuildKanbanRuntimeUrl,\n\tDEFAULT_KANBAN_RUNTIME_PORT,\n\tgetKanbanRuntimeHost,\n\tgetKanbanRuntimeOrigin,\n\tgetKanbanRuntimePort,\n\tparseRuntimePort,\n\tsetKanbanRuntimeHost,\n\tsetKanbanRuntimePort,\n} from \"./core/runtime-endpoint.js\";\nimport { terminateProcessForTimeout } from \"./server/process-termination.js\";\nimport type { RuntimeStateHub } from \"./server/runtime-state-hub.js\";\nimport type { TerminalSessionManager } from \"./terminal/session-manager.js\";\n\ninterface CliOptions {\n\tnoOpen: boolean;\n\tskipShutdownCleanup: boolean;\n\thost: string | null;\n\tport: { mode: \"fixed\"; value: number } | { mode: \"auto\" } | null;\n}\n\nconst KANBAN_VERSION = typeof packageJson.version === \"string\" ? packageJson.version : \"0.1.0\";\n\nfunction parseCliPortValue(rawValue: string): { mode: \"fixed\"; value: number } | { mode: \"auto\" } {\n\tconst normalized = rawValue.trim().toLowerCase();\n\tif (!normalized) {\n\t\tthrow new Error(\"Missing value for --port.\");\n\t}\n\tif (normalized === \"auto\") {\n\t\treturn { mode: \"auto\" };\n\t}\n\ttry {\n\t\treturn { mode: \"fixed\", value: parseRuntimePort(normalized) };\n\t} catch {\n\t\tthrow new Error(`Invalid port value: ${rawValue}. Expected an integer from 1-65535 or \"auto\".`);\n\t}\n}\n\ninterface RootCommandOptions {\n\thost?: string;\n\tport?: { mode: \"fixed\"; value: number } | { mode: \"auto\" };\n\topen?: boolean;\n\tskipShutdownCleanup?: boolean;\n}\n\n/**\n * Decide whether this CLI invocation should auto-open a browser tab.\n *\n * This uses a positive allowlist for app-launch shapes like `kanban`,\n * `kanban --agent codex`, and `kanban --port 3484`. Any subcommand or\n * unexpected argument is treated as a command-style invocation instead.\n */\nfunction shouldAutoOpenBrowserTabForInvocation(argv: string[]): boolean {\n\tconst launchFlags = new Set([\"--open\", \"--no-open\", \"--skip-shutdown-cleanup\"]);\n\tconst launchOptionsWithValues = new Set([\"--host\", \"--port\", \"--agent\"]);\n\n\tfor (let index = 0; index < argv.length; index += 1) {\n\t\tconst arg = argv[index];\n\t\tif (!arg) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (!arg.startsWith(\"-\")) {\n\t\t\treturn false;\n\t\t}\n\t\tif (launchFlags.has(arg)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst optionName = arg.split(\"=\", 1)[0] ?? arg;\n\t\tif (!launchOptionsWithValues.has(optionName)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (arg.includes(\"=\")) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst optionValue = argv[index + 1];\n\t\tif (!optionValue) {\n\t\t\treturn false;\n\t\t}\n\t\tindex += 1;\n\t}\n\n\treturn true;\n}\n\nasync function isPortAvailable(port: number): Promise<boolean> {\n\treturn await new Promise<boolean>((resolve) => {\n\t\tconst probe = createNetServer();\n\t\tprobe.once(\"error\", () => {\n\t\t\tresolve(false);\n\t\t});\n\t\tprobe.listen(port, getKanbanRuntimeHost(), () => {\n\t\t\tprobe.close(() => {\n\t\t\t\tresolve(true);\n\t\t\t});\n\t\t});\n\t});\n}\n\nasync function findAvailableRuntimePort(startPort: number): Promise<number> {\n\tfor (let candidate = startPort; candidate <= 65535; candidate += 1) {\n\t\tif (await isPortAvailable(candidate)) {\n\t\t\treturn candidate;\n\t\t}\n\t}\n\tthrow new Error(\"No available runtime port found.\");\n}\n\nasync function applyRuntimePortOption(portOption: CliOptions[\"port\"]): Promise<number | null> {\n\tif (!portOption) {\n\t\treturn null;\n\t}\n\tif (portOption.mode === \"fixed\") {\n\t\tsetKanbanRuntimePort(portOption.value);\n\t\treturn portOption.value;\n\t}\n\tconst autoPort = await findAvailableRuntimePort(DEFAULT_KANBAN_RUNTIME_PORT);\n\tsetKanbanRuntimePort(autoPort);\n\treturn autoPort;\n}\n\nasync function assertPathIsDirectory(path: string): Promise<void> {\n\tconst info = await stat(path);\n\tif (!info.isDirectory()) {\n\t\tthrow new Error(`Project path is not a directory: ${path}`);\n\t}\n}\n\nasync function pathIsDirectory(path: string): Promise<boolean> {\n\ttry {\n\t\tconst info = await stat(path);\n\t\treturn info.isDirectory();\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction hasGitRepository(path: string): boolean {\n\tconst result = spawnSync(\"git\", [\"rev-parse\", \"--is-inside-work-tree\"], {\n\t\tcwd: path,\n\t\tencoding: \"utf8\",\n\t\tstdio: [\"ignore\", \"pipe\", \"ignore\"],\n\t\tenv: createGitProcessEnv(),\n\t});\n\treturn result.status === 0 && result.stdout.trim() === \"true\";\n}\n\nfunction isAddressInUseError(error: unknown): error is NodeJS.ErrnoException {\n\treturn (\n\t\ttypeof error === \"object\" &&\n\t\terror !== null &&\n\t\t\"code\" in error &&\n\t\t(error as NodeJS.ErrnoException).code === \"EADDRINUSE\"\n\t);\n}\n\nasync function canReachKanbanServer(workspaceId: string | null): Promise<boolean> {\n\ttry {\n\t\tconst headers: Record<string, string> = {};\n\t\tif (workspaceId) {\n\t\t\theaders[\"x-kanban-workspace-id\"] = workspaceId;\n\t\t}\n\t\tconst response = await fetch(buildKanbanRuntimeUrl(\"/api/trpc/projects.list\"), {\n\t\t\tmethod: \"GET\",\n\t\t\theaders,\n\t\t\tsignal: AbortSignal.timeout(1_500),\n\t\t});\n\t\tif (response.status === 404) {\n\t\t\treturn false;\n\t\t}\n\t\tconst payload = (await response.json().catch(() => null)) as {\n\t\t\tresult?: { data?: unknown };\n\t\t\terror?: unknown;\n\t\t} | null;\n\t\treturn Boolean(payload && (payload.result || payload.error));\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function tryOpenExistingServer(options: { noOpen: boolean; shouldAutoOpenBrowser: boolean }): Promise<boolean> {\n\tlet workspaceId: string | null = null;\n\tif (hasGitRepository(process.cwd())) {\n\t\tconst { loadWorkspaceContext } = await import(\"./state/workspace-state.js\");\n\t\tconst context = await loadWorkspaceContext(process.cwd());\n\t\tworkspaceId = context.workspaceId;\n\t}\n\tconst running = await canReachKanbanServer(workspaceId);\n\tif (!running) {\n\t\treturn false;\n\t}\n\tconst projectUrl = workspaceId\n\t\t? buildKanbanRuntimeUrl(`/${encodeURIComponent(workspaceId)}`)\n\t\t: getKanbanRuntimeOrigin();\n\tconsole.log(`Kanban already running at ${getKanbanRuntimeOrigin()}`);\n\tif (!options.noOpen && options.shouldAutoOpenBrowser) {\n\t\ttry {\n\t\t\tconst { openInBrowser } = await import(\"./server/browser.js\");\n\t\t\topenInBrowser(projectUrl, {\n\t\t\t\twarn: (message) => {\n\t\t\t\t\tconsole.warn(message);\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconsole.warn(`Could not open browser automatically: ${message}`);\n\t\t}\n\t}\n\tconsole.log(`Project URL: ${projectUrl}`);\n\treturn true;\n}\n\nasync function runScopedCommand(command: string, cwd: string): Promise<RuntimeCommandRunResponse> {\n\tconst startedAt = Date.now();\n\tconst outputLimitBytes = 64 * 1024;\n\n\treturn await new Promise<RuntimeCommandRunResponse>((resolve, reject) => {\n\t\tconst child = spawn(command, {\n\t\t\tcwd,\n\t\t\tshell: true,\n\t\t\tenv: process.env,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t});\n\n\t\tif (!child.stdout || !child.stderr) {\n\t\t\treject(new Error(\"Shortcut process did not expose stdout/stderr.\"));\n\t\t\treturn;\n\t\t}\n\n\t\tlet stdout = \"\";\n\t\tlet stderr = \"\";\n\n\t\tconst appendOutput = (current: string, chunk: string): string => {\n\t\t\tconst next = current + chunk;\n\t\t\tif (next.length <= outputLimitBytes) {\n\t\t\t\treturn next;\n\t\t\t}\n\t\t\treturn next.slice(0, outputLimitBytes);\n\t\t};\n\n\t\tchild.stdout.on(\"data\", (chunk: Buffer | string) => {\n\t\t\tstdout = appendOutput(stdout, String(chunk));\n\t\t});\n\n\t\tchild.stderr.on(\"data\", (chunk: Buffer | string) => {\n\t\t\tstderr = appendOutput(stderr, String(chunk));\n\t\t});\n\n\t\tchild.on(\"error\", (error) => {\n\t\t\treject(error);\n\t\t});\n\n\t\tconst timeout = setTimeout(() => {\n\t\t\tterminateProcessForTimeout(child);\n\t\t}, 60_000);\n\n\t\tchild.on(\"close\", (code) => {\n\t\t\tclearTimeout(timeout);\n\t\t\tconst exitCode = typeof code === \"number\" ? code : 1;\n\t\t\tconst combinedOutput = [stdout.trim(), stderr.trim()].filter(Boolean).join(\"\\n\");\n\t\t\tresolve({\n\t\t\t\texitCode,\n\t\t\t\tstdout: stdout.trim(),\n\t\t\t\tstderr: stderr.trim(),\n\t\t\t\tcombinedOutput,\n\t\t\t\tdurationMs: Date.now() - startedAt,\n\t\t\t});\n\t\t});\n\t});\n}\n\nasync function startServer(): Promise<{\n\turl: string;\n\tclose: () => Promise<void>;\n\tshutdown: (options?: { skipSessionCleanup?: boolean }) => Promise<void>;\n}> {\n\t/*\n\t\tServer-only modules are loaded lazily because task-oriented subcommands like\n\t\t`kanban task create` and `kanban hooks ingest` do not need the runtime server.\n\n\t\tA regression in 25ba59f showed that eagerly importing the runtime stack here\n\t\tcould leave the source CLI process alive after the command had already printed\n\t\tits JSON result. The issue first appeared after the native Cline SDK runtime\n\t\twas added to the server import graph. We have not yet isolated the deepest\n\t\thandle creator inside that graph, so we keep command-style subcommands on the\n\t\tlightweight path and only load the server stack when we actually start Kanban.\n\t*/\n\tconst [\n\t\t{ resolveProjectInputPath },\n\t\t{ pickDirectoryPathFromSystemDialog },\n\t\t{ createRuntimeServer },\n\t\t{ createRuntimeStateHub },\n\t\t{ resolveInteractiveShellCommand },\n\t\t{ shutdownRuntimeServer },\n\t\t{ collectProjectWorktreeTaskIdsForRemoval, createWorkspaceRegistry },\n\t] = await Promise.all([\n\t\timport(\"./projects/project-path.js\"),\n\t\timport(\"./server/directory-picker.js\"),\n\t\timport(\"./server/runtime-server.js\"),\n\t\timport(\"./server/runtime-state-hub.js\"),\n\t\timport(\"./server/shell.js\"),\n\t\timport(\"./server/shutdown-coordinator.js\"),\n\t\timport(\"./server/workspace-registry.js\"),\n\t]);\n\tlet runtimeStateHub: RuntimeStateHub | undefined;\n\tconst workspaceRegistry = await createWorkspaceRegistry({\n\t\tcwd: process.cwd(),\n\t\tloadGlobalRuntimeConfig,\n\t\tloadRuntimeConfig,\n\t\thasGitRepository,\n\t\tpathIsDirectory,\n\t\tonTerminalManagerReady: (workspaceId, manager) => {\n\t\t\truntimeStateHub?.trackTerminalManager(workspaceId, manager);\n\t\t},\n\t});\n\truntimeStateHub = createRuntimeStateHub({\n\t\tworkspaceRegistry,\n\t});\n\tconst runtimeHub = runtimeStateHub;\n\tfor (const { workspaceId, terminalManager } of workspaceRegistry.listManagedWorkspaces()) {\n\t\truntimeHub.trackTerminalManager(workspaceId, terminalManager);\n\t}\n\n\tconst disposeTrackedWorkspace = (\n\t\tworkspaceId: string,\n\t\toptions?: {\n\t\t\tstopTerminalSessions?: boolean;\n\t\t},\n\t): { terminalManager: TerminalSessionManager | null; workspacePath: string | null } => {\n\t\tconst disposed = workspaceRegistry.disposeWorkspace(workspaceId, {\n\t\t\tstopTerminalSessions: options?.stopTerminalSessions,\n\t\t});\n\t\truntimeHub.disposeWorkspace(workspaceId);\n\t\treturn disposed;\n\t};\n\n\tconst runtimeServer = await createRuntimeServer({\n\t\tworkspaceRegistry,\n\t\truntimeStateHub: runtimeHub,\n\t\twarn: (message) => {\n\t\t\tconsole.warn(`[kanban] ${message}`);\n\t\t},\n\t\tensureTerminalManagerForWorkspace: workspaceRegistry.ensureTerminalManagerForWorkspace,\n\t\tresolveInteractiveShellCommand,\n\t\trunCommand: runScopedCommand,\n\t\tresolveProjectInputPath,\n\t\tassertPathIsDirectory,\n\t\thasGitRepository,\n\t\tdisposeWorkspace: disposeTrackedWorkspace,\n\t\tcollectProjectWorktreeTaskIdsForRemoval,\n\t\tpickDirectoryPathFromSystemDialog,\n\t});\n\n\tconst close = async () => {\n\t\tawait runtimeServer.close();\n\t};\n\n\tconst shutdown = async (options?: { skipSessionCleanup?: boolean }) => {\n\t\tawait shutdownRuntimeServer({\n\t\t\tworkspaceRegistry,\n\t\t\twarn: (message) => {\n\t\t\t\tconsole.warn(`[kanban] ${message}`);\n\t\t\t},\n\t\t\tcloseRuntimeServer: close,\n\t\t\tskipSessionCleanup: options?.skipSessionCleanup ?? false,\n\t\t});\n\t};\n\n\treturn {\n\t\turl: runtimeServer.url,\n\t\tclose,\n\t\tshutdown,\n\t};\n}\n\nasync function startServerWithAutoPortRetry(options: CliOptions): Promise<Awaited<ReturnType<typeof startServer>>> {\n\tif (options.port?.mode !== \"auto\") {\n\t\treturn await startServer();\n\t}\n\n\twhile (true) {\n\t\ttry {\n\t\t\treturn await startServer();\n\t\t} catch (error) {\n\t\t\tif (!isAddressInUseError(error)) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst currentPort = getKanbanRuntimePort();\n\t\t\tconst retryPort = await findAvailableRuntimePort(currentPort + 1);\n\t\t\tsetKanbanRuntimePort(retryPort);\n\t\t\tconsole.warn(`Runtime port ${currentPort} became busy during startup, retrying on ${retryPort}.`);\n\t\t}\n\t}\n}\n\nasync function runMainCommand(options: CliOptions, shouldAutoOpenBrowser: boolean): Promise<void> {\n\tif (options.host) {\n\t\tsetKanbanRuntimeHost(options.host);\n\t\tconsole.log(`Binding to host ${options.host}.`);\n\t}\n\n\tconst [{ openInBrowser }, { autoUpdateOnStartup, runPendingAutoUpdateOnShutdown }] = await Promise.all([\n\t\timport(\"./server/browser.js\"),\n\t\timport(\"./update/auto-update.js\"),\n\t]);\n\n\tconst selectedPort = await applyRuntimePortOption(options.port);\n\tif (selectedPort !== null) {\n\t\tconsole.log(`Using runtime port ${selectedPort}.`);\n\t}\n\n\tautoUpdateOnStartup({\n\t\tcurrentVersion: KANBAN_VERSION,\n\t});\n\n\tlet runtime: Awaited<ReturnType<typeof startServer>>;\n\ttry {\n\t\truntime = await startServerWithAutoPortRetry(options);\n\t} catch (error) {\n\t\tif (\n\t\t\toptions.port?.mode !== \"auto\" &&\n\t\t\tisAddressInUseError(error) &&\n\t\t\t(await tryOpenExistingServer({ noOpen: options.noOpen, shouldAutoOpenBrowser }))\n\t\t) {\n\t\t\treturn;\n\t\t}\n\t\tthrow error;\n\t}\n\tconsole.log(`Cline Kanban running at ${runtime.url}`);\n\tif (!options.noOpen && shouldAutoOpenBrowser) {\n\t\ttry {\n\t\t\topenInBrowser(runtime.url, {\n\t\t\t\twarn: (message) => {\n\t\t\t\t\tconsole.warn(message);\n\t\t\t\t},\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconsole.warn(`Could not open browser automatically: ${message}`);\n\t\t}\n\t}\n\tconsole.log(\"Press Ctrl+C to stop.\");\n\n\tlet isShuttingDown = false;\n\tconst shutdown = async () => {\n\t\tif (isShuttingDown) {\n\t\t\treturn;\n\t\t}\n\t\tisShuttingDown = true;\n\t\trunPendingAutoUpdateOnShutdown();\n\t\tif (options.skipShutdownCleanup) {\n\t\t\tconsole.warn(\"Skipping shutdown task cleanup for this instance.\");\n\t\t}\n\t\tawait runtime.shutdown({\n\t\t\tskipSessionCleanup: options.skipShutdownCleanup,\n\t\t});\n\t};\n\n\tinstallGracefulShutdownHandlers({\n\t\tprocess,\n\t\tdelayMs: 10000,\n\t\texit: (code) => {\n\t\t\tprocess.exit(code);\n\t\t},\n\t\tonShutdown: async () => {\n\t\t\tawait shutdown();\n\t\t},\n\t\tonShutdownError: (error) => {\n\t\t\tcaptureNodeException(error, { area: \"shutdown\" });\n\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\tconsole.error(`Shutdown failed: ${message}`);\n\t\t},\n\t\tonTimeout: (delayMs) => {\n\t\t\tconsole.error(`Forced exit after shutdown timeout (${delayMs}ms).`);\n\t\t},\n\t\tonSecondSignal: (signal) => {\n\t\t\tconsole.error(`Forced exit on second signal: ${signal}`);\n\t\t},\n\t\tsuppressImmediateDuplicateSignals: shouldSuppressImmediateDuplicateShutdownSignals(),\n\t});\n}\n\nfunction createProgram(invocationArgs: string[]): Command {\n\tconst shouldAutoOpenBrowser = shouldAutoOpenBrowserTabForInvocation(invocationArgs);\n\tconst program = new Command();\n\tprogram\n\t\t.name(\"kanban\")\n\t\t.description(\"Local orchestration board for coding agents.\")\n\t\t.version(KANBAN_VERSION, \"-v, --version\", \"Output the version number\")\n\t\t.option(\"--host <ip>\", \"Host IP to bind the server to (default: 127.0.0.1).\")\n\t\t.option(\"--port <number|auto>\", \"Runtime port (1-65535) or auto.\", parseCliPortValue)\n\t\t.option(\"--no-open\", \"Do not open browser automatically.\")\n\t\t.option(\"--skip-shutdown-cleanup\", \"Do not move sessions to trash or delete task worktrees on shutdown.\")\n\t\t.showHelpAfterError()\n\t\t.addHelpText(\"after\", `\\nRuntime URL: ${getKanbanRuntimeOrigin()}`);\n\n\tprogram.addOption(new Option(\"--agent <id>\", \"Deprecated compatibility flag. Ignored.\").hideHelp());\n\n\tregisterTaskCommand(program);\n\tregisterHooksCommand(program);\n\n\tprogram\n\t\t.command(\"mcp\")\n\t\t.description(\"Deprecated compatibility command.\")\n\t\t.action(() => {\n\t\t\tconsole.warn(\"Deprecated. Please uninstall Kanban MCP.\");\n\t\t});\n\n\tprogram.action(async (options: RootCommandOptions) => {\n\t\tawait runMainCommand(\n\t\t\t{\n\t\t\t\thost: options.host ?? null,\n\t\t\t\tport: options.port ?? null,\n\t\t\t\tnoOpen: options.open === false,\n\t\t\t\tskipShutdownCleanup: options.skipShutdownCleanup === true,\n\t\t\t},\n\t\t\tshouldAutoOpenBrowser,\n\t\t);\n\t});\n\n\treturn program;\n}\n\nasync function run(): Promise<void> {\n\tconst argv = process.argv.slice(2);\n\tconst program = createProgram(argv);\n\tawait program.parseAsync(argv, { from: \"user\" });\n}\n\nvoid run().catch(async (error) => {\n\tcaptureNodeException(error, { area: \"startup\" });\n\tawait flushNodeTelemetry();\n\tconst message = error instanceof Error ? error.message : String(error);\n\tconsole.error(`Failed to start Kanban: ${message}`);\n\tprocess.exit(1);\n});\n"],"names":[],"mappings":"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","debugId":"461d1b47-e68d-5084-b1e0-e90ad020250e"}
@@ -1,4 +1,4 @@
1
- import type { RuntimeClineAccountProfileResponse, RuntimeClineOauthLoginResponse, RuntimeClineProviderCatalogResponse, RuntimeClineProviderModelsResponse, RuntimeClineProviderSettings, RuntimeClineProviderSettingsSaveResponse } from "../core/api-contract.js";
1
+ import type { RuntimeClineAccountProfileResponse, RuntimeClineKanbanAccessResponse, RuntimeClineOauthLoginResponse, RuntimeClineProviderCatalogResponse, RuntimeClineProviderModelsResponse, RuntimeClineProviderSettings, RuntimeClineProviderSettingsSaveResponse } from "../core/api-contract.js";
2
2
  import { type ManagedClineOauthProviderId } from "./sdk-provider-boundary.js";
3
3
  export interface ResolvedClineLaunchConfig {
4
4
  providerId: string;
@@ -9,6 +9,7 @@ export interface ResolvedClineLaunchConfig {
9
9
  export declare function createClineProviderService(): {
10
10
  getProviderSettingsSummary(): RuntimeClineProviderSettings;
11
11
  getClineAccountProfile(): Promise<RuntimeClineAccountProfileResponse>;
12
+ getClineKanbanAccess(): Promise<RuntimeClineKanbanAccessResponse>;
12
13
  resolveLaunchConfig(): Promise<ResolvedClineLaunchConfig>;
13
14
  getProviderCatalog(): Promise<RuntimeClineProviderCatalogResponse>;
14
15
  getProviderModels(providerId: string): Promise<RuntimeClineProviderModelsResponse>;
@@ -1 +1 @@
1
- {"version":3,"file":"cline-provider-service.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/cline-provider-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,kCAAkC,EAClC,8BAA8B,EAE9B,mCAAmC,EAEnC,kCAAkC,EAClC,4BAA4B,EAC5B,wCAAwC,EACxC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAEN,KAAK,2BAA2B,EAShC,MAAM,4BAA4B,CAAC;AAUpC,MAAM,WAAW,yBAAyB;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAsPD,wBAAgB,0BAA0B;kCAKV,4BAA4B;8BAI1B,OAAO,CAAC,kCAAkC,CAAC;2BA0D9C,OAAO,CAAC,yBAAyB,CAAC;0BA+BnC,OAAO,CAAC,mCAAmC,CAAC;kCAwCpC,MAAM,GAAG,OAAO,CAAC,kCAAkC,CAAC;gCAkD5D;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,GAAG,wCAAwC;yBAsDjB;QAC1B,UAAU,EAAE,2BAA2B,CAAC;QACxC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,GAAG,OAAO,CAAC,8BAA8B,CAAC;EAmD5C"}
1
+ {"version":3,"file":"cline-provider-service.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/cline-provider-service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,kCAAkC,EAClC,gCAAgC,EAChC,8BAA8B,EAE9B,mCAAmC,EAEnC,kCAAkC,EAClC,4BAA4B,EAC5B,wCAAwC,EACxC,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAGN,KAAK,2BAA2B,EAShC,MAAM,4BAA4B,CAAC;AAepC,MAAM,WAAW,yBAAyB;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AA2PD,wBAAgB,0BAA0B;kCAKV,4BAA4B;8BAI1B,OAAO,CAAC,kCAAkC,CAAC;4BA0D7C,OAAO,CAAC,gCAAgC,CAAC;2BAoC1C,OAAO,CAAC,yBAAyB,CAAC;0BA+BnC,OAAO,CAAC,mCAAmC,CAAC;kCAwCpC,MAAM,GAAG,OAAO,CAAC,kCAAkC,CAAC;gCAkD5D;QAC3B,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,GAAG,wCAAwC;yBAsDjB;QAC1B,UAAU,EAAE,2BAA2B,CAAC;QACxC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,GAAG,OAAO,CAAC,8BAA8B,CAAC;EAmD5C"}
@@ -1,7 +1,8 @@
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]="96ff5604-ed57-5aa0-90d5-40263b9155be")}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]="7478f901-486a-5c34-a9de-7db7636d688c")}catch(e){}}();
3
3
  import { openInBrowser } from "../server/browser.js";
4
- import { fetchSdkClineAccountProfile, getLastUsedSdkProviderSettings, getSdkProviderSettings, listSdkProviderCatalog, listSdkProviderModels, loginManagedOauthProvider, refreshManagedOauthCredentials, saveSdkProviderSettings, } from "./sdk-provider-boundary.js";
4
+ import { z } from "zod";
5
+ import { fetchSdkClineAccountProfile, fetchSdkClineUserRemoteConfig, getLastUsedSdkProviderSettings, getSdkProviderSettings, listSdkProviderCatalog, listSdkProviderModels, loginManagedOauthProvider, refreshManagedOauthCredentials, saveSdkProviderSettings, } from "./sdk-provider-boundary.js";
5
6
  const WORKOS_TOKEN_PREFIX = "workos:";
6
7
  const DEFAULT_CLINE_API_BASE_URL = "https://api.cline.bot";
7
8
  const MANAGED_PROVIDER_ENV_KEYS = {
@@ -9,12 +10,19 @@ const MANAGED_PROVIDER_ENV_KEYS = {
9
10
  oca: ["OCA_API_KEY"],
10
11
  "openai-codex": [],
11
12
  };
13
+ const CLINE_REMOTE_CONFIG_SCHEMA = z.object({
14
+ kanbanEnabled: z.boolean().optional(),
15
+ });
12
16
  function toErrorMessage(error) {
13
17
  if (error instanceof Error) {
14
18
  return error.message;
15
19
  }
16
20
  return String(error);
17
21
  }
22
+ function parseClineRemoteConfigValue(value) {
23
+ const parsed = JSON.parse(value);
24
+ return CLINE_REMOTE_CONFIG_SCHEMA.parse(parsed);
25
+ }
18
26
  function isManagedOauthProviderId(providerId) {
19
27
  return providerId === "cline" || providerId === "oca" || providerId === "openai-codex";
20
28
  }
@@ -267,6 +275,39 @@ export function createClineProviderService() {
267
275
  };
268
276
  }
269
277
  },
278
+ async getClineKanbanAccess() {
279
+ try {
280
+ const selectedSettings = getSelectedProviderSettings();
281
+ if (!selectedSettings) {
282
+ return { enabled: true };
283
+ }
284
+ const normalizedProviderId = selectedSettings.provider.trim().toLowerCase();
285
+ if (normalizedProviderId !== "cline") {
286
+ return { enabled: true };
287
+ }
288
+ const rawAccessToken = selectedSettings.auth?.accessToken?.trim() ?? "";
289
+ if (!rawAccessToken) {
290
+ return { enabled: true };
291
+ }
292
+ const remoteConfigResponse = await fetchSdkClineUserRemoteConfig({
293
+ apiBaseUrl: selectedSettings.baseUrl?.trim() || DEFAULT_CLINE_API_BASE_URL,
294
+ accessToken: ensureWorkosPrefix(rawAccessToken),
295
+ });
296
+ if (!remoteConfigResponse.enabled) {
297
+ return { enabled: true };
298
+ }
299
+ const parsedRemoteConfig = parseClineRemoteConfigValue(remoteConfigResponse.value);
300
+ return {
301
+ enabled: parsedRemoteConfig.kanbanEnabled === true,
302
+ };
303
+ }
304
+ catch (error) {
305
+ return {
306
+ enabled: true,
307
+ error: toErrorMessage(error),
308
+ };
309
+ }
310
+ },
270
311
  async resolveLaunchConfig() {
271
312
  const selectedSettings = getSelectedProviderSettings();
272
313
  if (!selectedSettings) {
@@ -463,4 +504,4 @@ export function createClineProviderService() {
463
504
  };
464
505
  }
465
506
  //# sourceMappingURL=cline-provider-service.js.map
466
- //# debugId=96ff5604-ed57-5aa0-90d5-40263b9155be
507
+ //# debugId=7478f901-486a-5c34-a9de-7db7636d688c
@@ -1 +1 @@
1
- {"version":3,"file":"cline-provider-service.js","sources":["../../src/cline-sdk/cline-provider-service.ts"],"sourceRoot":"","sourcesContent":["// Kanban-facing facade over the SDK-backed provider store.\n// It resolves provider settings, model catalogs, OAuth flows, and launch\n// config without leaking SDK details into runtime-api.ts or the UI.\nimport type {\n\tRuntimeClineAccountProfileResponse,\n\tRuntimeClineOauthLoginResponse,\n\tRuntimeClineProviderCatalogItem,\n\tRuntimeClineProviderCatalogResponse,\n\tRuntimeClineProviderModel,\n\tRuntimeClineProviderModelsResponse,\n\tRuntimeClineProviderSettings,\n\tRuntimeClineProviderSettingsSaveResponse,\n} from \"../core/api-contract.js\";\nimport { openInBrowser } from \"../server/browser.js\";\nimport {\n\tfetchSdkClineAccountProfile,\n\ttype ManagedClineOauthProviderId,\n\ttype SdkProviderSettings,\n\tgetLastUsedSdkProviderSettings,\n\tgetSdkProviderSettings,\n\tlistSdkProviderCatalog,\n\tlistSdkProviderModels,\n\tloginManagedOauthProvider,\n\trefreshManagedOauthCredentials,\n\tsaveSdkProviderSettings,\n} from \"./sdk-provider-boundary.js\";\n\nconst WORKOS_TOKEN_PREFIX = \"workos:\";\nconst DEFAULT_CLINE_API_BASE_URL = \"https://api.cline.bot\";\nconst MANAGED_PROVIDER_ENV_KEYS: Record<ManagedClineOauthProviderId, readonly string[]> = {\n\tcline: [\"CLINE_API_KEY\"],\n\toca: [\"OCA_API_KEY\"],\n\t\"openai-codex\": [],\n};\n\nexport interface ResolvedClineLaunchConfig {\n\tproviderId: string;\n\tmodelId: string | null;\n\tapiKey: string | null;\n\tbaseUrl: string | null;\n}\n\nfunction toErrorMessage(error: unknown): string {\n\tif (error instanceof Error) {\n\t\treturn error.message;\n\t}\n\treturn String(error);\n}\n\nfunction isManagedOauthProviderId(providerId: string): providerId is ManagedClineOauthProviderId {\n\treturn providerId === \"cline\" || providerId === \"oca\" || providerId === \"openai-codex\";\n}\n\nfunction formatManagedProviderDisplayName(providerId: ManagedClineOauthProviderId): string {\n\tif (providerId === \"cline\") {\n\t\treturn \"Cline\";\n\t}\n\tif (providerId === \"oca\") {\n\t\treturn \"Oracle Code Assist\";\n\t}\n\treturn \"OpenAI Codex\";\n}\n\nfunction stripWorkosPrefix(accessToken: string): string {\n\tif (accessToken.toLowerCase().startsWith(WORKOS_TOKEN_PREFIX)) {\n\t\treturn accessToken.slice(WORKOS_TOKEN_PREFIX.length);\n\t}\n\treturn accessToken;\n}\n\nfunction ensureWorkosPrefix(accessToken: string): string {\n\tconst normalized = accessToken.trim();\n\tif (!normalized) {\n\t\treturn normalized;\n\t}\n\tif (normalized.toLowerCase().startsWith(WORKOS_TOKEN_PREFIX)) {\n\t\treturn normalized;\n\t}\n\treturn `${WORKOS_TOKEN_PREFIX}${normalized}`;\n}\n\nfunction toProviderApiKey(providerId: ManagedClineOauthProviderId, accessToken: string): string {\n\tif (providerId === \"cline\") {\n\t\treturn `${WORKOS_TOKEN_PREFIX}${accessToken}`;\n\t}\n\treturn accessToken;\n}\n\nfunction normalizeEpochMs(expiresAt: number | null | undefined): number {\n\tif (!expiresAt || !Number.isFinite(expiresAt) || expiresAt <= 0) {\n\t\treturn Date.now() - 1;\n\t}\n\tif (expiresAt >= 1_000_000_000_000) {\n\t\treturn Math.floor(expiresAt);\n\t}\n\treturn Math.floor(expiresAt * 1000);\n}\n\nfunction toResponseExpirySeconds(expiresAt: number | null | undefined): number | null {\n\tif (!expiresAt || !Number.isFinite(expiresAt) || expiresAt <= 0) {\n\t\treturn null;\n\t}\n\treturn Math.max(1, Math.floor(normalizeEpochMs(expiresAt) / 1000));\n}\n\nfunction resolveVisibleApiKey(settings: SdkProviderSettings | null): string | null {\n\tconst apiKey = settings?.apiKey?.trim() || settings?.auth?.apiKey?.trim() || \"\";\n\treturn apiKey.length > 0 ? apiKey : null;\n}\n\nfunction readEnvApiKey(envKey: string): string | null {\n\tconst apiKey = process.env[envKey]?.trim() ?? \"\";\n\treturn apiKey.length > 0 ? apiKey : null;\n}\n\nfunction resolveManagedProviderEnvApiKey(providerId: ManagedClineOauthProviderId): string | null {\n\tfor (const envKey of MANAGED_PROVIDER_ENV_KEYS[providerId]) {\n\t\tconst apiKey = readEnvApiKey(envKey);\n\t\tif (apiKey) {\n\t\t\treturn apiKey;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction resolveManagedProviderLaunchApiKey(input: {\n\tproviderId: ManagedClineOauthProviderId;\n\tsettings: SdkProviderSettings;\n\toauthApiKey: string | null;\n}): string {\n\tconst resolvedApiKey =\n\t\tinput.oauthApiKey ?? resolveVisibleApiKey(input.settings) ?? resolveManagedProviderEnvApiKey(input.providerId);\n\tif (resolvedApiKey) {\n\t\treturn resolvedApiKey;\n\t}\n\n\tconst envKeys = MANAGED_PROVIDER_ENV_KEYS[input.providerId];\n\tconst envHelp = envKeys.length > 0 ? ` or set ${envKeys.join(\" or \")}` : \"\";\n\tthrow new Error(\n\t\t`${formatManagedProviderDisplayName(input.providerId)} provider is selected but no ${formatManagedProviderDisplayName(input.providerId)} credentials are configured. Sign in from Settings${envHelp} before starting a native Cline task.`,\n\t);\n}\n\nfunction hasOauthAccessToken(settings: SdkProviderSettings | null): boolean {\n\treturn (settings?.auth?.accessToken?.trim() ?? \"\").length > 0;\n}\n\nfunction hasOauthRefreshToken(settings: SdkProviderSettings | null): boolean {\n\treturn (settings?.auth?.refreshToken?.trim() ?? \"\").length > 0;\n}\n\nfunction toRuntimeProviderModel(\n\tmodelId: string,\n\tmodelInfo: { name?: string; capabilities?: string[] },\n): RuntimeClineProviderModel {\n\tconst capabilities = new Set(modelInfo.capabilities ?? []);\n\tconst supportsVision = capabilities.has(\"images\");\n\tconst supportsAttachments = capabilities.has(\"files\") || supportsVision;\n\treturn {\n\t\tid: modelId,\n\t\tname: modelInfo.name?.trim() || modelId,\n\t\tsupportsVision: supportsVision || undefined,\n\t\tsupportsAttachments: supportsAttachments || undefined,\n\t};\n}\n\nfunction createEmptyProviderSettingsSummary(): RuntimeClineProviderSettings {\n\treturn {\n\t\tproviderId: null,\n\t\tmodelId: null,\n\t\tbaseUrl: null,\n\t\tapiKeyConfigured: false,\n\t\toauthProvider: null,\n\t\toauthAccessTokenConfigured: false,\n\t\toauthRefreshTokenConfigured: false,\n\t\toauthAccountId: null,\n\t\toauthExpiresAt: null,\n\t};\n}\n\nfunction toProviderSettingsSummary(settings: SdkProviderSettings | null): RuntimeClineProviderSettings {\n\tif (!settings) {\n\t\treturn createEmptyProviderSettingsSummary();\n\t}\n\n\tconst providerId = settings.provider?.trim() || null;\n\tconst oauthProvider = providerId && isManagedOauthProviderId(providerId) ? providerId : null;\n\n\treturn {\n\t\tproviderId,\n\t\tmodelId: settings.model?.trim() || null,\n\t\tbaseUrl: settings.baseUrl?.trim() || null,\n\t\tapiKeyConfigured: Boolean(resolveVisibleApiKey(settings)),\n\t\toauthProvider,\n\t\toauthAccessTokenConfigured: hasOauthAccessToken(settings),\n\t\toauthRefreshTokenConfigured: hasOauthRefreshToken(settings),\n\t\toauthAccountId: settings.auth?.accountId?.trim() || null,\n\t\toauthExpiresAt: toResponseExpirySeconds(settings.auth?.expiresAt),\n\t};\n}\n\nfunction getSelectedProviderSettings(): SdkProviderSettings | null {\n\treturn getLastUsedSdkProviderSettings();\n}\n\nfunction createRuntimeOauthCallbacks(providerId: ManagedClineOauthProviderId) {\n\tlet authUrl: string | null = null;\n\treturn {\n\t\tonAuth: ({ url }: { url: string; instructions?: string }) => {\n\t\t\tauthUrl = url;\n\t\t\topenInBrowser(url);\n\t\t},\n\t\tonPrompt: async () => {\n\t\t\tthrow new Error(\n\t\t\t\tauthUrl\n\t\t\t\t\t? `Browser callback did not complete. Open this URL and complete sign in: ${authUrl}`\n\t\t\t\t\t: `Browser callback did not complete for ${providerId}.`,\n\t\t\t);\n\t\t},\n\t\tonProgress: () => {},\n\t};\n}\n\nfunction authSettingsEqual(left: SdkProviderSettings[\"auth\"], right: SdkProviderSettings[\"auth\"]): boolean {\n\treturn (\n\t\t(left?.accessToken ?? null) === (right?.accessToken ?? null) &&\n\t\t(left?.refreshToken ?? null) === (right?.refreshToken ?? null) &&\n\t\t(left?.accountId ?? null) === (right?.accountId ?? null) &&\n\t\t(left?.expiresAt ?? null) === (right?.expiresAt ?? null)\n\t);\n}\n\nasync function refreshManagedOauthSettings(\n\tsettings: SdkProviderSettings,\n): Promise<{ settings: SdkProviderSettings; apiKey: string } | null> {\n\tconst providerId = settings.provider.trim().toLowerCase();\n\tif (!isManagedOauthProviderId(providerId)) {\n\t\treturn null;\n\t}\n\n\tconst accessToken = settings.auth?.accessToken?.trim() ?? \"\";\n\tconst refreshToken = settings.auth?.refreshToken?.trim() ?? \"\";\n\tif (!accessToken || !refreshToken) {\n\t\treturn null;\n\t}\n\n\tconst nextCredentials = await refreshManagedOauthCredentials({\n\t\tproviderId,\n\t\tcurrentCredentials: {\n\t\t\taccess: providerId === \"cline\" ? stripWorkosPrefix(accessToken) : accessToken,\n\t\t\trefresh: refreshToken,\n\t\t\texpires: normalizeEpochMs(settings.auth?.expiresAt),\n\t\t\taccountId: settings.auth?.accountId ?? undefined,\n\t\t},\n\t\tbaseUrl: settings.baseUrl?.trim() || null,\n\t\toauthProvider: providerId,\n\t});\n\tif (!nextCredentials) {\n\t\tthrow new Error(`OAuth credentials for provider \"${providerId}\" are invalid. Re-run OAuth login.`);\n\t}\n\n\tconst nextSettings: SdkProviderSettings = {\n\t\t...settings,\n\t\tauth: {\n\t\t\t...(settings.auth ?? {}),\n\t\t\taccessToken: toProviderApiKey(providerId, nextCredentials.access),\n\t\t\trefreshToken: nextCredentials.refresh,\n\t\t\taccountId: nextCredentials.accountId ?? undefined,\n\t\t\texpiresAt: normalizeEpochMs(nextCredentials.expires),\n\t\t},\n\t};\n\n\tif (!authSettingsEqual(settings.auth, nextSettings.auth)) {\n\t\tsaveSdkProviderSettings({\n\t\t\tsettings: nextSettings,\n\t\t\ttokenSource: \"oauth\",\n\t\t\tsetLastUsed: true,\n\t\t});\n\t}\n\n\treturn {\n\t\tsettings: nextSettings,\n\t\tapiKey: toProviderApiKey(providerId, nextCredentials.access),\n\t};\n}\n\nexport function createClineProviderService() {\n\tconst getProviderSettingsSummary = (): RuntimeClineProviderSettings =>\n\t\ttoProviderSettingsSummary(getSelectedProviderSettings());\n\n\treturn {\n\t\tgetProviderSettingsSummary(): RuntimeClineProviderSettings {\n\t\t\treturn getProviderSettingsSummary();\n\t\t},\n\n\t\tasync getClineAccountProfile(): Promise<RuntimeClineAccountProfileResponse> {\n\t\t\ttry {\n\t\t\t\tconst selectedSettings = getSelectedProviderSettings();\n\t\t\t\tif (!selectedSettings) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tprofile: null,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst normalizedProviderId = selectedSettings.provider.trim().toLowerCase();\n\t\t\t\tif (normalizedProviderId !== \"cline\") {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tprofile: null,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst tryFetchProfile = async (\n\t\t\t\t\tsettings: SdkProviderSettings,\n\t\t\t\t): Promise<RuntimeClineAccountProfileResponse[\"profile\"] | null> => {\n\t\t\t\t\tconst rawAccessToken = settings.auth?.accessToken?.trim() ?? \"\";\n\t\t\t\t\tif (!rawAccessToken) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tconst me = await fetchSdkClineAccountProfile({\n\t\t\t\t\t\tapiBaseUrl: settings.baseUrl?.trim() || DEFAULT_CLINE_API_BASE_URL,\n\t\t\t\t\t\taccessToken: ensureWorkosPrefix(rawAccessToken),\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\taccountId: me.id?.trim() || settings.auth?.accountId?.trim() || null,\n\t\t\t\t\t\temail: me.email?.trim() || null,\n\t\t\t\t\t\tdisplayName: me.displayName?.trim() || null,\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\tconst profile = await tryFetchProfile(selectedSettings);\n\t\t\t\t\tif (profile) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprofile,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Retry once after OAuth refresh below.\n\t\t\t\t}\n\n\t\t\t\tconst oauthResolution = await refreshManagedOauthSettings(selectedSettings);\n\t\t\t\tconst profile = oauthResolution?.settings ? await tryFetchProfile(oauthResolution.settings) : null;\n\t\t\t\treturn {\n\t\t\t\t\tprofile,\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tprofile: null,\n\t\t\t\t\terror: toErrorMessage(error),\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\n\t\tasync resolveLaunchConfig(): Promise<ResolvedClineLaunchConfig> {\n\t\t\tconst selectedSettings = getSelectedProviderSettings();\n\t\t\tif (!selectedSettings) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"No native Cline provider is configured. Open Settings, choose a provider, and then start the task again.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst normalizedProviderId = selectedSettings.provider.trim().toLowerCase();\n\t\t\tif (!normalizedProviderId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"No native Cline provider is configured. Open Settings, choose a provider, and then start the task again.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst oauthResolution = await refreshManagedOauthSettings(selectedSettings);\n\t\t\tconst resolvedSettings = oauthResolution?.settings ?? selectedSettings;\n\t\t\tconst apiKey = isManagedOauthProviderId(normalizedProviderId)\n\t\t\t\t? resolveManagedProviderLaunchApiKey({\n\t\t\t\t\t\tproviderId: normalizedProviderId,\n\t\t\t\t\t\tsettings: resolvedSettings,\n\t\t\t\t\t\toauthApiKey: oauthResolution?.apiKey ?? null,\n\t\t\t\t\t})\n\t\t\t\t: resolveVisibleApiKey(resolvedSettings);\n\t\t\treturn {\n\t\t\t\tproviderId: normalizedProviderId,\n\t\t\t\tmodelId: resolvedSettings.model?.trim() || null,\n\t\t\t\tapiKey,\n\t\t\t\tbaseUrl: resolvedSettings.baseUrl?.trim() || null,\n\t\t\t};\n\t\t},\n\n\t\tasync getProviderCatalog(): Promise<RuntimeClineProviderCatalogResponse> {\n\t\t\tconst selectedProviderId = getProviderSettingsSummary().providerId?.trim().toLowerCase() ?? \"\";\n\t\t\tconst providers: RuntimeClineProviderCatalogItem[] = await listSdkProviderCatalog()\n\t\t\t\t.then((sdkProviders) =>\n\t\t\t\t\tsdkProviders\n\t\t\t\t\t\t.map((provider) => ({\n\t\t\t\t\t\t\tid: provider.id,\n\t\t\t\t\t\t\tname: provider.name,\n\t\t\t\t\t\t\toauthSupported: (provider.capabilities ?? []).includes(\"oauth\"),\n\t\t\t\t\t\t\tenabled:\n\t\t\t\t\t\t\t\tselectedProviderId.length > 0 ? selectedProviderId === provider.id : provider.id === \"cline\",\n\t\t\t\t\t\t\tdefaultModelId: provider.defaultModelId ?? null,\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.sort((left, right) => {\n\t\t\t\t\t\t\tif (left.id === \"cline\") {\n\t\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (right.id === \"cline\") {\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn left.name.localeCompare(right.name);\n\t\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t.catch(() => []);\n\n\t\t\tif (selectedProviderId.length > 0 && !providers.some((provider) => provider.id === selectedProviderId)) {\n\t\t\t\tproviders.unshift({\n\t\t\t\t\tid: selectedProviderId,\n\t\t\t\t\tname: selectedProviderId,\n\t\t\t\t\toauthSupported: false,\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tdefaultModelId: getProviderSettingsSummary().modelId,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tproviders,\n\t\t\t};\n\t\t},\n\n\t\tasync getProviderModels(providerId: string): Promise<RuntimeClineProviderModelsResponse> {\n\t\t\tconst normalizedProviderId = providerId.trim().toLowerCase();\n\t\t\tconst providerModels =\n\t\t\t\tnormalizedProviderId.length > 0\n\t\t\t\t\t? await listSdkProviderModels(normalizedProviderId)\n\t\t\t\t\t\t\t.then((sdkModels) =>\n\t\t\t\t\t\t\t\tObject.entries(sdkModels)\n\t\t\t\t\t\t\t\t\t.map(([modelId, modelInfo]) => {\n\t\t\t\t\t\t\t\t\t\tconst parsedModelInfo =\n\t\t\t\t\t\t\t\t\t\t\ttypeof modelInfo === \"object\" && modelInfo !== null\n\t\t\t\t\t\t\t\t\t\t\t\t? (modelInfo as {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname?: unknown;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcapabilities?: unknown;\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\t\t\t\treturn toRuntimeProviderModel(modelId, {\n\t\t\t\t\t\t\t\t\t\t\tname: typeof parsedModelInfo?.name === \"string\" ? parsedModelInfo.name : undefined,\n\t\t\t\t\t\t\t\t\t\t\tcapabilities: Array.isArray(parsedModelInfo?.capabilities)\n\t\t\t\t\t\t\t\t\t\t\t\t? parsedModelInfo.capabilities.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(value): value is string => typeof value === \"string\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.sort((left, right) => left.name.localeCompare(right.name)),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.catch(() => [])\n\t\t\t\t\t: [];\n\n\t\t\tif (providerModels.length > 0) {\n\t\t\t\treturn {\n\t\t\t\t\tproviderId: normalizedProviderId,\n\t\t\t\t\tmodels: providerModels,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst configuredModel = getProviderSettingsSummary().modelId?.trim() ?? \"\";\n\t\t\tif (configuredModel.length > 0) {\n\t\t\t\treturn {\n\t\t\t\t\tproviderId: normalizedProviderId || providerId,\n\t\t\t\t\tmodels: [{ id: configuredModel, name: configuredModel }],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tproviderId: normalizedProviderId || providerId,\n\t\t\t\tmodels: [],\n\t\t\t};\n\t\t},\n\n\t\tsaveProviderSettings(input: {\n\t\t\tproviderId: string;\n\t\t\tmodelId?: string | null;\n\t\t\tapiKey?: string | null;\n\t\t\tbaseUrl?: string | null;\n\t\t}): RuntimeClineProviderSettingsSaveResponse {\n\t\t\tconst providerId = input.providerId.trim().toLowerCase();\n\t\t\tif (!providerId) {\n\t\t\t\tthrow new Error(\"Provider ID cannot be empty.\");\n\t\t\t}\n\n\t\t\tconst existingSettings = getSdkProviderSettings(providerId) ?? {\n\t\t\t\tprovider: providerId,\n\t\t\t};\n\t\t\tconst nextSettings: SdkProviderSettings = {\n\t\t\t\t...existingSettings,\n\t\t\t\tprovider: providerId,\n\t\t\t};\n\n\t\t\tif (input.modelId !== undefined) {\n\t\t\t\tconst modelId = input.modelId?.trim() ?? \"\";\n\t\t\t\tif (modelId) {\n\t\t\t\t\tnextSettings.model = modelId;\n\t\t\t\t} else {\n\t\t\t\t\tdelete nextSettings.model;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (input.baseUrl !== undefined) {\n\t\t\t\tconst baseUrl = input.baseUrl?.trim() ?? \"\";\n\t\t\t\tif (baseUrl) {\n\t\t\t\t\tnextSettings.baseUrl = baseUrl;\n\t\t\t\t} else {\n\t\t\t\t\tdelete nextSettings.baseUrl;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (input.apiKey !== undefined) {\n\t\t\t\tconst apiKey = input.apiKey?.trim() ?? \"\";\n\t\t\t\tif (apiKey) {\n\t\t\t\t\tnextSettings.apiKey = apiKey;\n\t\t\t\t} else {\n\t\t\t\t\tdelete nextSettings.apiKey;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isManagedOauthProviderId(providerId)) {\n\t\t\t\tdelete nextSettings.auth;\n\t\t\t}\n\n\t\t\tsaveSdkProviderSettings({\n\t\t\t\tsettings: nextSettings,\n\t\t\t\ttokenSource: hasOauthAccessToken(nextSettings) ? \"oauth\" : \"manual\",\n\t\t\t\tsetLastUsed: true,\n\t\t\t});\n\n\t\t\treturn toProviderSettingsSummary(nextSettings);\n\t\t},\n\n\t\tasync runOauthLogin(input: {\n\t\t\tproviderId: ManagedClineOauthProviderId;\n\t\t\tbaseUrl?: string | null;\n\t\t}): Promise<RuntimeClineOauthLoginResponse> {\n\t\t\ttry {\n\t\t\t\tconst existingSettings = getSdkProviderSettings(input.providerId) ?? {\n\t\t\t\t\tprovider: input.providerId,\n\t\t\t\t};\n\t\t\t\tconst baseUrl = input.baseUrl?.trim() || null;\n\t\t\t\tconst credentials = await loginManagedOauthProvider({\n\t\t\t\t\tproviderId: input.providerId,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\toauthProvider: input.providerId,\n\t\t\t\t\tcallbacks: createRuntimeOauthCallbacks(input.providerId),\n\t\t\t\t});\n\n\t\t\t\tconst nextSettings: SdkProviderSettings = {\n\t\t\t\t\t...existingSettings,\n\t\t\t\t\tprovider: input.providerId,\n\t\t\t\t\tauth: {\n\t\t\t\t\t\t...(existingSettings.auth ?? {}),\n\t\t\t\t\t\taccessToken: toProviderApiKey(input.providerId, credentials.access),\n\t\t\t\t\t\trefreshToken: credentials.refresh,\n\t\t\t\t\t\taccountId: credentials.accountId ?? undefined,\n\t\t\t\t\t\texpiresAt: normalizeEpochMs(credentials.expires),\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tif (baseUrl) {\n\t\t\t\t\tnextSettings.baseUrl = baseUrl;\n\t\t\t\t} else {\n\t\t\t\t\tdelete nextSettings.baseUrl;\n\t\t\t\t}\n\n\t\t\t\tsaveSdkProviderSettings({\n\t\t\t\t\tsettings: nextSettings,\n\t\t\t\t\ttokenSource: \"oauth\",\n\t\t\t\t\tsetLastUsed: true,\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tok: true,\n\t\t\t\t\tprovider: input.providerId,\n\t\t\t\t\tsettings: toProviderSettingsSummary(nextSettings),\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tprovider: input.providerId,\n\t\t\t\t\terror: toErrorMessage(error),\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t};\n}\n"],"names":[],"mappings":"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","debugId":"96ff5604-ed57-5aa0-90d5-40263b9155be"}
1
+ {"version":3,"file":"cline-provider-service.js","sources":["../../src/cline-sdk/cline-provider-service.ts"],"sourceRoot":"","sourcesContent":["// Kanban-facing facade over the SDK-backed provider store.\n// It resolves provider settings, model catalogs, OAuth flows, and launch\n// config without leaking SDK details into runtime-api.ts or the UI.\nimport type {\n\tRuntimeClineAccountProfileResponse,\n\tRuntimeClineKanbanAccessResponse,\n\tRuntimeClineOauthLoginResponse,\n\tRuntimeClineProviderCatalogItem,\n\tRuntimeClineProviderCatalogResponse,\n\tRuntimeClineProviderModel,\n\tRuntimeClineProviderModelsResponse,\n\tRuntimeClineProviderSettings,\n\tRuntimeClineProviderSettingsSaveResponse,\n} from \"../core/api-contract.js\";\nimport { openInBrowser } from \"../server/browser.js\";\nimport { z } from \"zod\";\nimport {\n\tfetchSdkClineAccountProfile,\n\tfetchSdkClineUserRemoteConfig,\n\ttype ManagedClineOauthProviderId,\n\ttype SdkProviderSettings,\n\tgetLastUsedSdkProviderSettings,\n\tgetSdkProviderSettings,\n\tlistSdkProviderCatalog,\n\tlistSdkProviderModels,\n\tloginManagedOauthProvider,\n\trefreshManagedOauthCredentials,\n\tsaveSdkProviderSettings,\n} from \"./sdk-provider-boundary.js\";\n\nconst WORKOS_TOKEN_PREFIX = \"workos:\";\nconst DEFAULT_CLINE_API_BASE_URL = \"https://api.cline.bot\";\nconst MANAGED_PROVIDER_ENV_KEYS: Record<ManagedClineOauthProviderId, readonly string[]> = {\n\tcline: [\"CLINE_API_KEY\"],\n\toca: [\"OCA_API_KEY\"],\n\t\"openai-codex\": [],\n};\nconst CLINE_REMOTE_CONFIG_SCHEMA = z.object({\n\tkanbanEnabled: z.boolean().optional(),\n});\n\ntype ClineRemoteConfig = z.infer<typeof CLINE_REMOTE_CONFIG_SCHEMA>;\n\nexport interface ResolvedClineLaunchConfig {\n\tproviderId: string;\n\tmodelId: string | null;\n\tapiKey: string | null;\n\tbaseUrl: string | null;\n}\n\nfunction toErrorMessage(error: unknown): string {\n\tif (error instanceof Error) {\n\t\treturn error.message;\n\t}\n\treturn String(error);\n}\n\nfunction parseClineRemoteConfigValue(value: string): ClineRemoteConfig {\n\tconst parsed = JSON.parse(value) as unknown;\n\treturn CLINE_REMOTE_CONFIG_SCHEMA.parse(parsed);\n}\n\nfunction isManagedOauthProviderId(providerId: string): providerId is ManagedClineOauthProviderId {\n\treturn providerId === \"cline\" || providerId === \"oca\" || providerId === \"openai-codex\";\n}\n\nfunction formatManagedProviderDisplayName(providerId: ManagedClineOauthProviderId): string {\n\tif (providerId === \"cline\") {\n\t\treturn \"Cline\";\n\t}\n\tif (providerId === \"oca\") {\n\t\treturn \"Oracle Code Assist\";\n\t}\n\treturn \"OpenAI Codex\";\n}\n\nfunction stripWorkosPrefix(accessToken: string): string {\n\tif (accessToken.toLowerCase().startsWith(WORKOS_TOKEN_PREFIX)) {\n\t\treturn accessToken.slice(WORKOS_TOKEN_PREFIX.length);\n\t}\n\treturn accessToken;\n}\n\nfunction ensureWorkosPrefix(accessToken: string): string {\n\tconst normalized = accessToken.trim();\n\tif (!normalized) {\n\t\treturn normalized;\n\t}\n\tif (normalized.toLowerCase().startsWith(WORKOS_TOKEN_PREFIX)) {\n\t\treturn normalized;\n\t}\n\treturn `${WORKOS_TOKEN_PREFIX}${normalized}`;\n}\n\nfunction toProviderApiKey(providerId: ManagedClineOauthProviderId, accessToken: string): string {\n\tif (providerId === \"cline\") {\n\t\treturn `${WORKOS_TOKEN_PREFIX}${accessToken}`;\n\t}\n\treturn accessToken;\n}\n\nfunction normalizeEpochMs(expiresAt: number | null | undefined): number {\n\tif (!expiresAt || !Number.isFinite(expiresAt) || expiresAt <= 0) {\n\t\treturn Date.now() - 1;\n\t}\n\tif (expiresAt >= 1_000_000_000_000) {\n\t\treturn Math.floor(expiresAt);\n\t}\n\treturn Math.floor(expiresAt * 1000);\n}\n\nfunction toResponseExpirySeconds(expiresAt: number | null | undefined): number | null {\n\tif (!expiresAt || !Number.isFinite(expiresAt) || expiresAt <= 0) {\n\t\treturn null;\n\t}\n\treturn Math.max(1, Math.floor(normalizeEpochMs(expiresAt) / 1000));\n}\n\nfunction resolveVisibleApiKey(settings: SdkProviderSettings | null): string | null {\n\tconst apiKey = settings?.apiKey?.trim() || settings?.auth?.apiKey?.trim() || \"\";\n\treturn apiKey.length > 0 ? apiKey : null;\n}\n\nfunction readEnvApiKey(envKey: string): string | null {\n\tconst apiKey = process.env[envKey]?.trim() ?? \"\";\n\treturn apiKey.length > 0 ? apiKey : null;\n}\n\nfunction resolveManagedProviderEnvApiKey(providerId: ManagedClineOauthProviderId): string | null {\n\tfor (const envKey of MANAGED_PROVIDER_ENV_KEYS[providerId]) {\n\t\tconst apiKey = readEnvApiKey(envKey);\n\t\tif (apiKey) {\n\t\t\treturn apiKey;\n\t\t}\n\t}\n\treturn null;\n}\n\nfunction resolveManagedProviderLaunchApiKey(input: {\n\tproviderId: ManagedClineOauthProviderId;\n\tsettings: SdkProviderSettings;\n\toauthApiKey: string | null;\n}): string {\n\tconst resolvedApiKey =\n\t\tinput.oauthApiKey ?? resolveVisibleApiKey(input.settings) ?? resolveManagedProviderEnvApiKey(input.providerId);\n\tif (resolvedApiKey) {\n\t\treturn resolvedApiKey;\n\t}\n\n\tconst envKeys = MANAGED_PROVIDER_ENV_KEYS[input.providerId];\n\tconst envHelp = envKeys.length > 0 ? ` or set ${envKeys.join(\" or \")}` : \"\";\n\tthrow new Error(\n\t\t`${formatManagedProviderDisplayName(input.providerId)} provider is selected but no ${formatManagedProviderDisplayName(input.providerId)} credentials are configured. Sign in from Settings${envHelp} before starting a native Cline task.`,\n\t);\n}\n\nfunction hasOauthAccessToken(settings: SdkProviderSettings | null): boolean {\n\treturn (settings?.auth?.accessToken?.trim() ?? \"\").length > 0;\n}\n\nfunction hasOauthRefreshToken(settings: SdkProviderSettings | null): boolean {\n\treturn (settings?.auth?.refreshToken?.trim() ?? \"\").length > 0;\n}\n\nfunction toRuntimeProviderModel(\n\tmodelId: string,\n\tmodelInfo: { name?: string; capabilities?: string[] },\n): RuntimeClineProviderModel {\n\tconst capabilities = new Set(modelInfo.capabilities ?? []);\n\tconst supportsVision = capabilities.has(\"images\");\n\tconst supportsAttachments = capabilities.has(\"files\") || supportsVision;\n\treturn {\n\t\tid: modelId,\n\t\tname: modelInfo.name?.trim() || modelId,\n\t\tsupportsVision: supportsVision || undefined,\n\t\tsupportsAttachments: supportsAttachments || undefined,\n\t};\n}\n\nfunction createEmptyProviderSettingsSummary(): RuntimeClineProviderSettings {\n\treturn {\n\t\tproviderId: null,\n\t\tmodelId: null,\n\t\tbaseUrl: null,\n\t\tapiKeyConfigured: false,\n\t\toauthProvider: null,\n\t\toauthAccessTokenConfigured: false,\n\t\toauthRefreshTokenConfigured: false,\n\t\toauthAccountId: null,\n\t\toauthExpiresAt: null,\n\t};\n}\n\nfunction toProviderSettingsSummary(settings: SdkProviderSettings | null): RuntimeClineProviderSettings {\n\tif (!settings) {\n\t\treturn createEmptyProviderSettingsSummary();\n\t}\n\n\tconst providerId = settings.provider?.trim() || null;\n\tconst oauthProvider = providerId && isManagedOauthProviderId(providerId) ? providerId : null;\n\n\treturn {\n\t\tproviderId,\n\t\tmodelId: settings.model?.trim() || null,\n\t\tbaseUrl: settings.baseUrl?.trim() || null,\n\t\tapiKeyConfigured: Boolean(resolveVisibleApiKey(settings)),\n\t\toauthProvider,\n\t\toauthAccessTokenConfigured: hasOauthAccessToken(settings),\n\t\toauthRefreshTokenConfigured: hasOauthRefreshToken(settings),\n\t\toauthAccountId: settings.auth?.accountId?.trim() || null,\n\t\toauthExpiresAt: toResponseExpirySeconds(settings.auth?.expiresAt),\n\t};\n}\n\nfunction getSelectedProviderSettings(): SdkProviderSettings | null {\n\treturn getLastUsedSdkProviderSettings();\n}\n\nfunction createRuntimeOauthCallbacks(providerId: ManagedClineOauthProviderId) {\n\tlet authUrl: string | null = null;\n\treturn {\n\t\tonAuth: ({ url }: { url: string; instructions?: string }) => {\n\t\t\tauthUrl = url;\n\t\t\topenInBrowser(url);\n\t\t},\n\t\tonPrompt: async () => {\n\t\t\tthrow new Error(\n\t\t\t\tauthUrl\n\t\t\t\t\t? `Browser callback did not complete. Open this URL and complete sign in: ${authUrl}`\n\t\t\t\t\t: `Browser callback did not complete for ${providerId}.`,\n\t\t\t);\n\t\t},\n\t\tonProgress: () => {},\n\t};\n}\n\nfunction authSettingsEqual(left: SdkProviderSettings[\"auth\"], right: SdkProviderSettings[\"auth\"]): boolean {\n\treturn (\n\t\t(left?.accessToken ?? null) === (right?.accessToken ?? null) &&\n\t\t(left?.refreshToken ?? null) === (right?.refreshToken ?? null) &&\n\t\t(left?.accountId ?? null) === (right?.accountId ?? null) &&\n\t\t(left?.expiresAt ?? null) === (right?.expiresAt ?? null)\n\t);\n}\n\nasync function refreshManagedOauthSettings(\n\tsettings: SdkProviderSettings,\n): Promise<{ settings: SdkProviderSettings; apiKey: string } | null> {\n\tconst providerId = settings.provider.trim().toLowerCase();\n\tif (!isManagedOauthProviderId(providerId)) {\n\t\treturn null;\n\t}\n\n\tconst accessToken = settings.auth?.accessToken?.trim() ?? \"\";\n\tconst refreshToken = settings.auth?.refreshToken?.trim() ?? \"\";\n\tif (!accessToken || !refreshToken) {\n\t\treturn null;\n\t}\n\n\tconst nextCredentials = await refreshManagedOauthCredentials({\n\t\tproviderId,\n\t\tcurrentCredentials: {\n\t\t\taccess: providerId === \"cline\" ? stripWorkosPrefix(accessToken) : accessToken,\n\t\t\trefresh: refreshToken,\n\t\t\texpires: normalizeEpochMs(settings.auth?.expiresAt),\n\t\t\taccountId: settings.auth?.accountId ?? undefined,\n\t\t},\n\t\tbaseUrl: settings.baseUrl?.trim() || null,\n\t\toauthProvider: providerId,\n\t});\n\tif (!nextCredentials) {\n\t\tthrow new Error(`OAuth credentials for provider \"${providerId}\" are invalid. Re-run OAuth login.`);\n\t}\n\n\tconst nextSettings: SdkProviderSettings = {\n\t\t...settings,\n\t\tauth: {\n\t\t\t...(settings.auth ?? {}),\n\t\t\taccessToken: toProviderApiKey(providerId, nextCredentials.access),\n\t\t\trefreshToken: nextCredentials.refresh,\n\t\t\taccountId: nextCredentials.accountId ?? undefined,\n\t\t\texpiresAt: normalizeEpochMs(nextCredentials.expires),\n\t\t},\n\t};\n\n\tif (!authSettingsEqual(settings.auth, nextSettings.auth)) {\n\t\tsaveSdkProviderSettings({\n\t\t\tsettings: nextSettings,\n\t\t\ttokenSource: \"oauth\",\n\t\t\tsetLastUsed: true,\n\t\t});\n\t}\n\n\treturn {\n\t\tsettings: nextSettings,\n\t\tapiKey: toProviderApiKey(providerId, nextCredentials.access),\n\t};\n}\n\nexport function createClineProviderService() {\n\tconst getProviderSettingsSummary = (): RuntimeClineProviderSettings =>\n\t\ttoProviderSettingsSummary(getSelectedProviderSettings());\n\n\treturn {\n\t\tgetProviderSettingsSummary(): RuntimeClineProviderSettings {\n\t\t\treturn getProviderSettingsSummary();\n\t\t},\n\n\t\tasync getClineAccountProfile(): Promise<RuntimeClineAccountProfileResponse> {\n\t\t\ttry {\n\t\t\t\tconst selectedSettings = getSelectedProviderSettings();\n\t\t\t\tif (!selectedSettings) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tprofile: null,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst normalizedProviderId = selectedSettings.provider.trim().toLowerCase();\n\t\t\t\tif (normalizedProviderId !== \"cline\") {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tprofile: null,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst tryFetchProfile = async (\n\t\t\t\t\tsettings: SdkProviderSettings,\n\t\t\t\t): Promise<RuntimeClineAccountProfileResponse[\"profile\"] | null> => {\n\t\t\t\t\tconst rawAccessToken = settings.auth?.accessToken?.trim() ?? \"\";\n\t\t\t\t\tif (!rawAccessToken) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\tconst me = await fetchSdkClineAccountProfile({\n\t\t\t\t\t\tapiBaseUrl: settings.baseUrl?.trim() || DEFAULT_CLINE_API_BASE_URL,\n\t\t\t\t\t\taccessToken: ensureWorkosPrefix(rawAccessToken),\n\t\t\t\t\t});\n\t\t\t\t\treturn {\n\t\t\t\t\t\taccountId: me.id?.trim() || settings.auth?.accountId?.trim() || null,\n\t\t\t\t\t\temail: me.email?.trim() || null,\n\t\t\t\t\t\tdisplayName: me.displayName?.trim() || null,\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\ttry {\n\t\t\t\t\tconst profile = await tryFetchProfile(selectedSettings);\n\t\t\t\t\tif (profile) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tprofile,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\t// Retry once after OAuth refresh below.\n\t\t\t\t}\n\n\t\t\t\tconst oauthResolution = await refreshManagedOauthSettings(selectedSettings);\n\t\t\t\tconst profile = oauthResolution?.settings ? await tryFetchProfile(oauthResolution.settings) : null;\n\t\t\t\treturn {\n\t\t\t\t\tprofile,\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tprofile: null,\n\t\t\t\t\terror: toErrorMessage(error),\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\n\t\tasync getClineKanbanAccess(): Promise<RuntimeClineKanbanAccessResponse> {\n\t\t\ttry {\n\t\t\t\tconst selectedSettings = getSelectedProviderSettings();\n\t\t\t\tif (!selectedSettings) {\n\t\t\t\t\treturn { enabled: true };\n\t\t\t\t}\n\n\t\t\t\tconst normalizedProviderId = selectedSettings.provider.trim().toLowerCase();\n\t\t\t\tif (normalizedProviderId !== \"cline\") {\n\t\t\t\t\treturn { enabled: true };\n\t\t\t\t}\n\n\t\t\t\tconst rawAccessToken = selectedSettings.auth?.accessToken?.trim() ?? \"\";\n\t\t\t\tif (!rawAccessToken) {\n\t\t\t\t\treturn { enabled: true };\n\t\t\t\t}\n\n\t\t\t\tconst remoteConfigResponse = await fetchSdkClineUserRemoteConfig({\n\t\t\t\t\tapiBaseUrl: selectedSettings.baseUrl?.trim() || DEFAULT_CLINE_API_BASE_URL,\n\t\t\t\t\taccessToken: ensureWorkosPrefix(rawAccessToken),\n\t\t\t\t});\n\t\t\t\tif (!remoteConfigResponse.enabled) {\n\t\t\t\t\treturn { enabled: true };\n\t\t\t\t}\n\t\t\t\tconst parsedRemoteConfig = parseClineRemoteConfigValue(remoteConfigResponse.value);\n\t\t\t\treturn {\n\t\t\t\t\tenabled: parsedRemoteConfig.kanbanEnabled === true,\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tenabled: true,\n\t\t\t\t\terror: toErrorMessage(error),\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\n\t\tasync resolveLaunchConfig(): Promise<ResolvedClineLaunchConfig> {\n\t\t\tconst selectedSettings = getSelectedProviderSettings();\n\t\t\tif (!selectedSettings) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"No native Cline provider is configured. Open Settings, choose a provider, and then start the task again.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst normalizedProviderId = selectedSettings.provider.trim().toLowerCase();\n\t\t\tif (!normalizedProviderId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"No native Cline provider is configured. Open Settings, choose a provider, and then start the task again.\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst oauthResolution = await refreshManagedOauthSettings(selectedSettings);\n\t\t\tconst resolvedSettings = oauthResolution?.settings ?? selectedSettings;\n\t\t\tconst apiKey = isManagedOauthProviderId(normalizedProviderId)\n\t\t\t\t? resolveManagedProviderLaunchApiKey({\n\t\t\t\t\t\tproviderId: normalizedProviderId,\n\t\t\t\t\t\tsettings: resolvedSettings,\n\t\t\t\t\t\toauthApiKey: oauthResolution?.apiKey ?? null,\n\t\t\t\t\t})\n\t\t\t\t: resolveVisibleApiKey(resolvedSettings);\n\t\t\treturn {\n\t\t\t\tproviderId: normalizedProviderId,\n\t\t\t\tmodelId: resolvedSettings.model?.trim() || null,\n\t\t\t\tapiKey,\n\t\t\t\tbaseUrl: resolvedSettings.baseUrl?.trim() || null,\n\t\t\t};\n\t\t},\n\n\t\tasync getProviderCatalog(): Promise<RuntimeClineProviderCatalogResponse> {\n\t\t\tconst selectedProviderId = getProviderSettingsSummary().providerId?.trim().toLowerCase() ?? \"\";\n\t\t\tconst providers: RuntimeClineProviderCatalogItem[] = await listSdkProviderCatalog()\n\t\t\t\t.then((sdkProviders) =>\n\t\t\t\t\tsdkProviders\n\t\t\t\t\t\t.map((provider) => ({\n\t\t\t\t\t\t\tid: provider.id,\n\t\t\t\t\t\t\tname: provider.name,\n\t\t\t\t\t\t\toauthSupported: (provider.capabilities ?? []).includes(\"oauth\"),\n\t\t\t\t\t\t\tenabled:\n\t\t\t\t\t\t\t\tselectedProviderId.length > 0 ? selectedProviderId === provider.id : provider.id === \"cline\",\n\t\t\t\t\t\t\tdefaultModelId: provider.defaultModelId ?? null,\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.sort((left, right) => {\n\t\t\t\t\t\t\tif (left.id === \"cline\") {\n\t\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (right.id === \"cline\") {\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn left.name.localeCompare(right.name);\n\t\t\t\t\t\t}),\n\t\t\t\t)\n\t\t\t\t.catch(() => []);\n\n\t\t\tif (selectedProviderId.length > 0 && !providers.some((provider) => provider.id === selectedProviderId)) {\n\t\t\t\tproviders.unshift({\n\t\t\t\t\tid: selectedProviderId,\n\t\t\t\t\tname: selectedProviderId,\n\t\t\t\t\toauthSupported: false,\n\t\t\t\t\tenabled: true,\n\t\t\t\t\tdefaultModelId: getProviderSettingsSummary().modelId,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tproviders,\n\t\t\t};\n\t\t},\n\n\t\tasync getProviderModels(providerId: string): Promise<RuntimeClineProviderModelsResponse> {\n\t\t\tconst normalizedProviderId = providerId.trim().toLowerCase();\n\t\t\tconst providerModels =\n\t\t\t\tnormalizedProviderId.length > 0\n\t\t\t\t\t? await listSdkProviderModels(normalizedProviderId)\n\t\t\t\t\t\t\t.then((sdkModels) =>\n\t\t\t\t\t\t\t\tObject.entries(sdkModels)\n\t\t\t\t\t\t\t\t\t.map(([modelId, modelInfo]) => {\n\t\t\t\t\t\t\t\t\t\tconst parsedModelInfo =\n\t\t\t\t\t\t\t\t\t\t\ttypeof modelInfo === \"object\" && modelInfo !== null\n\t\t\t\t\t\t\t\t\t\t\t\t? (modelInfo as {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname?: unknown;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcapabilities?: unknown;\n\t\t\t\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t\t\t\t: null;\n\t\t\t\t\t\t\t\t\t\treturn toRuntimeProviderModel(modelId, {\n\t\t\t\t\t\t\t\t\t\t\tname: typeof parsedModelInfo?.name === \"string\" ? parsedModelInfo.name : undefined,\n\t\t\t\t\t\t\t\t\t\t\tcapabilities: Array.isArray(parsedModelInfo?.capabilities)\n\t\t\t\t\t\t\t\t\t\t\t\t? parsedModelInfo.capabilities.filter(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(value): value is string => typeof value === \"string\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t.sort((left, right) => left.name.localeCompare(right.name)),\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.catch(() => [])\n\t\t\t\t\t: [];\n\n\t\t\tif (providerModels.length > 0) {\n\t\t\t\treturn {\n\t\t\t\t\tproviderId: normalizedProviderId,\n\t\t\t\t\tmodels: providerModels,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst configuredModel = getProviderSettingsSummary().modelId?.trim() ?? \"\";\n\t\t\tif (configuredModel.length > 0) {\n\t\t\t\treturn {\n\t\t\t\t\tproviderId: normalizedProviderId || providerId,\n\t\t\t\t\tmodels: [{ id: configuredModel, name: configuredModel }],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tproviderId: normalizedProviderId || providerId,\n\t\t\t\tmodels: [],\n\t\t\t};\n\t\t},\n\n\t\tsaveProviderSettings(input: {\n\t\t\tproviderId: string;\n\t\t\tmodelId?: string | null;\n\t\t\tapiKey?: string | null;\n\t\t\tbaseUrl?: string | null;\n\t\t}): RuntimeClineProviderSettingsSaveResponse {\n\t\t\tconst providerId = input.providerId.trim().toLowerCase();\n\t\t\tif (!providerId) {\n\t\t\t\tthrow new Error(\"Provider ID cannot be empty.\");\n\t\t\t}\n\n\t\t\tconst existingSettings = getSdkProviderSettings(providerId) ?? {\n\t\t\t\tprovider: providerId,\n\t\t\t};\n\t\t\tconst nextSettings: SdkProviderSettings = {\n\t\t\t\t...existingSettings,\n\t\t\t\tprovider: providerId,\n\t\t\t};\n\n\t\t\tif (input.modelId !== undefined) {\n\t\t\t\tconst modelId = input.modelId?.trim() ?? \"\";\n\t\t\t\tif (modelId) {\n\t\t\t\t\tnextSettings.model = modelId;\n\t\t\t\t} else {\n\t\t\t\t\tdelete nextSettings.model;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (input.baseUrl !== undefined) {\n\t\t\t\tconst baseUrl = input.baseUrl?.trim() ?? \"\";\n\t\t\t\tif (baseUrl) {\n\t\t\t\t\tnextSettings.baseUrl = baseUrl;\n\t\t\t\t} else {\n\t\t\t\t\tdelete nextSettings.baseUrl;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (input.apiKey !== undefined) {\n\t\t\t\tconst apiKey = input.apiKey?.trim() ?? \"\";\n\t\t\t\tif (apiKey) {\n\t\t\t\t\tnextSettings.apiKey = apiKey;\n\t\t\t\t} else {\n\t\t\t\t\tdelete nextSettings.apiKey;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isManagedOauthProviderId(providerId)) {\n\t\t\t\tdelete nextSettings.auth;\n\t\t\t}\n\n\t\t\tsaveSdkProviderSettings({\n\t\t\t\tsettings: nextSettings,\n\t\t\t\ttokenSource: hasOauthAccessToken(nextSettings) ? \"oauth\" : \"manual\",\n\t\t\t\tsetLastUsed: true,\n\t\t\t});\n\n\t\t\treturn toProviderSettingsSummary(nextSettings);\n\t\t},\n\n\t\tasync runOauthLogin(input: {\n\t\t\tproviderId: ManagedClineOauthProviderId;\n\t\t\tbaseUrl?: string | null;\n\t\t}): Promise<RuntimeClineOauthLoginResponse> {\n\t\t\ttry {\n\t\t\t\tconst existingSettings = getSdkProviderSettings(input.providerId) ?? {\n\t\t\t\t\tprovider: input.providerId,\n\t\t\t\t};\n\t\t\t\tconst baseUrl = input.baseUrl?.trim() || null;\n\t\t\t\tconst credentials = await loginManagedOauthProvider({\n\t\t\t\t\tproviderId: input.providerId,\n\t\t\t\t\tbaseUrl,\n\t\t\t\t\toauthProvider: input.providerId,\n\t\t\t\t\tcallbacks: createRuntimeOauthCallbacks(input.providerId),\n\t\t\t\t});\n\n\t\t\t\tconst nextSettings: SdkProviderSettings = {\n\t\t\t\t\t...existingSettings,\n\t\t\t\t\tprovider: input.providerId,\n\t\t\t\t\tauth: {\n\t\t\t\t\t\t...(existingSettings.auth ?? {}),\n\t\t\t\t\t\taccessToken: toProviderApiKey(input.providerId, credentials.access),\n\t\t\t\t\t\trefreshToken: credentials.refresh,\n\t\t\t\t\t\taccountId: credentials.accountId ?? undefined,\n\t\t\t\t\t\texpiresAt: normalizeEpochMs(credentials.expires),\n\t\t\t\t\t},\n\t\t\t\t};\n\n\t\t\t\tif (baseUrl) {\n\t\t\t\t\tnextSettings.baseUrl = baseUrl;\n\t\t\t\t} else {\n\t\t\t\t\tdelete nextSettings.baseUrl;\n\t\t\t\t}\n\n\t\t\t\tsaveSdkProviderSettings({\n\t\t\t\t\tsettings: nextSettings,\n\t\t\t\t\ttokenSource: \"oauth\",\n\t\t\t\t\tsetLastUsed: true,\n\t\t\t\t});\n\n\t\t\t\treturn {\n\t\t\t\t\tok: true,\n\t\t\t\t\tprovider: input.providerId,\n\t\t\t\t\tsettings: toProviderSettingsSummary(nextSettings),\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tok: false,\n\t\t\t\t\tprovider: input.providerId,\n\t\t\t\t\terror: toErrorMessage(error),\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t};\n}\n"],"names":[],"mappings":"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","debugId":"7478f901-486a-5c34-a9de-7db7636d688c"}
@@ -25,6 +25,11 @@ export interface SdkClineAccountProfile {
25
25
  email: string;
26
26
  displayName: string;
27
27
  }
28
+ export interface SdkUserRemoteConfigResponse {
29
+ organizationId: string;
30
+ value: string;
31
+ enabled: boolean;
32
+ }
28
33
  export type SdkProviderModelRecord = Record<string, {
29
34
  name?: string;
30
35
  capabilities?: string[];
@@ -135,4 +140,8 @@ export declare function fetchSdkClineAccountProfile(input: {
135
140
  apiBaseUrl: string;
136
141
  accessToken: string;
137
142
  }): Promise<SdkClineAccountProfile>;
143
+ export declare function fetchSdkClineUserRemoteConfig(input: {
144
+ apiBaseUrl: string;
145
+ accessToken: string;
146
+ }): Promise<SdkUserRemoteConfigResponse>;
138
147
  //# sourceMappingURL=sdk-provider-boundary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sdk-provider-boundary.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/sdk-provider-boundary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdk-provider-boundary.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/sdk-provider-boundary.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  // The rest of Kanban should talk to the SDK through local service modules so
3
3
  // auth, catalog, and provider-settings behavior stay behind one boundary.
4
4
 
5
- !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]="0bce3925-d988-5ac8-ac6b-d6c869e78da4")}catch(e){}}();
5
+ !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]="48d61817-6bbc-5a2a-ae86-c5a540cfd3ad")}catch(e){}}();
6
6
  import { ClineAccountService, getValidClineCredentials, getValidOcaCredentials, getValidOpenAICodexCredentials, InMemoryMcpManager, loginClineOAuth, loginOcaOAuth, loginOpenAICodex, ProviderSettingsManager, } from "@clinebot/core/node";
7
7
  import { LlmsModels as llmsModels } from "@clinebot/llms";
8
8
  import { createMcpTools } from "@clinebot/agents";
@@ -142,5 +142,16 @@ export async function fetchSdkClineAccountProfile(input) {
142
142
  displayName: me.displayName,
143
143
  };
144
144
  }
145
+ export async function fetchSdkClineUserRemoteConfig(input) {
146
+ const accountServiceConstructor = ClineAccountService;
147
+ if (!accountServiceConstructor) {
148
+ throw new Error("ClineAccountService is not available from @clinebot/core/node.");
149
+ }
150
+ const accountService = new accountServiceConstructor({
151
+ apiBaseUrl: input.apiBaseUrl,
152
+ getAuthToken: async () => input.accessToken,
153
+ });
154
+ return await accountService.fetchRemoteConfig();
155
+ }
145
156
  //# sourceMappingURL=sdk-provider-boundary.js.map
146
- //# debugId=0bce3925-d988-5ac8-ac6b-d6c869e78da4
157
+ //# debugId=48d61817-6bbc-5a2a-ae86-c5a540cfd3ad