omp-fabric 1.6.0 → 1.8.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.
@@ -22,6 +22,7 @@ export interface FabricStateOptions {
22
22
  paths?: FabricRuntimePaths;
23
23
  runtimeLoader?: () => Promise<typeof import("./fabric-runtime-state.js")>;
24
24
  lcmContext?: FabricRuntimeStateOptions["lcmContext"];
25
+ lcmRuntime?: FabricRuntimeStateOptions["lcmRuntime"];
25
26
  }
26
27
  type ActivationHook = (context: ExtensionContext) => void | Promise<void>;
27
28
  type ActivationFailureHook = () => void | Promise<void>;
@@ -79,6 +80,7 @@ export declare class FabricState {
79
80
  }): void;
80
81
  reloadConfig(context: ExtensionContext): void;
81
82
  setSchemaMode(context: ExtensionContext, mode: FabricSchemaMode): void;
83
+ lcmStatus(): ReturnType<NonNullable<FabricStateOptions["lcmRuntime"]>>;
82
84
  schemaStatus(context: ExtensionContext): {
83
85
  mode: FabricSchemaMode;
84
86
  source: "config" | "session override";
@@ -1 +1 @@
1
- {"version":3,"file":"fabric-state.d.ts","sourceRoot":"","sources":["../src/fabric-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAG9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAK3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,KAAK,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,cAAc,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,mBAAmB,EACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAEV,yBAAyB,EACzB,cAAc,EACf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAC/F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,cAAc,2BAA2B,CAAC,CAAC,CAAC;IAC1E,UAAU,CAAC,EAAE,yBAAyB,CAAC,YAAY,CAAC,CAAC;CACtD;AAED,KAAK,cAAc,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1E,KAAK,qBAAqB,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAExD,qBAAa,WAAW;;IAqBpB,QAAQ,CAAC,GAAG,EAAE,YAAY;IAC1B,QAAQ,CAAC,aAAa,EAAE,mBAAmB;IAR7C,QAAQ,CAAC,QAAQ,sBAA6B;IAC9C,QAAQ,CAAC,OAAO,oBAA2B;IAC3C,QAAQ,CAAC,YAAY,sBAA6B;IAClD,QAAQ,CAAC,gBAAgB,yBAAgC;gBAI9C,GAAG,EAAE,YAAY,EACjB,aAAa,EAAE,mBAAmB,EAC3C,OAAO,GAAE,kBAAuB;IAKlC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAMD,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,MAAM,IAAI,YAAY,CAGzB;IAED,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAIlC;IAED,IAAI,QAAQ,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAAsC;IACpF,IAAI,SAAS,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAAuC;IAEvF,sFAAsF;IACtF,IAAI,cAAc,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAA0C;IAEpG,oFAAoF;IACpF,gBAAgB,IAAI,IAAI;IACxB,IAAI,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAoC;IAC9E,IAAI,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAAoC;IAC9E,IAAI,YAAY,IAAI,kBAAkB,CAAC,cAAc,CAAC,CAA0C;IAChG,IAAI,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAkC;IACxE,IAAI,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAqC;IACjF,IAAI,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAqC;IACjF,IAAI,UAAU,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAAwC;IAE1F,iBAAiB,CAAC,IAAI,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,qBAAqB,GAAG,IAAI;IAK1E,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BnD,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAapD,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD,qBAAqB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IA0CzD,aAAa,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,mBAAmB;IAC9D,SAAS,IAAI,cAAc,EAAE;IAC7B,cAAc,IAAI,oBAAoB;IAGtC,aAAa,IAAI,wBAAwB,EAAE;IAC3C,gBAAgB,CAAC,OAAO,GAAE,4BAAiC,GAAG,qBAAqB,EAAE;IAGrF,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,0BAA0B,GAAG,OAAO,CAAC,wBAAwB,CAAC;IAG5H,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IACnD,YAAY,CAAC,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;IAGvK,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAGhJ,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IACjD,iBAAiB,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM;IAGnG,oBAAoB,CAAC,KAAK,EAAE,wBAAwB,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IAevF,yBAAyB,CACvB,SAAS,EAAE,yBAAyB,EACpC,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GACpC,IAAI;IAWP,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAoB7C,aAAa,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAmBtE,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG;QACvC,IAAI,EAAE,gBAAgB,CAAC;QACvB,MAAM,EAAE,QAAQ,GAAG,kBAAkB,CAAC;QACtC,eAAe,EAAE,MAAM,CAAC;KACzB;IAoBK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAqHhC"}
1
+ {"version":3,"file":"fabric-state.d.ts","sourceRoot":"","sources":["../src/fabric-state.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,2BAA2B,CAAC;AAoKnC,wBAA8B,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAqwBxE;AAED,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EAEb,MAAM,2BAA2B,CAAC;AAoKnC,wBAA8B,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuwBxE;AAED,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -199,7 +199,7 @@ import {
199
199
  loadFabricConfigForScope,
200
200
  resolveAgentDir,
201
201
  saveFabricConfig
202
- } from "./chunks/chunk-SY56DK6U.js";
202
+ } from "./chunks/chunk-4GVGY35I.js";
203
203
  import {
204
204
  FABRIC_ACTOR_OMP_HOST_EVENTS
205
205
  } from "./chunks/chunk-3LI7YO4M.js";
@@ -997,6 +997,7 @@ ${top}` : "fingerprints: (none this session)"
997
997
  getArgumentCompletions: (argumentPrefix) => {
998
998
  const subcommands = [
999
999
  "status",
1000
+ "lcm",
1000
1001
  "dashboard",
1001
1002
  "chat",
1002
1003
  "settings",
@@ -1751,9 +1752,58 @@ Inspect LLM I/O: /fabric log ${shortId} \xB7 Export: /fabric export-log ${actor.
1751
1752
  }
1752
1753
  return;
1753
1754
  }
1755
+ if (command === "lcm") {
1756
+ const config2 = state.config;
1757
+ if (config2.compaction.engine !== "lcm") {
1758
+ context.ui.notify(`Compaction engine is "${config2.compaction.engine}"; LCM is not assembling context.`, "warning");
1759
+ return;
1760
+ }
1761
+ const lcm = state.lcmStatus();
1762
+ if (!lcm) {
1763
+ context.ui.notify("LCM ledger is not open yet. It opens when a session starts with the lcm engine.", "warning");
1764
+ return;
1765
+ }
1766
+ const report = lcm.report();
1767
+ const coverage = lcm.coverage();
1768
+ const percent = coverage.active === 0 ? 0 : Math.round(coverage.covered / coverage.active * 100);
1769
+ const seconds = (value) => `${Math.round(value / 1e3)}s`;
1770
+ const summaries = report.modelNodes + report.emergencyNodes;
1771
+ const hints = [];
1772
+ const averageWallMs = report.usage.calls > 0 ? report.usage.wallMs / report.usage.calls : 0;
1773
+ const wallLeft = report.budget.wallMs - report.usage.wallMs;
1774
+ if (!config2.compaction.lcmModelSummaries) {
1775
+ hints.push("Model summaries are disabled by compaction.lcmModelSummaries, so every node is a deterministic excerpt.");
1776
+ } else if (report.usage.calls >= report.budget.calls || Number.isFinite(report.budget.wallMs) && averageWallMs > 0 && wallLeft < averageWallMs) {
1777
+ hints.push(`The configured model budget cannot fit another summary (${seconds(wallLeft)} left, ${seconds(averageWallMs)} per call), so new nodes use the deterministic reducer. Raise compaction.lcmMaxDailyModelSeconds or compaction.lcmMaxDailyModelCalls, or set them to 0 for no limit.`);
1778
+ }
1779
+ if (coverage.active > 0 && percent < 50) {
1780
+ hints.push("The ready frontier covers less than half of this branch, so a compaction now falls back to an excerpt. Raise compaction.lcmMaintenancePasses to summarize more per turn.");
1781
+ }
1782
+ if (!report.summaryModel) {
1783
+ hints.push("No summary model is set, so summaries bill at the active session model. Pick one in /fabric settings under Compaction.");
1784
+ }
1785
+ context.ui.notify(
1786
+ [
1787
+ `project: ${report.projectKey}`,
1788
+ `ledger: ${report.state} \xB7 ${report.rawEntries} entries \xB7 session ${report.sessionId ?? "none"} holds ${report.sessionEntries}`,
1789
+ `frontier: ${coverage.covered}/${coverage.active} active sources covered (${percent}%)`,
1790
+ `nodes: ${summaries} ready \xB7 ${report.modelNodes} written by the model \xB7 ${report.emergencyNodes} deterministic \xB7 ${report.pendingNodes} pending`,
1791
+ `jobs: ${report.pendingJobs} pending`,
1792
+ `model: ${report.summaryModel || "inherit (active session model)"}`,
1793
+ `today: ${report.usage.calls}${Number.isFinite(report.budget.calls) ? `/${report.budget.calls}` : ""} calls \xB7 ${seconds(report.usage.wallMs)}${Number.isFinite(report.budget.wallMs) ? `/${seconds(report.budget.wallMs)}` : ""} \xB7 ${report.usage.inputTokens} in \xB7 ${report.usage.outputTokens} out \xB7 $${report.usage.cost.toFixed(4)}`,
1794
+ `budget: ${Number.isFinite(report.budget.calls) || Number.isFinite(report.budget.wallMs) ? "configured" : "no limit; fallback only when the model cannot be called"}`,
1795
+ `upgradable: ${report.upgradableNodes} deterministic nodes queued for a model summary`,
1796
+ `limits: ${config2.compaction.lcmMaintenancePasses} passes \xD7 up to ${config2.compaction.lcmMaxLeafEntries} entries per leaf within ${config2.compaction.lcmMaxInputChars} chars`,
1797
+ ...report.degraded ? [`degraded: ${report.degraded}`] : [],
1798
+ ...hints.map((hint) => `hint: ${hint}`)
1799
+ ].join("\n"),
1800
+ report.degraded ? "error" : "info"
1801
+ );
1802
+ return;
1803
+ }
1754
1804
  if (command !== "status") {
1755
1805
  context.ui.notify(
1756
- "Usage: /fabric [status|dashboard|chat [id-or-name]|prewalk [task]|prewalk --off|--disable|--enable|reload|providers|agents|actors|global|import <name> [as <new>]|export <id> [--overwrite]|messages <id>|clear-messages <id>|events <id> [event...]|log <id>|export-log <id>|attach <id>|stop <id>|remove <id>|kill <id>|repairs|entropy]",
1806
+ "Usage: /fabric [status|lcm|dashboard|chat [id-or-name]|prewalk [task]|prewalk --off|--disable|--enable|reload|providers|agents|actors|global|import <name> [as <new>]|export <id> [--overwrite]|messages <id>|clear-messages <id>|events <id> [event...]|log <id>|export-log <id>|attach <id>|stop <id>|remove <id>|kill <id>|repairs|entropy]",
1757
1807
  "warning"
1758
1808
  );
1759
1809
  return;
@@ -1772,6 +1822,16 @@ Inspect LLM I/O: /fabric log ${shortId} \xB7 Export: /fabric export-log ${actor.
1772
1822
  })(),
1773
1823
  config.fullCodeMode && config.capture.enabled ? `captured tools: ${capturedTools.size} \xB7 model visibility: ${config.capture.hideFromModel ? "hidden" : "visible"}` : "captured tools: disabled (native registry preserved)",
1774
1824
  `actors: ${state.actors.list().length} \xB7 mesh: ${config.mesh.enabled ? state.mesh.root : "disabled"}`,
1825
+ (() => {
1826
+ if (config.compaction.engine !== "lcm") return `compaction: ${config.compaction.engine}`;
1827
+ const lcm = state.lcmStatus();
1828
+ if (!lcm) return "compaction: lcm \xB7 ledger not open yet";
1829
+ const report = lcm.report();
1830
+ const summaries = report.modelNodes + report.emergencyNodes;
1831
+ const model = report.summaryModel || "inherit";
1832
+ const calls = Number.isFinite(report.budget.calls) ? `${report.usage.calls}/${report.budget.calls}` : `${report.usage.calls}`;
1833
+ return `compaction: lcm \xB7 ${report.state} \xB7 model ${model} \xB7 ${report.rawEntries} entries \xB7 ${report.modelNodes}/${summaries} model summaries \xB7 today ${calls} calls, ${Math.round(report.usage.wallMs / 1e3)}s${report.degraded ? ` \xB7 degraded: ${report.degraded}` : ""}`;
1834
+ })(),
1775
1835
  `MCP: ${config.mcp.enabled ? "enabled" : "disabled"}`,
1776
1836
  `UI: ${config.ui.enabled ? `${config.ui.widget} widget above chat` : "disabled"}`
1777
1837
  ].join("\n"),
@@ -3785,6 +3845,9 @@ var FabricState = class {
3785
3845
  }
3786
3846
  this.#runtime?.setSchemaMode(mode, this.#config.executor.runtime);
3787
3847
  }
3848
+ lcmStatus() {
3849
+ return this.#options.lcmRuntime?.();
3850
+ }
3788
3851
  schemaStatus(context) {
3789
3852
  const disk = this.#diskConfig(context);
3790
3853
  const mode = this.#config?.schema.mode ?? disk.schema.mode;
@@ -3899,7 +3962,8 @@ var FabricState = class {
3899
3962
  prewalkDrift: this.prewalkDrift,
3900
3963
  sessionApprovals: this.sessionApprovals,
3901
3964
  ...this.#options.paths ? { paths: this.#options.paths } : {},
3902
- ...this.#options.lcmContext ? { lcmContext: this.#options.lcmContext } : {}
3965
+ ...this.#options.lcmContext ? { lcmContext: this.#options.lcmContext } : {},
3966
+ ...this.#options.lcmRuntime ? { lcmRuntime: this.#options.lcmRuntime } : {}
3903
3967
  }
3904
3968
  );
3905
3969
  }
@@ -5333,7 +5397,8 @@ async function ompFabric(omp) {
5333
5397
  const proxyContract = new ProxyContractLedger();
5334
5398
  const state = new FabricState(omp, capturedTools, {
5335
5399
  paths: FABRIC_RUNTIME_PATHS,
5336
- lcmContext: () => lcmRuntime?.memoryContext()
5400
+ lcmContext: () => lcmRuntime?.memoryContext(),
5401
+ lcmRuntime: () => lcmRuntime
5337
5402
  });
5338
5403
  const directToolApproval = new FabricDirectToolApproval(
5339
5404
  omp,
@@ -5624,6 +5689,7 @@ async function ompFabric(omp) {
5624
5689
  maxLeafEntries: state.config.compaction.lcmMaxLeafEntries,
5625
5690
  maxCondenseChildren: state.config.compaction.lcmMaxCondenseChildren,
5626
5691
  maxMaintenancePasses: state.config.compaction.lcmMaintenancePasses,
5692
+ modelSummaries: state.config.compaction.lcmModelSummaries,
5627
5693
  maxDailyModelCalls: state.config.compaction.lcmMaxDailyModelCalls,
5628
5694
  maxSessionModelCalls: state.config.compaction.lcmMaxSessionModelCalls,
5629
5695
  maxDailyModelSeconds: state.config.compaction.lcmMaxDailyModelSeconds,