omp-fabric 1.24.2 → 1.25.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.25.1
4
+
5
+ ### Fixed
6
+
7
+ - `MINIMUM_OMP_HOST_VERSION` raised to `18.3.0`. The startup host check still read `18.1.10`, so it stayed quiet on a host that cannot load fabric at all. The README and the certification host pin carried the same stale number.
8
+
9
+ ## 1.25.0
10
+
11
+ ### Fixed
12
+
13
+ - Fabric runs again on OMP 18.3.x. The host replaced `Settings.instance.get("<path>")` with typed registry handles, so every fabric read through the old accessor threw `Settings.instance.get is not a function` — `fabric_exec` reported it on the first shell call, where `async.enabled` decides whether a guest command may background. Reads now go through `cfgAsyncEnabled`, `cfgSkillful`, `cfgHideThinkingBlock` and `cfgTerminalShowImages`.
14
+ - `resolveJudge` no longer takes a `backend` key; fabric stopped sending one. The host removed the local-model judge selector, so the value was ignored while the call site still claimed it chose the chain.
15
+
16
+ ### Changed
17
+
18
+ - Requires OMP 18.3.0 or newer (`@oh-my-pi/*` peer ranges and `MINIMUM_OMP_HOST_VERSION` raised from `18.1.10`). The registry settings modules do not exist on older hosts, so there is no version fabric can satisfy at once.
19
+
3
20
  ## 1.24.2
4
21
 
5
22
  ### Fixed
package/README.md CHANGED
@@ -62,7 +62,7 @@ Independent calls run in parallel, and the returned object enters the model cont
62
62
 
63
63
  ## Install
64
64
 
65
- Requires Node.js 24+ and OMP 18.1.10+. Fabric also checks a detectable OMP host version at startup and warns when an older host may ignore continuation APIs such as actor `triggerTurn`.
65
+ Requires Node.js 24+ and OMP 18.3.0+. Fabric also checks a detectable OMP host version at startup and warns when an older host may ignore continuation APIs such as actor `triggerTurn`.
66
66
 
