pi-fabric 0.86.0 → 0.88.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/README.md +2 -2
- package/dist/chunks/{chunk-PPIWZJ4M.js → chunk-MBUOWFDL.js} +12 -2
- package/dist/chunks/chunk-MBUOWFDL.js.map +7 -0
- package/dist/commands/fabric.d.ts.map +1 -1
- package/dist/core/kernel-skills.d.ts +3 -0
- package/dist/core/kernel-skills.d.ts.map +1 -0
- package/dist/core/skill-prompt.d.ts +1 -1
- package/dist/core/skill-prompt.d.ts.map +1 -1
- package/dist/core/system-guidance.d.ts.map +1 -1
- package/dist/fabric-state.d.ts +1 -0
- package/dist/fabric-state.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -31
- package/dist/index.js.map +4 -4
- package/dist/runtime/cpython-child-source.d.ts.map +1 -1
- package/dist/runtime/cpython-runtime.d.ts.map +1 -1
- package/dist/runtime/cpython-runtime.js +101 -21
- package/dist/runtime/cpython-runtime.js.map +2 -2
- package/dist/ui/settings.d.ts +1 -0
- package/dist/ui/settings.d.ts.map +1 -1
- package/dist/ui/settings.js +10 -2
- package/dist/ui/settings.js.map +2 -2
- package/docs/agents.md +8 -6
- package/docs/configuration.md +1 -1
- package/docs/kernels.md +14 -0
- package/docs/skills.md +4 -3
- package/package.json +3 -5
- package/skillsets/python/fabric-advisor/SKILL.md +29 -0
- package/skillsets/python/fabric-ambient/references/setup.md +67 -0
- package/skillsets/python/fabric-council/SKILL.md +54 -0
- package/skillsets/python/fabric-exec/SKILL.md +64 -0
- package/skillsets/python/fabric-exec/references/agents.md +63 -0
- package/skillsets/python/fabric-exec/references/mcp.md +23 -0
- package/skillsets/python/fabric-exec/references/mesh.md +27 -0
- package/skillsets/python/fabric-fusion/SKILL.md +112 -0
- package/skillsets/python/fabric-rlm/SKILL.md +120 -0
- package/skillsets/python/fabric-schema/SKILL.md +55 -0
- package/skillsets/python/fabric-spec/SKILL.md +42 -0
- package/skillsets/python/fabric-supervisor/SKILL.md +37 -0
- package/skillsets/python/fabric-swarm/SKILL.md +40 -0
- package/skillsets/python/fabric-workflow/SKILL.md +62 -0
- package/skillsets/typescript/fabric-ambient/SKILL.md +44 -0
- package/{skills → skillsets/typescript}/fabric-exec/SKILL.md +3 -31
- package/{skills → skillsets/typescript}/fabric-exec/references/agents.md +1 -1
- package/skillsets/typescript/fabric-guide/SKILL.md +28 -0
- package/{skills → skillsets/typescript}/fabric-schema/SKILL.md +1 -1
- package/dist/chunks/chunk-PPIWZJ4M.js.map +0 -7
- /package/{skills → skillsets/python}/fabric-ambient/SKILL.md +0 -0
- /package/{skills → skillsets/python}/fabric-guide/SKILL.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-advisor/SKILL.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-ambient/references/setup.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-council/SKILL.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-exec/references/mcp.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-exec/references/mesh.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-fusion/SKILL.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-rlm/SKILL.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-spec/SKILL.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-supervisor/SKILL.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-swarm/SKILL.md +0 -0
- /package/{skills → skillsets/typescript}/fabric-workflow/SKILL.md +0 -0
package/README.md
CHANGED
|
@@ -102,7 +102,7 @@ pi -e /absolute/path/to/pi-fabric
|
|
|
102
102
|
|
|
103
103
|
## What you can ask for
|
|
104
104
|
|
|
105
|
-
Pi loads advanced patterns after direct user invocation. Run `/skill:fabric-guide` for one recommendation, or invoke the exact `/skill:<name>` yourself. An ordinary coding task
|
|
105
|
+
Pi loads advanced patterns after direct user invocation. Run `/skill:fabric-guide` for one recommendation, or invoke the exact `/skill:<name>` yourself. The same skill names work in both kernels: Fabric loads one complete TypeScript or Python skill/reference tree. An ordinary coding task uses the core `fabric-exec` reference.
|
|
106
106
|
|
|
107
107
|
| You want | Run |
|
|
108
108
|
| -------- | --- |
|
|
@@ -118,7 +118,7 @@ Pi loads advanced patterns after direct user invocation. Run `/skill:fabric-guid
|
|
|
118
118
|
| A durable team coordinating through versioned tasks | `/skill:fabric-swarm Coordinate this migration across owned task partitions.` |
|
|
119
119
|
| Evidence-gated edits with postconditions | `/skill:fabric-schema Make this parser change only if focused tests stay green.` |
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
Execution references stay progressive: the model loads the selected kernel's skill after argument-shape errors or when exact advanced contracts are needed. Kernel changes reload Pi so execution and the selected physical skill tree switch together; see [kernel-specific skills](docs/kernels.md#kernel-specific-skills-and-guidance).
|
|
122
122
|
|
|
123
123
|
## Agent conversations
|
|
124
124
|
|
|
@@ -29,6 +29,7 @@ var FabricState = class {
|
|
|
29
29
|
#activation;
|
|
30
30
|
#activationGeneration;
|
|
31
31
|
#config;
|
|
32
|
+
#kernelReloadRequired = false;
|
|
32
33
|
#cwd;
|
|
33
34
|
#generation = 0;
|
|
34
35
|
#everActivated = false;
|
|
@@ -42,6 +43,9 @@ var FabricState = class {
|
|
|
42
43
|
prewalkDrift = new PrewalkDriftTracker();
|
|
43
44
|
sessionApprovals = new FabricSessionApprovals();
|
|
44
45
|
#widgetDismissedAt = 0;
|
|
46
|
+
get kernelReloadRequired() {
|
|
47
|
+
return this.#kernelReloadRequired;
|
|
48
|
+
}
|
|
45
49
|
get initialized() {
|
|
46
50
|
return this.#current()?.initialized === true;
|
|
47
51
|
}
|
|
@@ -119,6 +123,7 @@ var FabricState = class {
|
|
|
119
123
|
projectTrusted: context.isProjectTrusted()
|
|
120
124
|
});
|
|
121
125
|
this.#config = config;
|
|
126
|
+
this.#kernelReloadRequired = false;
|
|
122
127
|
this.prewalk.cancel();
|
|
123
128
|
this.prewalkDrift.clear();
|
|
124
129
|
this.activity.reset();
|
|
@@ -134,11 +139,14 @@ var FabricState = class {
|
|
|
134
139
|
if (!this.#config || this.#cwd !== context.cwd) {
|
|
135
140
|
await this.bootstrap(context);
|
|
136
141
|
} else {
|
|
137
|
-
|
|
142
|
+
const next = loadFabricConfig({
|
|
138
143
|
cwd: context.cwd,
|
|
139
144
|
agentDir: resolveAgentDir(),
|
|
140
145
|
projectTrusted: context.isProjectTrusted()
|
|
141
146
|
});
|
|
147
|
+
this.#kernelReloadRequired = next.executor.kernel !== this.#config.executor.kernel;
|
|
148
|
+
next.executor.kernel = this.#config.executor.kernel;
|
|
149
|
+
this.#config = next;
|
|
142
150
|
}
|
|
143
151
|
await this.#activate(context, true);
|
|
144
152
|
}
|
|
@@ -240,6 +248,8 @@ var FabricState = class {
|
|
|
240
248
|
projectTrusted: context.isProjectTrusted()
|
|
241
249
|
});
|
|
242
250
|
if (this.#config) {
|
|
251
|
+
this.#kernelReloadRequired = next.executor.kernel !== this.#config.executor.kernel;
|
|
252
|
+
next.executor.kernel = this.#config.executor.kernel;
|
|
243
253
|
next.schema.mode = this.#config.schema.mode;
|
|
244
254
|
if (next.schema.mode === "enforce" && next.executor.kernel === "typescript") {
|
|
245
255
|
next.executor.runtime = "quickjs";
|
|
@@ -398,4 +408,4 @@ var FabricState = class {
|
|
|
398
408
|
export {
|
|
399
409
|
FabricState
|
|
400
410
|
};
|
|
401
|
-
//# sourceMappingURL=chunk-
|
|
411
|
+
//# sourceMappingURL=chunk-MBUOWFDL.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/fabric-state.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ExtensionContext } from \"@earendil-works/pi-coding-agent\";\nimport { resolveAgentDir } from \"./core/agent-dir.js\";\nimport type { ExtensionAPI } from \"@earendil-works/pi-coding-agent\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport { FabricActivityStore } from \"./activity/store.js\";\nimport { CapturedToolCatalog } from \"./capture/catalog.js\";\nimport {\n FABRIC_COMPONENT_PROVIDER_NAMES,\n FABRIC_PROVIDER_COMPONENT_PREFIX,\n} from \"./components/provider-component.js\";\nimport type { FabricOwnedModelGuidance } from \"./components/model-guidance.js\";\nimport type { FabricComponentGraph } from \"./components/types.js\";\nimport {\n loadFabricConfig,\n loadFabricConfigForScope,\n type FabricConfig,\n type FabricResultFormat,\n type FabricSchemaMode,\n} from \"./config.js\";\nimport { FabricSessionApprovals } from \"./core/approval-controller.js\";\nimport { PrewalkController } from \"./prewalk/controller.js\";\nimport { PrewalkDriftTracker } from \"./prewalk/fs-drift.js\";\nimport type { PendingFabricHandoff } from \"./prewalk/handoff.js\";\nimport type { AgentToolResultMessage } from \"./agents/types.js\";\nimport type { FabricExecutionResult } from \"./execution-service.js\";\nimport type {\n FabricParticipantInfo,\n FabricParticipantListOptions,\n FabricPeerInfo,\n} from \"./topology/types.js\";\nimport {\n resolveFabricIdentity,\n type FabricAgentMessageDelivery,\n type FabricAgentMessageResult,\n type FabricMainAgentInfo,\n} from \"./main-agent.js\";\nimport type { FabricActorHostEvent } from \"./actors/types.js\";\nimport type { FabricLifecycleEventType } from \"./lifecycle/types.js\";\nimport type {\n FabricActionDescriptor,\n FabricComponentDefinition,\n FabricProvider,\n} from \"./protocol.js\";\nimport type { FabricRuntimeState } from \"./fabric-runtime-state.js\";\nimport type { FabricRuntimePaths } from \"./runtime-paths.js\";\n\nexport interface FabricStateOptions {\n paths?: FabricRuntimePaths;\n runtimeLoader?: () => Promise<typeof import(\"./fabric-runtime-state.js\")>;\n}\n\ntype ActivationHook = (context: ExtensionContext) => void | Promise<void>;\ntype ActivationFailureHook = () => void | Promise<void>;\n\nexport class FabricState {\n #runtime: FabricRuntimeState | undefined;\n #activatingRuntime: FabricRuntimeState | undefined;\n #activation: Promise<FabricRuntimeState> | undefined;\n #activationGeneration: number | undefined;\n #config: FabricConfig | undefined;\n #kernelReloadRequired = false;\n\n #cwd: string | undefined;\n #generation = 0;\n #everActivated = false;\n #activationHook: ActivationHook | undefined;\n #activationFailureHook: ActivationFailureHook | undefined;\n readonly #externalProviders = new Map<string, FabricProvider>();\n readonly #externalComponents = new Map<string, FabricComponentDefinition>();\n readonly #options: FabricStateOptions;\n readonly activity = new FabricActivityStore();\n readonly prewalk = new PrewalkController();\n readonly prewalkDrift = new PrewalkDriftTracker();\n readonly sessionApprovals = new FabricSessionApprovals();\n #widgetDismissedAt = 0;\n\n constructor(\n readonly pi: ExtensionAPI,\n readonly capturedTools: CapturedToolCatalog,\n options: FabricStateOptions = {},\n ) {\n this.#options = options;\n }\n\n get kernelReloadRequired(): boolean {\n return this.#kernelReloadRequired;\n }\n\n get initialized(): boolean {\n return this.#current()?.initialized === true;\n }\n\n // Lightweight bootstrap seam: true once configuration is loaded, with no\n // dependency on the heavyweight runtime. Rendering reads this instead of\n // initialized so a resumed session honors bootstrapped presentation\n // preferences while the runtime is intentionally inactive.\n get bootstrapped(): boolean {\n return this.#config !== undefined;\n }\n\n get activated(): boolean {\n return this.#everActivated;\n }\n\n get config(): FabricConfig {\n if (!this.#config) throw new Error(\"Pi Fabric has not bootstrapped\");\n return this.#config;\n }\n\n get cwd(): string | undefined {\n return this.#cwd;\n }\n\n get widgetDismissedAt(): number {\n return this.#current()?.widgetDismissedAt ?? this.#widgetDismissedAt;\n }\n\n set widgetDismissedAt(value: number) {\n this.#widgetDismissedAt = value;\n const runtime = this.#current();\n if (runtime) runtime.widgetDismissedAt = value;\n }\n\n get registry(): FabricRuntimeState[\"registry\"] { return this.#required().registry; }\n get execution(): FabricRuntimeState[\"execution\"] { return this.#required().execution; }\n\n /** Speculative-PTC stream tap; undefined pre-init or when speculation is disabled. */\n get speculationTap(): FabricRuntimeState[\"speculationTap\"] { return this.#runtime?.speculationTap; }\n\n /** Turn-boundary backstop for the speculation store; safe before initialization. */\n resetSpeculation(): void { this.#runtime?.resetSpeculation(); }\n get agents(): FabricRuntimeState[\"agents\"] { return this.#required().agents; }\n get actors(): FabricRuntimeState[\"actors\"] { return this.#required().actors; }\n get globalActors(): FabricRuntimeState[\"globalActors\"] { return this.#required().globalActors; }\n get mesh(): FabricRuntimeState[\"mesh\"] { return this.#required().mesh; }\n get compact(): FabricRuntimeState[\"compact\"] { return this.#required().compact; }\n get repairs(): FabricRuntimeState[\"repairs\"] { return this.#required().repairs; }\n get components(): FabricRuntimeState[\"components\"] { return this.#required().components; }\n\n setActivationHook(hook: ActivationHook, onFailure?: ActivationFailureHook): void {\n this.#activationHook = hook;\n this.#activationFailureHook = onFailure;\n }\n\n async bootstrap(context: ExtensionContext): Promise<void> {\n const generation = ++this.#generation;\n this.#cwd = context.cwd;\n // A failed config load must not leak the previous session's configuration\n // into this one: clear before the read so bootstrapped stays false and\n // presentation falls back to the safe default until a load succeeds.\n this.#config = undefined;\n const config = loadFabricConfig({\n cwd: context.cwd,\n agentDir: resolveAgentDir(),\n projectTrusted: context.isProjectTrusted(),\n });\n this.#config = config;\n this.#kernelReloadRequired = false;\n this.prewalk.cancel();\n this.prewalkDrift.clear();\n this.activity.reset();\n this.sessionApprovals.approvedRisks.clear();\n this.#widgetDismissedAt = 0;\n context.ui.setStatus(\"fabric-prewalk\", undefined);\n\n const pending = this.#activation;\n if (pending) await pending.catch(() => undefined);\n if (generation !== this.#generation) return;\n if (this.#everActivated) await this.#activate(context, true);\n }\n\n async initialize(context: ExtensionContext): Promise<void> {\n if (!this.#config || this.#cwd !== context.cwd) {\n await this.bootstrap(context);\n } else {\n const next = loadFabricConfig({\n cwd: context.cwd,\n agentDir: resolveAgentDir(),\n projectTrusted: context.isProjectTrusted(),\n });\n this.#kernelReloadRequired = next.executor.kernel !== this.#config.executor.kernel;\n next.executor.kernel = this.#config.executor.kernel;\n this.#config = next;\n }\n await this.#activate(context, true);\n }\n\n async ensure(context: ExtensionContext): Promise<void> {\n if (!this.#config || this.#cwd !== context.cwd) await this.bootstrap(context);\n await this.#activate(context, false);\n }\n\n shouldEagerlyActivate(context: ExtensionContext): boolean {\n if (\n process.env.PI_FABRIC_CAPABILITY_REQUIREMENTS !== undefined &&\n Boolean(process.env.PI_FABRIC_CAPABILITY_DIGEST)\n ) return true;\n if (this.config.prewalk.alwaysRearm) return true;\n if (this.config.components.some((component) => component.disabled !== true)) return true;\n if (!context.isProjectTrusted() || !this.config.mesh.enabled || this.config.schema.mode === \"enforce\") {\n return false;\n }\n const sessionId = context.sessionManager.getSessionId();\n if (resolveFabricIdentity(sessionId).identity.kind !== \"main\") return false;\n const projectRoot = process.env.PI_FABRIC_PROJECT_ROOT ?? context.cwd;\n const meshRoot = process.env.PI_FABRIC_MESH_ROOT ??\n (this.config.mesh.root\n ? path.resolve(projectRoot, this.config.mesh.root)\n : path.join(projectRoot, \".pi\", \"fabric\", \"mesh\"));\n const fabricSessionId = process.env.PI_FABRIC_SESSION_ID?.trim() || sessionId;\n const actorRoots = [\n path.join(meshRoot, \"actors\"),\n path.join(meshRoot, \"actors\", fabricSessionId),\n ];\n return actorRoots.some((actorRoot) => {\n try {\n const registry = JSON.parse(fs.readFileSync(path.join(actorRoot, \"actors.json\"), \"utf8\")) as unknown;\n if (typeof registry !== \"object\" || registry === null || Array.isArray(registry)) return false;\n const actors = (registry as { actors?: unknown }).actors;\n return Array.isArray(actors) && actors.some((value) => {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false;\n const actor = value as Record<string, unknown>;\n return typeof actor.id === \"string\" && /^[a-f0-9]{32}$/.test(actor.id) &&\n typeof actor.name === \"string\" && /^[a-zA-Z0-9][a-zA-Z0-9 _.-]{0,59}$/.test(actor.name) &&\n typeof actor.instructions === \"string\" &&\n Buffer.byteLength(actor.instructions, \"utf8\") <= this.config.mesh.maxEventBytes &&\n typeof actor.createdAt === \"number\" && Number.isFinite(actor.createdAt);\n });\n } catch {\n return false;\n }\n });\n }\n\n mainAgentInfo(context?: ExtensionContext): FabricMainAgentInfo { return this.#required().mainAgentInfo(context); }\n peerInfos(): FabricPeerInfo[] { return this.#current()?.peerInfos() ?? []; }\n componentGraph(): FabricComponentGraph {\n return this.#current()?.componentGraph() ?? { components: [], edges: [], cycles: [] };\n }\n modelGuidance(): FabricOwnedModelGuidance[] { return this.#current()?.modelGuidance() ?? []; }\n participantInfos(options: FabricParticipantListOptions = {}): FabricParticipantInfo[] {\n return this.#current()?.participantInfos(options) ?? [];\n }\n queueUserMessage(targetId: string, message: string, delivery: FabricAgentMessageDelivery): Promise<FabricAgentMessageResult> {\n return this.#required().queueUserMessage(targetId, message, delivery);\n }\n stopParticipant(targetId: string): Promise<unknown> { return this.#required().stopParticipant(targetId); }\n claimHandoff(execution: FabricExecutionResult, sessionId: string, resultFormat: FabricResultFormat, outerToolCallId: string): Promise<PendingFabricHandoff | undefined> {\n return this.#required().claimHandoff(execution, sessionId, resultFormat, outerToolCallId);\n }\n runHandoffAtBoundary(pending: PendingFabricHandoff, result: AgentToolResultMessage, context: ExtensionContext): Promise<Record<string, unknown>> {\n return this.#required().runHandoffAtBoundary(pending, result, context);\n }\n noteMainActivity(context: ExtensionContext): void { this.#current()?.noteMainActivity(context); }\n dispatchHostEvent(event: FabricActorHostEvent, payload: unknown, context: ExtensionContext): number {\n return this.#current()?.dispatchHostEvent(event, payload, context) ?? 0;\n }\n publishHostLifecycle(event: FabricLifecycleEventType, payload: unknown): Promise<void> {\n return this.#current()?.publishHostLifecycle(event, payload) ?? Promise.resolve();\n }\n\n registerExternal(provider: FabricProvider, options: { overwrite?: boolean } = {}): void {\n if (\n provider.name === \"fabric\" ||\n provider.name === \"components\" ||\n FABRIC_COMPONENT_PROVIDER_NAMES.some((name) => name === provider.name)\n ) {\n throw new Error(`Reserved Fabric provider name: ${provider.name}`);\n }\n if (this.#externalProviders.has(provider.name) && !options.overwrite) {\n throw new Error(`Fabric provider already registered: ${provider.name}`);\n }\n this.#externalProviders.set(provider.name, provider);\n this.#current()?.registerExternal(provider, options);\n }\n\n registerExternalComponent(\n component: FabricComponentDefinition,\n options: { overwrite?: boolean } = {},\n ): void {\n if (component.name.startsWith(FABRIC_PROVIDER_COMPONENT_PREFIX)) {\n throw new Error(`Reserved Fabric component name: ${component.name}`);\n }\n if (this.#externalComponents.has(component.name) && !options.overwrite) {\n throw new Error(`Fabric component already registered: ${component.name}`);\n }\n this.#externalComponents.set(component.name, component);\n this.#current()?.registerExternalComponent(component, options);\n }\n\n reloadConfig(context: ExtensionContext): void {\n const next = loadFabricConfig({\n cwd: context.cwd,\n agentDir: resolveAgentDir(),\n projectTrusted: context.isProjectTrusted(),\n });\n if (this.#config) {\n // Pi skill discovery is additive. Keep execution aligned with the loaded\n // skill tree until Pi reload creates a fresh extension/resource runtime.\n this.#kernelReloadRequired = next.executor.kernel !== this.#config.executor.kernel;\n next.executor.kernel = this.#config.executor.kernel;\n next.schema.mode = this.#config.schema.mode;\n // Isolate the selected language, including when a live schema override\n // differs from disk. CPython selects its OS sandbox at execution time.\n if (next.schema.mode === \"enforce\" && next.executor.kernel === \"typescript\") {\n next.executor.runtime = \"quickjs\";\n }\n }\n this.#config = next;\n this.#runtime?.reloadConfig(context, next);\n }\n\n // Ephemeral, session-only schema mode: mutates the live config (guidance,\n // resolved-action gate, and executor runtime all read it per call) without\n // touching fabric.json, so the next session starts from the configured mode.\n // reloadConfig preserves the override like the startup mode does.\n setSchemaMode(context: ExtensionContext, mode: FabricSchemaMode): void {\n if (!this.#config) throw new Error(\"Fabric is not initialized\");\n const previous = this.#config.schema.mode;\n if (mode === \"enforce\" && previous !== \"enforce\" && !this.#config.fullCodeMode) {\n throw new Error(\n \"Schema enforce requires full code mode; enable fullCodeMode or start a session with schema.mode=enforce\",\n );\n }\n this.#config.schema.mode = mode;\n if (mode === \"enforce\") {\n if (this.#config.executor.kernel === \"typescript\") this.#config.executor.runtime = \"quickjs\";\n } else if (previous === \"enforce\") {\n this.#config.executor.runtime = this.#diskConfig(context).executor.runtime;\n }\n this.#runtime?.setSchemaMode(mode, this.#config.executor.runtime);\n }\n\n schemaStatus(context: ExtensionContext): {\n mode: FabricSchemaMode;\n source: \"config\" | \"session override\";\n executorRuntime: string;\n } {\n const disk = this.#diskConfig(context);\n const mode = this.#config?.schema.mode ?? disk.schema.mode;\n return {\n mode,\n source: this.#config && this.#config.schema.mode !== disk.schema.mode\n ? \"session override\"\n : \"config\",\n executorRuntime: (this.#config ?? disk).executor.kernel === \"python\"\n ? (this.#config ?? disk).executor.pythonRuntime\n : this.#config?.executor.runtime ?? disk.executor.runtime,\n };\n }\n\n #diskConfig(context: ExtensionContext): FabricConfig {\n const projectTrusted = context.isProjectTrusted();\n return loadFabricConfigForScope(\n { cwd: context.cwd, agentDir: resolveAgentDir(), projectTrusted },\n projectTrusted ? \"project\" : \"global\",\n );\n }\n\n async shutdown(): Promise<void> {\n const generation = ++this.#generation;\n const activation = this.#activation;\n if (activation) await activation.catch(() => undefined);\n if (generation !== this.#generation) return;\n\n const runtime = this.#runtime;\n this.#runtime = undefined;\n try {\n await runtime?.shutdown();\n } finally {\n if (generation === this.#generation) {\n this.#config = undefined;\n this.#cwd = undefined;\n this.#externalProviders.clear();\n this.#externalComponents.clear();\n this.#everActivated = false;\n this.activity.reset();\n this.prewalk.cancel();\n this.prewalkDrift.clear();\n }\n }\n }\n\n async #activate(context: ExtensionContext, reinitialize: boolean): Promise<FabricRuntimeState> {\n if (this.#activation) {\n if (this.#activationGeneration === this.#generation) return this.#activation;\n await this.#activation.catch(() => undefined);\n return this.#activate(context, reinitialize);\n }\n if (this.#runtime?.initialized && !reinitialize) return this.#runtime;\n\n const generation = this.#generation;\n const config = this.config;\n const existing = this.#runtime;\n const reusable = existing?.initialized ? existing : undefined;\n const orphan = existing && !existing.initialized ? existing : undefined;\n this.#runtime = undefined;\n let candidate: FabricRuntimeState | undefined;\n const assertCurrent = (): void => {\n if (generation !== this.#generation) {\n throw new Error(\"Pi Fabric activation was superseded by a session change\");\n }\n };\n const activation = (async () => {\n try {\n await orphan?.shutdown().catch(() => undefined);\n assertCurrent();\n candidate = reusable ?? await this.#createRuntime();\n if (!reusable) {\n for (const component of this.#externalComponents.values()) {\n candidate.registerExternalComponent(component, { overwrite: true });\n }\n }\n await candidate.initialize(context, config);\n assertCurrent();\n for (const provider of this.#externalProviders.values()) {\n candidate.registerExternal(provider, { overwrite: true });\n }\n await candidate.settleComponents?.();\n assertCurrent();\n this.#activatingRuntime = candidate;\n candidate.widgetDismissedAt = this.#widgetDismissedAt;\n await this.#activationHook?.(context);\n assertCurrent();\n this.#runtime = candidate;\n this.#activatingRuntime = undefined;\n this.#everActivated = true;\n return candidate;\n } catch (error) {\n try {\n await this.#activationFailureHook?.();\n } catch {\n // Cleanup is best-effort; preserve the activation failure.\n }\n if (this.#activatingRuntime === candidate) this.#activatingRuntime = undefined;\n if (candidate) await candidate.shutdown().catch(() => undefined);\n if (this.#runtime === candidate) this.#runtime = undefined;\n throw error;\n }\n })();\n this.#activation = activation;\n this.#activationGeneration = generation;\n void activation.finally(() => {\n if (this.#activation === activation) {\n this.#activation = undefined;\n this.#activationGeneration = undefined;\n }\n }).catch(() => undefined);\n return activation;\n }\n\n async #createRuntime(): Promise<FabricRuntimeState> {\n const module = await (this.#options.runtimeLoader?.() ?? import(\"./fabric-runtime-state.js\"));\n return new module.FabricRuntimeState(\n this.pi,\n this.capturedTools,\n {\n activity: this.activity,\n prewalk: this.prewalk,\n prewalkDrift: this.prewalkDrift,\n sessionApprovals: this.sessionApprovals,\n ...(this.#options.paths ? { paths: this.#options.paths } : {}),\n },\n );\n }\n\n #current(): FabricRuntimeState | undefined {\n return this.#runtime ?? this.#activatingRuntime;\n }\n\n #required(): FabricRuntimeState {\n const runtime = this.#current();\n if (!runtime?.initialized) throw new Error(\"Pi Fabric has not activated\");\n return runtime;\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fabric.d.ts","sourceRoot":"","sources":["../../src/commands/fabric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA8C9D,UAAU,iBAAiB;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AA6HD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"fabric.d.ts","sourceRoot":"","sources":["../../src/commands/fabric.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAE3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAKtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AA8C9D,UAAU,iBAAiB;IACzB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,aAAa,EAAE,mBAAmB,CAAC;IACnC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,kBAAkB,EAAE,MAAM,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;CACjC;AA6HD,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAw+BrF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel-skills.d.ts","sourceRoot":"","sources":["../../src/core/kernel-skills.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,EAAE,QAAQ,YAAY,KAAG,MAAM,EAM3E,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Skill } from "@earendil-works/pi-coding-agent";
|
|
2
|
-
export declare const restoreSkillsForFullCodePrompt: (systemPrompt: string, skills: readonly Skill[]) => string;
|
|
2
|
+
export declare const restoreSkillsForFullCodePrompt: (systemPrompt: string, skills: readonly Skill[], fullCodeMode?: boolean) => string;
|
|
3
3
|
//# sourceMappingURL=skill-prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-prompt.d.ts","sourceRoot":"","sources":["../../src/core/skill-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAW7D,eAAO,MAAM,8BAA8B,GACzC,cAAc,MAAM,EACpB,QAAQ,SAAS,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"skill-prompt.d.ts","sourceRoot":"","sources":["../../src/core/skill-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAW7D,eAAO,MAAM,8BAA8B,GACzC,cAAc,MAAM,EACpB,QAAQ,SAAS,KAAK,EAAE,EACxB,sBAAmB,KAClB,MAkBF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-guidance.d.ts","sourceRoot":"","sources":["../../src/core/system-guidance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,eAAO,MAAM,6BAA6B,GAAI,cAAc,OAAO,EAAE,SAAQ,YAA2B,EAAE,gBAAe,SAAS,GAAG,OAAiB,KAAG,
|
|
1
|
+
{"version":3,"file":"system-guidance.d.ts","sourceRoot":"","sources":["../../src/core/system-guidance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIzD,eAAO,MAAM,6BAA6B,GAAI,cAAc,OAAO,EAAE,SAAQ,YAA2B,EAAE,gBAAe,SAAS,GAAG,OAAiB,KAAG,MAa5I,CAAC;AAEd,eAAO,MAAM,8BAA8B,GAAI,cAAc,OAAO,EAAE,SAAQ,YAA2B,EAAE,gBAAe,SAAS,GAAG,OAAiB,KAAG,MAOiL,CAAC;AAG5U,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAqCD,eAAO,MAAM,2BAA2B,GACtC,OAAO,aAAa,CAAC,yBAAyB,CAAC,EAC/C,eAAe,WAAW,CAAC,MAAM,CAAC,KACjC,MAAM,GAAG,SA8BX,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,MAAM,KAAK,GAAG,OAAO,GAAG,SAAS,KAAG,MAAM,GAAG,SAQjF,CAAC"}
|
package/dist/fabric-state.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ export declare class FabricState {
|
|
|
33
33
|
readonly prewalkDrift: PrewalkDriftTracker;
|
|
34
34
|
readonly sessionApprovals: FabricSessionApprovals;
|
|
35
35
|
constructor(pi: ExtensionAPI, capturedTools: CapturedToolCatalog, options?: FabricStateOptions);
|
|
36
|
+
get kernelReloadRequired(): boolean;
|
|
36
37
|
get initialized(): boolean;
|
|
37
38
|
get bootstrapped(): boolean;
|
|
38
39
|
get activated(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fabric-state.d.ts","sourceRoot":"","sources":["../src/fabric-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAExE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAK3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAEV,yBAAyB,EACzB,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,2BAA2B,CAAC,CAAC,CAAC;CAC3E;AAED,KAAK,cAAc,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1E,KAAK,qBAAqB,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAExD,qBAAa,WAAW;;
|
|
1
|
+
{"version":3,"file":"fabric-state.d.ts","sourceRoot":"","sources":["../src/fabric-state.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AA4JzC,wBAA8B,QAAQ,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,iCAAiC,CAAC;AA4JzC,wBAA8B,QAAQ,CAAC,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAgvBtE;AAED,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FabricState
|
|
3
|
-
} from "./chunks/chunk-
|
|
3
|
+
} from "./chunks/chunk-MBUOWFDL.js";
|
|
4
4
|
import {
|
|
5
5
|
arcItemStyled,
|
|
6
6
|
captureFabricAgentPreviews,
|
|
@@ -1057,6 +1057,10 @@ ${top}` : "fingerprints: (none this session)"
|
|
|
1057
1057
|
suspendToolCapture();
|
|
1058
1058
|
throw error;
|
|
1059
1059
|
}
|
|
1060
|
+
if (state.kernelReloadRequired) {
|
|
1061
|
+
await context.reload();
|
|
1062
|
+
return;
|
|
1063
|
+
}
|
|
1060
1064
|
context.ui.notify("Pi Fabric reloaded", "info");
|
|
1061
1065
|
deps.refreshToolDisplay?.();
|
|
1062
1066
|
return;
|
|
@@ -1064,6 +1068,7 @@ ${top}` : "fingerprints: (none this session)"
|
|
|
1064
1068
|
if (command === "settings") {
|
|
1065
1069
|
const { openFabricSettings } = await import("./ui/settings.js");
|
|
1066
1070
|
await openFabricSettings(context, {
|
|
1071
|
+
reloadResources: () => context.reload(),
|
|
1067
1072
|
state,
|
|
1068
1073
|
applyFabricMode,
|
|
1069
1074
|
capturedTools,
|
|
@@ -1967,6 +1972,7 @@ import { existsSync as existsSync2, readFileSync as readFileSync2 } from "node:f
|
|
|
1967
1972
|
import * as path4 from "node:path";
|
|
1968
1973
|
var fabricExecutionKernelGuidance = (fullCodeMode, kernel = "typescript", pythonRuntime = "monty") => [
|
|
1969
1974
|
kernel === "python" ? `Configured fabric_exec kernel: Python (${pythonRuntime === "monty" ? "Monty sandboxed subset" : "CPython"}). Write Python only in \`code\`: top-level await/return, dicts, True/False/None, and asyncio.gather. There is no per-call language switch.` : "Configured fabric_exec kernel: TypeScript. Write TypeScript only in `code`; top-level await and return are supported.",
|
|
1975
|
+
"The configured kernel is exclusive for Fabric orchestration, including when skills or earlier messages show another language. Do not invoke another interpreter through shell tools or native subprocesses merely to run Fabric orchestration in a different language. Project builds, tests, and explicitly requested interpreter work remain legitimate shell commands.",
|
|
1970
1976
|
fullCodeMode ? "Pi Fabric full code mode: `fabric_exec` is the only way to call Pi core tools \u2014 use them as `pi.*` inside `code`." : "Pi Fabric is in orchestration-only mode. Pi core and registered extension tools stay on their native direct execution path; inside fabric_exec, `pi.*` and `extensions.*` are unavailable.",
|
|
1971
1977
|
// Files the model has not opened (images in particular) must be read before
|
|
1972
1978
|
// use; this line rides the turn-stable kernel guidance so provider prefix
|
|
@@ -2037,23 +2043,33 @@ var SKILL_SECTION_HEADING = "The following skills provide specialized instructio
|
|
|
2037
2043
|
var PI_SKILL_LOAD_INSTRUCTION = "Use the read tool to load a skill's file when the task matches its description.";
|
|
2038
2044
|
var FABRIC_SKILL_LOAD_INSTRUCTION = "Use `pi.read` inside `fabric_exec` to load a skill's file when the task matches its description.";
|
|
2039
2045
|
var CWD_MARKER = "\nCurrent working directory:";
|
|
2040
|
-
var restoreSkillsForFullCodePrompt = (systemPrompt, skills) => {
|
|
2046
|
+
var restoreSkillsForFullCodePrompt = (systemPrompt, skills, fullCodeMode = true) => {
|
|
2041
2047
|
const section = formatSkillsForPrompt([...skills]).replace(
|
|
2042
2048
|
PI_SKILL_LOAD_INSTRUCTION,
|
|
2043
|
-
FABRIC_SKILL_LOAD_INSTRUCTION
|
|
2049
|
+
fullCodeMode ? FABRIC_SKILL_LOAD_INSTRUCTION : PI_SKILL_LOAD_INSTRUCTION
|
|
2044
2050
|
);
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
FABRIC_SKILL_LOAD_INSTRUCTION
|
|
2050
|
-
);
|
|
2051
|
+
const start = systemPrompt.indexOf(SKILL_SECTION_HEADING);
|
|
2052
|
+
const end = start < 0 ? -1 : systemPrompt.indexOf("</available_skills>", start);
|
|
2053
|
+
if (start >= 0 && end >= 0) {
|
|
2054
|
+
return systemPrompt.slice(0, start) + section.trimStart() + systemPrompt.slice(end + "</available_skills>".length);
|
|
2051
2055
|
}
|
|
2056
|
+
if (!section) return systemPrompt;
|
|
2052
2057
|
const cwdIndex = systemPrompt.lastIndexOf(CWD_MARKER);
|
|
2053
2058
|
if (cwdIndex < 0) return `${systemPrompt}${section}`;
|
|
2054
2059
|
return `${systemPrompt.slice(0, cwdIndex)}${section}${systemPrompt.slice(cwdIndex)}`;
|
|
2055
2060
|
};
|
|
2056
2061
|
|
|
2062
|
+
// src/core/kernel-skills.ts
|
|
2063
|
+
import { statSync } from "node:fs";
|
|
2064
|
+
import path5 from "node:path";
|
|
2065
|
+
var fabricSkillPaths = (root, kernel) => {
|
|
2066
|
+
const selected = path5.join(root, kernel);
|
|
2067
|
+
if (!statSync(selected, { throwIfNoEntry: false })?.isDirectory()) {
|
|
2068
|
+
throw new Error(`Missing Fabric ${kernel} skill tree: ${selected}. Reinstall Fabric; no other-kernel fallback is available.`);
|
|
2069
|
+
}
|
|
2070
|
+
return [selected];
|
|
2071
|
+
};
|
|
2072
|
+
|
|
2057
2073
|
// src/core/proxy-contract.ts
|
|
2058
2074
|
var PROXY_CONTRACT_CUSTOM_TYPE = "pi-fabric-proxy";
|
|
2059
2075
|
var FABRIC_EXEC_TOOL = "fabric_exec";
|
|
@@ -2239,8 +2255,8 @@ var formatFailureProgress = (trace) => {
|
|
|
2239
2255
|
);
|
|
2240
2256
|
if (completed.length === 0) return void 0;
|
|
2241
2257
|
const summaries = completed.slice(0, MAX_COMPLETED_CALLS).map((operation) => {
|
|
2242
|
-
const
|
|
2243
|
-
return typeof
|
|
2258
|
+
const path10 = operation.args.path;
|
|
2259
|
+
return typeof path10 === "string" ? `${operation.ref}(${compactPath(path10)})` : operation.ref;
|
|
2244
2260
|
});
|
|
2245
2261
|
const omitted = completed.length - summaries.length;
|
|
2246
2262
|
return [
|
|
@@ -2573,12 +2589,12 @@ var PartialResultObserver = class {
|
|
|
2573
2589
|
// src/output-budget.ts
|
|
2574
2590
|
import { mkdtemp, writeFile } from "node:fs/promises";
|
|
2575
2591
|
import { tmpdir } from "node:os";
|
|
2576
|
-
import
|
|
2592
|
+
import path6 from "node:path";
|
|
2577
2593
|
var MAX_FAILURE_MODEL_OUTPUT_CHARS = 2e4;
|
|
2578
2594
|
var modelOutputBudget = (configuredMaxChars, success) => success ? configuredMaxChars : Math.min(configuredMaxChars, MAX_FAILURE_MODEL_OUTPUT_CHARS);
|
|
2579
2595
|
var writeOutputArtifact = async (content) => {
|
|
2580
|
-
const directory = await mkdtemp(
|
|
2581
|
-
const artifactPath =
|
|
2596
|
+
const directory = await mkdtemp(path6.join(tmpdir(), "pi-fabric-output-"));
|
|
2597
|
+
const artifactPath = path6.join(directory, "output.txt");
|
|
2582
2598
|
await writeFile(artifactPath, content, { encoding: "utf8", mode: 384 });
|
|
2583
2599
|
return artifactPath;
|
|
2584
2600
|
};
|
|
@@ -3511,7 +3527,7 @@ var classifyToolResult = (input) => {
|
|
|
3511
3527
|
|
|
3512
3528
|
// src/host-compatibility.ts
|
|
3513
3529
|
import { existsSync as existsSync3, readFileSync as readFileSync3, realpathSync as realpathSync2 } from "node:fs";
|
|
3514
|
-
import
|
|
3530
|
+
import path7 from "node:path";
|
|
3515
3531
|
var MINIMUM_PI_HOST_VERSION = "0.80.6";
|
|
3516
3532
|
var PI_HOST_PACKAGE_NAMES = /* @__PURE__ */ new Set([
|
|
3517
3533
|
"@earendil-works/pi-coding-agent",
|
|
@@ -3542,12 +3558,12 @@ var detectPiHostVersion = (cliPath = process.argv[1]) => {
|
|
|
3542
3558
|
if (!cliPath) return void 0;
|
|
3543
3559
|
let directory;
|
|
3544
3560
|
try {
|
|
3545
|
-
directory =
|
|
3561
|
+
directory = path7.dirname(realpathSync2(cliPath));
|
|
3546
3562
|
} catch {
|
|
3547
3563
|
return void 0;
|
|
3548
3564
|
}
|
|
3549
3565
|
while (true) {
|
|
3550
|
-
const manifestPath =
|
|
3566
|
+
const manifestPath = path7.join(directory, "package.json");
|
|
3551
3567
|
if (existsSync3(manifestPath)) {
|
|
3552
3568
|
try {
|
|
3553
3569
|
const manifest = JSON.parse(readFileSync3(manifestPath, "utf8"));
|
|
@@ -3557,7 +3573,7 @@ var detectPiHostVersion = (cliPath = process.argv[1]) => {
|
|
|
3557
3573
|
} catch {
|
|
3558
3574
|
}
|
|
3559
3575
|
}
|
|
3560
|
-
const parent =
|
|
3576
|
+
const parent = path7.dirname(directory);
|
|
3561
3577
|
if (parent === directory) return void 0;
|
|
3562
3578
|
directory = parent;
|
|
3563
3579
|
}
|
|
@@ -3570,7 +3586,7 @@ var piHostCompatibilityWarning = (version = detectPiHostVersion()) => {
|
|
|
3570
3586
|
};
|
|
3571
3587
|
|
|
3572
3588
|
// src/ui/controller.ts
|
|
3573
|
-
import
|
|
3589
|
+
import path8 from "node:path";
|
|
3574
3590
|
|
|
3575
3591
|
// src/ui/snapshot.ts
|
|
3576
3592
|
import { isDeepStrictEqual } from "node:util";
|
|
@@ -4522,7 +4538,7 @@ var FabricUiController = class {
|
|
|
4522
4538
|
logFile: actor.worker.logFile
|
|
4523
4539
|
};
|
|
4524
4540
|
}
|
|
4525
|
-
const retained = actor.lastRunId && actor.logDir ?
|
|
4541
|
+
const retained = actor.lastRunId && actor.logDir ? path8.join(actor.logDir, actor.lastRunId, "events.jsonl") : void 0;
|
|
4526
4542
|
if (retained) return { id: actor.id, status: actor.status, logFile: retained };
|
|
4527
4543
|
if (actor.sessionFile) {
|
|
4528
4544
|
return { id: actor.id, status: actor.status, logFile: actor.sessionFile };
|
|
@@ -4700,16 +4716,15 @@ var registerHandoffCompletionRenderer = (extension) => {
|
|
|
4700
4716
|
};
|
|
4701
4717
|
|
|
4702
4718
|
// src/index.ts
|
|
4703
|
-
import
|
|
4704
|
-
import path8 from "node:path";
|
|
4719
|
+
import path9 from "node:path";
|
|
4705
4720
|
import { fileURLToPath } from "node:url";
|
|
4706
|
-
var FABRIC_EXTENSION_ENTRY_PATH =
|
|
4707
|
-
var FABRIC_ENTRY_DIR =
|
|
4721
|
+
var FABRIC_EXTENSION_ENTRY_PATH = path9.resolve(fileURLToPath(import.meta.url));
|
|
4722
|
+
var FABRIC_ENTRY_DIR = path9.dirname(FABRIC_EXTENSION_ENTRY_PATH);
|
|
4708
4723
|
var FABRIC_RUNTIME_PATHS = {
|
|
4709
4724
|
extension: FABRIC_EXTENSION_ENTRY_PATH,
|
|
4710
|
-
worker:
|
|
4711
|
-
residentHost:
|
|
4712
|
-
skills:
|
|
4725
|
+
worker: path9.join(FABRIC_ENTRY_DIR, "worker.js"),
|
|
4726
|
+
residentHost: path9.join(FABRIC_ENTRY_DIR, "residency", "launcher.js"),
|
|
4727
|
+
skills: path9.resolve(FABRIC_ENTRY_DIR, "..", "skillsets")
|
|
4713
4728
|
};
|
|
4714
4729
|
var FABRIC_SKILLS_DIR = FABRIC_RUNTIME_PATHS.skills;
|
|
4715
4730
|
var componentRegistrationFrom = (value) => {
|
|
@@ -4796,9 +4811,9 @@ async function piFabric(pi) {
|
|
|
4796
4811
|
);
|
|
4797
4812
|
}
|
|
4798
4813
|
);
|
|
4799
|
-
pi.on("resources_discover", async () => {
|
|
4800
|
-
if (
|
|
4801
|
-
return {};
|
|
4814
|
+
pi.on("resources_discover", async (_event, context) => {
|
|
4815
|
+
if (!state.bootstrapped) await state.bootstrap(context);
|
|
4816
|
+
return { skillPaths: fabricSkillPaths(FABRIC_SKILLS_DIR, state.config.executor.kernel) };
|
|
4802
4817
|
});
|
|
4803
4818
|
const fabricTool = createFabricExecTool(
|
|
4804
4819
|
state,
|
|
@@ -5206,7 +5221,7 @@ async function piFabric(pi) {
|
|
|
5206
5221
|
if (!pi.getActiveTools().includes("fabric_exec")) return;
|
|
5207
5222
|
const skills = event.systemPromptOptions.skills ?? [];
|
|
5208
5223
|
const captureSnapshot = state.bootstrapped ? capturePolicy() : void 0;
|
|
5209
|
-
const systemPrompt =
|
|
5224
|
+
const systemPrompt = restoreSkillsForFullCodePrompt(event.systemPrompt, skills, effectiveFullCodeMode);
|
|
5210
5225
|
const skillReferenceGuidance = effectiveFullCodeMode ? buildSkillReferenceGuidance(event.prompt, skills) : void 0;
|
|
5211
5226
|
const currentModel = context.model ? `${context.model.provider}/${context.model.id}` : void 0;
|
|
5212
5227
|
const resolvedGuidance = resolveFabricModelGuidance(state.modelGuidance(), {
|