pi-fabric 0.96.3 → 0.97.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 (79) hide show
  1. package/README.md +3 -2
  2. package/dist/cache/leases.d.ts +24 -0
  3. package/dist/cache/leases.d.ts.map +1 -0
  4. package/dist/cache/observations.d.ts +8 -0
  5. package/dist/cache/observations.d.ts.map +1 -0
  6. package/dist/cache/types.d.ts +68 -0
  7. package/dist/cache/types.d.ts.map +1 -0
  8. package/dist/chunks/{chunk-3CJETB4S.js → chunk-2LBC6TTP.js} +2 -2
  9. package/dist/chunks/{chunk-GGETIGM5.js → chunk-5WUW727L.js} +2 -1
  10. package/dist/chunks/{chunk-GGETIGM5.js.map → chunk-5WUW727L.js.map} +2 -2
  11. package/dist/chunks/{chunk-4BW7JF2W.js → chunk-6K5SRGW6.js} +4 -4
  12. package/dist/chunks/chunk-6K5SRGW6.js.map +7 -0
  13. package/dist/chunks/{chunk-ZTXZ6JDO.js → chunk-D5GNTBV6.js} +2 -2
  14. package/dist/chunks/{chunk-ULQFHZJE.js → chunk-EPAFGT2M.js} +35 -1
  15. package/dist/chunks/{chunk-ULQFHZJE.js.map → chunk-EPAFGT2M.js.map} +2 -2
  16. package/dist/chunks/{chunk-PMSIZLV6.js → chunk-IUCEIYLV.js} +2 -1
  17. package/dist/chunks/chunk-IUCEIYLV.js.map +7 -0
  18. package/dist/chunks/{chunk-B2IVWASP.js → chunk-IYJO7JRQ.js} +2 -2
  19. package/dist/chunks/{chunk-Y57UHPIK.js → chunk-KBHITFTO.js} +1 -1
  20. package/dist/chunks/chunk-KBHITFTO.js.map +7 -0
  21. package/dist/chunks/{chunk-ZRI433JP.js → chunk-QKNEM4RQ.js} +1 -1
  22. package/dist/chunks/{chunk-2A2NWQ36.js → chunk-WGGUZMQ4.js} +2 -2
  23. package/dist/components/provider-component.d.ts +1 -1
  24. package/dist/components/provider-component.d.ts.map +1 -1
  25. package/dist/core/action-registry.js +2 -2
  26. package/dist/core/shell-jobs.d.ts +9 -0
  27. package/dist/core/shell-jobs.d.ts.map +1 -1
  28. package/dist/fabric-runtime-state.d.ts.map +1 -1
  29. package/dist/fabric-runtime-state.js +608 -172
  30. package/dist/fabric-runtime-state.js.map +4 -4
  31. package/dist/index.js +5 -5
  32. package/dist/index.js.map +2 -2
  33. package/dist/jev.js +1 -1
  34. package/dist/protocol.d.ts +1 -0
  35. package/dist/protocol.d.ts.map +1 -1
  36. package/dist/protocol.js +1 -1
  37. package/dist/providers/cache-provider.d.ts +16 -0
  38. package/dist/providers/cache-provider.d.ts.map +1 -0
  39. package/dist/providers/jev-provider.d.ts +1 -1
  40. package/dist/providers/jev-provider.d.ts.map +1 -1
  41. package/dist/providers/jev-provider.js +1 -1
  42. package/dist/providers/tasks-provider.d.ts +2 -2
  43. package/dist/providers/tasks-provider.d.ts.map +1 -1
  44. package/dist/residency/host.js +2 -2
  45. package/dist/residency/pi-entry.js +2 -2
  46. package/dist/runtime/core-override-guest-types.js +2 -2
  47. package/dist/runtime/cpython-runtime.js +1 -1
  48. package/dist/runtime/cpython-runtime.js.map +1 -1
  49. package/dist/runtime/guest-types.d.ts +1 -1
  50. package/dist/runtime/guest-types.d.ts.map +1 -1
  51. package/dist/runtime/guest-types.js +1 -1
  52. package/dist/runtime/monty-runtime.js +1 -1
  53. package/dist/runtime/monty-runtime.js.map +2 -2
  54. package/dist/runtime/node-process-runtime.js +2 -2
  55. package/dist/runtime/quickjs-runtime.d.ts.map +1 -1
  56. package/dist/runtime/quickjs-runtime.js +1 -1
  57. package/dist/runtime/typescript-kernel.js +4 -4
  58. package/dist/runtime-state-builtins.d.ts.map +1 -1
  59. package/dist/schema/policy.d.ts.map +1 -1
  60. package/docs/architecture.md +1 -0
  61. package/docs/background-tasks.md +18 -0
  62. package/docs/components.md +4 -1
  63. package/docs/configuration.md +1 -1
  64. package/docs/harnesses.md +82 -109
  65. package/docs/jev.md +51 -46
  66. package/docs/prompt-cache.md +91 -0
  67. package/docs/skills.md +1 -1
  68. package/package.json +1 -1
  69. package/skillsets/python/fabric-jev/SKILL.md +11 -11
  70. package/skillsets/typescript/fabric-exec/SKILL.md +5 -0
  71. package/skillsets/typescript/fabric-jev/SKILL.md +11 -11
  72. package/dist/chunks/chunk-4BW7JF2W.js.map +0 -7
  73. package/dist/chunks/chunk-PMSIZLV6.js.map +0 -7
  74. package/dist/chunks/chunk-Y57UHPIK.js.map +0 -7
  75. /package/dist/chunks/{chunk-3CJETB4S.js.map → chunk-2LBC6TTP.js.map} +0 -0
  76. /package/dist/chunks/{chunk-ZTXZ6JDO.js.map → chunk-D5GNTBV6.js.map} +0 -0
  77. /package/dist/chunks/{chunk-B2IVWASP.js.map → chunk-IYJO7JRQ.js.map} +0 -0
  78. /package/dist/chunks/{chunk-ZRI433JP.js.map → chunk-QKNEM4RQ.js.map} +0 -0
  79. /package/dist/chunks/{chunk-2A2NWQ36.js.map → chunk-WGGUZMQ4.js.map} +0 -0
