pi-fabric 0.92.35 → 0.92.36

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 (38) hide show
  1. package/dist/agents/completion-inbox.d.ts +15 -0
  2. package/dist/agents/completion-inbox.d.ts.map +1 -0
  3. package/dist/agents/manager.d.ts +1 -0
  4. package/dist/agents/manager.d.ts.map +1 -1
  5. package/dist/agents.js +1 -1
  6. package/dist/chunks/{chunk-6Q234GXU.js → chunk-BJGZESBD.js} +20 -3
  7. package/dist/chunks/chunk-BJGZESBD.js.map +7 -0
  8. package/dist/chunks/{chunk-UAWA6VJY.js → chunk-GTLOT23W.js} +8 -6
  9. package/dist/chunks/chunk-GTLOT23W.js.map +7 -0
  10. package/dist/chunks/{chunk-RWDKJ24D.js → chunk-NHMICIEU.js} +2 -2
  11. package/dist/chunks/{chunk-Z7ZAT43C.js → chunk-PXXRY3TN.js} +7 -4
  12. package/dist/chunks/chunk-PXXRY3TN.js.map +7 -0
  13. package/dist/chunks/{chunk-JNMTTJMQ.js → chunk-TX6E5W7H.js} +1 -1
  14. package/dist/chunks/{chunk-JNMTTJMQ.js.map → chunk-TX6E5W7H.js.map} +1 -1
  15. package/dist/fabric-runtime-state.d.ts.map +1 -1
  16. package/dist/fabric-runtime-state.js +197 -40
  17. package/dist/fabric-runtime-state.js.map +4 -4
  18. package/dist/providers/agents-actions.d.ts.map +1 -1
  19. package/dist/providers/agents-provider.d.ts.map +1 -1
  20. package/dist/residency/actor-client.js +2 -2
  21. package/dist/residency/client.d.ts +3 -0
  22. package/dist/residency/client.d.ts.map +1 -1
  23. package/dist/residency/host.d.ts.map +1 -1
  24. package/dist/residency/host.js +3 -3
  25. package/dist/residency/pi-entry.js +3 -3
  26. package/dist/residency/protocol.d.ts +4 -0
  27. package/dist/residency/protocol.d.ts.map +1 -1
  28. package/dist/ui/settings.js +1 -1
  29. package/dist/ui/settings.js.map +1 -1
  30. package/docs/agents.md +8 -0
  31. package/docs/configuration.md +1 -1
  32. package/package.json +1 -1
  33. package/skillsets/python/fabric-exec/references/agents.md +1 -1
  34. package/skillsets/typescript/fabric-exec/references/agents.md +1 -1
  35. package/dist/chunks/chunk-6Q234GXU.js.map +0 -7
  36. package/dist/chunks/chunk-UAWA6VJY.js.map +0 -7
  37. package/dist/chunks/chunk-Z7ZAT43C.js.map +0 -7
  38. /package/dist/chunks/{chunk-RWDKJ24D.js.map → chunk-NHMICIEU.js.map} +0 -0
