@zihanw/pi-forge 0.5.4 → 0.5.5
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 +71 -0
- package/README.md +67 -103
- package/README.zh-CN.md +67 -95
- package/assets/pi-forge-header-concept-1.png +0 -0
- package/assets/readme/PROVENANCE.md +95 -0
- package/assets/readme/en/capability-tools.gif +0 -0
- package/assets/readme/en/context-composition.gif +0 -0
- package/assets/readme/en/context-toggle.gif +0 -0
- package/assets/readme/en/draft-diff.png +0 -0
- package/assets/readme/en/edit-draft-diff.gif +0 -0
- package/assets/readme/en/editor-overview-v3.png +0 -0
- package/assets/readme/en/editor-overview.png +0 -0
- package/assets/readme/en/mode-tools.gif +0 -0
- package/assets/readme/en/regex-transforms.gif +0 -0
- package/assets/readme/en/tool-selection.gif +0 -0
- package/assets/readme/tui-quickstart.gif +0 -0
- package/assets/readme/zh-CN/capability-tools.gif +0 -0
- package/assets/readme/zh-CN/context-composition.gif +0 -0
- package/assets/readme/zh-CN/context-toggle.gif +0 -0
- package/assets/readme/zh-CN/draft-diff.png +0 -0
- package/assets/readme/zh-CN/edit-draft-diff.gif +0 -0
- package/assets/readme/zh-CN/editor-overview-v3.png +0 -0
- package/assets/readme/zh-CN/editor-overview.png +0 -0
- package/assets/readme/zh-CN/mode-tools.gif +0 -0
- package/assets/readme/zh-CN/regex-transforms.gif +0 -0
- package/assets/readme/zh-CN/tool-selection.gif +0 -0
- package/dist/active-state.d.ts +148 -0
- package/dist/active-state.d.ts.map +1 -0
- package/dist/active-state.js +374 -0
- package/dist/active-state.js.map +1 -0
- package/dist/agent-profile.d.ts.map +1 -1
- package/dist/agent-profile.js +11 -0
- package/dist/agent-profile.js.map +1 -1
- package/dist/capabilities.d.ts +39 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +160 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/capability-anchors.d.ts +45 -0
- package/dist/capability-anchors.d.ts.map +1 -0
- package/dist/capability-anchors.js +263 -0
- package/dist/capability-anchors.js.map +1 -0
- package/dist/capability-command.d.ts +4 -0
- package/dist/capability-command.d.ts.map +1 -0
- package/dist/capability-command.js +164 -0
- package/dist/capability-command.js.map +1 -0
- package/dist/capability-events.d.ts +79 -0
- package/dist/capability-events.d.ts.map +1 -0
- package/dist/capability-events.js +478 -0
- package/dist/capability-events.js.map +1 -0
- package/dist/capability-projection.d.ts +22 -0
- package/dist/capability-projection.d.ts.map +1 -0
- package/dist/capability-projection.js +273 -0
- package/dist/capability-projection.js.map +1 -0
- package/dist/capability-protocol.d.ts +21 -0
- package/dist/capability-protocol.d.ts.map +1 -0
- package/dist/capability-protocol.js +15 -0
- package/dist/capability-protocol.js.map +1 -0
- package/dist/capability-state.d.ts +74 -0
- package/dist/capability-state.d.ts.map +1 -0
- package/dist/capability-state.js +43 -0
- package/dist/capability-state.js.map +1 -0
- package/dist/capability-tool.d.ts +11 -0
- package/dist/capability-tool.d.ts.map +1 -0
- package/dist/capability-tool.js +25 -0
- package/dist/capability-tool.js.map +1 -0
- package/dist/capability-web-host.d.ts +11 -0
- package/dist/capability-web-host.d.ts.map +1 -0
- package/dist/capability-web-host.js +105 -0
- package/dist/capability-web-host.js.map +1 -0
- package/dist/codecs/capability.d.ts +71 -0
- package/dist/codecs/capability.d.ts.map +1 -0
- package/dist/codecs/capability.js +363 -0
- package/dist/codecs/capability.js.map +1 -0
- package/dist/codecs/prompt-stack.d.ts +1 -1
- package/dist/codecs/prompt-stack.d.ts.map +1 -1
- package/dist/codecs/prompt-stack.js +140 -13
- package/dist/codecs/prompt-stack.js.map +1 -1
- package/dist/command-contribution/index.d.ts +21 -0
- package/dist/command-contribution/index.d.ts.map +1 -0
- package/dist/command-contribution/index.js +14 -0
- package/dist/command-contribution/index.js.map +1 -0
- package/dist/compile-cycle.d.ts +1 -0
- package/dist/compile-cycle.d.ts.map +1 -1
- package/dist/compile-cycle.js.map +1 -1
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +70 -17
- package/dist/compiler.js.map +1 -1
- package/dist/forge-command.d.ts +10 -0
- package/dist/forge-command.d.ts.map +1 -0
- package/dist/forge-command.js +106 -0
- package/dist/forge-command.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -5
- package/dist/index.js.map +1 -1
- package/dist/json-fingerprint.d.ts +11 -0
- package/dist/json-fingerprint.d.ts.map +1 -0
- package/dist/json-fingerprint.js +66 -0
- package/dist/json-fingerprint.js.map +1 -0
- package/dist/lifecycle.d.ts +14 -0
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +167 -67
- package/dist/lifecycle.js.map +1 -1
- package/dist/payload-command.d.ts +2 -2
- package/dist/payload-command.d.ts.map +1 -1
- package/dist/payload-command.js +80 -26
- package/dist/payload-command.js.map +1 -1
- package/dist/payload-state.d.ts +1 -0
- package/dist/payload-state.d.ts.map +1 -1
- package/dist/payload-state.js +1 -0
- package/dist/payload-state.js.map +1 -1
- package/dist/policy.d.ts +2 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +3 -0
- package/dist/policy.js.map +1 -1
- package/dist/preset-command.d.ts.map +1 -1
- package/dist/preset-command.js +92 -35
- package/dist/preset-command.js.map +1 -1
- package/dist/preview-text.d.ts +5 -0
- package/dist/preview-text.d.ts.map +1 -0
- package/dist/preview-text.js +27 -0
- package/dist/preview-text.js.map +1 -0
- package/dist/preview.d.ts +18 -1
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +132 -97
- package/dist/preview.js.map +1 -1
- package/dist/profile-command.js +68 -9
- package/dist/profile-command.js.map +1 -1
- package/dist/regex.d.ts.map +1 -1
- package/dist/regex.js +5 -0
- package/dist/regex.js.map +1 -1
- package/dist/render-helpers.d.ts.map +1 -1
- package/dist/render-helpers.js +2 -0
- package/dist/render-helpers.js.map +1 -1
- package/dist/repositories/capability.d.ts +53 -0
- package/dist/repositories/capability.d.ts.map +1 -0
- package/dist/repositories/capability.js +294 -0
- package/dist/repositories/capability.js.map +1 -0
- package/dist/runtime/capability-runtime.d.ts +91 -0
- package/dist/runtime/capability-runtime.d.ts.map +1 -0
- package/dist/runtime/capability-runtime.js +967 -0
- package/dist/runtime/capability-runtime.js.map +1 -0
- package/dist/runtime/tool-policy-runtime.d.ts +8 -0
- package/dist/runtime/tool-policy-runtime.d.ts.map +1 -1
- package/dist/runtime/tool-policy-runtime.js +171 -30
- package/dist/runtime/tool-policy-runtime.js.map +1 -1
- package/dist/session-adapter.d.ts +13 -0
- package/dist/session-adapter.d.ts.map +1 -1
- package/dist/session-adapter.js +110 -0
- package/dist/session-adapter.js.map +1 -1
- package/dist/session-usage.d.ts +65 -0
- package/dist/session-usage.d.ts.map +1 -0
- package/dist/session-usage.js +134 -0
- package/dist/session-usage.js.map +1 -0
- package/dist/subagent/fingerprints.d.ts +3 -15
- package/dist/subagent/fingerprints.d.ts.map +1 -1
- package/dist/subagent/fingerprints.js +5 -69
- package/dist/subagent/fingerprints.js.map +1 -1
- package/dist/subagent/index.d.ts +2 -0
- package/dist/subagent/index.d.ts.map +1 -1
- package/dist/subagent/index.js +2 -0
- package/dist/subagent/index.js.map +1 -1
- package/dist/subagent-host.d.ts +2 -2
- package/dist/subagent-host.d.ts.map +1 -1
- package/dist/subagent-host.js +13 -1
- package/dist/subagent-host.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/web-editor/client-script.generated.d.ts.map +1 -1
- package/dist/web-editor/client-script.generated.js +1 -1
- package/dist/web-editor/client-script.generated.js.map +1 -1
- package/dist/web-editor/client-styles.generated.d.ts.map +1 -1
- package/dist/web-editor/client-styles.generated.js +1 -1
- package/dist/web-editor/client-styles.generated.js.map +1 -1
- package/dist/web-editor/server.d.ts.map +1 -1
- package/dist/web-editor/server.js +152 -4
- package/dist/web-editor/server.js.map +1 -1
- package/dist/web-editor/styles.d.ts.map +1 -1
- package/dist/web-editor/styles.js +476 -149
- package/dist/web-editor/styles.js.map +1 -1
- package/dist/web-editor/types.d.ts +81 -1
- package/dist/web-editor/types.d.ts.map +1 -1
- package/dist/web-host.d.ts +7 -0
- package/dist/web-host.d.ts.map +1 -1
- package/dist/web-host.js +168 -5
- package/dist/web-host.js.map +1 -1
- package/dist/workspace.d.ts +11 -0
- package/dist/workspace.d.ts.map +1 -1
- package/dist/workspace.js +63 -5
- package/dist/workspace.js.map +1 -1
- package/docs/README.md +4 -0
- package/docs/design/README.md +3 -1
- package/docs/design/architecture-0.5.md +22 -0
- package/docs/design/archive/2026-09-12-system-update-design.md +229 -0
- package/docs/design/pi-forge-system-update-design-notes.md +157 -229
- package/docs/development/release.md +20 -20
- package/docs/development/roadmap.md +17 -2
- package/docs/development/scoped-global-profiles-stacks.md +1 -1
- package/docs/development/setup.md +1 -1
- package/docs/getting-started.md +1 -1
- package/docs/guides/delegation.md +22 -20
- package/docs/guides/migrating-to-0.5.md +29 -0
- package/docs/guides/use-cases.md +6 -2
- package/docs/guides/web-editor.md +73 -5
- package/docs/reference/active-state.md +77 -0
- package/docs/reference/capabilities.md +259 -0
- package/docs/reference/commands.md +52 -24
- package/docs/reference/configuration.md +4 -2
- package/docs/reference/features.md +70 -4
- package/docs/reference/provider-support.md +67 -0
- package/docs/reference/public-api.md +49 -3
- package/docs/reference/session-cache.md +112 -0
- package/docs/reference/stack-schema.md +18 -4
- package/docs/reference/subagent-host-port.md +8 -0
- package/docs/zh-CN/README.md +3 -0
- package/docs/zh-CN/getting-started.md +1 -1
- package/docs/zh-CN/guides/delegation.md +22 -10
- package/docs/zh-CN/guides/migrating-to-0.5.md +29 -0
- package/docs/zh-CN/guides/web-editor.md +74 -7
- package/docs/zh-CN/reference/capabilities.md +259 -0
- package/docs/zh-CN/reference/commands.md +61 -33
- package/docs/zh-CN/reference/provider-support.md +67 -0
- package/docs/zh-CN/reference/session-cache.md +112 -0
- package/examples/capabilities/review.json +12 -0
- package/examples/capabilities/write-tools.json +15 -0
- package/examples/read-first-worker-prompt-stack.json +49 -0
- package/package.json +16 -9
package/dist/workspace.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { type AgentProfileProvenance, type LoadedAgentProfile } from "./agent-profile.ts";
|
|
2
|
+
import type { LoadedCapability } from "./codecs/capability.ts";
|
|
2
3
|
import type { LoadedPromptStack, PromptStackDiagnostic } from "./types.ts";
|
|
3
4
|
import { ForgeHost, type ForgeHostPortResult, type ForgeHostTransport } from "./subagent/host-port.ts";
|
|
4
5
|
export interface ForgeWorkspaceSnapshot {
|
|
5
6
|
cwd: string;
|
|
6
7
|
stacks: readonly LoadedPromptStack[];
|
|
7
8
|
profiles: readonly LoadedAgentProfile[];
|
|
9
|
+
capabilities: readonly LoadedCapability[];
|
|
8
10
|
activeStackId: string | null;
|
|
9
11
|
active?: LoadedPromptStack;
|
|
10
12
|
lastAppliedProfile?: AgentProfileProvenance;
|
|
@@ -30,8 +32,17 @@ export declare class ForgeWorkspace {
|
|
|
30
32
|
private readonly extensionState;
|
|
31
33
|
private current?;
|
|
32
34
|
private host?;
|
|
35
|
+
private readonly listeners;
|
|
33
36
|
get snapshotKnown(): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Subscribe to coherent snapshot publications. Listeners are optional and
|
|
39
|
+
* must never alter workspace/compilation behavior, so a throwing listener is
|
|
40
|
+
* isolated and does not prevent later listeners from running.
|
|
41
|
+
*/
|
|
42
|
+
subscribe(listener: () => void): () => void;
|
|
43
|
+
private notifyListeners;
|
|
34
44
|
reload(cwd: string, options?: ForgeWorkspaceReloadOptions): ForgeWorkspaceSnapshot;
|
|
45
|
+
reloadCapabilities(cwd: string, trusted?: boolean): ForgeWorkspaceSnapshot;
|
|
35
46
|
reloadProfiles(cwd: string, trusted?: boolean): ForgeWorkspaceSnapshot;
|
|
36
47
|
loadExtensions(cwd: string): Promise<{
|
|
37
48
|
diagnostics: PromptStackDiagnostic[];
|
package/dist/workspace.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,sBAAsB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
package/dist/workspace.js
CHANGED
|
@@ -2,6 +2,7 @@ import { createResourceCatalog } from "./catalog.js";
|
|
|
2
2
|
import { hasAgentProfileErrors } from "./agent-profile.js";
|
|
3
3
|
import { readAgentProfilesScoped, readGlobalAgentProfiles } from "./repositories/agent-profile.js";
|
|
4
4
|
import { readGlobalPromptStacks, readPromptStacksScoped } from "./repositories/prompt-stack.js";
|
|
5
|
+
import { readGlobalCapabilities, readCapabilitiesScoped } from "./repositories/capability.js";
|
|
5
6
|
import { chooseDefaultStack, isDisabledPromptStackId } from "./loader.js";
|
|
6
7
|
import { formatResourceKey, parseResourceSelector } from "./resource-identity.js";
|
|
7
8
|
import { createForgeExtensionState, reloadForgeExtensions, unloadForgeExtensions } from "./forge-extensions.js";
|
|
@@ -19,9 +20,36 @@ export class ForgeWorkspace {
|
|
|
19
20
|
extensionState = createForgeExtensionState();
|
|
20
21
|
current;
|
|
21
22
|
host;
|
|
23
|
+
listeners = new Set();
|
|
22
24
|
get snapshotKnown() {
|
|
23
25
|
return this.current !== undefined;
|
|
24
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Subscribe to coherent snapshot publications. Listeners are optional and
|
|
29
|
+
* must never alter workspace/compilation behavior, so a throwing listener is
|
|
30
|
+
* isolated and does not prevent later listeners from running.
|
|
31
|
+
*/
|
|
32
|
+
subscribe(listener) {
|
|
33
|
+
this.listeners.add(listener);
|
|
34
|
+
let removed = false;
|
|
35
|
+
return () => {
|
|
36
|
+
if (removed)
|
|
37
|
+
return;
|
|
38
|
+
removed = true;
|
|
39
|
+
this.listeners.delete(listener);
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
notifyListeners() {
|
|
43
|
+
for (const listener of [...this.listeners]) {
|
|
44
|
+
try {
|
|
45
|
+
listener();
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Optional observers (for example the active-state publisher) must not
|
|
49
|
+
// break Forge compilation, tool policy, or provider behavior.
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
25
53
|
reload(cwd, options = {}) {
|
|
26
54
|
const trusted = options.trusted !== false;
|
|
27
55
|
const stacks = trusted ? readPromptStacksScoped(cwd) : readGlobalPromptStacks();
|
|
@@ -36,6 +64,10 @@ export class ForgeWorkspace {
|
|
|
36
64
|
cwd,
|
|
37
65
|
stacks,
|
|
38
66
|
profiles,
|
|
67
|
+
// Populate completion/catalog data on explicit workspace reload, not on
|
|
68
|
+
// keystrokes. Active snapshots are still restored from session history,
|
|
69
|
+
// never reconstructed from these current library definitions.
|
|
70
|
+
capabilities: trusted ? readCapabilitiesScoped(cwd) : readGlobalCapabilities(),
|
|
39
71
|
activeStackId,
|
|
40
72
|
active,
|
|
41
73
|
lastAppliedProfile: options.lastAppliedProfile ?? this.current?.lastAppliedProfile,
|
|
@@ -44,8 +76,15 @@ export class ForgeWorkspace {
|
|
|
44
76
|
capturedAt: new Date().toISOString(),
|
|
45
77
|
};
|
|
46
78
|
this.current = deepFreeze(structuredClone(snapshot));
|
|
79
|
+
this.notifyListeners();
|
|
47
80
|
return this.current;
|
|
48
81
|
}
|
|
82
|
+
reloadCapabilities(cwd, trusted = true) {
|
|
83
|
+
if (!this.current || this.current.cwd !== cwd)
|
|
84
|
+
throw new Error("Forge workspace does not match this session.");
|
|
85
|
+
const capabilities = trusted ? readCapabilitiesScoped(cwd) : readGlobalCapabilities();
|
|
86
|
+
return this.publish({ ...this.current, capabilities, capturedAt: new Date().toISOString() });
|
|
87
|
+
}
|
|
49
88
|
reloadProfiles(cwd, trusted = true) {
|
|
50
89
|
if (!this.current)
|
|
51
90
|
throw new Error("ForgeWorkspace has not been reloaded.");
|
|
@@ -280,11 +319,29 @@ export class ForgeWorkspace {
|
|
|
280
319
|
};
|
|
281
320
|
}
|
|
282
321
|
dispose() {
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
322
|
+
// Attempt every teardown step, then release the owned state in a finally so
|
|
323
|
+
// an optional host transport or extension disposal failure cannot leave a
|
|
324
|
+
// half-live workspace behind. The first error still propagates.
|
|
325
|
+
let firstError;
|
|
326
|
+
try {
|
|
327
|
+
this.disposeExtensions();
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
firstError = error;
|
|
331
|
+
}
|
|
332
|
+
try {
|
|
333
|
+
if (this.host?.isLive)
|
|
334
|
+
this.host.stop();
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
firstError ??= error;
|
|
338
|
+
}
|
|
339
|
+
finally {
|
|
340
|
+
this.host = undefined;
|
|
341
|
+
this.current = undefined;
|
|
342
|
+
}
|
|
343
|
+
if (firstError !== undefined)
|
|
344
|
+
throw firstError;
|
|
288
345
|
}
|
|
289
346
|
resolveActive(stacks, options) {
|
|
290
347
|
if (options.suppressAutoActivate && options.activeStackId == null)
|
|
@@ -306,6 +363,7 @@ export class ForgeWorkspace {
|
|
|
306
363
|
}
|
|
307
364
|
publish(next) {
|
|
308
365
|
this.current = deepFreeze(structuredClone(next));
|
|
366
|
+
this.notifyListeners();
|
|
309
367
|
return this.current;
|
|
310
368
|
}
|
|
311
369
|
get extensionDiagnostics() {
|
package/dist/workspace.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
|
package/docs/README.md
CHANGED
|
@@ -22,11 +22,15 @@ Use this page as the documentation map. Each subject has one authoritative home;
|
|
|
22
22
|
## Reference
|
|
23
23
|
|
|
24
24
|
- [Commands](reference/commands.md)
|
|
25
|
+
- [Capabilities](reference/capabilities.md)
|
|
26
|
+
- [Session cache usage](reference/session-cache.md) — prompt-cache hit rates and nested-usage contract
|
|
27
|
+
- [Provider support for mid-conversation updates](reference/provider-support.md) — Pi 0.87.1 snapshot
|
|
25
28
|
- [Preset schema and policy](reference/stack-schema.md)
|
|
26
29
|
- [Macros and runtime slots](reference/macros-and-slots.md)
|
|
27
30
|
- [Configuration](reference/configuration.md)
|
|
28
31
|
- [Implemented feature inventory](reference/features.md)
|
|
29
32
|
- [Public API policy](reference/public-api.md)
|
|
33
|
+
- [Active-state bus contract](reference/active-state.md)
|
|
30
34
|
- [Experimental subagent host port contract](reference/subagent-host-port.md)
|
|
31
35
|
- [Experimental UI contribution port contract](reference/ui-contribution-port.md)
|
|
32
36
|
|
package/docs/design/README.md
CHANGED
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
The active plan defines the executable forward-looking work. Archived documents preserve the long-term target, decisions, reviews, spikes, and implementation history; they are not the authoritative description of current user behavior. Use the [guides](../README.md#guides) and [reference](../README.md#reference) for released behavior.
|
|
6
6
|
|
|
7
|
-
## Active 0.5
|
|
7
|
+
## Active lean 0.5 plan
|
|
8
8
|
|
|
9
9
|
- [Lean 0.5.0 architecture plan](architecture-0.5.md) — executable breaking-cleanup scope, accepted decisions, implementation lanes, and release gates.
|
|
10
10
|
- [Architecture and development rules](../development/architecture-rules.md) — dependency direction and ownership rules for the full target.
|
|
11
11
|
- [Architecture decision template](decision-template.md) — structure for future boundary/product decisions.
|
|
12
|
+
- [Capabilities (0.5.5)](pi-forge-system-update-design-notes.md) — accepted staged implementation; foundation and human CLI core implemented, Preset authorization/Agent control and UI remain later lanes.
|
|
13
|
+
- [September 12 system-update proposal](archive/2026-09-12-system-update-design.md) — historical upstream-blocked thin-sections design, superseded by the 0.86 spike.
|
|
12
14
|
|
|
13
15
|
## Archived 0.5 full proposal
|
|
14
16
|
|
|
@@ -55,6 +55,28 @@ Two small product increments, both consistent with existing invariants:
|
|
|
55
55
|
4. **Per-rule regex frequency.** Regex rules gain `frequency: "turn" | "request"` (default `"turn"`, preserving 0.5.1 behavior). On tool-result follow-up requests — where the stack layout rewrite is deliberately skipped — `frequency: "request"` outgoing message rules apply to Pi's full natural context. Each provider request is rebuilt from the transcript, so re-application is wire-consistent and never doubled. The option is meaningful only for `effect: "outgoing"` rules that target messages (history stage, or compiled stage with a `messages` target); other combinations produce validation warnings.
|
|
56
56
|
5. **Finalize role extension.** The 0.5.0 "assistant roles only" finalize constraint is relaxed: a finalize rule whose `roles` explicitly includes `"toolResult"` also rewrites stored tool-result messages at `message_end` (which Pi emits and persists for user/assistant/toolResult, before the follow-up request — so the wire inherits the scrubbed transcript). Rules without `roles` keep assistant-only behavior; `frequency` has no meaning for storage-time finalize and produces a validation warning. This remains a documented, user-enabled destructive transform, and user-role messages stay out of scope.
|
|
57
57
|
|
|
58
|
+
## Accepted 0.5.5 amendment: session capabilities
|
|
59
|
+
|
|
60
|
+
The prior new-prompt-feature freeze is lifted only for the authorized [capability design](pi-forge-system-update-design-notes.md). Definitions are reusable JSON resources; Presets bind and authorize them; active state is reduced from Session events. Forge owns recoverable rule projection, while Pi retains ordinary message/provider/tool execution protocols. The real Pi 0.86 spike invalidated the previously proposed retained-sections thin bridge.
|
|
61
|
+
|
|
62
|
+
The first lane adds only characterization tests, codecs/finite overrides, pure owner-scope binding resolution and immutable event snapshots/reduction. Resource discovery, live Preset schema, request projection, recovery, executable-tool integration and CLI/Agent/UI surfaces follow in their explicit lanes; adding their data types is not delivery of those features. `ForgeWorkspace` remains the resource owner, `tool-policy-runtime` the single tool-selection owner, and the existing canonical fingerprint algorithm is shared without changing subagent wire values. No package entry point, framework, native Pi fork, new database, or independently editable projection state is introduced.
|
|
63
|
+
|
|
64
|
+
Each coherent lane requires full verification. Project Pi dependency/minimum-version changes and migration notes are intentional steps of the core integration lane, not implicit host upgrades. The owner's current instruction permits local development but not commits, push, publish, reload or deployment; this supersedes the historical commit-at-lane-end convention below for this work.
|
|
65
|
+
|
|
66
|
+
### 2026-09-20 usability follow-up
|
|
67
|
+
|
|
68
|
+
After successful human CLI dogfooding, the owner approved bringing Session observability forward: a Web activity panel reads a derived view from the capability runtime and sends human disable/reset through the same coordinator. It does not introduce a persisted state store, a new package port, binding authorization, or a capability-library editor. Mutations are fenced by session/leaf/revision (including the runtime instance), and stale/retired hosts fail closed. Browser polling is local and never starts inference. Compaction-input characterization may run alongside this UI lane, but summary placement and semantic-model behavior require experiments before changing the projection design.
|
|
69
|
+
|
|
70
|
+
### Pi 0.87 migration amendment
|
|
71
|
+
|
|
72
|
+
In Pi 0.87, standard `context` lifecycle hooks intentionally exclude System messages. Forge aligns with Pi 0.87 transcript and projection architecture through the following invariants:
|
|
73
|
+
|
|
74
|
+
1. **Unified `context_with_system` pipeline:** The entire compiler, base prompt replacement, and capability projection pipeline moved from `context` to `context_with_system` without an internal two-phase split.
|
|
75
|
+
2. **Canonical session projection (`buildSessionProjection`):** Runtime execution, Preview, and anchor helpers build against Pi 0.87's `buildSessionProjection` (handling `context_edit` omissions, replacements, and `sourceEntry`), ensuring ephemeral prompt requests reflect turn edits without modifying raw session history on disk.
|
|
76
|
+
3. **Leading System preservation:** The SDK's incoming leading System message always remains first; Forge's own prefix plain metadata anchors are inserted immediately after it.
|
|
77
|
+
4. **Settlement lifecycle and continuations:** `agent_end` remains a safe anchor opportunity to commit uncommitted anchors after tool execution or turn completion. However, the compile cycle and busy fence reset only on `agent_settled`, ensuring `agent_before_settle` continuations do not lose compiled Preset inputs.
|
|
78
|
+
5. **Compatibility baseline:** Repo dev SDK is pinned to `0.87.0` with peer range `>=0.87.0 <0.88.0` (no dual 0.86 runtime support claim; development package version remains 0.5.4; 0.5.5 is not published; parent build and full verification passed on Pi 0.87.0 (754 Node / 35 browser)). Upstream metadata chunking and semantic-cut defects remain unfixed upstream; legacy session carriers remain untouched, and Oh My Pi (OMP) is not supported or promised.
|
|
79
|
+
|
|
58
80
|
## Extension port contract (0.5.0)
|
|
59
81
|
|
|
60
82
|
The 0.5.0 extension contract is part of the breaking release. It is a trusted-extension port, not a security boundary.
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# pi-forge `system_update` Design Notes
|
|
2
|
+
|
|
3
|
+
**Status:** Current plan (revised 2026-09-12). Supersedes the 2026-09-10
|
|
4
|
+
exploration draft, which assumed pi-forge would implement the full
|
|
5
|
+
persistence/projection/transport stack itself. Upstream Pi has since started
|
|
6
|
+
building the primitive natively, so pi-forge's scope shrinks to the
|
|
7
|
+
workflow layer.
|
|
8
|
+
|
|
9
|
+
**Target:** 0.5.5+, blocked on an upstream Pi redo (see §2).
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. TL;DR — Current Plan
|
|
14
|
+
|
|
15
|
+
`system_update` is a **session-timeline event**, not a mutation of the
|
|
16
|
+
top-level system prompt. That core decision from the original draft survives.
|
|
17
|
+
What changed is who builds what:
|
|
18
|
+
|
|
19
|
+
- **Upstream Pi is building the primitive**: a first-class `SystemMessage`
|
|
20
|
+
(`role: "system"`) appended to the transcript, rendered natively on models
|
|
21
|
+
that support mid-conversation system messages and as a tagged user turn
|
|
22
|
+
elsewhere. Persistence, resume, compaction, and provider rendering are all
|
|
23
|
+
owned by the harness.
|
|
24
|
+
- **pi-forge builds only the workflow layer**: an append-only event log, a
|
|
25
|
+
reducer over it, the `/system-update` command family, preset-declared
|
|
26
|
+
dormant instruction blocks, and a permission-gated agent tool.
|
|
27
|
+
- **Integration is declarative**: pi-forge renders its active update set into
|
|
28
|
+
`systemPromptOptions.sections` and lets the harness diff engine emit the
|
|
29
|
+
deltas. pi-forge no longer returns a fully-compiled replacement string for
|
|
30
|
+
this path.
|
|
31
|
+
|
|
32
|
+
Discarded from the original draft: the custom-entry + self-written projector
|
|
33
|
+
design, the `custom_message` transport, the provider transport matrix, and
|
|
34
|
+
the six-phase rollout. See §5 for why.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. Upstream Landscape (snapshot 2026-09-12)
|
|
39
|
+
|
|
40
|
+
### 2.1 The PRs
|
|
41
|
+
|
|
42
|
+
- **PR #9116** (`system-role` branch, pi-ai layer): adds `SystemMessage` to
|
|
43
|
+
the `Message` union. Appended to the transcript, never folded into
|
|
44
|
+
`Context.systemPrompt`. Persisted as ordinary message entries; compaction
|
|
45
|
+
cut points and summaries understand them (rendered as `[System]:` in
|
|
46
|
+
summaries); interactive mode hides them.
|
|
47
|
+
- **PR #9117** (`system-tool-deltas` branch, stacked, coding-agent layer):
|
|
48
|
+
the first rendered prompt of a session becomes a stored **baseline**;
|
|
49
|
+
anything that changes afterwards is appended as a provider-neutral system
|
|
50
|
+
message delta. On resume/tree navigation the stored baseline is reinstated
|
|
51
|
+
so a resumed session sends byte-identical cached prefixes. After
|
|
52
|
+
compaction, the effective prompt folds into a fresh baseline at no extra
|
|
53
|
+
cost.
|
|
54
|
+
|
|
55
|
+
**Both PRs were closed by the author on 2026-09-11 with "I will redo this."**
|
|
56
|
+
Direction is alive; implementation is being redone; timeline unknown.
|
|
57
|
+
Community testing (13-scenario harness, all green) flagged two design
|
|
58
|
+
issues likely motivating the redo: ~10 KB per-prompt-entry session bloat
|
|
59
|
+
from storing rendered baselines, and silent tool disappearance on
|
|
60
|
+
non-supporting models across resume.
|
|
61
|
+
|
|
62
|
+
### 2.2 Verified behavior of the PR branch (local clone: `~/programming/pi-pr9117`)
|
|
63
|
+
|
|
64
|
+
Measured against the actual `system-tool-deltas` build:
|
|
65
|
+
|
|
66
|
+
- `sections: Record<string, string>` on `systemPromptOptions` renders as
|
|
67
|
+
XML-wrapped blocks (`<name>\n...\n</name>`), diff-keyed as `section:name`.
|
|
68
|
+
- `diffSystemPrompts` behavior matrix:
|
|
69
|
+
- identical pieces → `unchanged` (no cost)
|
|
70
|
+
- section added → update delta: "The following `<name>` system guidance
|
|
71
|
+
now applies: ..."
|
|
72
|
+
- section removed → retraction: "The previous `<name>` system guidance no
|
|
73
|
+
longer applies."
|
|
74
|
+
- section content changed → "The `<name>` system guidance has changed. The
|
|
75
|
+
following supersedes..."
|
|
76
|
+
- literals changed or `forceSystemPrompt` changed → `replace`
|
|
77
|
+
(deliberate full cache miss)
|
|
78
|
+
- **`forceSystemPrompt` short-circuits everything**: when set, pieces are
|
|
79
|
+
only the forced prompt; sections are not rendered at all. Any extension
|
|
80
|
+
returning a full replacement string from `before_agent_start` gets this
|
|
81
|
+
path, and every content change is a full prefix miss.
|
|
82
|
+
- **`customPrompt` is a value piece** (keyed `customPrompt`, diff-friendly)
|
|
83
|
+
and does NOT short-circuit sections. This is pi-forge's integration point
|
|
84
|
+
for `mode = replace` stacks.
|
|
85
|
+
- Mid-run timing: the diff runs before every LLM request
|
|
86
|
+
(`agent-loop.ts`), including mid-tool-loop, so an agent tool that mutates
|
|
87
|
+
sections gets its delta delivered after the tool batch and before the next
|
|
88
|
+
inference. The tool-call adjacency problem from the original draft is
|
|
89
|
+
handled by the harness.
|
|
90
|
+
- Fallback rendering for unsupported providers:
|
|
91
|
+
`<system_update>\n{text}\n</system_update>` as a user-role message
|
|
92
|
+
(`pi-ai/utils/system-messages.ts`); Gemini confirmed user-role.
|
|
93
|
+
- Native support matrix (upstream compat flags): Anthropic Opus 4.8/5,
|
|
94
|
+
Fable 5/5.1, Mythos 5/5.1 get real system messages (Anthropic requires a
|
|
95
|
+
system message to directly precede an assistant turn; pending messages are
|
|
96
|
+
held). OpenAI transports get `developer`/`system` items. Everything else
|
|
97
|
+
gets the tagged user turn.
|
|
98
|
+
- `BeforeAgentStartEventResult.message` only accepts `CustomMessage`
|
|
99
|
+
(customType/content/display/details) — there is **no imperative
|
|
100
|
+
append-SystemMessage extension API** in the PR as written. The declarative
|
|
101
|
+
sections path is the intended extension surface.
|
|
102
|
+
- The PR branch itself had two TypeScript errors (`openrouter.ts`,
|
|
103
|
+
`xai.ts`) when we built it; dist artifacts were still produced.
|
|
104
|
+
|
|
105
|
+
### 2.3 Trigger to resume this work
|
|
106
|
+
|
|
107
|
+
When the redone PR appears: verify the sections/diff semantics survived the
|
|
108
|
+
redo (re-run the §2.2 matrix), then wire pi-forge's workflow layer to it.
|
|
109
|
+
If the redo removes the declarative sections surface, reassess; the escape
|
|
110
|
+
hatch is splicing `SystemMessage` in the context hook (see §5).
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 3. pi-forge Design (workflow layer)
|
|
115
|
+
|
|
116
|
+
These decisions survive from the original draft and remain the plan.
|
|
117
|
+
|
|
118
|
+
### 3.1 Event model
|
|
119
|
+
|
|
120
|
+
- Updates are **append-only custom session entries**
|
|
121
|
+
(`pi-forge-system-update`, schemaVersion 1), written via the existing
|
|
122
|
+
`session-adapter.ts` pattern (`pi.appendEntry` / `getCurrentBranchEntries`).
|
|
123
|
+
Branch semantics come for free.
|
|
124
|
+
- Entry payload: `{ updateId, op: "apply" | "revoke" | "reset", source,
|
|
125
|
+
presetId?, contentSnapshot, createdAt }`.
|
|
126
|
+
- **Snapshot content, not file paths**: file-backed presets are rendered at
|
|
127
|
+
activation time and the rendered text is persisted. Editing a preset file
|
|
128
|
+
tomorrow must not alter yesterday's session.
|
|
129
|
+
- Logical state is a **reducer view** over the branch's events, never
|
|
130
|
+
canonical mutable state. Powers `/system-update status`, badges, and
|
|
131
|
+
section rendering.
|
|
132
|
+
- Revoke/reset are new events, never history rewrites. In practice the
|
|
133
|
+
harness retraction wording ("no longer applies") is generated for us once
|
|
134
|
+
the section disappears; the event log only records intent.
|
|
135
|
+
|
|
136
|
+
### 3.2 Rendering (the declarative bridge)
|
|
137
|
+
|
|
138
|
+
- The reducer's active set is rendered into
|
|
139
|
+
`systemPromptOptions.sections["pi-forge-update-<id>"]` during
|
|
140
|
+
`before_agent_start` (and picked up mid-run by the harness's per-request
|
|
141
|
+
diff).
|
|
142
|
+
- pi-forge's stack compilation moves off the legacy "return one big string"
|
|
143
|
+
path: `mode = replace` stacks go into `systemPromptOptions.customPrompt`,
|
|
144
|
+
additive content into keyed `sections`. This is a prerequisite refactor,
|
|
145
|
+
and it upgrades cache behavior for the whole stack system, not just
|
|
146
|
+
updates.
|
|
147
|
+
- Transport is not pi-forge's concern: native vs fallback rendering is the
|
|
148
|
+
harness's compatibility layer.
|
|
149
|
+
|
|
150
|
+
### 3.3 Commands
|
|
151
|
+
|
|
152
|
+
- `/system-update <text>` — apply a freeform update (auto-id `update-N`).
|
|
153
|
+
- `/system-update status` — reducer view of active updates.
|
|
154
|
+
- `/system-update reset` — deactivate all (new event, append-only).
|
|
155
|
+
- 0.5.5+ with presets: `/system-update list|use <id>|off <id>`.
|
|
156
|
+
- No command deletes history. None of these trigger an agent turn.
|
|
157
|
+
|
|
158
|
+
### 3.4 Presets and the agent tool
|
|
159
|
+
|
|
160
|
+
- Presets declare dormant runtime blocks:
|
|
161
|
+
`{ "systemUpdates": [{ "id", "name", "description", "modelCallable",
|
|
162
|
+
"content" | "file" }] }`.
|
|
163
|
+
- The base system prompt carries only a compact inventory; full blocks load
|
|
164
|
+
on activation (lazy privileged prompt loading).
|
|
165
|
+
- Agent-facing tool `forge_system_update({action, id})` references declared
|
|
166
|
+
preset IDs only. **No arbitrary file elevation, no arbitrary agent-provided
|
|
167
|
+
privileged text.** Repository content is untrusted; elevation requires an
|
|
168
|
+
explicit preset declaration.
|
|
169
|
+
- Source-aware deactivation: the agent may only deactivate agent-activated
|
|
170
|
+
modes; the user may deactivate anything.
|
|
171
|
+
- Mid-turn activation rides the harness's per-request diff — no
|
|
172
|
+
pending-commit machinery on our side.
|
|
173
|
+
|
|
174
|
+
### 3.5 Compaction, resume, branching
|
|
175
|
+
|
|
176
|
+
All owned by the harness under the new architecture: update sections are part
|
|
177
|
+
of the effective prompt, folded into the post-compaction baseline; stored
|
|
178
|
+
baseline is reinstated on resume; events live on the branch. pi-forge's only
|
|
179
|
+
job is to re-derive the active set from the branch's event log on session
|
|
180
|
+
start/branch switch (same restore pattern as the active-stack state today).
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 4. Version Plan
|
|
185
|
+
|
|
186
|
+
- **0.5.4 (done, pushed):** web editor fixes and visual work; prompt-cache
|
|
187
|
+
features — cache-impact warning on `/preset use` / `/profile use`
|
|
188
|
+
(common-prefix estimate + last-request cacheRead), and compile-time
|
|
189
|
+
diagnostics for cache-sensitive content (`{{time}}`, date slots with
|
|
190
|
+
`includeTime`, `{{date}}` info).
|
|
191
|
+
- **0.5.5:** system update workflow layer per §3, gated on the upstream redo
|
|
192
|
+
landing in a released Pi. Build the upstream-touching code behind a small
|
|
193
|
+
isolated module so a redo API change rewrites one file, not the feature.
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## 5. Discarded Designs (recorded so we don't re-litigate)
|
|
198
|
+
|
|
199
|
+
- **Custom entry + self-written projector** (original draft's main design):
|
|
200
|
+
required replicating Pi's session-entry→context translation rules
|
|
201
|
+
(compaction truncation, deferred-message filtering) to compute splice
|
|
202
|
+
positions, plus a compaction checkpoint synthesizer. Real maintenance
|
|
203
|
+
coupling to Pi internals. Killed by the upstream `SystemMessage`.
|
|
204
|
+
- **`pi.sendMessage` custom_message transport**: zero projection code, but
|
|
205
|
+
`custom_message` entries evaporate at compaction (the compaction path
|
|
206
|
+
doesn't recognize them) and render only as user-role. Viable fallback if
|
|
207
|
+
the upstream redo dies entirely; otherwise obsolete.
|
|
208
|
+
- **Provider transport matrix / native lowering in pi-forge**: the wire role
|
|
209
|
+
is the harness's compatibility layer. pi-forge stores semantics
|
|
210
|
+
(`op`, `presetId`) so a future transport change needs no data migration.
|
|
211
|
+
- **Context-hook SystemMessage splicing**: possible once upstream keeps
|
|
212
|
+
`role: "system"` messages, but brings back per-request projection, position
|
|
213
|
+
mapping, and Anthropic placement-rule handling. Escape hatch only.
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## 6. Open Questions for the Redo
|
|
218
|
+
|
|
219
|
+
1. Did sections survive the redo, and did their diff semantics change?
|
|
220
|
+
2. Is there an imperative append path for extensions after all, or is
|
|
221
|
+
declarative sections still the only surface?
|
|
222
|
+
3. How does the redo store baselines (the session-bloat feedback)?
|
|
223
|
+
4. Does `customPrompt` remain a non-short-circuiting value piece?
|
|
224
|
+
5. Timing: which Pi release carries it, and what's our minimum-version
|
|
225
|
+
dependency story for the feature?
|
|
226
|
+
|
|
227
|
+
Community posture: when the redo PR opens, comment as a downstream consumer
|
|
228
|
+
with the runtime-instruction-modes use case (do not file a new issue;
|
|
229
|
+
feature-request issues get auto-closed while a PR is in flight).
|