@zihanw/pi-forge 0.4.1 → 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 +41 -1
- package/README.md +11 -11
- package/README.zh-CN.md +3 -5
- package/SUBAGENT_ADAPTER_CONTRACT.md +3 -1
- package/dist/agent-profile.d.ts +18 -62
- package/dist/agent-profile.d.ts.map +1 -1
- package/dist/agent-profile.js +27 -249
- package/dist/agent-profile.js.map +1 -1
- 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 +0 -105
- package/dist/forge-config.d.ts.map +1 -1
- package/dist/forge-config.js +1 -313
- 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 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +49 -81
- package/dist/index.js.map +1 -1
- package/dist/lifecycle.d.ts +6 -5
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +43 -112
- package/dist/lifecycle.js.map +1 -1
- package/dist/loader.d.ts +5 -8
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +10 -467
- 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 +33 -104
- 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 +15 -14
- package/dist/profile-command.js.map +1 -1
- package/dist/profile-service.d.ts.map +1 -1
- package/dist/profile-service.js +23 -39
- 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/runtime/profile-runtime.d.ts +2 -2
- package/dist/runtime/profile-runtime.d.ts.map +1 -1
- package/dist/runtime/profile-runtime.js +13 -10
- package/dist/runtime/profile-runtime.js.map +1 -1
- package/dist/runtime/prompt-stack-runtime.d.ts +4 -3
- package/dist/runtime/prompt-stack-runtime.d.ts.map +1 -1
- package/dist/runtime/prompt-stack-runtime.js +42 -57
- 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/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 +143 -146
- 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 +40 -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 +1 -68
- 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 +0 -35
- 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 +32 -103
- 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 +1 -1
- package/docs/concepts/prompt-stacks.md +5 -5
- 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 +37 -5
- package/docs/development/scoped-global-profiles-stacks.md +1 -1
- package/docs/development/setup.md +6 -4
- package/docs/getting-started.md +5 -4
- package/docs/guides/custom-macros-and-slots.md +8 -7
- package/docs/guides/debugging.md +1 -1
- package/docs/guides/delegation.md +18 -22
- package/docs/guides/migrating-to-0.5.md +107 -0
- package/docs/guides/use-cases.md +7 -11
- package/docs/guides/web-editor.md +5 -9
- package/docs/reference/commands.md +4 -3
- package/docs/reference/configuration.md +17 -18
- package/docs/reference/features.md +34 -80
- 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 +1 -1
- package/docs/zh-CN/concepts/prompt-stacks.md +4 -4
- package/docs/zh-CN/getting-started.md +3 -2
- package/docs/zh-CN/guides/delegation.md +10 -12
- package/docs/zh-CN/guides/migrating-to-0.5.md +92 -0
- package/docs/zh-CN/guides/web-editor.md +4 -4
- package/docs/zh-CN/reference/commands.md +3 -2
- 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 -343
- 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 -154
- 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 -272
- 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 -5
- package/dist/subagent-command.d.ts.map +0 -1
- package/dist/subagent-command.js +0 -249
- 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 -125
- package/dist/subagent-profile-tool.js.map +0 -1
- package/dist/subagent-tool.d.ts +0 -77
- package/dist/subagent-tool.d.ts.map +0 -1
- package/dist/subagent-tool.js +0 -559
- 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
|
@@ -24,6 +24,12 @@ export interface PromptStackMigrationReport {
|
|
|
24
24
|
errors: number;
|
|
25
25
|
deletedLegacy: number;
|
|
26
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Orchestrate the legacy `.pi/prompt-stacks` -> `.pi/forge/prompt-stacks`
|
|
29
|
+
* migration. All filesystem IO (raw byte-preserving reads, copies, deletes)
|
|
30
|
+
* lives in the prompt-stack repository; this command owns only reporting,
|
|
31
|
+
* overwrite policy, dry-run, and deletion ordering.
|
|
32
|
+
*/
|
|
27
33
|
export declare function migrateLegacyPromptStacks(cwd: string, options?: PromptStackMigrationOptions): PromptStackMigrationReport;
|
|
28
34
|
export declare function renderMigrationReport(report: PromptStackMigrationReport): string;
|
|
29
35
|
//# sourceMappingURL=stack-migration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-migration.d.ts","sourceRoot":"","sources":["../src/stack-migration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stack-migration.d.ts","sourceRoot":"","sources":["../src/stack-migration.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,2BAA2B;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,0BAA0B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,wBAAwB,EAAE,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,2BAAgC,GAAG,0BAA0B,CAgF5H;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,CAsChF"}
|
package/dist/stack-migration.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { join } from "node:path";
|
|
2
|
+
import { promptStacksDir } from "./storage.js";
|
|
3
|
+
import { copyLegacyPromptStackFile, deleteLegacyPromptStackFile, readLegacyPromptStackSources, } from "./repositories/prompt-stack.js";
|
|
4
|
+
/**
|
|
5
|
+
* Orchestrate the legacy `.pi/prompt-stacks` -> `.pi/forge/prompt-stacks`
|
|
6
|
+
* migration. All filesystem IO (raw byte-preserving reads, copies, deletes)
|
|
7
|
+
* lives in the prompt-stack repository; this command owns only reporting,
|
|
8
|
+
* overwrite policy, dry-run, and deletion ordering.
|
|
9
|
+
*/
|
|
4
10
|
export function migrateLegacyPromptStacks(cwd, options = {}) {
|
|
5
|
-
const sourceDir =
|
|
11
|
+
const sourceDir = join(cwd, ".pi", "prompt-stacks");
|
|
6
12
|
const targetDir = promptStacksDir(cwd);
|
|
7
13
|
const report = {
|
|
8
14
|
sourceDir,
|
|
@@ -17,32 +23,25 @@ export function migrateLegacyPromptStacks(cwd, options = {}) {
|
|
|
17
23
|
errors: 0,
|
|
18
24
|
deletedLegacy: 0,
|
|
19
25
|
};
|
|
20
|
-
|
|
21
|
-
return report;
|
|
22
|
-
let entries;
|
|
26
|
+
let sources;
|
|
23
27
|
try {
|
|
24
|
-
|
|
28
|
+
sources = readLegacyPromptStackSources(cwd);
|
|
25
29
|
}
|
|
26
|
-
catch
|
|
27
|
-
|
|
28
|
-
name: "(legacy directory)",
|
|
29
|
-
sourcePath: sourceDir,
|
|
30
|
-
targetPath: targetDir,
|
|
31
|
-
action: "error",
|
|
32
|
-
reason: error instanceof Error ? error.message : String(error),
|
|
33
|
-
deleteLegacy: false,
|
|
34
|
-
});
|
|
35
|
-
report.errors++;
|
|
36
|
-
return report;
|
|
30
|
+
catch {
|
|
31
|
+
sources = [];
|
|
37
32
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
|
|
33
|
+
if (sources.length === 0)
|
|
34
|
+
return report;
|
|
35
|
+
for (const source of sources) {
|
|
36
|
+
const targetPath = join(targetDir, source.name);
|
|
37
|
+
const copy = copyLegacyPromptStackFile(cwd, source.sourcePath, targetPath, {
|
|
38
|
+
overwrite: report.overwrite,
|
|
39
|
+
dryRun: report.dryRun,
|
|
40
|
+
});
|
|
41
|
+
if (!copy.ok && copy.reason === "exists") {
|
|
43
42
|
report.files.push({
|
|
44
|
-
name,
|
|
45
|
-
sourcePath,
|
|
43
|
+
name: source.name,
|
|
44
|
+
sourcePath: source.sourcePath,
|
|
46
45
|
targetPath,
|
|
47
46
|
action: "skip",
|
|
48
47
|
reason: "target already exists",
|
|
@@ -51,39 +50,37 @@ export function migrateLegacyPromptStacks(cwd, options = {}) {
|
|
|
51
50
|
report.skipped++;
|
|
52
51
|
continue;
|
|
53
52
|
}
|
|
54
|
-
|
|
55
|
-
try {
|
|
56
|
-
if (!report.dryRun) {
|
|
57
|
-
mkdirSync(dirname(targetPath), { recursive: true });
|
|
58
|
-
copyFileSync(sourcePath, targetPath);
|
|
59
|
-
if (report.deleteLegacy) {
|
|
60
|
-
unlinkSync(sourcePath);
|
|
61
|
-
report.deletedLegacy++;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
if (action === "overwrite")
|
|
65
|
-
report.overwritten++;
|
|
66
|
-
else
|
|
67
|
-
report.copied++;
|
|
68
|
-
report.files.push({
|
|
69
|
-
name,
|
|
70
|
-
sourcePath,
|
|
71
|
-
targetPath,
|
|
72
|
-
action,
|
|
73
|
-
deleteLegacy: report.deleteLegacy,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
53
|
+
if (!copy.ok) {
|
|
77
54
|
report.files.push({
|
|
78
|
-
name,
|
|
79
|
-
sourcePath,
|
|
55
|
+
name: source.name,
|
|
56
|
+
sourcePath: source.sourcePath,
|
|
80
57
|
targetPath,
|
|
81
58
|
action: "error",
|
|
82
|
-
reason:
|
|
59
|
+
reason: copy.error,
|
|
83
60
|
deleteLegacy: false,
|
|
84
61
|
});
|
|
85
62
|
report.errors++;
|
|
63
|
+
continue;
|
|
86
64
|
}
|
|
65
|
+
if (copy.action === "overwrite")
|
|
66
|
+
report.overwritten++;
|
|
67
|
+
else
|
|
68
|
+
report.copied++;
|
|
69
|
+
let deletedLegacy = false;
|
|
70
|
+
if (report.deleteLegacy) {
|
|
71
|
+
const deleted = deleteLegacyPromptStackFile(cwd, source.sourcePath, { dryRun: report.dryRun });
|
|
72
|
+
if (deleted.ok) {
|
|
73
|
+
deletedLegacy = true;
|
|
74
|
+
report.deletedLegacy++;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
report.files.push({
|
|
78
|
+
name: source.name,
|
|
79
|
+
sourcePath: source.sourcePath,
|
|
80
|
+
targetPath,
|
|
81
|
+
action: copy.action,
|
|
82
|
+
deleteLegacy: deletedLegacy,
|
|
83
|
+
});
|
|
87
84
|
}
|
|
88
85
|
return report;
|
|
89
86
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stack-migration.js","sourceRoot":"","sources":["../src/stack-migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"stack-migration.js","sourceRoot":"","sources":["../src/stack-migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AgentProfile } from "../agent-profile.ts";
|
|
2
|
+
import type { PromptStack } from "../types.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Forge-owned canonical JSON + `sha256:v1` fingerprints.
|
|
5
|
+
*
|
|
6
|
+
* Vendored from @zihanw/pi-subagent-runtime's canonical implementation so the
|
|
7
|
+
* main package carries no runtime dependency. The algorithm is byte-for-byte
|
|
8
|
+
* identical (key-sorted plain objects, undefined properties omitted, finite
|
|
9
|
+
* numbers only, -0 normalized, no cycles/sparse arrays/non-plain objects), so
|
|
10
|
+
* fingerprints the host issues into profile snapshots stay comparable with
|
|
11
|
+
* values the optional package recomputes through the runtime. Golden vectors
|
|
12
|
+
* are pinned in tests/subagent-host.test.ts.
|
|
13
|
+
*
|
|
14
|
+
* The host never computes conversation/execution fingerprints; those are
|
|
15
|
+
* issued by the runtime during plan sealing in the optional package.
|
|
16
|
+
*/
|
|
17
|
+
export declare const SUBAGENT_FINGERPRINT_PREFIX: "sha256:v1:";
|
|
18
|
+
export type SubagentFingerprint = `${typeof SUBAGENT_FINGERPRINT_PREFIX}${string}`;
|
|
19
|
+
export declare function canonicalSubagentJson(value: unknown): string;
|
|
20
|
+
export declare function subagentFingerprint(value: unknown): SubagentFingerprint;
|
|
21
|
+
/** Host-owned source provenance: profile and prompt-stack content fingerprints. */
|
|
22
|
+
export declare function subagentSourceProfileFingerprint(profile: AgentProfile): SubagentFingerprint;
|
|
23
|
+
export declare function subagentPromptStackFingerprint(stack: PromptStack): SubagentFingerprint;
|
|
24
|
+
//# sourceMappingURL=fingerprints.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprints.d.ts","sourceRoot":"","sources":["../../src/subagent/fingerprints.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,2BAA2B,EAAG,YAAqB,CAAC;AACjE,MAAM,MAAM,mBAAmB,GAAG,GAAG,OAAO,2BAA2B,GAAG,MAAM,EAAE,CAAC;AAEnF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE5D;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAKvE;AAED,mFAAmF;AACnF,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,YAAY,GAAG,mBAAmB,CAE3F;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAEtF"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
/**
|
|
3
|
+
* Forge-owned canonical JSON + `sha256:v1` fingerprints.
|
|
4
|
+
*
|
|
5
|
+
* Vendored from @zihanw/pi-subagent-runtime's canonical implementation so the
|
|
6
|
+
* main package carries no runtime dependency. The algorithm is byte-for-byte
|
|
7
|
+
* identical (key-sorted plain objects, undefined properties omitted, finite
|
|
8
|
+
* numbers only, -0 normalized, no cycles/sparse arrays/non-plain objects), so
|
|
9
|
+
* fingerprints the host issues into profile snapshots stay comparable with
|
|
10
|
+
* values the optional package recomputes through the runtime. Golden vectors
|
|
11
|
+
* are pinned in tests/subagent-host.test.ts.
|
|
12
|
+
*
|
|
13
|
+
* The host never computes conversation/execution fingerprints; those are
|
|
14
|
+
* issued by the runtime during plan sealing in the optional package.
|
|
15
|
+
*/
|
|
16
|
+
export const SUBAGENT_FINGERPRINT_PREFIX = "sha256:v1:";
|
|
17
|
+
export function canonicalSubagentJson(value) {
|
|
18
|
+
return canonicalize(value, "$", new Set());
|
|
19
|
+
}
|
|
20
|
+
export function subagentFingerprint(value) {
|
|
21
|
+
const digest = createHash("sha256")
|
|
22
|
+
.update(canonicalSubagentJson(value))
|
|
23
|
+
.digest("hex");
|
|
24
|
+
return `${SUBAGENT_FINGERPRINT_PREFIX}${digest}`;
|
|
25
|
+
}
|
|
26
|
+
/** Host-owned source provenance: profile and prompt-stack content fingerprints. */
|
|
27
|
+
export function subagentSourceProfileFingerprint(profile) {
|
|
28
|
+
return subagentFingerprint(profile);
|
|
29
|
+
}
|
|
30
|
+
export function subagentPromptStackFingerprint(stack) {
|
|
31
|
+
return subagentFingerprint(stack);
|
|
32
|
+
}
|
|
33
|
+
function canonicalize(value, path, ancestors) {
|
|
34
|
+
if (value === null)
|
|
35
|
+
return "null";
|
|
36
|
+
if (typeof value === "string" || typeof value === "boolean") {
|
|
37
|
+
return JSON.stringify(value);
|
|
38
|
+
}
|
|
39
|
+
if (typeof value === "number") {
|
|
40
|
+
if (!Number.isFinite(value)) {
|
|
41
|
+
throw new TypeError(`Cannot fingerprint non-finite number at ${path}.`);
|
|
42
|
+
}
|
|
43
|
+
return JSON.stringify(Object.is(value, -0) ? 0 : value);
|
|
44
|
+
}
|
|
45
|
+
if (typeof value !== "object" || value === undefined) {
|
|
46
|
+
throw new TypeError(`Cannot fingerprint ${typeof value} at ${path}.`);
|
|
47
|
+
}
|
|
48
|
+
if (ancestors.has(value)) {
|
|
49
|
+
throw new TypeError(`Cannot fingerprint cyclic value at ${path}.`);
|
|
50
|
+
}
|
|
51
|
+
ancestors.add(value);
|
|
52
|
+
try {
|
|
53
|
+
if (Array.isArray(value)) {
|
|
54
|
+
const items = [];
|
|
55
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
56
|
+
if (!Object.hasOwn(value, index)) {
|
|
57
|
+
throw new TypeError(`Cannot fingerprint sparse array item at ${path}[${index}].`);
|
|
58
|
+
}
|
|
59
|
+
items.push(canonicalize(value[index], `${path}[${index}]`, ancestors));
|
|
60
|
+
}
|
|
61
|
+
return `[${items.join(",")}]`;
|
|
62
|
+
}
|
|
63
|
+
const prototype = Object.getPrototypeOf(value);
|
|
64
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
65
|
+
throw new TypeError(`Cannot fingerprint non-plain object at ${path}.`);
|
|
66
|
+
}
|
|
67
|
+
const record = value;
|
|
68
|
+
const keys = Object.keys(record)
|
|
69
|
+
.filter((key) => record[key] !== undefined)
|
|
70
|
+
.sort();
|
|
71
|
+
const properties = keys.map((key) => {
|
|
72
|
+
const property = canonicalize(record[key], `${path}.${key}`, ancestors);
|
|
73
|
+
return `${JSON.stringify(key)}:${property}`;
|
|
74
|
+
});
|
|
75
|
+
return `{${properties.join(",")}}`;
|
|
76
|
+
}
|
|
77
|
+
finally {
|
|
78
|
+
ancestors.delete(value);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=fingerprints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprints.js","sourceRoot":"","sources":["../../src/subagent/fingerprints.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
|
|
2
|
+
import type { SubagentFingerprint } from "./fingerprints.ts";
|
|
3
|
+
/**
|
|
4
|
+
* Cross-extension Forge host port v1 over the Pi event bus.
|
|
5
|
+
*
|
|
6
|
+
* This is the in-process RPC contract used by the optional subagent package to
|
|
7
|
+
* discover the active main pi-forge host and invoke its three minimal
|
|
8
|
+
* operations (discovery, profile listing, and prompt preparation). Messages
|
|
9
|
+
* are plain, recursively validated, JSON-compatible data only — no functions,
|
|
10
|
+
* live contexts, or internal registries cross the bus. The port itself is not
|
|
11
|
+
* a trust boundary.
|
|
12
|
+
*
|
|
13
|
+
* Ownership: the main pi-forge host owns profiles, stacks, and prompt
|
|
14
|
+
* compilation. The optional package sends resource selectors + task + backend
|
|
15
|
+
* facts and receives immutable preparation artifacts back.
|
|
16
|
+
*/
|
|
17
|
+
export declare const FORGE_HOST_PORT_VERSION = 1;
|
|
18
|
+
export declare const FORGE_HOST_PORT_NAMESPACE = "@zihanw/pi-forge/host/v1";
|
|
19
|
+
export declare const FORGE_HOST_PORT_OPERATIONS: readonly ["listProfiles", "resolveProfile", "prepare"];
|
|
20
|
+
export type ForgeHostPortOperation = (typeof FORGE_HOST_PORT_OPERATIONS)[number];
|
|
21
|
+
export declare const FORGE_HOST_CHANNEL: {
|
|
22
|
+
readonly discover: "@zihanw/pi-forge/host/v1/discover";
|
|
23
|
+
readonly available: "@zihanw/pi-forge/host/v1/available";
|
|
24
|
+
readonly request: "@zihanw/pi-forge/host/v1/request";
|
|
25
|
+
readonly reply: "@zihanw/pi-forge/host/v1/reply";
|
|
26
|
+
readonly unavailable: "@zihanw/pi-forge/host/v1/unavailable";
|
|
27
|
+
};
|
|
28
|
+
export interface ForgeHostTransport {
|
|
29
|
+
emit(channel: string, data: unknown): void;
|
|
30
|
+
on(channel: string, handler: (data: unknown) => void): () => void;
|
|
31
|
+
}
|
|
32
|
+
export type ForgeHostWireMessage = {
|
|
33
|
+
type: "discover";
|
|
34
|
+
protocolVersion: number;
|
|
35
|
+
minVersion: number;
|
|
36
|
+
maxVersion: number;
|
|
37
|
+
clientId: string;
|
|
38
|
+
} | {
|
|
39
|
+
type: "available";
|
|
40
|
+
hostId: string;
|
|
41
|
+
protocolVersion: number;
|
|
42
|
+
minVersion: number;
|
|
43
|
+
maxVersion: number;
|
|
44
|
+
capabilities: string[];
|
|
45
|
+
generation: number;
|
|
46
|
+
} | {
|
|
47
|
+
type: "request";
|
|
48
|
+
requestId: string;
|
|
49
|
+
hostId: string;
|
|
50
|
+
generation: number;
|
|
51
|
+
operation: string;
|
|
52
|
+
payload: unknown;
|
|
53
|
+
} | {
|
|
54
|
+
type: "reply";
|
|
55
|
+
requestId: string;
|
|
56
|
+
hostId: string;
|
|
57
|
+
generation: number;
|
|
58
|
+
ok: boolean;
|
|
59
|
+
data?: unknown;
|
|
60
|
+
error?: string;
|
|
61
|
+
} | {
|
|
62
|
+
type: "unavailable";
|
|
63
|
+
hostId: string;
|
|
64
|
+
generation: number;
|
|
65
|
+
};
|
|
66
|
+
export type ForgeHostPortResult = {
|
|
67
|
+
ok: true;
|
|
68
|
+
data: unknown;
|
|
69
|
+
} | {
|
|
70
|
+
ok: false;
|
|
71
|
+
error: string;
|
|
72
|
+
};
|
|
73
|
+
export interface ForgeHostOptions {
|
|
74
|
+
hostId?: string;
|
|
75
|
+
capabilities?: readonly string[];
|
|
76
|
+
minVersion?: number;
|
|
77
|
+
maxVersion?: number;
|
|
78
|
+
/** Operation handler; must never throw across the bus. */
|
|
79
|
+
handle(operation: string, payload: unknown): ForgeHostPortResult;
|
|
80
|
+
}
|
|
81
|
+
export interface ForgeHostConnection {
|
|
82
|
+
hostId: string;
|
|
83
|
+
protocolVersion: number;
|
|
84
|
+
capabilities: readonly string[];
|
|
85
|
+
generation: number;
|
|
86
|
+
}
|
|
87
|
+
export interface ForgeProfileSummary {
|
|
88
|
+
profileId: string;
|
|
89
|
+
scope: "project" | "global";
|
|
90
|
+
name?: string;
|
|
91
|
+
description?: string;
|
|
92
|
+
autoActivate?: boolean;
|
|
93
|
+
model: {
|
|
94
|
+
provider: string;
|
|
95
|
+
id: string;
|
|
96
|
+
};
|
|
97
|
+
thinkingLevel: string;
|
|
98
|
+
promptStack: string | null;
|
|
99
|
+
usable: boolean;
|
|
100
|
+
diagnostics: Array<{
|
|
101
|
+
level: string;
|
|
102
|
+
message: string;
|
|
103
|
+
field?: string;
|
|
104
|
+
}>;
|
|
105
|
+
}
|
|
106
|
+
export interface ForgeListProfilesResponse {
|
|
107
|
+
profiles: ForgeProfileSummary[];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Wire diagnostic shape for delegation resolution and preparation.
|
|
111
|
+
* Structurally compatible with the optional package's `SubagentDiagnostic`.
|
|
112
|
+
*/
|
|
113
|
+
export interface ForgeDelegationDiagnostic {
|
|
114
|
+
level: "error" | "warning" | "info";
|
|
115
|
+
code: string;
|
|
116
|
+
message: string;
|
|
117
|
+
path?: string;
|
|
118
|
+
}
|
|
119
|
+
/** Host-compiled delegation message as carried over the wire (text-only). */
|
|
120
|
+
export interface ForgeDelegationMessage {
|
|
121
|
+
role: "user" | "assistant" | "custom";
|
|
122
|
+
content: Array<{
|
|
123
|
+
type: "text";
|
|
124
|
+
text: string;
|
|
125
|
+
}>;
|
|
126
|
+
protectedTask?: boolean;
|
|
127
|
+
source?: "prompt-stack" | "delegated-task";
|
|
128
|
+
}
|
|
129
|
+
export type ForgePromptDependencyKind = "macro" | "slot";
|
|
130
|
+
export interface ForgePromptDependency {
|
|
131
|
+
kind: ForgePromptDependencyKind;
|
|
132
|
+
name: string;
|
|
133
|
+
identity: string;
|
|
134
|
+
source?: string;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Minimal structural mirror of the host-owned agent profile carried over the
|
|
138
|
+
* wire. The host owns the schema: at runtime extra fields may pass through for
|
|
139
|
+
* forward compatibility, but consumers must only rely on the fields below.
|
|
140
|
+
*/
|
|
141
|
+
export interface ForgeWireAgentProfile {
|
|
142
|
+
schemaVersion: 1;
|
|
143
|
+
type: string;
|
|
144
|
+
id: string;
|
|
145
|
+
name?: string;
|
|
146
|
+
description?: string;
|
|
147
|
+
autoActivate?: boolean;
|
|
148
|
+
model: {
|
|
149
|
+
provider: string;
|
|
150
|
+
id: string;
|
|
151
|
+
};
|
|
152
|
+
thinkingLevel: ThinkingLevel;
|
|
153
|
+
promptStack: string | null;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Minimal structural mirror of the host-owned prompt stack carried over the
|
|
157
|
+
* wire. Same forward-compat rule as ForgeWireAgentProfile.
|
|
158
|
+
*/
|
|
159
|
+
export interface ForgeWirePromptStack {
|
|
160
|
+
id: string;
|
|
161
|
+
tools?: {
|
|
162
|
+
allow?: string[];
|
|
163
|
+
deny?: never;
|
|
164
|
+
} | {
|
|
165
|
+
allow?: never;
|
|
166
|
+
deny?: string[];
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Immutable host-owned profile snapshot artifact returned by `resolveProfile`
|
|
171
|
+
* and embedded in `prepare` responses. The wire schema version is shared with
|
|
172
|
+
* the optional package's `AgentProfileSnapshot` by design.
|
|
173
|
+
*/
|
|
174
|
+
export interface ForgeProfileSnapshot {
|
|
175
|
+
schemaVersion: 1;
|
|
176
|
+
/** Canonical scoped selector of the resolved profile (`project:<id>` or `global:<id>`). */
|
|
177
|
+
profileId: string;
|
|
178
|
+
profile: ForgeWireAgentProfile;
|
|
179
|
+
/** Canonical scoped selector of the resolved prompt stack, or null. */
|
|
180
|
+
promptStackId: string | null;
|
|
181
|
+
promptStack: ForgeWirePromptStack | null;
|
|
182
|
+
dependencies: ForgePromptDependency[];
|
|
183
|
+
profileFingerprint: SubagentFingerprint;
|
|
184
|
+
promptStackFingerprint: SubagentFingerprint | null;
|
|
185
|
+
}
|
|
186
|
+
export interface ForgeResolveProfileRequest {
|
|
187
|
+
profile: string;
|
|
188
|
+
}
|
|
189
|
+
export interface ForgeResolveProfileResponse {
|
|
190
|
+
/** Immutable host-owned AgentProfileSnapshot artifact (profile + stack + fingerprints). */
|
|
191
|
+
snapshot: ForgeProfileSnapshot;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Prompt-compilation access facts only — what Forge's tool negotiation reads.
|
|
195
|
+
* This intentionally is NOT the runtime `AgentRequest.access`; the optional
|
|
196
|
+
* package projects its own runtime access request onto these three facts.
|
|
197
|
+
*/
|
|
198
|
+
export interface ForgePromptAccessFacts {
|
|
199
|
+
level: "none" | "read-only" | "workspace-write";
|
|
200
|
+
network: "deny" | "allow";
|
|
201
|
+
allowProcess: boolean;
|
|
202
|
+
}
|
|
203
|
+
export interface ForgeBackendTool {
|
|
204
|
+
id: string;
|
|
205
|
+
name?: string;
|
|
206
|
+
effects?: string[];
|
|
207
|
+
}
|
|
208
|
+
export interface ForgeBackendFacts {
|
|
209
|
+
model: {
|
|
210
|
+
provider: string;
|
|
211
|
+
id: string;
|
|
212
|
+
};
|
|
213
|
+
thinkingLevel: string;
|
|
214
|
+
toolCatalog: ForgeBackendTool[];
|
|
215
|
+
}
|
|
216
|
+
export interface ForgePrepareRequest {
|
|
217
|
+
profile: string;
|
|
218
|
+
task: {
|
|
219
|
+
text: string;
|
|
220
|
+
};
|
|
221
|
+
access: ForgePromptAccessFacts;
|
|
222
|
+
backend: ForgeBackendFacts;
|
|
223
|
+
}
|
|
224
|
+
export interface ForgePrepareResponse {
|
|
225
|
+
profileId: string;
|
|
226
|
+
model: {
|
|
227
|
+
provider: string;
|
|
228
|
+
id: string;
|
|
229
|
+
};
|
|
230
|
+
thinkingLevel: string;
|
|
231
|
+
systemPrompt: string;
|
|
232
|
+
messages: ForgeDelegationMessage[];
|
|
233
|
+
effectiveToolIds: string[];
|
|
234
|
+
effectiveToolNames: string[];
|
|
235
|
+
diagnostics: ForgeDelegationDiagnostic[];
|
|
236
|
+
profileSnapshot: ForgeProfileSnapshot;
|
|
237
|
+
preparedAt: string;
|
|
238
|
+
}
|
|
239
|
+
export declare class ForgeHostPortError extends Error {
|
|
240
|
+
readonly code: "timeout" | "duplicate" | "unavailable" | "protocol" | "invalid";
|
|
241
|
+
constructor(code: ForgeHostPortError["code"], message: string);
|
|
242
|
+
}
|
|
243
|
+
export type ValidationResult<T = unknown> = {
|
|
244
|
+
ok: true;
|
|
245
|
+
data: T;
|
|
246
|
+
} | {
|
|
247
|
+
ok: false;
|
|
248
|
+
error: string;
|
|
249
|
+
};
|
|
250
|
+
export declare function validateListProfilesRequest(value: unknown): ValidationResult<Record<string, never>>;
|
|
251
|
+
export declare function validateListProfilesResponse(value: unknown): ValidationResult<ForgeListProfilesResponse>;
|
|
252
|
+
export declare function validateResolveProfileRequest(value: unknown): ValidationResult<ForgeResolveProfileRequest>;
|
|
253
|
+
export declare function validateResolveProfileResponse(value: unknown): ValidationResult<ForgeResolveProfileResponse>;
|
|
254
|
+
export declare function validatePrepareRequest(value: unknown): ValidationResult<ForgePrepareRequest>;
|
|
255
|
+
export declare function validatePrepareResponse(value: unknown): ValidationResult<ForgePrepareResponse>;
|
|
256
|
+
export declare class ForgeHost {
|
|
257
|
+
private readonly transport;
|
|
258
|
+
private readonly options;
|
|
259
|
+
readonly hostId: string;
|
|
260
|
+
private generationId;
|
|
261
|
+
private started;
|
|
262
|
+
private unsubscribers;
|
|
263
|
+
constructor(transport: ForgeHostTransport, options: ForgeHostOptions);
|
|
264
|
+
get generation(): number;
|
|
265
|
+
get isLive(): boolean;
|
|
266
|
+
private availableMessage;
|
|
267
|
+
start(): void;
|
|
268
|
+
stop(): void;
|
|
269
|
+
private onDiscover;
|
|
270
|
+
private onRequest;
|
|
271
|
+
}
|
|
272
|
+
export interface ForgeHostClientOptions {
|
|
273
|
+
clientId?: string;
|
|
274
|
+
defaultTimeoutMs?: number;
|
|
275
|
+
/** How long after the first compatible host reply to keep collecting others before deciding. */
|
|
276
|
+
discoverSettleMs?: number;
|
|
277
|
+
}
|
|
278
|
+
export declare class ForgeHostClient {
|
|
279
|
+
private readonly transport;
|
|
280
|
+
readonly clientId: string;
|
|
281
|
+
private readonly defaultTimeoutMs;
|
|
282
|
+
private readonly discoverSettleMs;
|
|
283
|
+
private connectionUnsubscribe?;
|
|
284
|
+
private unavailableHandlers;
|
|
285
|
+
private activeConnection?;
|
|
286
|
+
constructor(transport: ForgeHostTransport, options?: ForgeHostClientOptions);
|
|
287
|
+
onUnavailable(handler: () => void): () => void;
|
|
288
|
+
private teardownPersistentListener;
|
|
289
|
+
private onUnavailableMessage;
|
|
290
|
+
discover(timeoutMs?: number): Promise<ForgeHostConnection>;
|
|
291
|
+
connect(connection: ForgeHostConnection): ForgeHostConnection;
|
|
292
|
+
request(connection: ForgeHostConnection, operation: string, payload: unknown, timeoutMs?: number): Promise<ForgeHostPortResult>;
|
|
293
|
+
disconnect(): void;
|
|
294
|
+
get subscriptionCount(): number;
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=host-port.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-port.d.ts","sourceRoot":"","sources":["../../src/subagent/host-port.ts"],"names":[],"mappings":"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"}
|