package/README.md CHANGED
@@ -142,12 +142,13 @@ See the [interface & commands reference](docs/interface.md) for every view, keyb
142
142
 
143
143
  - [Configuration](docs/configuration.md): `fabric.json`, code modes, tool capture, approvals, and budgets.
144
144
  - [Execution kernels](docs/kernels.md): exclusive TypeScript/Python selection, Monty sandboxing, CPython escape hatch, agent inheritance, and examples.
145
+ - [Prompt cache](docs/prompt-cache.md): honest cache observations and optional, time-bounded native warming leases.
145
146
  - [Memory & recall](docs/memory-recall.md): compact ranked hits, uniform follow calls, lossless expansion, and guest-local `memory.walk` computation.
146
147
  - [Interface & commands](docs/interface.md): dashboard, settings, keybindings, slash commands, and headless runs.
147
148
  - [Agents, actors & mesh](docs/agents.md): model handoff, `/fabric prewalk`, runners, transports, actors, councils, recursive queries, and durable coordination.
148
149
  - [Durable residency through Pi](docs/residency-runtime.md): background host lifecycle and the Pi-runtime launcher boundary.
149
- - [External connector components](docs/harnesses.md): connector-owned browser/macOS extensions using the generic component lifecycle. No connector-specific runtime registration; works with ordinary models, deterministic code, or Jev.
150
- - [Jev System One programs](docs/jev.md): typed judgments, `/login jev`, `openrouter`, or `vercel-ai-gateway` credentials, foreground/background loops, and budgets.
150
+ - [Harness CLI composition](docs/harnesses.md): use browser/macOS tools through their existing CLIs, without Fabric-specific bridges or component configuration.
151
+ - [Jev shell orchestration](docs/jev.md): bounded process supervision, event-driven task wait/watch, optional explicit typed judgments, and foreground/background budgets.
151
152
  - [Components & committed capabilities](docs/components.md): supervised effects, exact requirements, external per-model guidance and execution-profile replacement, rolling provider generations, actor commitments, and both formal calculi.
