pi-fabric 0.62.0 → 0.62.1

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 (54) hide show
  1. package/dist/capture/catalog.d.ts +3 -2
  2. package/dist/capture/catalog.d.ts.map +1 -1
  3. package/dist/capture/interceptor.d.ts +1 -1
  4. package/dist/capture/interceptor.d.ts.map +1 -1
  5. package/dist/capture/wrapper.d.ts +15 -0
  6. package/dist/capture/wrapper.d.ts.map +1 -0
  7. package/dist/chunks/{chunk-ZUQSDM5A.js → chunk-FDLTDTYJ.js} +106 -15
  8. package/dist/chunks/chunk-FDLTDTYJ.js.map +7 -0
  9. package/dist/chunks/{chunk-NFC54EHJ.js → chunk-OQP7IV6U.js} +2 -2
  10. package/dist/chunks/chunk-SOBEXOWK.js +38 -0
  11. package/dist/chunks/chunk-SOBEXOWK.js.map +7 -0
  12. package/dist/chunks/{chunk-PCTZDCIV.js → chunk-X2AL6J4G.js} +2 -2
  13. package/dist/chunks/{chunk-2SF432HH.js → chunk-YWV4KFMB.js} +196 -8
  14. package/dist/chunks/chunk-YWV4KFMB.js.map +7 -0
  15. package/dist/chunks/{fabric-runtime-state-KOP2OIZN.js → fabric-runtime-state-HVFOEZ32.js} +12 -10
  16. package/dist/chunks/fabric-runtime-state-HVFOEZ32.js.map +7 -0
  17. package/dist/chunks/{settings-6PTZLKP6.js → settings-RDYXA7V6.js} +7 -7
  18. package/dist/chunks/settings-RDYXA7V6.js.map +7 -0
  19. package/dist/compaction/hook.d.ts.map +1 -1
  20. package/dist/compaction/hook.js +1 -1
  21. package/dist/core/agent-dir.d.ts +2 -0
  22. package/dist/core/agent-dir.d.ts.map +1 -0
  23. package/dist/core/approval-controller.d.ts +1 -1
  24. package/dist/core/approval-controller.d.ts.map +1 -1
  25. package/dist/core/auto-approval-classifier.d.ts +1 -1
  26. package/dist/core/auto-approval-classifier.d.ts.map +1 -1
  27. package/dist/core/session-context.d.ts +14 -0
  28. package/dist/core/session-context.d.ts.map +1 -0
  29. package/dist/core/skill-block.d.ts +10 -0
  30. package/dist/core/skill-block.d.ts.map +1 -0
  31. package/dist/core/skill-prompt.d.ts +1 -1
  32. package/dist/core/skill-prompt.d.ts.map +1 -1
  33. package/dist/core/token-math.d.ts +16 -0
  34. package/dist/core/token-math.d.ts.map +1 -0
  35. package/dist/fabric-exec-tool.d.ts +1 -1
  36. package/dist/fabric-exec-tool.d.ts.map +1 -1
  37. package/dist/fabric-runtime-state.d.ts +1 -1
  38. package/dist/fabric-runtime-state.d.ts.map +1 -1
  39. package/dist/fabric-state.d.ts +1 -1
  40. package/dist/fabric-state.d.ts.map +1 -1
  41. package/dist/index.js +22 -21
  42. package/dist/index.js.map +3 -3
  43. package/dist/residency/host.js +3 -3
  44. package/dist/ui/dynamic-border.d.ts +8 -0
  45. package/dist/ui/dynamic-border.d.ts.map +1 -0
  46. package/dist/ui/settings.d.ts +1 -1
  47. package/dist/ui/settings.d.ts.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/chunks/chunk-2SF432HH.js.map +0 -7
  50. package/dist/chunks/chunk-ZUQSDM5A.js.map +0 -7
  51. package/dist/chunks/fabric-runtime-state-KOP2OIZN.js.map +0 -7
  52. package/dist/chunks/settings-6PTZLKP6.js.map +0 -7
  53. /package/dist/chunks/{chunk-NFC54EHJ.js.map → chunk-OQP7IV6U.js.map} +0 -0
  54. /package/dist/chunks/{chunk-PCTZDCIV.js.map → chunk-X2AL6J4G.js.map} +0 -0
