kantban-cli 0.1.8 → 0.1.11

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 (155) hide show
  1. package/dist/chunk-ZCUIGFSP.js +4111 -0
  2. package/dist/chunk-ZCUIGFSP.js.map +1 -0
  3. package/dist/context-7YDNTI3P.js +30 -0
  4. package/dist/context-7YDNTI3P.js.map +1 -0
  5. package/dist/cron-OKQP6QDF.js +112 -0
  6. package/dist/cron-OKQP6QDF.js.map +1 -0
  7. package/dist/index.d.ts +0 -2
  8. package/dist/index.js +179 -44
  9. package/dist/index.js.map +1 -1
  10. package/dist/pipeline-7LG74YA2.js +4098 -0
  11. package/dist/pipeline-7LG74YA2.js.map +1 -0
  12. package/dist/pipeline-init-IGZZOOLK.js +103 -0
  13. package/dist/pipeline-init-IGZZOOLK.js.map +1 -0
  14. package/dist/status-4GFXMVIM.js +128 -0
  15. package/dist/status-4GFXMVIM.js.map +1 -0
  16. package/dist/work-2V33NZAT.js +81 -0
  17. package/dist/work-2V33NZAT.js.map +1 -0
  18. package/package.json +5 -4
  19. package/dist/client.d.ts +0 -38
  20. package/dist/client.d.ts.map +0 -1
  21. package/dist/client.js +0 -163
  22. package/dist/client.js.map +0 -1
  23. package/dist/commands/context.d.ts +0 -3
  24. package/dist/commands/context.d.ts.map +0 -1
  25. package/dist/commands/context.js +0 -27
  26. package/dist/commands/context.js.map +0 -1
  27. package/dist/commands/cron.d.ts +0 -3
  28. package/dist/commands/cron.d.ts.map +0 -1
  29. package/dist/commands/cron.js +0 -106
  30. package/dist/commands/cron.js.map +0 -1
  31. package/dist/commands/pipeline-init.d.ts +0 -2
  32. package/dist/commands/pipeline-init.d.ts.map +0 -1
  33. package/dist/commands/pipeline-init.js +0 -100
  34. package/dist/commands/pipeline-init.js.map +0 -1
  35. package/dist/commands/pipeline.d.ts +0 -4
  36. package/dist/commands/pipeline.d.ts.map +0 -1
  37. package/dist/commands/pipeline.js +0 -1222
  38. package/dist/commands/pipeline.js.map +0 -1
  39. package/dist/commands/status.d.ts +0 -3
  40. package/dist/commands/status.d.ts.map +0 -1
  41. package/dist/commands/status.js +0 -135
  42. package/dist/commands/status.js.map +0 -1
  43. package/dist/commands/work.d.ts +0 -3
  44. package/dist/commands/work.d.ts.map +0 -1
  45. package/dist/commands/work.js +0 -76
  46. package/dist/commands/work.js.map +0 -1
  47. package/dist/index.d.ts.map +0 -1
  48. package/dist/lib/advisor.d.ts +0 -108
  49. package/dist/lib/advisor.d.ts.map +0 -1
  50. package/dist/lib/advisor.js +0 -139
  51. package/dist/lib/advisor.js.map +0 -1
  52. package/dist/lib/checkpoint.d.ts +0 -15
  53. package/dist/lib/checkpoint.d.ts.map +0 -1
  54. package/dist/lib/checkpoint.js +0 -49
  55. package/dist/lib/checkpoint.js.map +0 -1
  56. package/dist/lib/constraint-evaluator.d.ts +0 -40
  57. package/dist/lib/constraint-evaluator.d.ts.map +0 -1
  58. package/dist/lib/constraint-evaluator.js +0 -189
  59. package/dist/lib/constraint-evaluator.js.map +0 -1
  60. package/dist/lib/cost-tracker.d.ts +0 -46
  61. package/dist/lib/cost-tracker.d.ts.map +0 -1
  62. package/dist/lib/cost-tracker.js +0 -120
  63. package/dist/lib/cost-tracker.js.map +0 -1
  64. package/dist/lib/evaluator.d.ts +0 -17
  65. package/dist/lib/evaluator.d.ts.map +0 -1
  66. package/dist/lib/evaluator.js +0 -71
  67. package/dist/lib/evaluator.js.map +0 -1
  68. package/dist/lib/event-emitter.d.ts +0 -28
  69. package/dist/lib/event-emitter.d.ts.map +0 -1
  70. package/dist/lib/event-emitter.js +0 -100
  71. package/dist/lib/event-emitter.js.map +0 -1
  72. package/dist/lib/event-queue.d.ts +0 -28
  73. package/dist/lib/event-queue.d.ts.map +0 -1
  74. package/dist/lib/event-queue.js +0 -73
  75. package/dist/lib/event-queue.js.map +0 -1
  76. package/dist/lib/gate-config.d.ts +0 -7
  77. package/dist/lib/gate-config.d.ts.map +0 -1
  78. package/dist/lib/gate-config.js +0 -68
  79. package/dist/lib/gate-config.js.map +0 -1
  80. package/dist/lib/gate-proxy-server.d.ts +0 -16
  81. package/dist/lib/gate-proxy-server.d.ts.map +0 -1
  82. package/dist/lib/gate-proxy-server.js +0 -385
  83. package/dist/lib/gate-proxy-server.js.map +0 -1
  84. package/dist/lib/gate-proxy.d.ts +0 -46
  85. package/dist/lib/gate-proxy.d.ts.map +0 -1
  86. package/dist/lib/gate-proxy.js +0 -104
  87. package/dist/lib/gate-proxy.js.map +0 -1
  88. package/dist/lib/gate-runner.d.ts +0 -13
  89. package/dist/lib/gate-runner.d.ts.map +0 -1
  90. package/dist/lib/gate-runner.js +0 -104
  91. package/dist/lib/gate-runner.js.map +0 -1
  92. package/dist/lib/gate-snapshot.d.ts +0 -12
  93. package/dist/lib/gate-snapshot.d.ts.map +0 -1
  94. package/dist/lib/gate-snapshot.js +0 -49
  95. package/dist/lib/gate-snapshot.js.map +0 -1
  96. package/dist/lib/light-call.d.ts +0 -37
  97. package/dist/lib/light-call.d.ts.map +0 -1
  98. package/dist/lib/light-call.js +0 -62
  99. package/dist/lib/light-call.js.map +0 -1
  100. package/dist/lib/logger.d.ts +0 -22
  101. package/dist/lib/logger.d.ts.map +0 -1
  102. package/dist/lib/logger.js +0 -98
  103. package/dist/lib/logger.js.map +0 -1
  104. package/dist/lib/mcp-config.d.ts +0 -24
  105. package/dist/lib/mcp-config.d.ts.map +0 -1
  106. package/dist/lib/mcp-config.js +0 -115
  107. package/dist/lib/mcp-config.js.map +0 -1
  108. package/dist/lib/orchestrator.d.ts +0 -392
  109. package/dist/lib/orchestrator.d.ts.map +0 -1
  110. package/dist/lib/orchestrator.js +0 -1636
  111. package/dist/lib/orchestrator.js.map +0 -1
  112. package/dist/lib/parse-utils.d.ts +0 -6
  113. package/dist/lib/parse-utils.d.ts.map +0 -1
  114. package/dist/lib/parse-utils.js +0 -64
  115. package/dist/lib/parse-utils.js.map +0 -1
  116. package/dist/lib/prompt-composer.d.ts +0 -131
  117. package/dist/lib/prompt-composer.d.ts.map +0 -1
  118. package/dist/lib/prompt-composer.js +0 -317
  119. package/dist/lib/prompt-composer.js.map +0 -1
  120. package/dist/lib/ralph-loop.d.ts +0 -123
  121. package/dist/lib/ralph-loop.d.ts.map +0 -1
  122. package/dist/lib/ralph-loop.js +0 -383
  123. package/dist/lib/ralph-loop.js.map +0 -1
  124. package/dist/lib/reaper.d.ts +0 -14
  125. package/dist/lib/reaper.d.ts.map +0 -1
  126. package/dist/lib/reaper.js +0 -114
  127. package/dist/lib/reaper.js.map +0 -1
  128. package/dist/lib/replanner.d.ts +0 -49
  129. package/dist/lib/replanner.d.ts.map +0 -1
  130. package/dist/lib/replanner.js +0 -61
  131. package/dist/lib/replanner.js.map +0 -1
  132. package/dist/lib/run-memory.d.ts +0 -37
  133. package/dist/lib/run-memory.d.ts.map +0 -1
  134. package/dist/lib/run-memory.js +0 -115
  135. package/dist/lib/run-memory.js.map +0 -1
  136. package/dist/lib/stream-parser.d.ts +0 -20
  137. package/dist/lib/stream-parser.d.ts.map +0 -1
  138. package/dist/lib/stream-parser.js +0 -65
  139. package/dist/lib/stream-parser.js.map +0 -1
  140. package/dist/lib/stuck-detector.d.ts +0 -47
  141. package/dist/lib/stuck-detector.d.ts.map +0 -1
  142. package/dist/lib/stuck-detector.js +0 -105
  143. package/dist/lib/stuck-detector.js.map +0 -1
  144. package/dist/lib/tool-profiles.d.ts +0 -19
  145. package/dist/lib/tool-profiles.d.ts.map +0 -1
  146. package/dist/lib/tool-profiles.js +0 -22
  147. package/dist/lib/tool-profiles.js.map +0 -1
  148. package/dist/lib/worktree.d.ts +0 -12
  149. package/dist/lib/worktree.d.ts.map +0 -1
  150. package/dist/lib/worktree.js +0 -29
  151. package/dist/lib/worktree.js.map +0 -1
  152. package/dist/lib/ws-client.d.ts +0 -31
  153. package/dist/lib/ws-client.d.ts.map +0 -1
  154. package/dist/lib/ws-client.js +0 -113
  155. package/dist/lib/ws-client.js.map +0 -1