@@ -0,0 +1,15 @@
1
+ import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
2
+ import type { AgentRunResult } from "./types.js";
3
+ export declare const AGENT_COMPLETION_MESSAGE_TYPE = "pi-fabric-agent-complete";
4
+ type Completion = Pick<AgentRunResult, "id" | "name" | "status" | "text" | "error" | "startedAt" | "finishedAt">;
5
+ /** Own notifications until the tool batch ends, so a late wait can still retract them. */
6
+ export declare class AgentCompletionInbox {
7
+ #private;
8
+ readonly pi: ExtensionAPI;
9
+ constructor(pi: ExtensionAPI, context: ExtensionContext);
10
+ enqueue(result: Completion, delivered?: () => void): void;
11
+ acknowledge(id: string): void;
12
+ close(): void;
13
+ }
14
+ export {};
15
+ //# sourceMappingURL=completion-inbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion-inbox.d.ts","sourceRoot":"","sources":["../../src/agents/completion-inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,6BAA6B,6BAA6B,CAAC;AAKxE,KAAK,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,YAAY,CAAC,CAAC;AAQjH,0FAA0F;AAC1F,qBAAa,oBAAoB;;IASnB,QAAQ,CAAC,EAAE,EAAE,YAAY;gBAAhB,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB;IAwChE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,IAAI;IAwBzD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAK7B,KAAK,IAAI,IAAI;CAkDd"}
@@ -34,6 +34,7 @@ export declare class AgentManager {
34
34
  identityId?: string;
35
35
  retention?: FabricRetentionConfig;
36
36
  onBackgroundComplete?: (result: AgentRunResult) => void;
37
+ onResultConsumed?: (id: string) => void;
37
38
  onLifecycle?: (event: FabricLifecyclePublishRequest) => void;
38
39
  preparePiModel?: (model: string | undefined) => Promise<string | void>;
39
40
  resolveParticipantGuidance?: AgentParticipantGuidanceResolver;
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/agents/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/agents/manager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAOzD,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAEtB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,KAAK,EAEV,kBAAkB,EAClB,cAAc,EACd,eAAe,EAEf,cAAc,EACd,eAAe,EACf,cAAc,EAEd,gBAAgB,EAKjB,MAAM,YAAY,CAAC;AAuBpB,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,uBAAuB,CAAC;AAoB/B,eAAO,MAAM,uBAAuB,GAClC,qBAAqB,MAAM,EAC3B,qBAAqB,MAAM,KAC1B,MAYF,CAAC;AAEF,UAAU,+BAA+B;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,KAAK,gCAAgC,GAAG,CACtC,OAAO,EAAE,+BAA+B,KACrC,MAAM,GAAG,SAAS,CAAC;AAExB,8EAA8E;AAC9E,eAAO,MAAM,eAAe,GAAI,WAAW,MAAM,EAAE,eAAe,MAAM,KAAG,MAoB1E,CAAC;AA6QF,qBAAa,YAAY;;IAmDrB,QAAQ,CAAC,GAAG,EAAE,MAAM;IACpB,QAAQ,CAAC,MAAM,EAAE,iBAAiB;gBADzB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,iBAAiB,EAClC,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,YAAY,CAAC;QAC5B,aAAa,CAAC,EAAE,MAAM,mBAAmB,CAAC;QAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,qBAAqB,CAAC;QAClC,oBAAoB,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;QACxD,gBAAgB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,6BAA6B,KAAK,IAAI,CAAC;QAC7D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACvE,0BAA0B,CAAC,EAAE,gCAAgC,CAAC;QAC9D,2BAA2B,CAAC,EAAE,MAAM,mBAAmB,EAAE,GAAG,SAAS,CAAC;KAClE;IA2ER,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK7C,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM;IAgBzC,yFAAyF;IACzF,aAAa,CACX,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,CAAC,GACjE,YAAY,GAAG,SAAS;IAsB3B,6FAA6F;IAC7F,oBAAoB,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,mBAAmB;IAQ1E,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,CAAC;IAoVzE,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAK5E,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAiB/C,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAKhC,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IA+D9B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,eAAe;IAgBpD,IAAI,IAAI,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC;IAI/C,SAAS,IAAI,KAAK,CAAC,cAAc,GAAG,eAAe,CAAC;IA8BpD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI5C,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIzC,YAAY,CAAC,OAAO,UAAQ,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAUzD,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBzC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAc9E,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,cAAc;IAkBnF,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,gBAAgB;IAKpE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,gBAAgB;IAgBvE,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,gBAAgB;IAIvE,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,gBAAgB;IAUvE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,gBAAgB;IA4B5D,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAorBvB"}
package/dist/agents.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  AGENTS_ACTION_DESCRIPTORS,
3
3
  normalizeAgentRunRequest
4
- } from "./chunks/chunk-Z7ZAT43C.js";
4
+ } from "./chunks/chunk-PXXRY3TN.js";
5
5
  import {
6
6
  validateAgentResult
7
7
  } from "./chunks/chunk-3QECYQGA.js";
