clinkx 0.1.10 → 0.2.1
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/artifacts.d.ts +65 -0
- package/clinkx-workflows/dist/artifacts.js +268 -0
- package/clinkx-workflows/dist/artifacts.js.map +1 -0
- package/clinkx-workflows/dist/backend.d.ts +33 -0
- package/clinkx-workflows/dist/backend.js +9 -0
- package/clinkx-workflows/dist/backend.js.map +1 -0
- package/clinkx-workflows/dist/child-env.d.ts +23 -0
- package/clinkx-workflows/dist/child-env.js +53 -0
- package/clinkx-workflows/dist/child-env.js.map +1 -0
- package/clinkx-workflows/dist/clink-client.d.ts +51 -0
- package/clinkx-workflows/dist/clink-client.js +216 -0
- package/clinkx-workflows/dist/clink-client.js.map +1 -0
- package/clinkx-workflows/dist/config.d.ts +126 -0
- package/clinkx-workflows/dist/config.js +226 -0
- package/clinkx-workflows/dist/config.js.map +1 -0
- package/clinkx-workflows/dist/definition-normalizer.d.ts +59 -0
- package/clinkx-workflows/dist/definition-normalizer.js +75 -0
- package/clinkx-workflows/dist/definition-normalizer.js.map +1 -0
- package/clinkx-workflows/dist/engine.d.ts +235 -0
- package/clinkx-workflows/dist/engine.js +1044 -0
- package/clinkx-workflows/dist/engine.js.map +1 -0
- package/clinkx-workflows/dist/errors.d.ts +74 -0
- package/clinkx-workflows/dist/errors.js +84 -0
- package/clinkx-workflows/dist/errors.js.map +1 -0
- package/clinkx-workflows/dist/fidelity.d.ts +112 -0
- package/clinkx-workflows/dist/fidelity.js +140 -0
- package/clinkx-workflows/dist/fidelity.js.map +1 -0
- package/clinkx-workflows/dist/fingerprint.d.ts +69 -0
- package/clinkx-workflows/dist/fingerprint.js +143 -0
- package/clinkx-workflows/dist/fingerprint.js.map +1 -0
- package/clinkx-workflows/dist/index.d.ts +16 -0
- package/clinkx-workflows/dist/index.js +42 -0
- package/clinkx-workflows/dist/index.js.map +1 -0
- package/clinkx-workflows/dist/loader.d.ts +64 -0
- package/clinkx-workflows/dist/loader.js +371 -0
- package/clinkx-workflows/dist/loader.js.map +1 -0
- package/clinkx-workflows/dist/logger.d.ts +16 -0
- package/clinkx-workflows/dist/logger.js +31 -0
- package/clinkx-workflows/dist/logger.js.map +1 -0
- package/clinkx-workflows/dist/path-validation.d.ts +23 -0
- package/clinkx-workflows/dist/path-validation.js +73 -0
- package/clinkx-workflows/dist/path-validation.js.map +1 -0
- package/clinkx-workflows/dist/prompt-budget.d.ts +31 -0
- package/clinkx-workflows/dist/prompt-budget.js +78 -0
- package/clinkx-workflows/dist/prompt-budget.js.map +1 -0
- package/clinkx-workflows/dist/queue.d.ts +16 -0
- package/clinkx-workflows/dist/queue.js +46 -0
- package/clinkx-workflows/dist/queue.js.map +1 -0
- package/clinkx-workflows/dist/ranking-reducer.d.ts +11 -0
- package/clinkx-workflows/dist/ranking-reducer.js +245 -0
- package/clinkx-workflows/dist/ranking-reducer.js.map +1 -0
- package/clinkx-workflows/dist/reducers/index.d.ts +8 -0
- package/clinkx-workflows/dist/reducers/index.js +12 -0
- package/clinkx-workflows/dist/reducers/index.js.map +1 -0
- package/clinkx-workflows/dist/run-id.d.ts +17 -0
- package/clinkx-workflows/dist/run-id.js +26 -0
- package/clinkx-workflows/dist/run-id.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/cards/council-answer.d.ts +8 -0
- package/clinkx-workflows/dist/run-summary/cards/council-answer.js +75 -0
- package/clinkx-workflows/dist/run-summary/cards/council-answer.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/cards/council-code-review.d.ts +13 -0
- package/clinkx-workflows/dist/run-summary/cards/council-code-review.js +90 -0
- package/clinkx-workflows/dist/run-summary/cards/council-code-review.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/cards/council-debug.d.ts +9 -0
- package/clinkx-workflows/dist/run-summary/cards/council-debug.js +79 -0
- package/clinkx-workflows/dist/run-summary/cards/council-debug.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/cards/council-default.d.ts +11 -0
- package/clinkx-workflows/dist/run-summary/cards/council-default.js +57 -0
- package/clinkx-workflows/dist/run-summary/cards/council-default.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/cards/council-discover.d.ts +10 -0
- package/clinkx-workflows/dist/run-summary/cards/council-discover.js +79 -0
- package/clinkx-workflows/dist/run-summary/cards/council-discover.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/cards/generic.d.ts +2 -0
- package/clinkx-workflows/dist/run-summary/cards/generic.js +4 -0
- package/clinkx-workflows/dist/run-summary/cards/generic.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/cards/index.d.ts +6 -0
- package/clinkx-workflows/dist/run-summary/cards/index.js +17 -0
- package/clinkx-workflows/dist/run-summary/cards/index.js.map +1 -0
- package/clinkx-workflows/dist/run-summary/utils.d.ts +6 -0
- package/clinkx-workflows/dist/run-summary/utils.js +30 -0
- package/clinkx-workflows/dist/run-summary/utils.js.map +1 -0
- package/clinkx-workflows/dist/run-summary-derived.d.ts +19 -0
- package/clinkx-workflows/dist/run-summary-derived.js +100 -0
- package/clinkx-workflows/dist/run-summary-derived.js.map +1 -0
- package/clinkx-workflows/dist/run-summary.d.ts +70 -0
- package/clinkx-workflows/dist/run-summary.js +125 -0
- package/clinkx-workflows/dist/run-summary.js.map +1 -0
- package/clinkx-workflows/dist/schema.d.ts +609 -0
- package/clinkx-workflows/dist/schema.js +123 -0
- package/clinkx-workflows/dist/schema.js.map +1 -0
- package/clinkx-workflows/dist/server.d.ts +16 -0
- package/clinkx-workflows/dist/server.js +33 -0
- package/clinkx-workflows/dist/server.js.map +1 -0
- package/clinkx-workflows/dist/shutdown.d.ts +54 -0
- package/clinkx-workflows/dist/shutdown.js +120 -0
- package/clinkx-workflows/dist/shutdown.js.map +1 -0
- package/clinkx-workflows/dist/state-schema.d.ts +141 -0
- package/clinkx-workflows/dist/state-schema.js +21 -0
- package/clinkx-workflows/dist/state-schema.js.map +1 -0
- package/clinkx-workflows/dist/state.d.ts +37 -0
- package/clinkx-workflows/dist/state.js +838 -0
- package/clinkx-workflows/dist/state.js.map +1 -0
- package/clinkx-workflows/dist/template-loader.d.ts +30 -0
- package/clinkx-workflows/dist/template-loader.js +77 -0
- package/clinkx-workflows/dist/template-loader.js.map +1 -0
- package/clinkx-workflows/dist/template.d.ts +54 -0
- package/clinkx-workflows/dist/template.js +128 -0
- package/clinkx-workflows/dist/template.js.map +1 -0
- package/clinkx-workflows/dist/transport.d.ts +91 -0
- package/clinkx-workflows/dist/transport.js +249 -0
- package/clinkx-workflows/dist/transport.js.map +1 -0
- package/clinkx-workflows/dist/types.d.ts +137 -0
- package/clinkx-workflows/dist/types.js +11 -0
- package/clinkx-workflows/dist/types.js.map +1 -0
- package/clinkx-workflows/dist/validators/council.d.ts +1488 -0
- package/clinkx-workflows/dist/validators/council.js +509 -0
- package/clinkx-workflows/dist/validators/council.js.map +1 -0
- package/clinkx-workflows/dist/validators/index.d.ts +40 -0
- package/clinkx-workflows/dist/validators/index.js +43 -0
- package/clinkx-workflows/dist/validators/index.js.map +1 -0
- package/clinkx-workflows/dist/workflow-receipt.d.ts +4 -0
- package/clinkx-workflows/dist/workflow-receipt.js +177 -0
- package/clinkx-workflows/dist/workflow-receipt.js.map +1 -0
- package/clinkx-workflows/dist/workflow-tools.d.ts +77 -0
- package/clinkx-workflows/dist/workflow-tools.js +1131 -0
- package/clinkx-workflows/dist/workflow-tools.js.map +1 -0
- package/clinkx-workflows/dist/workflows/council-default.d.ts +123 -0
- package/clinkx-workflows/dist/workflows/council-default.js +141 -0
- package/clinkx-workflows/dist/workflows/council-default.js.map +1 -0
- package/clinkx-workflows/dist/workflows/index.d.ts +12 -0
- package/clinkx-workflows/dist/workflows/index.js +15 -0
- package/clinkx-workflows/dist/workflows/index.js.map +1 -0
- package/conf/adapters/claude.json +13 -1
- package/conf/adapters/codex.json +11 -2
- package/conf/adapters/gemini.json +9 -0
- package/conf/adapters/glm.json +10 -0
- package/conf/adapters/hapi/claude.json +12 -2
- package/conf/adapters/hapi/codex.json +11 -2
- package/conf/adapters/hapi/gemini.json +9 -0
- package/conf/adapters/hapi/glm.json +10 -0
- package/conf/prompts/json-codereviewer.txt +6 -0
- package/conf/prompts/json-debug.txt +5 -0
- package/conf/prompts/json-default.txt +5 -0
- package/conf/prompts/json.txt +4 -1
- package/dist/config.d.ts +29 -4
- package/dist/config.js +23 -3
- package/dist/config.js.map +1 -1
- package/dist/handler.d.ts +2 -0
- package/dist/handler.js +2 -1
- package/dist/handler.js.map +1 -1
- package/dist/local-clink-backend.d.ts +30 -0
- package/dist/local-clink-backend.js +106 -0
- package/dist/local-clink-backend.js.map +1 -0
- package/dist/parsers/claude-stream-json.d.ts +1 -1
- package/dist/parsers/claude-stream-json.js +26 -8
- package/dist/parsers/claude-stream-json.js.map +1 -1
- package/dist/parsers/extract.d.ts +2 -0
- package/dist/parsers/extract.js +46 -20
- package/dist/parsers/extract.js.map +1 -1
- package/dist/pipeline.d.ts +2 -4
- package/dist/pipeline.js +246 -31
- package/dist/pipeline.js.map +1 -1
- package/dist/prompt.js +8 -1
- package/dist/prompt.js.map +1 -1
- package/dist/registry.d.ts +4 -0
- package/dist/registry.js +14 -0
- package/dist/registry.js.map +1 -1
- package/dist/result-contract.d.ts +6 -1
- package/dist/result-contract.js +10 -22
- package/dist/result-contract.js.map +1 -1
- package/dist/runner.js +59 -12
- package/dist/runner.js.map +1 -1
- package/dist/schema.d.ts +20 -0
- package/dist/schema.js +29 -2
- package/dist/schema.js.map +1 -1
- package/dist/server.d.ts +3 -3
- package/dist/server.js +119 -45
- package/dist/server.js.map +1 -1
- package/package.json +12 -5
|
@@ -10,4 +10,9 @@
|
|
|
10
10
|
* - The file doesn't exist
|
|
11
11
|
* - The file fails safety checks
|
|
12
12
|
*/
|
|
13
|
-
export
|
|
13
|
+
export type ResultContractStatus = "ok" | "missing" | "disabled" | "empty" | "oversize" | "read_error" | "not_allowed" | "symlink" | "not_file" | "path_escape" | "realpath_failed";
|
|
14
|
+
export interface ResultContractOutcome {
|
|
15
|
+
content: string | null;
|
|
16
|
+
status: ResultContractStatus;
|
|
17
|
+
}
|
|
18
|
+
export declare function readResultFile(runDir: string, filename: string): ResultContractOutcome;
|
package/dist/result-contract.js
CHANGED
|
@@ -3,22 +3,10 @@ import * as path from "node:path";
|
|
|
3
3
|
import { logger } from "./logger.js";
|
|
4
4
|
/** Filenames we're willing to read from a run directory. */
|
|
5
5
|
const ALLOWED_RESULT_FILES = new Set(["RESULT.md", "RESULT.json"]);
|
|
6
|
-
/**
|
|
7
|
-
* Safely read a result contract file from a run working directory.
|
|
8
|
-
*
|
|
9
|
-
* Safety rules:
|
|
10
|
-
* 1. Only allowlisted filenames (RESULT.md, RESULT.json)
|
|
11
|
-
* 2. lstat must show a regular file (not a symlink)
|
|
12
|
-
* 3. realpath must resolve within the run directory
|
|
13
|
-
*
|
|
14
|
-
* Returns file contents as a string, or null if:
|
|
15
|
-
* - The file doesn't exist
|
|
16
|
-
* - The file fails safety checks
|
|
17
|
-
*/
|
|
18
6
|
export function readResultFile(runDir, filename) {
|
|
19
7
|
if (!ALLOWED_RESULT_FILES.has(filename)) {
|
|
20
8
|
logger.warn({ filename }, "result contract: filename not in allowlist");
|
|
21
|
-
return null;
|
|
9
|
+
return { content: null, status: "not_allowed" };
|
|
22
10
|
}
|
|
23
11
|
const filePath = path.join(runDir, filename);
|
|
24
12
|
let resolvedRunDir;
|
|
@@ -35,23 +23,23 @@ export function readResultFile(runDir, filename) {
|
|
|
35
23
|
}
|
|
36
24
|
catch {
|
|
37
25
|
// File doesn't exist — normal case
|
|
38
|
-
return null;
|
|
26
|
+
return { content: null, status: "missing" };
|
|
39
27
|
}
|
|
40
28
|
// Reject symlinks
|
|
41
29
|
if (stat.isSymbolicLink()) {
|
|
42
30
|
logger.warn({ filePath }, "result contract: rejecting symlink");
|
|
43
|
-
return null;
|
|
31
|
+
return { content: null, status: "symlink" };
|
|
44
32
|
}
|
|
45
33
|
// Must be a regular file
|
|
46
34
|
if (!stat.isFile()) {
|
|
47
35
|
logger.warn({ filePath }, "result contract: not a regular file");
|
|
48
|
-
return null;
|
|
36
|
+
return { content: null, status: "not_file" };
|
|
49
37
|
}
|
|
50
38
|
// Enforce size limit to prevent memory pressure from oversized result files
|
|
51
39
|
const MAX_RESULT_SIZE = 1_048_576; // 1 MB
|
|
52
40
|
if (stat.size > MAX_RESULT_SIZE) {
|
|
53
41
|
logger.warn({ filePath, size: stat.size, max: MAX_RESULT_SIZE }, "result contract: file exceeds size limit");
|
|
54
|
-
return null;
|
|
42
|
+
return { content: null, status: "oversize" };
|
|
55
43
|
}
|
|
56
44
|
// Realpath must resolve within run dir
|
|
57
45
|
let realFilePath;
|
|
@@ -60,26 +48,26 @@ export function readResultFile(runDir, filename) {
|
|
|
60
48
|
}
|
|
61
49
|
catch {
|
|
62
50
|
logger.warn({ filePath }, "result contract: failed to resolve realpath");
|
|
63
|
-
return null;
|
|
51
|
+
return { content: null, status: "realpath_failed" };
|
|
64
52
|
}
|
|
65
53
|
const normalizedRunDir = resolvedRunDir.endsWith(path.sep)
|
|
66
54
|
? resolvedRunDir
|
|
67
55
|
: resolvedRunDir + path.sep;
|
|
68
56
|
if (!realFilePath.startsWith(normalizedRunDir) && realFilePath !== resolvedRunDir) {
|
|
69
57
|
logger.warn({ realFilePath, runDir: resolvedRunDir }, "result contract: realpath escapes run directory");
|
|
70
|
-
return null;
|
|
58
|
+
return { content: null, status: "path_escape" };
|
|
71
59
|
}
|
|
72
60
|
try {
|
|
73
61
|
const content = fs.readFileSync(filePath, "utf-8");
|
|
74
62
|
if (content.trim().length === 0) {
|
|
75
63
|
logger.warn({ filePath }, "result contract: file is empty");
|
|
76
|
-
return null;
|
|
64
|
+
return { content: null, status: "empty" };
|
|
77
65
|
}
|
|
78
|
-
return content;
|
|
66
|
+
return { content, status: "ok" };
|
|
79
67
|
}
|
|
80
68
|
catch (err) {
|
|
81
69
|
logger.warn({ filePath, err }, "result contract: failed to read file");
|
|
82
|
-
return null;
|
|
70
|
+
return { content: null, status: "read_error" };
|
|
83
71
|
}
|
|
84
72
|
}
|
|
85
73
|
//# sourceMappingURL=result-contract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"result-contract.js","sourceRoot":"","sources":["../src/result-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,4DAA4D;AAC5D,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"result-contract.js","sourceRoot":"","sources":["../src/result-contract.ts"],"names":[],"mappings":"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"}
|
package/dist/runner.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { openSync, closeSync, readSync, statSync } from "node:fs";
|
|
2
3
|
import { join } from "node:path";
|
|
3
4
|
import { logger } from "./logger.js";
|
|
4
5
|
import { ExecutionError } from "./errors.js";
|
|
@@ -15,9 +16,8 @@ export function killAllActive() {
|
|
|
15
16
|
}
|
|
16
17
|
const DEFAULT_MAX_PROMPT_BYTES = 1_048_576; // 1 MB
|
|
17
18
|
const DEFAULT_TIMEOUT_SECONDS = 600;
|
|
18
|
-
const
|
|
19
|
+
const DEFAULT_MAX_CAPTURE_BYTES = 2_097_152; // 2 MB default capture retention
|
|
19
20
|
const GRACE_PERIOD_MS = 5_000;
|
|
20
|
-
const HEAD_TAIL_BYTES = 50_000; // 50 KB per head/tail segment
|
|
21
21
|
const DEFAULT_IDLE_TIMEOUT_SECONDS = 0;
|
|
22
22
|
const DEFAULT_IDLE_TIMEOUT_STARTUP_SECONDS = 180;
|
|
23
23
|
function safeParseInt(val, fallback) {
|
|
@@ -33,8 +33,14 @@ function safeParseIntNonNeg(val, fallback) {
|
|
|
33
33
|
return Number.isFinite(n) && n >= 0 ? n : fallback;
|
|
34
34
|
}
|
|
35
35
|
function createStreamCapture(maxBytes) {
|
|
36
|
-
|
|
37
|
-
const
|
|
36
|
+
// Preserve small-budget behavior while avoiding zero-byte buffers for tiny values.
|
|
37
|
+
const normalizedMaxBytes = Math.max(2, maxBytes);
|
|
38
|
+
const headSize = normalizedMaxBytes <= 2_048
|
|
39
|
+
? Math.floor(normalizedMaxBytes / 2)
|
|
40
|
+
: Math.max(1024, Math.floor(normalizedMaxBytes / 2));
|
|
41
|
+
const tailSize = normalizedMaxBytes <= 2_048
|
|
42
|
+
? normalizedMaxBytes - headSize
|
|
43
|
+
: Math.max(1024, normalizedMaxBytes - headSize);
|
|
38
44
|
const capture = {
|
|
39
45
|
head: Buffer.alloc(0),
|
|
40
46
|
tail: Buffer.alloc(0),
|
|
@@ -109,18 +115,18 @@ export function runSubprocess(options) {
|
|
|
109
115
|
adapter.timeout_seconds ??
|
|
110
116
|
safeParseInt(process.env["CLINKX_TIMEOUT_SECONDS"], DEFAULT_TIMEOUT_SECONDS);
|
|
111
117
|
// Idle timeout resolution: RunOptions > adapter config > env var > default
|
|
112
|
-
//
|
|
113
|
-
const
|
|
114
|
-
const idleTimeoutSeconds =
|
|
118
|
+
// Suppress-stdout guard: when stdout is suppressed, CLI produces no stdout — disable idle
|
|
119
|
+
const suppressesStdout = adapter.suppress_stdout === true;
|
|
120
|
+
const idleTimeoutSeconds = suppressesStdout ? 0 :
|
|
115
121
|
(options.idleTimeoutSeconds ??
|
|
116
122
|
adapter.idle_timeout_seconds ??
|
|
117
123
|
safeParseIntNonNeg(process.env["CLINKX_IDLE_TIMEOUT_SECONDS"], DEFAULT_IDLE_TIMEOUT_SECONDS));
|
|
118
|
-
const idleStartupSeconds =
|
|
124
|
+
const idleStartupSeconds = suppressesStdout ? 0 :
|
|
119
125
|
(options.idleTimeoutStartupSeconds ??
|
|
120
126
|
adapter.idle_timeout_startup_seconds ??
|
|
121
127
|
safeParseIntNonNeg(process.env["CLINKX_IDLE_TIMEOUT_STARTUP_SECONDS"], DEFAULT_IDLE_TIMEOUT_STARTUP_SECONDS));
|
|
122
128
|
const maxPromptBytes = safeParseInt(process.env["CLINKX_MAX_PROMPT_BYTES"], DEFAULT_MAX_PROMPT_BYTES);
|
|
123
|
-
const
|
|
129
|
+
const maxCaptureBytes = safeParseInt(process.env["CLINKX_MAX_CAPTURE_BYTES"] ?? process.env["CLINKX_MAX_OUTPUT_BYTES"], DEFAULT_MAX_CAPTURE_BYTES);
|
|
124
130
|
// Bound input size
|
|
125
131
|
const promptBuf = Buffer.from(prompt, "utf-8");
|
|
126
132
|
if (promptBuf.length > maxPromptBytes) {
|
|
@@ -164,6 +170,13 @@ export function runSubprocess(options) {
|
|
|
164
170
|
let timeoutHandle;
|
|
165
171
|
let graceHandle;
|
|
166
172
|
let idleHandle;
|
|
173
|
+
let stderrFd;
|
|
174
|
+
const stderrFilePath = adapter.stderr_to_file
|
|
175
|
+
? join(runDirPath, "stderr.log")
|
|
176
|
+
: undefined;
|
|
177
|
+
if (stderrFilePath != null) {
|
|
178
|
+
stderrFd = openSync(stderrFilePath, "w");
|
|
179
|
+
}
|
|
167
180
|
let child;
|
|
168
181
|
try {
|
|
169
182
|
child = spawn(adapter.command, args, {
|
|
@@ -173,16 +186,22 @@ export function runSubprocess(options) {
|
|
|
173
186
|
stdio: [
|
|
174
187
|
delivery.useStdin ? "pipe" : "ignore",
|
|
175
188
|
adapter.suppress_stdout ? "ignore" : "pipe",
|
|
176
|
-
"pipe",
|
|
189
|
+
stderrFd != null ? stderrFd : "pipe",
|
|
177
190
|
],
|
|
178
191
|
detached: true, // New process group for clean kill
|
|
179
192
|
});
|
|
180
193
|
}
|
|
181
194
|
catch (err) {
|
|
195
|
+
if (stderrFd != null)
|
|
196
|
+
closeSync(stderrFd);
|
|
182
197
|
const msg = err instanceof Error ? err.message : String(err);
|
|
183
198
|
reject(new ExecutionError(`Failed to spawn "${adapter.command}": ${msg}`));
|
|
184
199
|
return;
|
|
185
200
|
}
|
|
201
|
+
if (stderrFd != null) {
|
|
202
|
+
closeSync(stderrFd);
|
|
203
|
+
stderrFd = undefined;
|
|
204
|
+
}
|
|
186
205
|
activeProcesses.add(child);
|
|
187
206
|
// Shared kill guard — prevents double-SIGTERM races across wall/idle/cancel paths
|
|
188
207
|
function initiateKill(reason) {
|
|
@@ -227,8 +246,8 @@ export function runSubprocess(options) {
|
|
|
227
246
|
}
|
|
228
247
|
const stdoutCapture = adapter.suppress_stdout
|
|
229
248
|
? { capture: { head: Buffer.alloc(0), tail: Buffer.alloc(0), totalBytes: 0, truncated: false }, onData(_chunk) { } }
|
|
230
|
-
: createStreamCapture(
|
|
231
|
-
const stderrCapture = createStreamCapture(
|
|
249
|
+
: createStreamCapture(maxCaptureBytes);
|
|
250
|
+
const stderrCapture = createStreamCapture(maxCaptureBytes);
|
|
232
251
|
child.stdout?.on("data", (chunk) => {
|
|
233
252
|
if (chunk.length === 0)
|
|
234
253
|
return;
|
|
@@ -286,6 +305,34 @@ export function runSubprocess(options) {
|
|
|
286
305
|
clearTimeout(graceHandle);
|
|
287
306
|
signal?.removeEventListener("abort", onAbort);
|
|
288
307
|
activeProcesses.delete(child);
|
|
308
|
+
// Post-mortem stderr hydration from file-backed capture
|
|
309
|
+
if (stderrFilePath != null) {
|
|
310
|
+
try {
|
|
311
|
+
const st = statSync(stderrFilePath, { throwIfNoEntry: false });
|
|
312
|
+
if (st != null && st.size > 0) {
|
|
313
|
+
const fd = openSync(stderrFilePath, "r");
|
|
314
|
+
try {
|
|
315
|
+
const CHUNK = 65_536;
|
|
316
|
+
const buf = Buffer.alloc(Math.min(CHUNK, st.size));
|
|
317
|
+
let pos = 0;
|
|
318
|
+
let n;
|
|
319
|
+
do {
|
|
320
|
+
n = readSync(fd, buf, 0, buf.length, pos);
|
|
321
|
+
if (n > 0) {
|
|
322
|
+
stderrCapture.onData(buf.subarray(0, n));
|
|
323
|
+
pos += n;
|
|
324
|
+
}
|
|
325
|
+
} while (n > 0);
|
|
326
|
+
}
|
|
327
|
+
finally {
|
|
328
|
+
closeSync(fd);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
// Best-effort: file may not exist if process was killed immediately
|
|
334
|
+
}
|
|
335
|
+
}
|
|
289
336
|
resolve({
|
|
290
337
|
exitCode: code,
|
|
291
338
|
signal: exitSignal ?? null,
|
package/dist/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.d.ts
CHANGED
|
@@ -28,6 +28,22 @@ export declare const ClinkInputSchema: z.ZodObject<{
|
|
|
28
28
|
* overrides of user adapter config.
|
|
29
29
|
*/
|
|
30
30
|
timeout_seconds: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
/**
|
|
32
|
+
* Response size override (characters).
|
|
33
|
+
*
|
|
34
|
+
* Accepted for internal/workflow use, but not advertised in tools/list.
|
|
35
|
+
* This extends the frozen v1 schema for internal callers only, following
|
|
36
|
+
* the same hidden-field pattern established by `timeout_seconds`.
|
|
37
|
+
*/
|
|
38
|
+
max_response_chars: z.ZodOptional<z.ZodNumber>;
|
|
39
|
+
/**
|
|
40
|
+
* Internal JSON enforcement flag.
|
|
41
|
+
*
|
|
42
|
+
* When true, pipeline enforces JSON validation/salvage regardless of role.
|
|
43
|
+
* Not advertised in tools/list — internal/workflow use only, following
|
|
44
|
+
* the same hidden-field pattern as timeout_seconds and max_response_chars.
|
|
45
|
+
*/
|
|
46
|
+
expect_json: z.ZodOptional<z.ZodBoolean>;
|
|
31
47
|
/** Enable debug metadata in response. */
|
|
32
48
|
debug: z.ZodDefault<z.ZodBoolean>;
|
|
33
49
|
/** Keep run artifacts after completion (requires debug=true). */
|
|
@@ -43,6 +59,8 @@ export declare const ClinkInputSchema: z.ZodObject<{
|
|
|
43
59
|
images?: string[] | undefined;
|
|
44
60
|
context?: string | undefined;
|
|
45
61
|
continuation_id?: string | undefined;
|
|
62
|
+
max_response_chars?: number | undefined;
|
|
63
|
+
expect_json?: boolean | undefined;
|
|
46
64
|
}, {
|
|
47
65
|
prompt: string;
|
|
48
66
|
timeout_seconds?: number | undefined;
|
|
@@ -52,6 +70,8 @@ export declare const ClinkInputSchema: z.ZodObject<{
|
|
|
52
70
|
images?: string[] | undefined;
|
|
53
71
|
context?: string | undefined;
|
|
54
72
|
continuation_id?: string | undefined;
|
|
73
|
+
max_response_chars?: number | undefined;
|
|
74
|
+
expect_json?: boolean | undefined;
|
|
55
75
|
debug?: boolean | undefined;
|
|
56
76
|
debug_keep_artifacts?: boolean | undefined;
|
|
57
77
|
}>;
|
package/dist/schema.js
CHANGED
|
@@ -52,6 +52,30 @@ export const ClinkInputSchema = z
|
|
|
52
52
|
.positive()
|
|
53
53
|
.optional()
|
|
54
54
|
.describe("Request timeout override (seconds)"),
|
|
55
|
+
/**
|
|
56
|
+
* Response size override (characters).
|
|
57
|
+
*
|
|
58
|
+
* Accepted for internal/workflow use, but not advertised in tools/list.
|
|
59
|
+
* This extends the frozen v1 schema for internal callers only, following
|
|
60
|
+
* the same hidden-field pattern established by `timeout_seconds`.
|
|
61
|
+
*/
|
|
62
|
+
max_response_chars: z
|
|
63
|
+
.number()
|
|
64
|
+
.int()
|
|
65
|
+
.positive()
|
|
66
|
+
.optional()
|
|
67
|
+
.describe("Response size override (characters)"),
|
|
68
|
+
/**
|
|
69
|
+
* Internal JSON enforcement flag.
|
|
70
|
+
*
|
|
71
|
+
* When true, pipeline enforces JSON validation/salvage regardless of role.
|
|
72
|
+
* Not advertised in tools/list — internal/workflow use only, following
|
|
73
|
+
* the same hidden-field pattern as timeout_seconds and max_response_chars.
|
|
74
|
+
*/
|
|
75
|
+
expect_json: z
|
|
76
|
+
.boolean()
|
|
77
|
+
.optional()
|
|
78
|
+
.describe("Internal JSON enforcement flag"),
|
|
55
79
|
/** Enable debug metadata in response. */
|
|
56
80
|
debug: z.boolean().default(false).describe("Include debug metadata"),
|
|
57
81
|
/** Keep run artifacts after completion (requires debug=true). */
|
|
@@ -73,13 +97,16 @@ export function clinkJsonSchema() {
|
|
|
73
97
|
$refStrategy: "none",
|
|
74
98
|
});
|
|
75
99
|
// Do not advertise timeout_seconds in tools/list schema.
|
|
76
|
-
// We still accept it in the runtime zod parse for backward compatibility.
|
|
100
|
+
// We still accept it in the runtime zod parse for backward compatibility/internal use.
|
|
77
101
|
// Note: additionalProperties: false remains in the schema, which means a client
|
|
78
|
-
// doing outbound schema validation would reject timeout_seconds.
|
|
102
|
+
// doing outbound schema validation would reject timeout_seconds/max_response_chars.
|
|
103
|
+
// This is acceptable
|
|
79
104
|
// because MCP clients don't validate outbound requests against the tool schema.
|
|
80
105
|
const props = schema["properties"];
|
|
81
106
|
if (props != null) {
|
|
82
107
|
delete props["timeout_seconds"];
|
|
108
|
+
delete props["max_response_chars"];
|
|
109
|
+
delete props["expect_json"];
|
|
83
110
|
}
|
|
84
111
|
return schema;
|
|
85
112
|
}
|
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,6CAA6C;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAEpE,4DAA4D;IAC5D,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kBAAkB,CAAC;IAE/B,oDAAoD;IACpD,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,iGAAiG,CAAC;IAE9G,6DAA6D;IAC7D,mBAAmB,EAAE,CAAC;SACnB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,kCAAkC,CAAC;IAE/C,4BAA4B;IAC5B,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,sBAAsB,CAAC;IAEnC,kFAAkF;IAClF,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,8EAA8E,CAC/E;IAEH,0DAA0D;IAC1D,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IAEpD;;;;;;OAMG;IACH,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,oCAAoC,CAAC;IAEjD,yCAAyC;IACzC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAEpE,iEAAiE;IACjE,oBAAoB,EAAE,CAAC;SACpB,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,qCAAqC,CAAC;CACnD,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,eAAe,CAAC,gBAAgB,EAAE;QAC/C,MAAM,EAAE,aAAa;QACrB,YAAY,EAAE,MAAM;KACrB,CAA4B,CAAC;IAE9B,yDAAyD;IACzD,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,6CAA6C;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;IAEpE,4DAA4D;IAC5D,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,kBAAkB,CAAC;IAE/B,oDAAoD;IACpD,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,iGAAiG,CAAC;IAE9G,6DAA6D;IAC7D,mBAAmB,EAAE,CAAC;SACnB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,kCAAkC,CAAC;IAE/C,4BAA4B;IAC5B,MAAM,EAAE,CAAC;SACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CAAC,sBAAsB,CAAC;IAEnC,kFAAkF;IAClF,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,8EAA8E,CAC/E;IAEH,0DAA0D;IAC1D,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,uCAAuC,CAAC;IAEpD;;;;;;OAMG;IACH,eAAe,EAAE,CAAC;SACf,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,oCAAoC,CAAC;IAEjD;;;;;;OAMG;IACH,kBAAkB,EAAE,CAAC;SAClB,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,qCAAqC,CAAC;IAElD;;;;;;OAMG;IACH,WAAW,EAAE,CAAC;SACX,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,gCAAgC,CAAC;IAE7C,yCAAyC;IACzC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,wBAAwB,CAAC;IAEpE,iEAAiE;IACjE,oBAAoB,EAAE,CAAC;SACpB,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,qCAAqC,CAAC;CACnD,CAAC;KACD,MAAM,EAAE,CAAC;AAIZ;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,eAAe,CAAC,gBAAgB,EAAE;QAC/C,MAAM,EAAE,aAAa;QACrB,YAAY,EAAE,MAAM;KACrB,CAA4B,CAAC;IAE9B,yDAAyD;IACzD,uFAAuF;IACvF,gFAAgF;IAChF,oFAAoF;IACpF,qBAAqB;IACrB,gFAAgF;IAChF,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAwC,CAAC;IAC1E,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACnC,OAAO,KAAK,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -2,9 +2,9 @@ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Create and configure the ClinkX MCP server.
|
|
4
4
|
*
|
|
5
|
-
* Registers
|
|
6
|
-
* -
|
|
7
|
-
* -
|
|
5
|
+
* Registers unified handlers that expose:
|
|
6
|
+
* - clink: CLI subagent bridge (existing)
|
|
7
|
+
* - run_workflow, resume_workflow, list_workflows: multi-stage workflow orchestration
|
|
8
8
|
*
|
|
9
9
|
* Does NOT connect transport — caller is responsible for that.
|
|
10
10
|
*/
|
package/dist/server.js
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
|
-
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode, } from "@modelcontextprotocol/sdk/types.js";
|
|
3
3
|
import { clinkJsonSchema } from "./schema.js";
|
|
4
4
|
import { handleClink } from "./handler.js";
|
|
5
5
|
import { handleToolError, CancellationError } from "./errors.js";
|
|
6
6
|
import { logger } from "./logger.js";
|
|
7
7
|
import { extractProgressToken } from "./progress.js";
|
|
8
8
|
import { AdapterRegistry } from "./registry.js";
|
|
9
|
+
import { LocalClinkBackend } from "./local-clink-backend.js";
|
|
10
|
+
import { getWorkflowToolDefinitions, handleWorkflowToolCall, WORKFLOW_TOOL_NAMES, } from "../clinkx-workflows/dist/workflow-tools.js";
|
|
11
|
+
import { WorkflowCancellationError } from "../clinkx-workflows/dist/errors.js";
|
|
12
|
+
import { getChildConfigPath, getChildMaxResponseChars, getStateDir, getArtifactsDir, } from "../clinkx-workflows/dist/config.js";
|
|
9
13
|
/**
|
|
10
14
|
* Create and configure the ClinkX MCP server.
|
|
11
15
|
*
|
|
12
|
-
* Registers
|
|
13
|
-
* -
|
|
14
|
-
* -
|
|
16
|
+
* Registers unified handlers that expose:
|
|
17
|
+
* - clink: CLI subagent bridge (existing)
|
|
18
|
+
* - run_workflow, resume_workflow, list_workflows: multi-stage workflow orchestration
|
|
15
19
|
*
|
|
16
20
|
* Does NOT connect transport — caller is responsible for that.
|
|
17
21
|
*/
|
|
@@ -20,7 +24,8 @@ export function createServer() {
|
|
|
20
24
|
capabilities: { tools: {} },
|
|
21
25
|
instructions: "ClinkX bridges requests to external CLI subagents (e.g. Gemini, Codex, Claude) " +
|
|
22
26
|
"as subprocesses and returns their output. Use the clink tool to delegate tasks " +
|
|
23
|
-
"to any configured CLI. Multiple clink calls can run in parallel for independent tasks."
|
|
27
|
+
"to any configured CLI. Multiple clink calls can run in parallel for independent tasks. " +
|
|
28
|
+
"Use run_workflow/resume_workflow/list_workflows for multi-stage workflow orchestration.",
|
|
24
29
|
});
|
|
25
30
|
// Eagerly load adapter names + role names for tool description & schema enum (once, not per-request)
|
|
26
31
|
let cliSuffix = "";
|
|
@@ -37,7 +42,35 @@ export function createServer() {
|
|
|
37
42
|
catch (err) {
|
|
38
43
|
logger.warn({ err }, "failed to load adapter registry for tool description");
|
|
39
44
|
}
|
|
40
|
-
//
|
|
45
|
+
// Ensure workflow state/artifacts dirs are in allowed roots for the in-process
|
|
46
|
+
// backend path. The subprocess path (ClinkSession) injects these via
|
|
47
|
+
// deriveAllowedRoots() + buildChildEnv(), but LocalClinkBackend shares the
|
|
48
|
+
// parent's process.env — so we augment it once at startup.
|
|
49
|
+
const stateDir = getStateDir();
|
|
50
|
+
const artifactsDir = getArtifactsDir();
|
|
51
|
+
const existingRoots = process.env["CLINKX_ALLOWED_ROOTS"];
|
|
52
|
+
const baseRoots = existingRoots != null && existingRoots.length > 0
|
|
53
|
+
? existingRoots
|
|
54
|
+
: process.cwd();
|
|
55
|
+
process.env["CLINKX_ALLOWED_ROOTS"] = `${baseRoots},${stateDir},${artifactsDir}`;
|
|
56
|
+
logger.debug({ allowed_roots: process.env["CLINKX_ALLOWED_ROOTS"] }, "augmented allowed roots with workflow state/artifacts dirs");
|
|
57
|
+
// Workflow options — factory creates in-process backends using the registry metadata.
|
|
58
|
+
// When CLINKX_WORKFLOWS_CHILD_CONFIG_PATH is set, build a workflow-specific registry
|
|
59
|
+
// so the in-process path uses the same adapter config the workflow state fingerprints against.
|
|
60
|
+
const childConfigPath = getChildConfigPath();
|
|
61
|
+
const workflowRegistry = childConfigPath != null
|
|
62
|
+
? AdapterRegistry.loadFromPath(childConfigPath)
|
|
63
|
+
: undefined;
|
|
64
|
+
const workflowCliNames = workflowRegistry?.getAdapterNames() ?? cliNames;
|
|
65
|
+
const workflowRoleNames = workflowRegistry?.getAllRoleNames() ?? roleNames;
|
|
66
|
+
const workflowMaxResponseChars = getChildMaxResponseChars();
|
|
67
|
+
const workflowOptions = {
|
|
68
|
+
createBackend: () => new LocalClinkBackend(workflowCliNames, workflowRoleNames, {
|
|
69
|
+
registry: workflowRegistry,
|
|
70
|
+
defaultMaxResponseChars: workflowMaxResponseChars,
|
|
71
|
+
}),
|
|
72
|
+
};
|
|
73
|
+
// tools/list — advertise clink + workflow tools
|
|
41
74
|
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
42
75
|
const schema = clinkJsonSchema();
|
|
43
76
|
// Inject enum arrays into cli_name and role properties (Fix 1)
|
|
@@ -55,54 +88,95 @@ export function createServer() {
|
|
|
55
88
|
`Role for the subagent — use "default" unless a specific role is needed. Available: ${roleEnum.join(", ")}.`;
|
|
56
89
|
}
|
|
57
90
|
}
|
|
91
|
+
// Build unified tool list: clink + workflow tools
|
|
92
|
+
const clinkTool = {
|
|
93
|
+
name: "clink",
|
|
94
|
+
description: "Execute a configured local CLI as a subagent and return the model's final output." +
|
|
95
|
+
" Multiple clink calls can run in parallel for independent tasks." +
|
|
96
|
+
" Pass file paths via absolute_file_paths rather than inlining content." +
|
|
97
|
+
cliSuffix,
|
|
98
|
+
inputSchema: schema,
|
|
99
|
+
annotations: {
|
|
100
|
+
// readOnlyHint: true enables MCP clients to dispatch multiple clink calls
|
|
101
|
+
// in parallel. Despite subprocesses potentially writing files, this matches
|
|
102
|
+
// PAL's behavior — the MCP spec treats annotations as hints, not contracts.
|
|
103
|
+
readOnlyHint: true,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
const workflowTools = getWorkflowToolDefinitions();
|
|
58
107
|
return {
|
|
59
|
-
tools: [
|
|
60
|
-
{
|
|
61
|
-
name: "clink",
|
|
62
|
-
description: "Execute a configured local CLI as a subagent and return the model's final output." +
|
|
63
|
-
" Multiple clink calls can run in parallel for independent tasks." +
|
|
64
|
-
" Pass file paths via absolute_file_paths rather than inlining content." +
|
|
65
|
-
cliSuffix,
|
|
66
|
-
inputSchema: schema,
|
|
67
|
-
annotations: {
|
|
68
|
-
// readOnlyHint: true enables MCP clients to dispatch multiple clink calls
|
|
69
|
-
// in parallel. Despite subprocesses potentially writing files, this matches
|
|
70
|
-
// PAL's behavior — the MCP spec treats annotations as hints, not contracts.
|
|
71
|
-
readOnlyHint: true,
|
|
72
|
-
},
|
|
73
|
-
},
|
|
74
|
-
],
|
|
108
|
+
tools: [clinkTool, ...workflowTools],
|
|
75
109
|
};
|
|
76
110
|
});
|
|
77
|
-
// tools/call — dispatch clink
|
|
111
|
+
// tools/call — unified dispatch for clink + workflow tools
|
|
78
112
|
server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
|
|
79
113
|
const { name, arguments: args } = request.params;
|
|
80
|
-
if (name !== "clink") {
|
|
81
|
-
logger.warn({ tool: name }, "unknown tool requested");
|
|
82
|
-
return {
|
|
83
|
-
content: [{ type: "text", text: `Unknown tool: ${name}` }],
|
|
84
|
-
isError: true,
|
|
85
|
-
};
|
|
86
|
-
}
|
|
87
114
|
const progressToken = extractProgressToken(request.params);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
115
|
+
// Dispatch workflow tools
|
|
116
|
+
if (WORKFLOW_TOOL_NAMES.has(name)) {
|
|
117
|
+
try {
|
|
118
|
+
// Cast: root and workflow packages have separate SDK installations with
|
|
119
|
+
// nominally different Server types (private properties). At runtime they
|
|
120
|
+
// are API-compatible — the workflow tools only call server.notification().
|
|
121
|
+
const result = await handleWorkflowToolCall(server, workflowOptions, name, args ?? {}, extra.signal, progressToken);
|
|
122
|
+
if (result != null) {
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
// handleWorkflowToolCall matched the tool name but returned null —
|
|
126
|
+
// surface an explicit error instead of falling through to "Unknown tool".
|
|
127
|
+
return {
|
|
128
|
+
content: [{ type: "text", text: `Workflow tool "${String(name)}" returned no result` }],
|
|
129
|
+
isError: true,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
if (err instanceof WorkflowCancellationError) {
|
|
134
|
+
// MCP spec: do NOT send a response for cancelled requests.
|
|
135
|
+
throw err;
|
|
136
|
+
}
|
|
137
|
+
// McpError from the workflow package (separate SDK installation) must
|
|
138
|
+
// propagate as a proper JSON-RPC error, not be downgraded to a tool
|
|
139
|
+
// result with isError: true. Detect by constructor name since
|
|
140
|
+
// instanceof fails across package boundaries.
|
|
141
|
+
if (err instanceof Error &&
|
|
142
|
+
err.constructor.name === "McpError" &&
|
|
143
|
+
typeof err["code"] === "number") {
|
|
144
|
+
const code = err.code ?? ErrorCode.InternalError;
|
|
145
|
+
// Strip existing "MCP error <code>: " prefix to avoid double-prefixing
|
|
146
|
+
// when rewrapping across package boundaries.
|
|
147
|
+
const rawMessage = err.message.replace(/^MCP error -?\d+: /, "");
|
|
148
|
+
throw new McpError(code, rawMessage);
|
|
149
|
+
}
|
|
150
|
+
return handleToolError(err);
|
|
151
|
+
}
|
|
95
152
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
153
|
+
// Dispatch clink tool
|
|
154
|
+
if (name === "clink") {
|
|
155
|
+
try {
|
|
156
|
+
return await handleClink(args, {
|
|
157
|
+
...(extra.signal != null ? { signal: extra.signal } : {}),
|
|
158
|
+
...(progressToken != null
|
|
159
|
+
? { progress: { server, token: progressToken } }
|
|
160
|
+
: {}),
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
catch (err) {
|
|
164
|
+
if (err instanceof CancellationError) {
|
|
165
|
+
// MCP spec: do NOT send a response for cancelled requests.
|
|
166
|
+
// Re-throw so the SDK handles it properly.
|
|
167
|
+
throw err;
|
|
168
|
+
}
|
|
169
|
+
// handleToolError re-throws McpError for InvalidParamsError (-32602),
|
|
170
|
+
// returns { isError: true } for everything else.
|
|
171
|
+
return handleToolError(err);
|
|
101
172
|
}
|
|
102
|
-
// handleToolError re-throws McpError for InvalidParamsError (-32602),
|
|
103
|
-
// returns { isError: true } for everything else.
|
|
104
|
-
return handleToolError(err);
|
|
105
173
|
}
|
|
174
|
+
// Unknown tool
|
|
175
|
+
logger.warn({ tool: name }, "unknown tool requested");
|
|
176
|
+
return {
|
|
177
|
+
content: [{ type: "text", text: `Unknown tool: ${name}` }],
|
|
178
|
+
isError: true,
|
|
179
|
+
};
|
|
106
180
|
});
|
|
107
181
|
return server;
|
|
108
182
|
}
|