@zihanw/pi-forge 0.4.0 → 0.4.1

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 (109) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.zh-CN.md +3 -3
  3. package/dist/agent-profile.d.ts +24 -1
  4. package/dist/agent-profile.d.ts.map +1 -1
  5. package/dist/agent-profile.js +146 -36
  6. package/dist/agent-profile.js.map +1 -1
  7. package/dist/catalog.d.ts +27 -0
  8. package/dist/catalog.d.ts.map +1 -0
  9. package/dist/catalog.js +59 -0
  10. package/dist/catalog.js.map +1 -0
  11. package/dist/forge-config.d.ts +35 -9
  12. package/dist/forge-config.d.ts.map +1 -1
  13. package/dist/forge-config.js +62 -25
  14. package/dist/forge-config.js.map +1 -1
  15. package/dist/index.d.ts +4 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +27 -5
  18. package/dist/index.js.map +1 -1
  19. package/dist/lifecycle.d.ts +2 -1
  20. package/dist/lifecycle.d.ts.map +1 -1
  21. package/dist/lifecycle.js +6 -3
  22. package/dist/lifecycle.js.map +1 -1
  23. package/dist/loader.d.ts +17 -1
  24. package/dist/loader.d.ts.map +1 -1
  25. package/dist/loader.js +84 -25
  26. package/dist/loader.js.map +1 -1
  27. package/dist/preset-command.d.ts +1 -1
  28. package/dist/preset-command.d.ts.map +1 -1
  29. package/dist/preset-command.js +38 -10
  30. package/dist/preset-command.js.map +1 -1
  31. package/dist/profile-command.d.ts.map +1 -1
  32. package/dist/profile-command.js +46 -21
  33. package/dist/profile-command.js.map +1 -1
  34. package/dist/profile-service.d.ts +5 -2
  35. package/dist/profile-service.d.ts.map +1 -1
  36. package/dist/profile-service.js +50 -13
  37. package/dist/profile-service.js.map +1 -1
  38. package/dist/resource-identity.d.ts +33 -0
  39. package/dist/resource-identity.d.ts.map +1 -0
  40. package/dist/resource-identity.js +56 -0
  41. package/dist/resource-identity.js.map +1 -0
  42. package/dist/runtime/profile-runtime.d.ts.map +1 -1
  43. package/dist/runtime/profile-runtime.js +7 -2
  44. package/dist/runtime/profile-runtime.js.map +1 -1
  45. package/dist/runtime/prompt-stack-runtime.d.ts +1 -1
  46. package/dist/runtime/prompt-stack-runtime.d.ts.map +1 -1
  47. package/dist/runtime/prompt-stack-runtime.js +22 -12
  48. package/dist/runtime/prompt-stack-runtime.js.map +1 -1
  49. package/dist/runtime/subagent-runtime.d.ts.map +1 -1
  50. package/dist/runtime/subagent-runtime.js +15 -7
  51. package/dist/runtime/subagent-runtime.js.map +1 -1
  52. package/dist/storage.d.ts +10 -0
  53. package/dist/storage.d.ts.map +1 -1
  54. package/dist/storage.js +45 -10
  55. package/dist/storage.js.map +1 -1
  56. package/dist/subagent/plan.js +1 -1
  57. package/dist/subagent/plan.js.map +1 -1
  58. package/dist/subagent/request.d.ts.map +1 -1
  59. package/dist/subagent/request.js +36 -4
  60. package/dist/subagent/request.js.map +1 -1
  61. package/dist/subagent/types.d.ts +4 -0
  62. package/dist/subagent/types.d.ts.map +1 -1
  63. package/dist/subagent-command.d.ts +2 -1
  64. package/dist/subagent-command.d.ts.map +1 -1
  65. package/dist/subagent-command.js +9 -6
  66. package/dist/subagent-command.js.map +1 -1
  67. package/dist/subagent-host.d.ts.map +1 -1
  68. package/dist/subagent-host.js +42 -16
  69. package/dist/subagent-host.js.map +1 -1
  70. package/dist/subagent-profile-tool.d.ts.map +1 -1
  71. package/dist/subagent-profile-tool.js +3 -2
  72. package/dist/subagent-profile-tool.js.map +1 -1
  73. package/dist/subagent-tool.d.ts +25 -1
  74. package/dist/subagent-tool.d.ts.map +1 -1
  75. package/dist/subagent-tool.js +256 -153
  76. package/dist/subagent-tool.js.map +1 -1
  77. package/dist/types.d.ts +3 -0
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/types.js.map +1 -1
  80. package/dist/web-editor/client-script.generated.d.ts.map +1 -1
  81. package/dist/web-editor/client-script.generated.js +1 -1
  82. package/dist/web-editor/client-script.generated.js.map +1 -1
  83. package/dist/web-editor/client-styles.generated.d.ts.map +1 -1
  84. package/dist/web-editor/client-styles.generated.js +1 -1
  85. package/dist/web-editor/client-styles.generated.js.map +1 -1
  86. package/dist/web-editor/server.d.ts.map +1 -1
  87. package/dist/web-editor/server.js +31 -4
  88. package/dist/web-editor/server.js.map +1 -1
  89. package/dist/web-editor/types.d.ts +11 -3
  90. package/dist/web-editor/types.d.ts.map +1 -1
  91. package/dist/web-host.d.ts.map +1 -1
  92. package/dist/web-host.js +109 -66
  93. package/dist/web-host.js.map +1 -1
  94. package/docs/concepts/agent-profiles.md +1 -1
  95. package/docs/concepts/prompt-stacks.md +7 -2
  96. package/docs/development/roadmap.md +3 -9
  97. package/docs/development/scoped-global-profiles-stacks.md +325 -0
  98. package/docs/getting-started.md +6 -4
  99. package/docs/guides/delegation.md +9 -1
  100. package/docs/guides/web-editor.md +4 -4
  101. package/docs/reference/configuration.md +3 -1
  102. package/docs/reference/features.md +1 -0
  103. package/docs/zh-CN/concepts/agent-profiles.md +4 -2
  104. package/docs/zh-CN/concepts/prompt-stacks.md +5 -3
  105. package/docs/zh-CN/getting-started.md +9 -7
  106. package/docs/zh-CN/guides/delegation.md +3 -3
  107. package/docs/zh-CN/guides/web-editor.md +5 -5
  108. package/docs/zh-CN/reference/commands.md +4 -2
  109. package/package.json +2 -2
