@downcity/plugins 1.0.66 → 1.0.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/bin/BuiltinPlugins.d.ts +0 -5
  2. package/bin/BuiltinPlugins.d.ts.map +1 -1
  3. package/bin/BuiltinPlugins.js +1 -5
  4. package/bin/BuiltinPlugins.js.map +1 -1
  5. package/bin/index.d.ts +0 -2
  6. package/bin/index.d.ts.map +1 -1
  7. package/bin/index.js +0 -1
  8. package/bin/index.js.map +1 -1
  9. package/bin/task/runtime/TaskRunnerRound.d.ts.map +1 -1
  10. package/bin/task/runtime/TaskRunnerRound.js +7 -2
  11. package/bin/task/runtime/TaskRunnerRound.js.map +1 -1
  12. package/bin/task/runtime/TaskRunnerSession.d.ts.map +1 -1
  13. package/bin/task/runtime/TaskRunnerSession.js +10 -3
  14. package/bin/task/runtime/TaskRunnerSession.js.map +1 -1
  15. package/package.json +4 -3
  16. package/scripts/unrestricted-sandbox-approval.test.mjs +9 -9
  17. package/src/BuiltinPlugins.ts +0 -9
  18. package/src/index.ts +0 -5
  19. package/src/task/runtime/TaskRunnerRound.ts +15 -5
  20. package/src/task/runtime/TaskRunnerSession.ts +11 -4
  21. package/bin/shell/Index.d.ts +0 -9
  22. package/bin/shell/Index.d.ts.map +0 -1
  23. package/bin/shell/Index.js +0 -9
  24. package/bin/shell/Index.js.map +0 -1
  25. package/bin/shell/ShellPlugin.d.ts +0 -65
  26. package/bin/shell/ShellPlugin.d.ts.map +0 -1
  27. package/bin/shell/ShellPlugin.js +0 -175
  28. package/bin/shell/ShellPlugin.js.map +0 -1
  29. package/bin/shell/ShellRuntimeTypes.d.ts +0 -160
  30. package/bin/shell/ShellRuntimeTypes.d.ts.map +0 -1
  31. package/bin/shell/ShellRuntimeTypes.js +0 -10
  32. package/bin/shell/ShellRuntimeTypes.js.map +0 -1
  33. package/bin/shell/runtime/Paths.d.ts +0 -12
  34. package/bin/shell/runtime/Paths.d.ts.map +0 -1
  35. package/bin/shell/runtime/Paths.js +0 -21
  36. package/bin/shell/runtime/Paths.js.map +0 -1
  37. package/bin/shell/runtime/ShellActionResponse.d.ts +0 -52
  38. package/bin/shell/runtime/ShellActionResponse.d.ts.map +0 -1
  39. package/bin/shell/runtime/ShellActionResponse.js +0 -73
  40. package/bin/shell/runtime/ShellActionResponse.js.map +0 -1
  41. package/bin/shell/runtime/ShellActionRuntime.d.ts +0 -73
  42. package/bin/shell/runtime/ShellActionRuntime.d.ts.map +0 -1
  43. package/bin/shell/runtime/ShellActionRuntime.js +0 -647
  44. package/bin/shell/runtime/ShellActionRuntime.js.map +0 -1
  45. package/bin/shell/runtime/ShellActionRuntimeSupport.d.ts +0 -88
  46. package/bin/shell/runtime/ShellActionRuntimeSupport.d.ts.map +0 -1
  47. package/bin/shell/runtime/ShellActionRuntimeSupport.js +0 -353
  48. package/bin/shell/runtime/ShellActionRuntimeSupport.js.map +0 -1
  49. package/bin/shell/runtime/ShellApprovalRuntime.d.ts +0 -62
  50. package/bin/shell/runtime/ShellApprovalRuntime.d.ts.map +0 -1
  51. package/bin/shell/runtime/ShellApprovalRuntime.js +0 -215
  52. package/bin/shell/runtime/ShellApprovalRuntime.js.map +0 -1
  53. package/bin/shell/runtime/ShellProcessEvents.d.ts +0 -22
  54. package/bin/shell/runtime/ShellProcessEvents.d.ts.map +0 -1
  55. package/bin/shell/runtime/ShellProcessEvents.js +0 -41
  56. package/bin/shell/runtime/ShellProcessEvents.js.map +0 -1
  57. package/bin/shell/runtime/ShellRuntimeEnvironment.d.ts +0 -21
  58. package/bin/shell/runtime/ShellRuntimeEnvironment.d.ts.map +0 -1
  59. package/bin/shell/runtime/ShellRuntimeEnvironment.js +0 -70
  60. package/bin/shell/runtime/ShellRuntimeEnvironment.js.map +0 -1
  61. package/bin/shell/types/ShellPluginOptions.d.ts +0 -103
  62. package/bin/shell/types/ShellPluginOptions.d.ts.map +0 -1
  63. package/bin/shell/types/ShellPluginOptions.js +0 -10
  64. package/bin/shell/types/ShellPluginOptions.js.map +0 -1
  65. package/src/shell/Index.ts +0 -9
  66. package/src/shell/ShellPlugin.ts +0 -239
  67. package/src/shell/ShellRuntimeTypes.ts +0 -168
  68. package/src/shell/runtime/Paths.ts +0 -28
  69. package/src/shell/runtime/ShellActionResponse.ts +0 -135
  70. package/src/shell/runtime/ShellActionRuntime.ts +0 -794
  71. package/src/shell/runtime/ShellActionRuntimeSupport.ts +0 -477
  72. package/src/shell/runtime/ShellApprovalRuntime.ts +0 -276
  73. package/src/shell/runtime/ShellProcessEvents.ts +0 -65
  74. package/src/shell/runtime/ShellRuntimeEnvironment.ts +0 -71
  75. package/src/shell/types/ShellPluginOptions.ts +0 -122
