clinkx 0.2.1 → 0.2.3
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/clinkx-workflows/dist/clink-client.js +35 -10
- package/clinkx-workflows/dist/clink-client.js.map +1 -1
- package/clinkx-workflows/dist/config.d.ts +10 -0
- package/clinkx-workflows/dist/config.js +18 -0
- package/clinkx-workflows/dist/config.js.map +1 -1
- package/clinkx-workflows/dist/council-expander.d.ts +43 -0
- package/clinkx-workflows/dist/council-expander.js +330 -0
- package/clinkx-workflows/dist/council-expander.js.map +1 -0
- package/clinkx-workflows/dist/index.d.ts +14 -0
- package/clinkx-workflows/dist/index.js +264 -16
- package/clinkx-workflows/dist/index.js.map +1 -1
- package/clinkx-workflows/dist/server.d.ts +8 -1
- package/clinkx-workflows/dist/server.js +87 -1
- package/clinkx-workflows/dist/server.js.map +1 -1
- package/clinkx-workflows/dist/shutdown.d.ts +5 -9
- package/clinkx-workflows/dist/shutdown.js +6 -23
- package/clinkx-workflows/dist/shutdown.js.map +1 -1
- package/clinkx-workflows/dist/state.d.ts +13 -0
- package/clinkx-workflows/dist/state.js +198 -2
- package/clinkx-workflows/dist/state.js.map +1 -1
- package/clinkx-workflows/dist/transport.js +24 -8
- package/clinkx-workflows/dist/transport.js.map +1 -1
- package/clinkx-workflows/dist/workflow-tools.d.ts +14 -1
- package/clinkx-workflows/dist/workflow-tools.js +173 -12
- package/clinkx-workflows/dist/workflow-tools.js.map +1 -1
- package/clinkx-workflows/dist/workflows/index.d.ts +4 -3
- package/clinkx-workflows/dist/workflows/index.js +4 -3
- package/clinkx-workflows/dist/workflows/index.js.map +1 -1
- package/clinkx-workflows/templates/council/answer-chairman.txt +49 -0
- package/clinkx-workflows/templates/council/answer-cross-reviewer.txt +37 -0
- package/clinkx-workflows/templates/council/answer-specialist.txt +40 -0
- package/clinkx-workflows/templates/council/chairman.txt +59 -0
- package/clinkx-workflows/templates/council/code-review-chairman.txt +57 -0
- package/clinkx-workflows/templates/council/code-review-cross-reviewer.txt +43 -0
- package/clinkx-workflows/templates/council/code-review-reviewer.txt +39 -0
- package/clinkx-workflows/templates/council/debug-chairman.txt +57 -0
- package/clinkx-workflows/templates/council/debug-cross-reviewer.txt +41 -0
- package/clinkx-workflows/templates/council/debug-debugger.txt +46 -0
- package/clinkx-workflows/templates/council/discover-analyst.txt +38 -0
- package/clinkx-workflows/templates/council/discover-chairman.txt +51 -0
- package/clinkx-workflows/templates/council/discover-cross-reviewer.txt +40 -0
- package/clinkx-workflows/templates/council/member.txt +48 -0
- package/clinkx-workflows/templates/council/reviewer.txt +57 -0
- package/clinkx-workflows/workflows/council-answer.yaml +147 -0
- package/clinkx-workflows/workflows/council-code-review.yaml +152 -0
- package/clinkx-workflows/workflows/council-debug.yaml +152 -0
- package/clinkx-workflows/workflows/council-default.yaml +147 -0
- package/clinkx-workflows/workflows/council-discover.yaml +147 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +246 -14
- package/dist/index.js.map +1 -1
- package/dist/pipeline.d.ts +1 -1
- package/dist/pipeline.js +29 -5
- package/dist/pipeline.js.map +1 -1
- package/dist/runner.d.ts +2 -2
- package/dist/runner.js +24 -3
- package/dist/runner.js.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/package.json +7 -3
- package/clinkx-workflows/dist/workflows/council-default.d.ts +0 -123
- package/clinkx-workflows/dist/workflows/council-default.js +0 -141
- package/clinkx-workflows/dist/workflows/council-default.js.map +0 -1
|
@@ -129,17 +129,17 @@ export async function callClink(session, input, signal, context, timeoutMs) {
|
|
|
129
129
|
const codexLocalMatch = parsed.outputText.match(/\[codex-local\]:?\s*Local Codex process failed(?::\s*Process exited with code:\s*(\d+))?/);
|
|
130
130
|
if (codexLocalMatch != null) {
|
|
131
131
|
const exitCode = codexLocalMatch[1] != null ? Number(codexLocalMatch[1]) : null;
|
|
132
|
-
const synthesizedClass = exitCode === 101
|
|
132
|
+
const synthesizedClass = exitCode === 101
|
|
133
|
+
? (hasCodexLocalRustIoPanicEvidence(parsed.outputText)
|
|
134
|
+
? "codex_local_rust_io_panic"
|
|
135
|
+
: "codex_local_rust_panic")
|
|
136
|
+
: "codex_local_crash";
|
|
137
|
+
if (exitCode === 101) {
|
|
138
|
+
effectiveChildDebugMetadata = withCodexPanicClass(effectiveChildDebugMetadata, synthesizedClass);
|
|
139
|
+
}
|
|
133
140
|
if (TRANSIENT_PANIC_CLASSES.has(synthesizedClass)) {
|
|
134
141
|
effectiveFailureClass = "transient";
|
|
135
142
|
logger.info({ stage_id: stageId, call_id: callId, synthesized_panic_class: synthesizedClass }, "reclassified failure as transient via output-text fallback");
|
|
136
|
-
// Synthesize into childDebugMetadata (readonly fields — create new object)
|
|
137
|
-
if (effectiveChildDebugMetadata != null) {
|
|
138
|
-
effectiveChildDebugMetadata = { ...effectiveChildDebugMetadata, codex_panic_class: synthesizedClass };
|
|
139
|
-
}
|
|
140
|
-
else {
|
|
141
|
-
effectiveChildDebugMetadata = { codex_panic_class: synthesizedClass };
|
|
142
|
-
}
|
|
143
143
|
}
|
|
144
144
|
}
|
|
145
145
|
}
|
|
@@ -158,14 +158,39 @@ export async function callClink(session, input, signal, context, timeoutMs) {
|
|
|
158
158
|
* Panic classes confirmed as transient (retryable). Only classes with strong
|
|
159
159
|
* evidence of being transport-layer failures belong here. `codex_local_crash`
|
|
160
160
|
* is deliberately excluded — a generic wrapper exit may indicate a permanent
|
|
161
|
-
* failure (OOM, config error, sandbox violation).
|
|
161
|
+
* failure (OOM, config error, sandbox violation). Generic Rust panics are
|
|
162
|
+
* excluded for the same reason unless stderr/output proves an I/O panic.
|
|
162
163
|
*/
|
|
163
164
|
const TRANSIENT_PANIC_CLASSES = new Set([
|
|
164
165
|
"stdout_would_block",
|
|
165
166
|
"stdout_broken_pipe",
|
|
166
167
|
"stdout_write_failure",
|
|
167
|
-
"
|
|
168
|
+
"stderr_would_block",
|
|
169
|
+
"stderr_broken_pipe",
|
|
170
|
+
"stderr_write_failure",
|
|
171
|
+
"codex_local_rust_io_panic",
|
|
168
172
|
]);
|
|
173
|
+
function hasCodexLocalRustIoPanicEvidence(text) {
|
|
174
|
+
const normalized = text
|
|
175
|
+
.replace(/\x1B\[[0-?]*[ -/]*[@-~]/g, "")
|
|
176
|
+
.toLowerCase();
|
|
177
|
+
if (!/\bstd(?:out|err)\b/.test(normalized))
|
|
178
|
+
return false;
|
|
179
|
+
if (/would block|resource temporarily unavailable|os error 35|\beagain\b/.test(normalized)) {
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
if (/broken pipe|os error 32|\bepipe\b/.test(normalized)) {
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
return (/\bwrite(?:ing)?\b[\s\S]{0,80}\b(?:error|fail(?:ed|ure))\b/.test(normalized) ||
|
|
186
|
+
/\b(?:error|fail(?:ed|ure))\b[\s\S]{0,80}\bwrite(?:ing)?\b/.test(normalized) ||
|
|
187
|
+
/\bfailed printing to std(?:out|err)\b/.test(normalized));
|
|
188
|
+
}
|
|
189
|
+
function withCodexPanicClass(meta, panicClass) {
|
|
190
|
+
return meta != null
|
|
191
|
+
? { ...meta, codex_panic_class: panicClass }
|
|
192
|
+
: { codex_panic_class: panicClass };
|
|
193
|
+
}
|
|
169
194
|
/**
|
|
170
195
|
* Classify a child failure as transient or permanent based on _debug metadata.
|
|
171
196
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clink-client.js","sourceRoot":"","sources":["../src/clink-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"clink-client.js","sourceRoot":"","sources":["../src/clink-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,14 @@
|
|
|
25
25
|
* Adapter config wins per runner.ts:168-171. Additionally, result_contract.enabled forces
|
|
26
26
|
* both idle timers to 0 (runner.ts:163-170).
|
|
27
27
|
*/
|
|
28
|
+
export declare const DEFAULT_RETAIN_FAILED_DAYS = 30;
|
|
29
|
+
export declare const DEFAULT_RETAIN_CANCELLED_DAYS = 30;
|
|
30
|
+
export declare const DEFAULT_RETAIN_DEBUG_DAYS = 7;
|
|
31
|
+
export interface RetentionConfig {
|
|
32
|
+
readonly retainFailedDays: number;
|
|
33
|
+
readonly retainCancelledDays: number;
|
|
34
|
+
readonly retainDebugDays: number;
|
|
35
|
+
}
|
|
28
36
|
/** Resolve workspace root: explicit env > process.cwd() with warning. */
|
|
29
37
|
export declare function resolveWorkspaceRoot(): string;
|
|
30
38
|
/** Whether workspace root was explicitly configured. */
|
|
@@ -73,6 +81,8 @@ export declare function getWorkflowTimeout(): number;
|
|
|
73
81
|
export declare function getMaxPromptBytes(): number;
|
|
74
82
|
/** Workflow server log level. */
|
|
75
83
|
export declare function getLogLevel(): string;
|
|
84
|
+
/** Age-based retention thresholds for persisted workflow run directories. */
|
|
85
|
+
export declare function getRetentionConfig(): RetentionConfig;
|
|
76
86
|
/** Persistent workflow state directory. */
|
|
77
87
|
export declare function getStateDir(): string;
|
|
78
88
|
/** Base directory containing persistent run state directories. */
|
|
@@ -41,6 +41,16 @@ function envInt(key, fallback) {
|
|
|
41
41
|
const n = Number(v);
|
|
42
42
|
return Number.isFinite(n) && n > 0 ? n : fallback;
|
|
43
43
|
}
|
|
44
|
+
function envNonNegativeInt(key, fallback) {
|
|
45
|
+
const v = process.env[key];
|
|
46
|
+
if (v == null || v === "")
|
|
47
|
+
return fallback;
|
|
48
|
+
const n = Number(v);
|
|
49
|
+
return Number.isSafeInteger(n) && n >= 0 ? n : fallback;
|
|
50
|
+
}
|
|
51
|
+
export const DEFAULT_RETAIN_FAILED_DAYS = 30;
|
|
52
|
+
export const DEFAULT_RETAIN_CANCELLED_DAYS = 30;
|
|
53
|
+
export const DEFAULT_RETAIN_DEBUG_DAYS = 7;
|
|
44
54
|
/** Resolve workspace root: explicit env > process.cwd() with warning. */
|
|
45
55
|
export function resolveWorkspaceRoot() {
|
|
46
56
|
const explicit = process.env["CLINKX_WORKFLOWS_WORKSPACE_ROOT"];
|
|
@@ -146,6 +156,14 @@ export function getMaxPromptBytes() {
|
|
|
146
156
|
export function getLogLevel() {
|
|
147
157
|
return envStr("CLINKX_WORKFLOWS_LOG_LEVEL", "info");
|
|
148
158
|
}
|
|
159
|
+
/** Age-based retention thresholds for persisted workflow run directories. */
|
|
160
|
+
export function getRetentionConfig() {
|
|
161
|
+
return {
|
|
162
|
+
retainFailedDays: envNonNegativeInt("CLINKX_WORKFLOWS_RETAIN_FAILED_DAYS", DEFAULT_RETAIN_FAILED_DAYS),
|
|
163
|
+
retainCancelledDays: envNonNegativeInt("CLINKX_WORKFLOWS_RETAIN_CANCELLED_DAYS", DEFAULT_RETAIN_CANCELLED_DAYS),
|
|
164
|
+
retainDebugDays: envNonNegativeInt("CLINKX_WORKFLOWS_RETAIN_DEBUG_DAYS", DEFAULT_RETAIN_DEBUG_DAYS),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
149
167
|
/** Persistent workflow state directory. */
|
|
150
168
|
export function getStateDir() {
|
|
151
169
|
const xdgState = process.env["XDG_STATE_HOME"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E,SAAS,MAAM,CAAC,GAAW,EAAE,QAAgB;IAC3C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC9C,CAAC;AAED,SAAS,MAAM,CAAC,GAAW,EAAE,QAAgB;IAC3C,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,QAAgB;IACtD,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC3C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAC7C,MAAM,CAAC,MAAM,6BAA6B,GAAG,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAQ3C,yEAAyE;AACzE,MAAM,UAAU,oBAAoB;IAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAChE,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,iDAAiD;IACjD,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,wBAAwB;IACtC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,aAAqB,EACrB,QAAgB,EAChB,YAAoB;IAEpB,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,+CAA+C;AAC/C,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,6BAA6B,EAAE,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,GAAW;IACzC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvD,OAAO,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC;AAED,qCAAqC;AACrC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,MAAM,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;AACvD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB;IAC9B,OAAO,sBAAsB,CAAC,MAAM,CAAC,iCAAiC,EAAE,YAAY,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,wBAAwB;IACtC,OAAO,MAAM,CAAC,2CAA2C,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,sBAAsB;IACpC,OAAO,MAAM,CAAC,yCAAyC,EAAE,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,sBAAsB;IACpC,OAAO,MAAM,CAAC,yCAAyC,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,kBAAkB;IAChC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,kCAAkC,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,CAAC,mCAAmC,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAED,iCAAiC;AACjC,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;AACtD,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,gBAAgB,EAAE,iBAAiB,CAAC,qCAAqC,EAAE,0BAA0B,CAAC;QACtG,mBAAmB,EAAE,iBAAiB,CAAC,wCAAwC,EAAE,6BAA6B,CAAC;QAC/G,eAAe,EAAE,iBAAiB,CAAC,oCAAoC,EAAE,yBAAyB,CAAC;KACpG,CAAC;AACJ,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,WAAW;IACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,EAAE;QACrD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,eAAe,CAAC;IACjD,OAAO,MAAM,CAAC,4BAA4B,EAAE,GAAG,WAAW,mBAAmB,CAAC,CAAC;AACjF,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC;AAED,8CAA8C;AAC9C,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;IAC/C,OAAO,MAAM,CAAC,gCAAgC,EAAE,GAAG,MAAM,6BAA6B,CAAC,CAAC;AAC1F,CAAC;AAED,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,iBAAiB,CAAU,CAAC;AAElE;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,uBAAuB;IACtC,gBAAgB,EAAE,2BAA2B;IAC7C,cAAc,EAAE,yBAAyB;IACzC,cAAc,EAAE,yBAAyB;IACzC,UAAU,EAAE,oBAAoB;IAChC,YAAY,EAAE,sBAAsB;IACpC,QAAQ,EAAE,kBAAkB;CACpB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;CACA,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,wBAAwB;IACxB,6BAA6B;IAC7B,qCAAqC;CAC7B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Council expander — runtime composition override.
|
|
3
|
+
*
|
|
4
|
+
* For the five council workflows, this module rewrites stages of a normalized
|
|
5
|
+
* workflow definition to match caller-supplied overrides:
|
|
6
|
+
* - `members`: rewrites stage 0 (members) and stage 1 (reviewers) to match
|
|
7
|
+
* the member count and cli_name mapping. Stances are applied to stage 0
|
|
8
|
+
* only; stage 1 preserves its default review lens.
|
|
9
|
+
* - `chairman`: overrides the cli_name on the single chairman call (stage 3).
|
|
10
|
+
*
|
|
11
|
+
* The expander operates on **normalized** (template-inlined) definitions and
|
|
12
|
+
* returns a NEW object — the input is never mutated.
|
|
13
|
+
*
|
|
14
|
+
* Tasks: 0-5, 1-1 … 1-8, 2-1 … 2-5
|
|
15
|
+
*/
|
|
16
|
+
import type { NormalizedWorkflowDefinition } from "./definition-normalizer.js";
|
|
17
|
+
export declare const COUNCIL_RUNTIME_MEMBER_WORKFLOWS: Set<string>;
|
|
18
|
+
export declare function supportsRuntimeMembers(workflowName: string): boolean;
|
|
19
|
+
/** All council workflows have exactly 4 stages: members, reviewers, ranking, chairman. */
|
|
20
|
+
export declare const COUNCIL_STAGE_COUNT = 4;
|
|
21
|
+
/**
|
|
22
|
+
* Expand council workflow stages to match caller-supplied composition overrides.
|
|
23
|
+
*
|
|
24
|
+
* - `members`: expand stages 0 (members) and 1 (reviewers) with matching count/cli_names.
|
|
25
|
+
* Stances are applied to stage 0 only.
|
|
26
|
+
* - `chairman`: override cli_name on stage 3's single chairman call.
|
|
27
|
+
*
|
|
28
|
+
* Returns a **new** `NormalizedWorkflowDefinition`; the input is never mutated.
|
|
29
|
+
*/
|
|
30
|
+
export declare function expandCouncilComposition(definition: NormalizedWorkflowDefinition, members: ReadonlyArray<{
|
|
31
|
+
cli_name: string;
|
|
32
|
+
stance?: string;
|
|
33
|
+
}> | undefined, workflowName: string, chairman?: string): NormalizedWorkflowDefinition;
|
|
34
|
+
/**
|
|
35
|
+
* @deprecated Use `expandCouncilComposition()` instead.
|
|
36
|
+
*
|
|
37
|
+
* Legacy wrapper that delegates to the new composition expander with
|
|
38
|
+
* members-only expansion (no chairman override).
|
|
39
|
+
*/
|
|
40
|
+
export declare function expandCouncilFirstStage(definition: NormalizedWorkflowDefinition, members: ReadonlyArray<{
|
|
41
|
+
cli_name: string;
|
|
42
|
+
stance?: string;
|
|
43
|
+
}>, workflowName: string): NormalizedWorkflowDefinition;
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Council expander — runtime composition override.
|
|
3
|
+
*
|
|
4
|
+
* For the five council workflows, this module rewrites stages of a normalized
|
|
5
|
+
* workflow definition to match caller-supplied overrides:
|
|
6
|
+
* - `members`: rewrites stage 0 (members) and stage 1 (reviewers) to match
|
|
7
|
+
* the member count and cli_name mapping. Stances are applied to stage 0
|
|
8
|
+
* only; stage 1 preserves its default review lens.
|
|
9
|
+
* - `chairman`: overrides the cli_name on the single chairman call (stage 3).
|
|
10
|
+
*
|
|
11
|
+
* The expander operates on **normalized** (template-inlined) definitions and
|
|
12
|
+
* returns a NEW object — the input is never mutated.
|
|
13
|
+
*
|
|
14
|
+
* Tasks: 0-5, 1-1 … 1-8, 2-1 … 2-5
|
|
15
|
+
*/
|
|
16
|
+
import { createHash } from "node:crypto";
|
|
17
|
+
import { McpError, ErrorCode } from "@modelcontextprotocol/sdk/types.js";
|
|
18
|
+
import { WorkflowError } from "./errors.js";
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// 0-5: Shared allowlist constant
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
export const COUNCIL_RUNTIME_MEMBER_WORKFLOWS = new Set([
|
|
23
|
+
"council-default",
|
|
24
|
+
"council-answer",
|
|
25
|
+
"council-code-review",
|
|
26
|
+
"council-debug",
|
|
27
|
+
"council-discover",
|
|
28
|
+
]);
|
|
29
|
+
export function supportsRuntimeMembers(workflowName) {
|
|
30
|
+
return COUNCIL_RUNTIME_MEMBER_WORKFLOWS.has(workflowName);
|
|
31
|
+
}
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// 1-3: Suffix alphabet (max 10 members)
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
const SUFFIXES = ["_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "_j"];
|
|
36
|
+
/** All council workflows have exactly 4 stages: members, reviewers, ranking, chairman. */
|
|
37
|
+
export const COUNCIL_STAGE_COUNT = 4;
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
// 2-1: expandStageCalls — reusable stage expansion helper
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
/**
|
|
42
|
+
* Expand a single stage's seed calls to match the member count and cli_name mapping.
|
|
43
|
+
*
|
|
44
|
+
* Validates seed invariants (3 calls, _a/_b/_c, structural homogeneity),
|
|
45
|
+
* generates N calls from the blueprint, and optionally applies stance mutations.
|
|
46
|
+
*
|
|
47
|
+
* NOTE: When `applyStances` is false (stage 1 / reviewers), seats beyond _c
|
|
48
|
+
* keep the raw template whose conditional bullets only match _a/_b/_c.
|
|
49
|
+
* This is a known v1 limitation — those seats still get full role instructions.
|
|
50
|
+
*/
|
|
51
|
+
function expandStageCalls(stage, members, workflowName, options) {
|
|
52
|
+
// Seed invariant: exactly 3 calls
|
|
53
|
+
if (stage.calls.length !== 3) {
|
|
54
|
+
throw new WorkflowError(`Council expander: stage "${stage.id}" must have exactly 3 seed calls, found ${stage.calls.length}`);
|
|
55
|
+
}
|
|
56
|
+
const [callA, callB, callC] = stage.calls;
|
|
57
|
+
// Extract prefix from first call ID
|
|
58
|
+
const idA = callA.id;
|
|
59
|
+
const underscoreIdx = idA.lastIndexOf("_");
|
|
60
|
+
if (underscoreIdx === -1) {
|
|
61
|
+
throw new WorkflowError(`Council expander: seed call ID "${idA}" does not contain underscore separator`);
|
|
62
|
+
}
|
|
63
|
+
const prefix = idA.slice(0, underscoreIdx);
|
|
64
|
+
// Assert IDs are prefix_a, prefix_b, prefix_c
|
|
65
|
+
const expectedSuffixes = ["_a", "_b", "_c"];
|
|
66
|
+
const actualIds = [callA.id, callB.id, callC.id];
|
|
67
|
+
const expectedIds = expectedSuffixes.map((s) => prefix + s);
|
|
68
|
+
for (let i = 0; i < 3; i++) {
|
|
69
|
+
if (actualIds[i] !== expectedIds[i]) {
|
|
70
|
+
throw new WorkflowError(`Council expander: seed call IDs must be ${expectedIds.join(", ")} but found ${actualIds.join(", ")}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Structural homogeneity — deep-compare omitting id and cli_name
|
|
74
|
+
const { id: _idA, cli_name: _cnA, ...blueprint } = callA;
|
|
75
|
+
const { id: _idB, cli_name: _cnB, ...restB } = callB;
|
|
76
|
+
const { id: _idC, cli_name: _cnC, ...restC } = callC;
|
|
77
|
+
const divergentB = findDivergentFields(blueprint, restB, "call B");
|
|
78
|
+
if (divergentB.length > 0) {
|
|
79
|
+
throw new WorkflowError(`Council expander: seed calls are not structurally homogeneous in stage "${stage.id}". ` +
|
|
80
|
+
`Call B (id=${callB.id}) diverges on fields: ${divergentB.join(", ")}`);
|
|
81
|
+
}
|
|
82
|
+
const divergentC = findDivergentFields(blueprint, restC, "call C");
|
|
83
|
+
if (divergentC.length > 0) {
|
|
84
|
+
throw new WorkflowError(`Council expander: seed calls are not structurally homogeneous in stage "${stage.id}". ` +
|
|
85
|
+
`Call C (id=${callC.id}) diverges on fields: ${divergentC.join(", ")}`);
|
|
86
|
+
}
|
|
87
|
+
// N-call generation
|
|
88
|
+
const expandedCalls = members.map((member, i) => {
|
|
89
|
+
const suffix = SUFFIXES[i];
|
|
90
|
+
const call = {
|
|
91
|
+
...blueprint,
|
|
92
|
+
id: prefix + suffix,
|
|
93
|
+
cli_name: member.cli_name,
|
|
94
|
+
};
|
|
95
|
+
return call;
|
|
96
|
+
});
|
|
97
|
+
// Stance replacement + hash recomputation (only when applyStances is true)
|
|
98
|
+
if (options.applyStances) {
|
|
99
|
+
for (let i = 0; i < expandedCalls.length; i++) {
|
|
100
|
+
const stance = members[i].stance;
|
|
101
|
+
if (stance == null)
|
|
102
|
+
continue;
|
|
103
|
+
const call = expandedCalls[i];
|
|
104
|
+
const mutated = applyStanceToPrompt(call.prompt, stance, call.id, workflowName);
|
|
105
|
+
call.prompt = mutated;
|
|
106
|
+
call.template_hash = recomputeHash(mutated);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// Return new stage (copy-on-write)
|
|
110
|
+
return {
|
|
111
|
+
id: stage.id,
|
|
112
|
+
...(stage.description != null ? { description: stage.description } : {}),
|
|
113
|
+
parallel: stage.parallel,
|
|
114
|
+
retry: stage.retry,
|
|
115
|
+
on_failure: stage.on_failure,
|
|
116
|
+
calls: expandedCalls,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
// 2-2: applyChairmanOverride — single-call cli_name swap
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
function applyChairmanOverride(stage, chairmanCliName) {
|
|
123
|
+
if (stage.calls.length !== 1) {
|
|
124
|
+
throw new WorkflowError(`Council expander: chairman stage "${stage.id}" must have exactly 1 call, found ${stage.calls.length}`);
|
|
125
|
+
}
|
|
126
|
+
const original = stage.calls[0];
|
|
127
|
+
const newCall = {
|
|
128
|
+
...original,
|
|
129
|
+
cli_name: chairmanCliName,
|
|
130
|
+
};
|
|
131
|
+
return {
|
|
132
|
+
id: stage.id,
|
|
133
|
+
...(stage.description != null ? { description: stage.description } : {}),
|
|
134
|
+
parallel: stage.parallel,
|
|
135
|
+
retry: stage.retry,
|
|
136
|
+
on_failure: stage.on_failure,
|
|
137
|
+
calls: [newCall],
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
// ---------------------------------------------------------------------------
|
|
141
|
+
// 2-3: expandCouncilComposition — orchestrates all stage overrides
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
/**
|
|
144
|
+
* Expand council workflow stages to match caller-supplied composition overrides.
|
|
145
|
+
*
|
|
146
|
+
* - `members`: expand stages 0 (members) and 1 (reviewers) with matching count/cli_names.
|
|
147
|
+
* Stances are applied to stage 0 only.
|
|
148
|
+
* - `chairman`: override cli_name on stage 3's single chairman call.
|
|
149
|
+
*
|
|
150
|
+
* Returns a **new** `NormalizedWorkflowDefinition`; the input is never mutated.
|
|
151
|
+
*/
|
|
152
|
+
export function expandCouncilComposition(definition, members, workflowName, chairman) {
|
|
153
|
+
const stages = definition.stages;
|
|
154
|
+
// Defense-in-depth: all council workflows have exactly 4 stages
|
|
155
|
+
if (stages.length !== COUNCIL_STAGE_COUNT) {
|
|
156
|
+
throw new WorkflowError(`Council expander: expected ${COUNCIL_STAGE_COUNT} stages, found ${stages.length}`);
|
|
157
|
+
}
|
|
158
|
+
// Bounds validation for members
|
|
159
|
+
if (members != null && (members.length < 1 || members.length > 10)) {
|
|
160
|
+
throw new McpError(ErrorCode.InvalidParams, `members array must have 1–10 entries, got ${members.length}`);
|
|
161
|
+
}
|
|
162
|
+
// Stage 0 (members) + Stage 1 (reviewers): expand or preserve
|
|
163
|
+
const stage0 = members != null
|
|
164
|
+
? expandStageCalls(stages[0], members, workflowName, { applyStances: true })
|
|
165
|
+
: stages[0];
|
|
166
|
+
const stage1 = members != null
|
|
167
|
+
? expandStageCalls(stages[1], members, workflowName, { applyStances: false })
|
|
168
|
+
: stages[1];
|
|
169
|
+
// Stage 2 (ranking): always preserved by reference
|
|
170
|
+
const stage2 = stages[2];
|
|
171
|
+
// Stage 3 (chairman): override or preserve
|
|
172
|
+
const stage3 = chairman != null
|
|
173
|
+
? applyChairmanOverride(stages[3], chairman)
|
|
174
|
+
: stages[3];
|
|
175
|
+
const result = {
|
|
176
|
+
name: definition.name,
|
|
177
|
+
description: definition.description,
|
|
178
|
+
version: definition.version,
|
|
179
|
+
stages: [stage0, stage1, stage2, stage3],
|
|
180
|
+
variables: definition.variables,
|
|
181
|
+
settings: definition.settings,
|
|
182
|
+
};
|
|
183
|
+
// Post-expansion assertions on expanded stages
|
|
184
|
+
if (members != null) {
|
|
185
|
+
assertExpandedStage(result.stages[0], members.length, "stage 0");
|
|
186
|
+
assertExpandedStage(result.stages[1], members.length, "stage 1");
|
|
187
|
+
}
|
|
188
|
+
return result;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Post-expansion assertions for an expanded stage: unique IDs, correct count,
|
|
192
|
+
* and required fields present.
|
|
193
|
+
*/
|
|
194
|
+
function assertExpandedStage(stage, expectedCount, label) {
|
|
195
|
+
const calls = stage.calls;
|
|
196
|
+
// All IDs unique
|
|
197
|
+
const idSet = new Set(calls.map((c) => c.id));
|
|
198
|
+
if (idSet.size !== calls.length) {
|
|
199
|
+
throw new WorkflowError(`Council expander: post-expansion duplicate IDs found in ${label}`);
|
|
200
|
+
}
|
|
201
|
+
// Call count matches expected
|
|
202
|
+
if (calls.length !== expectedCount) {
|
|
203
|
+
throw new WorkflowError(`Council expander: post-expansion call count ${calls.length} != expected ${expectedCount} in ${label}`);
|
|
204
|
+
}
|
|
205
|
+
// Every call has role and validator_schema_id
|
|
206
|
+
for (const c of calls) {
|
|
207
|
+
if (!("role" in c) || c.role == null) {
|
|
208
|
+
throw new WorkflowError(`Council expander: call "${c.id}" is missing required field "role" in ${label}`);
|
|
209
|
+
}
|
|
210
|
+
if (!("validator_schema_id" in c)) {
|
|
211
|
+
throw new WorkflowError(`Council expander: call "${c.id}" is missing field "validator_schema_id" in ${label}`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// ---------------------------------------------------------------------------
|
|
216
|
+
// 1-1: Legacy wrapper (deprecated — use expandCouncilComposition instead)
|
|
217
|
+
// ---------------------------------------------------------------------------
|
|
218
|
+
/**
|
|
219
|
+
* @deprecated Use `expandCouncilComposition()` instead.
|
|
220
|
+
*
|
|
221
|
+
* Legacy wrapper that delegates to the new composition expander with
|
|
222
|
+
* members-only expansion (no chairman override).
|
|
223
|
+
*/
|
|
224
|
+
export function expandCouncilFirstStage(definition, members, workflowName) {
|
|
225
|
+
return expandCouncilComposition(definition, members, workflowName);
|
|
226
|
+
}
|
|
227
|
+
// ---------------------------------------------------------------------------
|
|
228
|
+
// Internal helpers
|
|
229
|
+
// ---------------------------------------------------------------------------
|
|
230
|
+
/**
|
|
231
|
+
* Deep-compare two objects that represent NormalizedCall fields (minus id/cli_name).
|
|
232
|
+
* Returns an array of divergent field names.
|
|
233
|
+
*/
|
|
234
|
+
function findDivergentFields(a, b, _label) {
|
|
235
|
+
const divergent = [];
|
|
236
|
+
const allKeys = new Set([...Object.keys(a), ...Object.keys(b)]);
|
|
237
|
+
for (const key of allKeys) {
|
|
238
|
+
const valA = a[key];
|
|
239
|
+
const valB = b[key];
|
|
240
|
+
if (!deepEqual(valA, valB)) {
|
|
241
|
+
divergent.push(key);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return divergent;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Simple deep-equal for JSON-compatible values.
|
|
248
|
+
*/
|
|
249
|
+
function deepEqual(a, b) {
|
|
250
|
+
if (a === b)
|
|
251
|
+
return true;
|
|
252
|
+
if (a == null || b == null)
|
|
253
|
+
return a === b;
|
|
254
|
+
if (typeof a !== typeof b)
|
|
255
|
+
return false;
|
|
256
|
+
if (Array.isArray(a) && Array.isArray(b)) {
|
|
257
|
+
if (a.length !== b.length)
|
|
258
|
+
return false;
|
|
259
|
+
return a.every((v, i) => deepEqual(v, b[i]));
|
|
260
|
+
}
|
|
261
|
+
if (typeof a === "object" && typeof b === "object") {
|
|
262
|
+
const aObj = a;
|
|
263
|
+
const bObj = b;
|
|
264
|
+
const keys = Object.keys(aObj);
|
|
265
|
+
if (keys.length !== Object.keys(bObj).length)
|
|
266
|
+
return false;
|
|
267
|
+
return keys.every((k) => deepEqual(aObj[k], bObj[k]));
|
|
268
|
+
}
|
|
269
|
+
return false;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Apply header-bounded stance replacement to a prompt.
|
|
273
|
+
*
|
|
274
|
+
* Finds `## Working Stance` (or `## Review Lens` for code-review), validates
|
|
275
|
+
* structural invariants, then replaces the section body with the stance directive.
|
|
276
|
+
*/
|
|
277
|
+
function applyStanceToPrompt(prompt, stance, callId, workflowName) {
|
|
278
|
+
const lines = prompt.split("\n");
|
|
279
|
+
// Determine which header to look for
|
|
280
|
+
const isCodeReview = workflowName === "council-code-review";
|
|
281
|
+
const targetHeader = isCodeReview ? "## Review Lens" : "## Working Stance";
|
|
282
|
+
// Find all occurrences of the target header
|
|
283
|
+
const headerIndices = [];
|
|
284
|
+
for (let i = 0; i < lines.length; i++) {
|
|
285
|
+
if (lines[i].trimStart().startsWith(targetHeader)) {
|
|
286
|
+
headerIndices.push(i);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// Pre-rewrite validation: exactly one header
|
|
290
|
+
if (headerIndices.length === 0) {
|
|
291
|
+
throw new WorkflowError(`Council expander: pre-rewrite validation failed — no "${targetHeader}" section header found in prompt for call "${callId}"`);
|
|
292
|
+
}
|
|
293
|
+
if (headerIndices.length > 1) {
|
|
294
|
+
throw new WorkflowError(`Council expander: pre-rewrite validation failed — ${headerIndices.length} "${targetHeader}" section headers found (exactly one required) in prompt for call "${callId}"`);
|
|
295
|
+
}
|
|
296
|
+
const headerLineIdx = headerIndices[0];
|
|
297
|
+
// Find the next ## header after the target header (or EOF)
|
|
298
|
+
let sectionEndIdx = lines.length; // exclusive
|
|
299
|
+
for (let i = headerLineIdx + 1; i < lines.length; i++) {
|
|
300
|
+
if (lines[i].trimStart().startsWith("## ")) {
|
|
301
|
+
sectionEndIdx = i;
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// Section body: lines[headerLineIdx+1 .. sectionEndIdx-1]
|
|
306
|
+
const bodyLines = lines.slice(headerLineIdx + 1, sectionEndIdx);
|
|
307
|
+
const bodyText = bodyLines.join("\n");
|
|
308
|
+
// Pre-rewrite validation: {{call.id}} inside the section body
|
|
309
|
+
if (!bodyText.includes("{{call.id}}")) {
|
|
310
|
+
throw new WorkflowError(`Council expander: pre-rewrite validation failed — {{call.id}} not found inside "${targetHeader}" section body for call "${callId}"`);
|
|
311
|
+
}
|
|
312
|
+
// Pre-rewrite validation: at least one _a/_b/_c conditional bullet
|
|
313
|
+
const hasConditionalBullet = /ends in _[abc]:/.test(bodyText);
|
|
314
|
+
if (!hasConditionalBullet) {
|
|
315
|
+
throw new WorkflowError(`Council expander: pre-rewrite validation failed — no _a/_b/_c conditional bullet found in "${targetHeader}" section body for call "${callId}"`);
|
|
316
|
+
}
|
|
317
|
+
// Replacement: preserve header, replace body
|
|
318
|
+
const newBody = `{{call.id}}\n- Optimize your analysis for: ${stance}.`;
|
|
319
|
+
// Reconstruct prompt
|
|
320
|
+
const before = lines.slice(0, headerLineIdx + 1); // includes header line
|
|
321
|
+
const after = lines.slice(sectionEndIdx);
|
|
322
|
+
return [...before, newBody, ...after].join("\n");
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Recompute SHA-256 template hash after prompt mutation.
|
|
326
|
+
*/
|
|
327
|
+
function recomputeHash(prompt) {
|
|
328
|
+
return createHash("sha256").update(prompt, "utf8").digest("hex");
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=council-expander.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"council-expander.js","sourceRoot":"","sources":["../src/council-expander.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,21 @@
|
|
|
10
10
|
* Also serves as the library entry point — re-exports the public API
|
|
11
11
|
* for in-process integration (Option C).
|
|
12
12
|
*/
|
|
13
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
14
|
+
import { Writable } from "node:stream";
|
|
13
15
|
export type { ClinkBackend, ToolCallResult } from "./backend.js";
|
|
14
16
|
export { registerWorkflowTools, getWorkflowToolDefinitions, handleWorkflowToolCall, WORKFLOW_TOOL_NAMES, } from "./workflow-tools.js";
|
|
15
17
|
export type { WorkflowToolsOptions, WorkflowToolDefinition, } from "./workflow-tools.js";
|
|
16
18
|
export { createWorkflowServer } from "./server.js";
|
|
19
|
+
type CloseableServer = {
|
|
20
|
+
close(): Promise<void>;
|
|
21
|
+
};
|
|
22
|
+
type ExitFunction = (code: number) => never | void;
|
|
23
|
+
type ShutdownOnce = (reason: string, exitCode: number) => Promise<void>;
|
|
24
|
+
interface ShutdownOptions {
|
|
25
|
+
readonly cleanup?: ((reason: string) => Promise<void>) | undefined;
|
|
26
|
+
readonly exit?: ExitFunction | undefined;
|
|
27
|
+
}
|
|
28
|
+
export declare function patchTransportSend(transport: StdioServerTransport, stdout?: Writable, onBrokenStdout?: () => void): void;
|
|
29
|
+
export declare function createShutdownOnce(server: CloseableServer, options?: ShutdownOptions): ShutdownOnce;
|
|
30
|
+
export declare function installShutdownHandlers(shutdownOnce: ShutdownOnce, targetProcess?: NodeJS.Process): void;
|