kanban 0.1.39 → 0.1.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/cline-sdk/cline-mcp-runtime-service.d.ts.map +1 -1
  2. package/dist/cline-sdk/cline-mcp-runtime-service.js +35 -10
  3. package/dist/cline-sdk/cline-mcp-runtime-service.js.map +1 -1
  4. package/dist/cline-sdk/cline-session-runtime.d.ts +20 -2
  5. package/dist/cline-sdk/cline-session-runtime.d.ts.map +1 -1
  6. package/dist/cline-sdk/cline-session-runtime.js +68 -10
  7. package/dist/cline-sdk/cline-session-runtime.js.map +1 -1
  8. package/dist/cline-sdk/cline-session-state.d.ts +1 -0
  9. package/dist/cline-sdk/cline-session-state.d.ts.map +1 -1
  10. package/dist/cline-sdk/cline-session-state.js +12 -3
  11. package/dist/cline-sdk/cline-session-state.js.map +1 -1
  12. package/dist/cline-sdk/cline-task-session-service.d.ts +1 -0
  13. package/dist/cline-sdk/cline-task-session-service.d.ts.map +1 -1
  14. package/dist/cline-sdk/cline-task-session-service.js +76 -23
  15. package/dist/cline-sdk/cline-task-session-service.js.map +1 -1
  16. package/dist/cline-sdk/sdk-provider-boundary.d.ts.map +1 -1
  17. package/dist/cline-sdk/sdk-provider-boundary.js +5 -8
  18. package/dist/cline-sdk/sdk-provider-boundary.js.map +1 -1
  19. package/dist/core/api-contract.d.ts +72 -0
  20. package/dist/core/api-contract.d.ts.map +1 -1
  21. package/dist/core/api-contract.js +3 -2
  22. package/dist/core/api-contract.js.map +1 -1
  23. package/dist/prompts/append-system-prompt.d.ts.map +1 -1
  24. package/dist/prompts/append-system-prompt.js +4 -2
  25. package/dist/prompts/append-system-prompt.js.map +1 -1
  26. package/dist/server/browser.d.ts +1 -4
  27. package/dist/server/browser.d.ts.map +1 -1
  28. package/dist/server/browser.js +13 -53
  29. package/dist/server/browser.js.map +1 -1
  30. package/dist/trpc/app-router.d.ts +10 -0
  31. package/dist/trpc/app-router.d.ts.map +1 -1
  32. package/dist/trpc/runtime-api.js +3 -3
  33. package/dist/trpc/runtime-api.js.map +1 -1
  34. package/dist/web-ui/assets/{index-WG8Dagzd.css → index-CuBw4lTr.css} +30 -0
  35. package/dist/web-ui/assets/{index-DG-IZT6_.js → index-OpsLqYwc.js} +8622 -8617
  36. package/dist/web-ui/assets/{index-DG-IZT6_.js.map → index-OpsLqYwc.js.map} +1 -1
  37. package/dist/web-ui/index.html +2 -2
  38. package/dist/workspace/git-utils.d.ts.map +1 -1
  39. package/dist/workspace/git-utils.js +17 -4
  40. package/dist/workspace/git-utils.js.map +1 -1
  41. package/package.json +6 -5
@@ -8,10 +8,10 @@
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-DG-IZT6_.js"></script>
11
+ <script type="module" crossorigin src="/assets/index-OpsLqYwc.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
- <link rel="stylesheet" crossorigin href="/assets/index-WG8Dagzd.css">
14
+ <link rel="stylesheet" crossorigin href="/assets/index-CuBw4lTr.css">
15
15
  </head>
16
16
  <body>
17
17
  <div id="root"></div>
@@ -1 +1 @@
1
- {"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../../src/workspace/git-utils.ts"],"names":[],"mappings":"AAOA,UAAU,gBAAgB;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoChH;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5G;AAED,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAUvE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQhE"}
1
+ {"version":3,"file":"git-utils.d.ts","sourceRoot":"","sources":["../../src/workspace/git-utils.ts"],"names":[],"mappings":"AAOA,UAAU,gBAAgB;IACzB,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC7B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAeD,wBAAsB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqChH;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAO5G;AAED,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAUvE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQhE"}
@@ -1,10 +1,22 @@
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]="8b0067f7-5139-5aa3-b060-b4a69d382bca")}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]="c1328ea8-0a40-5b06-a427-f81249f30600")}catch(e){}}();
3
3
  import { execFile } from "node:child_process";