@@ -1,215 +0,0 @@
1
- /**
2
- * Shell unrestricted sandbox 审批运行时。
3
- *
4
- * 关键点(中文)
5
- * - agent 只能通过 shell tool 请求 unrestricted sandbox;真正执行前必须等待用户确认。
6
- * - 审批结果最终回到原 tool result;session event 只用于 UI/CLI/Console 展示和操作。
7
- * - V1 授权粒度固定为单次命令、单次 shell_start 启动,或单次 shell_write 输入。
8
- */
9
- import fs from "fs-extra";
10
- import path from "node:path";
11
- import { generateId } from "@downcity/agent/internal/utils/Id.js";
12
- import { getSessionRunContext } from "@downcity/agent/internal/executor/SessionRunScope.js";
13
- import { nowMs } from "./ShellActionRuntimeSupport.js";
14
- const DANGEROUS_COMMAND_PATTERNS = [
15
- /\bsudo\b/,
16
- /\brm\s+-[^&|;\n]*r[^&|;\n]*f\s+\/(?:\s|$)/,
17
- /\bchmod\s+-R\s+777\s+\/(?:\s|$)/,
18
- /\bssh-keygen\b/,
19
- /\bsecurity\s+(?:add|delete|unlock|set|import|export)-/i,
20
- /(?:^|[\s;&|])(?:nohup\s+)?[^;&|\n]*(?:&)\s*$/,
21
- ];
22
- function isDangerousCommand(cmd) {
23
- return DANGEROUS_COMMAND_PATTERNS.some((pattern) => pattern.test(cmd));
24
- }
25
- function resolveApprovalOperation(toolName) {
26
- if (toolName === "shell_write")
27
- return "write";
28
- if (toolName === "shell_exec")
29
- return "exec";
30
- return "start";
31
- }
32
- function buildInputPreview(value) {
33
- const normalized = String(value || "");
34
- if (normalized.length <= 240)
35
- return normalized;
36
- return `${normalized.slice(0, 240)}...`;
37
- }
38
- function resolveAuditPath(context) {
39
- return path.join(context.rootPath, ".downcity", "logs", "unrestricted-sandbox-audit.jsonl");
40
- }
41
- async function appendAudit(params) {
42
- const filePath = resolveAuditPath(params.context);
43
- await fs.ensureDir(path.dirname(filePath));
44
- await fs.appendFile(filePath, `${JSON.stringify(params.record)}\n`, "utf-8");
45
- }
46
- function publishApprovalResult(params) {
47
- const sessionId = String(params.ownerContextId || "").trim();
48
- if (!sessionId)
49
- return;
50
- const turnId = String(getSessionRunContext()?.turnId || sessionId).trim();
51
- try {
52
- params.context.session.get(sessionId).publishEvent({
53
- type: "tool-approval-result",
54
- turnId,
55
- toolCallId: params.shellId,
56
- toolName: params.toolName,
57
- approvalId: params.approvalId,
58
- decision: params.decision,
59
- });
60
- }
61
- catch {
62
- // ignore event delivery failures
63
- }
64
- }
65
- /**
66
- * 校验 unrestricted sandbox 请求。
67
- */
68
- export function validateUnrestrictedRequest(params) {
69
- const reason = String(params.reason || "").trim();
70
- if (!reason) {
71
- return "unrestricted sandbox requires a non-empty reason";
72
- }
73
- if (isDangerousCommand(params.cmd)) {
74
- return "unrestricted sandbox rejected a dangerous command";
75
- }
76
- return null;
77
- }
78
- /**
79
- * 请求用户批准 unrestricted sandbox 执行。
80
- */
81
- export async function requestUnrestrictedApproval(params) {
82
- const approvalId = `ap_${generateId()}`;
83
- const createdAt = nowMs();
84
- const ownerContextId = String(params.ownerContextId || "").trim() || undefined;
85
- const operation = resolveApprovalOperation(params.toolName);
86
- const inputPreview = params.inputPreview !== undefined
87
- ? buildInputPreview(params.inputPreview)
88
- : undefined;
89
- const status = await new Promise((resolve) => {
90
- const timer = setTimeout(() => {
91
- resolveApproval({
92
- state: params.state,
93
- context: params.context,
94
- approvalId,
95
- decision: "expired",
96
- }).catch(() => undefined);
97
- }, params.state.options.defaultApprovalTimeoutMs);
98
- if (typeof timer.unref === "function")
99
- timer.unref();
100
- params.state.approvals.set(approvalId, {
101
- approvalId,
102
- shellId: params.shellId,
103
- ...(ownerContextId ? { ownerContextId } : {}),
104
- toolName: params.toolName,
105
- cmd: params.cmd,
106
- operation,
107
- ...(inputPreview !== undefined ? { inputPreview } : {}),
108
- ...(typeof params.inputChars === "number" ? { inputChars: params.inputChars } : {}),
109
- cwd: params.cwd,
110
- reason: params.reason,
111
- createdAt,
112
- timer,
113
- resolve,
114
- });
115
- if (ownerContextId) {
116
- const turnId = String(getSessionRunContext()?.turnId || ownerContextId).trim();
117
- try {
118
- params.context.session.get(ownerContextId).publishEvent({
119
- type: "tool-approval-request",
120
- turnId,
121
- toolCallId: params.shellId,
122
- toolName: params.toolName,
123
- approvalId,
124
- sandbox: "unrestricted",
125
- cmd: params.cmd,
126
- cwd: params.cwd,
127
- reason: params.reason,
128
- status: "pending",
129
- operation,
130
- shellId: params.shellId,
131
- ...(inputPreview !== undefined ? { inputPreview } : {}),
132
- ...(typeof params.inputChars === "number" ? { inputChars: params.inputChars } : {}),
133
- });
134
- }
135
- catch {
136
- // ignore event delivery failures
137
- }
138
- }
139
- appendAudit({
140
- context: params.context,
141
- record: {
142
- event: "approval_requested",
143
- approval_id: approvalId,
144
- session_id: ownerContextId || null,
145
- tool_call_id: params.shellId,
146
- agent_id: params.context.config?.id || null,
147
- cmd: params.cmd,
148
- operation,
149
- ...(inputPreview !== undefined ? { input_preview: inputPreview } : {}),
150
- ...(typeof params.inputChars === "number" ? { input_chars: params.inputChars } : {}),
151
- cwd: params.cwd,
152
- reason: params.reason,
153
- created_at: new Date(createdAt).toISOString(),
154
- },
155
- }).catch(() => undefined);
156
- });
157
- return { approvalId, status };
158
- }
159
- /**
160
- * 兑现 unrestricted sandbox 审批。
161
- */
162
- export async function resolveApproval(params) {
163
- const approval = params.state.approvals.get(params.approvalId);
164
- if (!approval)
165
- return false;
166
- params.state.approvals.delete(params.approvalId);
167
- clearTimeout(approval.timer);
168
- approval.resolve(params.decision);
169
- publishApprovalResult({
170
- context: params.context,
171
- ownerContextId: approval.ownerContextId,
172
- approvalId: approval.approvalId,
173
- shellId: approval.shellId,
174
- toolName: approval.toolName,
175
- decision: params.decision,
176
- });
177
- await appendAudit({
178
- context: params.context,
179
- record: {
180
- event: "approval_resolved",
181
- approval_id: approval.approvalId,
182
- session_id: approval.ownerContextId || null,
183
- tool_call_id: approval.shellId,
184
- agent_id: params.context.config?.id || null,
185
- cmd: approval.cmd,
186
- operation: approval.operation,
187
- ...(approval.inputPreview !== undefined ? { input_preview: approval.inputPreview } : {}),
188
- ...(typeof approval.inputChars === "number" ? { input_chars: approval.inputChars } : {}),
189
- cwd: approval.cwd,
190
- reason: approval.reason,
191
- decision: params.decision,
192
- resolved_at: new Date(nowMs()).toISOString(),
193
- },
194
- }).catch(() => undefined);
195
- return true;
196
- }
197
- /**
198
- * 列出 pending unrestricted sandbox 审批。
199
- */
200
- export function listPendingApprovals(state) {
201
- return Array.from(state.approvals.values()).map((approval) => ({
202
- approvalId: approval.approvalId,
203
- shellId: approval.shellId,
204
- ...(approval.ownerContextId ? { ownerContextId: approval.ownerContextId } : {}),
205
- toolName: approval.toolName,
206
- cmd: approval.cmd,
207
- operation: approval.operation,
208
- ...(approval.inputPreview !== undefined ? { inputPreview: approval.inputPreview } : {}),
209
- ...(typeof approval.inputChars === "number" ? { inputChars: approval.inputChars } : {}),
210
- cwd: approval.cwd,
211
- reason: approval.reason,
212
- createdAt: approval.createdAt,
213
- }));
214
- }
215
- //# sourceMappingURL=ShellApprovalRuntime.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShellApprovalRuntime.js","sourceRoot":"","sources":["../../../src/shell/runtime/ShellApprovalRuntime.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Shell 子进程事件绑定辅助。
3
- *
4
- * 关键点(中文)
5
- * - 集中处理 stdout/stderr 追加、process error 与 close 事件。
6
- * - close 到达时先等待输出写入链 drain,再统一进入终态收口,避免尾部输出丢读。
7
- */
8
- import type { ShellPluginState, ShellSessionRuntimeState } from "../../shell/ShellRuntimeTypes.js";
9
- /**
10
- * 绑定 shell 子进程事件。
11
- */
12
- export declare function attachShellProcessEventHandlers(params: {
13
- /**
14
- * 当前 shell plugin runtime 状态。
15
- */
16
- state: ShellPluginState;
17
- /**
18
- * 当前 shell runtime session。
19
- */
20
- session: ShellSessionRuntimeState;
21
- }): void;
22
- //# sourceMappingURL=ShellProcessEvents.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShellProcessEvents.d.ts","sourceRoot":"","sources":["../../../src/shell/runtime/ShellProcessEvents.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AAsB/F;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE;IACtD;;OAEG;IACH,KAAK,EAAE,gBAAgB,CAAC;IACxB;;OAEG;IACH,OAAO,EAAE,wBAAwB,CAAC;CACnC,GAAG,IAAI,CAsBP"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Shell 子进程事件绑定辅助。
3
- *
4
- * 关键点(中文)
5
- * - 集中处理 stdout/stderr 追加、process error 与 close 事件。
6
- * - close 到达时先等待输出写入链 drain,再统一进入终态收口,避免尾部输出丢读。
7
- */
8
- import { appendSessionOutput, finalizeExit, } from "./ShellActionRuntimeSupport.js";
9
- async function finalizeExitAfterOutputDrain(state, session, exitCode) {
10
- // 关键点(中文)
11
- // - `close` 事件到达时,stdout / stderr 的异步 append 链可能刚刚开始收尾。
12
- // - 这里先让出一个事件循环 tick,再等待当前 writeChain,可显著降低“终态已到但尾部输出尚未可读”的竞态。
13
- await new Promise((resolve) => {
14
- const timer = setImmediate(resolve);
15
- if (typeof timer.unref === "function")
16
- timer.unref();
17
- });
18
- await session.writeChain.catch(() => undefined);
19
- await finalizeExit(state, session, exitCode);
20
- }
21
- /**
22
- * 绑定 shell 子进程事件。
23
- */
24
- export function attachShellProcessEventHandlers(params) {
25
- const { state, session } = params;
26
- const { child } = session;
27
- child.stdout.on("data", (chunk) => {
28
- void appendSessionOutput(state, session, String(chunk ?? "")).catch(() => undefined);
29
- });
30
- child.stderr.on("data", (chunk) => {
31
- void appendSessionOutput(state, session, String(chunk ?? "")).catch(() => undefined);
32
- });
33
- child.on("error", (error) => {
34
- void appendSessionOutput(state, session, `\n[process error] ${String(error)}\n`).catch(() => undefined);
35
- void finalizeExitAfterOutputDrain(state, session, -1).catch(() => undefined);
36
- });
37
- child.on("close", (code) => {
38
- void finalizeExitAfterOutputDrain(state, session, typeof code === "number" ? code : -1).catch(() => undefined);
39
- });
40
- }
41
- //# sourceMappingURL=ShellProcessEvents.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShellProcessEvents.js","sourceRoot":"","sources":["../../../src/shell/runtime/ShellProcessEvents.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,mBAAmB,EACnB,YAAY,GACb,MAAM,gCAAgC,CAAC;AAExC,KAAK,UAAU,4BAA4B,CACzC,KAAuB,EACvB,OAAiC,EACjC,QAAgB;IAEhB,UAAU;IACV,wDAAwD;IACxD,+DAA+D;IAC/D,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;YAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAChD,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAS/C;IACC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAClC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;QACjD,KAAK,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAsB,EAAE,EAAE;QACjD,KAAK,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;QACjC,KAAK,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,qBAAqB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CACpF,GAAG,EAAE,CAAC,SAAS,CAChB,CAAC;QACF,KAAK,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAmB,EAAE,EAAE;QACxC,KAAK,4BAA4B,CAC/B,KAAK,EACL,OAAO,EACP,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CACrC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,21 +0,0 @@
1
- /**
2
- * Shell action 运行环境解析辅助。
3
- *
4
- * 关键点(中文)
5
- * - 集中处理 shell 子进程 cwd、env 与 owner context 的解析。
6
- * - 这里只做输入归一化,不持有 shell session 状态。
7
- */
8
- import type { AgentContext } from "@downcity/agent/internal/types/runtime/agent/AgentContext.js";
9
- /**
10
- * 构造 shell 子进程环境变量。
11
- */
12
- export declare function buildShellEnv(context: AgentContext): NodeJS.ProcessEnv;
13
- /**
14
- * 解析 shell 执行目录。
15
- */
16
- export declare function resolveShellCwd(context: AgentContext, cwd?: string): string;
17
- /**
18
- * 推断 shell 所属的 owner context。
19
- */
20
- export declare function resolveOwnerContextId(explicit?: string): string | undefined;
21
- //# sourceMappingURL=ShellRuntimeEnvironment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShellRuntimeEnvironment.d.ts","sourceRoot":"","sources":["../../../src/shell/runtime/ShellRuntimeEnvironment.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8DAA8D,CAAC;AAQjG;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC,UAAU,CA+BtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAI3E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK3E"}
@@ -1,70 +0,0 @@
1
- /**
2
- * Shell action 运行环境解析辅助。
3
- *
4
- * 关键点(中文)
5
- * - 集中处理 shell 子进程 cwd、env 与 owner context 的解析。
6
- * - 这里只做输入归一化,不持有 shell session 状态。
7
- */
8
- import path from "node:path";
9
- import { getSessionRunContext } from "@downcity/agent/internal/executor/SessionRunScope.js";
10
- function stripShellSecretEnv(env) {
11
- delete env.DC_AUTH_TOKEN;
12
- delete env.DC_AGENT_TOKEN;
13
- }
14
- /**
15
- * 构造 shell 子进程环境变量。
16
- */
17
- export function buildShellEnv(context) {
18
- const env = { ...process.env };
19
- // 关键点(中文)
20
- // - AgentContext.env 现在就是宿主已经整理好的最终 env 视图。
21
- // - shell 只消费这一份显式上下文,避免再次引入 platform/global env 隐式来源。
22
- for (const [key, value] of Object.entries(context.env || {})) {
23
- const normalizedKey = String(key || "").trim();
24
- const normalizedValue = String(value || "").trim();
25
- if (!normalizedKey || !normalizedValue)
26
- continue;
27
- env[normalizedKey] = normalizedValue;
28
- }
29
- const run_context = getSessionRunContext();
30
- const sessionId = String(run_context?.sessionId || "").trim();
31
- const agentPath = String(context.rootPath || "").trim();
32
- const configuredAgentId = String(context.config?.id || "").trim();
33
- const agentId = configuredAgentId || (agentPath ? path.basename(agentPath) : "");
34
- // 关键点(中文)
35
- // - agent 自己在 shell 里执行 `town <service> ...` 时,也需要显式知道“当前 agent 是谁”。
36
- // - 否则 service CLI 会退回到当前终端 cwd / registry 猜测,在多 agent 或外部工作目录下
37
- // 很容易把请求发到错误项目,最终误报 “Agent runtime 没启动”。
38
- if (agentPath)
39
- env.DC_AGENT_PATH = agentPath;
40
- if (agentId)
41
- env.DC_AGENT_ID = agentId;
42
- if (sessionId)
43
- env.DC_SESSION_ID = sessionId;
44
- if (process.env.DC_CITY_HOST)
45
- env.DC_CITY_HOST = process.env.DC_CITY_HOST;
46
- if (process.env.DC_CITY_PORT)
47
- env.DC_CITY_PORT = process.env.DC_CITY_PORT;
48
- stripShellSecretEnv(env);
49
- return env;
50
- }
51
- /**
52
- * 解析 shell 执行目录。
53
- */
54
- export function resolveShellCwd(context, cwd) {
55
- const raw = String(cwd || "").trim();
56
- if (!raw)
57
- return context.rootPath;
58
- return path.isAbsolute(raw) ? raw : path.resolve(context.rootPath, raw);
59
- }
60
- /**
61
- * 推断 shell 所属的 owner context。
62
- */
63
- export function resolveOwnerContextId(explicit) {
64
- const fromInput = String(explicit || "").trim();
65
- if (fromInput)
66
- return fromInput;
67
- const fromRequest = String(getSessionRunContext()?.sessionId || "").trim();
68
- return fromRequest || undefined;
69
- }
70
- //# sourceMappingURL=ShellRuntimeEnvironment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShellRuntimeEnvironment.js","sourceRoot":"","sources":["../../../src/shell/runtime/ShellRuntimeEnvironment.ts"],"names":[],"mappings":"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"}
@@ -1,103 +0,0 @@
1
- /**
2
- * ShellPlugin constructor 参数类型。
3
- *
4
- * 关键点(中文)
5
- * - 所有字段都是可选 runtime 调参。
6
- * - 不传参数时保持 ShellPlugin 既有硬编码默认行为。
7
- * - 这些参数只影响 shell plugin runtime,不改变 sandbox 权限模型。
8
- */
9
- /**
10
- * ShellPlugin 可选运行参数。
11
- */
12
- export interface ShellPluginOptions {
13
- /**
14
- * 最大 in-memory shell session 数量。
15
- *
16
- * 超过该数量时,runtime 会优先清理已经结束的旧 session;如果仍然超限则拒绝启动新 shell。
17
- */
18
- maxActiveShells?: number;
19
- /**
20
- * 终态 shell session 在内存中保留多久后自动清理,单位毫秒。
21
- */
22
- cleanupDelayMs?: number;
23
- /**
24
- * 单个 shell session 在内存中保留的最大输出字符数。
25
- *
26
- * 超出的历史输出仍会写入持久化输出文件,但内存快照只保留尾部内容。
27
- */
28
- maxInMemoryOutputChars?: number;
29
- /**
30
- * shell 输出预览保留的最大字符数。
31
- */
32
- outputPreviewChars?: number;
33
- /**
34
- * wait/timeout 参数允许的最小毫秒数。
35
- */
36
- minWaitMs?: number;
37
- /**
38
- * wait/timeout 参数允许的最大毫秒数。
39
- */
40
- maxWaitMs?: number;
41
- /**
42
- * `shell.start` 默认内联等待时间,单位毫秒。
43
- */
44
- defaultInlineWaitMs?: number;
45
- /**
46
- * `shell.wait` 默认等待超时,单位毫秒。
47
- */
48
- defaultWaitTimeoutMs?: number;
49
- /**
50
- * `shell.exec` 默认总超时,单位毫秒。
51
- */
52
- defaultExecTimeoutMs?: number;
53
- /**
54
- * unrestricted sandbox 审批默认超时时间,单位毫秒。
55
- */
56
- defaultApprovalTimeoutMs?: number;
57
- }
58
- /**
59
- * ShellPlugin 归一化后的运行参数。
60
- */
61
- export interface ResolvedShellPluginOptions {
62
- /**
63
- * 最大 in-memory shell session 数量。
64
- */
65
- maxActiveShells: number;
66
- /**
67
- * 终态 shell session 在内存中保留多久后自动清理,单位毫秒。
68
- */
69
- cleanupDelayMs: number;
70
- /**
71
- * 单个 shell session 在内存中保留的最大输出字符数。
72
- */
73
- maxInMemoryOutputChars: number;
74
- /**
75
- * shell 输出预览保留的最大字符数。
76
- */
77
- outputPreviewChars: number;
78
- /**
79
- * wait/timeout 参数允许的最小毫秒数。
80
- */
81
- minWaitMs: number;
82
- /**
83
- * wait/timeout 参数允许的最大毫秒数。
84
- */
85
- maxWaitMs: number;
86
- /**
87
- * `shell.start` 默认内联等待时间,单位毫秒。
88
- */
89
- defaultInlineWaitMs: number;
90
- /**
91
- * `shell.wait` 默认等待超时,单位毫秒。
92
- */
93
- defaultWaitTimeoutMs: number;
94
- /**
95
- * `shell.exec` 默认总超时,单位毫秒。
96
- */
97
- defaultExecTimeoutMs: number;
98
- /**
99
- * unrestricted sandbox 审批默认超时时间,单位毫秒。
100
- */
101
- defaultApprovalTimeoutMs: number;
102
- }
103
- //# sourceMappingURL=ShellPluginOptions.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShellPluginOptions.d.ts","sourceRoot":"","sources":["../../../src/shell/types/ShellPluginOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,sBAAsB,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,wBAAwB,EAAE,MAAM,CAAC;CAClC"}
@@ -1,10 +0,0 @@
1
- /**
2
- * ShellPlugin constructor 参数类型。
3
- *
4
- * 关键点(中文)
5
- * - 所有字段都是可选 runtime 调参。
6
- * - 不传参数时保持 ShellPlugin 既有硬编码默认行为。
7
- * - 这些参数只影响 shell plugin runtime,不改变 sandbox 权限模型。
8
- */
9
- export {};
10
- //# sourceMappingURL=ShellPluginOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ShellPluginOptions.js","sourceRoot":"","sources":["../../../src/shell/types/ShellPluginOptions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,9 +0,0 @@
1
- /**
2
- * Shell Plugin 导出入口。
3
- *
4
- * 关键点(中文)
5
- * - Index 只负责导出类实现。
6
- * - 真正运行时的 per-agent 实例由宿主显式创建并传给 Agent。
7
- */
8
-
9
- export { ShellPlugin } from "./ShellPlugin.js";