@zihanw/pi-forge 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -1
- package/README.md +11 -11
- package/README.zh-CN.md +4 -6
- package/SUBAGENT_ADAPTER_CONTRACT.md +3 -1
- package/dist/agent-profile.d.ts +21 -42
- package/dist/agent-profile.d.ts.map +1 -1
- package/dist/agent-profile.js +82 -194
- package/dist/agent-profile.js.map +1 -1
- package/dist/catalog.d.ts +27 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +59 -0
- package/dist/catalog.js.map +1 -0
- package/dist/codecs/agent-profile.d.ts +53 -0
- package/dist/codecs/agent-profile.d.ts.map +1 -0
- package/dist/codecs/agent-profile.js +176 -0
- package/dist/codecs/agent-profile.js.map +1 -0
- package/dist/codecs/index.d.ts +5 -0
- package/dist/codecs/index.d.ts.map +1 -0
- package/dist/codecs/index.js +3 -0
- package/dist/codecs/index.js.map +1 -0
- package/dist/codecs/prompt-stack.d.ts +18 -0
- package/dist/codecs/prompt-stack.d.ts.map +1 -0
- package/dist/codecs/prompt-stack.js +479 -0
- package/dist/codecs/prompt-stack.js.map +1 -0
- package/dist/compile-cycle.d.ts +18 -0
- package/dist/compile-cycle.d.ts.map +1 -0
- package/dist/compile-cycle.js +13 -0
- package/dist/compile-cycle.js.map +1 -0
- package/dist/compiler.d.ts +10 -4
- package/dist/compiler.d.ts.map +1 -1
- package/dist/compiler.js +53 -19
- package/dist/compiler.js.map +1 -1
- package/dist/extension-registry.d.ts.map +1 -1
- package/dist/extension-registry.js +5 -2
- package/dist/extension-registry.js.map +1 -1
- package/dist/forge-config.d.ts +2 -81
- package/dist/forge-config.d.ts.map +1 -1
- package/dist/forge-config.js +5 -280
- package/dist/forge-config.js.map +1 -1
- package/dist/forge-v1/analyzer.d.ts +3 -0
- package/dist/forge-v1/analyzer.d.ts.map +1 -0
- package/dist/forge-v1/analyzer.js +50 -0
- package/dist/forge-v1/analyzer.js.map +1 -0
- package/dist/forge-v1/index.d.ts +6 -0
- package/dist/forge-v1/index.d.ts.map +1 -0
- package/dist/forge-v1/index.js +13 -0
- package/dist/forge-v1/index.js.map +1 -0
- package/dist/forge-v1/parser.d.ts +3 -0
- package/dist/forge-v1/parser.d.ts.map +1 -0
- package/dist/forge-v1/parser.js +186 -0
- package/dist/forge-v1/parser.js.map +1 -0
- package/dist/forge-v1/renderer.d.ts +9 -0
- package/dist/forge-v1/renderer.d.ts.map +1 -0
- package/dist/forge-v1/renderer.js +181 -0
- package/dist/forge-v1/renderer.js.map +1 -0
- package/dist/forge-v1/types.d.ts +87 -0
- package/dist/forge-v1/types.d.ts.map +1 -0
- package/dist/forge-v1/types.js +4 -0
- package/dist/forge-v1/types.js.map +1 -0
- package/dist/index.d.ts +12 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -59
- package/dist/index.js.map +1 -1
- package/dist/lifecycle.d.ts +7 -5
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +44 -110
- package/dist/lifecycle.js.map +1 -1
- package/dist/loader.d.ts +16 -3
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +42 -440
- package/dist/loader.js.map +1 -1
- package/dist/macro-engine.d.ts +9 -14
- package/dist/macro-engine.d.ts.map +1 -1
- package/dist/macro-engine.js +5 -238
- package/dist/macro-engine.js.map +1 -1
- package/dist/payload-command.d.ts +6 -6
- package/dist/payload-command.d.ts.map +1 -1
- package/dist/payload-command.js.map +1 -1
- package/dist/payload-state.d.ts +16 -0
- package/dist/payload-state.d.ts.map +1 -0
- package/dist/payload-state.js +14 -0
- package/dist/payload-state.js.map +1 -0
- package/dist/preset-command.d.ts +4 -4
- package/dist/preset-command.d.ts.map +1 -1
- package/dist/preset-command.js +55 -98
- package/dist/preset-command.js.map +1 -1
- package/dist/preview.d.ts +4 -4
- package/dist/preview.d.ts.map +1 -1
- package/dist/preview.js +17 -8
- package/dist/preview.js.map +1 -1
- package/dist/profile-command.d.ts +2 -2
- package/dist/profile-command.d.ts.map +1 -1
- package/dist/profile-command.js +52 -26
- package/dist/profile-command.js.map +1 -1
- package/dist/profile-service.d.ts +5 -2
- package/dist/profile-service.d.ts.map +1 -1
- package/dist/profile-service.js +63 -42
- package/dist/profile-service.js.map +1 -1
- package/dist/prompt-analysis.d.ts +24 -0
- package/dist/prompt-analysis.d.ts.map +1 -0
- package/dist/prompt-analysis.js +84 -0
- package/dist/prompt-analysis.js.map +1 -0
- package/dist/prompt-runtime.d.ts +19 -0
- package/dist/prompt-runtime.d.ts.map +1 -0
- package/dist/prompt-runtime.js +30 -0
- package/dist/prompt-runtime.js.map +1 -0
- package/dist/regex.js +6 -12
- package/dist/regex.js.map +1 -1
- package/dist/render-helpers.d.ts +2 -10
- package/dist/render-helpers.d.ts.map +1 -1
- package/dist/render-helpers.js +3 -53
- package/dist/render-helpers.js.map +1 -1
- package/dist/repositories/agent-profile.d.ts +36 -0
- package/dist/repositories/agent-profile.d.ts.map +1 -0
- package/dist/repositories/agent-profile.js +153 -0
- package/dist/repositories/agent-profile.js.map +1 -0
- package/dist/repositories/index.d.ts +3 -0
- package/dist/repositories/index.d.ts.map +1 -0
- package/dist/repositories/index.js +3 -0
- package/dist/repositories/index.js.map +1 -0
- package/dist/repositories/prompt-stack.d.ts +57 -0
- package/dist/repositories/prompt-stack.d.ts.map +1 -0
- package/dist/repositories/prompt-stack.js +175 -0
- package/dist/repositories/prompt-stack.js.map +1 -0
- package/dist/resource-identity.d.ts +33 -0
- package/dist/resource-identity.d.ts.map +1 -0
- package/dist/resource-identity.js +56 -0
- package/dist/resource-identity.js.map +1 -0
- package/dist/runtime/profile-runtime.d.ts +2 -2
- package/dist/runtime/profile-runtime.d.ts.map +1 -1
- package/dist/runtime/profile-runtime.js +18 -10
- package/dist/runtime/profile-runtime.js.map +1 -1
- package/dist/runtime/prompt-stack-runtime.d.ts +5 -4
- package/dist/runtime/prompt-stack-runtime.d.ts.map +1 -1
- package/dist/runtime/prompt-stack-runtime.js +47 -52
- package/dist/runtime/prompt-stack-runtime.js.map +1 -1
- package/dist/runtime/tool-policy-runtime.d.ts +2 -2
- package/dist/runtime/tool-policy-runtime.d.ts.map +1 -1
- package/dist/runtime/tool-policy-runtime.js +3 -3
- package/dist/runtime/tool-policy-runtime.js.map +1 -1
- package/dist/session-adapter.d.ts +17 -0
- package/dist/session-adapter.d.ts.map +1 -0
- package/dist/session-adapter.js +57 -0
- package/dist/session-adapter.js.map +1 -0
- package/dist/slot-renderers.d.ts +16 -3
- package/dist/slot-renderers.d.ts.map +1 -1
- package/dist/slot-renderers.js +15 -63
- package/dist/slot-renderers.js.map +1 -1
- package/dist/stack-migration.d.ts +6 -0
- package/dist/stack-migration.d.ts.map +1 -1
- package/dist/stack-migration.js +49 -52
- package/dist/stack-migration.js.map +1 -1
- package/dist/storage.d.ts +10 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +45 -10
- package/dist/storage.js.map +1 -1
- package/dist/subagent/fingerprints.d.ts +24 -0
- package/dist/subagent/fingerprints.d.ts.map +1 -0
- package/dist/subagent/fingerprints.js +81 -0
- package/dist/subagent/fingerprints.js.map +1 -0
- package/dist/subagent/host-port.d.ts +296 -0
- package/dist/subagent/host-port.d.ts.map +1 -0
- package/dist/subagent/host-port.js +560 -0
- package/dist/subagent/host-port.js.map +1 -0
- package/dist/subagent/index.d.ts +10 -10
- package/dist/subagent/index.d.ts.map +1 -1
- package/dist/subagent/index.js +9 -10
- package/dist/subagent/index.js.map +1 -1
- package/dist/subagent-host.d.ts +99 -18
- package/dist/subagent-host.d.ts.map +1 -1
- package/dist/subagent-host.js +185 -162
- package/dist/subagent-host.js.map +1 -1
- package/dist/template-render.d.ts +18 -0
- package/dist/template-render.d.ts.map +1 -0
- package/dist/template-render.js +232 -0
- package/dist/template-render.js.map +1 -0
- package/dist/types.d.ts +43 -27
- 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 +32 -72
- 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 +13 -0
- package/dist/web-editor/styles.js.map +1 -1
- package/dist/web-editor/types.d.ts +10 -37
- package/dist/web-editor/types.d.ts.map +1 -1
- package/dist/web-host.d.ts +4 -2
- package/dist/web-host.d.ts.map +1 -1
- package/dist/web-host.js +110 -138
- package/dist/web-host.js.map +1 -1
- package/dist/workspace.d.ts +74 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +351 -0
- package/dist/workspace.js.map +1 -0
- package/docs/README.md +6 -4
- package/docs/concepts/agent-profiles.md +2 -2
- package/docs/concepts/prompt-stacks.md +12 -7
- package/docs/design/README.md +21 -3
- package/docs/design/architecture-0.5.md +211 -0
- package/docs/design/archive/0.5-full-proposal/0.5-consumer-audit.md +62 -0
- package/docs/design/archive/0.5-full-proposal/0.5-inventory.md +208 -0
- package/docs/design/archive/0.5-full-proposal/0.5-phase0-decision-drafts.md +237 -0
- package/docs/design/archive/0.5-full-proposal/README.md +12 -0
- package/docs/design/archive/0.5-full-proposal/architecture-0.5.md +423 -0
- package/docs/design/archive/0.5-full-proposal/host-discovery-spike.md +103 -0
- package/docs/design/archive/0.5-full-proposal/template-language-spike.md +156 -0
- package/docs/design/context-diff-plan.md +72 -0
- package/docs/design/decision-template.md +33 -0
- package/docs/design/roadmap-0.4-archive.md +1 -1
- package/docs/design/subagents/interface-design.md +1 -1
- package/docs/development/architecture-rules.md +148 -0
- package/docs/development/roadmap.md +39 -13
- package/docs/development/scoped-global-profiles-stacks.md +325 -0
- package/docs/development/setup.md +6 -4
- package/docs/getting-started.md +9 -6
- package/docs/guides/custom-macros-and-slots.md +8 -7
- package/docs/guides/debugging.md +1 -1
- package/docs/guides/delegation.md +25 -21
- package/docs/guides/migrating-to-0.5.md +107 -0
- package/docs/guides/use-cases.md +7 -11
- package/docs/guides/web-editor.md +7 -11
- package/docs/reference/commands.md +4 -3
- package/docs/reference/configuration.md +18 -17
- package/docs/reference/features.md +34 -79
- package/docs/reference/macros-and-slots.md +70 -49
- package/docs/reference/public-api.md +64 -17
- package/docs/reference/stack-schema.md +14 -9
- package/docs/reference/subagent-host-port.md +49 -0
- package/docs/zh-CN/README.md +3 -3
- package/docs/zh-CN/concepts/agent-profiles.md +4 -2
- package/docs/zh-CN/concepts/prompt-stacks.md +9 -7
- package/docs/zh-CN/getting-started.md +10 -7
- package/docs/zh-CN/guides/delegation.md +11 -13
- package/docs/zh-CN/guides/migrating-to-0.5.md +92 -0
- package/docs/zh-CN/guides/web-editor.md +7 -7
- package/docs/zh-CN/reference/commands.md +6 -3
- package/examples/custom-system-status-extension/README.md +3 -3
- package/examples/custom-system-status-extension/index.ts +2 -1
- package/examples/custom-system-status-extension/prompt-stack.json +4 -3
- package/examples/default-prompt-stack.json +9 -4
- package/examples/image-reader-prompt-stack.json +16 -26
- package/examples/reviewer-prompt-stack.json +13 -24
- package/package.json +101 -120
- package/dist/runtime/subagent-runtime.d.ts +0 -45
- package/dist/runtime/subagent-runtime.d.ts.map +0 -1
- package/dist/runtime/subagent-runtime.js +0 -335
- package/dist/runtime/subagent-runtime.js.map +0 -1
- package/dist/runtime-state.d.ts +0 -30
- package/dist/runtime-state.d.ts.map +0 -1
- package/dist/runtime-state.js +0 -17
- package/dist/runtime-state.js.map +0 -1
- package/dist/sillytavern-importer/items.d.ts +0 -3
- package/dist/sillytavern-importer/items.d.ts.map +0 -1
- package/dist/sillytavern-importer/items.js +0 -88
- package/dist/sillytavern-importer/items.js.map +0 -1
- package/dist/sillytavern-importer/macros.d.ts +0 -15
- package/dist/sillytavern-importer/macros.d.ts.map +0 -1
- package/dist/sillytavern-importer/macros.js +0 -141
- package/dist/sillytavern-importer/macros.js.map +0 -1
- package/dist/sillytavern-importer/prompt-order.d.ts +0 -6
- package/dist/sillytavern-importer/prompt-order.d.ts.map +0 -1
- package/dist/sillytavern-importer/prompt-order.js +0 -38
- package/dist/sillytavern-importer/prompt-order.js.map +0 -1
- package/dist/sillytavern-importer/regex.d.ts +0 -3
- package/dist/sillytavern-importer/regex.d.ts.map +0 -1
- package/dist/sillytavern-importer/regex.js +0 -275
- package/dist/sillytavern-importer/regex.js.map +0 -1
- package/dist/sillytavern-importer/report.d.ts +0 -21
- package/dist/sillytavern-importer/report.d.ts.map +0 -1
- package/dist/sillytavern-importer/report.js +0 -166
- package/dist/sillytavern-importer/report.js.map +0 -1
- package/dist/sillytavern-importer/types.d.ts +0 -106
- package/dist/sillytavern-importer/types.d.ts.map +0 -1
- package/dist/sillytavern-importer/types.js +0 -2
- package/dist/sillytavern-importer/types.js.map +0 -1
- package/dist/sillytavern-importer.d.ts +0 -5
- package/dist/sillytavern-importer.d.ts.map +0 -1
- package/dist/sillytavern-importer.js +0 -117
- package/dist/sillytavern-importer.js.map +0 -1
- package/dist/subagent/canonical.d.ts +0 -22
- package/dist/subagent/canonical.d.ts.map +0 -1
- package/dist/subagent/canonical.js +0 -24
- package/dist/subagent/canonical.js.map +0 -1
- package/dist/subagent/context.d.ts +0 -8
- package/dist/subagent/context.d.ts.map +0 -1
- package/dist/subagent/context.js +0 -125
- package/dist/subagent/context.js.map +0 -1
- package/dist/subagent/contract.d.ts +0 -10
- package/dist/subagent/contract.d.ts.map +0 -1
- package/dist/subagent/contract.js +0 -10
- package/dist/subagent/contract.js.map +0 -1
- package/dist/subagent/plan.d.ts +0 -18
- package/dist/subagent/plan.d.ts.map +0 -1
- package/dist/subagent/plan.js +0 -157
- package/dist/subagent/plan.js.map +0 -1
- package/dist/subagent/preflight.d.ts +0 -4
- package/dist/subagent/preflight.d.ts.map +0 -1
- package/dist/subagent/preflight.js +0 -108
- package/dist/subagent/preflight.js.map +0 -1
- package/dist/subagent/request.d.ts +0 -4
- package/dist/subagent/request.d.ts.map +0 -1
- package/dist/subagent/request.js +0 -122
- package/dist/subagent/request.js.map +0 -1
- package/dist/subagent/response.d.ts +0 -8
- package/dist/subagent/response.d.ts.map +0 -1
- package/dist/subagent/response.js +0 -155
- package/dist/subagent/response.js.map +0 -1
- package/dist/subagent/tools.d.ts +0 -4
- package/dist/subagent/tools.d.ts.map +0 -1
- package/dist/subagent/tools.js +0 -42
- package/dist/subagent/tools.js.map +0 -1
- package/dist/subagent/types.d.ts +0 -268
- package/dist/subagent/types.d.ts.map +0 -1
- package/dist/subagent/types.js +0 -3
- package/dist/subagent/types.js.map +0 -1
- package/dist/subagent/validation.d.ts +0 -35
- package/dist/subagent/validation.d.ts.map +0 -1
- package/dist/subagent/validation.js +0 -314
- package/dist/subagent/validation.js.map +0 -1
- package/dist/subagent-command.d.ts +0 -4
- package/dist/subagent-command.d.ts.map +0 -1
- package/dist/subagent-command.js +0 -246
- package/dist/subagent-command.js.map +0 -1
- package/dist/subagent-profile-tool.d.ts +0 -49
- package/dist/subagent-profile-tool.d.ts.map +0 -1
- package/dist/subagent-profile-tool.js +0 -124
- package/dist/subagent-profile-tool.js.map +0 -1
- package/dist/subagent-tool.d.ts +0 -53
- package/dist/subagent-tool.d.ts.map +0 -1
- package/dist/subagent-tool.js +0 -456
- package/dist/subagent-tool.js.map +0 -1
- package/docs/guides/sillytavern-import.md +0 -47
- package/docs/reference/subagent-adapter.md +0 -204
- package/examples/sillytavern-dm-writer-prompt-stack.json +0 -190
|
@@ -5,7 +5,8 @@ interface ForgeRegistrationApi {
|
|
|
5
5
|
name: string;
|
|
6
6
|
source?: string;
|
|
7
7
|
description?: string;
|
|
8
|
-
|
|
8
|
+
dependencies?: string[];
|
|
9
|
+
render: (ctx: { env: Record<string, unknown>; helpers: unknown }) => string;
|
|
9
10
|
}): () => void;
|
|
10
11
|
registerSlot(definition: {
|
|
11
12
|
name: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion":
|
|
2
|
+
"schemaVersion": 2,
|
|
3
3
|
"type": "pi-forge.prompt-stack",
|
|
4
4
|
"id": "custom-system-status",
|
|
5
5
|
"name": "Custom System Status",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"name": "CPU Load Macro",
|
|
13
13
|
"enabled": true,
|
|
14
14
|
"role": "system",
|
|
15
|
-
"content": "Current rough CPU load: {{cpuLoad}}"
|
|
15
|
+
"content": "Current rough CPU load: {{ extensions.cpuLoad }}"
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"kind": "slot",
|
|
@@ -35,5 +35,6 @@
|
|
|
35
35
|
"enabled": true,
|
|
36
36
|
"slot": "chat-history"
|
|
37
37
|
}
|
|
38
|
-
]
|
|
38
|
+
],
|
|
39
|
+
"parameters": {}
|
|
39
40
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion":
|
|
2
|
+
"schemaVersion": 2,
|
|
3
3
|
"type": "pi-forge.prompt-stack",
|
|
4
4
|
"id": "default",
|
|
5
5
|
"name": "Default Pi Prompt Mirror",
|
|
@@ -14,10 +14,14 @@
|
|
|
14
14
|
"allowDuplicateChatHistory": false
|
|
15
15
|
},
|
|
16
16
|
"tools": {
|
|
17
|
-
"allow": [
|
|
17
|
+
"allow": [
|
|
18
|
+
"*"
|
|
19
|
+
]
|
|
18
20
|
},
|
|
19
21
|
"skills": {
|
|
20
|
-
"allow": [
|
|
22
|
+
"allow": [
|
|
23
|
+
"*"
|
|
24
|
+
]
|
|
21
25
|
},
|
|
22
26
|
"items": [
|
|
23
27
|
{
|
|
@@ -116,5 +120,6 @@
|
|
|
116
120
|
"enabled": true,
|
|
117
121
|
"slot": "chat-history"
|
|
118
122
|
}
|
|
119
|
-
]
|
|
123
|
+
],
|
|
124
|
+
"parameters": {}
|
|
120
125
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion":
|
|
2
|
+
"schemaVersion": 2,
|
|
3
3
|
"type": "pi-forge.prompt-stack",
|
|
4
4
|
"id": "image-reader",
|
|
5
5
|
"name": "Image Reader Subagent",
|
|
@@ -14,13 +14,11 @@
|
|
|
14
14
|
"allowDuplicateChatHistory": false
|
|
15
15
|
},
|
|
16
16
|
"tools": {
|
|
17
|
-
"deny": [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
"detail_level": "exhaustive factual visual inventory",
|
|
23
|
-
"safety_scope": "include safety-relevant visual content neutrally without giving instructions for harmful acts"
|
|
17
|
+
"deny": [
|
|
18
|
+
"bash",
|
|
19
|
+
"edit",
|
|
20
|
+
"write"
|
|
21
|
+
]
|
|
24
22
|
},
|
|
25
23
|
"items": [
|
|
26
24
|
{
|
|
@@ -29,7 +27,7 @@
|
|
|
29
27
|
"name": "Image Reader Role",
|
|
30
28
|
"enabled": true,
|
|
31
29
|
"role": "system",
|
|
32
|
-
"content": "
|
|
30
|
+
"content": "You are an image reader subagent. Your job is to inspect image inputs directly and produce a faithful visual report for the {{ parameters.audience }}.\n\nUse this stack only when you can actually inspect the image. If no image is present, the image is inaccessible, or the current model cannot view images, say that directly and do not guess.\n\nPrimary objective: describe exactly what is visible in the image in detail. Treat the report as sensory evidence for another agent, not as advice, judgment, or creative writing."
|
|
33
31
|
},
|
|
34
32
|
{
|
|
35
33
|
"kind": "block",
|
|
@@ -45,21 +43,7 @@
|
|
|
45
43
|
"name": "Macro Context",
|
|
46
44
|
"enabled": true,
|
|
47
45
|
"role": "system",
|
|
48
|
-
"content": "
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"kind": "slot",
|
|
52
|
-
"id": "variables",
|
|
53
|
-
"name": "Image Reader Variables",
|
|
54
|
-
"enabled": true,
|
|
55
|
-
"role": "system",
|
|
56
|
-
"slot": "variables",
|
|
57
|
-
"options": {
|
|
58
|
-
"includeStatic": true,
|
|
59
|
-
"includeSession": true,
|
|
60
|
-
"includeTurn": true,
|
|
61
|
-
"format": "plain"
|
|
62
|
-
}
|
|
46
|
+
"content": "Report mode is active: {{ parameters.report_mode | upper }}.\nSafety scope: {{ parameters.safety_scope }}.\n{% if runtime.tool.read %}If the user references an image file path and direct vision input is unavailable, you may inspect only file metadata or surrounding text with read tools; do not pretend metadata is image vision.{% endif %}"
|
|
63
47
|
},
|
|
64
48
|
{
|
|
65
49
|
"kind": "slot",
|
|
@@ -118,7 +102,13 @@
|
|
|
118
102
|
"name": "Current Image Task",
|
|
119
103
|
"enabled": true,
|
|
120
104
|
"role": "user",
|
|
121
|
-
"content": "<current_image_task>\n{{xml
|
|
105
|
+
"content": "<current_image_task>\n{{ runtime.lastUserMessage | xml }}\n</current_image_task>\n\nProduce the image report now for the {{ parameters.audience }}.\n\nRequired output:\n1. Access check: state whether you can directly inspect the image.\n2. One-sentence overview: summarize the scene plainly.\n3. Detailed inventory: list visible subjects, objects, setting, text, colors, layout, and relationships.\n4. Safety-relevant content: list visible hazards, injuries, weapons, explicit content, abuse indicators, hate symbols, or other potentially harmful content. Write \"None visible\" only if none are visible.\n5. Uncertainties: list anything important that is unclear, ambiguous, cropped, blurry, or inferred.\n6. Machine-readable summary: include one compact JSON object with keys \"canInspectImage\", \"overview\", \"visibleText\", \"safetyRelevantContent\", and \"uncertainties\". Use strings or arrays only; do not include markdown inside the JSON.\n\nRequest as JSON string for logging: {{ runtime.lastUserMessage | json }}"
|
|
122
106
|
}
|
|
123
|
-
]
|
|
107
|
+
],
|
|
108
|
+
"parameters": {
|
|
109
|
+
"audience": "main agent",
|
|
110
|
+
"report_mode": "image-reader",
|
|
111
|
+
"detail_level": "exhaustive factual visual inventory",
|
|
112
|
+
"safety_scope": "include safety-relevant visual content neutrally without giving instructions for harmful acts"
|
|
113
|
+
}
|
|
124
114
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion":
|
|
2
|
+
"schemaVersion": 2,
|
|
3
3
|
"type": "pi-forge.prompt-stack",
|
|
4
4
|
"id": "reviewer",
|
|
5
5
|
"name": "Focused Code Reviewer",
|
|
@@ -14,12 +14,10 @@
|
|
|
14
14
|
"allowDuplicateChatHistory": false
|
|
15
15
|
},
|
|
16
16
|
"tools": {
|
|
17
|
-
"deny": [
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
"review_style": "findings first, ordered by severity",
|
|
22
|
-
"max_findings": "8"
|
|
17
|
+
"deny": [
|
|
18
|
+
"edit",
|
|
19
|
+
"write"
|
|
20
|
+
]
|
|
23
21
|
},
|
|
24
22
|
"items": [
|
|
25
23
|
{
|
|
@@ -28,7 +26,7 @@
|
|
|
28
26
|
"name": "Reviewer Role",
|
|
29
27
|
"enabled": true,
|
|
30
28
|
"role": "system",
|
|
31
|
-
"content": "You are a senior code reviewer operating inside pi. Review the user's target with a skeptical engineering lens. Prioritize {{review_focus}}.\n\nRules:\n- Do not edit files or write patches unless the user explicitly asks for implementation.\n- You may inspect files and run safe read-only commands when needed.\n- Treat previous conversation as context, not as the target unless the latest user message says so.\n- Prefer concrete file/line references when available.\n- If there are no substantive issues, say that clearly and mention residual risks or test gaps."
|
|
29
|
+
"content": "You are a senior code reviewer operating inside pi. Review the user's target with a skeptical engineering lens. Prioritize {{ parameters.review_focus }}.\n\nRules:\n- Do not edit files or write patches unless the user explicitly asks for implementation.\n- You may inspect files and run safe read-only commands when needed.\n- Treat previous conversation as context, not as the target unless the latest user message says so.\n- Prefer concrete file/line references when available.\n- If there are no substantive issues, say that clearly and mention residual risks or test gaps."
|
|
32
30
|
},
|
|
33
31
|
{
|
|
34
32
|
"kind": "slot",
|
|
@@ -58,20 +56,6 @@
|
|
|
58
56
|
"role": "system",
|
|
59
57
|
"slot": "date-cwd"
|
|
60
58
|
},
|
|
61
|
-
{
|
|
62
|
-
"kind": "slot",
|
|
63
|
-
"id": "variables",
|
|
64
|
-
"name": "Review Variables",
|
|
65
|
-
"enabled": true,
|
|
66
|
-
"role": "system",
|
|
67
|
-
"slot": "variables",
|
|
68
|
-
"options": {
|
|
69
|
-
"includeStatic": true,
|
|
70
|
-
"includeSession": true,
|
|
71
|
-
"includeTurn": false,
|
|
72
|
-
"format": "plain"
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
59
|
{
|
|
76
60
|
"kind": "block",
|
|
77
61
|
"id": "history-open",
|
|
@@ -109,7 +93,12 @@
|
|
|
109
93
|
"name": "Current Review Target",
|
|
110
94
|
"enabled": true,
|
|
111
95
|
"role": "user",
|
|
112
|
-
"content": "<review_target>\n{{lastUserMessage}}\n</review_target>\n\nReview this target now. Lead with findings, ordered by severity. Limit yourself to the most important {{max_findings}} findings unless the target asks for exhaustive review. Use this format:\n\nFindings:\n- [severity] file:line - issue, impact, and suggested fix.\n\nOpen questions:\n- List only questions that materially affect the review.\n\nIf no findings are present, write \"No blocking findings\" and then summarize remaining test or operational risk."
|
|
96
|
+
"content": "<review_target>\n{{ runtime.lastUserMessage }}\n</review_target>\n\nReview this target now. Lead with findings, ordered by severity. Limit yourself to the most important {{ parameters.max_findings }} findings unless the target asks for exhaustive review. Use this format:\n\nFindings:\n- [severity] file:line - issue, impact, and suggested fix.\n\nOpen questions:\n- List only questions that materially affect the review.\n\nIf no findings are present, write \"No blocking findings\" and then summarize remaining test or operational risk."
|
|
113
97
|
}
|
|
114
|
-
]
|
|
98
|
+
],
|
|
99
|
+
"parameters": {
|
|
100
|
+
"review_focus": "correctness, regressions, security, maintainability, and missing tests",
|
|
101
|
+
"review_style": "findings first, ordered by severity",
|
|
102
|
+
"max_findings": "8"
|
|
103
|
+
}
|
|
115
104
|
}
|
package/package.json
CHANGED
|
@@ -1,122 +1,103 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
"typecheck": "tsc --noEmit && vue-tsc --noEmit -p tsconfig.web.json",
|
|
104
|
-
"test": "node --test tests/*.test.ts",
|
|
105
|
-
"test:browser": "node --test tests-browser/*.test.ts",
|
|
106
|
-
"verify": "npm test && npm run test:browser && npm run typecheck && npm run check:client && npm run check:docs && npm run check:dist && npm run check:package"
|
|
107
|
-
},
|
|
108
|
-
"files": [
|
|
109
|
-
"dist/",
|
|
110
|
-
"docs/",
|
|
111
|
-
"examples/",
|
|
112
|
-
"README.md",
|
|
113
|
-
"README.zh-CN.md",
|
|
114
|
-
"CHANGELOG.md",
|
|
115
|
-
"SUBAGENT_ADAPTER_CONTRACT.md",
|
|
116
|
-
"PUBLIC_API.md",
|
|
117
|
-
"LICENSE*"
|
|
118
|
-
],
|
|
119
|
-
"publishConfig": {
|
|
120
|
-
"access": "public"
|
|
121
|
-
}
|
|
2
|
+
"name": "@zihanw/pi-forge",
|
|
3
|
+
"version": "0.5.0",
|
|
4
|
+
"description": "Pi extension for prompt stacks, one-shot agent profiles, policy, import, and debugging.",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/MacroSony/pi-forge.git"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./subagent": {
|
|
17
|
+
"types": "./dist/subagent/index.d.ts",
|
|
18
|
+
"import": "./dist/subagent/index.js",
|
|
19
|
+
"default": "./dist/subagent/index.js"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"keywords": [
|
|
23
|
+
"pi-package",
|
|
24
|
+
"pi-extension",
|
|
25
|
+
"prompt-stack",
|
|
26
|
+
"agent-profile"
|
|
27
|
+
],
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=22.19.0"
|
|
31
|
+
},
|
|
32
|
+
"pi": {
|
|
33
|
+
"extensions": [
|
|
34
|
+
"./dist/index.js"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"peerDependencies": {
|
|
38
|
+
"@earendil-works/pi-agent-core": "*",
|
|
39
|
+
"@earendil-works/pi-ai": "*",
|
|
40
|
+
"@earendil-works/pi-coding-agent": "*",
|
|
41
|
+
"@earendil-works/pi-tui": "*",
|
|
42
|
+
"typebox": "*"
|
|
43
|
+
},
|
|
44
|
+
"peerDependenciesMeta": {
|
|
45
|
+
"@earendil-works/pi-agent-core": {
|
|
46
|
+
"optional": true
|
|
47
|
+
},
|
|
48
|
+
"@earendil-works/pi-ai": {
|
|
49
|
+
"optional": true
|
|
50
|
+
},
|
|
51
|
+
"@earendil-works/pi-coding-agent": {
|
|
52
|
+
"optional": true
|
|
53
|
+
},
|
|
54
|
+
"@earendil-works/pi-tui": {
|
|
55
|
+
"optional": true
|
|
56
|
+
},
|
|
57
|
+
"typebox": {
|
|
58
|
+
"optional": true
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@earendil-works/pi-agent-core": "0.84.2",
|
|
63
|
+
"@earendil-works/pi-ai": "0.84.2",
|
|
64
|
+
"@earendil-works/pi-coding-agent": "0.84.2",
|
|
65
|
+
"@earendil-works/pi-tui": "0.84.2",
|
|
66
|
+
"@types/node": "22.20.1",
|
|
67
|
+
"@vitejs/plugin-vue": "6.0.8",
|
|
68
|
+
"playwright-core": "1.61.1",
|
|
69
|
+
"typebox": "1.3.7",
|
|
70
|
+
"typescript": "6.0.3",
|
|
71
|
+
"vite": "8.1.5",
|
|
72
|
+
"vue": "3.5.40",
|
|
73
|
+
"vue-tsc": "3.3.8"
|
|
74
|
+
},
|
|
75
|
+
"scripts": {
|
|
76
|
+
"build": "npm run build:client && tsc -p tsconfig.build.json",
|
|
77
|
+
"build:client": "node scripts/build-web-client.mjs",
|
|
78
|
+
"check:client": "node scripts/build-web-client.mjs --check",
|
|
79
|
+
"check:docs": "node scripts/check-docs.mjs",
|
|
80
|
+
"check:dist": "node scripts/check-dist.mjs",
|
|
81
|
+
"check:package": "node scripts/check-package.mjs",
|
|
82
|
+
"prepack": "npm run build",
|
|
83
|
+
"typecheck": "tsc --noEmit && vue-tsc --noEmit -p tsconfig.web.json",
|
|
84
|
+
"test": "node --test tests/*.test.ts",
|
|
85
|
+
"test:browser": "node --test --test-concurrency=1 tests-browser/*.test.ts",
|
|
86
|
+
"verify": "npm test && npm run test:browser && npm run typecheck && npm run check:client && npm run check:docs && npm run check:dist && npm run check:package && npm run check:packed",
|
|
87
|
+
"check:packed": "node scripts/check-packed-install.mjs"
|
|
88
|
+
},
|
|
89
|
+
"files": [
|
|
90
|
+
"dist/",
|
|
91
|
+
"docs/",
|
|
92
|
+
"examples/",
|
|
93
|
+
"README.md",
|
|
94
|
+
"README.zh-CN.md",
|
|
95
|
+
"CHANGELOG.md",
|
|
96
|
+
"SUBAGENT_ADAPTER_CONTRACT.md",
|
|
97
|
+
"PUBLIC_API.md",
|
|
98
|
+
"LICENSE*"
|
|
99
|
+
],
|
|
100
|
+
"publishConfig": {
|
|
101
|
+
"access": "public"
|
|
102
|
+
}
|
|
122
103
|
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
import { type PiSubprocessBackendOptions, type PiSubprocessRunReport } from "@zihanw/pi-subagent-runtime/backends/subprocess";
|
|
3
|
-
import { type PiRpcBackendOptions } from "@zihanw/pi-subagent-runtime/backends/rpc";
|
|
4
|
-
import type { PiForgeRuntimeState } from "../runtime-state.ts";
|
|
5
|
-
import { type AgentExecutionPlan, type AgentRequest, type AgentResponse, type BackendPreflightAccepted, type SubagentBackendDescriptor, type SubagentDiagnostic } from "../subagent/contract.ts";
|
|
6
|
-
export interface ForgeSubagentPreparedRun {
|
|
7
|
-
request: AgentRequest;
|
|
8
|
-
preflight: BackendPreflightAccepted;
|
|
9
|
-
plan: AgentExecutionPlan;
|
|
10
|
-
diagnostics: SubagentDiagnostic[];
|
|
11
|
-
}
|
|
12
|
-
export type ForgeSubagentPreparationResult = {
|
|
13
|
-
ok: true;
|
|
14
|
-
prepared: ForgeSubagentPreparedRun;
|
|
15
|
-
} | {
|
|
16
|
-
ok: false;
|
|
17
|
-
diagnostics: SubagentDiagnostic[];
|
|
18
|
-
};
|
|
19
|
-
/** Host-facing execution update; phases match the runtime's run events. */
|
|
20
|
-
export interface SubagentBackendExecutionUpdate {
|
|
21
|
-
phase: "starting" | "message" | "tool-result" | "finishing";
|
|
22
|
-
message: string;
|
|
23
|
-
details?: unknown;
|
|
24
|
-
}
|
|
25
|
-
export interface ForgeSubagentRuntime {
|
|
26
|
-
/** Registered backend IDs, known without an extension context. */
|
|
27
|
-
backendIds(): string[];
|
|
28
|
-
descriptors(ctx: ExtensionContext): SubagentBackendDescriptor[];
|
|
29
|
-
prepare(profileId: string, task: string, ctx: ExtensionContext, run?: {
|
|
30
|
-
backendId?: string;
|
|
31
|
-
timeoutMs?: number;
|
|
32
|
-
}): Promise<ForgeSubagentPreparationResult>;
|
|
33
|
-
discard(prepared: ForgeSubagentPreparedRun): Promise<void>;
|
|
34
|
-
execute(prepared: ForgeSubagentPreparedRun, ctx: ExtensionContext, signal?: AbortSignal, onUpdate?: (update: SubagentBackendExecutionUpdate) => void): Promise<AgentResponse>;
|
|
35
|
-
takeReport?(runId: string): PiSubprocessRunReport | undefined;
|
|
36
|
-
dispose(): Promise<void>;
|
|
37
|
-
}
|
|
38
|
-
export interface ForgeSubagentRuntimeOptions {
|
|
39
|
-
/** Backend that executes prepared runs; defaults to the subprocess backend. */
|
|
40
|
-
backendId?: string;
|
|
41
|
-
subprocess?: Omit<PiSubprocessBackendOptions, "modelRegistry" | "cwd">;
|
|
42
|
-
rpc?: Omit<PiRpcBackendOptions, "modelRegistry" | "cwd">;
|
|
43
|
-
}
|
|
44
|
-
export declare function createForgeSubagentRuntime(state: PiForgeRuntimeState, options?: ForgeSubagentRuntimeOptions): ForgeSubagentRuntime;
|
|
45
|
-
//# sourceMappingURL=subagent-runtime.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/subagent-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,iCAAiC,CAAC;AAWvF,OAAO,EAGN,KAAK,0BAA0B,EAC/B,KAAK,qBAAqB,EAC1B,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAEN,KAAK,mBAAmB,EACxB,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ/D,OAAO,EAKN,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EAGvB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,YAAY,CAAC;IACtB,SAAS,EAAE,wBAAwB,CAAC;IACpC,IAAI,EAAE,kBAAkB,CAAC;IACzB,WAAW,EAAE,kBAAkB,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,8BAA8B,GACvC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,GAChD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,WAAW,EAAE,kBAAkB,EAAE,CAAA;CAAE,CAAC;AAEpD,2EAA2E;AAC3E,MAAM,WAAW,8BAA8B;IAC9C,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACpC,kEAAkE;IAClE,UAAU,IAAI,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,yBAAyB,EAAE,CAAC;IAChE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC3J,OAAO,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,OAAO,CAAC,QAAQ,EAAE,wBAAwB,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,8BAA8B,KAAK,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9K,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IAC9D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAOD,MAAM,WAAW,2BAA2B;IAC3C,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,eAAe,GAAG,KAAK,CAAC,CAAC;IACvE,GAAG,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,eAAe,GAAG,KAAK,CAAC,CAAC;CACzD;AAeD,wBAAgB,0BAA0B,CACzC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,GAAE,2BAAgC,GACvC,oBAAoB,CA4MtB"}
|