pi-fabric 0.55.0 → 0.57.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.
Files changed (40) hide show
  1. package/README.md +1 -0
  2. package/dist/audit/details.d.ts +34 -3
  3. package/dist/audit/details.d.ts.map +1 -1
  4. package/dist/chunks/{chunk-MPS3TDUG.js → chunk-6E2VWXJ6.js} +11 -3
  5. package/dist/chunks/chunk-6E2VWXJ6.js.map +7 -0
  6. package/dist/chunks/{chunk-KK5NCVNS.js → chunk-HJ22TAZK.js} +7 -1
  7. package/dist/chunks/chunk-HJ22TAZK.js.map +7 -0
  8. package/dist/chunks/{chunk-C3GCKJ2M.js → chunk-LQGKEQ6L.js} +2 -2
  9. package/dist/chunks/{dashboard-XPHTT2ID.js → dashboard-EDZG75BA.js} +2 -2
  10. package/dist/chunks/{fabric-runtime-state-W3ME2M4E.js → fabric-runtime-state-AETN5ZPK.js} +3 -3
  11. package/dist/chunks/{settings-KZDL47IT.js → settings-ZHGNXFDA.js} +11 -3
  12. package/dist/chunks/settings-ZHGNXFDA.js.map +7 -0
  13. package/dist/commands/fabric.d.ts +2 -1
  14. package/dist/commands/fabric.d.ts.map +1 -1
  15. package/dist/config.d.ts +2 -0
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/fabric-exec-tool.d.ts +2 -1
  18. package/dist/fabric-exec-tool.d.ts.map +1 -1
  19. package/dist/fabric-state.d.ts +1 -0
  20. package/dist/fabric-state.d.ts.map +1 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +141 -29
  23. package/dist/index.js.map +4 -4
  24. package/dist/residency/host.js +2 -2
  25. package/dist/ui/core-tool-render.d.ts.map +1 -1
  26. package/dist/ui/fabric-render.d.ts +3 -0
  27. package/dist/ui/fabric-render.d.ts.map +1 -1
  28. package/dist/ui/settings.d.ts.map +1 -1
  29. package/dist/ui/tool-display.d.ts +8 -0
  30. package/dist/ui/tool-display.d.ts.map +1 -0
  31. package/docs/audit-trace.md +6 -3
  32. package/docs/configuration.md +2 -0
  33. package/docs/interface.md +1 -1
  34. package/package.json +1 -1
  35. package/dist/chunks/chunk-KK5NCVNS.js.map +0 -7
  36. package/dist/chunks/chunk-MPS3TDUG.js.map +0 -7
  37. package/dist/chunks/settings-KZDL47IT.js.map +0 -7
  38. /package/dist/chunks/{chunk-C3GCKJ2M.js.map → chunk-LQGKEQ6L.js.map} +0 -0
  39. /package/dist/chunks/{dashboard-XPHTT2ID.js.map → dashboard-EDZG75BA.js.map} +0 -0
  40. /package/dist/chunks/{fabric-runtime-state-W3ME2M4E.js.map → fabric-runtime-state-AETN5ZPK.js.map} +0 -0
package/README.md CHANGED
@@ -119,6 +119,7 @@ Fabric includes a live activity surface in Pi:
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
121
  - `/fabric settings`: mirrors Pi's `/settings` and writes changes to `fabric.json`.
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.
122
123
 
123
124
  See the [interface & commands reference](docs/interface.md) for every view, keybinding, and slash command.
124
125
 
@@ -3,10 +3,32 @@ export declare const FABRIC_EXECUTION_DETAILS_MAX_BYTES: number;
3
3
  export interface FabricPersistedExecutionDetailsV1 {
4
4
  success: boolean;
5
5
  trace: FabricExecutionTraceV1;
6
+ /** Rich render audits persisted verbatim (minus in-memory media) so a resumed transcript re-renders — and expands — exactly like the live one. */
7
+ audits: FabricLegacyRenderAudit[];
8
+ phases: string[];
9
+ error?: string;
6
10
  outputFormat?: "yaml" | "json";
7
11
  outputFormatStartLine?: number;
8
12
  outputFormatLines?: number;
9
13
  }
