oh-my-opencode 5.0.0-beta.37 → 5.0.0-beta.38

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 (67) hide show
  1. package/dist/cli/index.js +24 -15
  2. package/dist/cli-node/index.js +24 -15
  3. package/dist/features/background-agent/compaction-aware-message-resolver.d.ts +1 -0
  4. package/dist/hooks/compaction-context-injector/validated-model.d.ts +2 -0
  5. package/dist/index.js +36 -24
  6. package/dist/shared/compaction-agent-config-checkpoint.d.ts +1 -0
  7. package/package.json +13 -13
  8. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  9. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +10 -1
  10. package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
  11. package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
  12. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  13. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  14. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  15. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  16. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  17. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  18. package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
  19. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  20. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  21. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  22. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  23. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  24. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  25. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  26. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  27. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  28. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  29. package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
  30. package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +32 -20
  32. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.d.ts +3 -0
  33. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +31 -29
  34. package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +2 -2
  35. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  36. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  37. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -0
  38. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +36 -35
  39. package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +2 -1
  40. package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +43 -3
  41. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  42. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  43. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  44. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  45. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  46. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  47. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  48. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  49. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  50. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-ulw-execute-continuation.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  62. package/packages/omo-codex/plugin/package-lock.json +12 -12
  63. package/packages/omo-codex/plugin/package.json +1 -1
  64. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -0
  65. package/packages/omo-codex/scripts/install-config-autonomous-features.test.mjs +1 -1
  66. package/packages/omo-codex/scripts/install-config-autonomous.test.mjs +2 -1
  67. package/packages/omo-codex/scripts/install-dist/install-local.mjs +12 -3
