kanban 0.1.26 → 0.1.27
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.
- package/dist/cline-sdk/sdk-provider-boundary.js +1 -1
- package/dist/cline-sdk/sdk-provider-boundary.js.map +1 -1
- package/dist/cline-sdk/sdk-runtime-boundary.d.ts +1 -1
- package/dist/cline-sdk/sdk-runtime-boundary.d.ts.map +1 -1
- package/dist/cline-sdk/sdk-runtime-boundary.js +1 -1
- package/dist/cline-sdk/sdk-runtime-boundary.js.map +1 -1
- package/dist/web-ui/assets/{index-Ch9fifln.js → index-B7EyOLPo.js} +1 -1
- package/dist/web-ui/index.html +1 -1
- package/package.json +5 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Centralize direct SDK provider imports here.
|
|
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
|
-
import { getValidClineCredentials, getValidOcaCredentials, getValidOpenAICodexCredentials, loginClineOAuth, loginOcaOAuth, loginOpenAICodex, ProviderSettingsManager, } from "@clinebot/core/
|
|
4
|
+
import { getValidClineCredentials, getValidOcaCredentials, getValidOpenAICodexCredentials, loginClineOAuth, loginOcaOAuth, loginOpenAICodex, ProviderSettingsManager, } from "@clinebot/core/node";
|
|
5
5
|
import { models as llmsModels } from "@clinebot/llms/node";
|
|
6
6
|
function buildOcaOauthConfig(baseUrl) {
|
|
7
7
|
const normalizedBaseUrl = baseUrl?.trim() ?? "";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-provider-boundary.js","sourceRoot":"","sources":["../../src/cline-sdk/sdk-provider-boundary.ts"],"names":[],"mappings":"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","sourcesContent":["// Centralize direct SDK provider imports here.\n// The rest of Kanban should talk to the SDK through local service modules so\n// auth, catalog, and provider-settings behavior stay behind one boundary.\nimport {\n\tgetValidClineCredentials,\n\tgetValidOcaCredentials,\n\tgetValidOpenAICodexCredentials,\n\tloginClineOAuth,\n\tloginOcaOAuth,\n\tloginOpenAICodex,\n\tProviderSettingsManager,\n} from \"@clinebot/core/server\";\nimport { models as llmsModels } from \"@clinebot/llms/node\";\n\nexport type ManagedClineOauthProviderId = \"cline\" | \"oca\" | \"openai-codex\";\n\nexport interface ManagedOauthCredentials {\n\taccess: string;\n\trefresh: string;\n\texpires: number;\n\taccountId?: string | null;\n}\n\nexport interface ManagedOauthCallbacks {\n\tonAuth: (input: { url: string; instructions?: string }) => void;\n\tonPrompt: () => Promise<never>;\n\tonProgress: () => void;\n}\n\nexport interface SdkProviderCatalogItem {\n\tid: string;\n\tname: string;\n\tdefaultModelId?: string;\n\tcapabilities?: string[];\n}\n\nexport type SdkProviderModelRecord = Record<string, { name?: string; capabilities?: string[] } | unknown>;\n\nexport interface SdkProviderSettings {\n\tprovider: string;\n\tmodel?: string;\n\tbaseUrl?: string;\n\tapiKey?: string;\n\toca?: {\n\t\tmode?: \"internal\" | \"external\";\n\t};\n\tauth?: {\n\t\tapiKey?: string;\n\t\taccessToken?: string;\n\t\trefreshToken?: string;\n\t\taccountId?: string | null;\n\t\texpiresAt?: number;\n\t};\n}\n\nexport interface SaveSdkProviderSettingsInput {\n\tsettings: SdkProviderSettings;\n\ttokenSource?: \"oauth\" | \"manual\";\n\tsetLastUsed?: boolean;\n}\n\nfunction buildOcaOauthConfig(baseUrl: string | null | undefined):\n\t| {\n\t\t\tmode: \"internal\" | \"external\";\n\t\t\tconfig: {\n\t\t\t\tinternal: { baseUrl: string };\n\t\t\t\texternal: { baseUrl: string };\n\t\t\t};\n\t }\n\t| undefined {\n\tconst normalizedBaseUrl = baseUrl?.trim() ?? \"\";\n\tif (!normalizedBaseUrl) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tmode: normalizedBaseUrl.includes(\"code-internal\") ? \"internal\" : \"external\",\n\t\tconfig: {\n\t\t\tinternal: { baseUrl: normalizedBaseUrl },\n\t\t\texternal: { baseUrl: normalizedBaseUrl },\n\t\t},\n\t};\n}\n\nexport async function refreshManagedOauthCredentials(input: {\n\tproviderId: ManagedClineOauthProviderId;\n\tcurrentCredentials: ManagedOauthCredentials;\n\tbaseUrl?: string | null;\n\toauthProvider?: string | null;\n}): Promise<ManagedOauthCredentials | null> {\n\tif (input.providerId === \"cline\") {\n\t\tconst credentials = await getValidClineCredentials(input.currentCredentials, {\n\t\t\tapiBaseUrl: input.baseUrl?.trim() || \"https://api.cline.bot\",\n\t\t\tprovider: input.oauthProvider?.trim() || undefined,\n\t\t});\n\t\treturn credentials ?? null;\n\t}\n\n\tif (input.providerId === \"oca\") {\n\t\tconst credentials = await getValidOcaCredentials(\n\t\t\tinput.currentCredentials,\n\t\t\tundefined,\n\t\t\tbuildOcaOauthConfig(input.baseUrl),\n\t\t);\n\t\treturn credentials ?? null;\n\t}\n\n\tconst credentials = await getValidOpenAICodexCredentials(input.currentCredentials);\n\treturn credentials ?? null;\n}\n\nexport async function loginManagedOauthProvider(input: {\n\tproviderId: ManagedClineOauthProviderId;\n\tbaseUrl?: string | null;\n\toauthProvider?: string | null;\n\tcallbacks: ManagedOauthCallbacks;\n}): Promise<ManagedOauthCredentials> {\n\tif (input.providerId === \"cline\") {\n\t\treturn await loginClineOAuth({\n\t\t\tapiBaseUrl: input.baseUrl?.trim() || \"https://api.cline.bot\",\n\t\t\tprovider: input.oauthProvider?.trim() || undefined,\n\t\t\tcallbacks: input.callbacks,\n\t\t});\n\t}\n\n\tif (input.providerId === \"oca\") {\n\t\treturn await loginOcaOAuth({\n\t\t\t...(buildOcaOauthConfig(input.baseUrl) ?? { mode: \"external\" as const }),\n\t\t\tcallbacks: input.callbacks,\n\t\t});\n\t}\n\n\treturn await loginOpenAICodex({\n\t\t...input.callbacks,\n\t\toriginator: \"kanban-runtime\",\n\t});\n}\n\nexport async function listSdkProviderCatalog(): Promise<SdkProviderCatalogItem[]> {\n\treturn await llmsModels.getAllProviders();\n}\n\nexport async function listSdkProviderModels(providerId: string): Promise<SdkProviderModelRecord> {\n\treturn await llmsModels.getModelsForProvider(providerId);\n}\n\nexport function getSdkProviderSettings(providerId: string): SdkProviderSettings | null {\n\tconst manager = new ProviderSettingsManager();\n\treturn (manager.getProviderSettings(providerId) as SdkProviderSettings | undefined) ?? null;\n}\n\nexport function getLastUsedSdkProviderSettings(): SdkProviderSettings | null {\n\tconst manager = new ProviderSettingsManager();\n\treturn (manager.getLastUsedProviderSettings() as SdkProviderSettings | undefined) ?? null;\n}\n\nexport function saveSdkProviderSettings(input: SaveSdkProviderSettingsInput): void {\n\tconst manager = new ProviderSettingsManager();\n\tconst settings: SdkProviderSettings = {\n\t\t...input.settings,\n\t\tprovider: input.settings.provider.trim(),\n\t};\n\tif (settings.model !== undefined) {\n\t\tconst model = settings.model.trim();\n\t\tif (!model) {\n\t\t\tdelete settings.model;\n\t\t} else {\n\t\t\tsettings.model = model;\n\t\t}\n\t}\n\tif (settings.baseUrl !== undefined) {\n\t\tconst baseUrl = settings.baseUrl.trim();\n\t\tif (!baseUrl) {\n\t\t\tdelete settings.baseUrl;\n\t\t} else {\n\t\t\tsettings.baseUrl = baseUrl;\n\t\t\tif (settings.provider === \"oca\") {\n\t\t\t\tsettings.oca = {\n\t\t\t\t\tmode: baseUrl.includes(\"code-internal\") ? \"internal\" : \"external\",\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\tif (settings.apiKey !== undefined) {\n\t\tconst apiKey = settings.apiKey.trim();\n\t\tif (!apiKey) {\n\t\t\tdelete settings.apiKey;\n\t\t} else {\n\t\t\tsettings.apiKey = apiKey;\n\t\t}\n\t}\n\tif (settings.auth) {\n\t\tconst auth = { ...settings.auth };\n\t\tif (auth.accountId !== undefined && auth.accountId !== null) {\n\t\t\tconst accountId = auth.accountId.trim();\n\t\t\tauth.accountId = accountId || undefined;\n\t\t}\n\t\tsettings.auth = auth;\n\t}\n\n\tmanager.saveProviderSettings(settings, {\n\t\tsetLastUsed: input.setLastUsed,\n\t\ttokenSource: input.tokenSource,\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sdk-provider-boundary.js","sourceRoot":"","sources":["../../src/cline-sdk/sdk-provider-boundary.ts"],"names":[],"mappings":"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","sourcesContent":["// Centralize direct SDK provider imports here.\n// The rest of Kanban should talk to the SDK through local service modules so\n// auth, catalog, and provider-settings behavior stay behind one boundary.\nimport {\n\tgetValidClineCredentials,\n\tgetValidOcaCredentials,\n\tgetValidOpenAICodexCredentials,\n\tloginClineOAuth,\n\tloginOcaOAuth,\n\tloginOpenAICodex,\n\tProviderSettingsManager,\n} from \"@clinebot/core/node\";\nimport { models as llmsModels } from \"@clinebot/llms/node\";\n\nexport type ManagedClineOauthProviderId = \"cline\" | \"oca\" | \"openai-codex\";\n\nexport interface ManagedOauthCredentials {\n\taccess: string;\n\trefresh: string;\n\texpires: number;\n\taccountId?: string | null;\n}\n\nexport interface ManagedOauthCallbacks {\n\tonAuth: (input: { url: string; instructions?: string }) => void;\n\tonPrompt: () => Promise<never>;\n\tonProgress: () => void;\n}\n\nexport interface SdkProviderCatalogItem {\n\tid: string;\n\tname: string;\n\tdefaultModelId?: string;\n\tcapabilities?: string[];\n}\n\nexport type SdkProviderModelRecord = Record<string, { name?: string; capabilities?: string[] } | unknown>;\n\nexport interface SdkProviderSettings {\n\tprovider: string;\n\tmodel?: string;\n\tbaseUrl?: string;\n\tapiKey?: string;\n\toca?: {\n\t\tmode?: \"internal\" | \"external\";\n\t};\n\tauth?: {\n\t\tapiKey?: string;\n\t\taccessToken?: string;\n\t\trefreshToken?: string;\n\t\taccountId?: string | null;\n\t\texpiresAt?: number;\n\t};\n}\n\nexport interface SaveSdkProviderSettingsInput {\n\tsettings: SdkProviderSettings;\n\ttokenSource?: \"oauth\" | \"manual\";\n\tsetLastUsed?: boolean;\n}\n\nfunction buildOcaOauthConfig(baseUrl: string | null | undefined):\n\t| {\n\t\t\tmode: \"internal\" | \"external\";\n\t\t\tconfig: {\n\t\t\t\tinternal: { baseUrl: string };\n\t\t\t\texternal: { baseUrl: string };\n\t\t\t};\n\t }\n\t| undefined {\n\tconst normalizedBaseUrl = baseUrl?.trim() ?? \"\";\n\tif (!normalizedBaseUrl) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tmode: normalizedBaseUrl.includes(\"code-internal\") ? \"internal\" : \"external\",\n\t\tconfig: {\n\t\t\tinternal: { baseUrl: normalizedBaseUrl },\n\t\t\texternal: { baseUrl: normalizedBaseUrl },\n\t\t},\n\t};\n}\n\nexport async function refreshManagedOauthCredentials(input: {\n\tproviderId: ManagedClineOauthProviderId;\n\tcurrentCredentials: ManagedOauthCredentials;\n\tbaseUrl?: string | null;\n\toauthProvider?: string | null;\n}): Promise<ManagedOauthCredentials | null> {\n\tif (input.providerId === \"cline\") {\n\t\tconst credentials = await getValidClineCredentials(input.currentCredentials, {\n\t\t\tapiBaseUrl: input.baseUrl?.trim() || \"https://api.cline.bot\",\n\t\t\tprovider: input.oauthProvider?.trim() || undefined,\n\t\t});\n\t\treturn credentials ?? null;\n\t}\n\n\tif (input.providerId === \"oca\") {\n\t\tconst credentials = await getValidOcaCredentials(\n\t\t\tinput.currentCredentials,\n\t\t\tundefined,\n\t\t\tbuildOcaOauthConfig(input.baseUrl),\n\t\t);\n\t\treturn credentials ?? null;\n\t}\n\n\tconst credentials = await getValidOpenAICodexCredentials(input.currentCredentials);\n\treturn credentials ?? null;\n}\n\nexport async function loginManagedOauthProvider(input: {\n\tproviderId: ManagedClineOauthProviderId;\n\tbaseUrl?: string | null;\n\toauthProvider?: string | null;\n\tcallbacks: ManagedOauthCallbacks;\n}): Promise<ManagedOauthCredentials> {\n\tif (input.providerId === \"cline\") {\n\t\treturn await loginClineOAuth({\n\t\t\tapiBaseUrl: input.baseUrl?.trim() || \"https://api.cline.bot\",\n\t\t\tprovider: input.oauthProvider?.trim() || undefined,\n\t\t\tcallbacks: input.callbacks,\n\t\t});\n\t}\n\n\tif (input.providerId === \"oca\") {\n\t\treturn await loginOcaOAuth({\n\t\t\t...(buildOcaOauthConfig(input.baseUrl) ?? { mode: \"external\" as const }),\n\t\t\tcallbacks: input.callbacks,\n\t\t});\n\t}\n\n\treturn await loginOpenAICodex({\n\t\t...input.callbacks,\n\t\toriginator: \"kanban-runtime\",\n\t});\n}\n\nexport async function listSdkProviderCatalog(): Promise<SdkProviderCatalogItem[]> {\n\treturn await llmsModels.getAllProviders();\n}\n\nexport async function listSdkProviderModels(providerId: string): Promise<SdkProviderModelRecord> {\n\treturn await llmsModels.getModelsForProvider(providerId);\n}\n\nexport function getSdkProviderSettings(providerId: string): SdkProviderSettings | null {\n\tconst manager = new ProviderSettingsManager();\n\treturn (manager.getProviderSettings(providerId) as SdkProviderSettings | undefined) ?? null;\n}\n\nexport function getLastUsedSdkProviderSettings(): SdkProviderSettings | null {\n\tconst manager = new ProviderSettingsManager();\n\treturn (manager.getLastUsedProviderSettings() as SdkProviderSettings | undefined) ?? null;\n}\n\nexport function saveSdkProviderSettings(input: SaveSdkProviderSettingsInput): void {\n\tconst manager = new ProviderSettingsManager();\n\tconst settings: SdkProviderSettings = {\n\t\t...input.settings,\n\t\tprovider: input.settings.provider.trim(),\n\t};\n\tif (settings.model !== undefined) {\n\t\tconst model = settings.model.trim();\n\t\tif (!model) {\n\t\t\tdelete settings.model;\n\t\t} else {\n\t\t\tsettings.model = model;\n\t\t}\n\t}\n\tif (settings.baseUrl !== undefined) {\n\t\tconst baseUrl = settings.baseUrl.trim();\n\t\tif (!baseUrl) {\n\t\t\tdelete settings.baseUrl;\n\t\t} else {\n\t\t\tsettings.baseUrl = baseUrl;\n\t\t\tif (settings.provider === \"oca\") {\n\t\t\t\tsettings.oca = {\n\t\t\t\t\tmode: baseUrl.includes(\"code-internal\") ? \"internal\" : \"external\",\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\tif (settings.apiKey !== undefined) {\n\t\tconst apiKey = settings.apiKey.trim();\n\t\tif (!apiKey) {\n\t\t\tdelete settings.apiKey;\n\t\t} else {\n\t\t\tsettings.apiKey = apiKey;\n\t\t}\n\t}\n\tif (settings.auth) {\n\t\tconst auth = { ...settings.auth };\n\t\tif (auth.accountId !== undefined && auth.accountId !== null) {\n\t\t\tconst accountId = auth.accountId.trim();\n\t\t\tauth.accountId = accountId || undefined;\n\t\t}\n\t\tsettings.auth = auth;\n\t}\n\n\tmanager.saveProviderSettings(settings, {\n\t\tsetLastUsed: input.setLastUsed,\n\t\ttokenSource: input.tokenSource,\n\t});\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SessionHost } from "@clinebot/core/
|
|
1
|
+
import { type SessionHost } from "@clinebot/core/node";
|
|
2
2
|
import type { providers as ClineSdkProviders } from "@clinebot/llms/node";
|
|
3
3
|
export type ClineSdkSessionHost = SessionHost;
|
|
4
4
|
export type ClineSdkSessionRecord = Awaited<ReturnType<ClineSdkSessionHost["list"]>>[number];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-runtime-boundary.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/sdk-runtime-boundary.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sdk-runtime-boundary.d.ts","sourceRoot":"","sources":["../../src/cline-sdk/sdk-runtime-boundary.ts"],"names":[],"mappings":"AAMA,OAAO,EAA6C,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,KAAK,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC;AAC9C,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7F,MAAM,MAAM,wBAAwB,GAAG,iBAAiB,CAAC,OAAO,CAAC;AAEjE,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAE9E;AAED,wBAAsB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEjF;AAED,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACxD,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlB"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
// All native Cline session-host creation and persisted artifact reads should
|
|
3
3
|
// flow through this boundary so the rest of Kanban stays decoupled from the
|
|
4
4
|
// SDK package layout.
|
|
5
|
-
import { buildWorkspaceMetadata, createSessionHost, } from "@clinebot/core/server";
|
|
6
5
|
import { getClineDefaultSystemPrompt } from "@clinebot/agents";
|
|
6
|
+
import { buildWorkspaceMetadata, createSessionHost } from "@clinebot/core/node";
|
|
7
7
|
export async function createClineSdkSessionHost() {
|
|
8
8
|
return await createSessionHost({ backendMode: "local" });
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-runtime-boundary.js","sourceRoot":"","sources":["../../src/cline-sdk/sdk-runtime-boundary.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,6EAA6E;AAC7E,4EAA4E;AAC5E,sBAAsB;
|
|
1
|
+
{"version":3,"file":"sdk-runtime-boundary.js","sourceRoot":"","sources":["../../src/cline-sdk/sdk-runtime-boundary.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,6EAA6E;AAC7E,4EAA4E;AAC5E,sBAAsB;AAEtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAoB,MAAM,qBAAqB,CAAC;AAOlG,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAC9C,OAAO,MAAM,iBAAiB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,GAAW;IAC/D,OAAO,MAAM,sBAAsB,CAAC,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,KAIjD;IACA,sEAAsE;IACtE,0EAA0E;IAC1E,iEAAiE;IACjE,MAAM,6BAA6B,GAAG,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC;IACnE,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,CAAC,CAAC,MAAM,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvG,OAAO,2BAA2B,CAAC,gBAAgB,EAAE,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;AACvG,CAAC","sourcesContent":["// Centralize direct SDK runtime imports here.\n// All native Cline session-host creation and persisted artifact reads should\n// flow through this boundary so the rest of Kanban stays decoupled from the\n// SDK package layout.\n\nimport { getClineDefaultSystemPrompt } from \"@clinebot/agents\";\nimport { buildWorkspaceMetadata, createSessionHost, type SessionHost } from \"@clinebot/core/node\";\nimport type { providers as ClineSdkProviders } from \"@clinebot/llms/node\";\n\nexport type ClineSdkSessionHost = SessionHost;\nexport type ClineSdkSessionRecord = Awaited<ReturnType<ClineSdkSessionHost[\"list\"]>>[number];\nexport type ClineSdkPersistedMessage = ClineSdkProviders.Message;\n\nexport async function createClineSdkSessionHost(): Promise<ClineSdkSessionHost> {\n\treturn await createSessionHost({ backendMode: \"local\" });\n}\n\nexport async function buildClineSdkWorkspaceMetadata(cwd: string): Promise<string> {\n\treturn await buildWorkspaceMetadata(cwd);\n}\n\nexport async function resolveClineSdkSystemPrompt(input: {\n\tcwd: string;\n\tproviderId: string;\n\trules?: string;\n}): Promise<string> {\n\t// The Cline SDK can run against non-Cline providers too, but only the\n\t// \"cline\" provider expects the extra workspace metadata block that powers\n\t// its repo-aware behavior in the same way the official CLI does.\n\tconst shouldAppendWorkspaceMetadata = input.providerId === \"cline\";\n\tconst workspaceMetadata = shouldAppendWorkspaceMetadata ? await buildWorkspaceMetadata(input.cwd) : \"\";\n\treturn getClineDefaultSystemPrompt(\"Terminal Shell\", input.cwd, workspaceMetadata, input.rules ?? \"\");\n}\n"]}
|
|
@@ -25310,7 +25310,7 @@ function Ede({ children: e, className: t }) {
|
|
|
25310
25310
|
}
|
|
25311
25311
|
function Tde({ projects: e, isLoadingProjects: t = false, currentProjectId: n, removingProjectId: r, activeSection: i, onActiveSectionChange: s, canShowAgentSection: o, agentSectionContent: a, onSelectProject: u, onRemoveProject: c, onAddProject: p }) {
|
|
25312
25312
|
const f = [...e].sort((S, k) => S.path.localeCompare(k.path)), [h, g] = y.useState(null), x = h !== null && r === h.id, b = h ? h.taskCounts.backlog + h.taskCounts.in_progress + h.taskCounts.review + h.taskCounts.trash : 0;
|
|
25313
|
-
return v.jsxs("aside", { className: "flex flex-col min-h-0 overflow-hidden bg-surface-1", style: { width: "20%", borderRight: "1px solid var(--color-divider)" }, children: [v.jsxs("div", { style: { padding: "12px 12px 8px" }, children: [v.jsx("div", { children: v.jsxs("div", { className: "font-semibold text-base flex items-baseline gap-1.5", children: [v.jsx(Cde, { size: 18, className: "text-text-primary shrink-0 self-center" }), "Cline ", v.jsxs("span", { className: "text-text-secondary font-normal text-xs", children: ["v", "0.1.
|
|
25313
|
+
return v.jsxs("aside", { className: "flex flex-col min-h-0 overflow-hidden bg-surface-1", style: { width: "20%", borderRight: "1px solid var(--color-divider)" }, children: [v.jsxs("div", { style: { padding: "12px 12px 8px" }, children: [v.jsx("div", { children: v.jsxs("div", { className: "font-semibold text-base flex items-baseline gap-1.5", children: [v.jsx(Cde, { size: 18, className: "text-text-primary shrink-0 self-center" }), "Cline ", v.jsxs("span", { className: "text-text-secondary font-normal text-xs", children: ["v", "0.1.27"] })] }) }), v.jsx("div", { className: "mt-2 rounded-md bg-surface-2 p-1", children: v.jsxs("div", { className: "grid grid-cols-2 gap-1", children: [v.jsx("button", { type: "button", onClick: () => s("projects"), className: ht("cursor-pointer rounded-sm px-2 py-1 text-xs font-medium", i === "projects" ? "bg-surface-4 text-text-primary" : "text-text-secondary hover:text-text-primary"), children: "Projects" }), v.jsx("button", { type: "button", onClick: () => s("agent"), disabled: !o, className: ht("cursor-pointer rounded-sm px-2 py-1 text-xs font-medium", i === "agent" ? "bg-surface-4 text-text-primary" : "text-text-secondary hover:text-text-primary", o ? null : "cursor-not-allowed opacity-50"), children: "Agent" })] }) })] }), i === "projects" ? v.jsxs(v.Fragment, { children: [v.jsxs("div", { className: "flex-1 min-h-0 overflow-y-auto overscroll-contain flex flex-col gap-1", style: { padding: "4px 12px" }, children: [f.length === 0 && t ? v.jsx("div", { style: { padding: "4px 0" }, children: Array.from({ length: 3 }).map((S, k) => v.jsx(Dde, {}, `project-skeleton-${k}`)) }) : null, f.map((S) => v.jsx(Nde, { project: S, isCurrent: n === S.id, removingProjectId: r, onSelect: u, onRemove: (k) => {
|
|
25314
25314
|
const _ = f.find((C) => C.id === k);
|
|
25315
25315
|
_ && g(_);
|
|
25316
25316
|
} }, S.id)), t ? null : v.jsxs("button", { type: "button", className: "kb-project-row flex cursor-pointer items-center gap-1.5 rounded-md text-text-secondary hover:text-text-primary", style: { padding: "6px 8px" }, onClick: p, disabled: r !== null, children: [v.jsx(Nu, { size: 14, className: "shrink-0" }), v.jsx("span", { className: "text-sm", children: "Add project" })] })] }), v.jsx(Pde, {})] }) : v.jsx("div", { className: "flex flex-1 min-h-0 flex-col", children: v.jsx("div", { className: "flex flex-1 min-h-0 overflow-hidden bg-surface-1 px-2 pb-2 pt-1", children: a ?? v.jsx("div", { className: "flex w-full items-center justify-center rounded-md border border-border bg-surface-2 px-3 text-center text-sm text-text-secondary", children: "Select a project to use the agent." }) }) }), v.jsxs("a", { href: "https://cline.bot", target: "_blank", rel: "noopener noreferrer", className: "text-text-tertiary hover:text-text-primary text-center block text-xs", style: { padding: "6px 12px" }, children: ["Made with ", v.jsx(KB, { size: 10, fill: "currentColor", className: "inline-block" }), " by Cline"] }), v.jsxs(ov, { open: h !== null, onOpenChange: (S) => {
|
package/dist/web-ui/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
href='data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 92 95%22><path fill=%22%23E6EDF3%22 fill-rule=%22nonzero%22 d=%22M65.45 15.8c10.89 0 19.71 8.865 19.71 19.8v6.6l5.74 11.465a4.8 4.8 0 0 1-.007 4.595L85.16 68.6v6.6c0 10.935-8.83 19.8-19.71 19.8H26.02c-10.89 0-19.71-8.865-19.71-19.8v-6.6L.45 57.295a4.8 4.8 0 0 1-.008-3.666L6.31 42.2v-6.6c0-10.935 8.83-19.8 19.71-19.8h39.43ZM30.73 38c-4.97 0-9 4.03-9 9v16c0 4.97 4.03 9 9 9s9-4.03 9-9V47c0-4.97-4.03-9-9-9Zm29 0c-4.97 0-9 4.03-9 9v16c0 4.97 4.03 9 9 9s9-4.03 9-9V47c0-4.97-4.03-9-9-9Z%22/><circle fill=%22%23E6EDF3%22 cx=%2245.735%22 cy=%2211%22 r=%2211%22/></svg>'
|
|
9
9
|
/>
|
|
10
10
|
<title>Kanban</title>
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-B7EyOLPo.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/assets/xterm-vendor-x1-S2SBl.js">
|
|
13
13
|
<link rel="stylesheet" crossorigin href="/assets/xterm-vendor-GVL3fBIr.css">
|
|
14
14
|
<link rel="stylesheet" crossorigin href="/assets/index-C5_h_GRw.css">
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kanban",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.27",
|
|
4
4
|
"description": "A kanban foundation for coding agents",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -78,9 +78,9 @@
|
|
|
78
78
|
"vitest": "^4.1.0"
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
|
-
"@clinebot/agents": "
|
|
82
|
-
"@clinebot/core": "
|
|
83
|
-
"@clinebot/llms": "
|
|
81
|
+
"@clinebot/agents": "^0.0.4",
|
|
82
|
+
"@clinebot/core": "^0.0.4",
|
|
83
|
+
"@clinebot/llms": "^0.0.4",
|
|
84
84
|
"@trpc/client": "^11.11.0",
|
|
85
85
|
"@trpc/server": "^11.11.0",
|
|
86
86
|
"close-with-grace": "^2.5.0",
|
|
@@ -91,4 +91,4 @@
|
|
|
91
91
|
"ws": "^8.18.0",
|
|
92
92
|
"zod": "^4.3.6"
|
|
93
93
|
}
|
|
94
|
-
}
|
|
94
|
+
}
|