kantban-cli 0.1.8 → 0.1.10
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/chunk-ZCUIGFSP.js +4111 -0
- package/dist/chunk-ZCUIGFSP.js.map +1 -0
- package/dist/context-7YDNTI3P.js +30 -0
- package/dist/context-7YDNTI3P.js.map +1 -0
- package/dist/cron-OKQP6QDF.js +112 -0
- package/dist/cron-OKQP6QDF.js.map +1 -0
- package/dist/index.d.ts +0 -2
- package/dist/index.js +179 -44
- package/dist/index.js.map +1 -1
- package/dist/pipeline-HTGCXNPL.js +4049 -0
- package/dist/pipeline-HTGCXNPL.js.map +1 -0
- package/dist/pipeline-init-IGZZOOLK.js +103 -0
- package/dist/pipeline-init-IGZZOOLK.js.map +1 -0
- package/dist/status-4GFXMVIM.js +128 -0
- package/dist/status-4GFXMVIM.js.map +1 -0
- package/dist/work-2V33NZAT.js +81 -0
- package/dist/work-2V33NZAT.js.map +1 -0
- package/package.json +5 -4
- package/dist/client.d.ts +0 -38
- package/dist/client.d.ts.map +0 -1
- package/dist/client.js +0 -163
- package/dist/client.js.map +0 -1
- package/dist/commands/context.d.ts +0 -3
- package/dist/commands/context.d.ts.map +0 -1
- package/dist/commands/context.js +0 -27
- package/dist/commands/context.js.map +0 -1
- package/dist/commands/cron.d.ts +0 -3
- package/dist/commands/cron.d.ts.map +0 -1
- package/dist/commands/cron.js +0 -106
- package/dist/commands/cron.js.map +0 -1
- package/dist/commands/pipeline-init.d.ts +0 -2
- package/dist/commands/pipeline-init.d.ts.map +0 -1
- package/dist/commands/pipeline-init.js +0 -100
- package/dist/commands/pipeline-init.js.map +0 -1
- package/dist/commands/pipeline.d.ts +0 -4
- package/dist/commands/pipeline.d.ts.map +0 -1
- package/dist/commands/pipeline.js +0 -1222
- package/dist/commands/pipeline.js.map +0 -1
- package/dist/commands/status.d.ts +0 -3
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js +0 -135
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/work.d.ts +0 -3
- package/dist/commands/work.d.ts.map +0 -1
- package/dist/commands/work.js +0 -76
- package/dist/commands/work.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/lib/advisor.d.ts +0 -108
- package/dist/lib/advisor.d.ts.map +0 -1
- package/dist/lib/advisor.js +0 -139
- package/dist/lib/advisor.js.map +0 -1
- package/dist/lib/checkpoint.d.ts +0 -15
- package/dist/lib/checkpoint.d.ts.map +0 -1
- package/dist/lib/checkpoint.js +0 -49
- package/dist/lib/checkpoint.js.map +0 -1
- package/dist/lib/constraint-evaluator.d.ts +0 -40
- package/dist/lib/constraint-evaluator.d.ts.map +0 -1
- package/dist/lib/constraint-evaluator.js +0 -189
- package/dist/lib/constraint-evaluator.js.map +0 -1
- package/dist/lib/cost-tracker.d.ts +0 -46
- package/dist/lib/cost-tracker.d.ts.map +0 -1
- package/dist/lib/cost-tracker.js +0 -120
- package/dist/lib/cost-tracker.js.map +0 -1
- package/dist/lib/evaluator.d.ts +0 -17
- package/dist/lib/evaluator.d.ts.map +0 -1
- package/dist/lib/evaluator.js +0 -71
- package/dist/lib/evaluator.js.map +0 -1
- package/dist/lib/event-emitter.d.ts +0 -28
- package/dist/lib/event-emitter.d.ts.map +0 -1
- package/dist/lib/event-emitter.js +0 -100
- package/dist/lib/event-emitter.js.map +0 -1
- package/dist/lib/event-queue.d.ts +0 -28
- package/dist/lib/event-queue.d.ts.map +0 -1
- package/dist/lib/event-queue.js +0 -73
- package/dist/lib/event-queue.js.map +0 -1
- package/dist/lib/gate-config.d.ts +0 -7
- package/dist/lib/gate-config.d.ts.map +0 -1
- package/dist/lib/gate-config.js +0 -68
- package/dist/lib/gate-config.js.map +0 -1
- package/dist/lib/gate-proxy-server.d.ts +0 -16
- package/dist/lib/gate-proxy-server.d.ts.map +0 -1
- package/dist/lib/gate-proxy-server.js +0 -385
- package/dist/lib/gate-proxy-server.js.map +0 -1
- package/dist/lib/gate-proxy.d.ts +0 -46
- package/dist/lib/gate-proxy.d.ts.map +0 -1
- package/dist/lib/gate-proxy.js +0 -104
- package/dist/lib/gate-proxy.js.map +0 -1
- package/dist/lib/gate-runner.d.ts +0 -13
- package/dist/lib/gate-runner.d.ts.map +0 -1
- package/dist/lib/gate-runner.js +0 -104
- package/dist/lib/gate-runner.js.map +0 -1
- package/dist/lib/gate-snapshot.d.ts +0 -12
- package/dist/lib/gate-snapshot.d.ts.map +0 -1
- package/dist/lib/gate-snapshot.js +0 -49
- package/dist/lib/gate-snapshot.js.map +0 -1
- package/dist/lib/light-call.d.ts +0 -37
- package/dist/lib/light-call.d.ts.map +0 -1
- package/dist/lib/light-call.js +0 -62
- package/dist/lib/light-call.js.map +0 -1
- package/dist/lib/logger.d.ts +0 -22
- package/dist/lib/logger.d.ts.map +0 -1
- package/dist/lib/logger.js +0 -98
- package/dist/lib/logger.js.map +0 -1
- package/dist/lib/mcp-config.d.ts +0 -24
- package/dist/lib/mcp-config.d.ts.map +0 -1
- package/dist/lib/mcp-config.js +0 -115
- package/dist/lib/mcp-config.js.map +0 -1
- package/dist/lib/orchestrator.d.ts +0 -392
- package/dist/lib/orchestrator.d.ts.map +0 -1
- package/dist/lib/orchestrator.js +0 -1636
- package/dist/lib/orchestrator.js.map +0 -1
- package/dist/lib/parse-utils.d.ts +0 -6
- package/dist/lib/parse-utils.d.ts.map +0 -1
- package/dist/lib/parse-utils.js +0 -64
- package/dist/lib/parse-utils.js.map +0 -1
- package/dist/lib/prompt-composer.d.ts +0 -131
- package/dist/lib/prompt-composer.d.ts.map +0 -1
- package/dist/lib/prompt-composer.js +0 -317
- package/dist/lib/prompt-composer.js.map +0 -1
- package/dist/lib/ralph-loop.d.ts +0 -123
- package/dist/lib/ralph-loop.d.ts.map +0 -1
- package/dist/lib/ralph-loop.js +0 -383
- package/dist/lib/ralph-loop.js.map +0 -1
- package/dist/lib/reaper.d.ts +0 -14
- package/dist/lib/reaper.d.ts.map +0 -1
- package/dist/lib/reaper.js +0 -114
- package/dist/lib/reaper.js.map +0 -1
- package/dist/lib/replanner.d.ts +0 -49
- package/dist/lib/replanner.d.ts.map +0 -1
- package/dist/lib/replanner.js +0 -61
- package/dist/lib/replanner.js.map +0 -1
- package/dist/lib/run-memory.d.ts +0 -37
- package/dist/lib/run-memory.d.ts.map +0 -1
- package/dist/lib/run-memory.js +0 -115
- package/dist/lib/run-memory.js.map +0 -1
- package/dist/lib/stream-parser.d.ts +0 -20
- package/dist/lib/stream-parser.d.ts.map +0 -1
- package/dist/lib/stream-parser.js +0 -65
- package/dist/lib/stream-parser.js.map +0 -1
- package/dist/lib/stuck-detector.d.ts +0 -47
- package/dist/lib/stuck-detector.d.ts.map +0 -1
- package/dist/lib/stuck-detector.js +0 -105
- package/dist/lib/stuck-detector.js.map +0 -1
- package/dist/lib/tool-profiles.d.ts +0 -19
- package/dist/lib/tool-profiles.d.ts.map +0 -1
- package/dist/lib/tool-profiles.js +0 -22
- package/dist/lib/tool-profiles.js.map +0 -1
- package/dist/lib/worktree.d.ts +0 -12
- package/dist/lib/worktree.d.ts.map +0 -1
- package/dist/lib/worktree.js +0 -29
- package/dist/lib/worktree.js.map +0 -1
- package/dist/lib/ws-client.d.ts +0 -31
- package/dist/lib/ws-client.d.ts.map +0 -1
- package/dist/lib/ws-client.js +0 -113
- package/dist/lib/ws-client.js.map +0 -1
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
const SIGNIFICANT_TYPES = new Set([
|
|
2
|
-
'advisor_escalate',
|
|
3
|
-
'evaluator_rejected',
|
|
4
|
-
'budget_exhausted',
|
|
5
|
-
'replanner_paused',
|
|
6
|
-
]);
|
|
7
|
-
const FLUSH_INTERVAL_MS = 5_000;
|
|
8
|
-
const MAX_BATCH_SIZE = 100;
|
|
9
|
-
export class PipelineEventEmitter {
|
|
10
|
-
apiBaseUrl;
|
|
11
|
-
projectId;
|
|
12
|
-
apiToken;
|
|
13
|
-
boardId;
|
|
14
|
-
runId;
|
|
15
|
-
buffer = [];
|
|
16
|
-
flushTimer = null;
|
|
17
|
-
closed = false;
|
|
18
|
-
inFlight = false;
|
|
19
|
-
static MAX_BUFFER_SIZE = 10_000;
|
|
20
|
-
constructor(apiBaseUrl, projectId, apiToken, boardId, runId) {
|
|
21
|
-
this.apiBaseUrl = apiBaseUrl;
|
|
22
|
-
this.projectId = projectId;
|
|
23
|
-
this.apiToken = apiToken;
|
|
24
|
-
this.boardId = boardId;
|
|
25
|
-
this.runId = runId;
|
|
26
|
-
this.flushTimer = setInterval(() => void this.flush(), FLUSH_INTERVAL_MS);
|
|
27
|
-
}
|
|
28
|
-
emit(opts) {
|
|
29
|
-
if (this.closed)
|
|
30
|
-
return;
|
|
31
|
-
const event = {
|
|
32
|
-
board_id: this.boardId,
|
|
33
|
-
ticket_id: opts.ticketId ?? null,
|
|
34
|
-
column_id: opts.columnId ?? null,
|
|
35
|
-
run_id: this.runId,
|
|
36
|
-
session_id: opts.sessionId ?? null,
|
|
37
|
-
layer: opts.layer,
|
|
38
|
-
event_type: opts.eventType,
|
|
39
|
-
severity: opts.severity,
|
|
40
|
-
summary: opts.summary,
|
|
41
|
-
detail: opts.detail ?? null,
|
|
42
|
-
iteration: opts.iteration ?? null,
|
|
43
|
-
};
|
|
44
|
-
this.buffer.push(event);
|
|
45
|
-
if (SIGNIFICANT_TYPES.has(opts.eventType) || this.buffer.length >= MAX_BATCH_SIZE) {
|
|
46
|
-
void this.flush();
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
async flush() {
|
|
50
|
-
if (this.inFlight || this.buffer.length === 0)
|
|
51
|
-
return;
|
|
52
|
-
this.inFlight = true;
|
|
53
|
-
const batch = this.buffer.splice(0, MAX_BATCH_SIZE);
|
|
54
|
-
try {
|
|
55
|
-
const res = await fetch(`${this.apiBaseUrl}/projects/${this.projectId}/pipeline-events`, {
|
|
56
|
-
method: 'POST',
|
|
57
|
-
headers: {
|
|
58
|
-
'Content-Type': 'application/json',
|
|
59
|
-
Authorization: `Bearer ${this.apiToken}`,
|
|
60
|
-
},
|
|
61
|
-
body: JSON.stringify({ events: batch }),
|
|
62
|
-
});
|
|
63
|
-
if (!res.ok) {
|
|
64
|
-
if (res.status >= 500) {
|
|
65
|
-
// Retryable server error — re-queue
|
|
66
|
-
this.buffer.unshift(...batch);
|
|
67
|
-
if (this.buffer.length > PipelineEventEmitter.MAX_BUFFER_SIZE) {
|
|
68
|
-
this.buffer.splice(0, this.buffer.length - PipelineEventEmitter.MAX_BUFFER_SIZE);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
// Permanent client error (4xx) — drop batch, log
|
|
73
|
-
console.error(`[event-emitter] Dropping ${batch.length} events: HTTP ${res.status}`);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
this.buffer.unshift(...batch);
|
|
79
|
-
if (this.buffer.length > PipelineEventEmitter.MAX_BUFFER_SIZE) {
|
|
80
|
-
this.buffer.splice(0, this.buffer.length - PipelineEventEmitter.MAX_BUFFER_SIZE);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
finally {
|
|
84
|
-
this.inFlight = false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
async close() {
|
|
88
|
-
this.closed = true;
|
|
89
|
-
if (this.flushTimer) {
|
|
90
|
-
clearInterval(this.flushTimer);
|
|
91
|
-
this.flushTimer = null;
|
|
92
|
-
}
|
|
93
|
-
// Wait for any in-flight flush to settle
|
|
94
|
-
while (this.inFlight) {
|
|
95
|
-
await new Promise((r) => setTimeout(r, 50));
|
|
96
|
-
}
|
|
97
|
-
await this.flush();
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
//# sourceMappingURL=event-emitter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../src/lib/event-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export interface PipelineEvent {
|
|
2
|
-
type: 'ticket:created' | 'ticket:moved' | 'ticket:updated' | 'ticket:archived' | 'ticket:deleted';
|
|
3
|
-
ticketId: string;
|
|
4
|
-
columnId: string | null;
|
|
5
|
-
}
|
|
6
|
-
export type EventHandler = (event: PipelineEvent) => void | Promise<void>;
|
|
7
|
-
export type ErrorHandler = (event: PipelineEvent, error: unknown) => void;
|
|
8
|
-
interface EventQueueOptions {
|
|
9
|
-
drainRateMs?: number;
|
|
10
|
-
onError?: ErrorHandler;
|
|
11
|
-
}
|
|
12
|
-
export declare class EventQueue {
|
|
13
|
-
private queue;
|
|
14
|
-
private handler;
|
|
15
|
-
private onError;
|
|
16
|
-
private timer;
|
|
17
|
-
private drainRateMs;
|
|
18
|
-
private running;
|
|
19
|
-
private draining;
|
|
20
|
-
constructor(handler: EventHandler, options?: EventQueueOptions);
|
|
21
|
-
start(): void;
|
|
22
|
-
stop(): void;
|
|
23
|
-
push(event: PipelineEvent): void;
|
|
24
|
-
pushPriority(event: PipelineEvent): void;
|
|
25
|
-
private drain;
|
|
26
|
-
}
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=event-queue.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-queue.d.ts","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,GAAG,cAAc,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IAClG,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAE1E,UAAU,iBAAiB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,EAAE,YAAY,EAAE,OAAO,GAAE,iBAAsB;IAMlE,KAAK,IAAI,IAAI;IAKb,IAAI,IAAI,IAAI;IASZ,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAWhC,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;YAW1B,KAAK;CAiBpB"}
|
package/dist/lib/event-queue.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
function isDestructive(type) {
|
|
2
|
-
return type === 'ticket:archived' || type === 'ticket:deleted';
|
|
3
|
-
}
|
|
4
|
-
export class EventQueue {
|
|
5
|
-
queue = new Map(); // keyed by ticketId for coalescing
|
|
6
|
-
handler;
|
|
7
|
-
onError;
|
|
8
|
-
timer = null;
|
|
9
|
-
drainRateMs;
|
|
10
|
-
running = false;
|
|
11
|
-
draining = false;
|
|
12
|
-
constructor(handler, options = {}) {
|
|
13
|
-
this.handler = handler;
|
|
14
|
-
this.drainRateMs = options.drainRateMs ?? 100;
|
|
15
|
-
this.onError = options.onError ?? ((event, error) => console.error('EventQueue handler error for event', event, error));
|
|
16
|
-
}
|
|
17
|
-
start() {
|
|
18
|
-
this.running = true;
|
|
19
|
-
this.timer = setInterval(() => void this.drain(), this.drainRateMs);
|
|
20
|
-
}
|
|
21
|
-
stop() {
|
|
22
|
-
this.running = false;
|
|
23
|
-
if (this.timer) {
|
|
24
|
-
clearInterval(this.timer);
|
|
25
|
-
this.timer = null;
|
|
26
|
-
}
|
|
27
|
-
this.queue.clear();
|
|
28
|
-
}
|
|
29
|
-
push(event) {
|
|
30
|
-
if (!this.running)
|
|
31
|
-
return;
|
|
32
|
-
// Coalesce move/create events (latest wins), but never overwrite
|
|
33
|
-
// destructive events (archived/deleted) with non-destructive ones.
|
|
34
|
-
const existing = this.queue.get(event.ticketId);
|
|
35
|
-
if (existing && isDestructive(existing.type) && !isDestructive(event.type)) {
|
|
36
|
-
return; // don't overwrite a deletion with a move
|
|
37
|
-
}
|
|
38
|
-
this.queue.set(event.ticketId, event);
|
|
39
|
-
}
|
|
40
|
-
pushPriority(event) {
|
|
41
|
-
if (!this.running)
|
|
42
|
-
return;
|
|
43
|
-
// Priority events bypass the queue — execute immediately
|
|
44
|
-
// Also remove from queue to prevent double-processing
|
|
45
|
-
this.queue.delete(event.ticketId);
|
|
46
|
-
const result = this.handler(event);
|
|
47
|
-
if (result instanceof Promise) {
|
|
48
|
-
result.catch((error) => this.onError(event, error));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
async drain() {
|
|
52
|
-
if (this.draining)
|
|
53
|
-
return;
|
|
54
|
-
if (this.queue.size === 0)
|
|
55
|
-
return;
|
|
56
|
-
this.draining = true;
|
|
57
|
-
try {
|
|
58
|
-
// Take the first event (FIFO from Map insertion order)
|
|
59
|
-
const [ticketId, event] = this.queue.entries().next().value;
|
|
60
|
-
this.queue.delete(ticketId);
|
|
61
|
-
try {
|
|
62
|
-
await this.handler(event);
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
this.onError(event, error);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
finally {
|
|
69
|
-
this.draining = false;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=event-queue.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event-queue.js","sourceRoot":"","sources":["../../src/lib/event-queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type GateConfig, type GateDefinition } from '@kantban/types';
|
|
2
|
-
export declare const VALID_BRANCH_RE: RegExp;
|
|
3
|
-
export declare function parseGateConfig(yamlContent: string): GateConfig;
|
|
4
|
-
export declare function resolveGatesForColumn(config: GateConfig, columnName: string): GateDefinition[];
|
|
5
|
-
export declare function resolveGatesForColumnWithWorktree(config: GateConfig, columnName: string, worktreeEnabled: boolean, integrationBranch?: string): GateDefinition[];
|
|
6
|
-
export declare function parseTimeout(timeout: string | undefined): number;
|
|
7
|
-
//# sourceMappingURL=gate-config.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gate-config.d.ts","sourceRoot":"","sources":["../../src/lib/gate-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIxF,eAAO,MAAM,eAAe,QAAmC,CAAC;AAYhE,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAI/D;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,cAAc,EAAE,CAwB9F;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,UAAU,EAClB,UAAU,EAAE,MAAM,EAClB,eAAe,EAAE,OAAO,EACxB,iBAAiB,GAAE,MAAe,GACjC,cAAc,EAAE,CAgBlB;AAID,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAOhE"}
|
package/dist/lib/gate-config.js
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { load, JSON_SCHEMA } from 'js-yaml';
|
|
2
|
-
import { GateConfigSchema } from '@kantban/types';
|
|
3
|
-
const DANGEROUS_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
4
|
-
export const VALID_BRANCH_RE = /^[a-zA-Z0-9][a-zA-Z0-9._\-/]*$/;
|
|
5
|
-
function assertNoPrototypePollutionKeys(value, depth = 0) {
|
|
6
|
-
if (depth > 20 || value === null || typeof value !== 'object')
|
|
7
|
-
return;
|
|
8
|
-
for (const key of Object.keys(value)) {
|
|
9
|
-
if (DANGEROUS_KEYS.has(key)) {
|
|
10
|
-
throw new Error(`Unsafe key "${key}" detected in YAML input`);
|
|
11
|
-
}
|
|
12
|
-
assertNoPrototypePollutionKeys(value[key], depth + 1);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export function parseGateConfig(yamlContent) {
|
|
16
|
-
const raw = load(yamlContent, { schema: JSON_SCHEMA });
|
|
17
|
-
assertNoPrototypePollutionKeys(raw);
|
|
18
|
-
return GateConfigSchema.parse(raw);
|
|
19
|
-
}
|
|
20
|
-
export function resolveGatesForColumn(config, columnName) {
|
|
21
|
-
const lowerName = columnName.toLowerCase();
|
|
22
|
-
// Find column override (case-insensitive)
|
|
23
|
-
const overrideKey = config.columns
|
|
24
|
-
? Object.keys(config.columns).find((k) => k.toLowerCase() === lowerName)
|
|
25
|
-
: undefined;
|
|
26
|
-
const override = overrideKey ? config.columns[overrideKey] : undefined;
|
|
27
|
-
if (!override) {
|
|
28
|
-
return [...config.default];
|
|
29
|
-
}
|
|
30
|
-
if (!override.extend) {
|
|
31
|
-
if (override.gates.length === 0) {
|
|
32
|
-
console.error(` [warn] Column "${columnName}" has extend:false with no gates — all gate enforcement disabled for this column`);
|
|
33
|
-
}
|
|
34
|
-
return [...override.gates];
|
|
35
|
-
}
|
|
36
|
-
// Extend: default gates + column gates, column overrides by name
|
|
37
|
-
const overrideNames = new Set(override.gates.map((g) => g.name));
|
|
38
|
-
const merged = config.default.filter((g) => !overrideNames.has(g.name));
|
|
39
|
-
return [...merged, ...override.gates];
|
|
40
|
-
}
|
|
41
|
-
export function resolveGatesForColumnWithWorktree(config, columnName, worktreeEnabled, integrationBranch = 'main') {
|
|
42
|
-
const gates = resolveGatesForColumn(config, columnName);
|
|
43
|
-
if (!worktreeEnabled)
|
|
44
|
-
return gates;
|
|
45
|
-
if (!VALID_BRANCH_RE.test(integrationBranch)) {
|
|
46
|
-
throw new Error(`Invalid branch name for worktree merge gate: "${integrationBranch}"`);
|
|
47
|
-
}
|
|
48
|
-
const mergeGate = {
|
|
49
|
-
name: '__worktree_merge',
|
|
50
|
-
run: `git merge '${integrationBranch}' --no-edit`,
|
|
51
|
-
required: true,
|
|
52
|
-
timeout: '30s',
|
|
53
|
-
};
|
|
54
|
-
return [mergeGate, ...gates];
|
|
55
|
-
}
|
|
56
|
-
const DEFAULT_TIMEOUT_MS = 60_000;
|
|
57
|
-
export function parseTimeout(timeout) {
|
|
58
|
-
if (!timeout)
|
|
59
|
-
return DEFAULT_TIMEOUT_MS;
|
|
60
|
-
const match = timeout.match(/^(\d+)(s|m)$/);
|
|
61
|
-
if (!match)
|
|
62
|
-
return DEFAULT_TIMEOUT_MS;
|
|
63
|
-
const value = parseInt(match[1], 10);
|
|
64
|
-
if (value <= 0)
|
|
65
|
-
return DEFAULT_TIMEOUT_MS;
|
|
66
|
-
return match[2] === 'm' ? value * 60_000 : value * 1_000;
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=gate-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gate-config.js","sourceRoot":"","sources":["../../src/lib/gate-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* gate-proxy-server.ts — MCP stdio server for gate enforcement.
|
|
4
|
-
*
|
|
5
|
-
* Spawned by the pipeline orchestrator as a child process. Reads gate config
|
|
6
|
-
* from env vars, instantiates GateProxy, and exposes three MCP tools over
|
|
7
|
-
* JSON-RPC on stdin/stdout:
|
|
8
|
-
*
|
|
9
|
-
* - kantban_run_gates — Run column gates and report results
|
|
10
|
-
* - kantban_move_ticket — Run gates then forward move to KantBan API
|
|
11
|
-
* - kantban_complete_task — Run gates then forward complete to KantBan API
|
|
12
|
-
*
|
|
13
|
-
* Uses raw JSON-RPC (no @modelcontextprotocol/sdk dependency).
|
|
14
|
-
*/
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=gate-proxy-server.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gate-proxy-server.d.ts","sourceRoot":"","sources":["../../src/lib/gate-proxy-server.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;GAYG"}
|