package/dist/cli/index.js CHANGED
@@ -54,7 +54,7 @@ var package_default;
54
54
  var init_package = __esm(() => {
55
55
  package_default = {
56
56
  name: "oh-my-opencode",
57
- version: "5.0.0-beta.37",
57
+ version: "5.0.0-beta.38",
58
58
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
59
59
  main: "./dist/index.js",
60
60
  types: "dist/index.d.ts",
@@ -275,18 +275,18 @@ var init_package = __esm(() => {
275
275
  typescript: "^7.0.2"
276
276
  },
277
277
  optionalDependencies: {
278
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.37",
279
- "oh-my-opencode-darwin-x64": "5.0.0-beta.37",
280
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.37",
281
- "oh-my-opencode-linux-arm64": "5.0.0-beta.37",
282
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.37",
283
- "oh-my-opencode-linux-x64": "5.0.0-beta.37",
284
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.37",
285
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.37",
286
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.37",
287
- "oh-my-opencode-windows-arm64": "5.0.0-beta.37",
288
- "oh-my-opencode-windows-x64": "5.0.0-beta.37",
289
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.37"
278
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.38",
279
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.38",
280
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.38",
281
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.38",
282
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.38",
283
+ "oh-my-opencode-linux-x64": "5.0.0-beta.38",
284
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.38",
285
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.38",
286
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.38",
287
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.38",
288
+ "oh-my-opencode-windows-x64": "5.0.0-beta.38",
289
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.38"
290
290
  },
291
291
  overrides: {
292
292
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -94349,7 +94349,7 @@ var package_default2;
94349
94349
  var init_package2 = __esm(() => {
94350
94350
  package_default2 = {
94351
94351
  name: "@oh-my-opencode/omo-codex",
94352
- version: "5.0.0-beta.37",
94352
+ version: "5.0.0-beta.38",
94353
94353
  type: "module",
94354
94354
  private: true,
94355
94355
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -99544,6 +99544,15 @@ function replaceOrInsertRootSetting(config3, key, value) {
99544
99544
 
99545
99545
  ${suffix.trimStart()}`;
99546
99546
  }
99547
+ function removeRootSetting(config3, key) {
99548
+ const sectionStart = findFirstTableStart(config3);
99549
+ const root = config3.slice(0, sectionStart);
99550
+ const suffix = config3.slice(sectionStart);
99551
+ const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*(?:\\n|$)`, "m");
99552
+ if (!linePattern.test(root))
99553
+ return config3;
99554
+ return root.replace(linePattern, "") + suffix;
99555
+ }
99547
99556
  function replaceOrInsertRootDottedSetting(config3, keyPath, value) {
99548
99557
  const targetPath = parseTomlDottedKey(keyPath);
99549
99558
  if (!targetPath)
@@ -100296,7 +100305,7 @@ var AUTONOMOUS_FEATURES = ["multi_agent", "unified_exec", "goals"];
100296
100305
  function ensureAutonomousPermissions(config3) {
100297
100306
  let next = replaceOrInsertRootSetting(config3, "approval_policy", JSON.stringify("never"));
100298
100307
  next = replaceOrInsertRootSetting(next, "sandbox_mode", JSON.stringify("danger-full-access"));
100299
- next = replaceOrInsertRootSetting(next, "network_access", JSON.stringify("enabled"));
100308
+ next = removeRootSetting(next, "network_access");
100300
100309
  for (const featureName of AUTONOMOUS_FEATURES) {
100301
100310
  next = ensureFeatureEnabled(next, featureName);
100302
100311
  }
@@ -55,7 +55,7 @@ var package_default;
55
55
  var init_package = __esm(() => {
56
56
  package_default = {
57
57
  name: "oh-my-opencode",
58
- version: "5.0.0-beta.37",
58
+ version: "5.0.0-beta.38",
59
59
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
60
60
  main: "./dist/index.js",
61
61
  types: "dist/index.d.ts",
@@ -276,18 +276,18 @@ var init_package = __esm(() => {
276
276
  typescript: "^7.0.2"
277
277
  },
278
278
  optionalDependencies: {
279
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.37",
280
- "oh-my-opencode-darwin-x64": "5.0.0-beta.37",
281
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.37",
282
- "oh-my-opencode-linux-arm64": "5.0.0-beta.37",
283
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.37",
284
- "oh-my-opencode-linux-x64": "5.0.0-beta.37",
285
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.37",
286
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.37",
287
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.37",
288
- "oh-my-opencode-windows-arm64": "5.0.0-beta.37",
289
- "oh-my-opencode-windows-x64": "5.0.0-beta.37",
290
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.37"
279
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.38",
280
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.38",
281
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.38",
282
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.38",
283
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.38",
284
+ "oh-my-opencode-linux-x64": "5.0.0-beta.38",
285
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.38",
286
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.38",
287
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.38",
288
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.38",
289
+ "oh-my-opencode-windows-x64": "5.0.0-beta.38",
290
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.38"
291
291
  },
292
292
  overrides: {
293
293
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -94428,7 +94428,7 @@ var package_default2;
94428
94428
  var init_package2 = __esm(() => {
94429
94429
  package_default2 = {
94430
94430
  name: "@oh-my-opencode/omo-codex",
94431
- version: "5.0.0-beta.37",
94431
+ version: "5.0.0-beta.38",
94432
94432
  type: "module",
94433
94433
  private: true,
94434
94434
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -99623,6 +99623,15 @@ function replaceOrInsertRootSetting(config3, key, value) {
99623
99623
 
99624
99624
  ${suffix.trimStart()}`;
99625
99625
  }
99626
+ function removeRootSetting(config3, key) {
99627
+ const sectionStart = findFirstTableStart(config3);
99628
+ const root = config3.slice(0, sectionStart);
99629
+ const suffix = config3.slice(sectionStart);
99630
+ const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*(?:\\n|$)`, "m");
99631
+ if (!linePattern.test(root))
99632
+ return config3;
99633
+ return root.replace(linePattern, "") + suffix;
99634
+ }
99626
99635
  function replaceOrInsertRootDottedSetting(config3, keyPath, value) {
99627
99636
  const targetPath = parseTomlDottedKey(keyPath);
99628
99637
  if (!targetPath)
@@ -100375,7 +100384,7 @@ var AUTONOMOUS_FEATURES = ["multi_agent", "unified_exec", "goals"];
100375
100384
  function ensureAutonomousPermissions(config3) {
100376
100385
  let next = replaceOrInsertRootSetting(config3, "approval_policy", JSON.stringify("never"));
100377
100386
  next = replaceOrInsertRootSetting(next, "sandbox_mode", JSON.stringify("danger-full-access"));
100378
- next = replaceOrInsertRootSetting(next, "network_access", JSON.stringify("enabled"));
100387
+ next = removeRootSetting(next, "network_access");
100379
100388
  for (const featureName of AUTONOMOUS_FEATURES) {
100380
100389
  next = ensureFeatureEnabled(next, featureName);
100381
100390
  }
@@ -11,6 +11,7 @@ type SessionMessage = {
11
11
  };
12
12
  providerID?: string;
13
13
  modelID?: string;
14
+ variant?: string;
14
15
  tools?: StoredMessage["tools"];
15
16
  };
16
17
  parts?: Array<{
@@ -4,9 +4,11 @@ type PromptConfigInfo = {
4
4
  model?: {
5
5
  providerID?: string;
6
6
  modelID?: string;
7
+ variant?: string;
7
8
  };
8
9
  providerID?: string;
9
10
  modelID?: string;
11
+ variant?: string;
10
12
  };
11
13
  export declare function resolveValidatedModel(info: PromptConfigInfo | undefined): CompactionAgentConfigCheckpoint["model"] | undefined;
12
14
  export declare function validateCheckpointModel(checkpointModel: CompactionAgentConfigCheckpoint["model"], currentModel: CompactionAgentConfigCheckpoint["model"]): CompactionAgentConfigCheckpoint["model"] | undefined;
package/dist/index.js CHANGED
@@ -96612,7 +96612,7 @@ function getCachedVersion(options = {}) {
96612
96612
  // package.json
96613
96613
  var package_default = {
96614
96614
  name: "oh-my-opencode",
96615
- version: "5.0.0-beta.37",
96615
+ version: "5.0.0-beta.38",
96616
96616
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
96617
96617
  main: "./dist/index.js",
96618
96618
  types: "dist/index.d.ts",
@@ -96833,18 +96833,18 @@ var package_default = {
96833
96833
  typescript: "^7.0.2"
96834
96834
  },
96835
96835
  optionalDependencies: {
96836
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.37",
96837
- "oh-my-opencode-darwin-x64": "5.0.0-beta.37",
96838
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.37",
96839
- "oh-my-opencode-linux-arm64": "5.0.0-beta.37",
96840
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.37",
96841
- "oh-my-opencode-linux-x64": "5.0.0-beta.37",
96842
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.37",
96843
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.37",
96844
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.37",
96845
- "oh-my-opencode-windows-arm64": "5.0.0-beta.37",
96846
- "oh-my-opencode-windows-x64": "5.0.0-beta.37",
96847
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.37"
96836
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.38",
96837
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.38",
96838
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.38",
96839
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.38",
96840
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.38",
96841
+ "oh-my-opencode-linux-x64": "5.0.0-beta.38",
96842
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.38",
96843
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.38",
96844
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.38",
96845
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.38",
96846
+ "oh-my-opencode-windows-x64": "5.0.0-beta.38",
96847
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.38"
96848
96848
  },
96849
96849
  overrides: {
96850
96850
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -116040,7 +116040,8 @@ function cloneCheckpoint(checkpoint) {
116040
116040
  ...checkpoint.model ? {
116041
116041
  model: {
116042
116042
  providerID: checkpoint.model.providerID,
116043
- modelID: checkpoint.model.modelID
116043
+ modelID: checkpoint.model.modelID,
116044
+ ...checkpoint.model.variant ? { variant: checkpoint.model.variant } : {}
116044
116045
  }
116045
116046
  } : {},
116046
116047
  ...checkpoint.tools ? { tools: { ...checkpoint.tools } } : {}
@@ -116143,10 +116144,11 @@ function resolveValidatedModel(info) {
116143
116144
  }
116144
116145
  const providerID = info?.model?.providerID ?? info?.providerID;
116145
116146
  const modelID = info?.model?.modelID ?? info?.modelID;
116147
+ const variant = info?.model?.variant ?? info?.variant;
116146
116148
  if (!providerID || !modelID) {
116147
116149
  return;
116148
116150
  }
116149
- return { providerID, modelID };
116151
+ return { providerID, modelID, ...variant ? { variant } : {} };
116150
116152
  }
116151
116153
  function validateCheckpointModel(checkpointModel, currentModel) {
116152
116154
  if (!checkpointModel) {
@@ -129378,6 +129380,8 @@ async function pollSyncSession(ctx, client3, input, timeoutMs) {
129378
129380
  let timedOut = false;
129379
129381
  let assistantTurnCount = 0;
129380
129382
  let lastSeenAssistantId;
129383
+ let lastObservedAssistantId;
129384
+ let lastObservedMessageCount;
129381
129385
  const childSettleMs = input.childWakeGraceMs ?? CHILD_WAKE_GRACE_MS;
129382
129386
  let childWaitAssistantId;
129383
129387
  let childSettleStartedAt = 0;
@@ -129456,13 +129460,12 @@ Session ID: ${input.sessionID}`;
129456
129460
  sessionStatus: sessionStatus?.type ?? "not_in_status"
129457
129461
  });
129458
129462
  }
129459
- if (isActiveSessionStatus(sessionStatus)) {
129463
+ const isActive = isActiveSessionStatus(sessionStatus);
129464
+ const statusRevision = sessionStatus && (sessionStatus.updatedAt ?? sessionStatus.revision ?? sessionStatus.messageCount ?? sessionStatus.type);
129465
+ const statusChanged = statusRevision !== undefined && String(statusRevision) !== lastStatusRevision;
129466
+ if (statusChanged)
129460
129467
  inactiveStart = Date.now();
129461
- continue;
129462
- }
129463
129468
  nonActivePollsSinceMessageFetch++;
129464
- const statusRevision = sessionStatus && (sessionStatus.updatedAt ?? sessionStatus.revision ?? sessionStatus.messageCount);
129465
- const statusChanged = statusRevision !== undefined && String(statusRevision) !== lastStatusRevision;
129466
129469
  if (hasFetchedNonActiveMessages && !statusChanged && nonActivePollsSinceMessageFetch < MAX_NON_ACTIVE_STATUS_STALENESS_POLLS) {
129467
129470
  continue;
129468
129471
  }
@@ -129479,13 +129482,18 @@ Session ID: ${input.sessionID}`;
129479
129482
  }
129480
129483
  if (!hasMessagesAfterAnchor(messages, input.anchorMessageID, input.anchorMessageCount))
129481
129484
  continue;
129485
+ const currentAssistantId = [...messages].reverse().find((m) => m.info?.role === "assistant")?.info?.id;
129486
+ const messageStateChanged = lastObservedMessageCount !== undefined && (messages.length !== lastObservedMessageCount || currentAssistantId !== lastObservedAssistantId);
129487
+ lastObservedMessageCount = messages.length;
129488
+ lastObservedAssistantId = currentAssistantId;
129489
+ if (messageStateChanged)
129490
+ inactiveStart = Date.now();
129482
129491
  const sessionError = getTerminalSessionError(messages);
129483
129492
  if (sessionError) {
129484
129493
  log2("[task] Poll detected terminal session error", { sessionID: input.sessionID, sessionError });
129485
129494
  return sessionError;
129486
129495
  }
129487
- if (isSessionComplete(messages)) {
129488
- const currentAssistantId = [...messages].reverse().find((m) => m.info?.role === "assistant")?.info?.id;
129496
+ if (!isActive && isSessionComplete(messages)) {
129489
129497
  if (isAwaitingChildContinuation(currentAssistantId)) {
129490
129498
  continue;
129491
129499
  }
@@ -129508,6 +129516,8 @@ Session ID: ${input.sessionID}`;
129508
129516
  return `Task aborted: subagent exceeded ${maxTurns} assistant turns without completing. This usually indicates an infinite tool-call loop. Session ID: ${input.sessionID}`;
129509
129517
  }
129510
129518
  }
129519
+ if (isActive)
129520
+ continue;
129511
129521
  const hasAssistantText = messages.some((m) => {
129512
129522
  if (m.info?.role !== "assistant")
129513
129523
  return false;
@@ -134633,13 +134643,14 @@ function convertSessionMessageToStoredMessage(message) {
134633
134643
  }
134634
134644
  const providerID = info.model?.providerID ?? info.providerID;
134635
134645
  const modelID = info.model?.modelID ?? info.modelID;
134646
+ const variant = info.model?.variant ?? info.variant;
134636
134647
  return {
134637
134648
  ...info.agent ? { agent: info.agent } : {},
134638
134649
  ...providerID && modelID ? {
134639
134650
  model: {
134640
134651
  providerID,
134641
134652
  modelID,
134642
- ...info.model?.variant ? { variant: info.model.variant } : {}
134653
+ ...variant ? { variant } : {}
134643
134654
  }
134644
134655
  } : {},
134645
134656
  ...info.tools ? { tools: info.tools } : {}
@@ -134678,7 +134689,8 @@ function mergeStoredMessages(messages, sessionID) {
134678
134689
  if (!merged.model && checkpoint?.model) {
134679
134690
  merged.model = {
134680
134691
  providerID: checkpoint.model.providerID,
134681
- modelID: checkpoint.model.modelID
134692
+ modelID: checkpoint.model.modelID,
134693
+ ...checkpoint.model.variant ? { variant: checkpoint.model.variant } : {}
134682
134694
  };
134683
134695
  }
134684
134696
  if (!merged.tools && checkpoint?.tools) {
@@ -3,6 +3,7 @@ export type CompactionAgentConfigCheckpoint = {
3
3
  model?: {
4
4
  providerID: string;
5
5
  modelID: string;
6
+ variant?: string;
6
7
  };
7
8
  tools?: Record<string, boolean>;
8
9
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-opencode",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
5
5
  "main": "./dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -221,18 +221,18 @@
221
221
  "typescript": "^7.0.2"
222
222
  },
223
223
  "optionalDependencies": {
224
- "oh-my-opencode-darwin-arm64": "5.0.0-beta.37",
225
- "oh-my-opencode-darwin-x64": "5.0.0-beta.37",
226
- "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.37",
227
- "oh-my-opencode-linux-arm64": "5.0.0-beta.37",
228
- "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.37",
229
- "oh-my-opencode-linux-x64": "5.0.0-beta.37",
230
- "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.37",
231
- "oh-my-opencode-linux-x64-musl": "5.0.0-beta.37",
232
- "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.37",
233
- "oh-my-opencode-windows-arm64": "5.0.0-beta.37",
234
- "oh-my-opencode-windows-x64": "5.0.0-beta.37",
235
- "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.37"
224
+ "oh-my-opencode-darwin-arm64": "5.0.0-beta.38",
225
+ "oh-my-opencode-darwin-x64": "5.0.0-beta.38",
226
+ "oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.38",
227
+ "oh-my-opencode-linux-arm64": "5.0.0-beta.38",
228
+ "oh-my-opencode-linux-arm64-musl": "5.0.0-beta.38",
229
+ "oh-my-opencode-linux-x64": "5.0.0-beta.38",
230
+ "oh-my-opencode-linux-x64-baseline": "5.0.0-beta.38",
231
+ "oh-my-opencode-linux-x64-musl": "5.0.0-beta.38",
232
+ "oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.38",
233
+ "oh-my-opencode-windows-arm64": "5.0.0-beta.38",
234
+ "oh-my-opencode-windows-x64": "5.0.0-beta.38",
235
+ "oh-my-opencode-windows-x64-baseline": "5.0.0-beta.38"
236
236
  },
237
237
  "overrides": {
238
238
  "@earendil-works/pi-agent-core": "0.84.2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",
@@ -1094,6 +1094,15 @@ function replaceOrInsertRootSetting(config, key, value) {
1094
1094
 
1095
1095
  ${suffix.trimStart()}`;
1096
1096
  }
1097
+ function removeRootSetting(config, key) {
1098
+ const sectionStart = findFirstTableStart(config);
1099
+ const root = config.slice(0, sectionStart);
1100
+ const suffix = config.slice(sectionStart);
1101
+ const linePattern = new RegExp(`^[ \\t]*${escapeRegExp(key)}[ \\t]*=.*(?:\\n|$)`, "m");
1102
+ if (!linePattern.test(root))
1103
+ return config;
1104
+ return root.replace(linePattern, "") + suffix;
1105
+ }
1097
1106
  function replaceOrInsertRootDottedSetting(config, keyPath, value) {
1098
1107
  const targetPath = parseTomlDottedKey(keyPath);
1099
1108
  if (!targetPath)
@@ -2829,7 +2838,7 @@ var AUTONOMOUS_FEATURES = ["multi_agent", "unified_exec", "goals"];
2829
2838
  function ensureAutonomousPermissions(config) {
2830
2839
  let next = replaceOrInsertRootSetting(config, "approval_policy", JSON.stringify("never"));
2831
2840
  next = replaceOrInsertRootSetting(next, "sandbox_mode", JSON.stringify("danger-full-access"));
2832
- next = replaceOrInsertRootSetting(next, "network_access", JSON.stringify("enabled"));
2841
+ next = removeRootSetting(next, "network_access");
2833
2842
  for (const featureName of AUTONOMOUS_FEATURES) {
2834
2843
  next = ensureFeatureEnabled(next, featureName);
2835
2844
  }
@@ -8,7 +8,7 @@
8
8
  "command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
9
9
  "commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.0.0-beta.37) Checking Bootstrap Provisioning"
11
+ "statusMessage": "(OmO 5.0.0-beta.38) Checking Bootstrap Provisioning"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-bootstrap",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 30,
11
- "statusMessage": "(OmO 5.0.0-beta.37) Checking Comments"
11
+ "statusMessage": "(OmO 5.0.0-beta.38) Checking Comments"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-comment-checker",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Codex plugin that runs comment-checker after edit-like PostToolUse hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
10
10
  "timeout": 5,
11
- "statusMessage": "(OmO 5.0.0-beta.37) Recommending Git Bash MCP"
11
+ "statusMessage": "(OmO 5.0.0-beta.38) Recommending Git Bash MCP"
12
12
  }
13
13
  ]
14
14
  }
@@ -20,7 +20,7 @@
20
20
  "type": "command",
21
21
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
22
22
  "timeout": 5,
23
- "statusMessage": "(OmO 5.0.0-beta.37) Resetting Git Bash MCP Reminder"
23
+ "statusMessage": "(OmO 5.0.0-beta.38) Resetting Git Bash MCP Reminder"
24
24
  }
25
25
  ]
26
26
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-git-bash-hook",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Codex hook component that reminds Windows sessions to prefer the OMO git_bash MCP.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.0.0-beta.37) Verifying LazyCodex Executor Evidence"
11
+ "statusMessage": "(OmO 5.0.0-beta.38) Verifying LazyCodex Executor Evidence"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lazycodex-executor-verify",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "version": "5.0.0-beta.37",
4
- "inputDigest": "sha256:79db9315b8e7f51f2175484d4844fcce01211f4b0da4ceaa12ef7a50b9bc7b62",
3
+ "version": "5.0.0-beta.38",
4
+ "inputDigest": "sha256:d95f42f2b3a16266c924a943ca2caa17b8cf83ae0b116a281aebf1a51316d918",
5
5
  "outputs": [
6
6
  {
7
7
  "path": "cli.d.ts",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 60,
11
- "statusMessage": "(OmO 5.0.0-beta.37) Checking LSP Diagnostics"
11
+ "statusMessage": "(OmO 5.0.0-beta.38) Checking LSP Diagnostics"
12
12
  }
13
13
  ]
14
14
  }
@@ -21,7 +21,7 @@
21
21
  "type": "command",
22
22
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
23
23
  "timeout": 5,
24
- "statusMessage": "(OmO 5.0.0-beta.37) Resetting LSP Diagnostics Cache"
24
+ "statusMessage": "(OmO 5.0.0-beta.38) Resetting LSP Diagnostics Cache"
25
25
  }
26
26
  ]
27
27
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-lsp",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Codex plugin that exposes Language Server Protocol tools and post-edit diagnostics.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 10,
10
- "statusMessage": "(OmO 5.0.0-beta.37) Loading Project Rules"
10
+ "statusMessage": "(OmO 5.0.0-beta.38) Loading Project Rules"
11
11
  }
12
12
  ]
13
13
  }
@@ -19,7 +19,7 @@
19
19
  "type": "command",
20
20
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
21
21
  "timeout": 10,
22
- "statusMessage": "(OmO 5.0.0-beta.37) Loading Project Rules"
22
+ "statusMessage": "(OmO 5.0.0-beta.38) Loading Project Rules"
23
23
  }
24
24
  ]
25
25
  }
@@ -32,7 +32,7 @@
32
32
  "type": "command",
33
33
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
34
34
  "timeout": 10,
35
- "statusMessage": "(OmO 5.0.0-beta.37) Matching Project Rules"
35
+ "statusMessage": "(OmO 5.0.0-beta.38) Matching Project Rules"
36
36
  }
37
37
  ]
38
38
  }
@@ -45,7 +45,7 @@
45
45
  "type": "command",
46
46
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
47
47
  "timeout": 10,
48
- "statusMessage": "(OmO 5.0.0-beta.37) Resetting Project Rule Cache"
48
+ "statusMessage": "(OmO 5.0.0-beta.38) Resetting Project Rule Cache"
49
49
  }
50
50
  ]
51
51
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-rules",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Codex plugin that injects project rule files into model context through lifecycle hooks.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -8,7 +8,7 @@
8
8
  "type": "command",
9
9
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
10
10
  "timeout": 10,
11
- "statusMessage": "(OmO 5.0.0-beta.37) Checking Thread Title Hygiene"
11
+ "statusMessage": "(OmO 5.0.0-beta.38) Checking Thread Title Hygiene"
12
12
  }
13
13
  ]
14
14
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sisyphuslabs/codex-teammode",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Codex team-mode hook component that keeps background thread titles descriptive after create_thread.",
5
5
  "type": "module",
6
6
  "private": true,
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.37) Recording Session Telemetry"
10
+ "statusMessage": "(OmO 5.0.0-beta.38) Recording Session Telemetry"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-telemetry",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Codex plugin component that emits omo-codex anonymous daily-active telemetry on SessionStart.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",
@@ -7,7 +7,7 @@
7
7
  "type": "command",
8
8
  "command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
9
9
  "timeout": 5,
10
- "statusMessage": "(OmO 5.0.0-beta.37) Checking Ultrawork Trigger"
10
+ "statusMessage": "(OmO 5.0.0-beta.38) Checking Ultrawork Trigger"
11
11
  }
12
12
  ]
13
13
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@code-yeongyu/codex-ultrawork",
3
- "version": "5.0.0-beta.37",
3
+ "version": "5.0.0-beta.38",
4
4
  "description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
5
5
  "type": "module",
6
6
  "packageManager": "npm@11.12.1",