@@ -1880,6 +1880,7 @@ var AgentManager = class {
1880
1880
  this.#claudeBinary = options.claudeBinary ?? process.env.PI_FABRIC_CLAUDE_BINARY ?? config.claude.binary;
1881
1881
  this.#vedaBinary = options.vedaBinary ?? process.env.PI_FABRIC_VEDA_BINARY ?? config.veda.binary;
1882
1882
  this.#onBackgroundComplete = options.onBackgroundComplete;
1883
+ this.#onResultConsumed = options.onResultConsumed;
1883
1884
  this.#onLifecycle = options.onLifecycle;
1884
1885
  this.#preparePiModel = options.preparePiModel;
1885
1886
  this.#resolveParticipantGuidance = options.resolveParticipantGuidance;
@@ -1932,6 +1933,7 @@ var AgentManager = class {
1932
1933
  #identityId;
1933
1934
  #transports;
1934
1935
  #onBackgroundComplete;
1936
+ #onResultConsumed;
1935
1937
  #onLifecycle;
1936
1938
  #preparePiModel;
1937
1939
  #resolveParticipantGuidance;
@@ -2319,16 +2321,20 @@ var AgentManager = class {
2319
2321
  managed.background = false;
2320
2322
  if (!managed.settled) {
2321
2323
  if (!managed.result) throw new Error(`Agent ${id} has no pending result`);
2322
- return managed.result;
2324
+ const result = await managed.result;
2325
+ this.#onResultConsumed?.(id);
2326
+ return result;
2323
2327
  }
2324
2328
  const record = readRecord(managed.statusFile) ?? managed.latestRecord;
2325
2329
  if (!record || !terminalStatuses.has(record.status)) {
2326
2330
  throw new Error(`Agent ${id} settled without a result`);
2327
2331
  }
2332
+ this.#onResultConsumed?.(id);
2328
2333
  return this.#withTransportMetadata(record, managed);
2329
2334
  }
2330
2335
  markForeground(id) {
2331
2336
  this.#requireRun(id).background = false;
2337
+ this.#onResultConsumed?.(id);
2332
2338
  }
2333
2339
  detachSignal(id) {
2334
2340
  this.#detach(this.#requireRun(id), "caller detached; the run continues");
@@ -2358,6 +2364,12 @@ var AgentManager = class {
2358
2364
  managed.abortHandler = void 0;
2359
2365
  if (managed.background) return;
2360
2366
  managed.background = true;
2367
+ if (managed.settled) {
2368
+ const record = readRecord(managed.statusFile) ?? managed.latestRecord;
2369
+ if (record && terminalStatuses.has(record.status)) {
2370
+ this.#notifyBackgroundComplete(managed, this.#withTransportMetadata(record, managed));
2371
+ }
2372
+ }
2361
2373
  if (attached) {
2362
2374
  this.#emitLifecycle(managed, "run.detached", Date.now(), { data: { reason } });
2363
2375
  }
@@ -2460,6 +2472,7 @@ var AgentManager = class {
2460
2472
  async cleanup(id, deleteBranch = false) {
2461
2473
  const managed = this.#requireRun(id);
2462
2474
  if (!managed.settled) throw new Error("Cannot clean up a running agent");
2475
+ this.markForeground(id);
2463
2476
  const cleaned = await this.#worktrees.cleanup(id, deleteBranch);
2464
2477
  if (!this.config.retainRuns) {
2465
2478
  await removeTree(managed.runDirectory);
@@ -2851,7 +2864,11 @@ var AgentManager = class {
2851
2864
  this.#invalidateUiList();
2852
2865
  finishAgentSettlement(managed, result);
2853
2866
  managed.task = "";
2854
- if (managed.background && !this.#closing && this.config.notifyOnComplete && this.#onBackgroundComplete) {
2867
+ this.#notifyBackgroundComplete(managed, result);
2868
+ }
2869
+ #notifyBackgroundComplete(managed, result) {
2870
+ if (managed.background && !managed.completionNotified && !this.#closing && this.config.notifyOnComplete && this.#onBackgroundComplete) {
2871
+ managed.completionNotified = true;
2855
2872
  try {
2856
2873
  this.#onBackgroundComplete(result);
2857
2874
  } catch {
@@ -6962,4 +6979,4 @@ export {
6962
6979
  agentParticipantRecords,
6963
6980
  actorParticipantRecord
6964
6981
  };
6965
- //# sourceMappingURL=chunk-6Q234GXU.js.map
6982
+ //# sourceMappingURL=chunk-BJGZESBD.js.map