package/dist/web-host.js CHANGED
@@ -1,8 +1,11 @@
1
1
  import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
- import { agentProfilePath, agentProfilesDir, isResolvedAgentProfileUsable, validateAgentProfile, } from "./agent-profile.js";
3
+ import { agentProfilePath, agentProfilesDir, isResolvedAgentProfileUsable, validateAgentProfile, validateAgentProfilePromptStackScope, } from "./agent-profile.js";
4
4
  import { DEFAULT_SUBAGENT_BACKEND_ID, loadForgeSubagentSettings, resolveSubagentProfilePolicy, updateForgeSubagentProfileConfig, } from "./forge-config.js";
5
- import { isInsidePromptStackStorage, promptStackPath, validatePromptStack, } from "./loader.js";
5
+ import { isSafeGlobalPromptStackMutationPath, isSafePromptStackMutationPath, isValidPromptStackId, promptStackPath, validatePromptStack, } from "./loader.js";
6
+ import { globalAgentProfilePath, globalPromptStacksDir } from "./storage.js";
7
+ import { formatResourceKey, parseResourceSelector } from "./resource-identity.js";
8
+ import { resolveResourceSelector } from "./catalog.js";
6
9
  import { createAgentProfilePreview, deleteAgentProfile, getAgentProfileRuntimeStatus, writeAgentProfile, } from "./profile-service.js";