14
+ /**
15
+ * The audit fields that cross into the session record; read back by
16
+ * {@link legacyAudit}. In-memory-only payloads (image blocks, media notes,
17
+ * correlation ids) never persist.
18
+ */
19
+ export interface FabricPersistableAuditInput {
20
+ ref: string;
21
+ tool?: string;
22
+ provider?: string;
23
+ success?: boolean;
24
+ error?: string;
25
+ args?: Record<string, unknown>;
26
+ result?: unknown;
27
+ resultTruncated?: boolean;
28
+ preview?: unknown;
29
+ startedAt?: number;
30
+ endedAt?: number;
31
+ }
10
32
  export interface FabricLegacyRenderAudit {
11
33
  ref: string;
12
34
  tool?: string;
@@ -17,6 +39,8 @@ export interface FabricLegacyRenderAudit {
17
39
  result?: unknown;
18
40
  resultTruncated?: boolean;
19
41
  preview?: unknown;
42
+ /** Set only when reconstructed from the durable trace: args are privacy-projected and results/previews are not retained. */
43
+ fromTrace?: boolean;
20
44
  startedAt?: number;
21
45
  endedAt?: number;
22
46
  }
@@ -31,13 +55,20 @@ export interface FabricExecutionRenderDetails {
31
55
  audits: FabricLegacyRenderAudit[];
32
56
  }
33
57
  /**
34
- * Creates the only object stored in final fabric_exec details. Rich call
35
- * audits remain available to live partial rendering but are deliberately not
36
- * copied here. The aggregate object, not each member independently, is bound.
58
+ * Creates the only object stored in final fabric_exec details. The
59
+ * privacy-projected trace stays the functional record for compaction and tool
60
+ * ownership; rich call audits persist verbatim (minus in-memory media) so a
61
+ * resumed transcript re-renders and expands exactly like the live one — the
62
+ * collapsed display, not the session record, is the visual boundary. The
63
+ * aggregate object, not each member independently, is bound; display-only
64
+ * audits trim before the functional trace.
37
65
  */
38
66
  export declare const createFabricPersistedExecutionDetails: (input: {
39
67
  success: boolean;
40
68
  trace: FabricExecutionTraceV1;
69
+ audits?: readonly FabricPersistableAuditInput[];
70
+ phases?: readonly string[];
71
+ error?: string;
41
72
  outputFormat?: "yaml" | "json";
42
73
  outputFormatStartLine?: number;
43
74
  outputFormatLines?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../src/audit/details.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,kCAAkC,QAAa,CAAC;AAE7D,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACnC;AAQD;;;;GAIG;AACH,eAAO,MAAM,qCAAqC,GAAI,OAAO;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,KAAG,iCA+BH,CAAC;AAqCF;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAC3C,OAAO,OAAO,KACb,4BAqCF,CAAC"}
1
+ {"version":3,"file":"details.d.ts","sourceRoot":"","sources":["../../src/audit/details.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,kCAAkC,QAAa,CAAC;AAE7D,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,kJAAkJ;IAClJ,MAAM,EAAE,uBAAuB,EAAE,CAAC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4HAA4H;IAC5H,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,uBAAuB,EAAE,CAAC;CACnC;AAuBD;;;;;;;;GAQG;AACH,eAAO,MAAM,qCAAqC,GAAI,OAAO;IAC3D,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,sBAAsB,CAAC;IAC9B,MAAM,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IAChD,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,KAAG,iCA8CH,CAAC;AAsCF;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,GAC3C,OAAO,OAAO,KACb,4BAqCF,CAAC"}
@@ -3500,7 +3500,12 @@ var renderEdit = (audit, theme, options) => {
3500
3500
  return { lines: [header2, ...rendered.lines], hidden: rendered.hidden };
3501
3501
  }
3502
3502
  const operations = editOperations(audit);
3503
- if (operations.length === 0) return null;
3503
+ if (operations.length === 0) {
3504
+ if (audit.fromTrace) {
3505
+ return { lines: [theme.fg("dim", "diff not retained across reload")], hidden: 0 };
3506
+ }
3507
+ return null;
3508
+ }
3504
3509
  const maxOperations = Math.min(operations.length, 3);
3505
3510
  const sections = [];
3506
3511
  let additions = 0;
@@ -3793,6 +3798,9 @@ var renderBash = (audit, theme, options) => {
3793
3798
  );
3794
3799
  const output = resultOutput(audit)?.replace(/\r?\n$/, "") ?? "";
3795
3800
  if (!output || output === "(no output)") {
3801
+ if (!output && audit.fromTrace) {
3802
+ return { lines: [...lines, theme.fg("dim", "output not retained across reload")], hidden: 0 };
3803
+ }
3796
3804
  return {
3797
3805
  lines: [...lines, theme.fg("muted", output || "No output")],
3798
3806
  hidden: 0
@@ -4722,7 +4730,7 @@ var renderFabricMulticallPartial = (input, theme, invalidate) => {
4722
4730
  const done = input.audits.filter((audit) => audit.success !== void 0).length;
4723
4731
  let header = theme.fg(
4724
4732
  "warning",
4725
- `\u25C6 Fabric running \xB7 ${done}/${input.audits.length} calls`
4733
+ `\u25C6 ${input.activityLabel ?? "Fabric"} running \xB7 ${done}/${input.audits.length} calls`
4726
4734
  );
4727
4735
  const progress = input.progress ? compactProgressPreview(input.progress) : "";
4728
4736
  if (progress) header += theme.fg("dim", ` \xB7 ${progress}`);
@@ -5097,4 +5105,4 @@ export {
5097
5105
  isActiveStatus,
5098
5106
  orderAgentsByCreation
5099
5107
  };
5100
- //# sourceMappingURL=chunk-MPS3TDUG.js.map
5108
+ //# sourceMappingURL=chunk-6E2VWXJ6.js.map