@@ -1,4 +1,5 @@
1
- import { wrapRegisteredTool, type ExtensionRunner, type RegisteredTool, type SourceInfo, type ToolDefinition } from "@earendil-works/pi-coding-agent";
1
+ import type { ExtensionRunner, RegisteredTool, SourceInfo, ToolDefinition } from "@earendil-works/pi-coding-agent";
2
+ import { wrapRegisteredToolForCapture } from "./wrapper.js";
2
3
  import type { FabricToolCaptureConfig } from "../config.js";
3
4
  import type { FabricRisk } from "../protocol.js";
4
5
  export interface CapturedToolEntry {
@@ -7,7 +8,7 @@ export interface CapturedToolEntry {
7
8
  registeredTool: RegisteredTool;
8
9
  sourceInfo: SourceInfo;
9
10
  runner: ExtensionRunner;
10
- wrappedTool: ReturnType<typeof wrapRegisteredTool>;
11
+ wrappedTool: ReturnType<typeof wrapRegisteredToolForCapture>;
11
12
  risk: FabricRisk;
12
13
  }
13
14
  export declare class CapturedToolCatalog {
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/capture/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1C,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACnD,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,qBAAa,mBAAmB;;IAU9B,IAAI,MAAM,IAAI,eAAe,GAAG,SAAS,CAExC;IAED,OAAO,CACL,eAAe,EAAE,cAAc,EAAE,EACjC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,uBAAuB,EAC/B,aAAa,EAAE,MAAM,GACpB,IAAI;IAyBP,KAAK,IAAI,IAAI;IAKb,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIhD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAMxC,IAAI,IAAI,iBAAiB,EAAE;IAI3B,IAAI,IAAI,IAAI,MAAM,CAEjB;CAOF"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/capture/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACnH,OAAO,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1C,cAAc,EAAE,cAAc,CAAC;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;IAC7D,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,qBAAa,mBAAmB;;IAU9B,IAAI,MAAM,IAAI,eAAe,GAAG,SAAS,CAExC;IAED,OAAO,CACL,eAAe,EAAE,cAAc,EAAE,EACjC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,uBAAuB,EAC/B,aAAa,EAAE,MAAM,GACpB,IAAI;IAyBP,KAAK,IAAI,IAAI;IAKb,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAK3C,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIhD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB;IAMxC,IAAI,IAAI,iBAAiB,EAAE;IAI3B,IAAI,IAAI,IAAI,MAAM,CAEjB;CAOF"}
@@ -1,4 +1,4 @@
1
- import { type ToolDefinition } from "@earendil-works/pi-coding-agent";
1
+ import type { ToolDefinition } from "@earendil-works/pi-coding-agent";
2
2
  import { type FabricToolCaptureConfig } from "../config.js";
3
3
  import { CapturedToolCatalog } from "./catalog.js";
4
4
  export interface RegisteredToolCaptureController {
@@ -1 +1 @@
1
- {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/capture/interceptor.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAyB,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAQnD,MAAM,WAAW,+BAA+B;IAC9C,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,uBAAuB,CAAC;IAOxC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAgGD,eAAO,MAAM,4BAA4B,GACvC,SAAS,4BAA4B,KACpC,OAAO,CAAC,+BAA+B,CAuCzC,CAAC"}
1
+ {"version":3,"file":"interceptor.d.ts","sourceRoot":"","sources":["../../src/capture/interceptor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,cAAc,EACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAyB,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAQnD,MAAM,WAAW,+BAA+B;IAC9C,SAAS,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACjD,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,4BAA4B;IAC3C,gBAAgB,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,uBAAuB,CAAC;IAOxC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AA0GD,eAAO,MAAM,4BAA4B,GACvC,SAAS,4BAA4B,KACpC,OAAO,CAAC,+BAA+B,CAuCzC,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ExtensionRunner, RegisteredTool } from "@earendil-works/pi-coding-agent";
2
+ type WrappedExecute = (toolCallId: unknown, params: unknown, signal: unknown, onUpdate: (update: any) => void, ctx?: unknown) => Promise<any>;
3
+ export interface WrappedRegisteredTool {
4
+ name: string;
5
+ label: string | undefined;
6
+ description: string | undefined;
7
+ parameters: unknown;
8
+ constrainedSampling: unknown;
9
+ prepareArguments: ((args: Record<string, unknown>) => unknown) | undefined;
10
+ executionMode: unknown;
11
+ execute: WrappedExecute;
12
+ }
13
+ export declare const wrapRegisteredToolForCapture: (registeredTool: RegisteredTool, runner: ExtensionRunner) => WrappedRegisteredTool;
14
+ export {};
15
+ //# sourceMappingURL=wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper.d.ts","sourceRoot":"","sources":["../../src/capture/wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAkB,MAAM,iCAAiC,CAAC;AAQvG,KAAK,cAAc,GAAG,CACpB,UAAU,EAAE,OAAO,EACnB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,EAC/B,GAAG,CAAC,EAAE,OAAO,KACV,OAAO,CAAC,GAAG,CAAC,CAAC;AAElB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;IACpB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gBAAgB,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC3E,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,cAAc,CAAC;CACzB;AAoBD,eAAO,MAAM,4BAA4B,GACvC,gBAAgB,cAAc,EAC9B,QAAQ,eAAe,KACtB,qBA2BF,CAAC"}
@@ -4,12 +4,15 @@ import {
4
4
  import {
5
5
  headlineArg
6
6
  } from "./chunk-5A6GNO6K.js";
7
+ import {
8
+ DynamicBorder
9
+ } from "./chunk-SOBEXOWK.js";
7
10
  import {
8
11
  THINKING_DIGEST_CUSTOM_TYPE,
9
12
  buildThinkingDigest,
10
13
  snapshotHandoffSession,
11
14
  thinkingTransferPolicy
12
- } from "./chunk-PCTZDCIV.js";
15
+ } from "./chunk-X2AL6J4G.js";
13
16
  import {
14
17
  isFabricThinking
15
18
  } from "./chunk-7B55UIZL.js";
@@ -27,10 +30,50 @@ import {
27
30
  FabricTraceSafeError
28
31
  } from "./chunk-HFYEEIXR.js";
29
32
 
33
+ // src/capture/wrapper.ts
34
+ var wrapToolDefinition = (definition, ctxFactory) => {
35
+ const execute = definition.execute;
36
+ return {
37
+ name: definition.name,
38
+ label: definition.label,
39
+ description: definition.description,
40
+ parameters: definition.parameters,
41
+ constrainedSampling: definition.constrainedSampling,
42
+ prepareArguments: definition.prepareArguments,
43
+ executionMode: definition.executionMode,
44
+ execute: (toolCallId, params, signal, onUpdate, ctx) => execute(toolCallId, params, signal, onUpdate, ctx ?? ctxFactory())
45
+ };
46
+ };
47
+ var wrapRegisteredToolForCapture = (registeredTool, runner) => {
48
+ const tool = wrapToolDefinition(
49
+ registeredTool.definition,
50
+ () => runner.createContext()
51
+ );
52
+ const execute = tool.execute;
53
+ return {
54
+ ...tool,
55
+ execute: async (toolCallId, params, signal, onUpdate) => {
56
+ const activeBefore = runner.getActiveTools();
57
+ const result = await execute(toolCallId, params, signal, onUpdate);
58
+ const activeAfter = runner.getActiveTools();
59
+ if (!activeBefore.every((name) => activeAfter.includes(name))) {
60
+ return result;
61
+ }
62
+ const beforeNames = new Set(activeBefore);
63
+ const addedToolNames = activeAfter.filter((name) => !beforeNames.has(name));
64
+ if (addedToolNames.length === 0) {
65
+ return result;
66
+ }
67
+ const previous = result?.addedToolNames ?? [];
68
+ return {
69
+ ...result,
70
+ addedToolNames: [.../* @__PURE__ */ new Set([...previous, ...addedToolNames])]
71
+ };
72
+ }
73
+ };
74
+ };
75
+
30
76
  // src/capture/catalog.ts
31
- import {
32
- wrapRegisteredTool
33
- } from "@earendil-works/pi-coding-agent";
34
77
  var CapturedToolCatalog = class {
35
78
  #tools = /* @__PURE__ */ new Map();
36
79
  #listeners = /* @__PURE__ */ new Set();
@@ -59,7 +102,7 @@ var CapturedToolCatalog = class {
59
102
  registeredTool,
60
103
  sourceInfo,
61
104
  runner,
62
- wrappedTool: wrapRegisteredTool(registeredTool, runner),
105
+ wrappedTool: wrapRegisteredToolForCapture(registeredTool, runner),
63
106
  risk: config.risks[definition.name] ?? config.defaultRisk
64
107
  });
65
108
  }
@@ -528,8 +571,42 @@ var runFabricHandoffAtBoundary = async (controller, runner, extension, pending,
528
571
  }
529
572
  };
530
573
 
574
+ // src/core/skill-block.ts
575
+ var escapeXml = (str) => str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
576
+ var formatSkillsForPrompt = (skills) => {
577
+ const visibleSkills = skills.filter((skill) => !skill.disableModelInvocation);
578
+ if (visibleSkills.length === 0) {
579
+ return "";
580
+ }
581
+ const lines = [
582
+ "\n\nThe following skills provide specialized instructions for specific tasks.",
583
+ "Use the read tool to load a skill's file when the task matches its description.",
584
+ "When a skill file references a relative path, resolve it against the skill directory (parent of SKILL.md / dirname of the path) and use that absolute path in tool commands.",
585
+ "",
586
+ "<available_skills>"
587
+ ];
588
+ for (const skill of visibleSkills) {
589
+ lines.push(" <skill>");
590
+ lines.push(` <name>${escapeXml(skill.name)}</name>`);
591
+ lines.push(` <description>${escapeXml(skill.description)}</description>`);
592
+ lines.push(` <location>${escapeXml(skill.filePath)}</location>`);
593
+ lines.push(" </skill>");
594
+ }
595
+ lines.push("</available_skills>");
596
+ return lines.join("\n");
597
+ };
598
+ var parseSkillBlock = (text) => {
599
+ const match = text.match(/^<skill name="([^"]+)" location="([^"]+)">\n([\s\S]*?)\n<\/skill>(?:\n\n([\s\S]+))?$/);
600
+ if (!match) return null;
601
+ return {
602
+ name: match[1],
603
+ location: match[2],
604
+ content: match[3],
605
+ userMessage: match[4]?.trim() || void 0
606
+ };
607
+ };
608
+
531
609
  // src/core/skill-dir.ts
532
- import { parseSkillBlock } from "@earendil-works/pi-coding-agent";
533
610
  import { homedir } from "node:os";
534
611
  import path from "node:path";
535
612
  var SKILL_DIR_MARKER = "<skill-dir>";
@@ -562,10 +639,6 @@ var expandSkillDirMarkersForRead = (content, args, cwd) => {
562
639
  };
563
640
 
564
641
  // src/core/approval-controller.ts
565
- import {
566
- DynamicBorder,
567
- getSelectListTheme
568
- } from "@earendil-works/pi-coding-agent";
569
642
  import {
570
643
  Container,
571
644
  SelectList,
@@ -574,7 +647,7 @@ import {
574
647
  } from "@earendil-works/pi-tui";
575
648
 
576
649
  // src/core/auto-approval-classifier.ts
577
- import { completeSimple, Type } from "@earendil-works/pi-ai/compat";
650
+ import { Type } from "typebox";
578
651
  var MAX_TRANSCRIPT_CHARS = 24e3;
579
652
  var MAX_ARGUMENT_CHARS = 16e3;
580
653
  var MAX_REASON_CHARS = 2e3;
@@ -633,13 +706,20 @@ var transcriptEvidence = (context) => {
633
706
  const joined = evidence.join("\n\n");
634
707
  return joined.length <= MAX_TRANSCRIPT_CHARS ? joined : joined.slice(joined.length - MAX_TRANSCRIPT_CHARS);
635
708
  };
709
+ var completeSimpleLoader;
710
+ var loadCompleteSimple = () => {
711
+ completeSimpleLoader ??= import("@earendil-works/pi-ai/compat").then((module) => module.completeSimple);
712
+ return completeSimpleLoader;
713
+ };
636
714
  var nativeProvider = (context, providerId) => {
637
715
  const registry = context.modelRegistry;
638
716
  return registry.getProvider?.(providerId);
639
717
  };
640
- var completeWithPiProvider = (context, model, request, options) => {
718
+ var completeWithPiProvider = async (context, model, request, options) => {
641
719
  const provider = nativeProvider(context, model.provider);
642
- return provider ? provider.streamSimple(model, request, options).result() : completeSimple(model, request, options);
720
+ if (provider) return provider.streamSimple(model, request, options).result();
721
+ const completeSimple = await loadCompleteSimple();
722
+ return completeSimple(model, request, options);
643
723
  };
644
724
  var configuredModel = (context, modelKey) => {
645
725
  if (!modelKey) return context.model;
@@ -717,6 +797,16 @@ var FabricAutoApprovalClassifier = class {
717
797
  };
718
798
 
719
799
  // src/core/approval-controller.ts
800
+ var selectListThemeFor = (theme) => {
801
+ const apply = (name, text) => theme.fg(name, text);
802
+ return {
803
+ selectedPrefix: (text) => apply("accent", text),
804
+ selectedText: (text) => apply("accent", text),
805
+ description: (text) => apply("muted", text),
806
+ scrollInfo: (text) => apply("muted", text),
807
+ noMatch: (text) => apply("muted", text)
808
+ };
809
+ };
720
810
  var inheritedRisks = () => {
721
811
  const allowed = /* @__PURE__ */ new Set(["read", "write", "execute", "network", "agent"]);
722
812
  return (process.env.PI_FABRIC_GRANTED_RISKS ?? "").split(",").filter((risk) => allowed.has(risk));
@@ -883,7 +973,7 @@ var ApprovalController = class {
883
973
  description: "Block the requested action"
884
974
  }
885
975
  ];
886
- const list = new SelectList(items, items.length, getSelectListTheme());
976
+ const list = new SelectList(items, items.length, selectListThemeFor(theme));
887
977
  list.onSelect = (item) => done(item.value);
888
978
  list.onCancel = () => done("deny");
889
979
  container.addChild(list);
@@ -2330,6 +2420,7 @@ export {
2330
2420
  claimFabricFsDriftHandoff,
2331
2421
  settleInPlacePrewalk,
2332
2422
  runFabricHandoffAtBoundary,
2423
+ formatSkillsForPrompt,
2333
2424
  expandSkillDirMarkersInSkillBlock,
2334
2425
  expandSkillDirMarkersForRead,
2335
2426
  FabricAutoApprovalClassifier,
@@ -2356,4 +2447,4 @@ export {
2356
2447
  resolveFabricIdentity,
2357
2448
  MainAgentController
2358
2449
  };
2359
- //# sourceMappingURL=chunk-ZUQSDM5A.js.map
2450
+ //# sourceMappingURL=chunk-FDLTDTYJ.js.map