pi-fabric 0.67.0 → 0.69.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 +1 -1
- package/dist/actors/types.d.ts +2 -2
- package/dist/actors/types.d.ts.map +1 -1
- package/dist/chunks/{chunk-LVTVYK4E.js → chunk-5XQA7QX2.js} +2 -2
- package/dist/chunks/{chunk-IUBTHPXQ.js → chunk-KJ3XSDAH.js} +2 -2
- package/dist/chunks/{chunk-MC6AUT75.js → chunk-KQEYAV5Z.js} +2 -2
- package/dist/chunks/{chunk-ASBRTAJ4.js → chunk-M5AEBRN4.js} +2 -2
- package/dist/chunks/{chunk-NFW7H77W.js → chunk-VRYEGVHR.js} +15 -1
- package/dist/chunks/chunk-VRYEGVHR.js.map +7 -0
- package/dist/chunks/{chunk-C2C4RHVN.js → chunk-WRKD7W34.js} +3 -1
- package/dist/chunks/chunk-WRKD7W34.js.map +7 -0
- package/dist/chunks/{dashboard-S3TINWGZ.js → dashboard-RPCGC33N.js} +7 -5
- package/dist/chunks/{dashboard-S3TINWGZ.js.map → dashboard-RPCGC33N.js.map} +2 -2
- package/dist/chunks/{fabric-runtime-state-LG265P3R.js → fabric-runtime-state-EWOMNWPM.js} +5 -5
- package/dist/chunks/{settings-E2RINXBO.js → settings-J26PVVBO.js} +238 -35
- package/dist/chunks/settings-J26PVVBO.js.map +7 -0
- package/dist/core/proxy-contract.d.ts +18 -0
- package/dist/core/proxy-contract.d.ts.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +108 -12
- package/dist/index.js.map +4 -4
- package/dist/residency/host.js +2 -2
- package/dist/ui/fabric-host-event-selector.d.ts.map +1 -1
- package/dist/ui/fabric-model-selector.d.ts +8 -0
- package/dist/ui/fabric-model-selector.d.ts.map +1 -1
- package/dist/ui/settings.d.ts.map +1 -1
- package/docs/capability-combustion.md +6 -0
- package/docs/configuration.md +1 -1
- package/docs/interface.md +1 -1
- package/package.json +4 -4
- package/dist/chunks/chunk-C2C4RHVN.js.map +0 -7
- package/dist/chunks/chunk-NFW7H77W.js.map +0 -7
- package/dist/chunks/settings-E2RINXBO.js.map +0 -7
- /package/dist/chunks/{chunk-LVTVYK4E.js.map → chunk-5XQA7QX2.js.map} +0 -0
- /package/dist/chunks/{chunk-IUBTHPXQ.js.map → chunk-KJ3XSDAH.js.map} +0 -0
- /package/dist/chunks/{chunk-MC6AUT75.js.map → chunk-KQEYAV5Z.js.map} +0 -0
- /package/dist/chunks/{chunk-ASBRTAJ4.js.map → chunk-M5AEBRN4.js.map} +0 -0
- /package/dist/chunks/{fabric-runtime-state-LG265P3R.js.map → fabric-runtime-state-EWOMNWPM.js.map} +0 -0
package/README.md
CHANGED
|
@@ -118,7 +118,7 @@ Fabric includes a live activity surface in Pi:
|
|
|
118
118
|
|
|
119
119
|
- A compact widget above the chat (like `pi-supervisor`) whose header follows the current phase while its rows show active/completed agents, active actors, and their recent nested tool or code-change activity.
|
|
120
120
|
- `/fabric` (or `/fabric dashboard`): opens the **Activity** and **Topology** views. The user-facing Pi session appears as **Main**. You can queue or steer participants and inspect the project topology.
|
|
121
|
-
- `/fabric settings`: mirrors Pi's `/settings` and writes changes to `fabric.json`.
|
|
121
|
+
- `/fabric settings`: mirrors Pi's `/settings` and writes changes to `fabric.json`. TUI hosts get the searchable settings component; RPC hosts get the same nested sections, value/input/model pickers, list editors, and project/global save scopes through native dialog primitives.
|
|
122
122
|
- `Tool display` (`compact` by default, or `full`) is configured under `/fabric settings` → **UI**; compact elevates the declared display intent, hides the outer TypeScript, and applies to the current transcript immediately. Pi's tool-expand keybinding (`ctrl+o` by default) expands a compact card to the full transcript.
|
|
123
123
|
|
|
124
124
|
See the [interface & commands reference](docs/interface.md) for every view, keybinding, and slash command.
|
package/dist/actors/types.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ import type { FabricLogLine, AgentRunRecord, AgentUsage } from "../agents/types.
|
|
|
5
5
|
import type { FabricCapabilityRequirement } from "../components/types.js";
|
|
6
6
|
import type { FabricParticipantResidency } from "../topology/types.js";
|
|
7
7
|
export type FabricActorPiHostEvent = Exclude<ExtensionEvent["type"], "project_trust">;
|
|
8
|
-
export declare const FABRIC_ACTOR_PI_HOST_EVENTS: readonly ["resources_discover", "session_start", "session_info_changed", "session_before_switch", "session_before_fork", "session_before_compact", "session_compact", "session_compact_failed", "session_shutdown", "session_before_tree", "session_tree", "input", "before_agent_start", "agent_start", "agent_end", "agent_settled", "turn_start", "turn_end", "message_start", "message_update", "message_end", "context", "before_provider_headers", "before_provider_request", "after_provider_response", "tool_execution_start", "tool_call", "tool_execution_update", "tool_result", "tool_execution_end", "model_select", "thinking_level_select", "user_bash"];
|
|
9
|
-
export declare const FABRIC_ACTOR_HOST_EVENTS: readonly ["resources_discover", "session_start", "session_info_changed", "session_before_switch", "session_before_fork", "session_before_compact", "session_compact", "session_compact_failed", "session_shutdown", "session_before_tree", "session_tree", "input", "before_agent_start", "agent_start", "agent_end", "agent_settled", "turn_start", "turn_end", "message_start", "message_update", "message_end", "context", "before_provider_headers", "before_provider_request", "after_provider_response", "tool_execution_start", "tool_call", "tool_execution_update", "tool_result", "tool_execution_end", "model_select", "thinking_level_select", "user_bash", "tool_error"];
|
|
8
|
+
export declare const FABRIC_ACTOR_PI_HOST_EVENTS: readonly ["resources_discover", "session_start", "session_info_changed", "session_before_switch", "session_before_fork", "session_before_compact", "session_compact", "session_compact_failed", "session_shutdown", "session_before_tree", "session_tree", "input", "before_agent_start", "agent_start", "agent_end", "agent_settled", "turn_start", "turn_end", "message_start", "message_update", "message_end", "ui_prompt_start", "ui_prompt_end", "context", "before_provider_headers", "before_provider_request", "after_provider_response", "tool_execution_start", "tool_call", "tool_execution_update", "tool_result", "tool_execution_end", "model_select", "thinking_level_select", "user_bash"];
|
|
9
|
+
export declare const FABRIC_ACTOR_HOST_EVENTS: readonly ["resources_discover", "session_start", "session_info_changed", "session_before_switch", "session_before_fork", "session_before_compact", "session_compact", "session_compact_failed", "session_shutdown", "session_before_tree", "session_tree", "input", "before_agent_start", "agent_start", "agent_end", "agent_settled", "turn_start", "turn_end", "message_start", "message_update", "message_end", "ui_prompt_start", "ui_prompt_end", "context", "before_provider_headers", "before_provider_request", "after_provider_response", "tool_execution_start", "tool_call", "tool_execution_update", "tool_result", "tool_execution_end", "model_select", "thinking_level_select", "user_bash", "tool_error"];
|
|
10
10
|
export type FabricActorHostEvent = (typeof FABRIC_ACTOR_HOST_EVENTS)[number];
|
|
11
11
|
export declare const isFabricActorHostEvent: (value: unknown) => value is FabricActorHostEvent;
|
|
12
12
|
export type FabricActorDelivery = "mailbox" | "steer" | "followUp" | "nextTurn";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/actors/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAEvE,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,CAAC;AAQtF,eAAO,MAAM,2BAA2B,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/actors/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readJsonlPageFromDescriptor
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-WRKD7W34.js";
|
|
4
4
|
|
|
5
5
|
// src/core/call-preview.ts
|
|
6
6
|
var HEADLINE_ARG_KEYS = [
|
|
@@ -1174,4 +1174,4 @@ export {
|
|
|
1174
1174
|
isFabricAgentToolPreview,
|
|
1175
1175
|
recentTranscriptTools
|
|
1176
1176
|
};
|
|
1177
|
-
//# sourceMappingURL=chunk-
|
|
1177
|
+
//# sourceMappingURL=chunk-5XQA7QX2.js.map
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
selectPreviewTextLines,
|
|
6
6
|
shouldSkipWriteDiffBytes,
|
|
7
7
|
shouldSkipWriteDiffComplexity
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-5XQA7QX2.js";
|
|
9
9
|
import {
|
|
10
10
|
resolveShikiTheme
|
|
11
11
|
} from "./chunk-7B55UIZL.js";
|
|
@@ -5070,4 +5070,4 @@ export {
|
|
|
5070
5070
|
isActiveStatus,
|
|
5071
5071
|
orderAgentsByCreation
|
|
5072
5072
|
};
|
|
5073
|
-
//# sourceMappingURL=chunk-
|
|
5073
|
+
//# sourceMappingURL=chunk-KJ3XSDAH.js.map
|
|
@@ -22,7 +22,7 @@ import {
|
|
|
22
22
|
import {
|
|
23
23
|
FABRIC_ACTOR_HOST_EVENTS,
|
|
24
24
|
readJsonlPage
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-WRKD7W34.js";
|
|
26
26
|
import {
|
|
27
27
|
DEFAULT_FABRIC_CONFIG,
|
|
28
28
|
MAX_AGENT_TIMEOUT_MS,
|
|
@@ -6255,4 +6255,4 @@ export {
|
|
|
6255
6255
|
residentRoot,
|
|
6256
6256
|
residentDeliveryPrefix
|
|
6257
6257
|
};
|
|
6258
|
-
//# sourceMappingURL=chunk-
|
|
6258
|
+
//# sourceMappingURL=chunk-KQEYAV5Z.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-IGVDD2HT.js";
|
|
4
4
|
import {
|
|
5
5
|
headlineArg
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5XQA7QX2.js";
|
|
7
7
|
import {
|
|
8
8
|
DynamicBorder
|
|
9
9
|
} from "./chunk-SOBEXOWK.js";
|
|
@@ -2516,4 +2516,4 @@ export {
|
|
|
2516
2516
|
resolveFabricIdentity,
|
|
2517
2517
|
MainAgentController
|
|
2518
2518
|
};
|
|
2519
|
-
//# sourceMappingURL=chunk-
|
|
2519
|
+
//# sourceMappingURL=chunk-M5AEBRN4.js.map
|
|
@@ -91,6 +91,20 @@ var FabricModelSelector = class extends Container {
|
|
|
91
91
|
this.filterModels(this.searchInput.getValue());
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
+
rpcChoices() {
|
|
95
|
+
return this.allEntries.map((entry) => ({
|
|
96
|
+
value: entry.value,
|
|
97
|
+
label: entry.id,
|
|
98
|
+
description: entry.isModel ? `${entry.provider} \xB7 ${entry.name}` : entry.name,
|
|
99
|
+
current: entry.value === this.currentValue
|
|
100
|
+
}));
|
|
101
|
+
}
|
|
102
|
+
selectRpc(value) {
|
|
103
|
+
const entry = this.allEntries.find((candidate) => candidate.value === value);
|
|
104
|
+
if (!entry) return false;
|
|
105
|
+
this.handleSelect(entry);
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
94
108
|
handleSelect(entry) {
|
|
95
109
|
this.onSelectCallback(entry.value);
|
|
96
110
|
}
|
|
@@ -178,4 +192,4 @@ var FabricModelSelector = class extends Container {
|
|
|
178
192
|
export {
|
|
179
193
|
FabricModelSelector
|
|
180
194
|
};
|
|
181
|
-
//# sourceMappingURL=chunk-
|
|
195
|
+
//# sourceMappingURL=chunk-VRYEGVHR.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ui/fabric-model-selector.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Theme } from \"@earendil-works/pi-coding-agent\";\nimport {\n Container,\n type Focusable,\n fuzzyFilter,\n getKeybindings,\n Input,\n Spacer,\n Text,\n} from \"@earendil-works/pi-tui\";\nimport { INHERIT_VALUE, modelKey, sortByLastUsed, type ModelLike, type ModelSource } from \"./model-picker.js\";\n\n/** A single pickable row in the Fabric model selector. */\ninterface ModelEntry {\n /** Value persisted to fabric.json: \"Inherit\" or `provider/id`. */\n value: string;\n /** Main text shown for the row (the model id, or \"Inherit\"). */\n id: string;\n /** Provider badge shown after the id; empty for the Inherit row. */\n provider: string;\n /** Human-readable name shown in the footer line. */\n name: string;\n /** Whether this is a real model (vs. the Inherit sentinel). */\n isModel: boolean;\n}\n\nexport interface FabricModelSelectorChoice {\n value: string;\n label: string;\n description: string;\n current: boolean;\n}\n\nexport interface FabricModelSelectorOptions {\n theme: Theme;\n source: ModelSource;\n /** The currently configured canonical model key or \"Inherit\". */\n currentValue: string;\n onSelect: (value: string) => void;\n onCancel: () => void;\n /** Header line above the search input. Defaults to the global-default wording. */\n headerText?: string;\n /** Label shown for the unset/default row. Defaults to Inherit. */\n inheritLabel?: string;\n /** Description shown for the unset/default row's footer name. */\n inheritName?: string;\n}\n\n/**\n * A /model-style searchable model picker adapted for Fabric: same look\n * (search input, list with `[provider]` badges and a \u2713 on\n * the current row, scroll indicator, and a \"Model Name:\" footer) but it writes\n * the Fabric default-model setting instead of the host's default model, and\n * pins an unset/default row on top. Order respects pi-model-sort (most recently\n * used first); search filters by fuzzy match and re-sorts by recency, matching\n * pi-model-sort's patched /model behavior.\n */\nexport class FabricModelSelector extends Container implements Focusable {\n private readonly theme: Theme;\n private readonly allEntries: ModelEntry[];\n private filteredEntries: ModelEntry[];\n private readonly lastUsed: Record<string, number>;\n private readonly currentKey: string | null;\n private readonly currentValue: string;\n private selectedIndex = 0;\n private readonly searchInput: Input;\n private readonly listContainer = new Container();\n private readonly onSelectCallback: (value: string) => void;\n private readonly onCancelCallback: () => void;\n private readonly headerText: string;\n private readonly inheritLabel: string;\n private readonly inheritName: string;\n private _focused = false;\n\n constructor(options: FabricModelSelectorOptions) {\n super();\n this.theme = options.theme;\n this.lastUsed = options.source.lastUsed;\n this.currentValue = options.currentValue;\n this.currentKey = options.currentValue === INHERIT_VALUE ? null : options.currentValue;\n this.onSelectCallback = options.onSelect;\n this.onCancelCallback = options.onCancel;\n this.headerText =\n options.headerText ??\n \"Default model for Fabric agents and actors. Pick Inherit to use the host session's model.\";\n this.inheritLabel = options.inheritLabel ?? INHERIT_VALUE;\n this.inheritName = options.inheritName ?? \"Use the host session's default model\";\n\n this.allEntries = this.buildEntries(options.source.models);\n this.filteredEntries = this.allEntries;\n const current = this.allEntries.findIndex((entry) => entry.value === this.currentValue);\n this.selectedIndex = current >= 0 ? current : 0;\n\n this.addChild(\n new Text(\n this.theme.fg(\"muted\", this.headerText),\n 0,\n 0,\n ),\n );\n this.addChild(new Spacer(1));\n this.searchInput = new Input();\n this.searchInput.focused = true;\n this.searchInput.onSubmit = () => {\n const entry = this.filteredEntries[this.selectedIndex];\n if (entry) this.handleSelect(entry);\n };\n this.addChild(this.searchInput);\n this.addChild(new Spacer(1));\n this.addChild(this.listContainer);\n this.addChild(new Spacer(1));\n this.updateList();\n }\n\n get focused(): boolean {\n return this._focused;\n }\n\n set focused(value: boolean) {\n this._focused = value;\n this.searchInput.focused = value;\n }\n\n handleInput(keyData: string): void {\n const kb = getKeybindings();\n if (kb.matches(keyData, \"tui.select.up\")) {\n if (this.filteredEntries.length === 0) return;\n this.selectedIndex =\n this.selectedIndex === 0 ? this.filteredEntries.length - 1 : this.selectedIndex - 1;\n this.updateList();\n } else if (kb.matches(keyData, \"tui.select.down\")) {\n if (this.filteredEntries.length === 0) return;\n this.selectedIndex =\n this.selectedIndex === this.filteredEntries.length - 1 ? 0 : this.selectedIndex + 1;\n this.updateList();\n } else if (kb.matches(keyData, \"tui.select.confirm\")) {\n const entry = this.filteredEntries[this.selectedIndex];\n if (entry) this.handleSelect(entry);\n } else if (kb.matches(keyData, \"tui.select.cancel\")) {\n this.onCancelCallback();\n } else {\n this.searchInput.handleInput(keyData);\n this.filterModels(this.searchInput.getValue());\n }\n }\n\n rpcChoices(): FabricModelSelectorChoice[] {\n return this.allEntries.map((entry) => ({\n value: entry.value,\n label: entry.id,\n description: entry.isModel ? `${entry.provider} \u00B7 ${entry.name}` : entry.name,\n current: entry.value === this.currentValue,\n }));\n }\n\n selectRpc(value: string): boolean {\n const entry = this.allEntries.find((candidate) => candidate.value === value);\n if (!entry) return false;\n this.handleSelect(entry);\n return true;\n }\n\n private handleSelect(entry: ModelEntry): void {\n this.onSelectCallback(entry.value);\n }\n\n private buildEntries(models: ModelLike[]): ModelEntry[] {\n const sorted = sortByLastUsed(models, this.lastUsed, this.currentKey);\n const inherit: ModelEntry = {\n value: INHERIT_VALUE,\n id: this.inheritLabel,\n provider: \"\",\n name: this.inheritName,\n isModel: false,\n };\n const modelEntries: ModelEntry[] = sorted.map((model) => ({\n value: modelKey(model.provider, model.id),\n id: model.id,\n provider: model.provider,\n name: model.name ?? model.id,\n isModel: true,\n }));\n return [inherit, ...modelEntries];\n }\n\n /** Filter by fuzzy match, then re-sort by recency (mirrors pi-model-sort). */\n private sortEntries(entries: ModelEntry[]): ModelEntry[] {\n const inherit = entries.find((entry) => !entry.isModel);\n const models = entries.filter((entry) => entry.isModel);\n const sorted = sortByLastUsed(\n models.map((entry) => ({ provider: entry.provider, id: entry.id, entry })),\n this.lastUsed,\n this.currentKey,\n ).map((item) => item.entry);\n return inherit ? [inherit, ...sorted] : sorted;\n }\n\n private filterModels(query: string): void {\n const matches = query.trim()\n ? fuzzyFilter(this.allEntries, query, (entry) => this.searchText(entry))\n : this.allEntries;\n this.filteredEntries = this.sortEntries(matches);\n const current = this.filteredEntries.findIndex((entry) => entry.value === this.currentValue);\n this.selectedIndex =\n current >= 0\n ? current\n : Math.min(this.selectedIndex, Math.max(0, this.filteredEntries.length - 1));\n this.updateList();\n }\n\n /** Mirrors getModelSelectorSearchText from pi's /model selector. */\n private searchText(entry: ModelEntry): string {\n if (!entry.isModel) return `${entry.id} ${entry.name}`;\n return `${entry.provider} ${entry.provider}/${entry.id} ${entry.provider} ${entry.id} ${entry.name}`;\n }\n\n private updateList(): void {\n this.listContainer.clear();\n const maxVisible = 10;\n const total = this.filteredEntries.length;\n const startIndex = Math.max(\n 0,\n Math.min(this.selectedIndex - Math.floor(maxVisible / 2), total - maxVisible),\n );\n const endIndex = Math.min(startIndex + maxVisible, total);\n for (let i = startIndex; i < endIndex; i++) {\n const entry = this.filteredEntries[i];\n if (!entry) continue;\n const isSelected = i === this.selectedIndex;\n const isCurrent = entry.value === this.currentValue;\n const badge = entry.provider ? ` ${this.theme.fg(\"muted\", `[${entry.provider}]`)}` : \"\";\n const check = isCurrent ? this.theme.fg(\"success\", \" \u2713\") : \"\";\n const line = isSelected\n ? `${this.theme.fg(\"accent\", \"\\u2192 \")}${this.theme.fg(\"accent\", entry.id)}${badge}${check}`\n : ` ${entry.id}${badge}${check}`;\n this.listContainer.addChild(new Text(line, 0, 0));\n }\n if (startIndex > 0 || endIndex < total) {\n this.listContainer.addChild(\n new Text(this.theme.fg(\"muted\", ` (${this.selectedIndex + 1}/${total})`), 0, 0),\n );\n }\n if (total === 0) {\n this.listContainer.addChild(new Text(this.theme.fg(\"muted\", \" No matching models\"), 0, 0));\n } else {\n const selected = this.filteredEntries[this.selectedIndex];\n this.listContainer.addChild(new Spacer(1));\n this.listContainer.addChild(\n new Text(\n this.theme.fg(\"muted\", ` Model Name: ${selected ? selected.name : \"\"}`),\n 0,\n 0,\n ),\n );\n }\n }\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -22,6 +22,8 @@ var FABRIC_ACTOR_PI_HOST_EVENTS = defineFabricActorPiHostEvents([
|
|
|
22
22
|
"message_start",
|
|
23
23
|
"message_update",
|
|
24
24
|
"message_end",
|
|
25
|
+
"ui_prompt_start",
|
|
26
|
+
"ui_prompt_end",
|
|
25
27
|
"context",
|
|
26
28
|
"before_provider_headers",
|
|
27
29
|
"before_provider_request",
|
|
@@ -140,4 +142,4 @@ export {
|
|
|
140
142
|
readJsonlPageFromDescriptor,
|
|
141
143
|
readJsonlPage
|
|
142
144
|
};
|
|
143
|
-
//# sourceMappingURL=chunk-
|
|
145
|
+
//# sourceMappingURL=chunk-WRKD7W34.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/actors/types.ts", "../../src/log-tail.ts"],
|
|
4
|
+
"sourcesContent": ["import type { ExtensionEvent } from \"@earendil-works/pi-coding-agent\";\nimport type { FabricAgentRunner, FabricAgentTransport } from \"../config.js\";\nimport type { FabricThinking } from \"../thinking.js\";\nimport type { FabricLogLine, AgentRunRecord, AgentUsage } from \"../agents/types.js\";\nimport type { FabricCapabilityRequirement } from \"../components/types.js\";\nimport type { FabricParticipantResidency } from \"../topology/types.js\";\n\nexport type FabricActorPiHostEvent = Exclude<ExtensionEvent[\"type\"], \"project_trust\">;\n\nconst defineFabricActorPiHostEvents = <\n const Events extends readonly FabricActorPiHostEvent[],\n>(\n events: Exclude<FabricActorPiHostEvent, Events[number]> extends never ? Events : never,\n): Events => events;\n\nexport const FABRIC_ACTOR_PI_HOST_EVENTS = defineFabricActorPiHostEvents([\n \"resources_discover\",\n \"session_start\",\n \"session_info_changed\",\n \"session_before_switch\",\n \"session_before_fork\",\n \"session_before_compact\",\n \"session_compact\",\n \"session_compact_failed\",\n \"session_shutdown\",\n \"session_before_tree\",\n \"session_tree\",\n \"input\",\n \"before_agent_start\",\n \"agent_start\",\n \"agent_end\",\n \"agent_settled\",\n \"turn_start\",\n \"turn_end\",\n \"message_start\",\n \"message_update\",\n \"message_end\",\n \"ui_prompt_start\",\n \"ui_prompt_end\",\n \"context\",\n \"before_provider_headers\",\n \"before_provider_request\",\n \"after_provider_response\",\n \"tool_execution_start\",\n \"tool_call\",\n \"tool_execution_update\",\n \"tool_result\",\n \"tool_execution_end\",\n \"model_select\",\n \"thinking_level_select\",\n \"user_bash\",\n]);\n\nexport const FABRIC_ACTOR_HOST_EVENTS = [\n ...FABRIC_ACTOR_PI_HOST_EVENTS,\n \"tool_error\",\n] as const;\n\nexport type FabricActorHostEvent = (typeof FABRIC_ACTOR_HOST_EVENTS)[number];\n\nconst FABRIC_ACTOR_HOST_EVENT_SET: ReadonlySet<string> = new Set(FABRIC_ACTOR_HOST_EVENTS);\n\nexport const isFabricActorHostEvent = (value: unknown): value is FabricActorHostEvent =>\n typeof value === \"string\" && FABRIC_ACTOR_HOST_EVENT_SET.has(value);\n\nexport type FabricActorDelivery = \"mailbox\" | \"steer\" | \"followUp\" | \"nextTurn\";\nexport type FabricActorResponseMode = \"text\" | \"directive\";\nexport type FabricActorStatus = \"idle\" | \"queued\" | \"running\" | \"stopped\";\nexport type FabricActorBindingScope = \"session\" | \"project\";\n\nexport interface FabricActorRunBinding {\n model?: string;\n thinking?: FabricThinking;\n}\n\ninterface FabricActorBindingView extends FabricActorRunBinding {\n scope: \"session\";\n sessionId: string;\n updatedAt?: number;\n}\n\ninterface FabricActorProjectDefaults extends FabricActorRunBinding {\n scope: \"project\";\n}\n\nexport interface FabricActorValidWhileSource {\n version: 1;\n source: string;\n}\n\nexport interface FabricActorValidityDecision {\n valid: boolean;\n reason?: string;\n}\n\nexport type FabricActorActivation =\n | {\n kind: \"hostEvent\";\n id: string;\n source: string;\n sequence: number;\n createdAt: number;\n event: FabricActorHostEvent;\n mainRevision: number;\n taskRevision: number;\n signal?: unknown;\n }\n | {\n kind: \"direct\";\n id: string;\n source: string;\n sequence: number;\n createdAt: number;\n }\n | {\n kind: \"mesh\";\n id: string;\n source: string;\n sequence: number;\n createdAt: number;\n topic: string;\n };\n\nexport interface FabricActorValidityFacts {\n activation: FabricActorActivation;\n current: {\n latestActivationSequence: number;\n mainRevision: number;\n taskRevision: number;\n idle: boolean;\n now: number;\n };\n}\n\nexport interface FabricActorRequest {\n name: string;\n instructions: string;\n /** Asynchronous observations of session-bound Pi events plus synthetic tool_error. */\n events?: FabricActorHostEvent[];\n topics?: string[];\n /** Defaults to mailbox. steer/followUp require an explicit triggerTurn choice. */\n delivery?: FabricActorDelivery;\n responseMode?: FabricActorResponseMode;\n /** Required for steer/followUp; must be false or omitted for mailbox/nextTurn. */\n triggerTurn?: boolean;\n coalesce?: boolean;\n /** session actors stop with their Pi host; durable actors transfer to a resident host. */\n residency?: FabricParticipantResidency;\n runner?: FabricAgentRunner;\n model?: string;\n thinking?: FabricThinking;\n tools?: string[];\n transport?: FabricAgentTransport;\n timeoutMs?: number;\n /**\n * Fabric capability for the actor. Defaults to true (today's behavior: a Pi\n * actor is recursively Fabric-equipped with the host-required fabric_exec\n * tool). Set false to disable Fabric for a Pi actor: the activation runs with\n * extensions:false and recursive:false so fabric_exec is not injected and the\n * actor cannot call agents.* or mesh.*; the host still manages its mailbox\n * and delivery (same model as a Claude actor). This does not restrict the\n * actor's ordinary tool allowlist. Fixed at creation.\n */\n extensions?: boolean;\n /** Exact Fabric actions committed before every actor run. Optional entries do not block a run. */\n requires?: readonly (string | FabricCapabilityRequirement)[];\n /** Serialized guest predicate evaluated before work and before delivery. */\n validWhile?: FabricActorValidWhileSource;\n}\n\nexport interface FabricActorInfo {\n id: string;\n name: string;\n rootId?: string;\n status: FabricActorStatus;\n runner: FabricAgentRunner;\n events: FabricActorHostEvent[];\n topics: string[];\n delivery: FabricActorDelivery;\n responseMode: FabricActorResponseMode;\n triggerTurn: boolean;\n coalesce: boolean;\n residency?: FabricParticipantResidency;\n /** Effective value for this caller after session bindings overlay project defaults. */\n model?: string;\n /** Effective value for this caller after session bindings overlay project defaults. */\n thinking?: FabricThinking;\n binding?: FabricActorBindingView;\n projectDefaults?: FabricActorProjectDefaults;\n tools?: string[];\n timeoutMs?: number;\n extensions?: boolean;\n requirements?: FabricCapabilityRequirement[];\n capabilityDigest?: string;\n missingCapabilities?: string[];\n validWhile?: FabricActorValidWhileSource;\n queued: number;\n messages: number;\n createdAt: number;\n updatedAt: number;\n lastRunId?: string;\n lastError?: string;\n sessionFile?: string;\n logDir?: string;\n}\n\nexport interface FabricActorLog {\n actorId: string;\n actorName: string;\n sessionFile: string;\n logDir: string;\n session: FabricLogLine[];\n sessionHasMore: boolean;\n sessionBefore?: number;\n run?: {\n runId: string;\n eventsFile: string;\n status?: AgentRunRecord;\n events: FabricLogLine[];\n hasMore: boolean;\n before?: number;\n };\n retainedRuns: string[];\n}\n\nexport interface FabricActorMessage {\n id: string;\n actorId: string;\n actorName: string;\n direction: \"in\" | \"out\";\n source: string;\n createdAt: number;\n text?: string;\n data?: unknown;\n action?: \"silent\" | \"message\" | \"stop\";\n runId?: string;\n usage?: AgentUsage;\n error?: string;\n stale?: boolean;\n reason?: string;\n}\n\nexport interface FabricActorDirective {\n action: \"silent\" | \"message\" | \"stop\";\n message?: string;\n data?: unknown;\n}\n\nexport interface FabricActorDeliveryRequest {\n actor: FabricActorInfo;\n message: FabricActorMessage;\n delivery: Exclude<FabricActorDelivery, \"mailbox\">;\n triggerTurn: boolean;\n}\n\n/**\n * A project-independent actor template stored in the global registry\n * (the user's agent dir, not a project mesh). It carries only the actor\n * definition (the same fields as FabricActorRequest) plus identity and\n * timestamps \u2014 never any history (messages, session transcript, or run logs).\n * Global actors are not live: they are stamped into a project via import,\n * which creates a fresh live actor with no inherited history.\n */\nexport interface GlobalActorDefinition extends FabricActorRequest {\n id: string;\n createdAt: number;\n updatedAt: number;\n // Redeclared required: the registry always materializes these (defaults\n // applied on create and load), so they are never undefined on a stored\n // template. Keeping them required avoids undefined creeping into merges and\n // spreads under exactOptionalPropertyTypes.\n events: FabricActorHostEvent[];\n topics: string[];\n delivery: FabricActorDelivery;\n responseMode: FabricActorResponseMode;\n triggerTurn: boolean;\n coalesce: boolean;\n residency?: FabricParticipantResidency;\n runner: FabricAgentRunner;\n}\n", "import fs from \"node:fs\";\nimport type { FabricLogLine } from \"./agents/types.js\";\n\nconst READ_CHUNK_BYTES = 64 * 1024;\nconst DEFAULT_READ_MAX_BYTES = 8 * 1024 * 1024;\n\nexport interface JsonlPage {\n lines: FabricLogLine[];\n hasMore: boolean;\n before?: number;\n}\n\nconst parseLine = (offset: number, raw: string): FabricLogLine => {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw);\n } catch {\n return { offset, raw };\n }\n return { offset, raw, parsed };\n};\n\ninterface BufferedLine {\n offset: number;\n raw: string;\n}\n\nconst completeLines = (buffer: Buffer, bufferStart: number, fileEnd: number): BufferedLine[] => {\n const lines: BufferedLine[] = [];\n let start = 0;\n let first = true;\n for (let index = 0; index < buffer.length; index++) {\n if (buffer[index] !== 10) continue;\n if (!first || bufferStart === 0) {\n const raw = buffer.subarray(start, index).toString(\"utf8\").replace(/\\r$/, \"\");\n if (raw) lines.push({ offset: bufferStart + start, raw });\n }\n first = false;\n start = index + 1;\n }\n if (fileEnd === bufferStart + buffer.length && start < buffer.length) {\n if (!first || bufferStart === 0) {\n const raw = buffer.subarray(start).toString(\"utf8\").replace(/\\r$/, \"\");\n if (raw) lines.push({ offset: bufferStart + start, raw });\n }\n }\n return lines;\n};\n\n/** Read a bounded JSONL page backwards from an already validated descriptor. */\nexport const readJsonlPageFromDescriptor = (\n descriptor: number,\n limit: number,\n before?: number,\n knownSize?: number,\n maxBytes?: number,\n): JsonlPage => {\n try {\n const size = knownSize ?? fs.fstatSync(descriptor).size;\n const fileEnd = typeof before === \"number\" && Number.isSafeInteger(before)\n ? Math.max(0, Math.min(before, size))\n : size;\n const boundedLimit = Math.max(1, Math.trunc(limit));\n const boundedBytes = Math.max(\n 1,\n Math.trunc(maxBytes ?? DEFAULT_READ_MAX_BYTES),\n );\n const chunks: Buffer[] = [];\n let bufferStart = fileEnd;\n let bufferedBytes = 0;\n let newlineCount = 0;\n\n while (\n bufferStart > 0 &&\n newlineCount <= boundedLimit &&\n bufferedBytes < boundedBytes\n ) {\n const length = Math.min(READ_CHUNK_BYTES, bufferStart, boundedBytes - bufferedBytes);\n const chunkStart = bufferStart - length;\n const chunk = Buffer.allocUnsafe(length);\n const bytesRead = fs.readSync(descriptor, chunk, 0, length, chunkStart);\n if (bytesRead <= 0) break;\n const captured = chunk.subarray(0, bytesRead);\n chunks.push(captured);\n for (const byte of captured) {\n if (byte === 0x0a) newlineCount += 1;\n }\n bufferedBytes += bytesRead;\n bufferStart = chunkStart;\n }\n\n const buffer = Buffer.concat(chunks.reverse(), bufferedBytes);\n const records = completeLines(buffer, bufferStart, fileEnd);\n\n const selected = records.slice(-boundedLimit);\n const hasMore = selected.length > 0 && (records.length > selected.length || bufferStart > 0);\n return {\n lines: selected.map((line) => parseLine(line.offset, line.raw)),\n hasMore,\n ...(hasMore ? { before: selected[0]!.offset } : {}),\n };\n } catch {\n return { lines: [], hasMore: false };\n }\n};\n\n/** Read a bounded JSONL page backwards, touching only enough file chunks to fill it. */\nexport const readJsonlPage = (\n filePath: string,\n limit: number,\n before?: number,\n maxBytes?: number,\n): JsonlPage => {\n let descriptor: number | undefined;\n try {\n descriptor = fs.openSync(filePath, \"r\");\n return readJsonlPageFromDescriptor(descriptor, limit, before, undefined, maxBytes);\n } catch {\n return { lines: [], hasMore: false };\n } finally {\n if (descriptor !== undefined) {\n try { fs.closeSync(descriptor); } catch {}\n }\n }\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
FabricModelSelector
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-VRYEGVHR.js";
|
|
4
4
|
import {
|
|
5
5
|
INHERIT_VALUE
|
|
6
6
|
} from "./chunk-CQFP2RCP.js";
|
|
@@ -23,11 +23,11 @@ import {
|
|
|
23
23
|
safeText,
|
|
24
24
|
spinnerFrame,
|
|
25
25
|
wrapPlainText
|
|
26
|
-
} from "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
} from "./chunk-KJ3XSDAH.js";
|
|
27
|
+
import "./chunk-5XQA7QX2.js";
|
|
28
28
|
import {
|
|
29
29
|
FABRIC_ACTOR_HOST_EVENTS
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-WRKD7W34.js";
|
|
31
31
|
import {
|
|
32
32
|
THINKING_LEVELS,
|
|
33
33
|
isFabricThinking,
|
|
@@ -2635,6 +2635,8 @@ var EVENT_LABELS = {
|
|
|
2635
2635
|
message_start: "a user, assistant, or tool message started",
|
|
2636
2636
|
message_update: "an assistant streaming update",
|
|
2637
2637
|
message_end: "a user, assistant, or tool message completed",
|
|
2638
|
+
ui_prompt_start: "a blocking user-facing UI prompt opened",
|
|
2639
|
+
ui_prompt_end: "a blocking user-facing UI prompt closed",
|
|
2638
2640
|
context: "assembled messages before an LLM request",
|
|
2639
2641
|
before_provider_headers: "outbound provider headers assembled; secrets redacted",
|
|
2640
2642
|
before_provider_request: "provider payload assembled before sending",
|
|
@@ -4567,4 +4569,4 @@ var FabricDashboard = class {
|
|
|
4567
4569
|
export {
|
|
4568
4570
|
FabricDashboard
|
|
4569
4571
|
};
|
|
4570
|
-
//# sourceMappingURL=dashboard-
|
|
4572
|
+
//# sourceMappingURL=dashboard-RPCGC33N.js.map
|