@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/CHANGELOG.md CHANGED
@@ -8,6 +8,14 @@ In 0.x development, breaking changes may occur in minor releases and will be exp
8
8
 
9
9
  ## [Unreleased]
10
10
 
11
+ ## [0.4.1] - 2026-08-17
12
+
13
+ ### Added
14
+
15
+ - **Scoped global agent profiles and prompt stacks.** Profiles and stacks can now live in the user-owned global forge directory or the trusted project, with project resources shadowing same-ID global resources for bare selectors. Qualified `global:<id>` and `project:<id>` selectors provide exact addressing across commands, saved session state, profile stack references, delegation policy, subagent plans, and the browser editor. Global profiles resolve only global stacks, while project profiles may explicitly reuse global stacks; untrusted projects remain browse-only and cannot auto-activate or delegate resources. The browser editor shows scope and shadow badges, edits/deletes global resources only through explicit `global:<id>` routes, and provides project-default scope selectors for creating profiles and creating, forking, or importing prompt stacks. The zh-CN documentation now covers the scoped model.
16
+ - **Parallel foreground subagent invocation.** `forge_subagent` now registers as a parallel-execution tool, so the parent model can issue several calls in one turn and they prepare, approve, and execute concurrently. Pi's single-slot select/editor UI cannot host two dialogs at once, so interactive approval dialogs (including View full prompt) are serialized through a shared gate inside `requestForgeSubagentApproval` — the same gate covers `/forge-agent run` — while approved runs still overlap; unattended trusted-project invocation never enters the gate and is fully concurrent. Each run remains an independent subprocess and provider request, so a burst of parallel calls multiplies provider cost and process load.
17
+ - **Embedded subagent profile summary in the tool description.** `subagents.summaryInToolDescription` (default `false`, settable in global or trusted-project config) embeds a compact summary of enabled subagent profiles directly in the `forge_subagent` tool description—id, name, model/thinking level, stack, backend, and timeout—so the parent model can pick a frequently used profile without a `forge_subagent_profiles` discovery call. Unavailable enabled profiles stay visible with their first error so the model does not attempt them, ready profiles sort first, and the block is capped at 8 profiles and 1,000 characters. The description re-registers only when the rendered summary changes (profiles, stacks, or configuration), so per-turn lifecycle refreshes are no-ops, and disabling the option reverts the description to the base form. `forge_subagent_profiles` remains the authoritative full-detail surface.
18
+
11
19
  ## [0.4.0] - 2026-08-02
12
20
 
13
21
  ### Added
package/README.zh-CN.md CHANGED
@@ -58,7 +58,7 @@ cp examples/default-prompt-stack.json .pi/forge/prompt-stacks/default.json
58
58
  /preset ui