4
4
  import { promisify } from "node:util";
5
5
  import { createGitProcessEnv } from "../core/git-process-env.js";
6
6
  const execFileAsync = promisify(execFile);
7
7
  const GIT_MAX_BUFFER_BYTES = 10 * 1024 * 1024;
8
+ function normalizeProcessExitCode(code) {
9
+ if (typeof code === "number" && Number.isFinite(code)) {
10
+ return code;
11
+ }
12
+ if (typeof code === "string") {
13
+ const parsed = Number(code);
14
+ if (Number.isInteger(parsed)) {
15
+ return parsed;
16
+ }
17
+ }
18
+ return -1;
19
+ }
8
20
  export async function runGit(cwd, args, options = {}) {
9
21
  try {
10
22
  const { stdout, stderr } = await execFileAsync("git", args, {
@@ -26,12 +38,13 @@ export async function runGit(cwd, args, options = {}) {
26
38
  }
27
39
  catch (error) {
28
40
  const candidate = error;
29
- const stdout = String(candidate.stdout ?? "").trim();
41
+ const rawStdout = String(candidate.stdout ?? "");
42
+ const stdout = options.trimStdout === false ? rawStdout : rawStdout.trim();
30
43
  const stderr = String(candidate.stderr ?? "").trim();
31
44
  const message = String(candidate.message ?? "").trim();
32
45
  const command = `git ${args.join(" ")} failed`;
33
46
  const errorMessage = `Failed to run Git Command: \n Command: \n ${command} \n ${stderr || message}`;
34
- const exitCode = typeof candidate.code === "number" ? candidate.code : 1;
47
+ const exitCode = normalizeProcessExitCode(candidate.code);
35
48
  return {
36
49
  ok: false,
37
50
  stdout,
@@ -74,4 +87,4 @@ export function getGitCommandErrorMessage(error) {
74
87
  return error instanceof Error ? error.message : String(error);
75
88
  }
76
89
  //# sourceMappingURL=git-utils.js.map
77
- //# debugId=8b0067f7-5139-5aa3-b060-b4a69d382bca
90
+ //# debugId=c1328ea8-0a40-5b06-a427-f81249f30600
@@ -1 +1 @@
1
- {"version":3,"file":"git-utils.js","sources":["../../src/workspace/git-utils.ts"],"sourceRoot":"","sourcesContent":["import { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { createGitProcessEnv } from \"../core/git-process-env.js\";\n\nconst execFileAsync = promisify(execFile);\nconst GIT_MAX_BUFFER_BYTES = 10 * 1024 * 1024;\n\ninterface GitCommandResult {\n\tok: boolean;\n\tstdout: string;\n\tstderr: string;\n\toutput: string;\n\terror: string | null;\n\texitCode: number\n}\n\nexport interface RunGitOptions {\n\ttrimStdout?: boolean;\n\tenv?: NodeJS.ProcessEnv;\n}\n\nexport async function runGit(cwd: string, args: string[], options: RunGitOptions = {}): Promise<GitCommandResult> {\n\ttry {\n\t\tconst { stdout, stderr } = await execFileAsync(\"git\", args, {\n\t\t\tcwd,\n\t\t\tencoding: \"utf8\",\n\t\t\tmaxBuffer: GIT_MAX_BUFFER_BYTES,\n\t\t\tenv: options.env || createGitProcessEnv(),\n\t\t});\n\t\tconst normalizedStdout = String(stdout ?? \"\").trim();\n\t\tconst normalizedStderr = String(stderr ?? \"\").trim();\n\t\treturn {\n\t\t\tok: true,\n\t\t\tstdout: options.trimStdout === false ? stdout : normalizedStdout,\n\t\t\tstderr: normalizedStderr,\n\t\t\toutput: [normalizedStdout, normalizedStderr].filter(Boolean).join(\"\\n\"),\n\t\t\terror: null,\n\t\t\texitCode: 0,\n\t\t};\n\t} catch (error) {\n\t\tconst candidate = error as { code?: string | number | null; stdout?: unknown; stderr?: unknown; message?: unknown };\n\t\tconst stdout = String(candidate.stdout ?? \"\").trim();\n\t\tconst stderr = String(candidate.stderr ?? \"\").trim();\n\t\tconst message = String(candidate.message ?? \"\").trim();\n\t\tconst command = `git ${args.join(\" \")} failed`\n\t\tconst errorMessage = `Failed to run Git Command: \\n Command: \\n ${command} \\n ${stderr || message}`\n\t\tconst exitCode = typeof candidate.code === \"number\" ? candidate.code : 1;\n\n\t\treturn {\n\t\t\tok: false,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\toutput: [stdout, stderr].filter(Boolean).join(\"\\n\"),\n\t\t\terror: errorMessage,\n\t\t\texitCode,\n\t\t};\n\t}\n}\n\nexport async function getGitStdout(args: string[], cwd: string, options: RunGitOptions = {}): Promise<string> {\n\tconst result = await runGit(cwd, args, options)\n\tif(!result.ok) {\n\t\tthrow new Error(result.error || result.stdout)\n\t}\n\n\treturn result.stdout\n}\n\nexport interface GitHeadInfo {\n\tbranch: string | null;\n\theadCommit: string | null;\n\tisDetached: boolean;\n}\n\n/**\n * Read the current HEAD commit, branch name, and detached state for a\n * repository (or worktree) at `cwd`.\n */\nexport async function readGitHeadInfo(cwd: string): Promise<GitHeadInfo> {\n\tconst headResult = await runGit(cwd, [\"rev-parse\", \"--verify\", \"HEAD\"]);\n\tconst headCommit = headResult.ok ? headResult.stdout : null;\n\tconst branchResult = await runGit(cwd, [\"symbolic-ref\", \"--quiet\", \"--short\", \"HEAD\"]);\n\tconst branch = branchResult.ok ? branchResult.stdout : null;\n\treturn {\n\t\tbranch,\n\t\theadCommit,\n\t\tisDetached: headCommit !== null && branch === null,\n\t};\n}\n\nexport function getGitCommandErrorMessage(error: unknown): string {\n\tif (error && typeof error === \"object\" && \"stderr\" in error) {\n\t\tconst stderr = (error as { stderr?: unknown }).stderr;\n\t\tif (typeof stderr === \"string\" && stderr.trim()) {\n\t\t\treturn stderr.trim();\n\t\t}\n\t}\n\treturn error instanceof Error ? error.message : String(error);\n}"],"names":[],"mappings":"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","debugId":"8b0067f7-5139-5aa3-b060-b4a69d382bca"}
1
+ {"version":3,"file":"git-utils.js","sources":["../../src/workspace/git-utils.ts"],"sourceRoot":"","sourcesContent":["import { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { createGitProcessEnv } from \"../core/git-process-env.js\";\n\nconst execFileAsync = promisify(execFile);\nconst GIT_MAX_BUFFER_BYTES = 10 * 1024 * 1024;\n\ninterface GitCommandResult {\n\tok: boolean;\n\tstdout: string;\n\tstderr: string;\n\toutput: string;\n\terror: string | null;\n\texitCode: number;\n}\n\nexport interface RunGitOptions {\n\ttrimStdout?: boolean;\n\tenv?: NodeJS.ProcessEnv;\n}\n\nfunction normalizeProcessExitCode(code: unknown): number {\n\tif (typeof code === \"number\" && Number.isFinite(code)) {\n\t\treturn code;\n\t}\n\tif (typeof code === \"string\") {\n\t\tconst parsed = Number(code);\n\t\tif (Number.isInteger(parsed)) {\n\t\t\treturn parsed;\n\t\t}\n\t}\n\treturn -1;\n}\n\nexport async function runGit(cwd: string, args: string[], options: RunGitOptions = {}): Promise<GitCommandResult> {\n\ttry {\n\t\tconst { stdout, stderr } = await execFileAsync(\"git\", args, {\n\t\t\tcwd,\n\t\t\tencoding: \"utf8\",\n\t\t\tmaxBuffer: GIT_MAX_BUFFER_BYTES,\n\t\t\tenv: options.env || createGitProcessEnv(),\n\t\t});\n\t\tconst normalizedStdout = String(stdout ?? \"\").trim();\n\t\tconst normalizedStderr = String(stderr ?? \"\").trim();\n\t\treturn {\n\t\t\tok: true,\n\t\t\tstdout: options.trimStdout === false ? stdout : normalizedStdout,\n\t\t\tstderr: normalizedStderr,\n\t\t\toutput: [normalizedStdout, normalizedStderr].filter(Boolean).join(\"\\n\"),\n\t\t\terror: null,\n\t\t\texitCode: 0,\n\t\t};\n\t} catch (error) {\n\t\tconst candidate = error as { code?: string | number | null; stdout?: unknown; stderr?: unknown; message?: unknown };\n\t\tconst rawStdout = String(candidate.stdout ?? \"\");\n\t\tconst stdout = options.trimStdout === false ? rawStdout : rawStdout.trim();\n\t\tconst stderr = String(candidate.stderr ?? \"\").trim();\n\t\tconst message = String(candidate.message ?? \"\").trim();\n\t\tconst command = `git ${args.join(\" \")} failed`;\n\t\tconst errorMessage = `Failed to run Git Command: \\n Command: \\n ${command} \\n ${stderr || message}`;\n\t\tconst exitCode = normalizeProcessExitCode(candidate.code);\n\n\t\treturn {\n\t\t\tok: false,\n\t\t\tstdout,\n\t\t\tstderr,\n\t\t\toutput: [stdout, stderr].filter(Boolean).join(\"\\n\"),\n\t\t\terror: errorMessage,\n\t\t\texitCode,\n\t\t};\n\t}\n}\n\nexport async function getGitStdout(args: string[], cwd: string, options: RunGitOptions = {}): Promise<string> {\n\tconst result = await runGit(cwd, args, options);\n\tif (!result.ok) {\n\t\tthrow new Error(result.error || result.stdout);\n\t}\n\n\treturn result.stdout;\n}\n\nexport interface GitHeadInfo {\n\tbranch: string | null;\n\theadCommit: string | null;\n\tisDetached: boolean;\n}\n\n/**\n * Read the current HEAD commit, branch name, and detached state for a\n * repository (or worktree) at `cwd`.\n */\nexport async function readGitHeadInfo(cwd: string): Promise<GitHeadInfo> {\n\tconst headResult = await runGit(cwd, [\"rev-parse\", \"--verify\", \"HEAD\"]);\n\tconst headCommit = headResult.ok ? headResult.stdout : null;\n\tconst branchResult = await runGit(cwd, [\"symbolic-ref\", \"--quiet\", \"--short\", \"HEAD\"]);\n\tconst branch = branchResult.ok ? branchResult.stdout : null;\n\treturn {\n\t\tbranch,\n\t\theadCommit,\n\t\tisDetached: headCommit !== null && branch === null,\n\t};\n}\n\nexport function getGitCommandErrorMessage(error: unknown): string {\n\tif (error && typeof error === \"object\" && \"stderr\" in error) {\n\t\tconst stderr = (error as { stderr?: unknown }).stderr;\n\t\tif (typeof stderr === \"string\" && stderr.trim()) {\n\t\t\treturn stderr.trim();\n\t\t}\n\t}\n\treturn error instanceof Error ? error.message : String(error);\n}"],"names":[],"mappings":"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","debugId":"c1328ea8-0a40-5b06-a427-f81249f30600"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kanban",
3
- "version": "0.1.39",
3
+ "version": "0.1.41",
4
4
  "description": "A kanban foundation for coding agents",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -79,18 +79,19 @@
79
79
  "vitest": "^4.1.0"
80
80
  },
81
81
  "dependencies": {
82
- "@clinebot/agents": "^0.0.12",
83
- "@clinebot/core": "^0.0.12",
84
- "@clinebot/llms": "^0.0.12",
82
+ "@clinebot/agents": "^0.0.15",
83
+ "@clinebot/core": "^0.0.15",
84
+ "@clinebot/llms": "^0.0.15",
85
85
  "@modelcontextprotocol/sdk": "^1.27.1",
86
86
  "@sentry/node": "^10.45.0",
87
87
  "@trpc/client": "^11.11.0",
88
88
  "@trpc/server": "^11.11.0",
89
89
  "commander": "^14.0.3",
90
90
  "node-pty": "^1.2.0-beta.11",
91
+ "open": "^11.0.0",
91
92
  "proper-lockfile": "^4.1.2",
92
93
  "tree-kill": "^1.2.2",
93
94
  "ws": "^8.18.0",
94
95
  "zod": "^4.3.6"
95
96
  }
96
- }
97
+ }