clinkx 0.1.9 → 0.2.0
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/conf/adapters/claude.json +13 -1
- package/conf/adapters/codex.json +9 -0
- 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 +9 -0
- 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 +24 -4
- package/dist/config.js +6 -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.js +21 -4
- package/dist/parsers/extract.js.map +1 -1
- package/dist/pipeline.js +164 -27
- package/dist/pipeline.js.map +1 -1
- package/dist/progress.d.ts +63 -10
- package/dist/progress.js +165 -23
- package/dist/progress.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/runner.js +16 -11
- 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 +2 -1
|
@@ -39,14 +39,14 @@ function extractAssistantText(value) {
|
|
|
39
39
|
* - type:"result", subtype:"success" — final result string (canonical)
|
|
40
40
|
*
|
|
41
41
|
* Extraction strategy:
|
|
42
|
-
* 1. Find
|
|
42
|
+
* 1. Find first non-empty `type=result` event → use its `result` field (first-result-wins)
|
|
43
43
|
* 2. Fallback: find last `type=assistant` event → extract message.content[].text
|
|
44
44
|
*/
|
|
45
45
|
export const claudeStreamJsonParser = {
|
|
46
46
|
name: "claude_stream_json",
|
|
47
|
-
preferredBuffers: ["
|
|
47
|
+
preferredBuffers: ["stdoutHead", "stdoutTail"],
|
|
48
48
|
parse(input) {
|
|
49
|
-
const text = preferredText(input, ["
|
|
49
|
+
const text = preferredText(input, ["stdoutHead", "stdoutTail"]);
|
|
50
50
|
if (text.trim().length === 0)
|
|
51
51
|
return null;
|
|
52
52
|
const lines = text
|
|
@@ -54,7 +54,10 @@ export const claudeStreamJsonParser = {
|
|
|
54
54
|
.map((l) => l.trim())
|
|
55
55
|
.filter((l) => l.length > 0);
|
|
56
56
|
let resultText = null;
|
|
57
|
+
let resultLatched = false;
|
|
58
|
+
let resultEventCount = 0;
|
|
57
59
|
let lastAssistantText = null;
|
|
60
|
+
let assistantEventCount = 0;
|
|
58
61
|
for (const line of lines) {
|
|
59
62
|
let parsed;
|
|
60
63
|
try {
|
|
@@ -66,25 +69,40 @@ export const claudeStreamJsonParser = {
|
|
|
66
69
|
if (parsed == null || typeof parsed !== "object")
|
|
67
70
|
continue;
|
|
68
71
|
const rec = parsed;
|
|
69
|
-
// Primary: type=result event
|
|
72
|
+
// Primary: first non-empty type=result event wins (subsequent are ignored)
|
|
70
73
|
if (rec["type"] === "result" && typeof rec["result"] === "string") {
|
|
71
|
-
|
|
74
|
+
resultEventCount++;
|
|
75
|
+
const candidate = rec["result"];
|
|
76
|
+
if (candidate.trim().length > 0) {
|
|
77
|
+
if (resultText == null) {
|
|
78
|
+
resultText = candidate;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
resultLatched = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
72
84
|
}
|
|
73
|
-
// Fallback: type=assistant event
|
|
85
|
+
// Fallback: type=assistant event (last-wins — multi-turn sessions have many)
|
|
74
86
|
const assistantText = extractAssistantText(parsed);
|
|
75
87
|
if (assistantText != null) {
|
|
88
|
+
assistantEventCount++;
|
|
76
89
|
lastAssistantText = assistantText;
|
|
77
90
|
}
|
|
78
91
|
}
|
|
79
92
|
// Prefer result event, but treat empty/whitespace-only result as absent
|
|
80
93
|
// so we fall through to lastAssistantText via ??.
|
|
81
|
-
const content =
|
|
94
|
+
const content = resultText ?? lastAssistantText;
|
|
82
95
|
if (content == null || content.trim().length === 0)
|
|
83
96
|
return null;
|
|
84
97
|
return {
|
|
85
98
|
content,
|
|
86
99
|
source: "parser",
|
|
87
|
-
metadata: {
|
|
100
|
+
metadata: {
|
|
101
|
+
parser: "claude_stream_json",
|
|
102
|
+
resultEventCount,
|
|
103
|
+
resultLatched,
|
|
104
|
+
assistantEventCount,
|
|
105
|
+
},
|
|
88
106
|
};
|
|
89
107
|
},
|
|
90
108
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-stream-json.js","sourceRoot":"","sources":["../../src/parsers/claude-stream-json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,KAAK,IAAI,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,GAAG,GAAG,KAAgC,CAAC;IAC7C,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAE7C,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,GAAG,GAAG,OAAkC,CAAC;IAE/C,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzC,MAAM,KAAK,GAAG,OAAO;SAClB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,CAAC,GAAG,KAAgC,CAAC;YAC3C,IAAI,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,QAAQ;gBAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE/B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAW;IAC5C,IAAI,EAAE,oBAAoB;IAC1B,gBAAgB,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC;IAC9C,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE1C,MAAM,KAAK,GAAG,IAAI;aACf,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE/B,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,iBAAiB,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-stream-json.js","sourceRoot":"","sources":["../../src/parsers/claude-stream-json.ts"],"names":[],"mappings":"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"}
|
package/dist/parsers/extract.js
CHANGED
|
@@ -65,10 +65,13 @@ export async function extractResult(input) {
|
|
|
65
65
|
metadata: { filename: input.adapter.result_contract?.filename },
|
|
66
66
|
}
|
|
67
67
|
: null;
|
|
68
|
-
// When stdout is intentionally suppressed and the native output file is missing, hard fail
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
if (result == null &&
|
|
68
|
+
// When stdout is intentionally suppressed and the native output file is missing, hard fail
|
|
69
|
+
// only if the subprocess itself succeeded. For non-zero/null exits, fall through so the
|
|
70
|
+
// parser chain and stderr fallback can surface the real subprocess failure instead.
|
|
71
|
+
if (result == null &&
|
|
72
|
+
input.adapter.suppress_stdout &&
|
|
73
|
+
input.adapter.result_contract?.enabled &&
|
|
74
|
+
input.exitCode === 0) {
|
|
72
75
|
return {
|
|
73
76
|
result: {
|
|
74
77
|
content: "",
|
|
@@ -115,6 +118,17 @@ export async function extractResult(input) {
|
|
|
115
118
|
effectiveResult = stderrResult;
|
|
116
119
|
}
|
|
117
120
|
}
|
|
121
|
+
// Surface parser diagnostics (Fix 3: extraction diagnostics)
|
|
122
|
+
const parserMeta = effectiveResult.metadata ?? {};
|
|
123
|
+
const resultLatched = parserMeta["resultLatched"] === true;
|
|
124
|
+
if (resultLatched) {
|
|
125
|
+
logger.warn({
|
|
126
|
+
adapter: input.adapter.name,
|
|
127
|
+
parser: input.adapter.parser,
|
|
128
|
+
resultEventCount: parserMeta["resultEventCount"],
|
|
129
|
+
assistantEventCount: parserMeta["assistantEventCount"],
|
|
130
|
+
}, "multiple result events detected — first-result-wins latched, late results ignored (background task bug pattern)");
|
|
131
|
+
}
|
|
118
132
|
logger.debug({
|
|
119
133
|
adapter: input.adapter.name,
|
|
120
134
|
parser: input.adapter.parser,
|
|
@@ -124,6 +138,9 @@ export async function extractResult(input) {
|
|
|
124
138
|
stdoutTailLen: input.stdoutTail.length,
|
|
125
139
|
stderrHeadLen: input.stderrHead.length,
|
|
126
140
|
stderrTailLen: input.stderrTail.length,
|
|
141
|
+
resultEventCount: parserMeta["resultEventCount"],
|
|
142
|
+
resultLatched,
|
|
143
|
+
assistantEventCount: parserMeta["assistantEventCount"],
|
|
127
144
|
}, "extraction complete");
|
|
128
145
|
// Error recovery parity: always attempt extraction, even on non-zero exit.
|
|
129
146
|
const exitCode = input.exitCode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/parsers/extract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAkBtC,MAAM,OAAO,GAAa;IACxB,UAAU;IACV,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;CACvB,CAAC;AAEF,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAAe,EACf,QAA4D;IAE5D,IAAI,CAAC,QAAQ,EAAE,OAAO;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,sDAAsD;IACtD,MAAM,eAAe,GACnB,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,oBAAoB,CAAC;IAC9H,MAAM,OAAO,GAAG,eAAe;QAC7B,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,KAAK,CAAC,UAAU;QACpB,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAC9E,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,MAAmB;IAC1C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAmB;IACrD,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAC9C,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,OAAO,CAAC,eAAe,CAC9B,CAAC;IACF,IAAI,MAAM,GACR,YAAY,IAAI,IAAI;QAClB,CAAC,CAAC;YACE,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,iBAAiB;YACzB,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,EAAE;SAChE;QACH,CAAC,CAAC,IAAI,CAAC;IAEX,
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/parsers/extract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAkBtC,MAAM,OAAO,GAAa;IACxB,UAAU;IACV,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,sBAAsB;CACvB,CAAC;AAEF,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,OAAe,EACf,QAA4D;IAE5D,IAAI,CAAC,QAAQ,EAAE,OAAO;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,sDAAsD;IACtD,MAAM,eAAe,GACnB,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,oBAAoB,CAAC;IAC9H,MAAM,OAAO,GAAG,eAAe;QAC7B,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,CAAC,KAAK,CAAC,UAAU;YAClB,CAAC,CAAC,KAAK,CAAC,UAAU;QACpB,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACtD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;IAC9E,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,eAAe,CAAC,MAAmB;IAC1C,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAmB;IACrD,MAAM,YAAY,GAAG,MAAM,qBAAqB,CAC9C,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,OAAO,CAAC,eAAe,CAC9B,CAAC;IACF,IAAI,MAAM,GACR,YAAY,IAAI,IAAI;QAClB,CAAC,CAAC;YACE,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,iBAAiB;YACzB,QAAQ,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,EAAE;SAChE;QACH,CAAC,CAAC,IAAI,CAAC;IAEX,2FAA2F;IAC3F,wFAAwF;IACxF,oFAAoF;IACpF,IACE,MAAM,IAAI,IAAI;QACd,KAAK,CAAC,OAAO,CAAC,eAAe;QAC7B,KAAK,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO;QACtC,KAAK,CAAC,QAAQ,KAAK,CAAC,EACpB,CAAC;QACD,OAAO;YACL,MAAM,EAAE;gBACN,OAAO,EAAE,EAAE;gBACX,MAAM,EAAE,iBAAiB;gBACzB,QAAQ,EAAE;oBACR,YAAY,EAAE,SAAS;oBACvB,gBAAgB,EAAE,8BAA8B;iBACjD;aACF;YACD,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,MAAM,GAAG,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC;IAE7E,IAAI,CAAC,mBAAmB,IAAI,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QACtF,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;IAClD,CAAC;IAED,IAAI,CAAC,mBAAmB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QAC3C,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;QAC/C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YACpB,MAAM,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,mBAAmB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QAC3C,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,+CAA+C;IAC/C,2EAA2E;IAC3E,2DAA2D;IAC3D,qEAAqE;IACrE,MAAM,WAAW,GAAgB,MAAO,CAAC;IAEzC,iGAAiG;IACjG,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IACnF,IAAI,eAAe,GAAgB,WAAW,CAAC;IAC/C,IAAI,CAAC,mBAAmB,IAAI,WAAW,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;QACzE,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CACT,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAC7D,qDAAqD,CACtD,CAAC;YACF,eAAe,GAAG,YAAY,CAAC;QACjC,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,MAAM,UAAU,GAAG,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC;IAClD,MAAM,aAAa,GAAG,UAAU,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IAE3D,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CACT;YACE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;YAC3B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;YAC5B,gBAAgB,EAAE,UAAU,CAAC,kBAAkB,CAAC;YAChD,mBAAmB,EAAE,UAAU,CAAC,qBAAqB,CAAC;SACvD,EACD,iHAAiH,CAClH,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,KAAK,CACV;QACE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;QAC3B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;QAC5B,MAAM,EAAE,eAAe,CAAC,MAAM;QAC9B,aAAa,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM;QAC7C,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;QACtC,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;QACtC,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;QACtC,aAAa,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;QACtC,gBAAgB,EAAE,UAAU,CAAC,kBAAkB,CAAC;QAChD,aAAa;QACb,mBAAmB,EAAE,UAAU,CAAC,qBAAqB,CAAC;KACvD,EACD,qBAAqB,CACtB,CAAC;IAEF,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,MAAM,QAAQ,GAAG,KAAK,CAAC,2BAA2B,IAAI,KAAK,CAAC;IAC5D,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,KAAK,SAAS,CAAC;IAE9E,MAAM,OAAO,GACX,YAAY;QACV,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,QAAQ,KAAK,CAAC;YAChB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,QAAQ,IAAI,IAAI;gBAChB,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,QAAQ,IAAI,eAAe,CAAC,eAAe,CAAC;oBAC5C,CAAC,CAAC,KAAK;oBACP,CAAC,CAAC,IAAI,CAAC;IAEf,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACxD,CAAC"}
|
package/dist/pipeline.js
CHANGED
|
@@ -6,6 +6,7 @@ import { Semaphore } from "./concurrency.js";
|
|
|
6
6
|
import { CancellationError } from "./errors.js";
|
|
7
7
|
import { extractResult } from "./parsers/extract.js";
|
|
8
8
|
import { extractSummary } from "./parsers/summary.js";
|
|
9
|
+
import { findAllJsonBlocks } from "./parsers/utils.js";
|
|
9
10
|
import { stripAnsi } from "./strip-ansi.js";
|
|
10
11
|
import { ProgressReporter } from "./progress.js";
|
|
11
12
|
import { logger } from "./logger.js";
|
|
@@ -76,13 +77,76 @@ export function resolveEffectiveTimeout(requested, adapterTimeout) {
|
|
|
76
77
|
// Module-level singletons
|
|
77
78
|
const continuationCache = new ContinuationCache();
|
|
78
79
|
const semaphore = new Semaphore();
|
|
80
|
+
function normalizeJsonRoleOutput(output, options) {
|
|
81
|
+
const trimmed = output.trim();
|
|
82
|
+
if (trimmed.length === 0) {
|
|
83
|
+
return {
|
|
84
|
+
content: output,
|
|
85
|
+
valid: false,
|
|
86
|
+
salvaged: false,
|
|
87
|
+
salvageMethod: null,
|
|
88
|
+
blockCount: 0,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
try {
|
|
92
|
+
JSON.parse(trimmed);
|
|
93
|
+
return {
|
|
94
|
+
content: output,
|
|
95
|
+
valid: true,
|
|
96
|
+
salvaged: false,
|
|
97
|
+
salvageMethod: null,
|
|
98
|
+
blockCount: 1,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
if (options?.allowMixedBlockSalvage !== true) {
|
|
103
|
+
return {
|
|
104
|
+
content: output,
|
|
105
|
+
valid: false,
|
|
106
|
+
salvaged: false,
|
|
107
|
+
salvageMethod: null,
|
|
108
|
+
blockCount: 0,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const blocks = findAllJsonBlocks(output, { maxBlocks: 2 });
|
|
112
|
+
if (blocks.length === 1) {
|
|
113
|
+
return {
|
|
114
|
+
content: blocks[0].raw,
|
|
115
|
+
valid: true,
|
|
116
|
+
salvaged: true,
|
|
117
|
+
salvageMethod: "single_block_extract",
|
|
118
|
+
blockCount: 1,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
return {
|
|
122
|
+
content: output,
|
|
123
|
+
valid: false,
|
|
124
|
+
salvaged: false,
|
|
125
|
+
salvageMethod: null,
|
|
126
|
+
blockCount: blocks.length,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
79
130
|
/**
|
|
80
131
|
* Main clink handler pipeline:
|
|
81
132
|
* validate → resolve adapter → assemble prompt → exec → parse → limit → return
|
|
82
133
|
*/
|
|
83
134
|
export async function executePipeline(input, registry, options) {
|
|
135
|
+
const strictFidelity = process.env["CLINKX_STRICT_FIDELITY"] === "true";
|
|
84
136
|
// 1. Resolve adapter
|
|
85
|
-
const
|
|
137
|
+
const baseAdapter = registry.resolveAdapter(input.cli_name);
|
|
138
|
+
// 1b. Apply role-level overrides (parser, extra_args) without mutating the original
|
|
139
|
+
const roleName = input.role ?? "default";
|
|
140
|
+
const roleConfig = baseAdapter.roles[roleName];
|
|
141
|
+
const effectiveParser = roleConfig?.parser ?? baseAdapter.parser;
|
|
142
|
+
// extra_args are appended after base args. CLI last-wins semantics means
|
|
143
|
+
// e.g. --output-format json overrides the earlier --output-format stream-json.
|
|
144
|
+
const effectiveArgs = roleConfig?.extra_args
|
|
145
|
+
? [...baseAdapter.args, ...roleConfig.extra_args]
|
|
146
|
+
: baseAdapter.args;
|
|
147
|
+
const adapter = effectiveParser !== baseAdapter.parser || effectiveArgs !== baseAdapter.args
|
|
148
|
+
? { ...baseAdapter, parser: effectiveParser, args: effectiveArgs }
|
|
149
|
+
: baseAdapter;
|
|
86
150
|
const adapterTimeoutSeconds = adapter.timeout_seconds;
|
|
87
151
|
const requestedTimeoutSeconds = input.timeout_seconds;
|
|
88
152
|
const effectiveTimeoutSeconds = resolveEffectiveTimeout(requestedTimeoutSeconds, adapterTimeoutSeconds);
|
|
@@ -104,7 +168,11 @@ export async function executePipeline(input, registry, options) {
|
|
|
104
168
|
// 3. Create run directory
|
|
105
169
|
runDir = createRunDir();
|
|
106
170
|
if (options?.progress) {
|
|
107
|
-
progress = new ProgressReporter(options.progress.server, options.progress.token,
|
|
171
|
+
progress = new ProgressReporter(options.progress.server, options.progress.token, {
|
|
172
|
+
runId: runDir.runId,
|
|
173
|
+
cliName: adapter.name,
|
|
174
|
+
role: input.role ?? "default",
|
|
175
|
+
});
|
|
108
176
|
void progress.emit("resolve");
|
|
109
177
|
}
|
|
110
178
|
// 4. Assemble prompt
|
|
@@ -119,7 +187,8 @@ export async function executePipeline(input, registry, options) {
|
|
|
119
187
|
logger.warn({ chars: prompt.length, adapter: adapter.name }, "assembled prompt exceeds %d chars (%d chars) — risk of CLI crash (e.g. Codex os error 35)", PROMPT_SIZE_WARN_THRESHOLD, prompt.length);
|
|
120
188
|
}
|
|
121
189
|
// 5. Execute subprocess
|
|
122
|
-
void progress?.emit("
|
|
190
|
+
void progress?.emit("running");
|
|
191
|
+
progress?.startHeartbeat();
|
|
123
192
|
const runOptions = {
|
|
124
193
|
adapter,
|
|
125
194
|
prompt,
|
|
@@ -140,6 +209,7 @@ export async function executePipeline(input, registry, options) {
|
|
|
140
209
|
runOptions.signal = options.signal;
|
|
141
210
|
}
|
|
142
211
|
const runResult = await runSubprocess(runOptions);
|
|
212
|
+
progress?.stopHeartbeat();
|
|
143
213
|
// 6. Handle cancellation (no response per MCP spec)
|
|
144
214
|
if (runResult.killed && options?.signal?.aborted) {
|
|
145
215
|
throw new CancellationError();
|
|
@@ -161,7 +231,7 @@ export async function executePipeline(input, registry, options) {
|
|
|
161
231
|
exitCode: runResult.exitCode,
|
|
162
232
|
tolerateNonzeroExitForParse: adapter.tolerate_nonzero_exit_for_parse,
|
|
163
233
|
});
|
|
164
|
-
|
|
234
|
+
let output = extracted.result.content;
|
|
165
235
|
const parseMetadata = extracted.result.metadata;
|
|
166
236
|
const parseStatus = typeof parseMetadata?.["parse_status"] === "string"
|
|
167
237
|
? parseMetadata["parse_status"]
|
|
@@ -178,40 +248,70 @@ export async function executePipeline(input, registry, options) {
|
|
|
178
248
|
let semanticFailureReason = semanticFailure
|
|
179
249
|
? rejectionReason ?? "invalid_final_result"
|
|
180
250
|
: null;
|
|
251
|
+
let jsonSalvaged = false;
|
|
252
|
+
let jsonSalvageMethod = null;
|
|
253
|
+
let jsonBlockCount = null;
|
|
254
|
+
const enforceJson = input.role === "json" || input.expect_json === true;
|
|
181
255
|
if (parseStatus === "invalid") {
|
|
182
256
|
semanticFailure = true;
|
|
183
257
|
semanticFailureReason = rejectionReason ?? "invalid_final_result";
|
|
184
258
|
}
|
|
185
259
|
let secondaryFailureReason = null;
|
|
186
|
-
if (
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
260
|
+
if (enforceJson) {
|
|
261
|
+
if (!semanticFailure) {
|
|
262
|
+
// Salvage (extracting a single JSON block from mixed prose) is only
|
|
263
|
+
// allowed for higher-confidence extraction paths (parser, result_contract,
|
|
264
|
+
// json_extract). Raw stdout fallback is excluded because unstructured
|
|
265
|
+
// CLI output is too unreliable for safe JSON block extraction.
|
|
266
|
+
const normalized = normalizeJsonRoleOutput(output, {
|
|
267
|
+
allowMixedBlockSalvage: extracted.result.source === "parser" ||
|
|
268
|
+
extracted.result.source === "result_contract" ||
|
|
269
|
+
extracted.result.source === "json_extract",
|
|
270
|
+
});
|
|
271
|
+
jsonBlockCount = normalized.blockCount;
|
|
272
|
+
if (normalized.valid) {
|
|
273
|
+
output = normalized.content;
|
|
274
|
+
jsonSalvaged = normalized.salvaged;
|
|
275
|
+
jsonSalvageMethod = normalized.salvageMethod;
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
if (runResult.exitCode !== 0 && runResult.exitCode !== null && extracted.isError) {
|
|
279
|
+
// Non-zero exit + extraction error is a stronger signal — demote to secondary.
|
|
280
|
+
// Note: exitCode === null (signal-killed) is excluded here because the signal
|
|
281
|
+
// handler (below) unconditionally overwrites result.content regardless of isError.
|
|
282
|
+
secondaryFailureReason = "invalid_json_output";
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
semanticFailure = true;
|
|
286
|
+
semanticFailureReason = "invalid_json_output";
|
|
287
|
+
}
|
|
288
|
+
}
|
|
190
289
|
}
|
|
191
290
|
else {
|
|
192
291
|
try {
|
|
193
|
-
JSON.parse(output);
|
|
292
|
+
JSON.parse(output.trim());
|
|
194
293
|
}
|
|
195
294
|
catch {
|
|
196
|
-
jsonInvalid = true;
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
if (jsonInvalid) {
|
|
200
|
-
if (semanticFailure) {
|
|
201
|
-
// Parser already flagged a failure — keep it as primary, note JSON as secondary
|
|
202
295
|
secondaryFailureReason = "invalid_json_output";
|
|
203
296
|
}
|
|
204
|
-
else {
|
|
205
|
-
semanticFailure = true;
|
|
206
|
-
semanticFailureReason = "invalid_json_output";
|
|
207
|
-
}
|
|
208
297
|
}
|
|
209
298
|
}
|
|
210
299
|
// 8. Limit output size
|
|
211
|
-
const maxChars = safeParseInt(process.env["CLINKX_MAX_RESPONSE_CHARS"], DEFAULT_MAX_RESPONSE_CHARS);
|
|
300
|
+
const maxChars = input.max_response_chars ?? safeParseInt(process.env["CLINKX_MAX_RESPONSE_CHARS"], DEFAULT_MAX_RESPONSE_CHARS);
|
|
212
301
|
const limited = limitOutput(output, maxChars);
|
|
213
|
-
|
|
214
|
-
|
|
302
|
+
const isResultContract = extracted.result.source === "result_contract";
|
|
303
|
+
// Fidelity-critical: only stdout truncation matters for stdout-extracted paths
|
|
304
|
+
const stdoutCriticalTruncated = !isResultContract && runResult.stdoutTruncated;
|
|
305
|
+
// Metadata: report all truncated streams for observability
|
|
306
|
+
const anyCaptureTruncated = !isResultContract &&
|
|
307
|
+
(runResult.stdoutTruncated || runResult.stderrTruncated);
|
|
308
|
+
const truncationStreams = [
|
|
309
|
+
runResult.stdoutTruncated ? "stdout" : null,
|
|
310
|
+
runResult.stderrTruncated ? "stderr" : null,
|
|
311
|
+
].filter((stream) => stream != null);
|
|
312
|
+
// F5: For role "json", verify the limited output is still valid JSON.
|
|
313
|
+
// Skip when JSON failure was already demoted to secondary (non-zero exit path).
|
|
314
|
+
if (enforceJson && !semanticFailure && secondaryFailureReason == null && limited !== output) {
|
|
215
315
|
try {
|
|
216
316
|
JSON.parse(limited);
|
|
217
317
|
}
|
|
@@ -221,8 +321,11 @@ export async function executePipeline(input, registry, options) {
|
|
|
221
321
|
}
|
|
222
322
|
}
|
|
223
323
|
// 10. Build result
|
|
324
|
+
const contentBlocks = [
|
|
325
|
+
{ type: "text", text: limited || "(no output)" },
|
|
326
|
+
];
|
|
224
327
|
const result = {
|
|
225
|
-
content:
|
|
328
|
+
content: contentBlocks,
|
|
226
329
|
};
|
|
227
330
|
if (semanticFailure) {
|
|
228
331
|
result.isError = true;
|
|
@@ -234,7 +337,7 @@ export async function executePipeline(input, registry, options) {
|
|
|
234
337
|
errText = `CLI "${adapter.name}" crashed (upstream stdout panic: ${panicClass}). ${errText}`;
|
|
235
338
|
}
|
|
236
339
|
if (semanticFailureReason === "invalid_json_output") {
|
|
237
|
-
errText +=
|
|
340
|
+
errText += " Rejection reason: invalid_json_output (output did not contain valid JSON).";
|
|
238
341
|
}
|
|
239
342
|
else if (semanticFailureReason === "json_output_too_large") {
|
|
240
343
|
errText += " Rejection reason: json_output_too_large (valid JSON exceeded response size limit and could not be minified to fit).";
|
|
@@ -242,7 +345,7 @@ export async function executePipeline(input, registry, options) {
|
|
|
242
345
|
else if (semanticFailureReason != null) {
|
|
243
346
|
errText += ` Rejection reason: ${semanticFailureReason}.`;
|
|
244
347
|
if (secondaryFailureReason === "invalid_json_output") {
|
|
245
|
-
errText +=
|
|
348
|
+
errText += " Secondary: invalid_json_output (output did not contain valid JSON).";
|
|
246
349
|
}
|
|
247
350
|
}
|
|
248
351
|
const diag = formatStdStreamsForError({
|
|
@@ -302,9 +405,12 @@ export async function executePipeline(input, registry, options) {
|
|
|
302
405
|
const baseErrText = diag.length > 0
|
|
303
406
|
? `CLI "${adapter.name}" exited with code ${runResult.exitCode}.\n\n${diag}`
|
|
304
407
|
: `CLI "${adapter.name}" exited with code ${runResult.exitCode}.`;
|
|
305
|
-
|
|
408
|
+
let errText = panicClass != null
|
|
306
409
|
? `CLI "${adapter.name}" crashed while writing its output stream (upstream stdout panic: ${panicClass}).\n\n${baseErrText}`
|
|
307
410
|
: baseErrText;
|
|
411
|
+
if (secondaryFailureReason != null) {
|
|
412
|
+
errText += ` Secondary: ${secondaryFailureReason} (output did not contain valid JSON).`;
|
|
413
|
+
}
|
|
308
414
|
result.content = [{ type: "text", text: errText }];
|
|
309
415
|
}
|
|
310
416
|
// Handle signal-killed process (exitCode null = killed by signal)
|
|
@@ -328,6 +434,30 @@ export async function executePipeline(input, registry, options) {
|
|
|
328
434
|
// Unreachable: cancellation throws CancellationError at line ~148 above
|
|
329
435
|
break;
|
|
330
436
|
}
|
|
437
|
+
// Surface capture-layer truncation to MCP clients (always, not just debug mode)
|
|
438
|
+
// Skip when process was terminated (timeout/idle/cancel) — termination error takes precedence
|
|
439
|
+
if (anyCaptureTruncated && runResult.terminationReason === "none") {
|
|
440
|
+
if (strictFidelity && stdoutCriticalTruncated) {
|
|
441
|
+
result.isError = true;
|
|
442
|
+
result.content.unshift({
|
|
443
|
+
type: "text",
|
|
444
|
+
text: `Output fidelity failure: capture truncated via ${truncationStreams.join("+")}. ` +
|
|
445
|
+
`Extracted content (parse_source: ${extracted.result.source ?? "unknown"}) may be incomplete. ` +
|
|
446
|
+
"Disable CLINKX_STRICT_FIDELITY=true to allow degraded output.",
|
|
447
|
+
});
|
|
448
|
+
}
|
|
449
|
+
result.content.push({
|
|
450
|
+
type: "text",
|
|
451
|
+
text: JSON.stringify({
|
|
452
|
+
_truncation: {
|
|
453
|
+
capture_truncated: true,
|
|
454
|
+
streams: truncationStreams,
|
|
455
|
+
parse_source: extracted.result.source ?? "unknown",
|
|
456
|
+
warning: "Output may be incomplete — capture buffer exceeded. Enable result_contract for this adapter or increase CLINKX_MAX_CAPTURE_BYTES.",
|
|
457
|
+
},
|
|
458
|
+
}),
|
|
459
|
+
});
|
|
460
|
+
}
|
|
331
461
|
// Store continuation only on true success (after all error handling)
|
|
332
462
|
if (input.continuation_id && output && !result.isError) {
|
|
333
463
|
continuationCache.set(input.continuation_id, output);
|
|
@@ -354,6 +484,12 @@ export async function executePipeline(input, registry, options) {
|
|
|
354
484
|
parse_source: extracted.result.source,
|
|
355
485
|
parse_status: parseStatus,
|
|
356
486
|
rejection_reason: rejectionReason,
|
|
487
|
+
json_salvaged: jsonSalvaged,
|
|
488
|
+
json_salvage_method: jsonSalvageMethod,
|
|
489
|
+
json_block_count: jsonBlockCount,
|
|
490
|
+
adapter_config_path: registry.getAdapterSource(adapter.name) ?? null,
|
|
491
|
+
adapter_command: adapter.command,
|
|
492
|
+
adapter_parser: adapter.parser,
|
|
357
493
|
thread_id: threadId,
|
|
358
494
|
codex_panic_class: panicClass ?? null,
|
|
359
495
|
parse_metadata: extracted.result.metadata ?? null,
|
|
@@ -364,8 +500,9 @@ export async function executePipeline(input, registry, options) {
|
|
|
364
500
|
return result;
|
|
365
501
|
}
|
|
366
502
|
finally {
|
|
503
|
+
progress?.stopHeartbeat();
|
|
367
504
|
if (progress && !options?.signal?.aborted) {
|
|
368
|
-
|
|
505
|
+
await progress.emit("done");
|
|
369
506
|
}
|
|
370
507
|
semaphore.release();
|
|
371
508
|
if (runDir && !(input.debug && input.debug_keep_artifacts)) {
|
package/dist/pipeline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../src/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/progress.d.ts
CHANGED
|
@@ -1,25 +1,78 @@
|
|
|
1
1
|
import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
2
|
/** Stages emitted during a clink invocation. */
|
|
3
|
-
export type ProgressStage = "resolve" | "
|
|
3
|
+
export type ProgressStage = "resolve" | "running" | "parse" | "done";
|
|
4
|
+
export interface ProgressContext {
|
|
5
|
+
runId: string;
|
|
6
|
+
cliName: string;
|
|
7
|
+
role: string;
|
|
8
|
+
}
|
|
4
9
|
/**
|
|
5
|
-
* Progress emitter for a single clink request
|
|
10
|
+
* Progress emitter for a single clink request with context-aware,
|
|
11
|
+
* human-readable status messages.
|
|
6
12
|
*
|
|
7
|
-
* -
|
|
8
|
-
* -
|
|
9
|
-
* -
|
|
13
|
+
* - Weighted progress: resolve=5, running=10→85, parse=90, done=100
|
|
14
|
+
* - Serialized emit queue preserves stage order
|
|
15
|
+
* - Monotonic delivery: lower/equal stages silently dropped
|
|
16
|
+
* - Heartbeat ramps progress during the long "running" phase
|
|
17
|
+
* - User-facing messages show CLI and role; runId stays in structured logs
|
|
10
18
|
*/
|
|
11
19
|
export declare class ProgressReporter {
|
|
12
20
|
private readonly server;
|
|
13
21
|
private readonly progressToken;
|
|
14
|
-
private readonly
|
|
22
|
+
private readonly context;
|
|
23
|
+
/** Monotonic guard: highest stage ordinal emitted so far. */
|
|
24
|
+
private highestEmitted;
|
|
25
|
+
/** Last wall-clock time a notification was actually sent. */
|
|
15
26
|
private lastEmitTime;
|
|
16
|
-
|
|
27
|
+
/** Serialized promise chain — every emit() chains behind this. */
|
|
28
|
+
private chain;
|
|
29
|
+
/** Heartbeat timer handle. */
|
|
30
|
+
private heartbeatTimer;
|
|
31
|
+
/** Heartbeat counter for progress ramping. */
|
|
32
|
+
private heartbeatCount;
|
|
33
|
+
/** Timestamp when heartbeat started (for elapsed display). */
|
|
34
|
+
private heartbeatStartTime;
|
|
35
|
+
constructor(server: Server, progressToken: string | number, context: ProgressContext);
|
|
36
|
+
private get runId();
|
|
17
37
|
/**
|
|
18
38
|
* Emit a progress notification for the given stage.
|
|
19
|
-
*
|
|
20
|
-
*
|
|
39
|
+
*
|
|
40
|
+
* Calls are serialized so stage transitions are delivered in order.
|
|
41
|
+
* Lower/equal stages after a higher one are silently dropped.
|
|
42
|
+
*/
|
|
43
|
+
emit(stage: ProgressStage, message?: string): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Start a periodic heartbeat during the "running" phase.
|
|
46
|
+
* Each tick ramps progress from 10 toward 85 (asymptotic) and
|
|
47
|
+
* includes elapsed wall time in the message.
|
|
48
|
+
*/
|
|
49
|
+
startHeartbeat(intervalMs?: number): void;
|
|
50
|
+
/** Stop the heartbeat timer. */
|
|
51
|
+
stopHeartbeat(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Actual emit logic, runs inside the serialized chain.
|
|
54
|
+
*/
|
|
55
|
+
private doEmit;
|
|
56
|
+
/**
|
|
57
|
+
* Emit a raw progress notification (used by heartbeat).
|
|
58
|
+
* Serialized through the same chain and subject to
|
|
59
|
+
* monotonic + rate-limit guards.
|
|
60
|
+
*/
|
|
61
|
+
private emitRaw;
|
|
62
|
+
private doEmitRaw;
|
|
63
|
+
private defaultMessage;
|
|
64
|
+
private formatMessage;
|
|
65
|
+
/**
|
|
66
|
+
* Send the notification to the MCP client.
|
|
67
|
+
* Best-effort: never fails the request.
|
|
68
|
+
*/
|
|
69
|
+
private send;
|
|
70
|
+
/**
|
|
71
|
+
* Compute heartbeat progress: asymptotic ramp from 10 toward 85.
|
|
72
|
+
* Uses exponential decay: progress = ceiling - (ceiling - base) * e^(-k*n)
|
|
73
|
+
* so each heartbeat adds diminishing increments that never reach 85.
|
|
21
74
|
*/
|
|
22
|
-
|
|
75
|
+
private computeHeartbeatProgress;
|
|
23
76
|
}
|
|
24
77
|
/**
|
|
25
78
|
* Extract _meta.progressToken from the raw MCP request params.
|