59
59
  ```
60
60
 
61
- 本地编辑器可以新建、fork、校验、预览、导入、导出和删除 prompt stack。切换到 **Agent profiles** 可以管理一次性模型/思考等级/stack 预设,以及实验性 delegation 配置。写入操作要求项目已被信任。
61
+ 本地编辑器可以新建、fork、校验、预览、导入、导出和删除 prompt stack,并可在新建/fork/导入时明确选择写入项目或用户全局存储。切换到 **Agent profiles** 可以浏览项目与全局 profile、编辑和删除全局 profile(通过显式 `global:<id>` 路由),并管理实验性 delegation 配置。写入操作要求项目已被信任。
62
62
 
63
63
  ### 3. 保存 profile
64
64
 
@@ -82,7 +82,7 @@ Prompt stack 是一个有序 JSON 文档,包含:
82
82
 
83
83
  Stack 可以 `replace`、`append` 或 `prepend` Pi 的基础 system prompt。编译时,pi-forge 会展开宏、插入对话、执行工具策略、过滤自己渲染的 skill 列表,并应用已启用的 regex 规则。
84
84
 
85
- Agent profile 是项目级预设,引用精确 provider/model、思考等级和 prompt stack。它不会重复保存工具或 skill 策略;被引用的 stack 始终是唯一来源。
85
+ Agent profile 是项目级或用户全局预设,引用精确 provider/model、思考等级和 prompt stack。它不会重复保存工具或 skill 策略;被引用的 stack 始终是唯一来源。项目 profile 和 stack 可以遮蔽同 ID 的全局资源;需要精确选择时使用 `project:<id>` 或 `global:<id>`。
86
86
 
87
87
  推荐从这些示例开始:
88
88
 
@@ -113,7 +113,7 @@ Agent profile 是项目级预设,引用精确 provider/model、思考等级和
113
113
 
114
114
  pi-forge 可以把明确授权的 profile 作为干净、前台运行的 Pi 子进程。模型通过 `forge_subagent_profiles` 发现可用 profile,再用 `forge_subagent` 调用;用户可以使用 `/forge-agent plan` 和 `/forge-agent run`。
115
115
 
116
- 此功能仍是**实验性功能**,profile 默认不能委派。请在受信任项目的 `.pi/forge/config.json` 或 Web 编辑器 delegation 卡片中逐个启用。除非项目明确授权无人值守的模型调用,否则执行前会显示与不可变计划绑定的审批界面。
116
+ 此功能仍是**实验性功能**,profile 默认不能委派。请在可信项目的 `.pi/forge/config.json`(授权 `project:<id>`)或用户全局 `~/.pi/forge/config.json`(授权 `global:<id>`)中逐个启用,也可以使用 Web 编辑器 delegation 卡片。除非项目明确授权无人值守的模型调用,否则执行前会显示与不可变计划绑定的审批界面。
117
117
 
118
118
  > **安全边界:** 当前 backend 是 shared-user 进程,不是操作系统沙箱。“只读”只描述模型可见工具策略。Child 仍有启动用户的 OS 读取权限;可读内容可能发送给所选 provider,并保留在 Pi session 数据中。Timeout 和取消仅为 best effort,`/tree` 不能撤销 provider 请求、计费或外部影响。
119
119
 
@@ -1,5 +1,6 @@
1
1
  import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
2
2
  import { type Model } from "@earendil-works/pi-ai";
3
+ import { type ResourceScope } from "./resource-identity.ts";
3
4
  import type { LoadedPromptStack } from "./types.ts";
4
5
  export declare const AGENT_PROFILE_TYPE: "pi-forge.agent-profile";
5
6
  export declare const AGENT_PROFILE_THINKING_LEVELS: readonly ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
@@ -27,6 +28,11 @@ export interface AgentProfileDiagnostic {
27
28
  export interface LoadedAgentProfile {
28
29
  profile: AgentProfile;
29
30
  filePath: string;
31
+ scope: "global" | "project";
32
+ key: {
33
+ scope: "global" | "project";
34
+ id: string;
35
+ };
30
36
  diagnostics: AgentProfileDiagnostic[];
31
37
  }
32
38
  export interface AgentProfileResolutionResources {
@@ -49,6 +55,8 @@ export interface AgentProfileRuntimeSnapshot {
49
55
  }
50
56
  export interface AgentProfileProvenance {
51
57
  profileId: string;
58
+ /** Scope of the applied profile. Absent on legacy records, which are project-scoped. */
59
+ scope?: ResourceScope;
52
60
  sourcePath: string;
53
61
  sourceFingerprint: string;
54
62
  appliedAt: string;
@@ -57,10 +65,25 @@ export interface AgentProfileProvenance {
57
65
  export { agentProfilePath, agentProfilesDir } from "./storage.ts";
58
66
  export declare function isValidAgentProfileId(id: string): boolean;
59
67
  export declare function loadAgentProfiles(cwd: string): LoadedAgentProfile[];
68
+ /**
69
+ * Load both global and project profiles. Global definitions are user-owned
70
+ * and always load; project definitions load from the trusted project dirs.
71
+ * The caller decides whether project trust applies before calling.
72
+ */
73
+ export declare function loadAgentProfilesScoped(cwd: string, globalDir?: string): LoadedAgentProfile[];
74
+ /** Load only the user-owned global profiles, used by untrusted projects. */
75
+ export declare function loadGlobalAgentProfiles(globalDir?: string): LoadedAgentProfile[];
60
76
  export declare function chooseAutoActivateAgentProfile(profiles: readonly LoadedAgentProfile[]): LoadedAgentProfile | undefined;
61
77
  export declare function hasAutoActivateAgentProfile(profiles: readonly LoadedAgentProfile[]): boolean;
62
- export declare function loadAgentProfileFile(filePath: string): LoadedAgentProfile;
78
+ export declare function loadAgentProfileFile(filePath: string, scope?: "global" | "project"): LoadedAgentProfile;
63
79
  export declare function validateAgentProfile(profile: AgentProfile): AgentProfileDiagnostic[];
80
+ /**
81
+ * Validate the profile's stored `promptStack` selector against the profile's
82
+ * own scope. Bare references stay scope-relative; only global profiles are
83
+ * prohibited from referencing project stacks explicitly. Used by write paths
84
+ * so edited JSON cannot persist a scope-unsafe dependency.
85
+ */
86
+ export declare function validateAgentProfilePromptStackScope(profile: AgentProfile, scope: ResourceScope): AgentProfileDiagnostic[];
64
87
  export declare function resolveAgentProfile(loaded: LoadedAgentProfile, resources: AgentProfileResolutionResources): ResolvedAgentProfile;
65
88
  export declare function isUsableAgentProfile(loaded: LoadedAgentProfile): boolean;
66
89
  export declare function isResolvedAgentProfileUsable(resolved: ResolvedAgentProfile): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-profile.d.ts","sourceRoot":"","sources":["../src/agent-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-profile.d.ts","sourceRoot":"","sources":["../src/agent-profile.ts"],"names":[],"mappings":"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"}
@@ -2,19 +2,45 @@ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
2
  import { basename, join } from "node:path";
3
3
  import { clampThinkingLevel } from "@earendil-works/pi-ai";
4
4
  import { resourcePatternMatches } from "./policy.js";
5
- import { agentProfilesDir } from "./storage.js";
5
+ import { formatResourceKey, isResourceScope, isValidResourceId, parseResourceSelector } from "./resource-identity.js";
6
+ import { agentProfilesDir, globalAgentProfilesDir } from "./storage.js";
6
7
  export const AGENT_PROFILE_TYPE = "pi-forge.agent-profile";
7
8
  export const AGENT_PROFILE_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
8
9
  const VALID_THINKING_LEVELS = new Set(AGENT_PROFILE_THINKING_LEVELS);
9
- const PROFILE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
10
10
  const PROFILE_FIELDS = new Set(["schemaVersion", "type", "id", "name", "description", "model", "thinkingLevel", "promptStack", "autoActivate"]);
11
11
  const MODEL_FIELDS = new Set(["provider", "id"]);
12
12
  export { agentProfilePath, agentProfilesDir } from "./storage.js";
13
13
  export function isValidAgentProfileId(id) {
14
- return PROFILE_ID_PATTERN.test(id);
14
+ return isValidResourceId(id);
15
15
  }
16
16
  export function loadAgentProfiles(cwd) {
17
- const dir = agentProfilesDir(cwd);
17
+ const profiles = loadAgentProfilesFromDir(agentProfilesDir(cwd), "project");
18
+ annotateDuplicateProfileIds(profiles);
19
+ annotateAutoActivateConflicts(profiles);
20
+ return profiles;
21
+ }
22
+ /**
23
+ * Load both global and project profiles. Global definitions are user-owned
24
+ * and always load; project definitions load from the trusted project dirs.
25
+ * The caller decides whether project trust applies before calling.
26
+ */
27
+ export function loadAgentProfilesScoped(cwd, globalDir = globalAgentProfilesDir()) {
28
+ const profiles = [
29
+ ...loadAgentProfilesFromDir(globalDir, "global"),
30
+ ...loadAgentProfilesFromDir(agentProfilesDir(cwd), "project"),
31
+ ];
32
+ annotateDuplicateProfileIds(profiles);
33
+ annotateAutoActivateConflicts(profiles);
34
+ return profiles;
35
+ }
36
+ /** Load only the user-owned global profiles, used by untrusted projects. */
37
+ export function loadGlobalAgentProfiles(globalDir = globalAgentProfilesDir()) {
38
+ const profiles = loadAgentProfilesFromDir(globalDir, "global");
39
+ annotateDuplicateProfileIds(profiles);
40
+ annotateAutoActivateConflicts(profiles);
41
+ return profiles;
42
+ }
43
+ function loadAgentProfilesFromDir(dir, scope) {
18
44
  if (!existsSync(dir))
19
45
  return [];
20
46
  let entries;
@@ -24,19 +50,26 @@ export function loadAgentProfiles(cwd) {
24
50
  catch {
25
51
  return [];
26
52
  }
27
- const profiles = entries.map((name) => loadAgentProfileFile(join(dir, name)));
28
- annotateDuplicateProfileIds(profiles);
29
- annotateAutoActivateConflicts(profiles);
30
- return profiles;
53
+ return entries.map((name) => loadAgentProfileFile(join(dir, name), scope));
31
54
  }
32
55
  export function chooseAutoActivateAgentProfile(profiles) {
33
- const candidates = profiles.filter((loaded) => loaded.profile.autoActivate === true);
34
- return candidates.length === 1 ? candidates[0] : undefined;
56
+ // Project auto-activation has explicit precedence. An invalid or ambiguous
57
+ // project candidate fails closed instead of falling back to a global one.
58
+ const projectCandidates = profiles.filter((loaded) => loaded.scope === "project" && loaded.profile.autoActivate === true);
59
+ if (projectCandidates.length > 0) {
60
+ return projectCandidates.length === 1 && !hasAgentProfileErrors(projectCandidates[0].diagnostics)
61
+ ? projectCandidates[0]
62
+ : undefined;
63
+ }
64
+ const globalCandidates = profiles.filter((loaded) => loaded.scope === "global" && loaded.profile.autoActivate === true);
65
+ return globalCandidates.length === 1 && !hasAgentProfileErrors(globalCandidates[0].diagnostics)
66
+ ? globalCandidates[0]
67
+ : undefined;
35
68
  }
36
69
  export function hasAutoActivateAgentProfile(profiles) {
37
70
  return profiles.some((loaded) => loaded.profile.autoActivate === true);
38
71
  }
39
- export function loadAgentProfileFile(filePath) {
72
+ export function loadAgentProfileFile(filePath, scope = "project") {
40
73
  const diagnostics = [];
41
74
  let raw;
42
75
  try {
@@ -45,6 +78,8 @@ export function loadAgentProfileFile(filePath) {
45
78
  catch (error) {
46
79
  return {
47
80
  filePath,
81
+ scope,
82
+ key: { scope, id: basename(filePath, ".json") },
48
83
  profile: fallbackProfile(filePath),
49
84
  diagnostics: [{
50
85
  level: "error",
@@ -54,7 +89,7 @@ export function loadAgentProfileFile(filePath) {
54
89
  }
55
90
  const profile = normalizeAgentProfile(raw, filePath, diagnostics);
56
91
  diagnostics.push(...validateAgentProfile(profile));
57
- return { filePath, profile, diagnostics };
92
+ return { filePath, scope, key: { scope, id: profile.id }, profile, diagnostics };
58
93
  }
59
94
  export function validateAgentProfile(profile) {
60
95
  const diagnostics = [];
@@ -81,6 +116,28 @@ export function validateAgentProfile(profile) {
81
116
  }
82
117
  return diagnostics;
83
118
  }
119
+ /**
120
+ * Validate the profile's stored `promptStack` selector against the profile's
121
+ * own scope. Bare references stay scope-relative; only global profiles are
122
+ * prohibited from referencing project stacks explicitly. Used by write paths
123
+ * so edited JSON cannot persist a scope-unsafe dependency.
124
+ */
125
+ export function validateAgentProfilePromptStackScope(profile, scope) {
126
+ if (profile.promptStack === null)
127
+ return [];
128
+ const parsed = parseResourceSelector(profile.promptStack);
129
+ if (!parsed.ok) {
130
+ return [{ level: "error", field: "promptStack", message: parsed.error }];
131
+ }
132
+ if (scope === "global" && parsed.selector.scope === "project") {
133
+ return [{
134
+ level: "error",
135
+ field: "promptStack",
136
+ message: `Global profile ${profile.id} cannot reference project prompt stack ${parsed.selector.id}.`,
137
+ }];
138
+ }
139
+ return [];
140
+ }
84
141
  export function resolveAgentProfile(loaded, resources) {
85
142
  const diagnostics = [...loaded.diagnostics];
86
143
  const reference = loaded.profile.model;
@@ -112,15 +169,10 @@ export function resolveAgentProfile(loaded, resources) {
112
169
  }
113
170
  let promptStack;
114
171
  if (loaded.profile.promptStack !== null) {
115
- promptStack = resources.promptStacks.find((candidate) => candidate.stack.id === loaded.profile.promptStack);
116
- if (!promptStack) {
117
- diagnostics.push({
118
- level: "error",
119
- field: "promptStack",
120
- message: `Unknown prompt stack: ${loaded.profile.promptStack}`,
121
- });
122
- }
123
- else {
172
+ const resolution = resolveProfilePromptStack(loaded, resources.promptStacks);
173
+ diagnostics.push(...resolution.diagnostics);
174
+ promptStack = resolution.stack;
175
+ if (promptStack) {
124
176
  for (const diagnostic of promptStack.diagnostics) {
125
177
  diagnostics.push({
126
178
  level: diagnostic.level,
@@ -168,6 +220,7 @@ export function isAgentProfileProvenance(value) {
168
220
  return false;
169
221
  return typeof value.profileId === "string"
170
222
  && isValidAgentProfileId(value.profileId)
223
+ && (value.scope === undefined || isResourceScope(value.scope))
171
224
  && typeof value.sourcePath === "string"
172
225
  && typeof value.sourceFingerprint === "string"
173
226
  && typeof value.appliedAt === "string"
@@ -177,36 +230,93 @@ export function isAgentProfileProvenance(value) {
177
230
  && VALID_THINKING_LEVELS.has(value.snapshot.thinkingLevel)
178
231
  && (value.snapshot.promptStack === null || !!nonEmptyString(value.snapshot.promptStack));
179
232
  }
233
+ /**
234
+ * Resolve a profile's stored `promptStack` reference relative to the profile's
235
+ * own scope. Bare IDs resolve to the profile scope; explicit qualification
236
+ * overrides that scope. A global profile can never reference a project stack.
237
+ */
238
+ function resolveProfilePromptStack(loaded, promptStacks) {
239
+ const diagnostics = [];
240
+ const reference = loaded.profile.promptStack;
241
+ const parsed = parseResourceSelector(reference);
242
+ if (!parsed.ok) {
243
+ diagnostics.push({ level: "error", field: "promptStack", message: parsed.error });
244
+ return { stack: undefined, diagnostics };
245
+ }
246
+ if (loaded.scope === "global" && parsed.selector.scope === "project") {
247
+ diagnostics.push({
248
+ level: "error",
249
+ field: "promptStack",
250
+ message: `Global profile ${loaded.profile.id} cannot reference project prompt stack ${parsed.selector.id}.`,
251
+ });
252
+ return { stack: undefined, diagnostics };
253
+ }
254
+ const scope = parsed.selector.scope ?? loaded.scope;
255
+ const matches = promptStacks.filter((candidate) => candidate.scope === scope && candidate.stack.id === parsed.selector.id);
256
+ if (matches.length === 1)
257
+ return { stack: matches[0], diagnostics };
258
+ if (matches.length === 0) {
259
+ const suggestion = loaded.scope === "project" && scope === "project"
260
+ && promptStacks.some((candidate) => candidate.scope === "global" && candidate.stack.id === parsed.selector.id)
261
+ ? ` Use ${formatResourceKey({ scope: "global", id: parsed.selector.id })} to reference the global stack.`
262
+ : "";
263
+ diagnostics.push({
264
+ level: "error",
265
+ field: "promptStack",
266
+ message: `Unknown prompt stack: ${reference}.${suggestion}`,
267
+ });
268
+ return { stack: undefined, diagnostics };
269
+ }
270
+ diagnostics.push({
271
+ level: "error",
272
+ field: "promptStack",
273
+ message: `Prompt stack id is ambiguous: ${reference}`,
274
+ });
275
+ return { stack: undefined, diagnostics };
276
+ }
180
277
  function findModel(models, reference) {
181
278
  return models.find((model) => model.provider === reference.provider && model.id === reference.id);
182
279
  }
183
280
  function annotateDuplicateProfileIds(profiles) {
184
- const byId = new Map();
281
+ const byScopeId = new Map();
185
282
  for (const loaded of profiles) {
186
- const matches = byId.get(loaded.profile.id) ?? [];
283
+ const key = `${loaded.scope}\0${loaded.profile.id}`;
284
+ const matches = byScopeId.get(key) ?? [];
187
285
  matches.push(loaded);
188
- byId.set(loaded.profile.id, matches);
286
+ byScopeId.set(key, matches);
189
287
  }
190
- for (const [id, matches] of byId) {
288
+ for (const matches of byScopeId.values()) {
191
289
  if (matches.length <= 1)
192
290
  continue;
193
291
  const files = matches.map((loaded) => basename(loaded.filePath)).join(", ");
194
292
  for (const loaded of matches) {
195
- loaded.diagnostics.push({ level: "error", message: `Duplicate profile id: ${id} appears in multiple files (${files}).` });
293
+ loaded.diagnostics.push({
294
+ level: "error",
295
+ message: `Duplicate ${loaded.scope} profile id: ${loaded.profile.id} appears in multiple files (${files}).`,
296
+ });
196
297
  }
197
298
  }
198
299
  }
199
300
  function annotateAutoActivateConflicts(profiles) {
200
- const candidates = profiles.filter((loaded) => loaded.profile.autoActivate === true);
201
- if (candidates.length <= 1)
202
- return;
203
- const files = candidates.map((loaded) => basename(loaded.filePath)).join(", ");
204
- for (const loaded of candidates) {
205
- loaded.diagnostics.push({
206
- level: "error",
207
- field: "autoActivate",
208
- message: `Multiple profiles request auto-activation (${files}); exactly one is allowed.`,
209
- });
301
+ const byScope = new Map();
302
+ for (const loaded of profiles) {
303
+ if (loaded.profile.autoActivate !== true)
304
+ continue;
305
+ const matches = byScope.get(loaded.scope) ?? [];
306
+ matches.push(loaded);
307
+ byScope.set(loaded.scope, matches);
308
+ }
309
+ for (const [scope, candidates] of byScope) {
310
+ if (candidates.length <= 1)
311
+ continue;
312
+ const files = candidates.map((loaded) => basename(loaded.filePath)).join(", ");
313
+ for (const loaded of candidates) {
314
+ loaded.diagnostics.push({
315
+ level: "error",
316
+ field: "autoActivate",
317
+ message: `Multiple ${scope} profiles request auto-activation (${files}); exactly one is allowed.`,
318
+ });
319
+ }
210
320
  }
211
321
  }
212
322
  function normalizeAgentProfile(raw, filePath, diagnostics) {
@@ -1 +1 @@
1
- {"version":3,"file":"agent-profile.js","sourceRoot":"","sources":["../src/agent-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-profile.js","sourceRoot":"","sources":["../src/agent-profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { ResourceKey, ResourceScope, ResourceSelector } from "./resource-identity.ts";
2
+ export interface ScopedResource {
3
+ key: ResourceKey;
4
+ }
5
+ export interface ResourceCatalog<T extends ScopedResource> {
6
+ /** Every loaded scoped definition, including shadowed resources. */
7
+ all: T[];
8
+ /** One resource per unqualified ID after project-over-global shadowing. */
9
+ effective: T[];
10
+ resolveExact(key: ResourceKey): T | undefined;
11
+ resolveExact(scope: ResourceScope, id: string): T | undefined;
12
+ resolveEffective(id: string): T | undefined;
13
+ resolveSelector(selector: ResourceSelector): T | undefined;
14
+ }
15
+ export declare function createResourceCatalog<T extends ScopedResource>(all: T[]): ResourceCatalog<T>;
16
+ export declare function computeEffectiveView<T extends ScopedResource>(all: T[]): T[];
17
+ /**
18
+ * Project-over-global effective resolution. A project definition shadows a
19
+ * same-ID global definition even when the project definition is invalid; an
20
+ * ambiguous project scope (duplicate IDs) fails closed instead of falling
21
+ * back to the global resource.
22
+ */
23
+ export declare function resolveEffectiveResource<T extends ScopedResource>(all: readonly T[], id: string): T | undefined;
24
+ export declare function resolveExactResource<T extends ScopedResource>(all: readonly T[], key: ResourceKey): T | undefined;
25
+ export declare function resolveResourceSelector<T extends ScopedResource>(all: readonly T[], selector: ResourceSelector): T | undefined;
26
+ export declare function scopedResourceId(key: ResourceKey): string;
27
+ //# sourceMappingURL=catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE3F,MAAM,WAAW,cAAc;IAC9B,GAAG,EAAE,WAAW,CAAC;CACjB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,cAAc;IACxD,oEAAoE;IACpE,GAAG,EAAE,CAAC,EAAE,CAAC;IACT,2EAA2E;IAC3E,SAAS,EAAE,CAAC,EAAE,CAAC;IACf,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC;IAC9C,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAC9D,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IAC5C,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAAC;CAC3D;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,eAAe,CAAC,CAAC,CAAC,CAsB5F;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAW5E;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAM/G;AAED,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,GAAG,CAAC,GAAG,SAAS,CAGjH;AAED,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAG9H;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,59 @@
1
+ export function createResourceCatalog(all) {
2
+ const effective = computeEffectiveView(all);
3
+ function resolveExact(scopeOrKey, maybeId) {
4
+ const scope = typeof scopeOrKey === "string" ? scopeOrKey : scopeOrKey.scope;
5
+ const id = typeof scopeOrKey === "string" ? maybeId : scopeOrKey.id;
6
+ const matches = all.filter((item) => item.key.scope === scope && item.key.id === id);
7
+ return matches.length === 1 ? matches[0] : undefined;
8
+ }
9
+ function resolveEffective(id) {
10
+ return resolveEffectiveResource(all, id);
11
+ }
12
+ function resolveSelector(selector) {
13
+ if (selector.scope)
14
+ return resolveExact(selector.scope, selector.id);
15
+ return resolveEffective(selector.id);
16
+ }
17
+ return { all, effective, resolveExact, resolveEffective, resolveSelector };
18
+ }
19
+ export function computeEffectiveView(all) {
20
+ const ids = [];
21
+ const seen = new Set();
22
+ for (const item of all) {
23
+ if (seen.has(item.key.id))
24
+ continue;
25
+ seen.add(item.key.id);
26
+ ids.push(item.key.id);
27
+ }
28
+ return ids
29
+ .map((id) => resolveEffectiveResource(all, id))
30
+ .filter((item) => item !== undefined);
31
+ }
32
+ /**
33
+ * Project-over-global effective resolution. A project definition shadows a
34
+ * same-ID global definition even when the project definition is invalid; an
35
+ * ambiguous project scope (duplicate IDs) fails closed instead of falling
36
+ * back to the global resource.
37
+ */
38
+ export function resolveEffectiveResource(all, id) {
39
+ const projectMatches = all.filter((item) => item.key.id === id && item.key.scope === "project");
40
+ if (projectMatches.length === 1)
41
+ return projectMatches[0];
42
+ if (projectMatches.length > 1)
43
+ return undefined;
44
+ const globalMatches = all.filter((item) => item.key.id === id && item.key.scope === "global");
45
+ return globalMatches.length === 1 ? globalMatches[0] : undefined;
46
+ }
47
+ export function resolveExactResource(all, key) {
48
+ const matches = all.filter((item) => item.key.scope === key.scope && item.key.id === key.id);
49
+ return matches.length === 1 ? matches[0] : undefined;
50
+ }
51
+ export function resolveResourceSelector(all, selector) {
52
+ if (selector.scope)
53
+ return resolveExactResource(all, { scope: selector.scope, id: selector.id });
54
+ return resolveEffectiveResource(all, selector.id);
55
+ }
56
+ export function scopedResourceId(key) {
57
+ return `${key.scope}:${key.id}`;
58
+ }
59
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}