152
153
  - [External providers](docs/providers.md): the versioned provider protocol for extensions.
153
154
  - [Architecture & security](docs/architecture.md): the host bridge, sandboxing, tool-call robustness, and limits.
@@ -0,0 +1,24 @@
1
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
2
+ import type { FabricCacheHoldOptions, FabricCacheHoldResult, FabricCacheLease } from "./types.js";
3
+ export declare const MAX_CACHE_LEASE_MS: number;
4
+ export declare const MAX_CACHE_LEASES = 128;
5
+ export declare class CacheLeases {
6
+ #private;
7
+ private readonly pi;
8
+ private readonly sessionId;
9
+ constructor(pi: ExtensionAPI, sessionId: string);
10
+ supported(context: ExtensionContext): boolean;
11
+ get cleanupError(): string | null;
12
+ values(): FabricCacheLease[];
13
+ reconcile(context: ExtensionContext): void;
14
+ hold(options: FabricCacheHoldOptions, context: ExtensionContext, scope: FabricCacheLease["scope"], invocationId: string, signal?: AbortSignal): FabricCacheHoldResult;
15
+ release(id: string): {
16
+ released: boolean;
17
+ cleanupError: string | null;
18
+ };
19
+ dispose(id: string): void;
20
+ invocationEnded(id: string): void;
21
+ invalidate(): void;
22
+ close(): void;
23
+ }
24
+ //# sourceMappingURL=leases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leases.d.ts","sourceRoot":"","sources":["../../src/cache/leases.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAUlG,eAAO,MAAM,kBAAkB,QAAc,CAAC;AAC9C,eAAO,MAAM,gBAAgB,MAAM,CAAC;AAEpC,qBAAa,WAAW;;IASV,OAAO,CAAC,QAAQ,CAAC,EAAE;IAAgB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAA5C,EAAE,EAAE,YAAY,EAAmB,SAAS,EAAE,MAAM;IAEjF,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAG7C,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAA+B;IAChE,MAAM,IAAI,gBAAgB,EAAE;IAU5B,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IA2B1C,IAAI,CAAC,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC/F,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,qBAAqB;IAuCpE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;IAKvE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIzB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IA0BjC,UAAU,IAAI,IAAI;IAIlB,KAAK,IAAI,IAAI;CAOd"}
@@ -0,0 +1,8 @@
1
+ import type { ExtensionContext } from "@earendil-works/pi-coding-agent";
2
+ import type { FabricCacheObservation, FabricCacheSample } from "./types.js";
3
+ export declare const CACHE_OBSERVATION_LIMIT = 256;
4
+ /** Unknown counters are not zero-percent cache misses. */
5
+ export declare function cacheSample(usage: unknown, entryId: string, timestamp: string): FabricCacheSample | null;
6
+ /** Bounded active-branch walk; never scans session files or abandoned branches. */
7
+ export declare function observePromptCache(context: ExtensionContext): FabricCacheObservation;
8
+ //# sourceMappingURL=observations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observations.d.ts","sourceRoot":"","sources":["../../src/cache/observations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAM3C,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAYxG;AAED,mFAAmF;AACnF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,sBAAsB,CA+CpF"}
@@ -0,0 +1,68 @@
1
+ export interface FabricCacheHoldOptions {
2
+ /** self is the local Pi session; main is accepted only in a root Pi runtime. */
3
+ target?: "self" | "main";
4
+ durationMs: number;
5
+ /** Requires native admission support; currently returns unsupported, never ignored. */
6
+ maxRefreshes?: number;
7
+ /** Requires native admission support; currently returns unsupported, never ignored. */
8
+ maxCostUsd?: number;
9
+ }
10
+ export interface FabricCacheLease {
11
+ id: string;
12
+ scope: "session" | "component";
13
+ sessionId: string;
14
+ model: string;
15
+ expiresAt: number;
16
+ }
17
+ export type FabricCacheHoldResult = ({
18
+ status: "held";
19
+ } & FabricCacheLease) | {
20
+ status: "unsupported" | "unavailable";
21
+ reason: string;
22
+ };
23
+ export interface FabricCacheSample {
24
+ entryId: string;
25
+ observedAt: number;
26
+ input: number;
27
+ cacheRead: number;
28
+ cacheWrite: number;
29
+ output: number;
30
+ totalInput: number;
31
+ cacheReadShare: number;
32
+ reportedCostUsd: number | null;
33
+ }
34
+ export interface FabricCacheObservation {
35
+ lastRequest: FabricCacheSample | null;
36
+ lastRefresh: FabricCacheSample | null;
37
+ maintenance: {
38
+ requests: number;
39
+ tokens: number;
40
+ reportedCostUsd: number;
41
+ unknownCostRequests: number;
42
+ unknownTokenRequests: number;
43
+ };
44
+ window: {
45
+ entries: number;
46
+ limit: number;
47
+ truncated: boolean;
48
+ stoppedAt: string | null;
49
+ };
50
+ }
51
+ export interface FabricCacheStatus {
52
+ target: "self";
53
+ sessionId: string;
54
+ model: string | null;
55
+ supported: boolean;
56
+ reason: string | null;
57
+ limits: {
58
+ durationMs: true;
59
+ maxRefreshes: false;
60
+ maxCostUsd: false;
61
+ };
62
+ leases: FabricCacheLease[];
63
+ /** Native scheduling/residency is not observable through the scoped lease API. */
64
+ scheduled: null;
65
+ cleanupError: string | null;
66
+ observation: FabricCacheObservation;
67
+ }
68
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cache/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,GAAG,WAAW,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAC7B,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CAAC,GACvC;IAAE,MAAM,EAAE,aAAa,GAAG,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAC1F;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE;QAAE,UAAU,EAAE,IAAI,CAAC;QAAC,YAAY,EAAE,KAAK,CAAC;QAAC,UAAU,EAAE,KAAK,CAAA;KAAE,CAAC;IACrE,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,kFAAkF;IAClF,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,sBAAsB,CAAC;CACrC"}
@@ -29,7 +29,7 @@ import {
29
29
  } from "./chunk-KS44WKJJ.js";