67
67
  ```bash
68
68
  omp install npm:omp-fabric
@@ -8,14 +8,18 @@ import { homedir } from "node:os";
8
8
  import path from "node:path";
9
9
  import { Ellipsis, truncateToWidth, visibleWidth } from "@oh-my-pi/pi-tui";
10
10
  async function readConversationAppearance(cwd, agentDir, projectTrusted) {
11
- const { Settings } = await import("@oh-my-pi/pi-coding-agent/config/settings");
11
+ const [{ Settings }, { cfgHideThinkingBlock }, { cfgTerminalShowImages }] = await Promise.all([
12
+ import("@oh-my-pi/pi-coding-agent/config/settings"),
13
+ import("@oh-my-pi/pi-coding-agent/session/settings"),
14
+ import("@oh-my-pi/pi-coding-agent/modes/settings")
15
+ ]);
12
16
  const settings = projectTrusted ? await Settings.loadReadOnly({ cwd, agentDir }) : Settings.isolated();
13
17
  return {
14
18
  editorPaddingX: 0,
15
19
  outputPad: 0,
16
20
  codeBlockIndent: " ",
17
- hideThinkingBlock: settings.get("hideThinkingBlock") === true,
18
- showImages: settings.get("terminal.showImages") === true
21
+ hideThinkingBlock: cfgHideThinkingBlock.get(settings) === true,
22
+ showImages: cfgTerminalShowImages.get(settings) === true
19
23
  };
20
24
  }
21
25
  var footerPath = (cwd) => {
@@ -54,4 +58,4 @@ export {
54
58
  readConversationAppearance,
55
59
  conversationFooter
56
60
  };
57
- //# sourceMappingURL=chunk-NCPJZXLM.js.map
61
+ //# sourceMappingURL=chunk-NOZBB266.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ui/conversation-chrome.ts"],
4
+ "sourcesContent": ["import { homedir } from \"node:os\";\nimport path from \"node:path\";\nimport type { Theme } from \"@oh-my-pi/pi-coding-agent\";\nimport { Ellipsis, truncateToWidth, visibleWidth } from \"@oh-my-pi/pi-tui\";\nimport { formatTokens, safeText } from \"./format.js\";\nimport type { FabricConversationTarget } from \"./conversation.js\";\n\nexport interface FabricConversationAppearance {\n editorPaddingX: number;\n outputPad: 0 | 1;\n codeBlockIndent?: string;\n hideThinkingBlock?: boolean;\n showImages?: boolean;\n imageWidthCells?: number;\n}\n\n/** Read OMP appearance settings; cwd and agentDir apply only to trusted project loading. */\nexport async function readConversationAppearance(cwd: string, agentDir: string, projectTrusted: boolean): Promise<FabricConversationAppearance> {\n const [{ Settings }, { cfgHideThinkingBlock }, { cfgTerminalShowImages }] = await Promise.all([\n import(\"@oh-my-pi/pi-coding-agent/config/settings\"),\n import(\"@oh-my-pi/pi-coding-agent/session/settings\"),\n import(\"@oh-my-pi/pi-coding-agent/modes/settings\"),\n ]);\n const settings = projectTrusted\n ? await Settings.loadReadOnly({ cwd, agentDir })\n : Settings.isolated();\n return {\n editorPaddingX: 0,\n outputPad: 0,\n codeBlockIndent: \" \",\n hideThinkingBlock: cfgHideThinkingBlock.get(settings) === true,\n showImages: cfgTerminalShowImages.get(settings) === true,\n };\n}\n\nconst footerPath = (cwd: string): string => {\n const home = homedir();\n if (cwd === home) return \"~\";\n return cwd.startsWith(`${home}${path.sep}`) ? `~${cwd.slice(home.length)}` : cwd;\n};\n\n/** Native-shaped footer backed by this participant, never by Main's session stats. */\nexport function conversationFooter(target: FabricConversationTarget | undefined, theme: Theme, width: number): string[] {\n if (!target || width <= 0) return [];\n const location = target.cwd ? footerPath(target.cwd) : \"cwd unavailable\";\n const branch = target.branch ? ` (${target.branch})` : \"\";\n const pwd = safeText(`${location}${branch} \u2022 ${target.name}`);\n const stats = [safeText(target.status)];\n if (target.usage) {\n const usage = target.usage;\n // Agent usage is run-scoped; actor values describe the current/last activation.\n stats.push(\"run\", `\u2191${formatTokens(usage.input)}`, `\u2193${formatTokens(usage.output)}`);\n if (usage.cacheRead > 0) stats.push(`R${formatTokens(usage.cacheRead)}`);\n if (usage.cacheWrite > 0) stats.push(`W${formatTokens(usage.cacheWrite)}`);\n if (Number.isFinite(usage.cost)) stats.push(`$${usage.cost.toFixed(3)}`);\n } else {\n stats.push(\"usage unavailable\");\n }\n // Cumulative run tokens are not current context occupancy. Do not invent a percentage.\n stats.push(target.contextWindow ? `?/${formatTokens(target.contextWindow)} ctx` : \"ctx ?\");\n const model = safeText(target.model ?? `${target.runner ?? \"\"} model unavailable`).trim();\n const thinking = target.thinking ? ` \u2022 ${safeText(target.thinking === \"off\" ? \"thinking off\" : target.thinking)}` : \"\";\n const left = truncateToWidth(stats.join(\" \"), width, Ellipsis.Unicode);\n const right = truncateToWidth(`${model}${thinking}`, Math.max(0, width - visibleWidth(left) - 2), \"\");\n const gap = \" \".repeat(Math.max(0, width - visibleWidth(left) - visibleWidth(right)));\n return [\n truncateToWidth(theme.fg(\"dim\", pwd), width, Ellipsis.Unicode),\n theme.fg(\"dim\", `${left}${gap}${right}`),\n ];\n}\n"],
5
+ "mappings": ";;;;;;AAAA,SAAS,eAAe;AACxB,OAAO,UAAU;AAEjB,SAAS,UAAU,iBAAiB,oBAAoB;AAcxD,eAAsB,2BAA2B,KAAa,UAAkB,gBAAgE;AAC9I,QAAM,CAAC,EAAE,SAAS,GAAG,EAAE,qBAAqB,GAAG,EAAE,sBAAsB,CAAC,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC5F,OAAO,2CAA2C;AAAA,IAClD,OAAO,4CAA4C;AAAA,IACnD,OAAO,0CAA0C;AAAA,EACnD,CAAC;AACD,QAAM,WAAW,iBACb,MAAM,SAAS,aAAa,EAAE,KAAK,SAAS,CAAC,IAC7C,SAAS,SAAS;AACtB,SAAO;AAAA,IACL,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,iBAAiB;AAAA,IACjB,mBAAmB,qBAAqB,IAAI,QAAQ,MAAM;AAAA,IAC1D,YAAY,sBAAsB,IAAI,QAAQ,MAAM;AAAA,EACtD;AACF;AAEA,IAAM,aAAa,CAAC,QAAwB;AAC1C,QAAM,OAAO,QAAQ;AACrB,MAAI,QAAQ,KAAM,QAAO;AACzB,SAAO,IAAI,WAAW,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,IAAI,IAAI,IAAI,MAAM,KAAK,MAAM,CAAC,KAAK;AAC/E;AAGO,SAAS,mBAAmB,QAA8C,OAAc,OAAyB;AACtH,MAAI,CAAC,UAAU,SAAS,EAAG,QAAO,CAAC;AACnC,QAAM,WAAW,OAAO,MAAM,WAAW,OAAO,GAAG,IAAI;AACvD,QAAM,SAAS,OAAO,SAAS,KAAK,OAAO,MAAM,MAAM;AACvD,QAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,MAAM,WAAM,OAAO,IAAI,EAAE;AAC5D,QAAM,QAAQ,CAAC,SAAS,OAAO,MAAM,CAAC;AACtC,MAAI,OAAO,OAAO;AAChB,UAAM,QAAQ,OAAO;AAErB,UAAM,KAAK,OAAO,SAAI,aAAa,MAAM,KAAK,CAAC,IAAI,SAAI,aAAa,MAAM,MAAM,CAAC,EAAE;AACnF,QAAI,MAAM,YAAY,EAAG,OAAM,KAAK,IAAI,aAAa,MAAM,SAAS,CAAC,EAAE;AACvE,QAAI,MAAM,aAAa,EAAG,OAAM,KAAK,IAAI,aAAa,MAAM,UAAU,CAAC,EAAE;AACzE,QAAI,OAAO,SAAS,MAAM,IAAI,EAAG,OAAM,KAAK,IAAI,MAAM,KAAK,QAAQ,CAAC,CAAC,EAAE;AAAA,EACzE,OAAO;AACL,UAAM,KAAK,mBAAmB;AAAA,EAChC;AAEA,QAAM,KAAK,OAAO,gBAAgB,KAAK,aAAa,OAAO,aAAa,CAAC,SAAS,OAAO;AACzF,QAAM,QAAQ,SAAS,OAAO,SAAS,GAAG,OAAO,UAAU,EAAE,oBAAoB,EAAE,KAAK;AACxF,QAAM,WAAW,OAAO,WAAW,WAAM,SAAS,OAAO,aAAa,QAAQ,iBAAiB,OAAO,QAAQ,CAAC,KAAK;AACpH,QAAM,OAAO,gBAAgB,MAAM,KAAK,GAAG,GAAG,OAAO,SAAS,OAAO;AACrE,QAAM,QAAQ,gBAAgB,GAAG,KAAK,GAAG,QAAQ,IAAI,KAAK,IAAI,GAAG,QAAQ,aAAa,IAAI,IAAI,CAAC,GAAG,EAAE;AACpG,QAAM,MAAM,IAAI,OAAO,KAAK,IAAI,GAAG,QAAQ,aAAa,IAAI,IAAI,aAAa,KAAK,CAAC,CAAC;AACpF,SAAO;AAAA,IACL,gBAAgB,MAAM,GAAG,OAAO,GAAG,GAAG,OAAO,SAAS,OAAO;AAAA,IAC7D,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,EAAE;AAAA,EACzC;AACF;",
6
+ "names": []
7
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"skill-prompt.d.ts","sourceRoot":"","sources":["../../src/core/skill-prompt.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAalF,eAAO,MAAM,YAAY,QAAO,SAAS,KAAK,EAAuB,CAAC;AAEtE,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,KAAK,EAAE,KAAG,SAAS,KAAK,EAOvE,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,cAAc,MAAM,EACpB,QAAQ,SAAS,KAAK,EAAE,KACvB,MAYF,CAAC"}
1
+ {"version":3,"file":"skill-prompt.d.ts","sourceRoot":"","sources":["../../src/core/skill-prompt.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAclF,eAAO,MAAM,YAAY,QAAO,SAAS,KAAK,EAAuB,CAAC;AAEtE,eAAO,MAAM,cAAc,GAAI,QAAQ,SAAS,KAAK,EAAE,KAAG,SAAS,KAAK,EAOvE,CAAC;AAEF,eAAO,MAAM,8BAA8B,GACzC,cAAc,MAAM,EACpB,QAAQ,SAAS,KAAK,EAAE,KACvB,MAYF,CAAC"}
@@ -8857,7 +8857,6 @@ var FabricJudgmentLane = class {
8857
8857
  };
8858
8858
 
8859
8859
  // src/judgment/host-judge.ts
8860
- var ONLINE_JUDGMENT_BACKEND = "online";
8861
8860
  var resolveHostJudge = async (context) => {
8862
8861
  if (context.modelRegistry === void 0) return void 0;
8863
8862
  const [judgment, settingsModule] = await Promise.all([
@@ -8870,7 +8869,6 @@ var resolveHostJudge = async (context) => {
8870
8869
  return resolveJudge({
8871
8870
  settings,
8872
8871
  registry: context.modelRegistry,
8873
- backend: ONLINE_JUDGMENT_BACKEND,
8874
8872
  ...context.model !== void 0 ? { sessionModel: context.model } : {},
8875
8873
  ...context.sessionId !== void 0 ? { sessionId: context.sessionId } : {}
8876
8874
  });
@@ -10659,6 +10657,7 @@ var createPreviewWriteToolDefinition = (cwd, session) => {
10659
10657
  // src/providers/omp-session-scope.ts
10660
10658
  import { AgentRegistry } from "@oh-my-pi/pi-coding-agent";
10661
10659
  import { isSettingsInitialized, Settings } from "@oh-my-pi/pi-coding-agent/config/settings";
10660
+ import { cfgAsyncEnabled } from "@oh-my-pi/pi-coding-agent/tools/settings";
10662
10661
  var liveOwner = (sessionId) => {
10663
10662
  if (!sessionId) return void 0;
10664
10663
  for (const ref of AgentRegistry.global().list()) {
@@ -10677,7 +10676,7 @@ var ompJobScope = (getSessionId) => {
10677
10676
  agentId: () => liveOwner(getSessionId())?.agentId ?? null
10678
10677
  };
10679
10678
  };
10680
- var hostAsyncEnabled = () => isSettingsInitialized() ? Settings.instance.get("async.enabled") : true;
10679
+ var hostAsyncEnabled = () => isSettingsInitialized() ? cfgAsyncEnabled.get(Settings.instance) : true;
10681
10680
  var shellBackgroundSettings = (jobs, asyncEnabled = hostAsyncEnabled) => ({
10682
10681
  "async.enabled": jobs ? asyncEnabled() : false,
10683
10682
  "bash.autoBackground.enabled": false