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.
Files changed (45) hide show
  1. package/conf/adapters/claude.json +13 -1
  2. package/conf/adapters/codex.json +9 -0
  3. package/conf/adapters/gemini.json +9 -0
  4. package/conf/adapters/glm.json +10 -0
  5. package/conf/adapters/hapi/claude.json +12 -2
  6. package/conf/adapters/hapi/codex.json +9 -0
  7. package/conf/adapters/hapi/gemini.json +9 -0
  8. package/conf/adapters/hapi/glm.json +10 -0
  9. package/conf/prompts/json-codereviewer.txt +6 -0
  10. package/conf/prompts/json-debug.txt +5 -0
  11. package/conf/prompts/json-default.txt +5 -0
  12. package/conf/prompts/json.txt +4 -1
  13. package/dist/config.d.ts +24 -4
  14. package/dist/config.js +6 -3
  15. package/dist/config.js.map +1 -1
  16. package/dist/handler.d.ts +2 -0
  17. package/dist/handler.js +2 -1
  18. package/dist/handler.js.map +1 -1
  19. package/dist/local-clink-backend.d.ts +30 -0
  20. package/dist/local-clink-backend.js +106 -0
  21. package/dist/local-clink-backend.js.map +1 -0
  22. package/dist/parsers/claude-stream-json.d.ts +1 -1
  23. package/dist/parsers/claude-stream-json.js +26 -8
  24. package/dist/parsers/claude-stream-json.js.map +1 -1
  25. package/dist/parsers/extract.js +21 -4
  26. package/dist/parsers/extract.js.map +1 -1
  27. package/dist/pipeline.js +164 -27
  28. package/dist/pipeline.js.map +1 -1
  29. package/dist/progress.d.ts +63 -10
  30. package/dist/progress.js +165 -23
  31. package/dist/progress.js.map +1 -1
  32. package/dist/prompt.js +8 -1
  33. package/dist/prompt.js.map +1 -1
  34. package/dist/registry.d.ts +4 -0
  35. package/dist/registry.js +14 -0
  36. package/dist/registry.js.map +1 -1
  37. package/dist/runner.js +16 -11
  38. package/dist/runner.js.map +1 -1
  39. package/dist/schema.d.ts +20 -0
  40. package/dist/schema.js +29 -2
  41. package/dist/schema.js.map +1 -1
  42. package/dist/server.d.ts +3 -3
  43. package/dist/server.js +119 -45
  44. package/dist/server.js.map +1 -1
  45. 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 last `type=result` event → use its `result` field
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: ["stdoutTail", "stdoutHead"],
47
+ preferredBuffers: ["stdoutHead", "stdoutTail"],
48
48
  parse(input) {
49
- const text = preferredText(input, ["stdoutTail", "stdoutHead"]);
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 with result field
72
+ // Primary: first non-empty type=result event wins (subsequent are ignored)
70
73
  if (rec["type"] === "result" && typeof rec["result"] === "string") {
71
- resultText = rec["result"];
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 = (resultText && resultText.trim().length > 0 ? resultText : null) ?? lastAssistantText;
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: { parser: "claude_stream_json" },
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":"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"}
1
+ {"version":3,"file":"claude-stream-json.js","sourceRoot":"","sources":["../../src/parsers/claude-stream-json.ts"],"names":[],"mappings":"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"}
@@ -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
- // Falling through to the parser chain would produce a silent false success because
70
- // stdout buffers are empty ("ignore" stdio) and the text parser returns "".
71
- if (result == null && input.adapter.suppress_stdout && input.adapter.result_contract?.enabled) {
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":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/parsers/extract.ts"],"names":[],"mappings":"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"}
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 adapter = registry.resolveAdapter(input.cli_name);
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, runDir.runId);
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("spawn");
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
- const output = extracted.result.content;
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 (input.role === "json") {
187
- let jsonInvalid = false;
188
- if (output.trim().length === 0) {
189
- jsonInvalid = true;
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
- // F5: For role "json", verify the limited output is still valid JSON
214
- if (input.role === "json" && !semanticFailure && limited !== output) {
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: [{ type: "text", text: limited || "(no output)" }],
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 += ' Rejection reason: invalid_json_output (output was not valid JSON for role "json").';
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 += ' Secondary: invalid_json_output (output was not valid JSON for role "json").';
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
- const errText = panicClass != null
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
- void progress.emit("done");
505
+ await progress.emit("done");
369
506
  }
370
507
  semaphore.release();
371
508
  if (runDir && !(input.debug && input.debug_keep_artifacts)) {
@@ -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":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAe,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,0BAA0B,GAAG,OAAO,CAAC;AAE3C,SAAS,YAAY,CAAC,GAAuB,EAAE,QAAgB;IAC7D,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,QAAQ,CAAC;IAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IACvD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACtB,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAKxC;IACC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IAE/C,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvC,oEAAoE;IACpE,IAAI,YAAoB,CAAC;IACzB,IAAI,YAAoB,CAAC;IACzB,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC9C,YAAY,GAAG,IAAI,CAAC;QACpB,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;QAChC,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAG,SAAS;QACtB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAO,EAAE,YAAY,CAAC;QAC5C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAErE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;IAExD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc;IACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;QACjD,IACE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;YAC9B,MAAM,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EACnD,CAAC;YACD,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YACrE,OAAO,oBAAoB,CAAC;QAC9B,CAAC;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,SAA6B,EAC7B,cAAsB;IAEtB,OAAO,SAAS,IAAI,IAAI;QACtB,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAC1C,CAAC;AAED,0BAA0B;AAC1B,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;AAelC,SAAS,uBAAuB,CAC9B,MAAc,EACd,OAA8C;IAE9C,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,CAAC;SACd,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,OAAO,EAAE,sBAAsB,KAAK,IAAI,EAAE,CAAC;YAC7C,OAAO;gBACL,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE,KAAK;gBACZ,QAAQ,EAAE,KAAK;gBACf,aAAa,EAAE,IAAI;gBACnB,UAAU,EAAE,CAAC;aACd,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,CAAC,CAAE,CAAC,GAAG;gBACvB,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,sBAAsB;gBACrC,UAAU,EAAE,CAAC;aACd,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,KAAK;YACf,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,MAAM,CAAC,MAAM;SAC1B,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAiB,EACjB,QAAyB,EACzB,OAGC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,MAAM,CAAC;IAExE,qBAAqB;IACrB,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAE5D,oFAAoF;IACpF,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC;IACzC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,UAAU,EAAE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC;IACjE,yEAAyE;IACzE,+EAA+E;IAC/E,MAAM,aAAa,GAAG,UAAU,EAAE,UAAU;QAC1C,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC;QACjD,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC;IACrB,MAAM,OAAO,GAAuB,eAAe,KAAK,WAAW,CAAC,MAAM,IAAI,aAAa,KAAK,WAAW,CAAC,IAAI;QAC9G,CAAC,CAAC,EAAE,GAAG,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,EAAE;QAClE,CAAC,CAAC,WAAW,CAAC;IAEhB,MAAM,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC;IACtD,MAAM,uBAAuB,GAAG,KAAK,CAAC,eAAe,CAAC;IACtD,MAAM,uBAAuB,GAAG,uBAAuB,CACrD,uBAAuB,EACvB,qBAAqB,CACtB,CAAC;IAEF,yFAAyF;IACzF,IACE,uBAAuB,IAAI,IAAI;QAC/B,uBAAuB,GAAG,qBAAqB,EAC/C,CAAC;QACD,MAAM,CAAC,IAAI,CACT;YACE,SAAS,EAAE,uBAAuB;YAClC,eAAe,EAAE,qBAAqB;YACtC,iBAAiB,EAAE,uBAAuB;YAC1C,OAAO,EAAE,OAAO,CAAC,IAAI;SACtB,EACD,0GAA0G,EAC1G,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,CACxB,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,SAAS,CAAC,OAAO,EAAE,CAAC;IAEpB,IAAI,MAA0B,CAAC;IAC/B,IAAI,QAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,0BAA0B;QAC1B,MAAM,GAAG,YAAY,EAAE,CAAC;QACxB,IAAI,OAAO,EAAE,QAAQ,EAAE,CAAC;YACtB,QAAQ,GAAG,IAAI,gBAAgB,CAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,EACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,EACtB;gBACE,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS;aAC9B,CACF,CAAC;YACF,KAAK,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QAED,qBAAqB;QACrB,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,cAAc,CAAC;YACnD,KAAK;YACL,OAAO;YACP,iBAAiB;YACjB,UAAU,EAAE,MAAM,CAAC,IAAI;SACxB,CAAC,CAAC;QAEH,2DAA2D;QAC3D,IAAI,MAAM,CAAC,MAAM,GAAG,0BAA0B,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CACT,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,EAC/C,2FAA2F,EAC3F,0BAA0B,EAC1B,MAAM,CAAC,MAAM,CACd,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,KAAK,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC/B,QAAQ,EAAE,cAAc,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAwC;YACtD,OAAO;YACP,MAAM;YACN,UAAU,EAAE,MAAM,CAAC,IAAI;SACxB,CAAC;QACF,6EAA6E;QAC7E,IACE,uBAAuB,IAAI,IAAI;YAC/B,uBAAuB,GAAG,qBAAqB,EAC/C,CAAC;YACD,UAAU,CAAC,cAAc,GAAG,uBAAuB,CAAC;QACtD,CAAC;QACD,IAAI,OAAO,CAAC,oBAAoB,IAAI,IAAI,EAAE,CAAC;YACzC,UAAU,CAAC,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;QAC/D,CAAC;QACD,IAAI,OAAO,CAAC,4BAA4B,IAAI,IAAI,EAAE,CAAC;YACjD,UAAU,CAAC,yBAAyB,GAAG,OAAO,CAAC,4BAA4B,CAAC;QAC9E,CAAC;QACD,IAAI,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC;YAC5B,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACrC,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;QAClD,QAAQ,EAAE,aAAa,EAAE,CAAC;QAE1B,oDAAoD;QACpD,IAAI,SAAS,CAAC,MAAM,IAAI,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YACjD,MAAM,IAAI,iBAAiB,EAAE,CAAC;QAChC,CAAC;QAED,6DAA6D;QAC7D,KAAK,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC;YACpC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,OAAO,EAAE,MAAM,CAAC,IAAI;YACpB,OAAO,EAAE;gBACP,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,eAAe,EAAE,OAAO,CAAC,eAAe;aACzC;YACD,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,2BAA2B,EAAE,OAAO,CAAC,+BAA+B;SACrE,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAChD,MAAM,WAAW,GACf,OAAO,aAAa,EAAE,CAAC,cAAc,CAAC,KAAK,QAAQ;YACjD,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,eAAe,GACnB,OAAO,aAAa,EAAE,CAAC,kBAAkB,CAAC,KAAK,QAAQ;YACrD,CAAC,CAAC,aAAa,CAAC,kBAAkB,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,QAAQ,GACZ,OAAO,aAAa,EAAE,CAAC,WAAW,CAAC,KAAK,QAAQ;YAC9C,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC;YAC5B,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,aAAa,GAAG,cAAc,CAClC,SAAS,CAAC,UAAU,EACpB,SAAS,CAAC,UAAU,CACrB,CAAC;QACF,MAAM,UAAU,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACtD,IAAI,eAAe,GAAG,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,CAAC;QACpE,IAAI,qBAAqB,GAAkB,eAAe;YACxD,CAAC,CAAC,eAAe,IAAI,sBAAsB;YAC3C,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,iBAAiB,GAAkB,IAAI,CAAC;QAC5C,IAAI,cAAc,GAAkB,IAAI,CAAC;QACzC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,IAAI,CAAC;QAExE,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,eAAe,GAAG,IAAI,CAAC;YACvB,qBAAqB,GAAG,eAAe,IAAI,sBAAsB,CAAC;QACpE,CAAC;QAED,IAAI,sBAAsB,GAAkB,IAAI,CAAC;QACjD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,oEAAoE;gBACpE,2EAA2E;gBAC3E,sEAAsE;gBACtE,+DAA+D;gBAC/D,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,EAAE;oBACjD,sBAAsB,EACpB,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;wBACpC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,iBAAiB;wBAC7C,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,cAAc;iBAC7C,CAAC,CAAC;gBACH,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC;gBACvC,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;oBACrB,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC;oBAC5B,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC;oBACnC,iBAAiB,GAAG,UAAU,CAAC,aAAa,CAAC;gBAC/C,CAAC;qBAAM,CAAC;oBACN,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;wBACjF,+EAA+E;wBAC/E,8EAA8E;wBAC9E,mFAAmF;wBACnF,sBAAsB,GAAG,qBAAqB,CAAC;oBACjD,CAAC;yBAAM,CAAC;wBACN,eAAe,GAAG,IAAI,CAAC;wBACvB,qBAAqB,GAAG,qBAAqB,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC5B,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB,GAAG,qBAAqB,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,QAAQ,GAAG,KAAK,CAAC,kBAAkB,IAAI,YAAY,CACvD,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,0BAA0B,CACrE,CAAC;QACF,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,iBAAiB,CAAC;QACvE,+EAA+E;QAC/E,MAAM,uBAAuB,GAC3B,CAAC,gBAAgB,IAAI,SAAS,CAAC,eAAe,CAAC;QACjD,2DAA2D;QAC3D,MAAM,mBAAmB,GACvB,CAAC,gBAAgB;YACjB,CAAC,SAAS,CAAC,eAAe,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAG;YACxB,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;YAC3C,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;SAC5C,CAAC,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;QAEvD,sEAAsE;QACtE,gFAAgF;QAChF,IAAI,WAAW,IAAI,CAAC,eAAe,IAAI,sBAAsB,IAAI,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;YAC5F,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,eAAe,GAAG,IAAI,CAAC;gBACvB,qBAAqB,GAAG,uBAAuB,CAAC;YAClD,CAAC;QACH,CAAC;QAED,mBAAmB;QACnB,MAAM,aAAa,GAA8B;YAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,IAAI,aAAa,EAAE;SACjD,CAAC;QACF,MAAM,MAAM,GAAmB;YAC7B,OAAO,EAAE,aAAa;SACvB,CAAC;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,KAAK,CAAC;gBACvC,CAAC,CAAC,oBAAoB;gBACtB,CAAC,CAAC,oBAAoB,SAAS,CAAC,QAAQ,IAAI,MAAM,EAAE,CAAC;YACvD,IAAI,OAAO,GAAG,QAAQ,OAAO,CAAC,IAAI,KAAK,QAAQ,4CAA4C,CAAC;YAC5F,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;gBACvB,OAAO,GAAG,QAAQ,OAAO,CAAC,IAAI,qCAAqC,UAAU,MAAM,OAAO,EAAE,CAAC;YAC/F,CAAC;YACD,IAAI,qBAAqB,KAAK,qBAAqB,EAAE,CAAC;gBACpD,OAAO,IAAI,6EAA6E,CAAC;YAC3F,CAAC;iBAAM,IAAI,qBAAqB,KAAK,uBAAuB,EAAE,CAAC;gBAC7D,OAAO,IAAI,sHAAsH,CAAC;YACpI,CAAC;iBAAM,IAAI,qBAAqB,IAAI,IAAI,EAAE,CAAC;gBACzC,OAAO,IAAI,sBAAsB,qBAAqB,GAAG,CAAC;gBAC1D,IAAI,sBAAsB,KAAK,qBAAqB,EAAE,CAAC;oBACrD,OAAO,IAAI,sEAAsE,CAAC;gBACpF,CAAC;YACH,CAAC;YACD,MAAM,IAAI,GAAG,wBAAwB,CAAC;gBACpC,MAAM,EAAE,aAAa;gBACrB,QAAQ;aACT,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO,IAAI,qBAAqB,IAAI,EAAE,CAAC;YACzC,CAAC;YACD,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,iFAAiF;QACjF,QAAQ,SAAS,CAAC,iBAAiB,EAAE,CAAC;YACpC,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC;gBAC/C,MAAM,IAAI,GAAG,SAAS,CAAC,oBAAoB,IAAI,CAAC,CAAC;gBACjD,IAAI,OAAO,GAAG,QAAQ,OAAO,CAAC,IAAI,4BAA4B,IAAI,YAAY,KAAK,oLAAoL,CAAC;gBACxQ,MAAM,OAAO,GAAG,wBAAwB,CAAC;oBACvC,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;oBAClE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;oBAClE,QAAQ;iBACT,CAAC,CAAC;gBACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,OAAO,IAAI,wBAAwB,OAAO,EAAE,CAAC;gBACrE,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACnD,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,MAAM,WAAW,GAAG,uBAAuB,CAAC;gBAC5C,MAAM,OAAO,GAAG,wBAAwB,CAAC;oBACvC,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;oBAClE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC;oBAClE,QAAQ;iBACT,CAAC,CAAC;gBACH,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,GAAG,CAAC;oBAChB,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,qBAAqB,WAAW,0BAA0B,OAAO,EAAE;oBACzF,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,qBAAqB,WAAW,IAAI,CAAC;gBAC/D,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACnD,MAAM;YACR,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,2EAA2E;gBAC3E,wEAAwE;gBACxE,IACE,CAAC,MAAM,CAAC,OAAO;oBACf,SAAS,CAAC,OAAO;oBACjB,SAAS,CAAC,QAAQ,KAAK,CAAC;oBACxB,SAAS,CAAC,QAAQ,KAAK,IAAI,EAC3B,CAAC;oBACD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;oBACtB,MAAM,IAAI,GAAG,wBAAwB,CAAC;wBACpC,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,aAAa;wBACrB,WAAW,EAAE,SAAS;wBACtB,QAAQ;qBACT,CAAC,CAAC;oBACH,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,GAAG,CAAC;wBACb,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,sBAAsB,SAAS,CAAC,QAAQ,QAAQ,IAAI,EAAE;wBAC5E,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,sBAAsB,SAAS,CAAC,QAAQ,GAAG,CAAC;oBACtE,IAAI,OAAO,GACT,UAAU,IAAI,IAAI;wBAChB,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,qEAAqE,UAAU,SAAS,WAAW,EAAE;wBAC3H,CAAC,CAAC,WAAW,CAAC;oBAClB,IAAI,sBAAsB,IAAI,IAAI,EAAE,CAAC;wBACnC,OAAO,IAAI,eAAe,sBAAsB,uCAAuC,CAAC;oBAC1F,CAAC;oBACD,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACrD,CAAC;gBAED,kEAAkE;gBAClE,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;oBAChC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;oBACtB,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,IAAI,gBAAgB,CAAC;oBACrD,MAAM,IAAI,GAAG,wBAAwB,CAAC;wBACpC,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,aAAa;wBACrB,WAAW,EAAE,SAAS;wBACtB,QAAQ;qBACT,CAAC,CAAC;oBACH,MAAM,OAAO,GACX,IAAI,CAAC,MAAM,GAAG,CAAC;wBACb,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,mBAAmB,OAAO,QAAQ,IAAI,EAAE;wBAC9D,CAAC,CAAC,QAAQ,OAAO,CAAC,IAAI,mBAAmB,OAAO,GAAG,CAAC;oBACxD,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACrD,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,QAAQ;gBACX,wEAAwE;gBACxE,MAAM;QACV,CAAC;QAED,gFAAgF;QAChF,8FAA8F;QAC9F,IAAI,mBAAmB,IAAI,SAAS,CAAC,iBAAiB,KAAK,MAAM,EAAE,CAAC;YAClE,IAAI,cAAc,IAAI,uBAAuB,EAAE,CAAC;gBAC9C,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;gBACtB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;oBACrB,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,kDAAkD,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;wBACjF,oCAAoC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS,uBAAuB;wBAC/F,+DAA+D;iBAClE,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,WAAW,EAAE;wBACX,iBAAiB,EAAE,IAAI;wBACvB,OAAO,EAAE,iBAAiB;wBAC1B,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,SAAS;wBAClD,OAAO,EACL,mIAAmI;qBACtI;iBACF,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,qEAAqE;QACrE,IAAI,KAAK,CAAC,eAAe,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvD,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACvD,CAAC;QAED,wCAAwC;QACxC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,MAAM,EAAE;wBACN,MAAM,EAAE,MAAM,CAAC,KAAK;wBACpB,OAAO,EAAE,OAAO,CAAC,IAAI;wBACrB,SAAS,EAAE,SAAS,CAAC,QAAQ;wBAC7B,SAAS,EAAE,SAAS,CAAC,QAAQ;wBAC7B,cAAc,EAAE,SAAS,CAAC,YAAY;wBACtC,UAAU,EAAE,SAAS,CAAC,SAAS,IAAI,IAAI;wBACvC,sBAAsB,EAAE,SAAS,CAAC,oBAAoB,IAAI,IAAI;wBAC9D,kBAAkB,EAAE,SAAS,CAAC,iBAAiB;wBAC/C,YAAY,EAAE,SAAS,CAAC,WAAW;wBACnC,YAAY,EAAE,SAAS,CAAC,WAAW;wBACnC,gBAAgB,EAAE,SAAS,CAAC,eAAe;wBAC3C,gBAAgB,EAAE,SAAS,CAAC,eAAe;wBAC3C,kBAAkB,EAAE,iBAAiB;wBACrC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM;wBACrC,YAAY,EAAE,WAAW;wBACzB,gBAAgB,EAAE,eAAe;wBACjC,aAAa,EAAE,YAAY;wBAC3B,mBAAmB,EAAE,iBAAiB;wBACtC,gBAAgB,EAAE,cAAc;wBAChC,mBAAmB,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI;wBACpE,eAAe,EAAE,OAAO,CAAC,OAAO;wBAChC,cAAc,EAAE,OAAO,CAAC,MAAM;wBAC9B,SAAS,EAAE,QAAQ;wBACnB,iBAAiB,EAAE,UAAU,IAAI,IAAI;wBACrC,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI;qBAClD;iBACF,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC1B,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAC1C,MAAM,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;QACD,SAAS,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC3D,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc,EAAE,QAAgB;IAC1D,IAAI,MAAM,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB;IACzB,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,wBAAwB;IACxB,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvD,MAAM,oBAAoB,GAAG,SAAS,CAAC,CAAC,OAAO;QAC/C,IAAI,MAAM,CAAC,MAAM,IAAI,oBAAoB,EAAE,CAAC;YAC1C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACxC,IAAI,QAAQ,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;oBAChC,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;YACtE,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,8CAA8C,CAAC;QACnE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC;IACnF,CAAC;IAED,iCAAiC;IACjC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,MAAM,cAAc,GAAG,yBAAyB,CAAC;QACjD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,cAAc,CAAC;IAC1F,CAAC;IAED,MAAM,WAAW,GAAG,wBAAwB,CAAC;IAC7C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC;AACnF,CAAC;AAED,gFAAgF"}
@@ -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" | "spawn" | "parse" | "done";
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
- * - Emits `notifications/progress` at defined stages
8
- * - Rate-limits to max 1 notification per 500ms per request
9
- * - Never includes secrets only run_id and stage name
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 runId;
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
- constructor(server: Server, progressToken: string | number, runId: string);
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
- * Respects rate-limiting (500ms minimum interval).
20
- * The "done" stage always emits regardless of rate limit.
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
- emit(stage: ProgressStage): Promise<void>;
75
+ private computeHeartbeatProgress;
23
76
  }
24
77
  /**
25
78
  * Extract _meta.progressToken from the raw MCP request params.