@zihanw/pi-forge 0.3.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/CHANGELOG.md +196 -0
  2. package/PUBLIC_API.md +5 -0
  3. package/README.md +93 -478
  4. package/README.zh-CN.md +88 -461
  5. package/SUBAGENT_ADAPTER_CONTRACT.md +5 -0
  6. package/dist/agent-profile.d.ts +71 -0
  7. package/dist/agent-profile.d.ts.map +1 -0
  8. package/dist/agent-profile.js +303 -0
  9. package/dist/agent-profile.js.map +1 -0
  10. package/dist/forge-config.d.ts +88 -0
  11. package/dist/forge-config.d.ts.map +1 -0
  12. package/dist/forge-config.js +290 -0
  13. package/dist/forge-config.js.map +1 -0
  14. package/dist/forge-extensions.d.ts.map +1 -1
  15. package/dist/forge-extensions.js +19 -3
  16. package/dist/forge-extensions.js.map +1 -1
  17. package/dist/index.d.ts +4 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +97 -358
  20. package/dist/index.js.map +1 -1
  21. package/dist/lifecycle.d.ts +11 -3
  22. package/dist/lifecycle.d.ts.map +1 -1
  23. package/dist/lifecycle.js +90 -4
  24. package/dist/lifecycle.js.map +1 -1
  25. package/dist/loader.d.ts.map +1 -1
  26. package/dist/loader.js +116 -5
  27. package/dist/loader.js.map +1 -1
  28. package/dist/payload-capture.d.ts.map +1 -1
  29. package/dist/payload-capture.js +27 -0
  30. package/dist/payload-capture.js.map +1 -1
  31. package/dist/payload-command.d.ts +3 -3
  32. package/dist/payload-command.d.ts.map +1 -1
  33. package/dist/payload-command.js.map +1 -1
  34. package/dist/preview.d.ts +2 -2
  35. package/dist/preview.d.ts.map +1 -1
  36. package/dist/preview.js +2 -3
  37. package/dist/preview.js.map +1 -1
  38. package/dist/profile-command.d.ts +12 -0
  39. package/dist/profile-command.d.ts.map +1 -0
  40. package/dist/profile-command.js +291 -0
  41. package/dist/profile-command.js.map +1 -0
  42. package/dist/profile-service.d.ts +103 -0
  43. package/dist/profile-service.d.ts.map +1 -0
  44. package/dist/profile-service.js +220 -0
  45. package/dist/profile-service.js.map +1 -0
  46. package/dist/runtime/profile-runtime.d.ts +13 -0
  47. package/dist/runtime/profile-runtime.d.ts.map +1 -0
  48. package/dist/runtime/profile-runtime.js +47 -0
  49. package/dist/runtime/profile-runtime.js.map +1 -0
  50. package/dist/runtime/prompt-stack-runtime.d.ts +22 -0
  51. package/dist/runtime/prompt-stack-runtime.d.ts.map +1 -0
  52. package/dist/runtime/prompt-stack-runtime.js +104 -0
  53. package/dist/runtime/prompt-stack-runtime.js.map +1 -0
  54. package/dist/runtime/subagent-runtime.d.ts +45 -0
  55. package/dist/runtime/subagent-runtime.d.ts.map +1 -0
  56. package/dist/runtime/subagent-runtime.js +335 -0
  57. package/dist/runtime/subagent-runtime.js.map +1 -0
  58. package/dist/runtime/tool-policy-runtime.d.ts +15 -0
  59. package/dist/runtime/tool-policy-runtime.d.ts.map +1 -0
  60. package/dist/runtime/tool-policy-runtime.js +170 -0
  61. package/dist/runtime/tool-policy-runtime.js.map +1 -0
  62. package/dist/runtime/web-editor-runtime.d.ts +9 -0
  63. package/dist/runtime/web-editor-runtime.d.ts.map +1 -0
  64. package/dist/runtime/web-editor-runtime.js +131 -0
  65. package/dist/runtime/web-editor-runtime.js.map +1 -0
  66. package/dist/runtime-state.d.ts +4 -0
  67. package/dist/runtime-state.d.ts.map +1 -1
  68. package/dist/runtime-state.js +2 -0
  69. package/dist/runtime-state.js.map +1 -1
  70. package/dist/storage.d.ts +4 -0
  71. package/dist/storage.d.ts.map +1 -1
  72. package/dist/storage.js +24 -1
  73. package/dist/storage.js.map +1 -1
  74. package/dist/subagent/canonical.d.ts +22 -0
  75. package/dist/subagent/canonical.d.ts.map +1 -0
  76. package/dist/subagent/canonical.js +24 -0
  77. package/dist/subagent/canonical.js.map +1 -0
  78. package/dist/subagent/context.d.ts +8 -0
  79. package/dist/subagent/context.d.ts.map +1 -0
  80. package/dist/subagent/context.js +125 -0
  81. package/dist/subagent/context.js.map +1 -0
  82. package/dist/subagent/contract.d.ts +10 -0
  83. package/dist/subagent/contract.d.ts.map +1 -0
  84. package/dist/subagent/contract.js +10 -0
  85. package/dist/subagent/contract.js.map +1 -0
  86. package/dist/subagent/index.d.ts +14 -0
  87. package/dist/subagent/index.d.ts.map +1 -0
  88. package/dist/subagent/index.js +14 -0
  89. package/dist/subagent/index.js.map +1 -0
  90. package/dist/subagent/plan.d.ts +18 -0
  91. package/dist/subagent/plan.d.ts.map +1 -0
  92. package/dist/subagent/plan.js +157 -0
  93. package/dist/subagent/plan.js.map +1 -0
  94. package/dist/subagent/preflight.d.ts +4 -0
  95. package/dist/subagent/preflight.d.ts.map +1 -0
  96. package/dist/subagent/preflight.js +108 -0
  97. package/dist/subagent/preflight.js.map +1 -0
  98. package/dist/subagent/request.d.ts +4 -0
  99. package/dist/subagent/request.d.ts.map +1 -0
  100. package/dist/subagent/request.js +122 -0
  101. package/dist/subagent/request.js.map +1 -0
  102. package/dist/subagent/response.d.ts +8 -0
  103. package/dist/subagent/response.d.ts.map +1 -0
  104. package/dist/subagent/response.js +155 -0
  105. package/dist/subagent/response.js.map +1 -0
  106. package/dist/subagent/tools.d.ts +4 -0
  107. package/dist/subagent/tools.d.ts.map +1 -0
  108. package/dist/subagent/tools.js +42 -0
  109. package/dist/subagent/tools.js.map +1 -0
  110. package/dist/subagent/types.d.ts +268 -0
  111. package/dist/subagent/types.d.ts.map +1 -0
  112. package/dist/subagent/types.js +3 -0
  113. package/dist/subagent/types.js.map +1 -0
  114. package/dist/subagent/validation.d.ts +35 -0
  115. package/dist/subagent/validation.d.ts.map +1 -0
  116. package/dist/subagent/validation.js +314 -0
  117. package/dist/subagent/validation.js.map +1 -0
  118. package/dist/subagent-command.d.ts +4 -0
  119. package/dist/subagent-command.d.ts.map +1 -0
  120. package/dist/subagent-command.js +246 -0
  121. package/dist/subagent-command.js.map +1 -0
  122. package/dist/subagent-host.d.ts +44 -0
  123. package/dist/subagent-host.d.ts.map +1 -0
  124. package/dist/subagent-host.js +292 -0
  125. package/dist/subagent-host.js.map +1 -0
  126. package/dist/subagent-profile-tool.d.ts +49 -0
  127. package/dist/subagent-profile-tool.d.ts.map +1 -0
  128. package/dist/subagent-profile-tool.js +124 -0
  129. package/dist/subagent-profile-tool.js.map +1 -0
  130. package/dist/subagent-tool.d.ts +53 -0
  131. package/dist/subagent-tool.d.ts.map +1 -0
  132. package/dist/subagent-tool.js +456 -0
  133. package/dist/subagent-tool.js.map +1 -0
  134. package/dist/web-editor/client-script.d.ts +2 -0
  135. package/dist/web-editor/client-script.d.ts.map +1 -0
  136. package/dist/web-editor/client-script.generated.d.ts +2 -0
  137. package/dist/web-editor/client-script.generated.d.ts.map +1 -0
  138. package/dist/web-editor/client-script.generated.js +3 -0
  139. package/dist/web-editor/client-script.generated.js.map +1 -0
  140. package/dist/web-editor/client-script.js +2 -0
  141. package/dist/web-editor/client-script.js.map +1 -0
  142. package/dist/web-editor/client-styles.d.ts +2 -0
  143. package/dist/web-editor/client-styles.d.ts.map +1 -0
  144. package/dist/web-editor/client-styles.generated.d.ts +2 -0
  145. package/dist/web-editor/client-styles.generated.d.ts.map +1 -0
  146. package/dist/web-editor/client-styles.generated.js +3 -0
  147. package/dist/web-editor/client-styles.generated.js.map +1 -0
  148. package/dist/web-editor/client-styles.js +2 -0
  149. package/dist/web-editor/client-styles.js.map +1 -0
  150. package/dist/web-editor/page.d.ts +2 -0
  151. package/dist/web-editor/page.d.ts.map +1 -1
  152. package/dist/web-editor/page.js +14 -3319
  153. package/dist/web-editor/page.js.map +1 -1
  154. package/dist/web-editor/server.d.ts.map +1 -1
  155. package/dist/web-editor/server.js +148 -0
  156. package/dist/web-editor/server.js.map +1 -1
  157. package/dist/web-editor/styles.d.ts +2 -0
  158. package/dist/web-editor/styles.d.ts.map +1 -0
  159. package/dist/web-editor/styles.js +1053 -0
  160. package/dist/web-editor/styles.js.map +1 -0
  161. package/dist/web-editor/types.d.ts +79 -0
  162. package/dist/web-editor/types.d.ts.map +1 -1
  163. package/dist/web-host.d.ts +16 -5
  164. package/dist/web-host.d.ts.map +1 -1
  165. package/dist/web-host.js +307 -0
  166. package/dist/web-host.js.map +1 -1
  167. package/docs/README.md +41 -0
  168. package/docs/concepts/agent-profiles.md +60 -0
  169. package/docs/concepts/prompt-stacks.md +90 -0
  170. package/docs/design/README.md +17 -0
  171. package/docs/design/roadmap-0.4-archive.md +216 -0
  172. package/docs/design/subagents/design-review.md +220 -0
  173. package/docs/design/subagents/interface-design.md +274 -0
  174. package/docs/design/subagents/sdk-spike-findings.md +117 -0
  175. package/docs/development/complexity-review.md +86 -0
  176. package/docs/development/release.md +31 -0
  177. package/docs/development/roadmap.md +42 -0
  178. package/docs/development/setup.md +75 -0
  179. package/docs/getting-started.md +93 -0
  180. package/docs/guides/custom-macros-and-slots.md +68 -0
  181. package/docs/guides/debugging.md +39 -0
  182. package/docs/guides/delegation.md +99 -0
  183. package/docs/guides/sillytavern-import.md +47 -0
  184. package/docs/guides/use-cases.md +65 -0
  185. package/docs/guides/web-editor.md +75 -0
  186. package/docs/reference/commands.md +60 -0
  187. package/docs/reference/configuration.md +64 -0
  188. package/docs/reference/features.md +279 -0
  189. package/docs/reference/macros-and-slots.md +82 -0
  190. package/docs/reference/public-api.md +28 -0
  191. package/docs/reference/stack-schema.md +167 -0
  192. package/docs/reference/subagent-adapter.md +204 -0
  193. package/docs/zh-CN/README.md +37 -0
  194. package/docs/zh-CN/concepts/agent-profiles.md +44 -0
  195. package/docs/zh-CN/concepts/prompt-stacks.md +40 -0
  196. package/docs/zh-CN/getting-started.md +79 -0
  197. package/docs/zh-CN/guides/delegation.md +66 -0
  198. package/docs/zh-CN/guides/web-editor.md +45 -0
  199. package/docs/zh-CN/reference/commands.md +58 -0
  200. package/package.json +55 -13
  201. package/src/compiler.ts +0 -578
  202. package/src/extension-registry.ts +0 -33
  203. package/src/forge-extensions.ts +0 -223
  204. package/src/index.ts +0 -445
  205. package/src/lifecycle.ts +0 -171
  206. package/src/loader.ts +0 -394
  207. package/src/macro-engine.ts +0 -358
  208. package/src/payload-capture.ts +0 -85
  209. package/src/payload-command.ts +0 -138
  210. package/src/policy.ts +0 -42
  211. package/src/preset-command.ts +0 -280
  212. package/src/preview.ts +0 -226
  213. package/src/regex.ts +0 -500
  214. package/src/render-helpers.ts +0 -169
  215. package/src/runtime-state.ts +0 -40
  216. package/src/sillytavern-importer/items.ts +0 -98
  217. package/src/sillytavern-importer/macros.ts +0 -159
  218. package/src/sillytavern-importer/prompt-order.ts +0 -54
  219. package/src/sillytavern-importer/regex.ts +0 -270
  220. package/src/sillytavern-importer/report.ts +0 -202
  221. package/src/sillytavern-importer/types.ts +0 -120
  222. package/src/sillytavern-importer.ts +0 -152
  223. package/src/slot-renderers.ts +0 -414
  224. package/src/stack-migration.ts +0 -159
  225. package/src/storage.ts +0 -45
  226. package/src/types.ts +0 -209
  227. package/src/web-editor/index.ts +0 -2
  228. package/src/web-editor/page.ts +0 -3330
  229. package/src/web-editor/server.ts +0 -294
  230. package/src/web-editor/types.ts +0 -98
  231. package/src/web-host.ts +0 -232
