pi-fabric 0.1.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/LICENSE +21 -0
- package/README.md +635 -0
- package/THIRD_PARTY_NOTICES.md +9 -0
- package/dist/activity/store.d.ts +27 -0
- package/dist/activity/store.d.ts.map +1 -0
- package/dist/activity/store.js +474 -0
- package/dist/activity/store.js.map +1 -0
- package/dist/activity/types.d.ts +101 -0
- package/dist/activity/types.d.ts.map +1 -0
- package/dist/activity/types.js +2 -0
- package/dist/activity/types.js.map +1 -0
- package/dist/actors/context.d.ts +13 -0
- package/dist/actors/context.d.ts.map +1 -0
- package/dist/actors/context.js +155 -0
- package/dist/actors/context.js.map +1 -0
- package/dist/actors/manager.d.ts +33 -0
- package/dist/actors/manager.d.ts.map +1 -0
- package/dist/actors/manager.js +751 -0
- package/dist/actors/manager.js.map +1 -0
- package/dist/actors/types.d.ts +67 -0
- package/dist/actors/types.d.ts.map +1 -0
- package/dist/actors/types.js +2 -0
- package/dist/actors/types.js.map +1 -0
- package/dist/capture/catalog.d.ts +23 -0
- package/dist/capture/catalog.d.ts.map +1 -0
- package/dist/capture/catalog.js +53 -0
- package/dist/capture/catalog.js.map +1 -0
- package/dist/capture/interceptor.d.ts +13 -0
- package/dist/capture/interceptor.d.ts.map +1 -0
- package/dist/capture/interceptor.js +130 -0
- package/dist/capture/interceptor.js.map +1 -0
- package/dist/commands/fabric.d.ts +14 -0
- package/dist/commands/fabric.d.ts.map +1 -0
- package/dist/commands/fabric.js +237 -0
- package/dist/commands/fabric.js.map +1 -0
- package/dist/config.d.ts +89 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +255 -0
- package/dist/config.js.map +1 -0
- package/dist/core/action-registry.d.ts +71 -0
- package/dist/core/action-registry.d.ts.map +1 -0
- package/dist/core/action-registry.js +273 -0
- package/dist/core/action-registry.js.map +1 -0
- package/dist/core/approval-controller.d.ts +11 -0
- package/dist/core/approval-controller.d.ts.map +1 -0
- package/dist/core/approval-controller.js +45 -0
- package/dist/core/approval-controller.js.map +1 -0
- package/dist/core/pi-tools.d.ts +4 -0
- package/dist/core/pi-tools.d.ts.map +1 -0
- package/dist/core/pi-tools.js +11 -0
- package/dist/core/pi-tools.js.map +1 -0
- package/dist/core/tool-ownership.d.ts +12 -0
- package/dist/core/tool-ownership.d.ts.map +1 -0
- package/dist/core/tool-ownership.js +41 -0
- package/dist/core/tool-ownership.js.map +1 -0
- package/dist/execution-service.d.ts +41 -0
- package/dist/execution-service.d.ts.map +1 -0
- package/dist/execution-service.js +210 -0
- package/dist/execution-service.js.map +1 -0
- package/dist/fabric-state.d.ts +38 -0
- package/dist/fabric-state.d.ts.map +1 -0
- package/dist/fabric-state.js +275 -0
- package/dist/fabric-state.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +491 -0
- package/dist/index.js.map +1 -0
- package/dist/mesh/store.d.ts +68 -0
- package/dist/mesh/store.d.ts.map +1 -0
- package/dist/mesh/store.js +387 -0
- package/dist/mesh/store.js.map +1 -0
- package/dist/protocol.d.ts +62 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +3 -0
- package/dist/protocol.js.map +1 -0
- package/dist/providers/agents-provider.d.ts +15 -0
- package/dist/providers/agents-provider.d.ts.map +1 -0
- package/dist/providers/agents-provider.js +393 -0
- package/dist/providers/agents-provider.js.map +1 -0
- package/dist/providers/captured-tools-provider.d.ts +23 -0
- package/dist/providers/captured-tools-provider.d.ts.map +1 -0
- package/dist/providers/captured-tools-provider.js +170 -0
- package/dist/providers/captured-tools-provider.js.map +1 -0
- package/dist/providers/mcp-provider.d.ts +15 -0
- package/dist/providers/mcp-provider.d.ts.map +1 -0
- package/dist/providers/mcp-provider.js +289 -0
- package/dist/providers/mcp-provider.js.map +1 -0
- package/dist/providers/mesh-provider.d.ts +13 -0
- package/dist/providers/mesh-provider.d.ts.map +1 -0
- package/dist/providers/mesh-provider.js +175 -0
- package/dist/providers/mesh-provider.js.map +1 -0
- package/dist/providers/pi-tools-provider.d.ts +14 -0
- package/dist/providers/pi-tools-provider.d.ts.map +1 -0
- package/dist/providers/pi-tools-provider.js +200 -0
- package/dist/providers/pi-tools-provider.js.map +1 -0
- package/dist/runtime/guest-types.d.ts +3 -0
- package/dist/runtime/guest-types.d.ts.map +1 -0
- package/dist/runtime/guest-types.js +313 -0
- package/dist/runtime/guest-types.js.map +1 -0
- package/dist/runtime/quickjs-runtime.d.ts +18 -0
- package/dist/runtime/quickjs-runtime.d.ts.map +1 -0
- package/dist/runtime/quickjs-runtime.js +538 -0
- package/dist/runtime/quickjs-runtime.js.map +1 -0
- package/dist/runtime/type-checker.d.ts +10 -0
- package/dist/runtime/type-checker.d.ts.map +1 -0
- package/dist/runtime/type-checker.js +71 -0
- package/dist/runtime/type-checker.js.map +1 -0
- package/dist/subagents/budget-ledger.d.ts +61 -0
- package/dist/subagents/budget-ledger.d.ts.map +1 -0
- package/dist/subagents/budget-ledger.js +92 -0
- package/dist/subagents/budget-ledger.js.map +1 -0
- package/dist/subagents/manager.d.ts +27 -0
- package/dist/subagents/manager.d.ts.map +1 -0
- package/dist/subagents/manager.js +497 -0
- package/dist/subagents/manager.js.map +1 -0
- package/dist/subagents/semaphore.d.ts +7 -0
- package/dist/subagents/semaphore.d.ts.map +1 -0
- package/dist/subagents/semaphore.js +54 -0
- package/dist/subagents/semaphore.js.map +1 -0
- package/dist/subagents/transports/localterm-transport.d.ts +7 -0
- package/dist/subagents/transports/localterm-transport.d.ts.map +1 -0
- package/dist/subagents/transports/localterm-transport.js +54 -0
- package/dist/subagents/transports/localterm-transport.js.map +1 -0
- package/dist/subagents/transports/process-transport.d.ts +7 -0
- package/dist/subagents/transports/process-transport.d.ts.map +1 -0
- package/dist/subagents/transports/process-transport.js +17 -0
- package/dist/subagents/transports/process-transport.js.map +1 -0
- package/dist/subagents/transports/process-utils.d.ts +16 -0
- package/dist/subagents/transports/process-utils.d.ts.map +1 -0
- package/dist/subagents/transports/process-utils.js +57 -0
- package/dist/subagents/transports/process-utils.js.map +1 -0
- package/dist/subagents/transports/screen-transport.d.ts +7 -0
- package/dist/subagents/transports/screen-transport.d.ts.map +1 -0
- package/dist/subagents/transports/screen-transport.js +33 -0
- package/dist/subagents/transports/screen-transport.js.map +1 -0
- package/dist/subagents/transports/tmux-transport.d.ts +7 -0
- package/dist/subagents/transports/tmux-transport.d.ts.map +1 -0
- package/dist/subagents/transports/tmux-transport.js +41 -0
- package/dist/subagents/transports/tmux-transport.js.map +1 -0
- package/dist/subagents/types.d.ts +132 -0
- package/dist/subagents/types.d.ts.map +1 -0
- package/dist/subagents/types.js +2 -0
- package/dist/subagents/types.js.map +1 -0
- package/dist/subagents/worktree-manager.d.ts +12 -0
- package/dist/subagents/worktree-manager.d.ts.map +1 -0
- package/dist/subagents/worktree-manager.js +53 -0
- package/dist/subagents/worktree-manager.js.map +1 -0
- package/dist/ui/controller.d.ts +14 -0
- package/dist/ui/controller.d.ts.map +1 -0
- package/dist/ui/controller.js +153 -0
- package/dist/ui/controller.js.map +1 -0
- package/dist/ui/dashboard.d.ts +36 -0
- package/dist/ui/dashboard.d.ts.map +1 -0
- package/dist/ui/dashboard.js +620 -0
- package/dist/ui/dashboard.js.map +1 -0
- package/dist/ui/fabric-render.d.ts +28 -0
- package/dist/ui/fabric-render.d.ts.map +1 -0
- package/dist/ui/fabric-render.js +280 -0
- package/dist/ui/fabric-render.js.map +1 -0
- package/dist/ui/format.d.ts +7 -0
- package/dist/ui/format.d.ts.map +1 -0
- package/dist/ui/format.js +57 -0
- package/dist/ui/format.js.map +1 -0
- package/dist/ui/highlight.d.ts +13 -0
- package/dist/ui/highlight.d.ts.map +1 -0
- package/dist/ui/highlight.js +337 -0
- package/dist/ui/highlight.js.map +1 -0
- package/dist/ui/settings.d.ts +21 -0
- package/dist/ui/settings.d.ts.map +1 -0
- package/dist/ui/settings.js +480 -0
- package/dist/ui/settings.js.map +1 -0
- package/dist/ui/snapshot.d.ts +5 -0
- package/dist/ui/snapshot.d.ts.map +1 -0
- package/dist/ui/snapshot.js +120 -0
- package/dist/ui/snapshot.js.map +1 -0
- package/dist/ui/types.d.ts +57 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +11 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/ui/widget.d.ts +16 -0
- package/dist/ui/widget.d.ts.map +1 -0
- package/dist/ui/widget.js +199 -0
- package/dist/ui/widget.js.map +1 -0
- package/dist/util.d.ts +2 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +10 -0
- package/dist/util.js.map +1 -0
- package/dist/worker.d.ts +3 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +478 -0
- package/dist/worker.js.map +1 -0
- package/package.json +87 -0
- package/skills/fabric-advisor/SKILL.md +53 -0
- package/skills/fabric-ambient/SKILL.md +84 -0
- package/skills/fabric-council/SKILL.md +37 -0
- package/skills/fabric-exec/SKILL.md +39 -0
- package/skills/fabric-exec/references/agents.md +78 -0
- package/skills/fabric-exec/references/mcp.md +46 -0
- package/skills/fabric-exec/references/mesh.md +42 -0
- package/skills/fabric-rlm/SKILL.md +84 -0
- package/skills/fabric-supervisor/SKILL.md +63 -0
- package/skills/fabric-swarm/SKILL.md +85 -0
- package/skills/fabric-workflow/SKILL.md +69 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { safeText } from "./format.js";
|
|
2
|
+
import { activeStatuses, } from "./types.js";
|
|
3
|
+
const isRunRecord = (value) => "startedAt" in value;
|
|
4
|
+
const numberFrom = (value) => typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
5
|
+
const stateEntry = (entry) => {
|
|
6
|
+
const value = typeof entry.value === "object" && entry.value !== null && !Array.isArray(entry.value)
|
|
7
|
+
? entry.value
|
|
8
|
+
: undefined;
|
|
9
|
+
const label = safeText(value?.title ?? value?.label ?? value?.name ?? value?.task ?? entry.key).slice(0, 160);
|
|
10
|
+
const status = safeText(value?.status ?? value?.state ?? "state").toLowerCase() || "state";
|
|
11
|
+
const owner = safeText(value?.owner ?? value?.claimedBy ?? value?.claimed_by);
|
|
12
|
+
const detail = safeText(value?.current ?? value?.activity ?? value?.description ?? value?.summary);
|
|
13
|
+
return {
|
|
14
|
+
key: entry.key,
|
|
15
|
+
label: label || entry.key,
|
|
16
|
+
status,
|
|
17
|
+
value: entry.value,
|
|
18
|
+
version: entry.version,
|
|
19
|
+
updatedAt: entry.updatedAt,
|
|
20
|
+
...(owner ? { owner } : {}),
|
|
21
|
+
...(detail ? { detail: detail.slice(0, 500) } : {}),
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export const createDashboardSnapshot = (state, events) => {
|
|
25
|
+
const runs = state.activity.runs();
|
|
26
|
+
const agentRecords = state.subagents.list();
|
|
27
|
+
const agentFromRecord = (record, parentId) => {
|
|
28
|
+
const linked = parentId
|
|
29
|
+
? undefined
|
|
30
|
+
: runs
|
|
31
|
+
.flatMap((run) => run.calls.map((call) => ({ runId: run.id, call })))
|
|
32
|
+
.find(({ call }) => call.entityId &&
|
|
33
|
+
(record.id.startsWith(call.entityId) || call.entityId.startsWith(record.id)));
|
|
34
|
+
const base = {
|
|
35
|
+
id: record.id,
|
|
36
|
+
name: record.name,
|
|
37
|
+
status: record.status,
|
|
38
|
+
transport: record.transport,
|
|
39
|
+
cwd: record.cwd,
|
|
40
|
+
...(record.model ? { model: record.model } : {}),
|
|
41
|
+
...(record.thinking ? { thinking: record.thinking } : {}),
|
|
42
|
+
...(record.attachCommand ? { attachCommand: record.attachCommand } : {}),
|
|
43
|
+
...(record.branch ? { branch: record.branch } : {}),
|
|
44
|
+
...(record.worktree ? { worktree: record.worktree } : {}),
|
|
45
|
+
...(record.actorId ? { actorId: record.actorId } : {}),
|
|
46
|
+
...(record.actorName ? { actorName: record.actorName } : {}),
|
|
47
|
+
...(parentId ? { parentId } : {}),
|
|
48
|
+
...(linked ? { runId: linked.runId } : {}),
|
|
49
|
+
...(linked?.call.phaseId ? { phaseId: linked.call.phaseId } : {}),
|
|
50
|
+
};
|
|
51
|
+
if (!isRunRecord(record))
|
|
52
|
+
return base;
|
|
53
|
+
return {
|
|
54
|
+
...base,
|
|
55
|
+
task: record.task,
|
|
56
|
+
startedAt: record.startedAt,
|
|
57
|
+
updatedAt: record.updatedAt,
|
|
58
|
+
...(record.finishedAt !== undefined ? { finishedAt: record.finishedAt } : {}),
|
|
59
|
+
...(record.currentTool ? { currentTool: record.currentTool } : {}),
|
|
60
|
+
turns: record.turns,
|
|
61
|
+
toolCalls: record.toolCalls,
|
|
62
|
+
usage: { ...record.usage },
|
|
63
|
+
...(record.text ? { text: record.text } : {}),
|
|
64
|
+
...(record.error ? { error: record.error } : {}),
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
const allAgents = [];
|
|
68
|
+
for (const record of agentRecords) {
|
|
69
|
+
allAgents.push(agentFromRecord(record));
|
|
70
|
+
if (isRunRecord(record) && record.nestedAgents) {
|
|
71
|
+
for (const nested of record.nestedAgents) {
|
|
72
|
+
allAgents.push(agentFromRecord(nested, record.id));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const actors = state.actors.list().map((actor) => {
|
|
77
|
+
const worker = allAgents.find((agent) => agent.actorId === actor.id);
|
|
78
|
+
return {
|
|
79
|
+
...actor,
|
|
80
|
+
recentMessages: state.actors.messages(actor.id, 12),
|
|
81
|
+
...(worker ? { worker } : {}),
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
const agents = allAgents.filter((agent) => !agent.actorId);
|
|
85
|
+
const meshEntries = state.config.mesh.enabled ? state.mesh.list("", 200) : [];
|
|
86
|
+
const stateEntries = meshEntries
|
|
87
|
+
.filter((entry) => !entry.key.startsWith("actors/"))
|
|
88
|
+
.map(stateEntry)
|
|
89
|
+
.sort((left, right) => {
|
|
90
|
+
const leftActive = activeStatuses.has(left.status) ? 1 : 0;
|
|
91
|
+
const rightActive = activeStatuses.has(right.status) ? 1 : 0;
|
|
92
|
+
return rightActive - leftActive || right.updatedAt - left.updatedAt;
|
|
93
|
+
})
|
|
94
|
+
.slice(0, 120);
|
|
95
|
+
return {
|
|
96
|
+
now: Date.now(),
|
|
97
|
+
runs,
|
|
98
|
+
widgetDismissedAt: state.widgetDismissedAt,
|
|
99
|
+
agents: agents.sort((left, right) => {
|
|
100
|
+
const leftActive = activeStatuses.has(left.status) ? 1 : 0;
|
|
101
|
+
const rightActive = activeStatuses.has(right.status) ? 1 : 0;
|
|
102
|
+
if (rightActive !== leftActive)
|
|
103
|
+
return rightActive - leftActive;
|
|
104
|
+
if (right.parentId === left.id)
|
|
105
|
+
return -1;
|
|
106
|
+
if (left.parentId === right.id)
|
|
107
|
+
return 1;
|
|
108
|
+
return ((numberFrom(right.updatedAt) ?? numberFrom(right.startedAt) ?? 0) -
|
|
109
|
+
(numberFrom(left.updatedAt) ?? numberFrom(left.startedAt) ?? 0));
|
|
110
|
+
}),
|
|
111
|
+
actors: actors.sort((left, right) => {
|
|
112
|
+
const leftActive = activeStatuses.has(left.status) ? 1 : 0;
|
|
113
|
+
const rightActive = activeStatuses.has(right.status) ? 1 : 0;
|
|
114
|
+
return rightActive - leftActive || right.updatedAt - left.updatedAt;
|
|
115
|
+
}),
|
|
116
|
+
state: stateEntries,
|
|
117
|
+
events: events.map((event) => structuredClone(event)),
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/ui/snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { FabricActorInfo, FabricActorMessage } from "../actors/types.js";
|
|
2
|
+
import type { FabricActivityRun } from "../activity/types.js";
|
|
3
|
+
import type { MeshEvent } from "../mesh/store.js";
|
|
4
|
+
import type { SubagentUsage } from "../subagents/types.js";
|
|
5
|
+
export interface FabricUiAgent {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
status: string;
|
|
9
|
+
transport: string;
|
|
10
|
+
cwd: string;
|
|
11
|
+
task?: string;
|
|
12
|
+
model?: string;
|
|
13
|
+
thinking?: string;
|
|
14
|
+
currentTool?: string;
|
|
15
|
+
startedAt?: number;
|
|
16
|
+
updatedAt?: number;
|
|
17
|
+
finishedAt?: number;
|
|
18
|
+
turns?: number;
|
|
19
|
+
toolCalls?: number;
|
|
20
|
+
usage?: SubagentUsage;
|
|
21
|
+
text?: string;
|
|
22
|
+
error?: string;
|
|
23
|
+
attachCommand?: string;
|
|
24
|
+
branch?: string;
|
|
25
|
+
worktree?: string;
|
|
26
|
+
actorId?: string;
|
|
27
|
+
actorName?: string;
|
|
28
|
+
runId?: string;
|
|
29
|
+
phaseId?: string;
|
|
30
|
+
parentId?: string;
|
|
31
|
+
}
|
|
32
|
+
export interface FabricUiActor extends FabricActorInfo {
|
|
33
|
+
recentMessages: FabricActorMessage[];
|
|
34
|
+
worker?: FabricUiAgent;
|
|
35
|
+
}
|
|
36
|
+
export interface FabricUiStateEntry {
|
|
37
|
+
key: string;
|
|
38
|
+
label: string;
|
|
39
|
+
status: string;
|
|
40
|
+
owner?: string;
|
|
41
|
+
detail?: string;
|
|
42
|
+
value: unknown;
|
|
43
|
+
version: number;
|
|
44
|
+
updatedAt: number;
|
|
45
|
+
}
|
|
46
|
+
export interface FabricDashboardSnapshot {
|
|
47
|
+
now: number;
|
|
48
|
+
widgetDismissedAt?: number;
|
|
49
|
+
runs: FabricActivityRun[];
|
|
50
|
+
agents: FabricUiAgent[];
|
|
51
|
+
actors: FabricUiActor[];
|
|
52
|
+
state: FabricUiStateEntry[];
|
|
53
|
+
events: MeshEvent[];
|
|
54
|
+
}
|
|
55
|
+
export declare const activeStatuses: Set<string>;
|
|
56
|
+
export declare const isActiveStatus: (status: string) => boolean;
|
|
57
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACrC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,eAAO,MAAM,cAAc,aAQzB,CAAC;AAEH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,OAAqC,CAAC"}
|
package/dist/ui/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ui/types.ts"],"names":[],"mappings":"AA2DA,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IACpC,QAAQ;IACR,SAAS;IACT,OAAO;IACP,SAAS;IACT,SAAS;IACT,aAAa;IACb,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,MAAc,EAAW,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Component } from "@earendil-works/pi-tui";
|
|
2
|
+
import type { Theme } from "@earendil-works/pi-coding-agent";
|
|
3
|
+
import type { FabricUiWidgetMode } from "../config.js";
|
|
4
|
+
import { type FabricDashboardSnapshot } from "./types.js";
|
|
5
|
+
export declare const shouldShowFabricWidget: (snapshot: FabricDashboardSnapshot, mode: FabricUiWidgetMode) => boolean;
|
|
6
|
+
export declare class FabricWidget implements Component {
|
|
7
|
+
#private;
|
|
8
|
+
readonly theme: Theme;
|
|
9
|
+
readonly snapshot: () => FabricDashboardSnapshot;
|
|
10
|
+
readonly maxRows: number;
|
|
11
|
+
constructor(theme: Theme, snapshot: () => FabricDashboardSnapshot, maxRows: number);
|
|
12
|
+
render(width: number): string[];
|
|
13
|
+
hasChanged(): boolean;
|
|
14
|
+
invalidate(): void;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=widget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/ui/widget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,OAAO,EAEL,KAAK,uBAAuB,EAG7B,MAAM,YAAY,CAAC;AA2FpB,eAAO,MAAM,sBAAsB,GACjC,UAAU,uBAAuB,EACjC,MAAM,kBAAkB,KACvB,OAWF,CAAC;AAEF,qBAAa,YAAa,YAAW,SAAS;;IAE1C,QAAQ,CAAC,KAAK,EAAE,KAAK;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,uBAAuB;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM;gBAFf,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,uBAAuB,EACvC,OAAO,EAAE,MAAM;IAM1B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAS/B,UAAU,IAAI,OAAO;IAOrB,UAAU,IAAI,IAAI;CA0FnB"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { truncateToWidth } from "@earendil-works/pi-tui";
|
|
2
|
+
import { formatDuration, formatTokens, safeText } from "./format.js";
|
|
3
|
+
import { isActiveStatus, } from "./types.js";
|
|
4
|
+
const spinnerFrames = ["◐", "◓", "◑", "◒"];
|
|
5
|
+
const statusGlyph = (status) => {
|
|
6
|
+
if (status === "completed" || status === "done")
|
|
7
|
+
return "✓";
|
|
8
|
+
if (status === "failed" || status === "timed_out")
|
|
9
|
+
return "✗";
|
|
10
|
+
if (status === "blocked")
|
|
11
|
+
return "!";
|
|
12
|
+
if (status === "stopped" || status === "cancelled")
|
|
13
|
+
return "■";
|
|
14
|
+
if (status === "queued" || status === "pending" || status === "ready")
|
|
15
|
+
return "○";
|
|
16
|
+
if (status === "idle" || status === "state")
|
|
17
|
+
return "·";
|
|
18
|
+
return spinnerFrames[Math.floor(Date.now() / 250) % spinnerFrames.length] ?? "●";
|
|
19
|
+
};
|
|
20
|
+
const colorStatus = (theme, status, value) => {
|
|
21
|
+
if (status === "completed" || status === "done")
|
|
22
|
+
return theme.fg("success", value);
|
|
23
|
+
if (status === "failed" || status === "timed_out")
|
|
24
|
+
return theme.fg("error", value);
|
|
25
|
+
if (status === "blocked")
|
|
26
|
+
return theme.fg("warning", value);
|
|
27
|
+
if (status === "running" || status === "in_progress")
|
|
28
|
+
return theme.fg("accent", value);
|
|
29
|
+
return theme.fg("dim", value);
|
|
30
|
+
};
|
|
31
|
+
const phaseProgress = (run, phaseId) => {
|
|
32
|
+
const phase = run.phases.find((candidate) => candidate.id === phaseId);
|
|
33
|
+
const statuses = [
|
|
34
|
+
...run.calls.filter((call) => call.phaseId === phaseId).map((call) => call.status),
|
|
35
|
+
...run.items.filter((item) => item.phaseId === phaseId).map((item) => item.status),
|
|
36
|
+
];
|
|
37
|
+
const completed = statuses.filter((status) => status === "completed").length;
|
|
38
|
+
return { completed, total: Math.max(phase?.total ?? 0, statuses.length) };
|
|
39
|
+
};
|
|
40
|
+
const totalTokens = (snapshot, run) => snapshot.agents
|
|
41
|
+
.filter((agent) => (run ? agent.runId === run.id : isActiveStatus(agent.status)))
|
|
42
|
+
.reduce((sum, agent) => sum + (agent.usage ? agent.usage.input + agent.usage.output : 0), 0);
|
|
43
|
+
const agentLine = (theme, agent, now) => {
|
|
44
|
+
const status = colorStatus(theme, agent.status, statusGlyph(agent.status));
|
|
45
|
+
const activity = agent.currentTool ?? (agent.status === "running" ? "thinking" : agent.status);
|
|
46
|
+
const metrics = [
|
|
47
|
+
agent.toolCalls !== undefined ? `${agent.toolCalls} calls` : undefined,
|
|
48
|
+
agent.usage ? `${formatTokens(agent.usage.input + agent.usage.output)} tok` : undefined,
|
|
49
|
+
agent.startedAt
|
|
50
|
+
? formatDuration((agent.finishedAt ?? now) - agent.startedAt)
|
|
51
|
+
: undefined,
|
|
52
|
+
].filter((value) => Boolean(value));
|
|
53
|
+
const indent = agent.parentId ? " " : " ";
|
|
54
|
+
return `${indent}${status} ${safeText(agent.name)} ${theme.fg("muted", safeText(activity))}${metrics.length > 0 ? theme.fg("dim", ` · ${metrics.join(" · ")}`) : ""}`;
|
|
55
|
+
};
|
|
56
|
+
const actorStream = (actor) => {
|
|
57
|
+
const last = actor.recentMessages[actor.recentMessages.length - 1];
|
|
58
|
+
if (!last)
|
|
59
|
+
return "";
|
|
60
|
+
if (last.direction === "out") {
|
|
61
|
+
if (last.error)
|
|
62
|
+
return `← ✗ ${truncateToWidth(safeText(last.error), 48)}`;
|
|
63
|
+
if (last.text)
|
|
64
|
+
return `← ${truncateToWidth(safeText(last.text), 48)}`;
|
|
65
|
+
if (last.action)
|
|
66
|
+
return `← ${last.action}`;
|
|
67
|
+
return "";
|
|
68
|
+
}
|
|
69
|
+
return `→ ${last.source}`;
|
|
70
|
+
};
|
|
71
|
+
const actorLine = (theme, actor) => {
|
|
72
|
+
const effectiveStatus = actor.lastError ? "failed" : actor.status;
|
|
73
|
+
const status = colorStatus(theme, effectiveStatus, statusGlyph(effectiveStatus));
|
|
74
|
+
const workerActivity = actor.worker?.currentTool;
|
|
75
|
+
const activity = workerActivity ?? actor.status;
|
|
76
|
+
const queue = actor.queued > 0 ? ` · q:${actor.queued}` : "";
|
|
77
|
+
const messages = actor.messages > 0 ? ` · ${actor.messages} msg` : "";
|
|
78
|
+
const usage = actor.worker?.usage
|
|
79
|
+
? ` · ${formatTokens(actor.worker.usage.input + actor.worker.usage.output)} tok`
|
|
80
|
+
: "";
|
|
81
|
+
const stream = actorStream(actor);
|
|
82
|
+
return ` ${status} ${safeText(actor.name)} ${theme.fg("muted", safeText(activity))}${stream ? theme.fg("muted", ` · ${stream}`) : ""}${theme.fg("dim", `${queue}${messages}${usage}`)}`;
|
|
83
|
+
};
|
|
84
|
+
export const shouldShowFabricWidget = (snapshot, mode) => {
|
|
85
|
+
if (mode === "hidden")
|
|
86
|
+
return false;
|
|
87
|
+
if (mode === "always")
|
|
88
|
+
return true;
|
|
89
|
+
if (snapshot.agents.some((agent) => isActiveStatus(agent.status)))
|
|
90
|
+
return true;
|
|
91
|
+
if (snapshot.actors.some((actor) => actor.status !== "stopped"))
|
|
92
|
+
return true;
|
|
93
|
+
if (snapshot.state.some((entry) => isActiveStatus(entry.status)))
|
|
94
|
+
return true;
|
|
95
|
+
const run = snapshot.runs[0];
|
|
96
|
+
if (!run)
|
|
97
|
+
return false;
|
|
98
|
+
if (run.status === "running")
|
|
99
|
+
return true;
|
|
100
|
+
const finishedAt = run.finishedAt ?? run.updatedAt;
|
|
101
|
+
return finishedAt >= (snapshot.widgetDismissedAt ?? 0);
|
|
102
|
+
};
|
|
103
|
+
export class FabricWidget {
|
|
104
|
+
theme;
|
|
105
|
+
snapshot;
|
|
106
|
+
maxRows;
|
|
107
|
+
constructor(theme, snapshot, maxRows) {
|
|
108
|
+
this.theme = theme;
|
|
109
|
+
this.snapshot = snapshot;
|
|
110
|
+
this.maxRows = maxRows;
|
|
111
|
+
}
|
|
112
|
+
#lastWidth;
|
|
113
|
+
#lastLines;
|
|
114
|
+
render(width) {
|
|
115
|
+
if (width <= 0)
|
|
116
|
+
return [];
|
|
117
|
+
const content = this.#buildContent();
|
|
118
|
+
const lines = this.#boundContent(content, width);
|
|
119
|
+
this.#lastWidth = width;
|
|
120
|
+
this.#lastLines = lines;
|
|
121
|
+
return lines;
|
|
122
|
+
}
|
|
123
|
+
hasChanged() {
|
|
124
|
+
if (this.#lastWidth === undefined || this.#lastLines === undefined)
|
|
125
|
+
return true;
|
|
126
|
+
const content = this.#buildContent();
|
|
127
|
+
const lines = this.#boundContent(content, this.#lastWidth);
|
|
128
|
+
return JSON.stringify(lines) !== JSON.stringify(this.#lastLines);
|
|
129
|
+
}
|
|
130
|
+
invalidate() { }
|
|
131
|
+
#buildContent() {
|
|
132
|
+
const snapshot = this.snapshot();
|
|
133
|
+
const candidateRun = snapshot.runs[0];
|
|
134
|
+
const candidateFinishedAt = candidateRun?.finishedAt ?? candidateRun?.updatedAt ?? 0;
|
|
135
|
+
const run = candidateRun &&
|
|
136
|
+
(candidateRun.status === "running" ||
|
|
137
|
+
candidateFinishedAt >= (snapshot.widgetDismissedAt ?? 0))
|
|
138
|
+
? candidateRun
|
|
139
|
+
: undefined;
|
|
140
|
+
const activeAgents = snapshot.agents.filter((agent) => isActiveStatus(agent.status));
|
|
141
|
+
const visibleActors = snapshot.actors.filter((actor) => actor.status !== "stopped");
|
|
142
|
+
const activeState = snapshot.state.filter((entry) => isActiveStatus(entry.status));
|
|
143
|
+
const nestedCalls = run?.calls.filter((call) => call.kind !== "agent" && call.kind !== "actor") ?? [];
|
|
144
|
+
const runningItems = run?.items.filter((item) => isActiveStatus(item.status)) ?? [];
|
|
145
|
+
const title = run?.name ?? "Fabric session";
|
|
146
|
+
const headerStatus = run?.status ?? (activeAgents.length > 0 ? "running" : "idle");
|
|
147
|
+
const parts = [];
|
|
148
|
+
const callTotal = nestedCalls.length;
|
|
149
|
+
if (callTotal > 1) {
|
|
150
|
+
const callDone = nestedCalls.filter((call) => call.status === "completed" || call.status === "failed").length;
|
|
151
|
+
parts.push(`${callDone}/${callTotal} calls`);
|
|
152
|
+
}
|
|
153
|
+
if (run?.currentPhaseId) {
|
|
154
|
+
const phaseIndex = run.phases.findIndex((phase) => phase.id === run.currentPhaseId);
|
|
155
|
+
const phase = run.phases[phaseIndex];
|
|
156
|
+
if (phase) {
|
|
157
|
+
const progress = phaseProgress(run, phase.id);
|
|
158
|
+
parts.push(`${phaseIndex + 1}/${run.phases.length} ${safeText(phase.name)}${progress.total > 0 ? ` ${progress.completed}/${progress.total}` : ""}`);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
if (activeAgents.length > 0)
|
|
162
|
+
parts.push(`${activeAgents.length} running`);
|
|
163
|
+
if (visibleActors.length > 0)
|
|
164
|
+
parts.push(`${visibleActors.length} actor${visibleActors.length === 1 ? "" : "s"}`);
|
|
165
|
+
const tokens = totalTokens(snapshot, run);
|
|
166
|
+
if (tokens > 0)
|
|
167
|
+
parts.push(`${formatTokens(tokens)} tok`);
|
|
168
|
+
if (run)
|
|
169
|
+
parts.push(formatDuration((run.finishedAt ?? snapshot.now) - run.startedAt));
|
|
170
|
+
const glyph = colorStatus(this.theme, headerStatus, statusGlyph(headerStatus));
|
|
171
|
+
const header = `${glyph} ${this.theme.fg("accent", "Fabric")} ${this.theme.fg("text", safeText(title))}${parts.length > 0 ? this.theme.fg("dim", ` · ${parts.join(" · ")}`) : ""}`;
|
|
172
|
+
const lines = [header];
|
|
173
|
+
for (const agent of activeAgents)
|
|
174
|
+
lines.push(agentLine(this.theme, agent, snapshot.now));
|
|
175
|
+
for (const actor of visibleActors)
|
|
176
|
+
lines.push(actorLine(this.theme, actor));
|
|
177
|
+
for (const item of runningItems) {
|
|
178
|
+
const current = item.current ?? item.detail;
|
|
179
|
+
const progress = item.total !== undefined
|
|
180
|
+
? ` · ${item.completed ?? 0}/${item.total}`
|
|
181
|
+
: current
|
|
182
|
+
? ` · ${safeText(current)}`
|
|
183
|
+
: "";
|
|
184
|
+
lines.push(` ${colorStatus(this.theme, item.status, statusGlyph(item.status))} ${safeText(item.label)}${this.theme.fg("dim", progress)}`);
|
|
185
|
+
}
|
|
186
|
+
for (const entry of activeState) {
|
|
187
|
+
lines.push(` ${colorStatus(this.theme, entry.status, statusGlyph(entry.status))} ${safeText(entry.label)}${this.theme.fg("dim", ` · ${entry.owner ?? entry.status}`)}`);
|
|
188
|
+
}
|
|
189
|
+
return lines;
|
|
190
|
+
}
|
|
191
|
+
#boundContent(content, width) {
|
|
192
|
+
const bounded = content.slice(0, Math.max(1, this.maxRows));
|
|
193
|
+
if (content.length > bounded.length && bounded.length > 0) {
|
|
194
|
+
bounded[bounded.length - 1] = `${bounded[bounded.length - 1]} ${this.theme.fg("dim", `+${content.length - bounded.length}`)}`;
|
|
195
|
+
}
|
|
196
|
+
return bounded.map((line) => truncateToWidth(line, width));
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=widget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget.js","sourceRoot":"","sources":["../../src/ui/widget.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,MAOhE,CAAC"}
|
package/dist/util.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const truncateMiddle = (value, maxChars) => {
|
|
2
|
+
if (value.length <= maxChars)
|
|
3
|
+
return value;
|
|
4
|
+
const marker = `\n\n... ${value.length - maxChars} characters omitted by Pi Fabric ...\n\n`;
|
|
5
|
+
const available = Math.max(0, maxChars - marker.length);
|
|
6
|
+
const head = Math.ceil(available / 2);
|
|
7
|
+
const tail = Math.floor(available / 2);
|
|
8
|
+
return `${value.slice(0, head)}${marker}${value.slice(value.length - tail)}`;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=util.js.map
|
package/dist/util.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAU,EAAE;IACxE,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,MAAM,GAAG,WAAW,KAAK,CAAC,MAAM,GAAG,QAAQ,0CAA0C,CAAC;IAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;AAC/E,CAAC,CAAC"}
|
package/dist/worker.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":""}
|