@chainingintention/pi-web-cn 1.202606.22 → 1.202606.24
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/dist/client/assets/{CodeViewer-B1z_k75G.js → CodeViewer-DA68s2LY.js} +1 -1
- package/dist/client/assets/{TerminalPanel-CqG27wd5.js → TerminalPanel-DR8I9BBO.js} +1 -1
- package/dist/client/assets/{index-bm72ZAqQ.js → index-Bjpa_x8C.js} +3 -3
- package/dist/client/index.html +1 -1
- package/dist/server/sessions/managementAgentTools.js +118 -77
- package/dist/server/sessions/managementAgentTools.js.map +1 -1
- package/dist/server/sessions/managementPermissionSystem.js +92 -0
- package/dist/server/sessions/managementPermissionSystem.js.map +1 -0
- package/dist/server/sessions/piSessionService.js +75 -16
- package/dist/server/sessions/piSessionService.js.map +1 -1
- package/dist/server/sessions/sessionRoutes.js +5 -5
- package/dist/server/sessions/sessionRoutes.js.map +1 -1
- package/package.json +1 -1
package/dist/client/index.html
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
html, body { margin: 0; height: 100%; overflow: hidden; background: var(--pi-bg); color: var(--pi-text); }
|
|
51
51
|
body { min-height: 100dvh; }
|
|
52
52
|
</style>
|
|
53
|
-
<script type="module" crossorigin src="/assets/index-
|
|
53
|
+
<script type="module" crossorigin src="/assets/index-Bjpa_x8C.js"></script>
|
|
54
54
|
<link rel="modulepreload" crossorigin href="/assets/vendor-editor-core-Bc1A7SO7.js">
|
|
55
55
|
<link rel="modulepreload" crossorigin href="/assets/vendor-editor-languages-D0CnB2js.js">
|
|
56
56
|
</head>
|
|
@@ -2,14 +2,13 @@ import { spawn } from "node:child_process";
|
|
|
2
2
|
import { constants } from "node:fs";
|
|
3
3
|
import { access, mkdir, readdir, readFile, realpath, stat, writeFile } from "node:fs/promises";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export function createManagedAgentToolOptions(cwd
|
|
5
|
+
import { defineTool } from "@earendil-works/pi-coding-agent";
|
|
6
|
+
import { Type } from "typebox";
|
|
7
|
+
import { createBubblewrapPythonInvocation, createManagedSandboxEnvironment, DEFAULT_BUBBLEWRAP_PATHS } from "./managementSandbox.js";
|
|
8
|
+
export function createManagedAgentToolOptions(cwd) {
|
|
9
9
|
const guard = createWorkspacePathGuard(cwd);
|
|
10
10
|
return {
|
|
11
11
|
read: { operations: createManagedReadOperations(guard) },
|
|
12
|
-
bash: { operations: createManagedBashOperations(cwd, context, guard) },
|
|
13
12
|
edit: { operations: createManagedEditOperations(guard) },
|
|
14
13
|
write: { operations: createManagedWriteOperations(guard) },
|
|
15
14
|
grep: { operations: createManagedGrepOperations(guard) },
|
|
@@ -17,6 +16,35 @@ export function createManagedAgentToolOptions(cwd, context) {
|
|
|
17
16
|
ls: { operations: createManagedLsOperations(guard) },
|
|
18
17
|
};
|
|
19
18
|
}
|
|
19
|
+
const pythonSchema = Type.Object({
|
|
20
|
+
code: Type.String({ description: "Python code to run in the managed project workspace" }),
|
|
21
|
+
timeoutMs: Type.Optional(Type.Number({ description: "Execution timeout in milliseconds" })),
|
|
22
|
+
});
|
|
23
|
+
export function createManagedPythonToolDefinition(cwd, context) {
|
|
24
|
+
return defineTool({
|
|
25
|
+
name: "python",
|
|
26
|
+
label: "python",
|
|
27
|
+
description: "Run Python code inside the managed project workspace. Shell commands and paths outside the project are blocked.",
|
|
28
|
+
promptSnippet: "Run Python code in the current project",
|
|
29
|
+
promptGuidelines: ["Use python for scripts and calculations. Do not use it to run shell commands."],
|
|
30
|
+
parameters: pythonSchema,
|
|
31
|
+
async execute(_toolCallId, params, signal) {
|
|
32
|
+
const configuredPython = context.sandbox?.pythonExecutable?.trim();
|
|
33
|
+
const pythonExecutable = configuredPython === undefined || configuredPython === "" ? "python3" : configuredPython;
|
|
34
|
+
const timeoutMs = Math.max(1_000, Math.min(params.timeoutMs ?? 30_000, 120_000));
|
|
35
|
+
const env = createManagedSandboxEnvironment({ hostEnv: process.env, context });
|
|
36
|
+
return runManagedPython({
|
|
37
|
+
pythonExecutable,
|
|
38
|
+
bubblewrapExecutable: bubblewrapExecutable(),
|
|
39
|
+
cwd,
|
|
40
|
+
code: params.code,
|
|
41
|
+
timeoutMs,
|
|
42
|
+
env,
|
|
43
|
+
signal,
|
|
44
|
+
});
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
}
|
|
20
48
|
function createManagedReadOperations(guard) {
|
|
21
49
|
return {
|
|
22
50
|
readFile: async (absolutePath) => readFile(await guard.existingPath(absolutePath)),
|
|
@@ -71,64 +99,6 @@ function createManagedFindOperations(guard) {
|
|
|
71
99
|
glob: async (pattern, searchCwd, options) => findMatchingPaths(await guard.existingPath(searchCwd), pattern, options.limit, guard),
|
|
72
100
|
};
|
|
73
101
|
}
|
|
74
|
-
function createManagedBashOperations(cwd, context, guard) {
|
|
75
|
-
return {
|
|
76
|
-
exec: async (command, requestedCwd, { onData, signal, timeout }) => {
|
|
77
|
-
const workspaceRoot = await guard.workspaceRoot();
|
|
78
|
-
const realRequestedCwd = await guard.existingPath(requestedCwd);
|
|
79
|
-
if (realRequestedCwd !== workspaceRoot)
|
|
80
|
-
throw new Error("Managed bash commands must run at the workspace root");
|
|
81
|
-
const env = createManagedSandboxEnvironment({ hostEnv: process.env, context });
|
|
82
|
-
const invocation = createBubblewrapShellInvocation({
|
|
83
|
-
bubblewrapExecutable: DEFAULT_BUBBLEWRAP_EXECUTABLE,
|
|
84
|
-
shellExecutable: DEFAULT_SHELL_EXECUTABLE,
|
|
85
|
-
workspaceRoot,
|
|
86
|
-
script: command,
|
|
87
|
-
env,
|
|
88
|
-
});
|
|
89
|
-
return new Promise((resolve, reject) => {
|
|
90
|
-
if (signal?.aborted === true) {
|
|
91
|
-
reject(new Error("aborted"));
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
const child = spawn(invocation.command, invocation.args, {
|
|
95
|
-
cwd,
|
|
96
|
-
detached: true,
|
|
97
|
-
stdio: ["ignore", "pipe", "pipe"],
|
|
98
|
-
});
|
|
99
|
-
let timedOut = false;
|
|
100
|
-
const effectiveTimeout = timeout === undefined || timeout <= 0 ? undefined : timeout;
|
|
101
|
-
const timeoutHandle = effectiveTimeout === undefined ? undefined : setTimeout(() => {
|
|
102
|
-
timedOut = true;
|
|
103
|
-
killProcessGroup(child.pid, child.kill.bind(child));
|
|
104
|
-
}, effectiveTimeout * 1000);
|
|
105
|
-
const onAbort = () => {
|
|
106
|
-
killProcessGroup(child.pid, child.kill.bind(child));
|
|
107
|
-
};
|
|
108
|
-
child.stdout.on("data", onData);
|
|
109
|
-
child.stderr.on("data", onData);
|
|
110
|
-
signal?.addEventListener("abort", onAbort, { once: true });
|
|
111
|
-
child.on("error", (error) => {
|
|
112
|
-
if (timeoutHandle !== undefined)
|
|
113
|
-
clearTimeout(timeoutHandle);
|
|
114
|
-
signal?.removeEventListener("abort", onAbort);
|
|
115
|
-
reject(error);
|
|
116
|
-
});
|
|
117
|
-
child.on("close", (code) => {
|
|
118
|
-
if (timeoutHandle !== undefined)
|
|
119
|
-
clearTimeout(timeoutHandle);
|
|
120
|
-
signal?.removeEventListener("abort", onAbort);
|
|
121
|
-
if (signal?.aborted === true)
|
|
122
|
-
reject(new Error("aborted"));
|
|
123
|
-
else if (timedOut)
|
|
124
|
-
reject(new Error(`timeout:${String(effectiveTimeout ?? "unknown")}`));
|
|
125
|
-
else
|
|
126
|
-
resolve({ exitCode: code });
|
|
127
|
-
});
|
|
128
|
-
});
|
|
129
|
-
},
|
|
130
|
-
};
|
|
131
|
-
}
|
|
132
102
|
function createWorkspacePathGuard(cwd) {
|
|
133
103
|
const root = realpath(cwd);
|
|
134
104
|
return {
|
|
@@ -167,6 +137,77 @@ function createWorkspacePathGuard(cwd) {
|
|
|
167
137
|
},
|
|
168
138
|
};
|
|
169
139
|
}
|
|
140
|
+
async function runManagedPython(options) {
|
|
141
|
+
const workspaceRoot = await realpath(options.cwd);
|
|
142
|
+
const invocation = createBubblewrapPythonInvocation({
|
|
143
|
+
bubblewrapExecutable: options.bubblewrapExecutable,
|
|
144
|
+
pythonExecutable: options.pythonExecutable,
|
|
145
|
+
workspaceRoot,
|
|
146
|
+
env: options.env,
|
|
147
|
+
readOnlyPaths: await readableBubblewrapPaths(),
|
|
148
|
+
});
|
|
149
|
+
return new Promise((resolve, reject) => {
|
|
150
|
+
if (options.signal?.aborted === true) {
|
|
151
|
+
reject(new Error("Operation aborted"));
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
const child = spawn(invocation.command, invocation.args, { cwd: workspaceRoot, env: options.env, stdio: ["pipe", "pipe", "pipe"], shell: false });
|
|
155
|
+
let stdout = "";
|
|
156
|
+
let stderr = "";
|
|
157
|
+
let settled = false;
|
|
158
|
+
const cleanup = () => {
|
|
159
|
+
clearTimeout(timer);
|
|
160
|
+
options.signal?.removeEventListener("abort", onAbort);
|
|
161
|
+
};
|
|
162
|
+
const fail = (error) => {
|
|
163
|
+
if (settled)
|
|
164
|
+
return;
|
|
165
|
+
settled = true;
|
|
166
|
+
cleanup();
|
|
167
|
+
reject(error);
|
|
168
|
+
};
|
|
169
|
+
const finish = (code) => {
|
|
170
|
+
if (settled)
|
|
171
|
+
return;
|
|
172
|
+
settled = true;
|
|
173
|
+
cleanup();
|
|
174
|
+
const output = truncateToolOutput([stdout.trimEnd(), stderr.trimEnd()].filter((part) => part !== "").join("\n"));
|
|
175
|
+
const prefix = code === 0 ? "" : `Python exited with code ${String(code)}\n`;
|
|
176
|
+
resolve({ content: [{ type: "text", text: `${prefix}${output}`.trimEnd() }], details: undefined });
|
|
177
|
+
};
|
|
178
|
+
const timer = setTimeout(() => {
|
|
179
|
+
child.kill();
|
|
180
|
+
fail(new Error(`Python execution timed out after ${String(options.timeoutMs)}ms`));
|
|
181
|
+
}, options.timeoutMs);
|
|
182
|
+
const onAbort = () => {
|
|
183
|
+
child.kill();
|
|
184
|
+
fail(new Error("Operation aborted"));
|
|
185
|
+
};
|
|
186
|
+
options.signal?.addEventListener("abort", onAbort, { once: true });
|
|
187
|
+
child.stdout.on("data", (chunk) => { stdout += chunk.toString("utf8"); });
|
|
188
|
+
child.stderr.on("data", (chunk) => { stderr += chunk.toString("utf8"); });
|
|
189
|
+
child.on("error", (error) => {
|
|
190
|
+
if (isNodeErrorWithCode(error, "ENOENT"))
|
|
191
|
+
fail(new Error("Python sandbox is unavailable"));
|
|
192
|
+
else
|
|
193
|
+
fail(error);
|
|
194
|
+
});
|
|
195
|
+
child.on("close", finish);
|
|
196
|
+
child.stdin.end(options.code);
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
async function readableBubblewrapPaths() {
|
|
200
|
+
const paths = await Promise.all(DEFAULT_BUBBLEWRAP_PATHS.map(async (candidate) => {
|
|
201
|
+
try {
|
|
202
|
+
await access(candidate, constants.R_OK);
|
|
203
|
+
return candidate;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
return undefined;
|
|
207
|
+
}
|
|
208
|
+
}));
|
|
209
|
+
return paths.filter(isDefined);
|
|
210
|
+
}
|
|
170
211
|
async function nearestExistingParent(target) {
|
|
171
212
|
let current = target;
|
|
172
213
|
for (;;) {
|
|
@@ -184,9 +225,9 @@ async function nearestExistingParent(target) {
|
|
|
184
225
|
}
|
|
185
226
|
}
|
|
186
227
|
}
|
|
187
|
-
function
|
|
188
|
-
const
|
|
189
|
-
return
|
|
228
|
+
function bubblewrapExecutable() {
|
|
229
|
+
const configured = process.env["PI_WEB_BWRAP_EXECUTABLE"]?.trim() ?? process.env["PI_WEB_BUBBLEWRAP"]?.trim();
|
|
230
|
+
return configured === undefined || configured === "" ? "bwrap" : configured;
|
|
190
231
|
}
|
|
191
232
|
function assertInsideWorkspace(workspaceRoot, target, originalPath) {
|
|
192
233
|
const relative = path.relative(workspaceRoot, target);
|
|
@@ -252,16 +293,16 @@ function toPosix(value) {
|
|
|
252
293
|
function isNotFoundError(error) {
|
|
253
294
|
return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT";
|
|
254
295
|
}
|
|
255
|
-
function
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
}
|
|
296
|
+
function isNodeErrorWithCode(error, code) {
|
|
297
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === code;
|
|
298
|
+
}
|
|
299
|
+
function isDefined(value) {
|
|
300
|
+
return value !== undefined;
|
|
301
|
+
}
|
|
302
|
+
function truncateToolOutput(value) {
|
|
303
|
+
const limit = 20_000;
|
|
304
|
+
if (value.length <= limit)
|
|
305
|
+
return value;
|
|
306
|
+
return `${value.slice(0, limit)}\n[output truncated]`;
|
|
266
307
|
}
|
|
267
308
|
//# sourceMappingURL=managementAgentTools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managementAgentTools.js","sourceRoot":"","sources":["../../../src/server/sessions/managementAgentTools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"managementAgentTools.js","sourceRoot":"","sources":["../../../src/server/sessions/managementAgentTools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { mkdir, writeFile } from "node:fs/promises";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
export const PI_PERMISSION_SYSTEM_POLICY_AGENT_DIR = "PI_PERMISSION_SYSTEM_POLICY_AGENT_DIR";
|
|
5
|
+
const MANAGEMENT_AGENT_TOOL_NAMES = ["read", "write", "edit", "ls", "grep", "find", "python"];
|
|
6
|
+
const ALWAYS_DENIED_TOOL_NAMES = [
|
|
7
|
+
"bash",
|
|
8
|
+
"shell",
|
|
9
|
+
"terminal",
|
|
10
|
+
"terminal-command-runs",
|
|
11
|
+
"powershell",
|
|
12
|
+
"pwsh",
|
|
13
|
+
"mcp",
|
|
14
|
+
"http",
|
|
15
|
+
"webfetch",
|
|
16
|
+
"websearch",
|
|
17
|
+
];
|
|
18
|
+
export function createManagementPermissionSystemPolicy(context) {
|
|
19
|
+
const tools = { "*": "deny" };
|
|
20
|
+
for (const tool of managementAgentToolNames(context))
|
|
21
|
+
tools[tool] = "allow";
|
|
22
|
+
for (const tool of managementDeniedToolNames(context))
|
|
23
|
+
tools[tool] = "deny";
|
|
24
|
+
return {
|
|
25
|
+
defaultPolicy: {
|
|
26
|
+
tools: "deny",
|
|
27
|
+
bash: "deny",
|
|
28
|
+
mcp: "deny",
|
|
29
|
+
skills: "deny",
|
|
30
|
+
special: "deny",
|
|
31
|
+
},
|
|
32
|
+
tools,
|
|
33
|
+
bash: { "*": "deny" },
|
|
34
|
+
mcp: { "*": "deny" },
|
|
35
|
+
skills: { "*": "deny" },
|
|
36
|
+
special: {
|
|
37
|
+
doom_loop: "deny",
|
|
38
|
+
external_directory: "deny",
|
|
39
|
+
},
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export function managementAgentToolNames(context) {
|
|
43
|
+
const denied = new Set([...ALWAYS_DENIED_TOOL_NAMES, ...(context.tools?.deny ?? [])]);
|
|
44
|
+
const safeTools = MANAGEMENT_AGENT_TOOL_NAMES.filter((tool) => !denied.has(tool));
|
|
45
|
+
const allowed = context.tools?.allow;
|
|
46
|
+
if (allowed === undefined || allowed.length === 0)
|
|
47
|
+
return [...safeTools];
|
|
48
|
+
return safeTools.filter((tool) => allowed.includes(tool));
|
|
49
|
+
}
|
|
50
|
+
export async function writeManagementPermissionSystemPolicy(agentDir, cwd, context) {
|
|
51
|
+
const policyAgentDir = join(agentDir, "management-embed", "permission-system", safePathSegment(context.user.rootUserId), createHash("sha256").update(cwd).digest("hex").slice(0, 16));
|
|
52
|
+
await mkdir(policyAgentDir, { recursive: true });
|
|
53
|
+
await writeFile(join(policyAgentDir, "pi-permissions.jsonc"), `${JSON.stringify(createManagementPermissionSystemPolicy(context), null, 2)}\n`, "utf8");
|
|
54
|
+
return policyAgentDir;
|
|
55
|
+
}
|
|
56
|
+
let runtimeEnvironmentQueue = Promise.resolve();
|
|
57
|
+
export async function withRuntimeCreationEnvironment(env, action) {
|
|
58
|
+
const previousQueue = runtimeEnvironmentQueue;
|
|
59
|
+
let releaseQueue = () => undefined;
|
|
60
|
+
runtimeEnvironmentQueue = new Promise((resolve) => {
|
|
61
|
+
releaseQueue = resolve;
|
|
62
|
+
});
|
|
63
|
+
await previousQueue;
|
|
64
|
+
const previousValues = new Map();
|
|
65
|
+
for (const [key, value] of Object.entries(env)) {
|
|
66
|
+
previousValues.set(key, process.env[key]);
|
|
67
|
+
if (value === undefined)
|
|
68
|
+
Reflect.deleteProperty(process.env, key);
|
|
69
|
+
else
|
|
70
|
+
process.env[key] = value;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
return await action();
|
|
74
|
+
}
|
|
75
|
+
finally {
|
|
76
|
+
for (const [key, value] of previousValues) {
|
|
77
|
+
if (value === undefined)
|
|
78
|
+
Reflect.deleteProperty(process.env, key);
|
|
79
|
+
else
|
|
80
|
+
process.env[key] = value;
|
|
81
|
+
}
|
|
82
|
+
releaseQueue();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function managementDeniedToolNames(context) {
|
|
86
|
+
return [...ALWAYS_DENIED_TOOL_NAMES, ...(context.tools?.deny ?? [])];
|
|
87
|
+
}
|
|
88
|
+
function safePathSegment(value) {
|
|
89
|
+
const safe = value.trim().replace(/[^a-zA-Z0-9._-]+/gu, "-").replace(/^-+|-+$/gu, "");
|
|
90
|
+
return safe === "" ? "user" : safe.slice(0, 80);
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=managementPermissionSystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managementPermissionSystem.js","sourceRoot":"","sources":["../../../src/server/sessions/managementPermissionSystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
-
import {
|
|
2
|
+
import { basename, dirname, isAbsolute, relative, resolve } from "node:path";
|
|
3
|
+
import { AuthStorage, createAgentSessionFromServices, createAgentSessionRuntime, createAgentSessionServices, createEditToolDefinition, createFindToolDefinition, createGrepToolDefinition, createLsToolDefinition, createReadToolDefinition, createWriteToolDefinition, defineTool, getAgentDir, ModelRegistry, SessionManager, } from "@earendil-works/pi-coding-agent";
|
|
3
4
|
import { pageMessagesAtSafeBoundary } from "./messagePaging.js";
|
|
4
5
|
import { BUILTIN_COMMANDS } from "./builtinCommands.js";
|
|
5
6
|
import { SessionCommandService } from "./sessionCommandService.js";
|
|
@@ -14,7 +15,8 @@ import { cwdPathsEqual } from "../workingDirectory.js";
|
|
|
14
15
|
import { createSpawnSessionToolDefinition } from "./spawnSessionTool.js";
|
|
15
16
|
import { createSubsessionToolDefinitions } from "./spawnSubsessionTool.js";
|
|
16
17
|
import { buildTranscriptView } from "./subsessionTranscript.js";
|
|
17
|
-
import { createManagedAgentToolOptions } from "./managementAgentTools.js";
|
|
18
|
+
import { createManagedAgentToolOptions, createManagedPythonToolDefinition } from "./managementAgentTools.js";
|
|
19
|
+
import { PI_PERMISSION_SYSTEM_POLICY_AGENT_DIR, managementAgentToolNames, withRuntimeCreationEnvironment, writeManagementPermissionSystemPolicy } from "./managementPermissionSystem.js";
|
|
18
20
|
import { archiveCandidateFromActiveSession, archiveCandidateFromArchivedRecord, archiveCandidateFromListEntry, archiveInputFromActiveSession, archiveInputFromCandidate, archiveInputFromListEntry, clientSessionFromArchivedRecord, compareArchivedRecords, } from "./sessionArchiveMapping.js";
|
|
19
21
|
import { getBoolean, getProperty, getString, toClientEvent } from "./sessionUiEvents.js";
|
|
20
22
|
const noopLogger = { info() { } };
|
|
@@ -60,6 +62,26 @@ function parsePromptStreamingBehavior(value) {
|
|
|
60
62
|
return value;
|
|
61
63
|
throw new Error('Prompt streamingBehavior must be "steer" or "followUp"');
|
|
62
64
|
}
|
|
65
|
+
const GLOBAL_AGENT_CONTEXT_FILE_NAMES = new Set(["AGENTS.md", "AGENTS.MD", "CLAUDE.md", "CLAUDE.MD"]);
|
|
66
|
+
export function filterManagedGlobalContextFiles(cwd, agentDir, base) {
|
|
67
|
+
return {
|
|
68
|
+
agentsFiles: base.agentsFiles.filter((file) => {
|
|
69
|
+
const filename = basename(file.path);
|
|
70
|
+
if (!GLOBAL_AGENT_CONTEXT_FILE_NAMES.has(filename))
|
|
71
|
+
return true;
|
|
72
|
+
const fileDir = dirname(file.path);
|
|
73
|
+
if (cwdPathsEqual(fileDir, agentDir))
|
|
74
|
+
return false;
|
|
75
|
+
return pathInsideOrEqual(cwd, fileDir);
|
|
76
|
+
}),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
function pathInsideOrEqual(parent, child) {
|
|
80
|
+
const normalizedParent = resolve(parent);
|
|
81
|
+
const normalizedChild = resolve(child);
|
|
82
|
+
const childRelativePath = relative(normalizedParent, normalizedChild);
|
|
83
|
+
return childRelativePath === "" || (!childRelativePath.startsWith("..") && !isAbsolute(childRelativePath));
|
|
84
|
+
}
|
|
63
85
|
function defaultCreateAgentRuntime(createRuntime, options) {
|
|
64
86
|
if (!(options.sessionManager instanceof SessionManager))
|
|
65
87
|
throw new Error("Default runtime creation requires an SDK SessionManager");
|
|
@@ -70,10 +92,17 @@ function defaultCreateAgentRuntime(createRuntime, options) {
|
|
|
70
92
|
}
|
|
71
93
|
function createDefaultRuntimeFactory(authStorage, modelRegistry, spawn, subsessions) {
|
|
72
94
|
return async ({ cwd, agentDir, sessionManager, sessionStartEvent, managementContext }) => {
|
|
95
|
+
if (managementContext !== undefined) {
|
|
96
|
+
return createManagementRuntimeFactory(authStorage, modelRegistry, spawn, subsessions, managementContext)({
|
|
97
|
+
cwd,
|
|
98
|
+
agentDir,
|
|
99
|
+
sessionManager,
|
|
100
|
+
...(sessionStartEvent === undefined ? {} : { sessionStartEvent }),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
73
103
|
const services = await createAgentSessionServices({ cwd, agentDir, authStorage, modelRegistry });
|
|
74
|
-
const managedToolOptions = managementContext === undefined ? undefined : createManagedAgentToolOptions(cwd, managementContext);
|
|
75
104
|
const customTools = [
|
|
76
|
-
...managedAgentToolDefinitions(cwd
|
|
105
|
+
...managedAgentToolDefinitions(cwd),
|
|
77
106
|
...(spawn === undefined ? [] : [defineTool(createSpawnSessionToolDefinition(cwd, { spawn }))]),
|
|
78
107
|
...(subsessions === undefined ? [] : createSubsessionToolDefinitions(cwd, subsessions).map((tool) => defineTool(tool))),
|
|
79
108
|
];
|
|
@@ -82,18 +111,48 @@ function createDefaultRuntimeFactory(authStorage, modelRegistry, spawn, subsessi
|
|
|
82
111
|
sessionManager,
|
|
83
112
|
...(sessionStartEvent === undefined ? {} : { sessionStartEvent }),
|
|
84
113
|
customTools,
|
|
85
|
-
...(managedToolOptions === undefined ? {} : { noTools: "builtin" }),
|
|
86
114
|
};
|
|
87
115
|
const result = await createAgentSessionFromServices(options);
|
|
88
116
|
return { ...result, services, diagnostics: services.diagnostics };
|
|
89
117
|
};
|
|
90
118
|
}
|
|
119
|
+
function createManagementRuntimeFactory(authStorage, modelRegistry, spawn, subsessions, managementContext) {
|
|
120
|
+
return async ({ cwd, agentDir, sessionManager, sessionStartEvent }) => {
|
|
121
|
+
const policyAgentDir = await writeManagementPermissionSystemPolicy(agentDir, cwd, managementContext);
|
|
122
|
+
return withRuntimeCreationEnvironment({ [PI_PERMISSION_SYSTEM_POLICY_AGENT_DIR]: policyAgentDir }, async () => {
|
|
123
|
+
const services = await createAgentSessionServices({
|
|
124
|
+
cwd,
|
|
125
|
+
agentDir,
|
|
126
|
+
authStorage,
|
|
127
|
+
modelRegistry,
|
|
128
|
+
resourceLoaderOptions: {
|
|
129
|
+
agentsFilesOverride: (base) => filterManagedGlobalContextFiles(cwd, agentDir, base),
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
const managedToolOptions = createManagedAgentToolOptions(cwd);
|
|
133
|
+
const customTools = [
|
|
134
|
+
...managedAgentToolDefinitions(cwd, managedToolOptions),
|
|
135
|
+
createManagedPythonToolDefinition(cwd, managementContext),
|
|
136
|
+
...(spawn === undefined ? [] : [defineTool(createSpawnSessionToolDefinition(cwd, { spawn }))]),
|
|
137
|
+
...(subsessions === undefined ? [] : createSubsessionToolDefinitions(cwd, subsessions).map((tool) => defineTool(tool))),
|
|
138
|
+
];
|
|
139
|
+
const options = {
|
|
140
|
+
services,
|
|
141
|
+
sessionManager,
|
|
142
|
+
...(sessionStartEvent === undefined ? {} : { sessionStartEvent }),
|
|
143
|
+
customTools,
|
|
144
|
+
tools: managementAgentToolNames(managementContext),
|
|
145
|
+
};
|
|
146
|
+
const result = await createAgentSessionFromServices(options);
|
|
147
|
+
return { ...result, services, diagnostics: services.diagnostics };
|
|
148
|
+
});
|
|
149
|
+
};
|
|
150
|
+
}
|
|
91
151
|
function managedAgentToolDefinitions(cwd, options) {
|
|
92
152
|
if (options === undefined)
|
|
93
153
|
return [createPiWebEditToolDefinition(cwd)];
|
|
94
154
|
return [
|
|
95
155
|
defineTool(createReadToolDefinition(cwd, options.read)),
|
|
96
|
-
defineTool(createBashToolDefinition(cwd, options.bash)),
|
|
97
156
|
createPiWebEditToolDefinition(cwd, options.edit),
|
|
98
157
|
defineTool(createWriteToolDefinition(cwd, options.write)),
|
|
99
158
|
defineTool(createGrepToolDefinition(cwd, options.grep)),
|
|
@@ -378,9 +437,9 @@ export class PiSessionService {
|
|
|
378
437
|
: session.modelRegistry.getAvailable();
|
|
379
438
|
return models.map(modelToClientModel);
|
|
380
439
|
}
|
|
381
|
-
async setModel(ref, provider, modelId) {
|
|
440
|
+
async setModel(ref, provider, modelId, managementContext) {
|
|
382
441
|
await this.assertWritable(ref);
|
|
383
|
-
const session = await this.getOrOpen(ref);
|
|
442
|
+
const session = await this.getOrOpen(ref, managementContext);
|
|
384
443
|
session.modelRegistry.refresh();
|
|
385
444
|
const candidates = session.scopedModels.length > 0
|
|
386
445
|
? session.scopedModels.map((scoped) => scoped.model)
|
|
@@ -394,9 +453,9 @@ export class PiSessionService {
|
|
|
394
453
|
this.publishStatus(session);
|
|
395
454
|
return this.statusFromSession(session);
|
|
396
455
|
}
|
|
397
|
-
async cycleModel(ref, direction) {
|
|
456
|
+
async cycleModel(ref, direction, managementContext) {
|
|
398
457
|
await this.assertWritable(ref);
|
|
399
|
-
const session = await this.getOrOpen(ref);
|
|
458
|
+
const session = await this.getOrOpen(ref, managementContext);
|
|
400
459
|
const result = await session.cycleModel(direction);
|
|
401
460
|
if (result === undefined)
|
|
402
461
|
throw new Error(session.scopedModels.length > 0 ? "作用域内只有一个模型" : "只有一个可用模型");
|
|
@@ -404,13 +463,13 @@ export class PiSessionService {
|
|
|
404
463
|
this.publishStatus(session);
|
|
405
464
|
return this.statusFromSession(session);
|
|
406
465
|
}
|
|
407
|
-
async availableThinkingLevels(ref) {
|
|
408
|
-
const session = await this.getOrOpen(ref);
|
|
466
|
+
async availableThinkingLevels(ref, managementContext) {
|
|
467
|
+
const session = await this.getOrOpen(ref, managementContext);
|
|
409
468
|
return session.getAvailableThinkingLevels();
|
|
410
469
|
}
|
|
411
|
-
async setThinkingLevel(ref, level) {
|
|
470
|
+
async setThinkingLevel(ref, level, managementContext) {
|
|
412
471
|
await this.assertWritable(ref);
|
|
413
|
-
const session = await this.getOrOpen(ref);
|
|
472
|
+
const session = await this.getOrOpen(ref, managementContext);
|
|
414
473
|
// pi owns the valid set; validate against the session's live levels rather
|
|
415
474
|
// than a hardcoded union so this stays correct if pi changes the set.
|
|
416
475
|
const available = session.getAvailableThinkingLevels();
|
|
@@ -422,9 +481,9 @@ export class PiSessionService {
|
|
|
422
481
|
this.publishStatus(session);
|
|
423
482
|
return this.statusFromSession(session);
|
|
424
483
|
}
|
|
425
|
-
async cycleThinkingLevel(ref) {
|
|
484
|
+
async cycleThinkingLevel(ref, managementContext) {
|
|
426
485
|
await this.assertWritable(ref);
|
|
427
|
-
const session = await this.getOrOpen(ref);
|
|
486
|
+
const session = await this.getOrOpen(ref, managementContext);
|
|
428
487
|
const level = session.cycleThinkingLevel();
|
|
429
488
|
if (level === undefined)
|
|
430
489
|
throw new Error("当前模型不支持思考");
|