@@ -0,0 +1,456 @@
1
+ import { getMarkdownTheme, } from "@earendil-works/pi-coding-agent";
2
+ import { Container, Markdown, Spacer, Text } from "@earendil-works/pi-tui";
3
+ import { Type } from "typebox";
4
+ import { loadForgeSubagentSettings, resolveSubagentProfilePolicy } from "./forge-config.js";
5
+ import { sanitizePiSubprocessRunReport, } from "@zihanw/pi-subagent-runtime/backends/subprocess";
6
+ import { isRecord } from "@zihanw/pi-subagent-runtime";
7
+ const APPROVE = "Approve and run";
8
+ const VIEW_FULL_PROMPT = "View full prompt";
9
+ const REJECT = "Reject";
10
+ const MAX_PROGRESS_ITEMS = 100;
11
+ const MAX_APPROVAL_TASK_PREVIEW_CHARS = 48;
12
+ const MAX_APPROVAL_EXECUTION_PREVIEW_CHARS = 44;
13
+ const MAX_APPROVAL_PATH_PREVIEW_CHARS = 44;
14
+ const MAX_APPROVAL_FINGERPRINT_PREVIEW_CHARS = 24;
15
+ const ForgeSubagentParameters = Type.Object({
16
+ profileId: Type.String({
17
+ minLength: 1,
18
+ description: "ID of a Pi Forge agent profile explicitly enabled for subagent delegation.",
19
+ }),
20
+ task: Type.String({
21
+ minLength: 1,
22
+ description: "The focused task to delegate to the subagent.",
23
+ }),
24
+ backend: Type.Optional(Type.String({
25
+ minLength: 1,
26
+ description: "Backend ID to prepare and execute through (see /forge-agent backends). Honored only for interactively approved runs; trusted-project unattended invocation always uses the configured default backend.",
27
+ })),
28
+ });
29
+ export function registerForgeSubagentTool(pi, runtime, profileIds) {
30
+ pi.registerTool({
31
+ name: "forge_subagent",
32
+ label: "Forge Subagent",
33
+ description: [
34
+ "Delegate one foreground task to a Pi Forge agent profile explicitly enabled in subagents.profiles.",
35
+ "Use forge_subagent_profiles first when the user has not already specified a profile ID.",
36
+ "Runs require human approval after exact preparation unless the trusted project explicitly enables unattended agent invocation.",
37
+ "The child receives only approved read tools, but runs with the invoking user's OS permissions; read-only is not a sandbox.",
38
+ "The optional backend parameter selects the execution backend for interactively approved runs; unattended invocation always uses the configured default backend.",
39
+ "Use the final report as evidence and do not repeatedly request the same rejected delegation.",
40
+ ].join(" "),
41
+ parameters: ForgeSubagentParameters,
42
+ executionMode: "sequential",
43
+ async execute(_toolCallId, params, signal, onUpdate, ctx) {
44
+ const settings = loadForgeSubagentSettings(ctx);
45
+ const approvalRequired = !settings.allowAgentInvocationWithoutApproval;
46
+ const configDiagnostics = settings.warnings.map((message) => ({ level: "warning", code: "host.config", message }));
47
+ const baseDetails = {
48
+ status: "preparing",
49
+ profileId: params.profileId,
50
+ task: params.task,
51
+ approval: {
52
+ required: approvalRequired,
53
+ approved: false,
54
+ viewedFullPrompt: false,
55
+ source: approvalRequired ? "none" : "trusted-project-config",
56
+ },
57
+ diagnostics: configDiagnostics,
58
+ progress: [],
59
+ };
60
+ const knownProfileIds = profileIds();
61
+ const enabledProfileIds = knownProfileIds.filter((profileId) => resolveSubagentProfilePolicy(settings, profileId).enabled);
62
+ if (!knownProfileIds.includes(params.profileId)) {
63
+ const available = enabledProfileIds.join(", ") || "none";
64
+ return toolResult(`Unknown Pi Forge agent profile: ${params.profileId}. Enabled subagent profiles: ${available}.`, { ...baseDetails, status: "failed" }, true);
65
+ }
66
+ const configuredPolicy = resolveSubagentProfilePolicy(settings, params.profileId);
67
+ if (!configuredPolicy.enabled) {
68
+ return toolResult(`Pi Forge agent profile "${params.profileId}" is not enabled for subagent delegation. Use forge_subagent_profiles to discover enabled profiles.`, { ...baseDetails, status: "failed" }, true);
69
+ }
70
+ const configuredBackend = configuredPolicy.backend;
71
+ if (!approvalRequired && params.backend && params.backend !== configuredBackend.id) {
72
+ return toolResult(`Subagent invocation was not run: unattended invocation is pinned to the configured backend "${configuredBackend.id}". To use "${params.backend}", run interactively or change the trusted subagent configuration.`, {
73
+ ...baseDetails,
74
+ status: "failed",
75
+ approval: { required: false, approved: false, viewedFullPrompt: false, source: "trusted-project-config" },
76
+ }, true);
77
+ }
78
+ const runPolicy = resolveSubagentProfilePolicy(settings, params.profileId, approvalRequired ? params.backend : undefined);
79
+ if (approvalRequired && !ctx.hasUI) {
80
+ return toolResult("Subagent invocation was not run: interactive human approval is unavailable.", { ...baseDetails, status: "cancelled" });
81
+ }
82
+ onUpdate?.(toolResult("Preparing the exact subagent prompt; provider transport is still closed.", baseDetails));
83
+ let prepared;
84
+ try {
85
+ const preparation = await runtime.prepare(params.profileId, params.task, ctx, {
86
+ backendId: runPolicy.backend.id,
87
+ timeoutMs: runPolicy.timeout.milliseconds,
88
+ });
89
+ if (!preparation.ok) {
90
+ const diagnostics = [...configDiagnostics, ...preparation.diagnostics];
91
+ return toolResult(`Subagent preparation failed:\n${renderDiagnostics(diagnostics)}`, { ...baseDetails, status: "failed", diagnostics }, true);
92
+ }
93
+ prepared = preparation.prepared;
94
+ const plan = summarizeForgeSubagentPlan(prepared, ctx.cwd);
95
+ const preparedDetails = {
96
+ ...baseDetails,
97
+ status: approvalRequired ? "awaiting-approval" : "prepared",
98
+ plan,
99
+ diagnostics: [...configDiagnostics, ...prepared.diagnostics],
100
+ };
101
+ onUpdate?.(toolResult(approvalRequired
102
+ ? "The exact plan is ready and awaiting human approval."
103
+ : "The exact plan is ready; per-run approval is bypassed by trusted-project configuration.", preparedDetails));
104
+ const approval = approvalRequired
105
+ ? await requestForgeSubagentApproval(prepared, params.task, ctx, signal)
106
+ : { approved: true, viewedFullPrompt: false };
107
+ if (!approval.approved) {
108
+ await runtime.discard(prepared);
109
+ prepared = undefined;
110
+ return toolResult("Subagent invocation was rejected by the human before provider transport.", {
111
+ ...preparedDetails,
112
+ status: "cancelled",
113
+ approval: { required: true, approved: false, viewedFullPrompt: approval.viewedFullPrompt, source: "none" },
114
+ });
115
+ }
116
+ const approvedAt = new Date().toISOString();
117
+ const progress = [];
118
+ const running = {
119
+ ...preparedDetails,
120
+ status: "running",
121
+ approval: {
122
+ required: approvalRequired,
123
+ approved: true,
124
+ viewedFullPrompt: approval.viewedFullPrompt,
125
+ source: approvalRequired ? "human" : "trusted-project-config",
126
+ executionFingerprint: prepared.plan.executionFingerprint,
127
+ approvedAt,
128
+ },
129
+ progress,
130
+ };
131
+ const response = await runtime.execute(prepared, ctx, signal, (update) => {
132
+ progress.push(structuredClone(update));
133
+ if (progress.length > MAX_PROGRESS_ITEMS)
134
+ progress.splice(0, progress.length - MAX_PROGRESS_ITEMS);
135
+ onUpdate?.(toolResult(truncate(update.message, 2_000), { ...running, progress: [...progress] }));
136
+ });
137
+ prepared = undefined;
138
+ const rawReport = runtime.takeReport?.(response.runId);
139
+ const report = rawReport ? sanitizePiSubprocessRunReport(rawReport) : undefined;
140
+ const finalDetails = {
141
+ ...running,
142
+ status: toolStatus(response),
143
+ progress: [...progress],
144
+ response,
145
+ report,
146
+ };
147
+ return toolResult(renderResponseForModel(response), finalDetails, response.status === "failed");
148
+ }
149
+ catch (error) {
150
+ if (prepared)
151
+ await runtime.discard(prepared).catch(() => undefined);
152
+ const message = error instanceof Error ? error.message : String(error);
153
+ return toolResult(`Subagent invocation failed: ${message}`, { ...baseDetails, status: "failed" }, true);
154
+ }
155
+ },
156
+ renderCall(args, theme) {
157
+ const task = truncate(args.task.replace(/\s+/g, " ").trim(), 100);
158
+ return new Text(`${theme.fg("toolTitle", theme.bold("forge subagent "))}${theme.fg("accent", args.profileId)}\n${theme.fg("dim", task)}`, 0, 0);
159
+ },
160
+ renderResult(result, { expanded, isPartial }, theme) {
161
+ const details = result.details;
162
+ if (!details)
163
+ return new Text(textContent(result) || "(no subagent result)", 0, 0);
164
+ if (!expanded)
165
+ return renderCollapsedResult(result, details, isPartial, theme);
166
+ return renderExpandedResult(result, details, theme);
167
+ },
168
+ });
169
+ }
170
+ export async function requestForgeSubagentApproval(prepared, task, ctx, signal) {
171
+ let viewedFullPrompt = false;
172
+ while (!signal?.aborted) {
173
+ const choice = await ctx.ui.select(renderApprovalSummary(prepared, task, ctx.cwd), [APPROVE, VIEW_FULL_PROMPT, REJECT], { signal });
174
+ if (choice === VIEW_FULL_PROMPT) {
175
+ viewedFullPrompt = true;
176
+ await ctx.ui.editor(`Subagent approval details: ${prepared.plan.profile.profile.id} (view only; edits are ignored)`, [
177
+ renderApprovalDetails(prepared, task, ctx.cwd),
178
+ "",
179
+ renderFullForgeSubagentPrompt(prepared),
180
+ ].join("\n"));
181
+ continue;
182
+ }
183
+ return { approved: choice === APPROVE, viewedFullPrompt };
184
+ }
185
+ return { approved: false, viewedFullPrompt };
186
+ }
187
+ export function summarizeForgeSubagentPlan(prepared, cwd) {
188
+ const plan = prepared.plan;
189
+ return {
190
+ backendId: plan.backendId,
191
+ profileId: plan.profile.profile.id,
192
+ promptStackId: plan.profile.promptStack?.id ?? null,
193
+ provider: plan.model.provider,
194
+ model: plan.model.id,
195
+ thinkingLevel: plan.thinkingLevel,
196
+ effectiveToolIds: [...plan.effectiveToolIds],
197
+ executionBoundary: plan.access.executionBoundary ?? "isolated",
198
+ workingDirectory: cwd,
199
+ systemPromptChars: plan.systemPrompt.length,
200
+ messageCount: plan.messages.length,
201
+ messageRoles: plan.messages.map((message) => message.role),
202
+ ...(plan.limits.timeoutMs ? {
203
+ timeoutMs: plan.limits.timeoutMs.value,
204
+ timeoutEnforcement: plan.limits.timeoutMs.enforcement,
205
+ } : {}),
206
+ promptRuntimeFingerprint: plan.promptRuntimeFingerprint,
207
+ conversationFingerprint: plan.conversationFingerprint,
208
+ executionFingerprint: plan.executionFingerprint,
209
+ };
210
+ }
211
+ export function renderApprovalSummary(prepared, task, cwd) {
212
+ const plan = prepared.plan;
213
+ const summary = summarizeForgeSubagentPlan(prepared, cwd);
214
+ const timeout = summary.timeoutMs === undefined
215
+ ? "none"
216
+ : `${summary.timeoutMs} ms ${summary.timeoutEnforcement ?? "unknown enforcement"}`;
217
+ return [
218
+ `Run foreground subagent ${oneLinePreview(summary.profileId, MAX_APPROVAL_EXECUTION_PREVIEW_CHARS)}?`,
219
+ `Task: ${oneLinePreview(task, MAX_APPROVAL_TASK_PREVIEW_CHARS)}`,
220
+ `Backend: ${oneLinePreview(summary.backendId, MAX_APPROVAL_EXECUTION_PREVIEW_CHARS)}`,
221
+ `Model: ${oneLinePreview(`${summary.provider}/${summary.model} · thinking ${summary.thinkingLevel}`, MAX_APPROVAL_EXECUTION_PREVIEW_CHARS)}`,
222
+ `Stack/tools: ${oneLinePreview(`${summary.promptStackId ?? "none"} · ${toolNames(plan).join(", ") || "none"}`, MAX_APPROVAL_EXECUTION_PREVIEW_CHARS)}`,
223
+ `Directory: ${oneLinePreview(summary.workingDirectory, MAX_APPROVAL_PATH_PREVIEW_CHARS)}`,
224
+ `Boundary: ${oneLinePreview(summary.executionBoundary, 16)} · ${timeout}`,
225
+ `Payload: ${summary.systemPromptChars} system chars + ${summary.messageCount} messages`,
226
+ `Execution: ${compactIdentifier(summary.executionFingerprint, MAX_APPROVAL_FINGERPRINT_PREVIEW_CHARS)} (see full prompt)`,
227
+ "No OS sandbox; provider gets prompt/files read by agent.",
228
+ ].join("\n");
229
+ }
230
+ export function renderApprovalDetails(prepared, task, cwd) {
231
+ const plan = prepared.plan;
232
+ const summary = summarizeForgeSubagentPlan(prepared, cwd);
233
+ return [
234
+ "# Subagent approval details",
235
+ "",
236
+ "Agent prompt:",
237
+ indent(truncate(task, 2_000)),
238
+ "",
239
+ `Backend: ${summary.backendId}`,
240
+ `Provider: ${summary.provider}`,
241
+ `Model: ${summary.model}`,
242
+ `Thinking: ${summary.thinkingLevel}`,
243
+ `Prompt stack: ${summary.promptStackId ?? "none"}`,
244
+ `Tools: ${toolNames(plan).join(", ") || "none"}`,
245
+ `Working directory: ${summary.workingDirectory}`,
246
+ `Boundary: ${summary.executionBoundary} (read-only tool policy; no OS sandbox)`,
247
+ ...(summary.timeoutMs === undefined ? [] : [`Timeout: ${summary.timeoutMs} ms (${summary.timeoutEnforcement ?? "unknown enforcement"})`]),
248
+ `Full payload: ${summary.systemPromptChars} system chars + ${summary.messageCount} messages`,
249
+ `Prompt runtime fingerprint: ${summary.promptRuntimeFingerprint}`,
250
+ `Conversation fingerprint: ${summary.conversationFingerprint}`,
251
+ `Execution fingerprint: ${summary.executionFingerprint}`,
252
+ "",
253
+ "The provider receives the compiled prompt and any files the read tools access.",
254
+ "The subprocess retains your user permissions even though write/process tools are unavailable.",
255
+ ].join("\n");
256
+ }
257
+ export function renderFullForgeSubagentPrompt(prepared) {
258
+ const plan = prepared.plan;
259
+ const messages = plan.messages.flatMap((message, index) => [
260
+ `## Message ${index + 1}: ${message.role}${message.protectedTask ? " (protected delegated task)" : ""}${message.source ? ` [${message.source}]` : ""}`,
261
+ "",
262
+ message.content.map((part) => part.type === "text" ? part.text : `[${part.mimeType} media ${part.mediaId}]`).join("\n"),
263
+ "",
264
+ ]);
265
+ return [
266
+ `# Exact provider-bound subagent prompt`,
267
+ "",
268
+ `Backend: ${plan.backendId}`,
269
+ `Profile: ${plan.profile.profile.id}`,
270
+ `Provider/model: ${plan.model.provider}/${plan.model.id}`,
271
+ `Thinking: ${plan.thinkingLevel}`,
272
+ `Tools: ${toolNames(plan).join(", ") || "none"}`,
273
+ `Timeout: ${plan.limits.timeoutMs ? `${plan.limits.timeoutMs.value} ms (${plan.limits.timeoutMs.enforcement})` : "none"}`,
274
+ `Conversation fingerprint: ${plan.conversationFingerprint}`,
275
+ `Execution fingerprint: ${plan.executionFingerprint}`,
276
+ "",
277
+ "## System prompt",
278
+ "",
279
+ plan.systemPrompt,
280
+ "",
281
+ ...messages,
282
+ ].join("\n");
283
+ }
284
+ function renderCollapsedResult(result, details, isPartial, theme) {
285
+ const icon = details.status === "completed"
286
+ ? theme.fg("success", "✓")
287
+ : details.status === "failed"
288
+ ? theme.fg("error", "✗")
289
+ : details.status === "cancelled" || details.status === "timed-out"
290
+ ? theme.fg("warning", "○")
291
+ : theme.fg("accent", "●");
292
+ const lines = [`${icon} ${theme.fg("toolTitle", theme.bold(details.profileId))} ${theme.fg("muted", `[${details.status}${isPartial ? ", live" : ""}]`)}`];
293
+ if (details.plan)
294
+ lines.push(theme.fg("dim", `${details.plan.provider}/${details.plan.model} · ${details.plan.thinkingLevel} · ${details.plan.executionBoundary}`));
295
+ const output = textContent(result);
296
+ if (output)
297
+ lines.push(theme.fg(details.status === "failed" ? "error" : "toolOutput", truncateLines(output, 8, 2_000)));
298
+ if (details.report)
299
+ lines.push(theme.fg("dim", usageText(details.report)));
300
+ if (details.report && details.report.messages.length > 0)
301
+ lines.push(theme.fg("muted", "Ctrl+O to view the full subagent transcript"));
302
+ return new Text(lines.join("\n"), 0, 0);
303
+ }
304
+ function renderExpandedResult(result, details, theme) {
305
+ const container = new Container();
306
+ container.addChild(new Text(theme.fg("toolTitle", theme.bold(`${details.profileId} [${details.status}]`)), 0, 0));
307
+ if (details.plan) {
308
+ container.addChild(new Text([
309
+ `${theme.fg("muted", "Model:")} ${details.plan.provider}/${details.plan.model} (${details.plan.thinkingLevel})`,
310
+ `${theme.fg("muted", "Boundary:")} ${details.plan.executionBoundary}; read-only model tools`,
311
+ ...(details.plan.timeoutMs === undefined ? [] : [`${theme.fg("muted", "Timeout:")} ${details.plan.timeoutMs} ms (${details.plan.timeoutEnforcement ?? "unknown"})`]),
312
+ `${theme.fg("muted", "Tools:")} ${details.plan.effectiveToolIds.join(", ") || "none"}`,
313
+ `${theme.fg("muted", "Fingerprint:")} ${details.plan.executionFingerprint}`,
314
+ `${theme.fg("muted", "Approval:")} ${approvalText(details.approval)}`,
315
+ ].join("\n"), 0, 0));
316
+ }
317
+ container.addChild(new Spacer(1));
318
+ container.addChild(new Text(theme.fg("muted", "─── Delegated task ───"), 0, 0));
319
+ container.addChild(new Text(details.task, 0, 0));
320
+ if (details.report?.messages.length) {
321
+ container.addChild(new Spacer(1));
322
+ const transcriptLabel = details.report.retention.truncated
323
+ ? `─── Bounded subagent transcript tail (${details.report.retention.omittedMessages} earlier/oversized message${details.report.retention.omittedMessages === 1 ? "" : "s"} omitted) ───`
324
+ : "─── Subagent transcript ───";
325
+ container.addChild(new Text(theme.fg("muted", transcriptLabel), 0, 0));
326
+ for (const message of details.report.messages)
327
+ appendMessage(container, message, theme);
328
+ container.addChild(new Spacer(1));
329
+ container.addChild(new Text(theme.fg("dim", usageText(details.report)), 0, 0));
330
+ if (details.report.stderr.trim()) {
331
+ container.addChild(new Spacer(1));
332
+ container.addChild(new Text(theme.fg("warning", `stderr:\n${details.report.stderr.trim()}`), 0, 0));
333
+ }
334
+ }
335
+ else {
336
+ const output = textContent(result);
337
+ if (output) {
338
+ container.addChild(new Spacer(1));
339
+ container.addChild(new Text(theme.fg("muted", "─── Result ───"), 0, 0));
340
+ container.addChild(new Markdown(output, 0, 0, getMarkdownTheme()));
341
+ }
342
+ }
343
+ return container;
344
+ }
345
+ function appendMessage(container, value, theme) {
346
+ if (!isRecord(value))
347
+ return;
348
+ if (value.role === "assistant" && Array.isArray(value.content)) {
349
+ for (const part of value.content) {
350
+ if (!isRecord(part))
351
+ continue;
352
+ if (part.type === "toolCall") {
353
+ const name = typeof part.name === "string" ? part.name : "tool";
354
+ const args = isRecord(part.arguments) ? JSON.stringify(part.arguments) : "{}";
355
+ container.addChild(new Text(`${theme.fg("muted", "→")} ${theme.fg("accent", name)} ${theme.fg("dim", args)}`, 0, 0));
356
+ }
357
+ else if (part.type === "text" && typeof part.text === "string" && part.text.trim()) {
358
+ container.addChild(new Markdown(part.text.trim(), 0, 0, getMarkdownTheme()));
359
+ }
360
+ }
361
+ return;
362
+ }
363
+ if (value.role === "toolResult") {
364
+ const name = typeof value.toolName === "string" ? value.toolName : "tool";
365
+ const header = value.isError === true ? theme.fg("error", `← ${name} failed`) : theme.fg("muted", `← ${name}`);
366
+ container.addChild(new Text(header, 0, 0));
367
+ const content = messageText(value.content);
368
+ if (content)
369
+ container.addChild(new Text(theme.fg("toolOutput", content), 1, 0));
370
+ }
371
+ }
372
+ function toolResult(text, details, _isError = false) {
373
+ return { content: [{ type: "text", text }], details: structuredClone(details) };
374
+ }
375
+ function renderResponseForModel(response) {
376
+ if (response.status === "completed")
377
+ return response.output?.text || "Subagent completed without a textual report.";
378
+ if (response.status === "failed")
379
+ return `Subagent failed (${response.error.code}): ${response.error.message}${response.output?.text ? `\n\nPartial report:\n${response.output.text}` : ""}`;
380
+ if (response.status === "cancelled" || response.status === "timed-out")
381
+ return `Subagent ${response.status}: ${response.reason}${response.output?.text ? `\n\nPartial report:\n${response.output.text}` : ""}`;
382
+ return `Subagent stopped after reaching ${response.reachedLimit}.${response.output?.text ? `\n\nPartial report:\n${response.output.text}` : ""}`;
383
+ }
384
+ function toolStatus(response) {
385
+ if (response.status === "completed")
386
+ return "completed";
387
+ if (response.status === "failed" || response.status === "limit-reached")
388
+ return "failed";
389
+ return response.status;
390
+ }
391
+ function renderDiagnostics(diagnostics) {
392
+ return diagnostics.map((item) => `${item.level.toUpperCase()} ${item.code}: ${item.message}`).join("\n") || "No diagnostics.";
393
+ }
394
+ function toolNames(plan) {
395
+ const names = new Map(plan.preflight.toolCatalog.map((tool) => [tool.id, tool.name]));
396
+ return plan.effectiveToolIds.map((id) => names.get(id) ?? id);
397
+ }
398
+ function textContent(result) {
399
+ return result.content.filter((part) => part.type === "text").map((part) => part.text).join("\n");
400
+ }
401
+ function messageText(value) {
402
+ if (typeof value === "string")
403
+ return value;
404
+ if (!Array.isArray(value))
405
+ return "";
406
+ return value.filter(isRecord).flatMap((part) => {
407
+ if (part.type === "text" && typeof part.text === "string")
408
+ return [part.text];
409
+ if (part.type === "image") {
410
+ const mimeType = typeof part.mimeType === "string" ? part.mimeType : "image/unknown";
411
+ const encodedBytes = typeof part.encodedBytes === "number" ? `; ${formatBytes(part.encodedBytes)} encoded` : "";
412
+ return [`[Image data omitted from retained subagent report: ${mimeType}${encodedBytes}]`];
413
+ }
414
+ return [];
415
+ }).join("\n");
416
+ }
417
+ function formatBytes(bytes) {
418
+ if (bytes < 1024)
419
+ return `${bytes} B`;
420
+ if (bytes < 1024 * 1024)
421
+ return `${(bytes / 1024).toFixed(1)} KiB`;
422
+ return `${(bytes / (1024 * 1024)).toFixed(2)} MiB`;
423
+ }
424
+ function usageText(report) {
425
+ const usage = report.usage;
426
+ const retention = report.retention.truncated ? ` · ${report.retention.omittedMessages} transcript message${report.retention.omittedMessages === 1 ? "" : "s"} omitted` : "";
427
+ return `${usage.turns} turn${usage.turns === 1 ? "" : "s"} · ${usage.input} input · ${usage.output} output · ${usage.totalTokens} total · $${usage.cost.toFixed(4)}${retention}`;
428
+ }
429
+ function approvalText(approval) {
430
+ if (!approval.approved)
431
+ return approval.required ? "not approved" : "not executed";
432
+ if (approval.source === "trusted-project-config")
433
+ return "per-run approval bypassed by trusted-project config";
434
+ return `approved${approval.viewedFullPrompt ? " after full-prompt review" : ""}`;
435
+ }
436
+ function indent(text) {
437
+ return text.split("\n").map((line) => ` ${line}`).join("\n");
438
+ }
439
+ function truncate(text, maxChars) {
440
+ return text.length <= maxChars ? text : `${text.slice(0, Math.max(0, maxChars - 3))}...`;
441
+ }
442
+ function oneLinePreview(text, maxChars) {
443
+ return truncate(text.replace(/\s+/g, " ").trim(), maxChars);
444
+ }
445
+ function compactIdentifier(value, maxChars) {
446
+ if (value.length <= maxChars)
447
+ return value;
448
+ const visibleChars = Math.max(2, maxChars - 3);
449
+ const startChars = Math.ceil(visibleChars / 2);
450
+ const endChars = Math.floor(visibleChars / 2);
451
+ return `${value.slice(0, startChars)}...${value.slice(-endChars)}`;
452
+ }
453
+ function truncateLines(text, maxLines, maxChars) {
454
+ return truncate(text.split("\n").slice(0, maxLines).join("\n"), maxChars);
455
+ }
456
+ //# sourceMappingURL=subagent-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subagent-tool.js","sourceRoot":"","sources":["../src/subagent-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { EDITOR_CLIENT_SCRIPT } from "./client-script.generated.ts";
2
+ //# sourceMappingURL=client-script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-script.d.ts","sourceRoot":"","sources":["../../src/web-editor/client-script.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const EDITOR_CLIENT_SCRIPT: string;
2
+ //# sourceMappingURL=client-script.generated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-script.generated.d.ts","sourceRoot":"","sources":["../../src/web-editor/client-script.generated.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,oBAAoB,EAAE,MAA6wtX,CAAC"}