@zihanw/pi-forge 0.3.2 → 0.4.0-beta.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.
- package/CHANGELOG.md +160 -0
- package/PUBLIC_API.md +28 -0
- package/README.md +137 -11
- package/README.zh-CN.md +137 -11
- package/SUBAGENT_ADAPTER_CONTRACT.md +199 -0
- package/dist/agent-profile.d.ts +71 -0
- package/dist/agent-profile.d.ts.map +1 -0
- package/dist/agent-profile.js +303 -0
- package/dist/agent-profile.js.map +1 -0
- package/dist/forge-config.d.ts +8 -0
- package/dist/forge-config.d.ts.map +1 -0
- package/dist/forge-config.js +40 -0
- package/dist/forge-config.js.map +1 -0
- package/dist/forge-extensions.d.ts.map +1 -1
- package/dist/forge-extensions.js +19 -3
- package/dist/forge-extensions.js.map +1 -1
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -361
- package/dist/index.js.map +1 -1
- package/dist/lifecycle.d.ts +11 -3
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +90 -4
- package/dist/lifecycle.js.map +1 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +116 -5
- package/dist/loader.js.map +1 -1
- package/dist/payload-capture.d.ts.map +1 -1
- package/dist/payload-capture.js +27 -0
- package/dist/payload-capture.js.map +1 -1
- package/dist/payload-command.d.ts +3 -3
- package/dist/payload-command.d.ts.map +1 -1
- package/dist/payload-command.js.map +1 -1
- package/dist/preview.d.ts +2 -2
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +2 -3
- package/dist/preview.js.map +1 -1
- package/dist/profile-command.d.ts +12 -0
- package/dist/profile-command.d.ts.map +1 -0
- package/dist/profile-command.js +291 -0
- package/dist/profile-command.js.map +1 -0
- package/dist/profile-service.d.ts +103 -0
- package/dist/profile-service.d.ts.map +1 -0
- package/dist/profile-service.js +215 -0
- package/dist/profile-service.js.map +1 -0
- package/dist/runtime/profile-runtime.d.ts +13 -0
- package/dist/runtime/profile-runtime.d.ts.map +1 -0
- package/dist/runtime/profile-runtime.js +47 -0
- package/dist/runtime/profile-runtime.js.map +1 -0
- package/dist/runtime/prompt-stack-runtime.d.ts +22 -0
- package/dist/runtime/prompt-stack-runtime.d.ts.map +1 -0
- package/dist/runtime/prompt-stack-runtime.js +104 -0
- package/dist/runtime/prompt-stack-runtime.js.map +1 -0
- package/dist/runtime/subagent-runtime.d.ts +30 -0
- package/dist/runtime/subagent-runtime.d.ts.map +1 -0
- package/dist/runtime/subagent-runtime.js +114 -0
- package/dist/runtime/subagent-runtime.js.map +1 -0
- package/dist/runtime/tool-policy-runtime.d.ts +15 -0
- package/dist/runtime/tool-policy-runtime.d.ts.map +1 -0
- package/dist/runtime/tool-policy-runtime.js +170 -0
- package/dist/runtime/tool-policy-runtime.js.map +1 -0
- package/dist/runtime/web-editor-runtime.d.ts +9 -0
- package/dist/runtime/web-editor-runtime.d.ts.map +1 -0
- package/dist/runtime/web-editor-runtime.js +131 -0
- package/dist/runtime/web-editor-runtime.js.map +1 -0
- package/dist/runtime-state.d.ts +4 -0
- package/dist/runtime-state.d.ts.map +1 -1
- package/dist/runtime-state.js +2 -0
- package/dist/runtime-state.js.map +1 -1
- package/dist/storage.d.ts +3 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +9 -0
- package/dist/storage.js.map +1 -1
- package/dist/subagent/backend-registry.d.ts +75 -0
- package/dist/subagent/backend-registry.d.ts.map +1 -0
- package/dist/subagent/backend-registry.js +463 -0
- package/dist/subagent/backend-registry.js.map +1 -0
- package/dist/subagent/canonical.d.ts +10 -0
- package/dist/subagent/canonical.d.ts.map +1 -0
- package/dist/subagent/canonical.js +52 -0
- package/dist/subagent/canonical.js.map +1 -0
- package/dist/subagent/context.d.ts +8 -0
- package/dist/subagent/context.d.ts.map +1 -0
- package/dist/subagent/context.js +125 -0
- package/dist/subagent/context.js.map +1 -0
- package/dist/subagent/contract.d.ts +11 -0
- package/dist/subagent/contract.d.ts.map +1 -0
- package/dist/subagent/contract.js +11 -0
- package/dist/subagent/contract.js.map +1 -0
- package/dist/subagent/diagnostics.d.ts +3 -0
- package/dist/subagent/diagnostics.d.ts.map +1 -0
- package/dist/subagent/diagnostics.js +5 -0
- package/dist/subagent/diagnostics.js.map +1 -0
- package/dist/subagent/index.d.ts +13 -0
- package/dist/subagent/index.d.ts.map +1 -0
- package/dist/subagent/index.js +13 -0
- package/dist/subagent/index.js.map +1 -0
- package/dist/subagent/pi-model-runtime.d.ts +8 -0
- package/dist/subagent/pi-model-runtime.d.ts.map +1 -0
- package/dist/subagent/pi-model-runtime.js +22 -0
- package/dist/subagent/pi-model-runtime.js.map +1 -0
- package/dist/subagent/pi-sdk-backend.d.ts +23 -0
- package/dist/subagent/pi-sdk-backend.d.ts.map +1 -0
- package/dist/subagent/pi-sdk-backend.js +383 -0
- package/dist/subagent/pi-sdk-backend.js.map +1 -0
- package/dist/subagent/pi-subprocess-backend.d.ts +72 -0
- package/dist/subagent/pi-subprocess-backend.d.ts.map +1 -0
- package/dist/subagent/pi-subprocess-backend.js +756 -0
- package/dist/subagent/pi-subprocess-backend.js.map +1 -0
- package/dist/subagent/plan.d.ts +14 -0
- package/dist/subagent/plan.d.ts.map +1 -0
- package/dist/subagent/plan.js +160 -0
- package/dist/subagent/plan.js.map +1 -0
- package/dist/subagent/preflight.d.ts +4 -0
- package/dist/subagent/preflight.d.ts.map +1 -0
- package/dist/subagent/preflight.js +108 -0
- package/dist/subagent/preflight.js.map +1 -0
- package/dist/subagent/request.d.ts +4 -0
- package/dist/subagent/request.d.ts.map +1 -0
- package/dist/subagent/request.js +122 -0
- package/dist/subagent/request.js.map +1 -0
- package/dist/subagent/response.d.ts +8 -0
- package/dist/subagent/response.d.ts.map +1 -0
- package/dist/subagent/response.js +155 -0
- package/dist/subagent/response.js.map +1 -0
- package/dist/subagent/subprocess-bridge.d.ts +21 -0
- package/dist/subagent/subprocess-bridge.d.ts.map +1 -0
- package/dist/subagent/subprocess-bridge.js +87 -0
- package/dist/subagent/subprocess-bridge.js.map +1 -0
- package/dist/subagent/subprocess-report.d.ts +4 -0
- package/dist/subagent/subprocess-report.d.ts.map +1 -0
- package/dist/subagent/subprocess-report.js +55 -0
- package/dist/subagent/subprocess-report.js.map +1 -0
- package/dist/subagent/tools.d.ts +4 -0
- package/dist/subagent/tools.d.ts.map +1 -0
- package/dist/subagent/tools.js +42 -0
- package/dist/subagent/tools.js.map +1 -0
- package/dist/subagent/types.d.ts +384 -0
- package/dist/subagent/types.d.ts.map +1 -0
- package/dist/subagent/types.js +3 -0
- package/dist/subagent/types.js.map +1 -0
- package/dist/subagent/validation.d.ts +35 -0
- package/dist/subagent/validation.d.ts.map +1 -0
- package/dist/subagent/validation.js +500 -0
- package/dist/subagent/validation.js.map +1 -0
- package/dist/subagent-command.d.ts +4 -0
- package/dist/subagent-command.d.ts.map +1 -0
- package/dist/subagent-command.js +153 -0
- package/dist/subagent-command.js.map +1 -0
- package/dist/subagent-contract.d.ts +8 -0
- package/dist/subagent-contract.d.ts.map +1 -0
- package/dist/subagent-contract.js +8 -0
- package/dist/subagent-contract.js.map +1 -0
- package/dist/subagent-host.d.ts +44 -0
- package/dist/subagent-host.d.ts.map +1 -0
- package/dist/subagent-host.js +291 -0
- package/dist/subagent-host.js.map +1 -0
- package/dist/subagent-profile-tool.d.ts +26 -0
- package/dist/subagent-profile-tool.d.ts.map +1 -0
- package/dist/subagent-profile-tool.js +93 -0
- package/dist/subagent-profile-tool.js.map +1 -0
- package/dist/subagent-tool.d.ts +50 -0
- package/dist/subagent-tool.d.ts.map +1 -0
- package/dist/subagent-tool.js +385 -0
- package/dist/subagent-tool.js.map +1 -0
- package/dist/web-editor/client/api.d.ts +9 -0
- package/dist/web-editor/client/api.d.ts.map +1 -0
- package/dist/web-editor/client/api.js +26 -0
- package/dist/web-editor/client/api.js.map +1 -0
- package/dist/web-editor/client/dom.d.ts +13 -0
- package/dist/web-editor/client/dom.d.ts.map +1 -0
- package/dist/web-editor/client/dom.js +30 -0
- package/dist/web-editor/client/dom.js.map +1 -0
- package/dist/web-editor/client/inspector.d.ts +22 -0
- package/dist/web-editor/client/inspector.d.ts.map +1 -0
- package/dist/web-editor/client/inspector.js +226 -0
- package/dist/web-editor/client/inspector.js.map +1 -0
- package/dist/web-editor/client/main.d.ts +2 -0
- package/dist/web-editor/client/main.d.ts.map +1 -0
- package/dist/web-editor/client/main.js +1468 -0
- package/dist/web-editor/client/main.js.map +1 -0
- package/dist/web-editor/client/policy-editor.d.ts +16 -0
- package/dist/web-editor/client/policy-editor.d.ts.map +1 -0
- package/dist/web-editor/client/policy-editor.js +330 -0
- package/dist/web-editor/client/policy-editor.js.map +1 -0
- package/dist/web-editor/client/regex-editor.d.ts +19 -0
- package/dist/web-editor/client/regex-editor.d.ts.map +1 -0
- package/dist/web-editor/client/regex-editor.js +281 -0
- package/dist/web-editor/client/regex-editor.js.map +1 -0
- package/dist/web-editor/client/types.d.ts +60 -0
- package/dist/web-editor/client/types.d.ts.map +1 -0
- package/dist/web-editor/client/types.js +2 -0
- package/dist/web-editor/client/types.js.map +1 -0
- package/dist/web-editor/client-script.d.ts +2 -0
- package/dist/web-editor/client-script.d.ts.map +1 -0
- package/dist/web-editor/client-script.generated.d.ts +2 -0
- package/dist/web-editor/client-script.generated.d.ts.map +1 -0
- package/dist/web-editor/client-script.generated.js +3 -0
- package/dist/web-editor/client-script.generated.js.map +1 -0
- package/dist/web-editor/client-script.js +2 -0
- package/dist/web-editor/client-script.js.map +1 -0
- package/dist/web-editor/page.d.ts.map +1 -1
- package/dist/web-editor/page.js +6 -3249
- package/dist/web-editor/page.js.map +1 -1
- package/dist/web-editor/styles.d.ts +2 -0
- package/dist/web-editor/styles.d.ts.map +1 -0
- package/dist/web-editor/styles.js +996 -0
- package/dist/web-editor/styles.js.map +1 -0
- package/dist/web-host.d.ts +3 -3
- package/dist/web-host.d.ts.map +1 -1
- package/dist/web-host.js +6 -0
- package/dist/web-host.js.map +1 -1
- package/package.json +42 -14
- package/src/compiler.ts +0 -578
- package/src/extension-registry.ts +0 -33
- package/src/forge-extensions.ts +0 -223
- package/src/index.ts +0 -445
- package/src/lifecycle.ts +0 -171
- package/src/loader.ts +0 -394
- package/src/macro-engine.ts +0 -358
- package/src/payload-capture.ts +0 -85
- package/src/payload-command.ts +0 -138
- package/src/policy.ts +0 -42
- package/src/preset-command.ts +0 -280
- package/src/preview.ts +0 -226
- package/src/regex.ts +0 -500
- package/src/render-helpers.ts +0 -169
- package/src/runtime-state.ts +0 -40
- package/src/sillytavern-importer/items.ts +0 -98
- package/src/sillytavern-importer/macros.ts +0 -159
- package/src/sillytavern-importer/prompt-order.ts +0 -54
- package/src/sillytavern-importer/regex.ts +0 -270
- package/src/sillytavern-importer/report.ts +0 -202
- package/src/sillytavern-importer/types.ts +0 -120
- package/src/sillytavern-importer.ts +0 -152
- package/src/slot-renderers.ts +0 -414
- package/src/stack-migration.ts +0 -159
- package/src/storage.ts +0 -45
- package/src/types.ts +0 -209
- package/src/web-editor/index.ts +0 -2
- package/src/web-editor/page.ts +0 -3330
- package/src/web-editor/server.ts +0 -294
- package/src/web-editor/types.ts +0 -98
- package/src/web-host.ts +0 -232
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { basename, join } from "node:path";
|
|
3
|
+
import { clampThinkingLevel } from "@earendil-works/pi-ai";
|
|
4
|
+
import { resourcePatternMatches } from "./policy.js";
|
|
5
|
+
import { agentProfilesDir } from "./storage.js";
|
|
6
|
+
export const AGENT_PROFILE_TYPE = "pi-forge.agent-profile";
|
|
7
|
+
export const AGENT_PROFILE_THINKING_LEVELS = ["off", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
8
|
+
const VALID_THINKING_LEVELS = new Set(AGENT_PROFILE_THINKING_LEVELS);
|
|
9
|
+
const PROFILE_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
|
|
10
|
+
const PROFILE_FIELDS = new Set(["schemaVersion", "type", "id", "name", "description", "model", "thinkingLevel", "promptStack", "autoActivate"]);
|
|
11
|
+
const MODEL_FIELDS = new Set(["provider", "id"]);
|
|
12
|
+
export { agentProfilePath, agentProfilesDir } from "./storage.js";
|
|
13
|
+
export function isValidAgentProfileId(id) {
|
|
14
|
+
return PROFILE_ID_PATTERN.test(id);
|
|
15
|
+
}
|
|
16
|
+
export function loadAgentProfiles(cwd) {
|
|
17
|
+
const dir = agentProfilesDir(cwd);
|
|
18
|
+
if (!existsSync(dir))
|
|
19
|
+
return [];
|
|
20
|
+
let entries;
|
|
21
|
+
try {
|
|
22
|
+
entries = readdirSync(dir).filter((name) => name.endsWith(".json")).sort();
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const profiles = entries.map((name) => loadAgentProfileFile(join(dir, name)));
|
|
28
|
+
annotateDuplicateProfileIds(profiles);
|
|
29
|
+
annotateAutoActivateConflicts(profiles);
|
|
30
|
+
return profiles;
|
|
31
|
+
}
|
|
32
|
+
export function chooseAutoActivateAgentProfile(profiles) {
|
|
33
|
+
const candidates = profiles.filter((loaded) => loaded.profile.autoActivate === true);
|
|
34
|
+
return candidates.length === 1 ? candidates[0] : undefined;
|
|
35
|
+
}
|
|
36
|
+
export function hasAutoActivateAgentProfile(profiles) {
|
|
37
|
+
return profiles.some((loaded) => loaded.profile.autoActivate === true);
|
|
38
|
+
}
|
|
39
|
+
export function loadAgentProfileFile(filePath) {
|
|
40
|
+
const diagnostics = [];
|
|
41
|
+
let raw;
|
|
42
|
+
try {
|
|
43
|
+
raw = JSON.parse(readFileSync(filePath, "utf8"));
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
return {
|
|
47
|
+
filePath,
|
|
48
|
+
profile: fallbackProfile(filePath),
|
|
49
|
+
diagnostics: [{
|
|
50
|
+
level: "error",
|
|
51
|
+
message: `Failed to parse JSON: ${error instanceof Error ? error.message : String(error)}`,
|
|
52
|
+
}],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
const profile = normalizeAgentProfile(raw, filePath, diagnostics);
|
|
56
|
+
diagnostics.push(...validateAgentProfile(profile));
|
|
57
|
+
return { filePath, profile, diagnostics };
|
|
58
|
+
}
|
|
59
|
+
export function validateAgentProfile(profile) {
|
|
60
|
+
const diagnostics = [];
|
|
61
|
+
if (profile.schemaVersion !== 1)
|
|
62
|
+
diagnostics.push({ level: "error", field: "schemaVersion", message: "schemaVersion must be 1." });
|
|
63
|
+
if (profile.type !== AGENT_PROFILE_TYPE)
|
|
64
|
+
diagnostics.push({ level: "error", field: "type", message: `type must be "${AGENT_PROFILE_TYPE}".` });
|
|
65
|
+
if (!isValidAgentProfileId(profile.id)) {
|
|
66
|
+
diagnostics.push({
|
|
67
|
+
level: "error",
|
|
68
|
+
field: "id",
|
|
69
|
+
message: "Profile id must start with a letter or number and contain only letters, numbers, dots, underscores, and hyphens.",
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (!profile.model.provider.trim())
|
|
73
|
+
diagnostics.push({ level: "error", field: "model.provider", message: "model.provider must not be empty." });
|
|
74
|
+
if (!profile.model.id.trim())
|
|
75
|
+
diagnostics.push({ level: "error", field: "model.id", message: "model.id must not be empty." });
|
|
76
|
+
if (!VALID_THINKING_LEVELS.has(profile.thinkingLevel)) {
|
|
77
|
+
diagnostics.push({ level: "error", field: "thinkingLevel", message: `Unsupported thinkingLevel: ${String(profile.thinkingLevel)}` });
|
|
78
|
+
}
|
|
79
|
+
if (profile.promptStack !== null && !profile.promptStack.trim()) {
|
|
80
|
+
diagnostics.push({ level: "error", field: "promptStack", message: "promptStack must be a non-empty stack id or null." });
|
|
81
|
+
}
|
|
82
|
+
return diagnostics;
|
|
83
|
+
}
|
|
84
|
+
export function resolveAgentProfile(loaded, resources) {
|
|
85
|
+
const diagnostics = [...loaded.diagnostics];
|
|
86
|
+
const reference = loaded.profile.model;
|
|
87
|
+
const model = findModel(resources.models, reference);
|
|
88
|
+
let effectiveThinkingLevel = loaded.profile.thinkingLevel;
|
|
89
|
+
if (!model) {
|
|
90
|
+
diagnostics.push({
|
|
91
|
+
level: "error",
|
|
92
|
+
field: "model",
|
|
93
|
+
message: `Unknown model: ${reference.provider}/${reference.id}`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
if (resources.availableModels && !findModel(resources.availableModels, reference)) {
|
|
98
|
+
diagnostics.push({
|
|
99
|
+
level: "error",
|
|
100
|
+
field: "model",
|
|
101
|
+
message: `Model ${reference.provider}/${reference.id} has no configured authentication.`,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
effectiveThinkingLevel = clampThinkingLevel(model, loaded.profile.thinkingLevel);
|
|
105
|
+
if (effectiveThinkingLevel !== loaded.profile.thinkingLevel) {
|
|
106
|
+
diagnostics.push({
|
|
107
|
+
level: "error",
|
|
108
|
+
field: "thinkingLevel",
|
|
109
|
+
message: `Model ${reference.provider}/${reference.id} does not support thinking level ${loaded.profile.thinkingLevel}; Pi would clamp it to ${effectiveThinkingLevel}.`,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
let promptStack;
|
|
114
|
+
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 {
|
|
124
|
+
for (const diagnostic of promptStack.diagnostics) {
|
|
125
|
+
diagnostics.push({
|
|
126
|
+
level: diagnostic.level,
|
|
127
|
+
field: "promptStack",
|
|
128
|
+
message: `Prompt stack ${promptStack.stack.id}: ${diagnostic.message}`,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
const allowedPatterns = promptStack.stack.tools?.allow?.filter((pattern) => pattern !== "*") ?? [];
|
|
132
|
+
if (resources.toolNames && !promptStack.stack.tools?.allow?.includes("*")) {
|
|
133
|
+
for (const pattern of allowedPatterns) {
|
|
134
|
+
if (resources.toolNames.some((name) => resourcePatternMatches(name, pattern)))
|
|
135
|
+
continue;
|
|
136
|
+
diagnostics.push({
|
|
137
|
+
level: "warning",
|
|
138
|
+
field: "promptStack",
|
|
139
|
+
message: `Prompt stack ${promptStack.stack.id} allows tool pattern "${pattern}", but it matches no registered tools.`,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return { loaded, model, promptStack, effectiveThinkingLevel, diagnostics };
|
|
146
|
+
}
|
|
147
|
+
export function isUsableAgentProfile(loaded) {
|
|
148
|
+
return !hasAgentProfileErrors(loaded.diagnostics);
|
|
149
|
+
}
|
|
150
|
+
export function isResolvedAgentProfileUsable(resolved) {
|
|
151
|
+
return !hasAgentProfileErrors(resolved.diagnostics) && !!resolved.model;
|
|
152
|
+
}
|
|
153
|
+
export function hasAgentProfileErrors(diagnostics) {
|
|
154
|
+
return diagnostics.some((diagnostic) => diagnostic.level === "error");
|
|
155
|
+
}
|
|
156
|
+
export function renderAgentProfileDiagnostics(diagnostics) {
|
|
157
|
+
if (diagnostics.length === 0)
|
|
158
|
+
return "No diagnostics.";
|
|
159
|
+
return diagnostics
|
|
160
|
+
.map((diagnostic) => `${diagnostic.level.toUpperCase()}: ${diagnostic.field ? `${diagnostic.field}: ` : ""}${diagnostic.message}`)
|
|
161
|
+
.join("\n");
|
|
162
|
+
}
|
|
163
|
+
export function agentProfileFingerprint(profile) {
|
|
164
|
+
return JSON.stringify(profile);
|
|
165
|
+
}
|
|
166
|
+
export function isAgentProfileProvenance(value) {
|
|
167
|
+
if (!isPlainObject(value) || !isPlainObject(value.snapshot) || !isPlainObject(value.snapshot.model))
|
|
168
|
+
return false;
|
|
169
|
+
return typeof value.profileId === "string"
|
|
170
|
+
&& isValidAgentProfileId(value.profileId)
|
|
171
|
+
&& typeof value.sourcePath === "string"
|
|
172
|
+
&& typeof value.sourceFingerprint === "string"
|
|
173
|
+
&& typeof value.appliedAt === "string"
|
|
174
|
+
&& !!nonEmptyString(value.snapshot.model.provider)
|
|
175
|
+
&& !!nonEmptyString(value.snapshot.model.id)
|
|
176
|
+
&& typeof value.snapshot.thinkingLevel === "string"
|
|
177
|
+
&& VALID_THINKING_LEVELS.has(value.snapshot.thinkingLevel)
|
|
178
|
+
&& (value.snapshot.promptStack === null || !!nonEmptyString(value.snapshot.promptStack));
|
|
179
|
+
}
|
|
180
|
+
function findModel(models, reference) {
|
|
181
|
+
return models.find((model) => model.provider === reference.provider && model.id === reference.id);
|
|
182
|
+
}
|
|
183
|
+
function annotateDuplicateProfileIds(profiles) {
|
|
184
|
+
const byId = new Map();
|
|
185
|
+
for (const loaded of profiles) {
|
|
186
|
+
const matches = byId.get(loaded.profile.id) ?? [];
|
|
187
|
+
matches.push(loaded);
|
|
188
|
+
byId.set(loaded.profile.id, matches);
|
|
189
|
+
}
|
|
190
|
+
for (const [id, matches] of byId) {
|
|
191
|
+
if (matches.length <= 1)
|
|
192
|
+
continue;
|
|
193
|
+
const files = matches.map((loaded) => basename(loaded.filePath)).join(", ");
|
|
194
|
+
for (const loaded of matches) {
|
|
195
|
+
loaded.diagnostics.push({ level: "error", message: `Duplicate profile id: ${id} appears in multiple files (${files}).` });
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
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
|
+
});
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function normalizeAgentProfile(raw, filePath, diagnostics) {
|
|
213
|
+
if (!isPlainObject(raw)) {
|
|
214
|
+
diagnostics.push({ level: "error", message: "Agent profile root must be a JSON object." });
|
|
215
|
+
return fallbackProfile(filePath);
|
|
216
|
+
}
|
|
217
|
+
for (const field of Object.keys(raw)) {
|
|
218
|
+
if (!PROFILE_FIELDS.has(field))
|
|
219
|
+
diagnostics.push({ level: "error", field, message: `Unsupported profile field: ${field}` });
|
|
220
|
+
}
|
|
221
|
+
if (raw.schemaVersion !== 1)
|
|
222
|
+
diagnostics.push({ level: "error", field: "schemaVersion", message: "schemaVersion must be 1." });
|
|
223
|
+
if (raw.type !== AGENT_PROFILE_TYPE)
|
|
224
|
+
diagnostics.push({ level: "error", field: "type", message: `type must be "${AGENT_PROFILE_TYPE}".` });
|
|
225
|
+
const id = nonEmptyString(raw.id);
|
|
226
|
+
if (!id)
|
|
227
|
+
diagnostics.push({ level: "error", field: "id", message: "Profile id must be a non-empty string." });
|
|
228
|
+
const model = normalizeModelReference(raw.model, diagnostics);
|
|
229
|
+
const thinkingLevel = normalizeThinkingLevel(raw.thinkingLevel, diagnostics);
|
|
230
|
+
const promptStack = normalizePromptStackReference(raw, diagnostics);
|
|
231
|
+
if (raw.name !== undefined && typeof raw.name !== "string")
|
|
232
|
+
diagnostics.push({ level: "error", field: "name", message: "name must be a string when provided." });
|
|
233
|
+
if (raw.description !== undefined && typeof raw.description !== "string") {
|
|
234
|
+
diagnostics.push({ level: "error", field: "description", message: "description must be a string when provided." });
|
|
235
|
+
}
|
|
236
|
+
if (raw.autoActivate !== undefined && typeof raw.autoActivate !== "boolean") {
|
|
237
|
+
diagnostics.push({ level: "error", field: "autoActivate", message: "autoActivate must be a boolean when provided." });
|
|
238
|
+
}
|
|
239
|
+
return {
|
|
240
|
+
schemaVersion: 1,
|
|
241
|
+
type: AGENT_PROFILE_TYPE,
|
|
242
|
+
id: id ?? basename(filePath, ".json"),
|
|
243
|
+
name: typeof raw.name === "string" ? raw.name : undefined,
|
|
244
|
+
description: typeof raw.description === "string" ? raw.description : undefined,
|
|
245
|
+
autoActivate: typeof raw.autoActivate === "boolean" ? raw.autoActivate : undefined,
|
|
246
|
+
model,
|
|
247
|
+
thinkingLevel,
|
|
248
|
+
promptStack,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
function normalizeModelReference(raw, diagnostics) {
|
|
252
|
+
if (!isPlainObject(raw)) {
|
|
253
|
+
diagnostics.push({ level: "error", field: "model", message: "model must be an object containing provider and id." });
|
|
254
|
+
return { provider: "", id: "" };
|
|
255
|
+
}
|
|
256
|
+
for (const field of Object.keys(raw)) {
|
|
257
|
+
if (!MODEL_FIELDS.has(field))
|
|
258
|
+
diagnostics.push({ level: "error", field: `model.${field}`, message: `Unsupported model field: ${field}` });
|
|
259
|
+
}
|
|
260
|
+
const provider = nonEmptyString(raw.provider);
|
|
261
|
+
const id = nonEmptyString(raw.id);
|
|
262
|
+
return { provider: provider ?? "", id: id ?? "" };
|
|
263
|
+
}
|
|
264
|
+
function normalizeThinkingLevel(raw, diagnostics) {
|
|
265
|
+
if (typeof raw === "string" && VALID_THINKING_LEVELS.has(raw))
|
|
266
|
+
return raw;
|
|
267
|
+
diagnostics.push({
|
|
268
|
+
level: "error",
|
|
269
|
+
field: "thinkingLevel",
|
|
270
|
+
message: `thinkingLevel must be one of: ${AGENT_PROFILE_THINKING_LEVELS.join(", ")}.`,
|
|
271
|
+
});
|
|
272
|
+
return "off";
|
|
273
|
+
}
|
|
274
|
+
function normalizePromptStackReference(raw, diagnostics) {
|
|
275
|
+
if (!Object.prototype.hasOwnProperty.call(raw, "promptStack")) {
|
|
276
|
+
diagnostics.push({ level: "error", field: "promptStack", message: "promptStack is required and must be a stack id or null." });
|
|
277
|
+
return null;
|
|
278
|
+
}
|
|
279
|
+
if (raw.promptStack === null)
|
|
280
|
+
return null;
|
|
281
|
+
const id = nonEmptyString(raw.promptStack);
|
|
282
|
+
if (id)
|
|
283
|
+
return id;
|
|
284
|
+
diagnostics.push({ level: "error", field: "promptStack", message: "promptStack must be a non-empty stack id or null." });
|
|
285
|
+
return null;
|
|
286
|
+
}
|
|
287
|
+
function fallbackProfile(filePath) {
|
|
288
|
+
return {
|
|
289
|
+
schemaVersion: 1,
|
|
290
|
+
type: AGENT_PROFILE_TYPE,
|
|
291
|
+
id: basename(filePath, ".json"),
|
|
292
|
+
model: { provider: "", id: "" },
|
|
293
|
+
thinkingLevel: "off",
|
|
294
|
+
promptStack: null,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
function nonEmptyString(value) {
|
|
298
|
+
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
299
|
+
}
|
|
300
|
+
function isPlainObject(value) {
|
|
301
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=agent-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-profile.js","sourceRoot":"","sources":["../src/agent-profile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
+
export interface ForgeSubagentSettings {
|
|
3
|
+
allowAgentInvocationWithoutApproval: boolean;
|
|
4
|
+
configPath: string;
|
|
5
|
+
warnings: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function loadForgeSubagentSettings(ctx: ExtensionContext): ForgeSubagentSettings;
|
|
8
|
+
//# sourceMappingURL=forge-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge-config.d.ts","sourceRoot":"","sources":["../src/forge-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,MAAM,WAAW,qBAAqB;IACrC,mCAAmC,EAAE,OAAO,CAAC;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,gBAAgB,GAAG,qBAAqB,CA8BtF"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
export function loadForgeSubagentSettings(ctx) {
|
|
4
|
+
const configPath = join(ctx.cwd, ".pi", "forge", "config.json");
|
|
5
|
+
const defaults = { allowAgentInvocationWithoutApproval: false, configPath, warnings: [] };
|
|
6
|
+
if (!ctx.isProjectTrusted() || !existsSync(configPath))
|
|
7
|
+
return defaults;
|
|
8
|
+
let raw;
|
|
9
|
+
try {
|
|
10
|
+
raw = JSON.parse(readFileSync(configPath, "utf8"));
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
return {
|
|
14
|
+
...defaults,
|
|
15
|
+
warnings: [`pi-forge: failed to read ${configPath}; per-run subagent approval remains required. ${error instanceof Error ? error.message : String(error)}`],
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
if (!isPlainObject(raw)) {
|
|
19
|
+
return { ...defaults, warnings: [`pi-forge: ${configPath} must be a JSON object; per-run subagent approval remains required.`] };
|
|
20
|
+
}
|
|
21
|
+
if (raw.subagents === undefined)
|
|
22
|
+
return defaults;
|
|
23
|
+
if (!isPlainObject(raw.subagents)) {
|
|
24
|
+
return { ...defaults, warnings: [`pi-forge: ${configPath} subagents must be a JSON object; per-run subagent approval remains required.`] };
|
|
25
|
+
}
|
|
26
|
+
const value = raw.subagents.allowAgentInvocationWithoutApproval;
|
|
27
|
+
if (value === undefined)
|
|
28
|
+
return defaults;
|
|
29
|
+
if (typeof value !== "boolean") {
|
|
30
|
+
return {
|
|
31
|
+
...defaults,
|
|
32
|
+
warnings: [`pi-forge: ${configPath} subagents.allowAgentInvocationWithoutApproval must be boolean; per-run subagent approval remains required.`],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return { ...defaults, allowAgentInvocationWithoutApproval: value };
|
|
36
|
+
}
|
|
37
|
+
function isPlainObject(value) {
|
|
38
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=forge-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forge-config.js","sourceRoot":"","sources":["../src/forge-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AASjC,MAAM,UAAU,yBAAyB,CAAC,GAAqB;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,EAAE,mCAAmC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAc,EAAE,CAAC;IACtG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC;IAExE,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACJ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,OAAO;YACN,GAAG,QAAQ;YACX,QAAQ,EAAE,CAAC,4BAA4B,UAAU,iDAAiD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SAC3J,CAAC;IACH,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC,aAAa,UAAU,qEAAqE,CAAC,EAAE,CAAC;IAClI,CAAC;IACD,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACjD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC,aAAa,UAAU,+EAA+E,CAAC,EAAE,CAAC;IAC5I,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,mCAAmC,CAAC;IAChE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAChC,OAAO;YACN,GAAG,QAAQ;YACX,QAAQ,EAAE,CAAC,aAAa,UAAU,6GAA6G,CAAC;SAChJ,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,QAAQ,EAAE,mCAAmC,EAAE,KAAK,EAAE,CAAC;AACpE,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACpC,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-extensions.d.ts","sourceRoot":"","sources":["../src/forge-extensions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"forge-extensions.d.ts","sourceRoot":"","sources":["../src/forge-extensions.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,mBAAmB,EAEnB,KAAK,qBAAqB,EAC1B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EACN,kBAAkB,EAElB,KAAK,oBAAoB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAIxD,MAAM,WAAW,iBAAiB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,IAAI,CAAC;IAC7D,YAAY,CAAC,UAAU,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAAC;IAC3D,mBAAmB,EAAE,OAAO,mBAAmB,CAAC;IAChD,kBAAkB,EAAE,OAAO,kBAAkB,CAAC;CAC9C;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,iBAAiB,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAEpH,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACxC,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,WAAW,EAAE,MAAM,EAAE,CAAC;CACtB;AAOD,wBAAgB,yBAAyB,IAAI,mBAAmB,CAE/D;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAgBtH;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,qBAAqB,EAAE,CAazF;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAEjE"}
|
package/dist/forge-extensions.js
CHANGED
|
@@ -7,21 +7,25 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
7
7
|
return path;
|
|
8
8
|
};
|
|
9
9
|
import { existsSync, readdirSync, statSync } from "node:fs";
|
|
10
|
+
import { randomUUID } from "node:crypto";
|
|
11
|
+
import { createRequire } from "node:module";
|
|
10
12
|
import { basename, join } from "node:path";
|
|
11
13
|
import { pathToFileURL } from "node:url";
|
|
12
14
|
import { getRegisteredMacros, registerMacro, } from "./macro-engine.js";
|
|
13
15
|
import { promptRenderHelpers } from "./render-helpers.js";
|
|
14
16
|
import { getRegisteredSlots, registerSlot, } from "./slot-renderers.js";
|
|
15
17
|
import { forgeDir, forgeExtensionsDir, globalForgeDir, globalForgeExtensionsDir } from "./storage.js";
|
|
18
|
+
const require = createRequire(import.meta.url);
|
|
16
19
|
export function createForgeExtensionState() {
|
|
17
20
|
return { unregister: [], loadVersion: 0 };
|
|
18
21
|
}
|
|
19
22
|
export async function reloadForgeExtensions(cwd, state) {
|
|
20
23
|
const diagnostics = unloadForgeExtensions(state);
|
|
21
24
|
state.loadVersion++;
|
|
25
|
+
const loadToken = `${state.loadVersion}-${randomUUID()}`;
|
|
22
26
|
const loadedPaths = [];
|
|
23
27
|
for (const candidate of discoverForgeExtensionCandidates(cwd)) {
|
|
24
|
-
const result = await loadForgeExtensionFile(cwd, candidate.forgeDir, candidate.filePath,
|
|
28
|
+
const result = await loadForgeExtensionFile(cwd, candidate.forgeDir, candidate.filePath, loadToken);
|
|
25
29
|
diagnostics.push(...result.diagnostics);
|
|
26
30
|
if (result.loaded) {
|
|
27
31
|
state.unregister.push(...result.unregister);
|
|
@@ -99,11 +103,12 @@ function discoverForgeExtensionFilesInDir(dir) {
|
|
|
99
103
|
}
|
|
100
104
|
return files;
|
|
101
105
|
}
|
|
102
|
-
async function loadForgeExtensionFile(cwd, forgeDirPath, filePath,
|
|
106
|
+
async function loadForgeExtensionFile(cwd, forgeDirPath, filePath, loadToken) {
|
|
103
107
|
const unregister = [];
|
|
104
108
|
const diagnostics = [];
|
|
105
109
|
try {
|
|
106
|
-
|
|
110
|
+
clearCommonJsCache(filePath);
|
|
111
|
+
const module = await import(__rewriteRelativeImportExtension(`${pathToFileURL(filePath).href}?piForgeReload=${encodeURIComponent(loadToken)}`));
|
|
107
112
|
const register = readRegisterFunction(module);
|
|
108
113
|
if (!register) {
|
|
109
114
|
return {
|
|
@@ -136,6 +141,17 @@ async function loadForgeExtensionFile(cwd, forgeDirPath, filePath, loadVersion)
|
|
|
136
141
|
return { loaded: false, unregister: [], diagnostics };
|
|
137
142
|
}
|
|
138
143
|
}
|
|
144
|
+
function clearCommonJsCache(filePath) {
|
|
145
|
+
if (!filePath.endsWith(".js") && !filePath.endsWith(".cjs"))
|
|
146
|
+
return;
|
|
147
|
+
try {
|
|
148
|
+
const resolved = require.resolve(filePath);
|
|
149
|
+
delete require.cache[resolved];
|
|
150
|
+
}
|
|
151
|
+
catch {
|
|
152
|
+
// ESM .js files do not use the CommonJS cache.
|
|
153
|
+
}
|
|
154
|
+
}
|
|
139
155
|
function createForgeExtensionApi(cwd, forgeDirPath, extensionPath, unregister) {
|
|
140
156
|
return {
|
|
141
157
|
cwd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge-extensions.js","sourceRoot":"","sources":["../src/forge-extensions.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACN,mBAAmB,EACnB,aAAa,GAEb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,mBAAmB,EAA4B,MAAM,qBAAqB,CAAC;AACpF,OAAO,EACN,kBAAkB,EAClB,YAAY,GAEZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"forge-extensions.js","sourceRoot":"","sources":["../src/forge-extensions.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,13 @@ export { getRegisteredMacros, registerMacro, type PromptMacroDefinition, type Pr
|
|
|
3
3
|
export { getRegisteredSlots, registerSlot, type PromptSlotDefinition, type PromptSlotRenderContext, type PromptSlotRenderer, } from "./slot-renderers.ts";
|
|
4
4
|
export { type PromptExtensionArgumentDefinition, type PromptExtensionOptionDefinition, type PromptExtensionOptionsSchema, type PromptExtensionOptionType, type PromptRegistryEntry, } from "./extension-registry.ts";
|
|
5
5
|
export { type ForgeExtensionApi, type ForgeExtensionRegister, } from "./forge-extensions.ts";
|
|
6
|
+
export { AGENT_PROFILE_THINKING_LEVELS, AGENT_PROFILE_TYPE, agentProfileFingerprint, agentProfilePath, agentProfilesDir, chooseAutoActivateAgentProfile, hasAutoActivateAgentProfile, hasAgentProfileErrors, isResolvedAgentProfileUsable, isUsableAgentProfile, isValidAgentProfileId, loadAgentProfileFile, loadAgentProfiles, renderAgentProfileDiagnostics, resolveAgentProfile, validateAgentProfile, type AgentProfile, type AgentProfileDiagnostic, type AgentProfileDiagnosticLevel, type AgentProfileModelReference, type AgentProfileResolutionResources, type AgentProfileProvenance, type AgentProfileRuntimeSnapshot, type LoadedAgentProfile, type ResolvedAgentProfile, isAgentProfileProvenance, } from "./agent-profile.ts";
|
|
7
|
+
export { applyResolvedAgentProfile, captureAgentProfile, createAgentProfilePreview, deleteAgentProfile, forgetAgentProfileProvenance, getAgentProfileRuntimeStatus, writeAgentProfile, type AgentProfileApplicationDeps, type AgentProfileApplicationResult, type AgentProfileApplicationState, type AgentProfileCaptureInput, type AgentProfileCaptureResult, type AgentProfileCurrentRuntime, type AgentProfileDeleteResult, type AgentProfileDriftField, type AgentProfilePreview, type AgentProfileRuntimeStatus, type AgentProfileWriteResult, } from "./profile-service.ts";
|
|
6
8
|
export { createVariableAccess, promptRenderHelpers, type PromptRenderHelpers, type PromptVariableAccess, type PromptVariableScope, type PromptWritableVariableScope, } from "./render-helpers.ts";
|
|
9
|
+
export * from "./subagent-contract.ts";
|
|
10
|
+
export { appendProtectedAgentTask, collectMacroCommandNames, collectSubagentPromptDependencies, compileProtectedAgentTaskMessages, currentSubagentPromptRegistrationCatalog, isProtectedAgentTaskPreserved, prepareSubagentHostPlan, resolveSubagentHostProfile, type SubagentHostResolution, type SubagentPromptRegistration, type SubagentPromptRegistrationCatalog, } from "./subagent-host.ts";
|
|
11
|
+
export { SubagentBackendRegistry, SubagentBackendRegistryError, type SubagentBackend, type SubagentBackendCancelInput, type SubagentBackendExecutionContext, type SubagentBackendExecutionResult, type SubagentBackendExecutionUpdate, type SubagentBackendPreparationContext, type SubagentBackendPreflightInput, type SubagentBackendRegistryOptions, type SubagentBackendTraceInput, type SubagentBackendTraceResult, type SubagentExecutionOptions, } from "./subagent/backend-registry.ts";
|
|
12
|
+
export { PI_SDK_ISOLATED_BACKEND_DESCRIPTOR, PI_SDK_ISOLATED_BACKEND_ID, PiSdkIsolatedBackend, type PiSdkIsolatedBackendOptions, } from "./subagent/pi-sdk-backend.ts";
|
|
13
|
+
export { PI_FORGE_SUBPROCESS_INPUT_ENV, PI_SUBPROCESS_READONLY_BACKEND_DESCRIPTOR, PI_SUBPROCESS_READONLY_BACKEND_ID, PiSubprocessBackend, type PiSubprocessBackendOptions, type PiSubprocessRunReport, type PiSubprocessUsage, } from "./subagent/pi-subprocess-backend.ts";
|
|
7
14
|
export default function piForge(pi: ExtensionAPI): void;
|
|
8
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA4B,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|