7
10
  export function createWebEditorHost(ctx, runtime) {
8
11
  return {
@@ -10,21 +13,18 @@ export function createWebEditorHost(ctx, runtime) {
10
13
  listStacks: () => stackSummaries(runtime.getStacks(), runtime.getActive()),
11
14
  listProfiles: () => profileCollection(ctx, runtime),
12
15
  reloadProfiles: async () => {
13
- if (!ctx.isProjectTrusted()) {
14
- return { ok: false, status: 403, error: "Project is not trusted; refusing to reload agent profiles." };
15
- }
16
16
  await runtime.reloadProfiles();
17
17
  return { ok: true, ...profileCollection(ctx, runtime) };
18
18
  },
19
- validateProfile: (profile, existingId) => profileValidation(ctx, runtime, profile, existingId),
20
- createProfile: (profile) => createProfileFile(ctx, runtime, profile),
21
- saveProfile: (id, profile) => saveProfileFile(ctx, runtime, id, profile),
22
- applyProfile: (id) => applyProfileRuntime(ctx, runtime, id),
23
- deleteProfile: (id) => deleteProfileFile(ctx, runtime, id),
24
- updateSubagentPolicy: (id, update) => updateSubagentPolicy(ctx, runtime, id, update),
19
+ validateProfile: (profile, existingId, scope) => profileValidation(ctx, runtime, profile, existingId, scope),
20
+ createProfile: (profile, scope) => createProfileFile(ctx, runtime, profile, scope),
21
+ saveProfile: (selector, profile) => saveProfileFile(ctx, runtime, selector, profile),
22
+ applyProfile: (selector) => applyProfileRuntime(ctx, runtime, selector),
23
+ deleteProfile: (selector) => deleteProfileFile(ctx, runtime, selector),
24
+ updateSubagentPolicy: (selector, update) => updateSubagentPolicy(ctx, runtime, selector, update),
25
25
  listResources: () => runtime.getPolicyResources(),
26
- getStack: (id) => {
27
- const loaded = runtime.getStacks().find((candidate) => candidate.stack.id === id);
26
+ getStack: (selector) => {
27
+ const loaded = resolveStack(runtime, selector);
28
28
  return loaded ? { stack: loaded.stack, filePath: loaded.filePath, diagnostics: loaded.diagnostics } : undefined;
29
29
  },
30
30
  createStack: (stack, options) => createStackFile(ctx, runtime, stack, options),
@@ -32,19 +32,19 @@ export function createWebEditorHost(ctx, runtime) {
32
32
  deleteStack: (id) => deleteStackFile(ctx, runtime, id),
33
33
  validateStack: (stack) => validatePromptStack(stack),
34
34
  previewStack: (id, stack) => {
35
- const target = runtime.getStacks().find((candidate) => candidate.stack.id === id);
35
+ const target = resolveStack(runtime, id);
36
36
  if (!target)
37
37
  return { ok: false, status: 404, error: `Unknown prompt stack: ${id}` };
38
38
  const diagnostics = validatePromptStack(stack);
39
- const preview = runtime.buildPreview({ stack, filePath: target.filePath, diagnostics });
39
+ const preview = runtime.buildPreview({ stack, filePath: target.filePath, scope: target.scope, key: target.key, diagnostics });
40
40
  return { ok: true, text: preview.text, preview: preview.preview, diagnostics: preview.diagnostics };
41
41
  },
42
42
  getPayload: () => runtime.getPayload(),
43
43
  armPayload: (savePath) => runtime.armPayload(savePath),
44
44
  clearPayload: () => runtime.clearPayload(),
45
- activateStack: (id) => {
46
- if (!runtime.setActive(id))
47
- return { ok: false, status: 404, error: `Unknown prompt stack: ${id}` };
45
+ activateStack: (selector) => {
46
+ if (!runtime.setActive(selector))
47
+ return { ok: false, status: 404, error: `Unknown prompt stack: ${selector}` };
48
48
  return { ok: true, activeId: runtime.getActiveId(), stacks: stackSummaries(runtime.getStacks(), runtime.getActive()) };
49
49
  },
50
50
  disableStacks: () => {
@@ -57,6 +57,14 @@ export function createWebEditorHost(ctx, runtime) {
57
57
  },
58
58
  };
59
59
  }
60
+ /** Unqualified selectors address project profiles only; global profiles require `global:<id>`. */
61
+ function resolveProfilesForMutation(runtime, selector) {
62
+ const parsed = parseResourceSelector(selector);
63
+ if (!parsed.ok)
64
+ return [];
65
+ const scope = parsed.selector.scope ?? "project";
66
+ return runtime.getProfiles().filter((loaded) => loaded.scope === scope && loaded.profile.id === parsed.selector.id);
67
+ }
60
68
  function profileCollection(ctx, runtime) {
61
69
  const profiles = runtime.getProfiles();
62
70
  const current = runtime.getCurrentProfileRuntime();
@@ -77,11 +85,13 @@ function profileCollection(ctx, runtime) {
77
85
  return {
78
86
  profile: structuredClone(loaded.profile),
79
87
  filePath: loaded.filePath,
88
+ selector: formatResourceKey(loaded.key),
89
+ scope: loaded.scope,
80
90
  preview,
81
91
  errors: preview.diagnostics.filter((diagnostic) => diagnostic.level === "error").length,
82
92
  warnings: preview.diagnostics.filter((diagnostic) => diagnostic.level === "warning").length,
83
93
  lastApplied: lastApplied?.sourcePath === loaded.filePath,
84
- subagent: subagentPolicySummary(subagentSettings, loaded.profile.id, registeredBackends),
94
+ subagent: subagentPolicySummary(subagentSettings, loaded, registeredBackends),
85
95
  };
86
96
  }),
87
97
  status: getAgentProfileRuntimeStatus(profiles, lastApplied, current),
@@ -94,6 +104,8 @@ function profileCollection(ctx, runtime) {
94
104
  promptStacks: runtime.getStacks().map((loaded) => ({
95
105
  id: loaded.stack.id,
96
106
  name: loaded.stack.name,
107
+ selector: formatResourceKey(loaded.key),
108
+ scope: loaded.scope,
97
109
  })),
98
110
  subagents: {
99
111
  defaultBackend: subagentSettings.backend ?? DEFAULT_SUBAGENT_BACKEND_ID,
@@ -106,9 +118,10 @@ function profileCollection(ctx, runtime) {
106
118
  },
107
119
  };
108
120
  }
109
- function subagentPolicySummary(settings, profileId, registeredBackends) {
110
- const policy = resolveSubagentProfilePolicy(settings, profileId);
111
- const configured = settings.profiles[profileId];
121
+ function subagentPolicySummary(settings, loaded, registeredBackends) {
122
+ const selector = formatResourceKey(loaded.key);
123
+ const policy = resolveSubagentProfilePolicy(settings, selector);
124
+ const configured = settings.profiles[selector];
112
125
  return {
113
126
  enabled: policy.enabled,
114
127
  enabledSource: policy.enabledSource,
@@ -129,17 +142,22 @@ function configuredSubagentProfile(configured) {
129
142
  timeoutMs: configured.timeoutMs,
130
143
  };
131
144
  }
132
- function profileValidation(ctx, runtime, profile, existingId) {
145
+ function profileValidation(ctx, runtime, profile, existingId, validationScope) {
133
146
  const profiles = runtime.getProfiles();
134
- const existingMatches = existingId
135
- ? profiles.filter((loaded) => loaded.profile.id === existingId)
147
+ const existingSelector = existingId ? parseResourceSelector(existingId) : undefined;
148
+ const existingMatches = existingSelector?.ok
149
+ ? profiles.filter((loaded) => loaded.scope === (existingSelector.selector.scope ?? "project") && loaded.profile.id === existingSelector.selector.id)
136
150
  : [];
137
151
  const existing = existingMatches.length === 1 ? existingMatches[0] : undefined;
138
- const filePath = existing?.filePath ?? agentProfilePath(ctx.cwd, profile.id);
139
- const diagnostics = validateAgentProfile(profile);
152
+ const scope = existing?.scope ?? validationScope ?? "project";
153
+ const filePath = existing?.filePath ?? (scope === "global" ? globalAgentProfilePath(profile.id) : agentProfilePath(ctx.cwd, profile.id));
154
+ const diagnostics = [
155
+ ...validateAgentProfile(profile),
156
+ ...validateAgentProfilePromptStackScope(profile, scope),
157
+ ];
140
158
  const otherProfiles = existing
141
- ? profiles.filter((loaded) => loaded.filePath !== filePath)
142
- : profiles;
159
+ ? profiles.filter((loaded) => loaded.scope === scope && loaded.filePath !== filePath)
160
+ : profiles.filter((loaded) => loaded.scope === scope);
143
161
  if (otherProfiles.some((loaded) => loaded.profile.id === profile.id)) {
144
162
  diagnostics.push({
145
163
  level: "error",
@@ -161,7 +179,7 @@ function profileValidation(ctx, runtime, profile, existingId) {
161
179
  message: "Multiple profiles request auto-activation; exactly one is allowed.",
162
180
  });
163
181
  }
164
- const resolved = runtime.resolveProfile({ profile, filePath, diagnostics });
182
+ const resolved = runtime.resolveProfile({ profile, filePath, scope, key: { scope, id: profile.id }, diagnostics });
165
183
  const targetEffectiveTools = resolved.promptStack || profile.promptStack === null
166
184
  ? runtime.previewToolNames(resolved.promptStack?.stack)
167
185
  : [];
@@ -173,17 +191,17 @@ function profileValidation(ctx, runtime, profile, existingId) {
173
191
  warnings: preview.diagnostics.filter((diagnostic) => diagnostic.level === "warning").length,
174
192
  };
175
193
  }
176
- async function createProfileFile(ctx, runtime, profile) {
194
+ async function createProfileFile(ctx, runtime, profile, scope = "project") {
177
195
  if (!ctx.isProjectTrusted()) {
178
196
  return { ok: false, status: 403, error: "Project is not trusted; refusing to create agent profiles." };
179
197
  }
180
- if (runtime.getProfiles().some((loaded) => loaded.profile.id === profile.id)) {
198
+ if (runtime.getProfiles().some((loaded) => loaded.scope === scope && loaded.profile.id === profile.id)) {
181
199
  return { ok: false, status: 409, error: `Agent profile already exists: ${profile.id}` };
182
200
  }
183
- const conflict = autoActivateConflictError(runtime.getProfiles(), profile);
201
+ const conflict = autoActivateConflictError(runtime.getProfiles(), profile, scope);
184
202
  if (conflict)
185
203
  return { ok: false, status: 409, error: conflict };
186
- const result = writeAgentProfile(ctx.cwd, profile);
204
+ const result = writeAgentProfile(ctx.cwd, profile, { scope });
187
205
  if (!result.ok)
188
206
  return profileWriteError(profile.id, result);
189
207
  await runtime.reloadProfiles();
@@ -197,21 +215,22 @@ async function saveProfileFile(ctx, runtime, id, profile) {
197
215
  if (!ctx.isProjectTrusted()) {
198
216
  return { ok: false, status: 403, error: "Project is not trusted; refusing to save agent profiles." };
199
217
  }
200
- const matches = runtime.getProfiles().filter((loaded) => loaded.profile.id === id);
218
+ const matches = resolveProfilesForMutation(runtime, id);
201
219
  if (matches.length === 0)
202
220
  return { ok: false, status: 404, error: `Unknown agent profile: ${id}` };
203
221
  if (matches.length > 1) {
204
222
  return { ok: false, status: 409, error: `Cannot save agent profile ${id} while duplicate profile ids exist.` };
205
223
  }
206
- if (profile.id !== id) {
224
+ if (profile.id !== matches[0].profile.id) {
207
225
  return { ok: false, status: 400, error: "Profile id is immutable during save; create a new profile to use a different id." };
208
226
  }
209
- const conflict = autoActivateConflictError(runtime.getProfiles(), profile, id);
227
+ const conflict = autoActivateConflictError(runtime.getProfiles(), profile, matches[0].scope, matches[0].profile.id);
210
228
  if (conflict)
211
229
  return { ok: false, status: 409, error: conflict };
212
230
  const result = writeAgentProfile(ctx.cwd, profile, {
213
231
  filePath: matches[0].filePath,
214
232
  overwrite: true,
233
+ scope: matches[0].scope,
215
234
  });
216
235
  if (!result.ok)
217
236
  return profileWriteError(id, result);
@@ -226,13 +245,13 @@ async function updateSubagentPolicy(ctx, runtime, id, update) {
226
245
  if (!ctx.isProjectTrusted()) {
227
246
  return { ok: false, status: 403, error: "Project is not trusted; refusing to change subagent delegation." };
228
247
  }
229
- const matches = runtime.getProfiles().filter((loaded) => loaded.profile.id === id);
248
+ const matches = resolveProfilesForMutation(runtime, id);
230
249
  if (matches.length === 0)
231
250
  return { ok: false, status: 404, error: `Unknown agent profile: ${id}` };
232
251
  if (matches.length > 1) {
233
252
  return { ok: false, status: 409, error: `Cannot configure subagent delegation for ${id} while duplicate profile ids exist.` };
234
253
  }
235
- const result = updateForgeSubagentProfileConfig(ctx.cwd, id, update);
254
+ const result = updateForgeSubagentProfileConfig(ctx.cwd, matches[0].profile.id, update, { scope: matches[0].scope });
236
255
  if (!result.ok)
237
256
  return { ok: false, status: 400, error: result.error };
238
257
  return {
@@ -241,12 +260,12 @@ async function updateSubagentPolicy(ctx, runtime, id, update) {
241
260
  selectedPath: matches[0].filePath,
242
261
  };
243
262
  }
244
- function autoActivateConflictError(profiles, profile, excludeId) {
263
+ function autoActivateConflictError(profiles, profile, scope, excludeId) {
245
264
  if (profile.autoActivate !== true)
246
265
  return undefined;
247
- const conflict = profiles.find((loaded) => loaded.profile.autoActivate === true && loaded.profile.id !== excludeId);
266
+ const conflict = profiles.find((loaded) => loaded.scope === scope && loaded.profile.autoActivate === true && loaded.profile.id !== excludeId);
248
267
  return conflict
249
- ? `Multiple profiles request auto-activation; exactly one is allowed (already requested by ${conflict.profile.id}).`
268
+ ? `Multiple ${scope} profiles request auto-activation; exactly one is allowed (already requested by ${conflict.profile.id}).`
250
269
  : undefined;
251
270
  }
252
271
  async function applyProfileRuntime(ctx, runtime, id) {
@@ -256,7 +275,7 @@ async function applyProfileRuntime(ctx, runtime, id) {
256
275
  if (!runtime.isIdle()) {
257
276
  return { ok: false, status: 409, error: "Wait for the current agent operation to finish before applying a profile." };
258
277
  }
259
- const matches = runtime.getProfiles().filter((loaded) => loaded.profile.id === id);
278
+ const matches = resolveProfilesForMutation(runtime, id);
260
279
  if (matches.length === 0)
261
280
  return { ok: false, status: 404, error: `Unknown agent profile: ${id}` };
262
281
  if (matches.length > 1) {
@@ -283,7 +302,7 @@ async function deleteProfileFile(ctx, runtime, id) {
283
302
  if (!ctx.isProjectTrusted()) {
284
303
  return { ok: false, status: 403, error: "Project is not trusted; refusing to delete agent profiles." };
285
304
  }
286
- const matches = runtime.getProfiles().filter((loaded) => loaded.profile.id === id);
305
+ const matches = resolveProfilesForMutation(runtime, id);
287
306
  if (matches.length === 0)
288
307
  return { ok: false, status: 404, error: `Unknown agent profile: ${id}` };
289
308
  if (matches.length > 1) {
@@ -301,12 +320,12 @@ async function deleteProfileFile(ctx, runtime, id) {
301
320
  }
302
321
  return { ok: false, status: 500, error: result.error ?? `Failed to delete agent profile ${id}.` };
303
322
  }
304
- if (Object.hasOwn(subagentSettings.profiles, id)) {
305
- const cleared = updateForgeSubagentProfileConfig(ctx.cwd, id, {
323
+ if (Object.hasOwn(subagentSettings.profiles, formatResourceKey(matches[0].key))) {
324
+ const cleared = updateForgeSubagentProfileConfig(ctx.cwd, matches[0].profile.id, {
306
325
  enabled: false,
307
326
  backend: null,
308
327
  timeoutMs: null,
309
- });
328
+ }, { scope: matches[0].scope });
310
329
  if (!cleared.ok) {
311
330
  await runtime.reloadProfiles();
312
331
  return {
@@ -341,11 +360,19 @@ function profileWriteError(id, result) {
341
360
  function modelKey(provider, id) {
342
361
  return `${provider}\0${id}`;
343
362
  }
363
+ function resolveStack(runtime, selector) {
364
+ const parsed = parseResourceSelector(selector);
365
+ if (!parsed.ok)
366
+ return undefined;
367
+ return resolveResourceSelector(runtime.getStacks(), parsed.selector);
368
+ }
344
369
  export function stackSummary(loaded, active) {
345
370
  const errors = loaded.diagnostics.filter((d) => d.level === "error").length;
346
371
  const warnings = loaded.diagnostics.filter((d) => d.level === "warning").length;
347
372
  return {
348
373
  id: loaded.stack.id,
374
+ selector: formatResourceKey(loaded.key),
375
+ scope: loaded.scope,
349
376
  name: loaded.stack.name,
350
377
  filePath: loaded.filePath,
351
378
  active: loaded === active,
@@ -397,22 +424,26 @@ async function saveStackFile(ctx, runtime, id, stack) {
397
424
  if (!ctx.isProjectTrusted()) {
398
425
  return { ok: false, status: 403, error: "Project is not trusted; refusing to save prompt stacks." };
399
426
  }
400
- const target = runtime.getStacks().find((candidate) => candidate.stack.id === id);
427
+ const target = resolveStack(runtime, id);
401
428
  if (!target)
402
429
  return { ok: false, status: 404, error: `Unknown prompt stack: ${id}` };
403
430
  const idError = validateWebStackId(stack.id);
404
431
  if (idError)
405
432
  return { ok: false, status: 400, error: idError };
406
- if (stack.id !== id) {
433
+ if (stack.id !== target.stack.id) {
407
434
  return { ok: false, status: 400, error: "Stack id is immutable during save; fork the stack to create a new id." };
408
435
  }
409
- if (!isInsidePromptStackStorage(ctx.cwd, target.filePath)) {
410
- return { ok: false, status: 403, error: "Refusing to save outside prompt-stack storage." };
436
+ const safe = target.scope === "project"
437
+ ? isSafePromptStackMutationPath(ctx.cwd, target.filePath)
438
+ : isSafeGlobalPromptStackMutationPath(target.filePath);
439
+ if (!safe) {
440
+ return { ok: false, status: 403, error: "Refusing to save outside prompt-stack storage or through a symbolic link." };
411
441
  }
412
442
  writeFileSync(target.filePath, `${JSON.stringify(stack, null, 2)}\n`, "utf8");
413
- const preferredId = runtime.getActive()?.stack.id === id ? stack.id : runtime.getSelectedActiveId();
443
+ const preferredId = runtime.getActive() === target ? formatResourceKey(target.key) : runtime.getSelectedActiveId();
414
444
  await runtime.reloadStacks(preferredId);
415
- const saved = runtime.getStacks().find((candidate) => candidate.stack.id === stack.id) ?? runtime.getStacks().find((candidate) => candidate.filePath === target.filePath);
445
+ const saved = runtime.getStacks().find((candidate) => candidate.scope === target.scope && candidate.stack.id === target.stack.id)
446
+ ?? runtime.getStacks().find((candidate) => candidate.filePath === target.filePath);
416
447
  if (!saved)
417
448
  return { ok: false, status: 500, error: "Saved stack could not be reloaded." };
418
449
  return { ok: true, stack: stackSummary(saved, runtime.getActive()), stacks: stackSummaries(runtime.getStacks(), runtime.getActive()) };
@@ -424,24 +455,33 @@ async function createStackFile(ctx, runtime, stack, options) {
424
455
  const idError = validateWebStackId(stack.id);
425
456
  if (idError)
426
457
  return { ok: false, status: 400, error: idError };
427
- const existingById = runtime.getStacks().find((candidate) => candidate.stack.id === stack.id);
458
+ const scope = options.scope ?? "project";
459
+ const existingById = runtime.getStacks().find((candidate) => candidate.scope === scope && candidate.stack.id === stack.id);
428
460
  if (existingById && !options.overwrite) {
429
461
  return { ok: false, status: 409, error: `Prompt stack already exists: ${stack.id}` };
430
462
  }
431
- const targetPath = existingById && options.overwrite ? existingById.filePath : promptStackPath(ctx.cwd, stack.id);
432
- if (!isInsidePromptStackStorage(ctx.cwd, targetPath)) {
433
- return { ok: false, status: 403, error: "Refusing to create outside prompt-stack storage." };
463
+ const targetPath = existingById && options.overwrite
464
+ ? existingById.filePath
465
+ : scope === "global"
466
+ ? join(globalPromptStacksDir(), `${stack.id}.json`)
467
+ : promptStackPath(ctx.cwd, stack.id);
468
+ const safe = scope === "project"
469
+ ? isSafePromptStackMutationPath(ctx.cwd, targetPath)
470
+ : isSafeGlobalPromptStackMutationPath(targetPath);
471
+ if (!safe) {
472
+ return { ok: false, status: 403, error: `Refusing to create outside ${scope} prompt-stack storage or through a symbolic link.` };
434
473
  }
435
474
  if (!existingById && existsSync(targetPath) && !options.overwrite) {
436
475
  return { ok: false, status: 409, error: `Prompt stack already exists: ${stack.id}` };
437
476
  }
438
477
  const previousSelection = runtime.getSelectedActiveId();
478
+ const createdSelector = formatResourceKey({ scope, id: stack.id });
439
479
  mkdirSync(dirname(targetPath), { recursive: true });
440
480
  writeFileSync(targetPath, `${JSON.stringify(stack, null, 2)}\n`, "utf8");
441
- await runtime.reloadStacks(options.activate ? stack.id : (previousSelection ?? "none"));
481
+ await runtime.reloadStacks(options.activate ? createdSelector : (previousSelection ?? "none"));
442
482
  if (options.activate)
443
- runtime.setActive(stack.id);
444
- const created = runtime.getStacks().find((candidate) => candidate.stack.id === stack.id);
483
+ runtime.setActive(createdSelector);
484
+ const created = runtime.getStacks().find((candidate) => candidate.scope === scope && candidate.filePath === targetPath);
445
485
  if (!created)
446
486
  return { ok: false, status: 500, error: "Created stack could not be reloaded." };
447
487
  return { ok: true, stack: stackSummary(created, runtime.getActive()), stacks: stackSummaries(runtime.getStacks(), runtime.getActive()) };
@@ -450,13 +490,16 @@ async function deleteStackFile(ctx, runtime, id) {
450
490
  if (!ctx.isProjectTrusted()) {
451
491
  return { ok: false, status: 403, error: "Project is not trusted; refusing to delete prompt stacks." };
452
492
  }
453
- const target = runtime.getStacks().find((candidate) => candidate.stack.id === id);
493
+ const target = resolveStack(runtime, id);
454
494
  if (!target)
455
495
  return { ok: false, status: 404, error: `Unknown prompt stack: ${id}` };
456
- if (!isInsidePromptStackStorage(ctx.cwd, target.filePath)) {
457
- return { ok: false, status: 403, error: "Refusing to delete outside prompt-stack storage." };
496
+ const safe = target.scope === "project"
497
+ ? isSafePromptStackMutationPath(ctx.cwd, target.filePath)
498
+ : isSafeGlobalPromptStackMutationPath(target.filePath);
499
+ if (!safe) {
500
+ return { ok: false, status: 403, error: "Refusing to delete outside prompt-stack storage or through a symbolic link." };
458
501
  }
459
- const wasActive = runtime.getActive()?.stack.id === id;
502
+ const wasActive = runtime.getActive() === target;
460
503
  unlinkSync(target.filePath);
461
504
  if (wasActive) {
462
505
  runtime.setActive("none");
@@ -470,8 +513,8 @@ async function deleteStackFile(ctx, runtime, id) {
470
513
  function validateWebStackId(id) {
471
514
  if (!id.trim())
472
515
  return "Stack id must not be empty.";
473
- if (!/^[A-Za-z0-9_-]+$/.test(id)) {
474
- return "Stack id may only contain letters, numbers, underscore, and dash.";
516
+ if (!isValidPromptStackId(id)) {
517
+ return "Stack id must start with a letter or number and contain only letters, numbers, dots, underscores, and hyphens.";
475
518
  }
476
519
  return undefined;
477
520
  }
@@ -1 +1 @@
1
- {"version":3,"file":"web-host.js","sourceRoot":"","sources":["../src/web-host.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-host.js","sourceRoot":"","sources":["../src/web-host.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ An agent profile is a project-local, schema-versioned preset that references one
6
6
 
7
7
  ## Schema
8
8
 
9
- Profiles live in `.pi/forge/agent-profiles/*.json`:
9
+ Profiles live in `.pi/forge/agent-profiles/*.json` (project scope) or `~/.pi/forge/agent-profiles/*.json` (global scope). Commands accept `reviewer`, `project:reviewer`, and `global:reviewer`; a project profile shadows a same-ID global profile for unqualified lookups. A profile's `promptStack` reference resolves relative to the profile's own scope: a project profile may reference its own project stack by bare ID or a global stack as `global:<id>`; a global profile may only reference global stacks.
10
10
 
11
11
  ```json
12
12
  {
@@ -74,13 +74,18 @@ Stacks may use either `allow` or `deny` patterns for each resource. Tool policy
74
74
 
75
75
  External tool additions are preserved in the baseline restored when a restrictive stack is disabled. See the exact behavior in [stack policy reference](../reference/stack-schema.md#tool-and-skill-policy).
76
76
 
77
+ ## Scopes and shadowing
78
+
79
+ Stacks may live in the user-global `~/.pi/forge/prompt-stacks/` or the project `.pi/forge/prompt-stacks/`. A project stack shadows a same-ID global stack for unqualified commands. Selectors are `reviewer`, `project:reviewer`, or `global:reviewer`. Duplicate IDs are errors only within one scope.
80
+
77
81
  ## Activation and session behavior
78
82
 
79
- - `default.json` auto-activates unless its metadata opts out.
80
- - Another stack may set `autoActivate: true`; conflicting auto-activation is invalid.
83
+ - A stack may set `autoActivate: true`; conflicting auto-activation in one scope is invalid and fails closed.
84
+ - `default.json` has no special filename role anymore; missing `autoActivate` yields a migration warning.
81
85
  - `/preset use none` records an explicit session opt-out.
82
86
  - Active stack and session variables follow Pi's session-tree branch.
83
87
  - Restored branch state takes precedence over fresh-session auto-activation.
88
+ - Project auto-activation candidates take precedence over global ones; an invalid or ambiguous project candidate never falls back to a global stack.
84
89
  - An auto-activated agent profile takes precedence over standalone stack autoload.
85
90
 
86
91
  ## Extensions and transforms
@@ -4,22 +4,16 @@
4
4
 
5
5
  This file contains forward-looking product work only. Completed capability belongs in the [feature inventory](../reference/features.md), release history in the root [changelog](../../CHANGELOG.md), and completed investigation in the [design archive](../design/README.md).
6
6
 
7
- ## 0.4 release
7
+ ## 0.4 baseline
8
8
 
9
- The profile UI, foreground-delegation dogfooding, dependency compatibility work, and documentation reorganization are complete. Runtime beta.2 is published and the packed extension passes the full verification surface against the documented Pi versions. The 0.4.0 release commit is ready; remaining release work is intentionally small:
9
+ The profile UI, foreground-delegation dogfooding, dependency compatibility work, and documentation reorganization are complete and merged to `main`. Runtime beta.2 is published, and the packed 0.4.0 extension passes the full verification surface against the documented Pi versions.
10
10
 
11
- - merge the release commit to `main`;
12
- - publish 0.4.0 with delegation explicitly labelled experimental;
13
- - install the published package through Pi and complete the post-publish smoke check.
11
+ The 0.4.1 release adds scoped global profiles and prompt stacks with project-over-global shadowing, exact `project:<id>`/`global:<id>` selectors, scoped delegation authorization, untrusted-project global browsing, web-editor global create/fork/import, and zh-CN documentation. The accepted resolution model is archived in [scoped global profiles and prompt stacks](scoped-global-profiles-stacks.md).
14
12
 
15
13
  Stable 0.4 does not imply that the subagent adapter or runtime has become stable. Prompt stacks and ordinary profile use remain independent of delegation.
16
14
 
17
15
  ## Near-term candidates
18
16
 
19
- ### Scoped global profiles and stacks
20
-
21
- If cross-project presets are added, introduce global profiles and stacks together. Preserve source scope, let same-ID project resources shadow global resources, and apply delegation policy only within the matching scope. Define discovery, auto-activation, reference, and editor behavior before implementation.
22
-
23
17
  ### Sandbox and staged writes
24
18
 
25
19
  Evaluate an optional backend that can honestly enforce roots, process behavior, symlink containment, and requested network policy. Keep shared-user as an explicit compatibility boundary. Design writes as a separately approved staged patch/change set; do not add write/edit/shell tools directly to the shared-user child.