clinkx 0.2.3 → 0.3.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/README.md +40 -1
- package/conf/prompts/json-codereviewer.txt +1 -0
- package/conf/prompts/json.txt +1 -0
- package/dist/allowed-roots.d.ts +12 -0
- package/dist/allowed-roots.js +94 -0
- package/dist/allowed-roots.js.map +1 -0
- package/dist/context-builder/anchors.d.ts +11 -0
- package/dist/context-builder/anchors.js +19 -0
- package/dist/context-builder/anchors.js.map +1 -0
- package/dist/context-builder/bundle.d.ts +76 -0
- package/dist/context-builder/bundle.js +3573 -0
- package/dist/context-builder/bundle.js.map +1 -0
- package/dist/context-builder/codemap.d.ts +17 -0
- package/dist/context-builder/codemap.js +301 -0
- package/dist/context-builder/codemap.js.map +1 -0
- package/dist/context-builder/config.d.ts +60 -0
- package/dist/context-builder/config.js +204 -0
- package/dist/context-builder/config.js.map +1 -0
- package/dist/context-builder/delegate-packet.d.ts +182 -0
- package/dist/context-builder/delegate-packet.js +898 -0
- package/dist/context-builder/delegate-packet.js.map +1 -0
- package/dist/context-builder/delegate-reconstruction.d.ts +13 -0
- package/dist/context-builder/delegate-reconstruction.js +220 -0
- package/dist/context-builder/delegate-reconstruction.js.map +1 -0
- package/dist/context-builder/delegate-validation.d.ts +18 -0
- package/dist/context-builder/delegate-validation.js +367 -0
- package/dist/context-builder/delegate-validation.js.map +1 -0
- package/dist/context-builder/delegate.d.ts +24 -0
- package/dist/context-builder/delegate.js +133 -0
- package/dist/context-builder/delegate.js.map +1 -0
- package/dist/context-builder/diagnostics.d.ts +27 -0
- package/dist/context-builder/diagnostics.js +74 -0
- package/dist/context-builder/diagnostics.js.map +1 -0
- package/dist/context-builder/discovery.d.ts +118 -0
- package/dist/context-builder/discovery.js +1829 -0
- package/dist/context-builder/discovery.js.map +1 -0
- package/dist/context-builder/globs.d.ts +14 -0
- package/dist/context-builder/globs.js +175 -0
- package/dist/context-builder/globs.js.map +1 -0
- package/dist/context-builder/handler.d.ts +17 -0
- package/dist/context-builder/handler.js +3848 -0
- package/dist/context-builder/handler.js.map +1 -0
- package/dist/context-builder/path-signals.d.ts +7 -0
- package/dist/context-builder/path-signals.js +66 -0
- package/dist/context-builder/path-signals.js.map +1 -0
- package/dist/context-builder/paths.d.ts +30 -0
- package/dist/context-builder/paths.js +153 -0
- package/dist/context-builder/paths.js.map +1 -0
- package/dist/context-builder/progress.d.ts +15 -0
- package/dist/context-builder/progress.js +70 -0
- package/dist/context-builder/progress.js.map +1 -0
- package/dist/context-builder/receipt.d.ts +89 -0
- package/dist/context-builder/receipt.js +169 -0
- package/dist/context-builder/receipt.js.map +1 -0
- package/dist/context-builder/run-id.d.ts +7 -0
- package/dist/context-builder/run-id.js +31 -0
- package/dist/context-builder/run-id.js.map +1 -0
- package/dist/context-builder/schema.d.ts +431 -0
- package/dist/context-builder/schema.js +293 -0
- package/dist/context-builder/schema.js.map +1 -0
- package/dist/context-builder/secrets.d.ts +13 -0
- package/dist/context-builder/secrets.js +222 -0
- package/dist/context-builder/secrets.js.map +1 -0
- package/dist/context-builder/selection.d.ts +52 -0
- package/dist/context-builder/selection.js +1649 -0
- package/dist/context-builder/selection.js.map +1 -0
- package/dist/context-builder/status.d.ts +45 -0
- package/dist/context-builder/status.js +105 -0
- package/dist/context-builder/status.js.map +1 -0
- package/dist/context-builder/storage.d.ts +85 -0
- package/dist/context-builder/storage.js +746 -0
- package/dist/context-builder/storage.js.map +1 -0
- package/dist/context-builder/token-estimate.d.ts +8 -0
- package/dist/context-builder/token-estimate.js +17 -0
- package/dist/context-builder/token-estimate.js.map +1 -0
- package/dist/paths.d.ts +8 -0
- package/dist/paths.js +31 -43
- package/dist/paths.js.map +1 -1
- package/dist/pipeline.d.ts +47 -3
- package/dist/pipeline.js +135 -39
- package/dist/pipeline.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.js +40 -10
- package/dist/server.js.map +1 -1
- package/package.json +2 -1
- package/dist/artifacts.d.ts +0 -9
- package/dist/artifacts.js +0 -24
- package/dist/artifacts.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/context-builder/storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const CONTEXT_BUILDER_TOKEN_COUNTING_METHOD: "utf8_bytes_div_3_ceiling";
|
|
2
|
+
export type ContextBuilderTokenCounting = {
|
|
3
|
+
method: typeof CONTEXT_BUILDER_TOKEN_COUNTING_METHOD;
|
|
4
|
+
};
|
|
5
|
+
export declare function utf8ByteLength(input: string): number;
|
|
6
|
+
export declare function estimateContextBuilderTokensFromUtf8Bytes(utf8Bytes: number): number;
|
|
7
|
+
export declare function estimateContextBuilderTokens(input: string): number;
|
|
8
|
+
export declare function contextBuilderTokenCountingMethod(): ContextBuilderTokenCounting;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const CONTEXT_BUILDER_TOKEN_COUNTING_METHOD = "utf8_bytes_div_3_ceiling";
|
|
2
|
+
export function utf8ByteLength(input) {
|
|
3
|
+
return Buffer.byteLength(input, "utf8");
|
|
4
|
+
}
|
|
5
|
+
export function estimateContextBuilderTokensFromUtf8Bytes(utf8Bytes) {
|
|
6
|
+
if (!Number.isSafeInteger(utf8Bytes) || utf8Bytes < 0) {
|
|
7
|
+
throw new RangeError("utf8Bytes must be a non-negative safe integer");
|
|
8
|
+
}
|
|
9
|
+
return Math.ceil(utf8Bytes / 3);
|
|
10
|
+
}
|
|
11
|
+
export function estimateContextBuilderTokens(input) {
|
|
12
|
+
return estimateContextBuilderTokensFromUtf8Bytes(utf8ByteLength(input));
|
|
13
|
+
}
|
|
14
|
+
export function contextBuilderTokenCountingMethod() {
|
|
15
|
+
return { method: CONTEXT_BUILDER_TOKEN_COUNTING_METHOD };
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=token-estimate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-estimate.js","sourceRoot":"","sources":["../../src/context-builder/token-estimate.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qCAAqC,GAChD,0BAAmC,CAAC;AAMtC,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,OAAO,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,yCAAyC,CACvD,SAAiB;IAEjB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,UAAU,CAAC,+CAA+C,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,OAAO,yCAAyC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,OAAO,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;AAC3D,CAAC"}
|
package/dist/paths.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse CLINKX_ALLOWED_ROOTS env into an array of resolved absolute paths.
|
|
3
|
+
* Falls back to process.cwd() when not set.
|
|
4
|
+
*/
|
|
5
|
+
export declare function getCurrentAllowedRoots(): string[];
|
|
1
6
|
/**
|
|
2
7
|
* Startup guard: refuse to run if cwd resolves to filesystem root
|
|
3
8
|
* unless CLINKX_ALLOWED_ROOTS is explicitly set.
|
|
@@ -15,3 +20,6 @@ export declare function assertNotRootDir(): void;
|
|
|
15
20
|
* Throws InvalidParamsError if validation fails.
|
|
16
21
|
*/
|
|
17
22
|
export declare function validatePath(inputPath: string): string;
|
|
23
|
+
export declare function validateExistingPath(inputPath: string): string;
|
|
24
|
+
export declare function validateExistingDirectory(inputPath: string): string;
|
|
25
|
+
export declare function validateProspectiveChildPath(realpathedParent: string, childPath: string): string;
|
package/dist/paths.js
CHANGED
|
@@ -1,42 +1,14 @@
|
|
|
1
1
|
import * as fs from "node:fs";
|
|
2
2
|
import * as path from "node:path";
|
|
3
|
+
import { isFilesystemRoot, isPathWithinAllowedRoots, isSamePathOrDescendant, parseAllowedRootsEnv, } from "./allowed-roots.js";
|
|
3
4
|
import { InvalidParamsError } from "./errors.js";
|
|
4
5
|
import { logger } from "./logger.js";
|
|
5
6
|
/**
|
|
6
7
|
* Parse CLINKX_ALLOWED_ROOTS env into an array of resolved absolute paths.
|
|
7
8
|
* Falls back to process.cwd() when not set.
|
|
8
9
|
*/
|
|
9
|
-
function
|
|
10
|
-
|
|
11
|
-
const raw = envVal != null && envVal.length > 0
|
|
12
|
-
? envVal
|
|
13
|
-
.split(",")
|
|
14
|
-
.map((r) => r.trim())
|
|
15
|
-
.filter((r) => r.length > 0)
|
|
16
|
-
: [process.cwd()];
|
|
17
|
-
// Resolve through realpath so symlinks (e.g. macOS /var → /private/var)
|
|
18
|
-
// are consistent with how we resolve validated paths.
|
|
19
|
-
return raw.map((r) => {
|
|
20
|
-
try {
|
|
21
|
-
return fs.realpathSync(path.resolve(r));
|
|
22
|
-
}
|
|
23
|
-
catch {
|
|
24
|
-
return path.resolve(r);
|
|
25
|
-
}
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Check whether a resolved path is a filesystem root.
|
|
30
|
-
* Handles Unix (/) and Windows drive roots (C:\).
|
|
31
|
-
*/
|
|
32
|
-
function isFilesystemRoot(resolved) {
|
|
33
|
-
// Unix root
|
|
34
|
-
if (resolved === "/")
|
|
35
|
-
return true;
|
|
36
|
-
// Windows drive root: single letter + colon + backslash (or just colon + backslash)
|
|
37
|
-
if (/^[a-zA-Z]:[/\\]?$/.test(resolved))
|
|
38
|
-
return true;
|
|
39
|
-
return false;
|
|
10
|
+
export function getCurrentAllowedRoots() {
|
|
11
|
+
return parseAllowedRootsEnv();
|
|
40
12
|
}
|
|
41
13
|
/**
|
|
42
14
|
* Startup guard: refuse to run if cwd resolves to filesystem root
|
|
@@ -66,22 +38,38 @@ export function assertNotRootDir() {
|
|
|
66
38
|
* Throws InvalidParamsError if validation fails.
|
|
67
39
|
*/
|
|
68
40
|
export function validatePath(inputPath) {
|
|
69
|
-
|
|
70
|
-
|
|
41
|
+
return validateExistingPath(inputPath);
|
|
42
|
+
}
|
|
43
|
+
export function validateExistingPath(inputPath) {
|
|
44
|
+
const roots = getCurrentAllowedRoots();
|
|
45
|
+
const resolved = realpathExistingPath(inputPath);
|
|
46
|
+
if (!isPathWithinAllowedRoots(resolved, roots)) {
|
|
47
|
+
throw new InvalidParamsError(`Path "${inputPath}" (resolved: ${resolved}) is outside allowed roots. ` +
|
|
48
|
+
`Allowed: ${roots.join(", ")}`);
|
|
49
|
+
}
|
|
50
|
+
return resolved;
|
|
51
|
+
}
|
|
52
|
+
export function validateExistingDirectory(inputPath) {
|
|
53
|
+
const resolved = validateExistingPath(inputPath);
|
|
54
|
+
const stats = fs.statSync(resolved);
|
|
55
|
+
if (!stats.isDirectory()) {
|
|
56
|
+
throw new InvalidParamsError(`Path is not a directory: ${inputPath}`);
|
|
57
|
+
}
|
|
58
|
+
return resolved;
|
|
59
|
+
}
|
|
60
|
+
export function validateProspectiveChildPath(realpathedParent, childPath) {
|
|
61
|
+
const resolvedChild = path.resolve(realpathedParent, childPath);
|
|
62
|
+
if (!isSamePathOrDescendant(resolvedChild, realpathedParent)) {
|
|
63
|
+
throw new InvalidParamsError(`Path "${childPath}" escapes parent directory: ${realpathedParent}`);
|
|
64
|
+
}
|
|
65
|
+
return resolvedChild;
|
|
66
|
+
}
|
|
67
|
+
function realpathExistingPath(inputPath) {
|
|
71
68
|
try {
|
|
72
|
-
|
|
69
|
+
return fs.realpathSync(inputPath);
|
|
73
70
|
}
|
|
74
71
|
catch {
|
|
75
72
|
throw new InvalidParamsError(`Path does not exist or is not accessible: ${inputPath}`);
|
|
76
73
|
}
|
|
77
|
-
const withinRoot = roots.some((root) => {
|
|
78
|
-
const normalizedRoot = root.endsWith(path.sep) ? root : root + path.sep;
|
|
79
|
-
return resolved === root || resolved.startsWith(normalizedRoot);
|
|
80
|
-
});
|
|
81
|
-
if (!withinRoot) {
|
|
82
|
-
throw new InvalidParamsError(`Path "${inputPath}" (resolved: ${resolved}) is outside allowed roots. ` +
|
|
83
|
-
`Allowed: ${roots.join(", ")}`);
|
|
84
|
-
}
|
|
85
|
-
return resolved;
|
|
86
74
|
}
|
|
87
75
|
//# sourceMappingURL=paths.js.map
|
package/dist/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;GAGG;AACH,
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,oBAAoB,EAAE,CAAC;AAChC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACxC,MAAM,gBAAgB,GACpB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,IAAI;QAC3C,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjD,IAAI,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,IAAI,KAAK,CACb,2CAA2C,GAAG,KAAK;YACjD,gFAAgF;YAChF,iFAAiF;YACjF,8BAA8B,CACjC,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,EAAE,+BAA+B,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,OAAO,oBAAoB,CAAC,SAAS,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAiB;IACpD,MAAM,KAAK,GAAG,sBAAsB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,CAAC,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,kBAAkB,CAC1B,SAAS,SAAS,gBAAgB,QAAQ,8BAA8B;YACtE,YAAY,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjC,CAAC;IACJ,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAiB;IACzD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,kBAAkB,CAAC,4BAA4B,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,gBAAwB,EACxB,SAAiB;IAEjB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAEhE,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,kBAAkB,CAC1B,SAAS,SAAS,+BAA+B,gBAAgB,EAAE,CACpE,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,kBAAkB,CAC1B,6CAA6C,SAAS,EAAE,CACzD,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/pipeline.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ClinkInput } from "./schema.js";
|
|
2
2
|
import type { AdapterRegistry } from "./registry.js";
|
|
3
|
+
import { type RunResult } from "./runner.js";
|
|
3
4
|
import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
4
5
|
export declare function pickPreferTail(head: string, tail: string): string;
|
|
5
6
|
export declare function formatStdStreamsForError(options: {
|
|
@@ -11,16 +12,57 @@ export declare function formatStdStreamsForError(options: {
|
|
|
11
12
|
export declare function classifyStdoutCrash(stdout: string, stderr?: string): string | null;
|
|
12
13
|
export declare function panicSpecificity(panicClass: string): number;
|
|
13
14
|
/**
|
|
14
|
-
* Resolve the effective timeout
|
|
15
|
-
*
|
|
15
|
+
* Resolve the effective timeout.
|
|
16
|
+
*
|
|
17
|
+
* Normal clink calls treat the adapter timeout as a floor. Internal delegate
|
|
18
|
+
* calls may opt into an honest request ceiling so their watchdog and subprocess
|
|
19
|
+
* wall timeout share one deadline.
|
|
16
20
|
*/
|
|
17
|
-
export declare function resolveEffectiveTimeout(requested: number | undefined, adapterTimeout: number
|
|
21
|
+
export declare function resolveEffectiveTimeout(requested: number | undefined, adapterTimeout: number, options?: {
|
|
22
|
+
allowBelowAdapter?: boolean;
|
|
23
|
+
}): number;
|
|
18
24
|
export interface PipelineResult {
|
|
19
25
|
content: Array<{
|
|
20
26
|
type: "text";
|
|
21
27
|
text: string;
|
|
22
28
|
}>;
|
|
23
29
|
isError?: boolean;
|
|
30
|
+
jsonFidelity?: PipelineJsonFidelityMetadata;
|
|
31
|
+
}
|
|
32
|
+
export type PipelineJsonTopLevelType = "object" | "array" | "string" | "number" | "boolean" | "null";
|
|
33
|
+
export interface PipelineJsonFidelityMetadata {
|
|
34
|
+
readonly mode: "strict";
|
|
35
|
+
readonly enforced: boolean;
|
|
36
|
+
readonly parseSource: string;
|
|
37
|
+
readonly parseStatus: string | null;
|
|
38
|
+
readonly rejectionReason: string | null;
|
|
39
|
+
readonly valid: boolean;
|
|
40
|
+
readonly topLevelType: PipelineJsonTopLevelType | null;
|
|
41
|
+
readonly salvaged: boolean;
|
|
42
|
+
readonly salvageMethod: string | null;
|
|
43
|
+
readonly blockCount: number | null;
|
|
44
|
+
readonly rawFallback: boolean;
|
|
45
|
+
readonly capture: {
|
|
46
|
+
readonly truncated: boolean;
|
|
47
|
+
readonly streams: string[];
|
|
48
|
+
readonly stdoutTruncated: boolean;
|
|
49
|
+
readonly stderrTruncated: boolean;
|
|
50
|
+
};
|
|
51
|
+
readonly response: {
|
|
52
|
+
readonly truncated: boolean;
|
|
53
|
+
readonly maxChars: number;
|
|
54
|
+
};
|
|
55
|
+
readonly termination: {
|
|
56
|
+
readonly reason: RunResult["terminationReason"];
|
|
57
|
+
readonly timedOut: boolean;
|
|
58
|
+
readonly idleTimedOut: boolean;
|
|
59
|
+
readonly killed: boolean;
|
|
60
|
+
readonly signal: string | null;
|
|
61
|
+
};
|
|
62
|
+
readonly strict: {
|
|
63
|
+
readonly acceptable: boolean;
|
|
64
|
+
readonly violations: string[];
|
|
65
|
+
};
|
|
24
66
|
}
|
|
25
67
|
export declare function executePipeline(input: ClinkInput, registry: AdapterRegistry, options?: {
|
|
26
68
|
signal?: AbortSignal;
|
|
@@ -28,6 +70,8 @@ export declare function executePipeline(input: ClinkInput, registry: AdapterRegi
|
|
|
28
70
|
server: Server;
|
|
29
71
|
token: string | number;
|
|
30
72
|
};
|
|
73
|
+
jsonFidelity?: "strict";
|
|
74
|
+
allowTimeoutBelowAdapter?: boolean;
|
|
31
75
|
}): Promise<PipelineResult>;
|
|
32
76
|
/**
|
|
33
77
|
* Limit output to maxChars with JSON-aware truncation.
|
package/dist/pipeline.js
CHANGED
|
@@ -135,53 +135,74 @@ export function panicSpecificity(panicClass) {
|
|
|
135
135
|
return PANIC_SPECIFICITY[panicClass] ?? 0;
|
|
136
136
|
}
|
|
137
137
|
/**
|
|
138
|
-
* Resolve the effective timeout
|
|
139
|
-
*
|
|
138
|
+
* Resolve the effective timeout.
|
|
139
|
+
*
|
|
140
|
+
* Normal clink calls treat the adapter timeout as a floor. Internal delegate
|
|
141
|
+
* calls may opt into an honest request ceiling so their watchdog and subprocess
|
|
142
|
+
* wall timeout share one deadline.
|
|
140
143
|
*/
|
|
141
|
-
export function resolveEffectiveTimeout(requested, adapterTimeout) {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
+
export function resolveEffectiveTimeout(requested, adapterTimeout, options) {
|
|
145
|
+
if (requested == null) {
|
|
146
|
+
return adapterTimeout;
|
|
147
|
+
}
|
|
148
|
+
return options?.allowBelowAdapter === true
|
|
149
|
+
? requested
|
|
144
150
|
: Math.max(requested, adapterTimeout);
|
|
145
151
|
}
|
|
152
|
+
function shouldWarnLowerTimeoutIgnored(requested, adapterTimeout, options) {
|
|
153
|
+
return options?.allowBelowAdapter !== true &&
|
|
154
|
+
requested != null &&
|
|
155
|
+
requested < adapterTimeout;
|
|
156
|
+
}
|
|
157
|
+
function shouldPassTimeoutToRunner(requested, adapterTimeout, options) {
|
|
158
|
+
return requested != null &&
|
|
159
|
+
(options?.allowBelowAdapter === true || requested > adapterTimeout);
|
|
160
|
+
}
|
|
161
|
+
function resolveRunnerTimeout(requested, adapterTimeout, options) {
|
|
162
|
+
return shouldPassTimeoutToRunner(requested, adapterTimeout, options)
|
|
163
|
+
? requested
|
|
164
|
+
: undefined;
|
|
165
|
+
}
|
|
146
166
|
// Module-level singletons
|
|
147
167
|
const continuationCache = new ContinuationCache();
|
|
148
168
|
const semaphore = new Semaphore();
|
|
169
|
+
function jsonTopLevelType(value) {
|
|
170
|
+
if (value === null)
|
|
171
|
+
return "null";
|
|
172
|
+
if (Array.isArray(value))
|
|
173
|
+
return "array";
|
|
174
|
+
return typeof value;
|
|
175
|
+
}
|
|
149
176
|
function normalizeJsonRoleOutput(output, options) {
|
|
150
177
|
const trimmed = output.trim();
|
|
151
178
|
if (trimmed.length === 0) {
|
|
152
179
|
return {
|
|
153
180
|
content: output,
|
|
154
181
|
valid: false,
|
|
182
|
+
topLevelType: null,
|
|
155
183
|
salvaged: false,
|
|
156
184
|
salvageMethod: null,
|
|
157
185
|
blockCount: 0,
|
|
158
186
|
};
|
|
159
187
|
}
|
|
160
188
|
try {
|
|
161
|
-
JSON.parse(trimmed);
|
|
189
|
+
const parsed = JSON.parse(trimmed);
|
|
162
190
|
return {
|
|
163
191
|
content: output,
|
|
164
192
|
valid: true,
|
|
193
|
+
topLevelType: jsonTopLevelType(parsed),
|
|
165
194
|
salvaged: false,
|
|
166
195
|
salvageMethod: null,
|
|
167
196
|
blockCount: 1,
|
|
168
197
|
};
|
|
169
198
|
}
|
|
170
199
|
catch {
|
|
171
|
-
if (options?.allowMixedBlockSalvage !== true) {
|
|
172
|
-
return {
|
|
173
|
-
content: output,
|
|
174
|
-
valid: false,
|
|
175
|
-
salvaged: false,
|
|
176
|
-
salvageMethod: null,
|
|
177
|
-
blockCount: 0,
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
200
|
const blocks = findAllJsonBlocks(output, { maxBlocks: 2 });
|
|
181
|
-
if (blocks.length === 1) {
|
|
201
|
+
if (options?.allowMixedBlockSalvage === true && blocks.length === 1) {
|
|
182
202
|
return {
|
|
183
203
|
content: blocks[0].raw,
|
|
184
204
|
valid: true,
|
|
205
|
+
topLevelType: jsonTopLevelType(blocks[0].value),
|
|
185
206
|
salvaged: true,
|
|
186
207
|
salvageMethod: "single_block_extract",
|
|
187
208
|
blockCount: 1,
|
|
@@ -190,6 +211,7 @@ function normalizeJsonRoleOutput(output, options) {
|
|
|
190
211
|
return {
|
|
191
212
|
content: output,
|
|
192
213
|
valid: false,
|
|
214
|
+
topLevelType: null,
|
|
193
215
|
salvaged: false,
|
|
194
216
|
salvageMethod: null,
|
|
195
217
|
blockCount: blocks.length,
|
|
@@ -236,10 +258,10 @@ export async function executePipeline(input, registry, options) {
|
|
|
236
258
|
: baseAdapter;
|
|
237
259
|
const adapterTimeoutSeconds = adapter.timeout_seconds;
|
|
238
260
|
const requestedTimeoutSeconds = input.timeout_seconds;
|
|
239
|
-
const effectiveTimeoutSeconds = resolveEffectiveTimeout(requestedTimeoutSeconds, adapterTimeoutSeconds);
|
|
261
|
+
const effectiveTimeoutSeconds = resolveEffectiveTimeout(requestedTimeoutSeconds, adapterTimeoutSeconds, { allowBelowAdapter: options?.allowTimeoutBelowAdapter === true });
|
|
262
|
+
const runnerTimeoutSeconds = resolveRunnerTimeout(requestedTimeoutSeconds, adapterTimeoutSeconds, { allowBelowAdapter: options?.allowTimeoutBelowAdapter === true });
|
|
240
263
|
// 1a. If a caller tries to shorten below the user-configured adapter timeout, ignore it.
|
|
241
|
-
if (requestedTimeoutSeconds != null
|
|
242
|
-
requestedTimeoutSeconds < adapterTimeoutSeconds) {
|
|
264
|
+
if (shouldWarnLowerTimeoutIgnored(requestedTimeoutSeconds, adapterTimeoutSeconds, { allowBelowAdapter: options?.allowTimeoutBelowAdapter === true }) && requestedTimeoutSeconds != null) {
|
|
243
265
|
logger.warn({
|
|
244
266
|
requested: requestedTimeoutSeconds,
|
|
245
267
|
adapter_timeout: adapterTimeoutSeconds,
|
|
@@ -281,10 +303,10 @@ export async function executePipeline(input, registry, options) {
|
|
|
281
303
|
prompt,
|
|
282
304
|
runDirPath: runDir.path,
|
|
283
305
|
};
|
|
284
|
-
//
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
runOptions.timeoutSeconds =
|
|
306
|
+
// Normal calls may only extend adapter timeouts; delegate calls may set an
|
|
307
|
+
// explicit lower ceiling so watchdog and subprocess timeout agree.
|
|
308
|
+
if (runnerTimeoutSeconds != null) {
|
|
309
|
+
runOptions.timeoutSeconds = runnerTimeoutSeconds;
|
|
288
310
|
}
|
|
289
311
|
if (adapter.idle_timeout_seconds != null) {
|
|
290
312
|
runOptions.idleTimeoutSeconds = adapter.idle_timeout_seconds;
|
|
@@ -301,7 +323,7 @@ export async function executePipeline(input, registry, options) {
|
|
|
301
323
|
if (runResult.killed && options?.signal?.aborted) {
|
|
302
324
|
throw new CancellationError();
|
|
303
325
|
}
|
|
304
|
-
// 7. Extract output
|
|
326
|
+
// 7. Extract output using the deterministic extraction order
|
|
305
327
|
void progress?.emit("parse");
|
|
306
328
|
const extracted = await extractResult({
|
|
307
329
|
stdoutHead: runResult.stdoutHead,
|
|
@@ -352,31 +374,37 @@ export async function executePipeline(input, registry, options) {
|
|
|
352
374
|
let semanticFailureReason = semanticFailure
|
|
353
375
|
? rejectionReason ?? "invalid_final_result"
|
|
354
376
|
: null;
|
|
377
|
+
let jsonValid = false;
|
|
378
|
+
let jsonTopLevel = null;
|
|
355
379
|
let jsonSalvaged = false;
|
|
356
380
|
let jsonSalvageMethod = null;
|
|
357
381
|
let jsonBlockCount = null;
|
|
358
|
-
const enforceJson = input.role === "json" ||
|
|
382
|
+
const enforceJson = input.role === "json" ||
|
|
383
|
+
input.expect_json === true ||
|
|
384
|
+
options?.jsonFidelity === "strict";
|
|
359
385
|
if (parseStatus === "invalid") {
|
|
360
386
|
semanticFailure = true;
|
|
361
387
|
semanticFailureReason = rejectionReason ?? "invalid_final_result";
|
|
362
388
|
}
|
|
363
389
|
let secondaryFailureReason = null;
|
|
364
390
|
if (enforceJson) {
|
|
391
|
+
const normalized = normalizeJsonRoleOutput(output, {
|
|
392
|
+
allowMixedBlockSalvage: extracted.result.source === "parser" ||
|
|
393
|
+
extracted.result.source === "result_contract" ||
|
|
394
|
+
extracted.result.source === "json_extract",
|
|
395
|
+
});
|
|
396
|
+
jsonValid = normalized.valid;
|
|
397
|
+
jsonTopLevel = normalized.topLevelType;
|
|
398
|
+
jsonBlockCount = normalized.blockCount;
|
|
399
|
+
jsonSalvaged = normalized.salvaged;
|
|
400
|
+
jsonSalvageMethod = normalized.salvageMethod;
|
|
365
401
|
if (!semanticFailure) {
|
|
366
402
|
// Salvage (extracting a single JSON block from mixed prose) is only
|
|
367
403
|
// allowed for higher-confidence extraction paths (parser, result_contract,
|
|
368
404
|
// json_extract). Raw stdout fallback is excluded because unstructured
|
|
369
405
|
// CLI output is too unreliable for safe JSON block extraction.
|
|
370
|
-
const normalized = normalizeJsonRoleOutput(output, {
|
|
371
|
-
allowMixedBlockSalvage: extracted.result.source === "parser" ||
|
|
372
|
-
extracted.result.source === "result_contract" ||
|
|
373
|
-
extracted.result.source === "json_extract",
|
|
374
|
-
});
|
|
375
|
-
jsonBlockCount = normalized.blockCount;
|
|
376
406
|
if (normalized.valid) {
|
|
377
407
|
output = normalized.content;
|
|
378
|
-
jsonSalvaged = normalized.salvaged;
|
|
379
|
-
jsonSalvageMethod = normalized.salvageMethod;
|
|
380
408
|
}
|
|
381
409
|
else {
|
|
382
410
|
if (runResult.exitCode !== 0 && runResult.exitCode !== null && extracted.isError) {
|
|
@@ -392,10 +420,7 @@ export async function executePipeline(input, registry, options) {
|
|
|
392
420
|
}
|
|
393
421
|
}
|
|
394
422
|
else {
|
|
395
|
-
|
|
396
|
-
JSON.parse(output.trim());
|
|
397
|
-
}
|
|
398
|
-
catch {
|
|
423
|
+
if (!normalized.valid) {
|
|
399
424
|
secondaryFailureReason = "invalid_json_output";
|
|
400
425
|
}
|
|
401
426
|
}
|
|
@@ -403,6 +428,7 @@ export async function executePipeline(input, registry, options) {
|
|
|
403
428
|
// 8. Limit output size
|
|
404
429
|
const maxChars = input.max_response_chars ?? safeParseInt(process.env["CLINKX_MAX_RESPONSE_CHARS"], DEFAULT_MAX_RESPONSE_CHARS);
|
|
405
430
|
const limited = limitOutput(output, maxChars);
|
|
431
|
+
const responseTruncated = limited !== output;
|
|
406
432
|
const isResultContract = extracted.result.source === "result_contract";
|
|
407
433
|
// Fidelity-critical: only stdout truncation matters for stdout-extracted paths
|
|
408
434
|
const stdoutCriticalTruncated = !isResultContract && runResult.stdoutTruncated;
|
|
@@ -415,7 +441,7 @@ export async function executePipeline(input, registry, options) {
|
|
|
415
441
|
].filter((stream) => stream != null);
|
|
416
442
|
// F5: For role "json", verify the limited output is still valid JSON.
|
|
417
443
|
// Skip when JSON failure was already demoted to secondary (non-zero exit path).
|
|
418
|
-
if (enforceJson && !semanticFailure && secondaryFailureReason == null &&
|
|
444
|
+
if (enforceJson && !semanticFailure && secondaryFailureReason == null && responseTruncated) {
|
|
419
445
|
try {
|
|
420
446
|
JSON.parse(limited);
|
|
421
447
|
}
|
|
@@ -566,6 +592,76 @@ export async function executePipeline(input, registry, options) {
|
|
|
566
592
|
}),
|
|
567
593
|
});
|
|
568
594
|
}
|
|
595
|
+
if (options?.jsonFidelity === "strict") {
|
|
596
|
+
const rawFallback = extracted.result.source === "raw_fallback" ||
|
|
597
|
+
extracted.result.source === "stderr_fallback";
|
|
598
|
+
const violations = [];
|
|
599
|
+
if (!jsonValid) {
|
|
600
|
+
violations.push("invalid_json");
|
|
601
|
+
}
|
|
602
|
+
if (jsonValid && jsonTopLevel !== "object") {
|
|
603
|
+
violations.push("non_object_json");
|
|
604
|
+
}
|
|
605
|
+
if (jsonSalvaged) {
|
|
606
|
+
violations.push("json_salvaged");
|
|
607
|
+
}
|
|
608
|
+
if (jsonBlockCount != null && jsonBlockCount !== 1) {
|
|
609
|
+
violations.push("json_block_count");
|
|
610
|
+
}
|
|
611
|
+
if (rawFallback) {
|
|
612
|
+
violations.push("raw_fallback");
|
|
613
|
+
}
|
|
614
|
+
if (runResult.stdoutTruncated || runResult.stderrTruncated) {
|
|
615
|
+
violations.push("capture_truncated");
|
|
616
|
+
}
|
|
617
|
+
if (responseTruncated) {
|
|
618
|
+
violations.push("response_truncated");
|
|
619
|
+
}
|
|
620
|
+
if (runResult.terminationReason !== "none") {
|
|
621
|
+
violations.push("terminated");
|
|
622
|
+
}
|
|
623
|
+
if (result.isError === true) {
|
|
624
|
+
violations.push("pipeline_error");
|
|
625
|
+
}
|
|
626
|
+
const acceptable = violations.length === 0;
|
|
627
|
+
result.jsonFidelity = {
|
|
628
|
+
mode: "strict",
|
|
629
|
+
enforced: enforceJson,
|
|
630
|
+
parseSource: extracted.result.source ?? "unknown",
|
|
631
|
+
parseStatus,
|
|
632
|
+
rejectionReason,
|
|
633
|
+
valid: jsonValid,
|
|
634
|
+
topLevelType: jsonTopLevel,
|
|
635
|
+
salvaged: jsonSalvaged,
|
|
636
|
+
salvageMethod: jsonSalvageMethod,
|
|
637
|
+
blockCount: jsonBlockCount,
|
|
638
|
+
rawFallback,
|
|
639
|
+
capture: {
|
|
640
|
+
truncated: runResult.stdoutTruncated || runResult.stderrTruncated,
|
|
641
|
+
streams: truncationStreams,
|
|
642
|
+
stdoutTruncated: runResult.stdoutTruncated,
|
|
643
|
+
stderrTruncated: runResult.stderrTruncated,
|
|
644
|
+
},
|
|
645
|
+
response: {
|
|
646
|
+
truncated: responseTruncated,
|
|
647
|
+
maxChars,
|
|
648
|
+
},
|
|
649
|
+
termination: {
|
|
650
|
+
reason: runResult.terminationReason,
|
|
651
|
+
timedOut: runResult.timedOut,
|
|
652
|
+
idleTimedOut: runResult.idleTimedOut,
|
|
653
|
+
killed: runResult.killed,
|
|
654
|
+
signal: runResult.signal,
|
|
655
|
+
},
|
|
656
|
+
strict: {
|
|
657
|
+
acceptable,
|
|
658
|
+
violations,
|
|
659
|
+
},
|
|
660
|
+
};
|
|
661
|
+
if (!acceptable) {
|
|
662
|
+
result.isError = true;
|
|
663
|
+
}
|
|
664
|
+
}
|
|
569
665
|
// Store continuation only on true success (after all error handling)
|
|
570
666
|
if (input.continuation_id && output && !result.isError) {
|
|
571
667
|
continuationCache.set(input.continuation_id, output);
|
|
@@ -665,5 +761,5 @@ export function limitOutput(output, maxChars) {
|
|
|
665
761
|
const textTrailer = "\n\n[Output truncated]";
|
|
666
762
|
return output.slice(0, Math.max(0, maxChars - textTrailer.length)) + textTrailer;
|
|
667
763
|
}
|
|
668
|
-
// Output extraction/parsing is implemented in src/parsers/extract.ts
|
|
764
|
+
// Output extraction/parsing is implemented in src/parsers/extract.ts.
|
|
669
765
|
//# sourceMappingURL=pipeline.js.map
|