@xrkseek/harness 0.5.19 → 0.5.21
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/node_modules/@xrkseek/core-agent/dist/index.d.ts +5 -0
- package/node_modules/@xrkseek/core-agent/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent/dist/index.js +3 -0
- package/node_modules/@xrkseek/core-agent/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +6 -0
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js +7 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/search-text.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/search-text.js +5 -3
- package/node_modules/@xrkseek/core-session/dist/search-text.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/definition.d.ts +12 -0
- package/node_modules/@xrkseek/core-tools/dist/definition.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/definition.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.d.ts +3 -1
- package/node_modules/@xrkseek/core-tools/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/index.js +2 -0
- package/node_modules/@xrkseek/core-tools/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/materialize.d.ts +6 -0
- package/node_modules/@xrkseek/core-tools/dist/materialize.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/materialize.js +7 -1
- package/node_modules/@xrkseek/core-tools/dist/materialize.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js +3 -1
- package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/tool-exposure.d.ts +33 -0
- package/node_modules/@xrkseek/core-tools/dist/tool-exposure.d.ts.map +1 -0
- package/node_modules/@xrkseek/core-tools/dist/tool-exposure.js +145 -0
- package/node_modules/@xrkseek/core-tools/dist/tool-exposure.js.map +1 -0
- package/node_modules/@xrkseek/core-tools/dist/tool-search.d.ts +20 -0
- package/node_modules/@xrkseek/core-tools/dist/tool-search.d.ts.map +1 -0
- package/node_modules/@xrkseek/core-tools/dist/tool-search.js +78 -0
- package/node_modules/@xrkseek/core-tools/dist/tool-search.js.map +1 -0
- package/node_modules/@xrkseek/exec-computer-use/dist/format.d.ts +3 -3
- package/node_modules/@xrkseek/exec-computer-use/dist/format.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-computer-use/dist/format.js +6 -17
- package/node_modules/@xrkseek/exec-computer-use/dist/format.js.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +15 -1
- package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/index.js +27 -11
- package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/path-overreach-pre.d.ts +23 -0
- package/node_modules/@xrkseek/exec-fs/dist/path-overreach-pre.d.ts.map +1 -0
- package/node_modules/@xrkseek/exec-fs/dist/path-overreach-pre.js +142 -0
- package/node_modules/@xrkseek/exec-fs/dist/path-overreach-pre.js.map +1 -0
- package/node_modules/@xrkseek/exec-fs/dist/paths.d.ts +9 -6
- package/node_modules/@xrkseek/exec-fs/dist/paths.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-fs/dist/paths.js +14 -6
- package/node_modules/@xrkseek/exec-fs/dist/paths.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/fetch-http.d.ts +2 -2
- package/node_modules/@xrkseek/exec-web/dist/fetch-http.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/fetch-http.js +146 -56
- package/node_modules/@xrkseek/exec-web/dist/fetch-http.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/format.d.ts +15 -7
- package/node_modules/@xrkseek/exec-web/dist/format.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/format.js +58 -21
- package/node_modules/@xrkseek/exec-web/dist/format.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/exec-web/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/index.js +1 -1
- package/node_modules/@xrkseek/exec-web/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/tools.js +13 -3
- package/node_modules/@xrkseek/exec-web/dist/tools.js.map +1 -1
- package/node_modules/@xrkseek/exec-web/dist/types.d.ts +13 -0
- package/node_modules/@xrkseek/exec-web/dist/types.d.ts.map +1 -1
- package/node_modules/@xrkseek/exec-web/package.json +2 -1
- package/node_modules/@xrkseek/mcp/dist/register.d.ts.map +1 -1
- package/node_modules/@xrkseek/mcp/dist/register.js +2 -0
- package/node_modules/@xrkseek/mcp/dist/register.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +19 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.js +115 -5
- package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
- package/node_modules/@xrkseek/preset-server/dist/preset.js +7 -1
- package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
- package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/protocol/dist/content.d.ts +31 -0
- package/node_modules/@xrkseek/protocol/dist/content.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/content.js +55 -1
- package/node_modules/@xrkseek/protocol/dist/content.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/index.d.ts +3 -3
- package/node_modules/@xrkseek/protocol/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/index.js +2 -2
- package/node_modules/@xrkseek/protocol/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/json-schema.d.ts +12 -0
- package/node_modules/@xrkseek/protocol/dist/json-schema.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/json-schema.js +15 -1
- package/node_modules/@xrkseek/protocol/dist/json-schema.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/permission-knobs.d.ts +9 -0
- package/node_modules/@xrkseek/protocol/dist/permission-knobs.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/permission-knobs.js +6 -0
- package/node_modules/@xrkseek/protocol/dist/permission-knobs.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/plan-mode.d.ts +5 -2
- package/node_modules/@xrkseek/protocol/dist/plan-mode.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/plan-mode.js +11 -2
- package/node_modules/@xrkseek/protocol/dist/plan-mode.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.d.ts +12 -4
- package/node_modules/@xrkseek/protocol/dist/session-events.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.js +1 -0
- package/node_modules/@xrkseek/protocol/dist/session-events.js.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/validate.d.ts.map +1 -1
- package/node_modules/@xrkseek/protocol/dist/validate.js +9 -1
- package/node_modules/@xrkseek/protocol/dist/validate.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.d.ts +1 -0
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js +2 -0
- package/node_modules/@xrkseek/server-face/dist/adapt/wire-event.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts +2 -0
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js +18 -4
- package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts +9 -0
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +38 -2
- package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/approval-category.d.ts +1 -1
- package/node_modules/@xrkseek/server-face/dist/approval-category.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/approval-category.js +3 -0
- package/node_modules/@xrkseek/server-face/dist/approval-category.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/approvals.d.ts +11 -3
- package/node_modules/@xrkseek/server-face/dist/approvals.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/approvals.js +45 -3
- package/node_modules/@xrkseek/server-face/dist/approvals.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/collab-board.js +2 -2
- package/node_modules/@xrkseek/server-face/dist/collab-board.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/context.d.ts +24 -0
- package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/durable-prompt.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/durable-prompt.js +3 -9
- package/node_modules/@xrkseek/server-face/dist/durable-prompt.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/session.js +11 -3
- package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/team.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/team.js +10 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/team.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.d.ts +6 -3
- package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.js +6 -3
- package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/path-allowlist.d.ts +29 -0
- package/node_modules/@xrkseek/server-face/dist/path-allowlist.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/path-allowlist.js +96 -0
- package/node_modules/@xrkseek/server-face/dist/path-allowlist.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/permissions.d.ts +7 -0
- package/node_modules/@xrkseek/server-face/dist/permissions.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/permissions.js +59 -4
- package/node_modules/@xrkseek/server-face/dist/permissions.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.js +83 -36
- package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-capability.d.ts +23 -0
- package/node_modules/@xrkseek/server-face/dist/session-capability.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/session-capability.js +78 -0
- package/node_modules/@xrkseek/server-face/dist/session-capability.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +13 -0
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/tool-disclosure.d.ts +16 -0
- package/node_modules/@xrkseek/server-face/dist/tool-disclosure.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/tool-disclosure.js +35 -0
- package/node_modules/@xrkseek/server-face/dist/tool-disclosure.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/types.d.ts +3 -3
- package/node_modules/@xrkseek/server-face/dist/types.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.d.ts +19 -6
- package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.js +45 -7
- package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.js +2 -0
- package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace-write / read-only path overreach → pipeline `ask`
|
|
3
|
+
* (`path-overreach:` reason). Face broker applies 5s fail-closed +
|
|
4
|
+
* Once / Whitelist / Deny.
|
|
5
|
+
*/
|
|
6
|
+
import type { PreHandler } from "@xrkseek/core-tools";
|
|
7
|
+
import type { PathAccessMode } from "@xrkseek/protocol";
|
|
8
|
+
/** English audit prefix — Face classifyApproval keys off this. */
|
|
9
|
+
export declare const PATH_OVERREACH_REASON_PREFIX = "path-overreach:";
|
|
10
|
+
export interface PathOverreachPreOptions {
|
|
11
|
+
readonly root: () => string;
|
|
12
|
+
readonly pathAccessMode: () => PathAccessMode;
|
|
13
|
+
/** Settings + session permanent/once writable object paths. */
|
|
14
|
+
readonly listWritableAllowlist: () => readonly string[];
|
|
15
|
+
/** hostReadable ∪ writable ∪ session (reads). */
|
|
16
|
+
readonly listReadableAllowlist: () => readonly string[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Soft floor: absolute paths outside workspace + object allowlist → ask.
|
|
20
|
+
* No-op when `pathAccessMode` is `open`. Relative paths stay under root.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createPathOverreachPre(options: PathOverreachPreOptions): PreHandler;
|
|
23
|
+
//# sourceMappingURL=path-overreach-pre.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-overreach-pre.d.ts","sourceRoot":"","sources":["../src/path-overreach-pre.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAoBxD,kEAAkE;AAClE,eAAO,MAAM,4BAA4B,oBAAoB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,cAAc,CAAC;IAC9C,+DAA+D;IAC/D,QAAQ,CAAC,qBAAqB,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;IACxD,iDAAiD;IACjD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,SAAS,MAAM,EAAE,CAAC;CACzD;AA8ED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,UAAU,CAwDZ"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace-write / read-only path overreach → pipeline `ask`
|
|
3
|
+
* (`path-overreach:` reason). Face broker applies 5s fail-closed +
|
|
4
|
+
* Once / Whitelist / Deny.
|
|
5
|
+
*/
|
|
6
|
+
import path from "node:path";
|
|
7
|
+
import { PathEscapeError, resolveUnderHostRoots, resolveWithinRoot, resolveWritablePath, } from "./paths.js";
|
|
8
|
+
const WRITE_TOOLS = new Map([
|
|
9
|
+
["write_file", ["path", "file_path"]],
|
|
10
|
+
["apply_edit", ["path", "file_path"]],
|
|
11
|
+
["apply_patch", ["path", "file_path"]],
|
|
12
|
+
]);
|
|
13
|
+
const READ_TOOLS = new Map([
|
|
14
|
+
["read_file", ["path", "file_path"]],
|
|
15
|
+
["glob", ["path", "target_directory", "root"]],
|
|
16
|
+
["grep", ["path", "target_directory", "root"]],
|
|
17
|
+
]);
|
|
18
|
+
/** English audit prefix — Face classifyApproval keys off this. */
|
|
19
|
+
export const PATH_OVERREACH_REASON_PREFIX = "path-overreach:";
|
|
20
|
+
function asObject(value) {
|
|
21
|
+
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
22
|
+
? value
|
|
23
|
+
: undefined;
|
|
24
|
+
}
|
|
25
|
+
function firstPathArg(args, keys) {
|
|
26
|
+
const obj = asObject(args);
|
|
27
|
+
if (!obj)
|
|
28
|
+
return undefined;
|
|
29
|
+
for (const key of keys) {
|
|
30
|
+
const v = obj[key];
|
|
31
|
+
if (typeof v === "string" && v.trim())
|
|
32
|
+
return v.trim();
|
|
33
|
+
}
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
function bashCwd(args) {
|
|
37
|
+
const obj = asObject(args);
|
|
38
|
+
const cwd = obj?.cwd;
|
|
39
|
+
return typeof cwd === "string" && cwd.trim() ? cwd.trim() : undefined;
|
|
40
|
+
}
|
|
41
|
+
function displayReasonFor(absPath, access) {
|
|
42
|
+
const short = absPath;
|
|
43
|
+
if (access === "read") {
|
|
44
|
+
return {
|
|
45
|
+
en: `Allow reading outside the workspace?\n${short}`,
|
|
46
|
+
zh: `允许读取工作区外路径?\n${short}`,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
en: `Allow writing outside the workspace?\n${short}`,
|
|
51
|
+
zh: `允许写入工作区外路径?\n${short}`,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function escapesWritable(root, allowlist, userPath) {
|
|
55
|
+
try {
|
|
56
|
+
resolveWritablePath(root, allowlist, userPath);
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
if (err instanceof PathEscapeError)
|
|
61
|
+
return path.resolve(userPath);
|
|
62
|
+
throw err;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function escapesReadable(root, allowlist, userPath) {
|
|
66
|
+
try {
|
|
67
|
+
resolveWithinRoot(root, userPath);
|
|
68
|
+
return undefined;
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
if (!(err instanceof PathEscapeError) || !path.isAbsolute(userPath)) {
|
|
72
|
+
if (err instanceof PathEscapeError)
|
|
73
|
+
return path.resolve(root, userPath);
|
|
74
|
+
throw err;
|
|
75
|
+
}
|
|
76
|
+
if (allowlist.length === 0)
|
|
77
|
+
return path.resolve(userPath);
|
|
78
|
+
try {
|
|
79
|
+
resolveUnderHostRoots(allowlist, userPath);
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return path.resolve(userPath);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Soft floor: absolute paths outside workspace + object allowlist → ask.
|
|
89
|
+
* No-op when `pathAccessMode` is `open`. Relative paths stay under root.
|
|
90
|
+
*/
|
|
91
|
+
export function createPathOverreachPre(options) {
|
|
92
|
+
return async (ctx) => {
|
|
93
|
+
if (options.pathAccessMode() === "open") {
|
|
94
|
+
return { action: "continue", args: ctx.args };
|
|
95
|
+
}
|
|
96
|
+
const name = ctx.call.name;
|
|
97
|
+
let access;
|
|
98
|
+
let userPath;
|
|
99
|
+
const writeKeys = WRITE_TOOLS.get(name);
|
|
100
|
+
if (writeKeys) {
|
|
101
|
+
access = "write";
|
|
102
|
+
userPath = firstPathArg(ctx.args, writeKeys);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
const readKeys = READ_TOOLS.get(name);
|
|
106
|
+
if (readKeys) {
|
|
107
|
+
access = "read";
|
|
108
|
+
userPath = firstPathArg(ctx.args, readKeys);
|
|
109
|
+
}
|
|
110
|
+
else if (name === "bash" || name === "pwsh") {
|
|
111
|
+
access = "write";
|
|
112
|
+
userPath = bashCwd(ctx.args);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
if (!access || !userPath) {
|
|
116
|
+
return { action: "continue", args: ctx.args };
|
|
117
|
+
}
|
|
118
|
+
// Relative paths resolve under workspace — no overreach card.
|
|
119
|
+
if (!path.isAbsolute(userPath)) {
|
|
120
|
+
return { action: "continue", args: ctx.args };
|
|
121
|
+
}
|
|
122
|
+
const root = options.root();
|
|
123
|
+
const escaped = access === "write"
|
|
124
|
+
? escapesWritable(root, options.listWritableAllowlist(), userPath)
|
|
125
|
+
: escapesReadable(root, options.listReadableAllowlist(), userPath);
|
|
126
|
+
if (!escaped) {
|
|
127
|
+
return { action: "continue", args: ctx.args };
|
|
128
|
+
}
|
|
129
|
+
const reason = `${PATH_OVERREACH_REASON_PREFIX} ${access} ${escaped}`;
|
|
130
|
+
return {
|
|
131
|
+
action: "ask",
|
|
132
|
+
reason,
|
|
133
|
+
displayReason: displayReasonFor(escaped, access),
|
|
134
|
+
error: {
|
|
135
|
+
name: "PathEscapeError",
|
|
136
|
+
code: "path-escape",
|
|
137
|
+
reason: `path escapes workspace root: ${userPath}`,
|
|
138
|
+
},
|
|
139
|
+
};
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=path-overreach-pre.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-overreach-pre.js","sourceRoot":"","sources":["../src/path-overreach-pre.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,GAAG,IAAI,GAAG,CAA4B;IACrD,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACrC,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,IAAI,GAAG,CAA4B;IACpD,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;CAC/C,CAAC,CAAC;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;AAW9D,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAE,KAAiC;QACpC,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CACnB,IAAa,EACb,IAAuB;IAEvB,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CAAC,IAAa;IAC5B,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAG,GAAG,EAAE,GAAG,CAAC;IACrB,OAAO,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AACxE,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,MAAwB;IACjE,MAAM,KAAK,GAAG,OAAO,CAAC;IACtB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO;YACL,EAAE,EAAE,yCAAyC,KAAK,EAAE;YACpD,EAAE,EAAE,gBAAgB,KAAK,EAAE;SAC5B,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,yCAAyC,KAAK,EAAE;QACpD,EAAE,EAAE,gBAAgB,KAAK,EAAE;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,SAA4B,EAC5B,QAAgB;IAEhB,IAAI,CAAC;QACH,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,eAAe;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAClE,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,IAAY,EACZ,SAA4B,EAC5B,QAAgB;IAEhB,IAAI,CAAC;QACH,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,GAAG,YAAY,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpE,IAAI,GAAG,YAAY,eAAe;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACxE,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,CAAC;YACH,qBAAqB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC3C,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAgC;IAEhC,OAAO,KAAK,EAAE,GAAG,EAAE,EAAE;QACnB,IAAI,OAAO,CAAC,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;YACxC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3B,IAAI,MAAoC,CAAC;QACzC,IAAI,QAA4B,CAAC;QAEjC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,OAAO,CAAC;YACjB,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,GAAG,MAAM,CAAC;gBAChB,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBAC9C,MAAM,GAAG,OAAO,CAAC;gBACjB,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,8DAA8D;QAC9D,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,OAAO,GACX,MAAM,KAAK,OAAO;YAChB,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,qBAAqB,EAAE,EAAE,QAAQ,CAAC;YAClE,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,qBAAqB,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,4BAA4B,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACtE,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM;YACN,aAAa,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;YAChD,KAAK,EAAE;gBACL,IAAI,EAAE,iBAAiB;gBACvB,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,gCAAgC,QAAQ,EAAE;aACnD;SACF,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -8,14 +8,17 @@ export declare function isLexicallyInside(root: string, candidate: string): bool
|
|
|
8
8
|
* paths are allowed only when they still land inside the root (DSH / Codex).
|
|
9
9
|
*/
|
|
10
10
|
export declare function resolveWithinRoot(root: string, userPath: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* No path jail: absolute paths resolve as-is; relative paths join `root`.
|
|
13
|
+
* Used when permission is danger-full-access / auto (`pathAccessMode: open`).
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveOpenPath(root: string, userPath: string): string;
|
|
11
16
|
/**
|
|
12
17
|
* Resolve a user path under `root`, plus `extraWritableRoots` when the caller
|
|
13
|
-
* opted into a wider write surface
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* resolution (same containment posture as `resolveUnderHostRoots`, but for
|
|
18
|
-
* WRITE-intent surfaces). `extraWritableRoots` empty behaves exactly like
|
|
18
|
+
* opted into a wider write surface. Relative paths always resolve under the
|
|
19
|
+
* primary root; absolute paths that stay inside `root` win; otherwise they are
|
|
20
|
+
* allowed only when they land inside one of the extra roots — lexically and
|
|
21
|
+
* after symlink resolution. `extraWritableRoots` empty behaves like
|
|
19
22
|
* `resolveWithinRoot`.
|
|
20
23
|
*/
|
|
21
24
|
export declare function resolveWritablePath(root: string, extraWritableRoots: readonly string[], userPath: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAGA,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAQ1E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASxE;AAED
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAGA,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAQ1E;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CASxE;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAItE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,kBAAkB,EAAE,SAAS,MAAM,EAAE,EACrC,QAAQ,EAAE,MAAM,GACf,MAAM,CA2BR;AA6BD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,EAAE,MAAM,GACf,MAAM,CA+DR"}
|
|
@@ -28,14 +28,22 @@ export function resolveWithinRoot(root, userPath) {
|
|
|
28
28
|
}
|
|
29
29
|
return targetAbs;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* No path jail: absolute paths resolve as-is; relative paths join `root`.
|
|
33
|
+
* Used when permission is danger-full-access / auto (`pathAccessMode: open`).
|
|
34
|
+
*/
|
|
35
|
+
export function resolveOpenPath(root, userPath) {
|
|
36
|
+
const rootAbs = path.resolve(root);
|
|
37
|
+
if (path.isAbsolute(userPath))
|
|
38
|
+
return path.resolve(userPath);
|
|
39
|
+
return path.resolve(rootAbs, userPath);
|
|
40
|
+
}
|
|
31
41
|
/**
|
|
32
42
|
* Resolve a user path under `root`, plus `extraWritableRoots` when the caller
|
|
33
|
-
* opted into a wider write surface
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* resolution (same containment posture as `resolveUnderHostRoots`, but for
|
|
38
|
-
* WRITE-intent surfaces). `extraWritableRoots` empty behaves exactly like
|
|
43
|
+
* opted into a wider write surface. Relative paths always resolve under the
|
|
44
|
+
* primary root; absolute paths that stay inside `root` win; otherwise they are
|
|
45
|
+
* allowed only when they land inside one of the extra roots — lexically and
|
|
46
|
+
* after symlink resolution. `extraWritableRoots` empty behaves like
|
|
39
47
|
* `resolveWithinRoot`.
|
|
40
48
|
*/
|
|
41
49
|
export function resolveWritablePath(root, extraWritableRoots, userPath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,SAAiB;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CACL,GAAG,KAAK,EAAE;QACV,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAC5E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,QAAgB;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QACzC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,eAAe,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@ export interface HttpFetchLimits {
|
|
|
10
10
|
}
|
|
11
11
|
export declare const DEFAULT_HTTP_FETCH_LIMITS: HttpFetchLimits;
|
|
12
12
|
export declare const LOCAL_FETCH_PROVIDER_ID = "http";
|
|
13
|
-
export type FetchableKind = "html" | "text";
|
|
14
|
-
/** `text/html` + xhtml → html; other text/* / json / xml → text;
|
|
13
|
+
export type FetchableKind = "html" | "text" | "binary";
|
|
14
|
+
/** `text/html` + xhtml → html; other text/* / json / xml → text; common binaries → binary. */
|
|
15
15
|
export declare function classifyContentType(contentType: string | null): FetchableKind | undefined;
|
|
16
16
|
export declare function createHttpFetchProvider(options?: {
|
|
17
17
|
readonly limits?: Partial<HttpFetchLimits>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-http.d.ts","sourceRoot":"","sources":["../src/fetch-http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EAIT,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGjE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,yBAAyB,EAAE,eAOvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"fetch-http.d.ts","sourceRoot":"","sources":["../src/fetch-http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,QAAQ,EAIT,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGjE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,yBAAyB,EAAE,eAOvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;AAKvD,8FAA8F;AAC9F,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,aAAa,GAAG,SAAS,CAyB3B;AA0JD,wBAAgB,uBAAuB,CACrC,OAAO,GAAE;IACP,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B,GACL,QAAQ,CAmJV"}
|
|
@@ -11,7 +11,9 @@ export const DEFAULT_HTTP_FETCH_LIMITS = {
|
|
|
11
11
|
userAgent: "xrk-harness/0.0.4 (+https://github.com/xrkseek)",
|
|
12
12
|
};
|
|
13
13
|
export const LOCAL_FETCH_PROVIDER_ID = "http";
|
|
14
|
-
/**
|
|
14
|
+
/** Max bytes to probe when Content-Length is missing on a binary response. */
|
|
15
|
+
const BINARY_PROBE_BYTES = 65_536;
|
|
16
|
+
/** `text/html` + xhtml → html; other text/* / json / xml → text; common binaries → binary. */
|
|
15
17
|
export function classifyContentType(contentType) {
|
|
16
18
|
const mime = (contentType ?? "").replace(/;.*$/s, "").trim().toLowerCase();
|
|
17
19
|
if (mime === "text/html" || mime === "application/xhtml+xml")
|
|
@@ -24,8 +26,32 @@ export function classifyContentType(contentType) {
|
|
|
24
26
|
mime.endsWith("+xml")) {
|
|
25
27
|
return "text";
|
|
26
28
|
}
|
|
29
|
+
if (mime.startsWith("image/") ||
|
|
30
|
+
mime.startsWith("audio/") ||
|
|
31
|
+
mime.startsWith("video/") ||
|
|
32
|
+
mime === "application/pdf" ||
|
|
33
|
+
mime === "application/octet-stream" ||
|
|
34
|
+
mime === "application/zip" ||
|
|
35
|
+
mime === "application/gzip" ||
|
|
36
|
+
mime === "application/x-gzip") {
|
|
37
|
+
return "binary";
|
|
38
|
+
}
|
|
27
39
|
return undefined;
|
|
28
40
|
}
|
|
41
|
+
function formatBinaryBody(contentType, byteLength, probedAtLeast) {
|
|
42
|
+
const mime = contentType.replace(/;.*$/s, "").trim() || "application/octet-stream";
|
|
43
|
+
const sizeLine = byteLength === null
|
|
44
|
+
? "length unknown"
|
|
45
|
+
: probedAtLeast
|
|
46
|
+
? `≥${byteLength} bytes probed`
|
|
47
|
+
: `${byteLength} bytes`;
|
|
48
|
+
return {
|
|
49
|
+
kind: "binary",
|
|
50
|
+
contentType: mime,
|
|
51
|
+
byteLength,
|
|
52
|
+
content: `[binary ${mime}; ${sizeLine}; body omitted — downloadable]`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
29
55
|
function charsetOf(contentType) {
|
|
30
56
|
const match = /charset=([^;]+)/i.exec(contentType ?? "");
|
|
31
57
|
const raw = match?.[1]?.trim().replace(/^["']|["']$/g, "");
|
|
@@ -100,6 +126,38 @@ function decodeBody(bytes, contentType, kind, maxChars, byteTruncated) {
|
|
|
100
126
|
truncated: byteTruncated || capped.truncated,
|
|
101
127
|
};
|
|
102
128
|
}
|
|
129
|
+
async function resolveFetchFn(base, proxy) {
|
|
130
|
+
const trimmed = proxy?.trim() ?? "";
|
|
131
|
+
if (!trimmed)
|
|
132
|
+
return { fetch: base };
|
|
133
|
+
let proxyUrl;
|
|
134
|
+
try {
|
|
135
|
+
proxyUrl = new URL(trimmed);
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
throw new WebError("proxy is not a valid URL", "WEB_INVALID_URL");
|
|
139
|
+
}
|
|
140
|
+
if (proxyUrl.protocol !== "http:" && proxyUrl.protocol !== "https:") {
|
|
141
|
+
throw new WebError("proxy must be an http(s) URL (include host and port, e.g. http://127.0.0.1:7897)", "WEB_INVALID_URL");
|
|
142
|
+
}
|
|
143
|
+
try {
|
|
144
|
+
const undici = await import("undici");
|
|
145
|
+
const agent = new undici.ProxyAgent(proxyUrl.href);
|
|
146
|
+
// Dual undici / undici-types packages disagree on FormData + Dispatcher;
|
|
147
|
+
// opaque init keeps ProxyAgent attachable without RequestInit wars.
|
|
148
|
+
const proxiedFetch = undici.fetch;
|
|
149
|
+
const fetchFn = (input, init) => proxiedFetch(input, Object.assign({}, init ?? {}, { dispatcher: agent }));
|
|
150
|
+
return {
|
|
151
|
+
fetch: fetchFn,
|
|
152
|
+
close: () => {
|
|
153
|
+
void agent.close().catch(() => undefined);
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
throw new WebError(`proxy fetch unavailable: ${err instanceof Error ? err.message : String(err)}`, "WEB_PROVIDER_ERROR");
|
|
159
|
+
}
|
|
160
|
+
}
|
|
103
161
|
export function createHttpFetchProvider(options = {}) {
|
|
104
162
|
const limits = { ...DEFAULT_HTTP_FETCH_LIMITS, ...options.limits };
|
|
105
163
|
const fetchFn = options.fetch ?? globalThis.fetch;
|
|
@@ -114,68 +172,100 @@ export function createHttpFetchProvider(options = {}) {
|
|
|
114
172
|
});
|
|
115
173
|
const timed = AbortSignal.timeout(limits.timeoutMs);
|
|
116
174
|
const combined = signal ? AbortSignal.any([signal, timed]) : timed;
|
|
175
|
+
const resolved = await resolveFetchFn(fetchFn, request.proxy);
|
|
117
176
|
let hops = 0;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
catch (err) {
|
|
132
|
-
if (timed.aborted && !signal?.aborted) {
|
|
133
|
-
throw new WebError("web fetch timed out", "WEB_FETCH_TIMEOUT");
|
|
134
|
-
}
|
|
135
|
-
if (combined.aborted) {
|
|
136
|
-
throw new WebError("web fetch aborted", "WEB_ABORTED");
|
|
137
|
-
}
|
|
138
|
-
throw new WebError(err instanceof Error ? err.message : String(err), "WEB_PROVIDER_ERROR");
|
|
139
|
-
}
|
|
140
|
-
if (isRedirect(response.status)) {
|
|
141
|
-
await response.body?.cancel();
|
|
142
|
-
if (hops >= limits.maxRedirects) {
|
|
143
|
-
throw new WebError(`exceeded the maximum of ${limits.maxRedirects} redirects`, "WEB_REDIRECT_BLOCKED");
|
|
177
|
+
try {
|
|
178
|
+
for (;;) {
|
|
179
|
+
let response;
|
|
180
|
+
try {
|
|
181
|
+
response = await resolved.fetch(current, {
|
|
182
|
+
method: "GET",
|
|
183
|
+
redirect: "manual",
|
|
184
|
+
signal: combined,
|
|
185
|
+
headers: {
|
|
186
|
+
"user-agent": limits.userAgent,
|
|
187
|
+
accept: "text/html,application/xhtml+xml,text/*;q=0.9,application/json;q=0.8,image/*;q=0.7,*/*;q=0.5",
|
|
188
|
+
},
|
|
189
|
+
});
|
|
144
190
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
191
|
+
catch (err) {
|
|
192
|
+
if (timed.aborted && !signal?.aborted) {
|
|
193
|
+
throw new WebError("web fetch timed out", "WEB_FETCH_TIMEOUT");
|
|
194
|
+
}
|
|
195
|
+
if (combined.aborted) {
|
|
196
|
+
throw new WebError("web fetch aborted", "WEB_ABORTED");
|
|
197
|
+
}
|
|
198
|
+
throw new WebError(err instanceof Error ? err.message : String(err), "WEB_PROVIDER_ERROR");
|
|
148
199
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
200
|
+
if (isRedirect(response.status)) {
|
|
201
|
+
await response.body?.cancel();
|
|
202
|
+
if (hops >= limits.maxRedirects) {
|
|
203
|
+
throw new WebError(`exceeded the maximum of ${limits.maxRedirects} redirects`, "WEB_REDIRECT_BLOCKED");
|
|
204
|
+
}
|
|
205
|
+
const location = response.headers.get("location");
|
|
206
|
+
if (!location) {
|
|
207
|
+
throw new WebError(`redirect response (HTTP ${response.status}) without a Location header`, "WEB_PROVIDER_ERROR");
|
|
208
|
+
}
|
|
209
|
+
let next;
|
|
210
|
+
try {
|
|
211
|
+
next = new URL(location, current);
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
throw new WebError("redirect Location is not a valid URL", "WEB_INVALID_URL");
|
|
215
|
+
}
|
|
216
|
+
const validated = assertHttpUrl(next.href, limits.maxUrlLength, {
|
|
217
|
+
allowlist,
|
|
218
|
+
});
|
|
219
|
+
if (!isSameOrigin(current, validated)) {
|
|
220
|
+
throw new WebError(`cross-origin redirect is not followed; call web_fetch on Location: ${validated.href}`, "WEB_REDIRECT_BLOCKED");
|
|
221
|
+
}
|
|
222
|
+
current = validated;
|
|
223
|
+
hops += 1;
|
|
224
|
+
continue;
|
|
152
225
|
}
|
|
153
|
-
|
|
154
|
-
|
|
226
|
+
const contentType = response.headers.get("content-type");
|
|
227
|
+
const kind = classifyContentType(contentType);
|
|
228
|
+
if (kind === undefined) {
|
|
229
|
+
await response.body?.cancel();
|
|
230
|
+
throw new WebError(`unsupported content type "${contentType ?? "unknown"}"`, "WEB_UNSUPPORTED_CONTENT_TYPE");
|
|
155
231
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
232
|
+
if (kind === "binary") {
|
|
233
|
+
const mime = (contentType ?? "application/octet-stream")
|
|
234
|
+
.replace(/;.*$/s, "")
|
|
235
|
+
.trim() || "application/octet-stream";
|
|
236
|
+
const declared = response.headers.get("content-length");
|
|
237
|
+
if (declared !== null) {
|
|
238
|
+
const length = Number(declared);
|
|
239
|
+
if (Number.isFinite(length) && length >= 0) {
|
|
240
|
+
await response.body?.cancel();
|
|
241
|
+
return {
|
|
242
|
+
url: current.href,
|
|
243
|
+
statusCode: response.status,
|
|
244
|
+
truncated: false,
|
|
245
|
+
body: formatBinaryBody(mime, length, false),
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
const read = await readLimited(response, BINARY_PROBE_BYTES);
|
|
250
|
+
return {
|
|
251
|
+
url: current.href,
|
|
252
|
+
statusCode: response.status,
|
|
253
|
+
truncated: false,
|
|
254
|
+
body: formatBinaryBody(mime, read.bytes.byteLength, read.truncated),
|
|
255
|
+
};
|
|
161
256
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
257
|
+
const read = await readLimited(response, limits.maxResponseBytes);
|
|
258
|
+
const decoded = decodeBody(read.bytes, contentType, kind, limits.maxBodyChars, read.truncated);
|
|
259
|
+
return {
|
|
260
|
+
url: current.href,
|
|
261
|
+
statusCode: response.status,
|
|
262
|
+
truncated: decoded.truncated,
|
|
263
|
+
body: decoded.body,
|
|
264
|
+
};
|
|
165
265
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
throw new WebError(`unsupported content type "${response.headers.get("content-type") ?? "unknown"}"`, "WEB_UNSUPPORTED_CONTENT_TYPE");
|
|
170
|
-
}
|
|
171
|
-
const read = await readLimited(response, limits.maxResponseBytes);
|
|
172
|
-
const decoded = decodeBody(read.bytes, response.headers.get("content-type"), kind, limits.maxBodyChars, read.truncated);
|
|
173
|
-
return {
|
|
174
|
-
url: current.href,
|
|
175
|
-
statusCode: response.status,
|
|
176
|
-
truncated: decoded.truncated,
|
|
177
|
-
body: decoded.body,
|
|
178
|
-
};
|
|
266
|
+
}
|
|
267
|
+
finally {
|
|
268
|
+
resolved.close?.();
|
|
179
269
|
}
|
|
180
270
|
},
|
|
181
271
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-http.js","sourceRoot":"","sources":["../src/fetch-http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAQzC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAWnE,MAAM,CAAC,MAAM,yBAAyB,GAAoB;IACxD,YAAY,EAAE,IAAI;IAClB,gBAAgB,EAAE,SAAS;IAC3B,YAAY,EAAE,OAAO;IACrB,SAAS,EAAE,MAAM;IACjB,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,iDAAiD;CAC7D,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAI9C,
|
|
1
|
+
{"version":3,"file":"fetch-http.js","sourceRoot":"","sources":["../src/fetch-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,21 +34,29 @@ export declare function presentFetchResult(args: {
|
|
|
34
34
|
}, result: PresentableToolResult): WebFetchResultView | undefined;
|
|
35
35
|
export type ToolNameSet = ReadonlySet<string> | Iterable<string>;
|
|
36
36
|
/**
|
|
37
|
-
* web_search guidance
|
|
38
|
-
*
|
|
37
|
+
* web_search-only guidance (orthogonal — no fetch/browser routing).
|
|
38
|
+
* Cross-tool priority lives in {@link formatWebFamilyGuidance}.
|
|
39
39
|
*/
|
|
40
40
|
export declare function formatWebSearchGuidance(available: ToolNameSet): string;
|
|
41
41
|
/**
|
|
42
|
-
* web_fetch guidance
|
|
43
|
-
*
|
|
42
|
+
* web_fetch-only guidance (orthogonal — binary/proxy/redirect are this tool's contracts).
|
|
43
|
+
* Cross-tool priority lives in {@link formatWebFamilyGuidance}.
|
|
44
44
|
*/
|
|
45
45
|
export declare function formatWebFetchGuidance(available: ToolNameSet): string;
|
|
46
46
|
/**
|
|
47
|
-
* browser_
|
|
47
|
+
* browser_*-only guidance (orthogonal — no web_* / computer_use routing).
|
|
48
|
+
* Cross-tool priority lives in {@link formatWebFamilyGuidance}.
|
|
48
49
|
*/
|
|
49
50
|
export declare function formatBrowserGuidance(available: ToolNameSet): string;
|
|
50
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Single cross-tool web routing block (register once). Empty when no web tools.
|
|
53
|
+
* Sibling tool:* sections must not repeat this priority.
|
|
54
|
+
*/
|
|
55
|
+
export declare function formatWebFamilyGuidance(available: ToolNameSet): string;
|
|
56
|
+
/** Full-surface defaults. */
|
|
51
57
|
export declare const WEB_SEARCH_GUIDANCE: string;
|
|
52
|
-
/** Full-surface defaults
|
|
58
|
+
/** Full-surface defaults. */
|
|
53
59
|
export declare const WEB_FETCH_GUIDANCE: string;
|
|
60
|
+
/** Full-surface web-family routing. */
|
|
61
|
+
export declare const WEB_FAMILY_GUIDANCE: string;
|
|
54
62
|
//# sourceMappingURL=format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,8BAA8B,SAAU,CAAC;AACtD,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAclD,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAShE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA6BlE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAO1E;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,eAAe,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAeD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAa7E;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EACvB,MAAM,EAAE,qBAAqB,GAC5B,mBAAmB,GAAG,SAAS,CAYjC;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,EACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEnF,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,8BAA8B,SAAU,CAAC;AACtD,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAclD,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAShE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA6BlE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAO1E;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,eAAe,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAeD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAa7E;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,EACvB,MAAM,EAAE,qBAAqB,GAC5B,mBAAmB,GAAG,SAAS,CAYjC;AA6CD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,cAAc,EAAE,MAAM,GACrB,MAAM,CAER;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,eAAe,CAOvE;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,cAAc,EACrB,cAAc,EAAE,MAAM,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMzB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAa3E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,EACrB,MAAM,EAAE,qBAAqB,GAC5B,kBAAkB,GAAG,SAAS,CAYhC;AAED,MAAM,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;AAMjE;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAOtE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CASrE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CASpE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,WAAW,GAAG,MAAM,CAqBtE;AAED,6BAA6B;AAC7B,eAAO,MAAM,mBAAmB,QAG9B,CAAC;AAEH,6BAA6B;AAC7B,eAAO,MAAM,kBAAkB,QAG7B,CAAC;AAEH,uCAAuC;AACvC,eAAO,MAAM,mBAAmB,QAK9B,CAAC"}
|