30
30
  import {
31
31
  FABRIC_NESTED_TOOL_CALL_ID_PREFIX
32
- } from "./chunk-Y57UHPIK.js";
32
+ } from "./chunk-KBHITFTO.js";
33
33
  import {
34
34
  FabricResolutionError,
35
35
  FabricTraceSafeError,
@@ -2101,4 +2101,4 @@ export {
2101
2101
  scoreActionSearch,
2102
2102
  ActionRegistry
2103
2103
  };
2104
- //# sourceMappingURL=chunk-3CJETB4S.js.map
2104
+ //# sourceMappingURL=chunk-2LBC6TTP.js.map
@@ -1358,6 +1358,7 @@ var FABRIC_COMPONENT_PROVIDER_NAMES = [
1358
1358
  "state",
1359
1359
  "schema",
1360
1360
  "compact",
1361
+ "cache",
1361
1362
  "prewalk",
1362
1363
  "agents",
1363
1364
  "memory",
@@ -1792,4 +1793,4 @@ export {
1792
1793
  captureLoadedFileIdentity,
1793
1794
  runtimeIdentityStatus
1794
1795
  };
1795
- //# sourceMappingURL=chunk-GGETIGM5.js.map
1796
+ //# sourceMappingURL=chunk-5WUW727L.js.map