@@ -1,3 +0,0 @@
1
- import type { KantBanCLIClient } from '../client.js';
2
- export declare function runCron(client: KantBanCLIClient, args: string[]): Promise<void>;
3
- //# sourceMappingURL=cron.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/commands/cron.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAqBrD,wBAAsB,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwGrF"}
@@ -1,106 +0,0 @@
1
- import { execFile } from 'node:child_process';
2
- import { promisify } from 'node:util';
3
- import { generateMcpConfig, cleanupMcpConfig } from '../lib/mcp-config.js';
4
- import { RalphLoop } from '../lib/ralph-loop.js';
5
- const execFileAsync = promisify(execFile);
6
- function parseDuration(input) {
7
- const match = input.match(/^(\d+)(s|m|h)$/);
8
- if (!match)
9
- throw new Error(`Invalid duration: ${input}. Use format like 5m, 30s, 1h`);
10
- const value = Number(match[1]);
11
- const unit = match[2];
12
- switch (unit) {
13
- case 's': return value * 1000;
14
- case 'm': return value * 60 * 1000;
15
- case 'h': return value * 60 * 60 * 1000;
16
- default: throw new Error(`Unknown unit: ${unit}`);
17
- }
18
- }
19
- export async function runCron(client, args) {
20
- const columnId = args[0];
21
- if (!columnId) {
22
- console.error('Usage: kantban cron <column-id> [--interval 5m]');
23
- process.exit(1);
24
- }
25
- // Parse interval
26
- let intervalMs = 5 * 60 * 1000; // default 5m
27
- const intervalIdx = args.indexOf('--interval');
28
- const intervalArg = intervalIdx !== -1 ? args[intervalIdx + 1] : undefined;
29
- if (intervalArg) {
30
- intervalMs = parseDuration(intervalArg);
31
- }
32
- // Resolve project ID
33
- const projectId = process.env['KANTBAN_PROJECT_ID'];
34
- if (!projectId) {
35
- console.error('Error: KANTBAN_PROJECT_ID required');
36
- process.exit(1);
37
- }
38
- // Generate MCP config (stable path keyed by column)
39
- const mcpConfigPath = generateMcpConfig(client.baseUrl, client.token, `cron-${columnId}`);
40
- // invokeClaudeP helper (same pattern as pipeline.ts)
41
- async function invokeClaudeP(prompt, options) {
42
- const claudeArgs = ['-p', prompt, '--mcp-config', options.mcpConfigPath, '--dangerously-skip-permissions'];
43
- if (options.model)
44
- claudeArgs.push('--model', options.model);
45
- try {
46
- const { stdout } = await execFileAsync('claude', claudeArgs, { maxBuffer: 10 * 1024 * 1024 });
47
- return { exitCode: 0, output: stdout, toolCallCount: 0, tokensIn: 0, tokensOut: 0 };
48
- }
49
- catch (err) {
50
- const execErr = err;
51
- return { exitCode: execErr.code ?? 1, output: execErr.stdout ?? execErr.message ?? '', toolCallCount: 0, tokensIn: 0, tokensOut: 0 };
52
- }
53
- }
54
- let stopped = false;
55
- // Graceful shutdown
56
- const shutdown = () => {
57
- stopped = true;
58
- cleanupMcpConfig(mcpConfigPath);
59
- console.log('\nCron stopped.');
60
- process.exit(0);
61
- };
62
- process.on('SIGTERM', shutdown);
63
- process.on('SIGINT', shutdown);
64
- console.log(`Cron: column ${columnId}, interval ${String(intervalMs / 1000)}s`);
65
- console.log('Press Ctrl+C to stop.\n');
66
- // Main cron tick
67
- const tick = async () => {
68
- if (stopped)
69
- return;
70
- try {
71
- // Fetch column scope
72
- const columnScope = await client.get(`/projects/${projectId}/pipeline-context`, { columnId });
73
- const tickets = columnScope.tickets ?? [];
74
- if (tickets.length === 0) {
75
- console.log(`[${new Date().toLocaleTimeString('en-US', { hour12: false })}] No tickets in column. Sleeping...`);
76
- return;
77
- }
78
- console.log(`[${new Date().toLocaleTimeString('en-US', { hour12: false })}] Processing ${String(tickets.length)} ticket(s)...`);
79
- // Process each ticket sequentially (one iteration each for cron)
80
- for (const ticket of tickets) {
81
- if (stopped)
82
- break;
83
- const deps = {
84
- fetchTicketContext: (tid) => client.get(`/projects/${projectId}/pipeline-context`, { ticketId: tid }),
85
- fetchColumnContext: (cid) => client.get(`/projects/${projectId}/pipeline-context`, { columnId: cid }),
86
- fetchFingerprint: (tid) => client.getFingerprint(projectId, tid),
87
- invokeClaudeP,
88
- mcpConfigPath,
89
- projectId,
90
- };
91
- const config = { maxIterations: 1, gutterThreshold: 1 };
92
- const loop = new RalphLoop(ticket.id, columnId, config, deps);
93
- const result = await loop.run();
94
- console.log(` ${String(ticket.ticket_number)}: ${result.reason} (${String(result.iterations)} iter)`);
95
- }
96
- }
97
- catch (err) {
98
- const message = err instanceof Error ? err.message : String(err);
99
- console.error(`Cron tick error: ${message}`);
100
- }
101
- };
102
- // Run immediately, then on interval
103
- await tick();
104
- setInterval(() => void tick(), intervalMs);
105
- }
106
- //# sourceMappingURL=cron.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cron.js","sourceRoot":"","sources":["../../src/commands/cron.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare function runPipelineInit(): Promise<void>;
2
- //# sourceMappingURL=pipeline-init.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline-init.d.ts","sourceRoot":"","sources":["../../src/commands/pipeline-init.ts"],"names":[],"mappings":"AAkGA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBrD"}
@@ -1,100 +0,0 @@
1
- import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- const GATE_FILE = 'pipeline.gates.yaml';
4
- function detectProjectType(cwd) {
5
- if (existsSync(join(cwd, 'package.json'))) {
6
- const pkg = JSON.parse(readFileSync(join(cwd, 'package.json'), 'utf-8'));
7
- const scripts = pkg.scripts ?? {};
8
- const pm = existsSync(join(cwd, 'pnpm-lock.yaml')) ? 'pnpm'
9
- : existsSync(join(cwd, 'yarn.lock')) ? 'yarn' : 'npm';
10
- return {
11
- type: 'node',
12
- testCommand: scripts.test ? `${pm} test` : `${pm} vitest run`,
13
- typecheckCommand: scripts.typecheck ? `${pm} typecheck` : `${pm} tsc --noEmit`,
14
- lintCommand: scripts.lint ? `${pm} lint` : `${pm} eslint .`,
15
- buildCommand: scripts.build ? `${pm} build` : 'echo "no build configured"',
16
- };
17
- }
18
- if (existsSync(join(cwd, 'Cargo.toml'))) {
19
- return { type: 'rust', testCommand: 'cargo test', typecheckCommand: 'cargo check', lintCommand: 'cargo clippy', buildCommand: 'cargo build' };
20
- }
21
- if (existsSync(join(cwd, 'pyproject.toml')) || existsSync(join(cwd, 'setup.py'))) {
22
- return { type: 'python', testCommand: 'pytest', typecheckCommand: 'mypy .', lintCommand: 'ruff check .', buildCommand: 'echo "no build configured"' };
23
- }
24
- if (existsSync(join(cwd, 'go.mod'))) {
25
- return { type: 'go', testCommand: 'go test ./...', typecheckCommand: 'go vet ./...', lintCommand: 'golangci-lint run', buildCommand: 'go build ./...' };
26
- }
27
- return { type: 'unknown', testCommand: 'echo "configure your test command"', typecheckCommand: 'echo "configure your typecheck command"', lintCommand: 'echo "configure your lint command"', buildCommand: 'echo "configure your build command"' };
28
- }
29
- /** YAML-safe single-quoting: escapes internal single quotes by doubling them */
30
- function yamlQuote(s) {
31
- return `'${s.replace(/'/g, "''")}'`;
32
- }
33
- function generateGateFile(detection) {
34
- return `# pipeline.gates.yaml — Gate definitions for KantBan pipeline
35
- # Detected project type: ${detection.type}
36
- #
37
- # Gates are shell commands that produce pass/fail results.
38
- # Required gates block ticket movement. Advisory gates show output but don't block.
39
-
40
- default:
41
- - name: typecheck
42
- run: ${yamlQuote(detection.typecheckCommand)}
43
- required: true
44
- timeout: 60s
45
-
46
- - name: tests
47
- run: ${yamlQuote(detection.testCommand)}
48
- required: true
49
- timeout: 120s
50
-
51
- - name: lint
52
- run: ${yamlQuote(detection.lintCommand)}
53
- required: false # advisory — output shown but doesn't block
54
-
55
- # Column-specific overrides — matched by column name (case-insensitive)
56
- # columns:
57
- # implementation:
58
- # extend: true # inherit default gates, add more
59
- # gates:
60
- # - name: build
61
- # run: ${yamlQuote(detection.buildCommand)}
62
- # required: true
63
- # timeout: 120s
64
- #
65
- # qa:
66
- # extend: false # replace default gates entirely
67
- # gates:
68
- # - name: e2e
69
- # run: "echo 'configure your e2e test command'"
70
- # required: true
71
- # timeout: 300s
72
-
73
- settings:
74
- # cwd: .
75
- env:
76
- CI: "true"
77
- total_timeout: 300s
78
- budget:
79
- max_input_tokens: 5000000
80
- max_output_tokens: 1500000
81
- warn_pct: 75
82
- `;
83
- }
84
- export async function runPipelineInit() {
85
- const cwd = process.cwd();
86
- const filePath = join(cwd, GATE_FILE);
87
- if (existsSync(filePath)) {
88
- console.error(`Error: ${GATE_FILE} already exists in ${cwd}`);
89
- console.error('Edit the existing file or delete it to regenerate.');
90
- process.exit(1);
91
- }
92
- const detection = detectProjectType(cwd);
93
- const content = generateGateFile(detection);
94
- writeFileSync(filePath, content);
95
- console.log(`Created ${GATE_FILE} (detected: ${detection.type} project)`);
96
- console.log(`\nNext steps:`);
97
- console.log(` 1. Review and customize the gate file`);
98
- console.log(` 2. Run: kantban pipeline <board-id>`);
99
- }
100
- //# sourceMappingURL=pipeline-init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline-init.js","sourceRoot":"","sources":["../../src/commands/pipeline-init.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { KantBanCLIClient } from '../client.js';
2
- export declare function runPipeline(client: KantBanCLIClient, args: string[]): Promise<void>;
3
- export declare function stopPipeline(args: string[]): Promise<void>;
4
- //# sourceMappingURL=pipeline.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/commands/pipeline.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAkerD,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyzBzF;AAgDD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwChE"}