lazycodex-ai 4.17.0 → 4.17.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 (101) hide show
  1. package/dist/cli/index.js +30 -27
  2. package/dist/cli-node/index.js +30 -27
  3. package/package.json +1 -1
  4. package/packages/lsp-daemon/dist/cli.js +7 -13
  5. package/packages/lsp-daemon/dist/daemon-client.js +3 -5
  6. package/packages/lsp-daemon/dist/index.js +12 -18
  7. package/packages/lsp-daemon/dist/request-routing.js +6 -8
  8. package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
  9. package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +398 -400
  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/codegraph/package.json +1 -1
  13. package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
  14. package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
  15. package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
  16. package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
  17. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
  18. package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
  19. package/packages/omo-codex/plugin/components/lsp/dist/cli.js +14 -14
  20. package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
  21. package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
  22. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.5.md +2 -2
  23. package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-5.6.md +2 -2
  24. package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
  25. package/packages/omo-codex/plugin/components/rules/package.json +1 -1
  26. package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +2 -2
  27. package/packages/omo-codex/plugin/components/start-work-continuation/package.json +1 -1
  28. package/packages/omo-codex/plugin/components/teammode/AGENTS.md +2 -2
  29. package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
  30. package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
  31. package/packages/omo-codex/plugin/components/teammode/skills/teammode/SKILL.md +33 -16
  32. package/packages/omo-codex/plugin/components/teammode/skills/teammode/scripts/team.mjs +2 -1
  33. package/packages/omo-codex/plugin/components/teammode/test/v2-spawn-schema.test.ts +69 -0
  34. package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
  35. package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
  36. package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +3 -3
  37. package/packages/omo-codex/plugin/components/ultrawork/directive.md +29 -17
  38. package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
  39. package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
  40. package/packages/omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md +29 -17
  41. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +2 -1
  42. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +1 -1
  43. package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +4 -4
  44. package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +9 -6
  45. package/packages/omo-codex/plugin/components/ulw-loop/directive.md +29 -17
  46. package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
  47. package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
  48. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +1 -1
  49. package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +2 -2
  50. package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
  51. package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
  52. package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
  53. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +1 -1
  54. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
  55. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
  56. package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
  57. package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
  58. package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
  59. package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
  60. package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
  61. package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
  62. package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
  63. package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +1 -1
  64. package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
  65. package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
  66. package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +1 -1
  67. package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
  68. package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +1 -1
  69. package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
  70. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
  71. package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
  72. package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
  73. package/packages/omo-codex/plugin/package-lock.json +13 -13
  74. package/packages/omo-codex/plugin/package.json +1 -1
  75. package/packages/omo-codex/plugin/skills/review-work/SKILL.md +10 -2
  76. package/packages/omo-codex/plugin/skills/start-work/SKILL.md +1 -1
  77. package/packages/omo-codex/plugin/skills/teammode/SKILL.md +33 -16
  78. package/packages/omo-codex/plugin/skills/teammode/scripts/team.mjs +2 -1
  79. package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +2 -2
  80. package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +1 -1
  81. package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
  82. package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +29 -17
  83. package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +1 -1
  84. package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +2 -2
  85. package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +2 -1
  86. package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +1 -1
  87. package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +4 -4
  88. package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +9 -5
  89. package/packages/omo-codex/plugin/test/sync-skills.test.mjs +1 -1
  90. package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +25 -0
  91. package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +24 -0
  92. package/packages/omo-codex/scripts/install-dist/install-local.mjs +9 -11
  93. package/packages/shared-skills/skills/review-work/SKILL.md +10 -2
  94. package/packages/shared-skills/skills/start-work/SKILL.md +1 -1
  95. package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +2 -2
  96. package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +1 -1
  97. package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +11 -11
  98. package/packages/shared-skills/skills/ulw-plan/SKILL.md +2 -1
  99. package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +1 -1
  100. package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +4 -4
  101. package/packages/shared-skills/skills/visual-qa/SKILL.md +9 -5
package/dist/cli/index.js CHANGED
@@ -2145,7 +2145,7 @@ var package_default;
2145
2145
  var init_package = __esm(() => {
2146
2146
  package_default = {
2147
2147
  name: "oh-my-opencode",
2148
- version: "4.17.0",
2148
+ version: "4.17.1",
2149
2149
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
2150
2150
  main: "./dist/index.js",
2151
2151
  types: "dist/index.d.ts",
@@ -2356,18 +2356,18 @@ var init_package = __esm(() => {
2356
2356
  typescript: "^6.0.3"
2357
2357
  },
2358
2358
  optionalDependencies: {
2359
- "oh-my-opencode-darwin-arm64": "4.17.0",
2360
- "oh-my-opencode-darwin-x64": "4.17.0",
2361
- "oh-my-opencode-darwin-x64-baseline": "4.17.0",
2362
- "oh-my-opencode-linux-arm64": "4.17.0",
2363
- "oh-my-opencode-linux-arm64-musl": "4.17.0",
2364
- "oh-my-opencode-linux-x64": "4.17.0",
2365
- "oh-my-opencode-linux-x64-baseline": "4.17.0",
2366
- "oh-my-opencode-linux-x64-musl": "4.17.0",
2367
- "oh-my-opencode-linux-x64-musl-baseline": "4.17.0",
2368
- "oh-my-opencode-windows-arm64": "4.17.0",
2369
- "oh-my-opencode-windows-x64": "4.17.0",
2370
- "oh-my-opencode-windows-x64-baseline": "4.17.0"
2359
+ "oh-my-opencode-darwin-arm64": "4.17.1",
2360
+ "oh-my-opencode-darwin-x64": "4.17.1",
2361
+ "oh-my-opencode-darwin-x64-baseline": "4.17.1",
2362
+ "oh-my-opencode-linux-arm64": "4.17.1",
2363
+ "oh-my-opencode-linux-arm64-musl": "4.17.1",
2364
+ "oh-my-opencode-linux-x64": "4.17.1",
2365
+ "oh-my-opencode-linux-x64-baseline": "4.17.1",
2366
+ "oh-my-opencode-linux-x64-musl": "4.17.1",
2367
+ "oh-my-opencode-linux-x64-musl-baseline": "4.17.1",
2368
+ "oh-my-opencode-windows-arm64": "4.17.1",
2369
+ "oh-my-opencode-windows-x64": "4.17.1",
2370
+ "oh-my-opencode-windows-x64-baseline": "4.17.1"
2371
2371
  },
2372
2372
  overrides: {
2373
2373
  "@earendil-works/pi-agent-core": "0.80.3",
@@ -9223,7 +9223,7 @@ var init_agent_model_requirements = __esm(() => {
9223
9223
  {
9224
9224
  providers: ["openai", "vercel"],
9225
9225
  model: "gpt-5.6-sol",
9226
- variant: "medium"
9226
+ variant: "high"
9227
9227
  },
9228
9228
  {
9229
9229
  providers: ["openai", "github-copilot", "opencode", "vercel"],
@@ -65103,15 +65103,20 @@ var init_command_loader = __esm(() => {
65103
65103
  init_logger3();
65104
65104
  });
65105
65105
 
65106
- // packages/claude-code-compat-core/src/shared/skill-path-resolver.ts
65106
+ // packages/utils/src/skill-path-resolver.ts
65107
65107
  var init_skill_path_resolver = () => {};
65108
65108
 
65109
+ // packages/claude-code-compat-core/src/shared/skill-path-resolver.ts
65110
+ var init_skill_path_resolver2 = __esm(() => {
65111
+ init_skill_path_resolver();
65112
+ });
65113
+
65109
65114
  // packages/claude-code-compat-core/src/features/claude-code-plugin-loader/skill-loader.ts
65110
65115
  var init_skill_loader = __esm(() => {
65111
65116
  init_frontmatter3();
65112
65117
  init_file_utils3();
65113
65118
  init_model_sanitizer2();
65114
- init_skill_path_resolver();
65119
+ init_skill_path_resolver2();
65115
65120
  init_logger3();
65116
65121
  });
65117
65122
  // packages/claude-code-compat-core/src/shared/model-format-normalizer.ts
@@ -72596,7 +72601,7 @@ var package_default2;
72596
72601
  var init_package2 = __esm(() => {
72597
72602
  package_default2 = {
72598
72603
  name: "@oh-my-opencode/omo-codex",
72599
- version: "4.16.3",
72604
+ version: "4.17.1",
72600
72605
  type: "module",
72601
72606
  private: true,
72602
72607
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -75896,6 +75901,14 @@ function parseAgentHeaderName(header) {
75896
75901
  const path7 = parseTomlDottedKey(header);
75897
75902
  return path7?.[0] === "agents" ? path7[1] ?? null : null;
75898
75903
  }
75904
+ function parseJsonString(value) {
75905
+ try {
75906
+ const parsed = JSON.parse(value);
75907
+ return typeof parsed === "string" ? parsed : null;
75908
+ } catch {
75909
+ return null;
75910
+ }
75911
+ }
75899
75912
  function parseHookStateHeaderKey(header) {
75900
75913
  const path7 = parseTomlDottedKey(header);
75901
75914
  if (path7?.[0] !== "hooks" || path7[1] !== "state")
@@ -77052,16 +77065,6 @@ function isSectionHeader3(line) {
77052
77065
  function agentNameFromToml(fileName) {
77053
77066
  return fileName.endsWith(".toml") ? fileName.slice(0, -".toml".length) : fileName;
77054
77067
  }
77055
- function parseJsonString(value) {
77056
- try {
77057
- const parsed = JSON.parse(value);
77058
- return typeof parsed === "string" ? parsed : null;
77059
- } catch (error) {
77060
- if (error instanceof Error)
77061
- return null;
77062
- return null;
77063
- }
77064
- }
77065
77068
  async function exists2(path7) {
77066
77069
  try {
77067
77070
  await lstat7(path7);
@@ -2146,7 +2146,7 @@ var package_default;
2146
2146
  var init_package = __esm(() => {
2147
2147
  package_default = {
2148
2148
  name: "oh-my-opencode",
2149
- version: "4.17.0",
2149
+ version: "4.17.1",
2150
2150
  description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
2151
2151
  main: "./dist/index.js",
2152
2152
  types: "dist/index.d.ts",
@@ -2357,18 +2357,18 @@ var init_package = __esm(() => {
2357
2357
  typescript: "^6.0.3"
2358
2358
  },
2359
2359
  optionalDependencies: {
2360
- "oh-my-opencode-darwin-arm64": "4.17.0",
2361
- "oh-my-opencode-darwin-x64": "4.17.0",
2362
- "oh-my-opencode-darwin-x64-baseline": "4.17.0",
2363
- "oh-my-opencode-linux-arm64": "4.17.0",
2364
- "oh-my-opencode-linux-arm64-musl": "4.17.0",
2365
- "oh-my-opencode-linux-x64": "4.17.0",
2366
- "oh-my-opencode-linux-x64-baseline": "4.17.0",
2367
- "oh-my-opencode-linux-x64-musl": "4.17.0",
2368
- "oh-my-opencode-linux-x64-musl-baseline": "4.17.0",
2369
- "oh-my-opencode-windows-arm64": "4.17.0",
2370
- "oh-my-opencode-windows-x64": "4.17.0",
2371
- "oh-my-opencode-windows-x64-baseline": "4.17.0"
2360
+ "oh-my-opencode-darwin-arm64": "4.17.1",
2361
+ "oh-my-opencode-darwin-x64": "4.17.1",
2362
+ "oh-my-opencode-darwin-x64-baseline": "4.17.1",
2363
+ "oh-my-opencode-linux-arm64": "4.17.1",
2364
+ "oh-my-opencode-linux-arm64-musl": "4.17.1",
2365
+ "oh-my-opencode-linux-x64": "4.17.1",
2366
+ "oh-my-opencode-linux-x64-baseline": "4.17.1",
2367
+ "oh-my-opencode-linux-x64-musl": "4.17.1",
2368
+ "oh-my-opencode-linux-x64-musl-baseline": "4.17.1",
2369
+ "oh-my-opencode-windows-arm64": "4.17.1",
2370
+ "oh-my-opencode-windows-x64": "4.17.1",
2371
+ "oh-my-opencode-windows-x64-baseline": "4.17.1"
2372
2372
  },
2373
2373
  overrides: {
2374
2374
  "@earendil-works/pi-agent-core": "0.80.3",
@@ -9224,7 +9224,7 @@ var init_agent_model_requirements = __esm(() => {
9224
9224
  {
9225
9225
  providers: ["openai", "vercel"],
9226
9226
  model: "gpt-5.6-sol",
9227
- variant: "medium"
9227
+ variant: "high"
9228
9228
  },
9229
9229
  {
9230
9230
  providers: ["openai", "github-copilot", "opencode", "vercel"],
@@ -65104,15 +65104,20 @@ var init_command_loader = __esm(() => {
65104
65104
  init_logger3();
65105
65105
  });
65106
65106
 
65107
- // packages/claude-code-compat-core/src/shared/skill-path-resolver.ts
65107
+ // packages/utils/src/skill-path-resolver.ts
65108
65108
  var init_skill_path_resolver = () => {};
65109
65109
 
65110
+ // packages/claude-code-compat-core/src/shared/skill-path-resolver.ts
65111
+ var init_skill_path_resolver2 = __esm(() => {
65112
+ init_skill_path_resolver();
65113
+ });
65114
+
65110
65115
  // packages/claude-code-compat-core/src/features/claude-code-plugin-loader/skill-loader.ts
65111
65116
  var init_skill_loader = __esm(() => {
65112
65117
  init_frontmatter3();
65113
65118
  init_file_utils3();
65114
65119
  init_model_sanitizer2();
65115
- init_skill_path_resolver();
65120
+ init_skill_path_resolver2();
65116
65121
  init_logger3();
65117
65122
  });
65118
65123
  // packages/claude-code-compat-core/src/shared/model-format-normalizer.ts
@@ -72652,7 +72657,7 @@ var package_default2;
72652
72657
  var init_package2 = __esm(() => {
72653
72658
  package_default2 = {
72654
72659
  name: "@oh-my-opencode/omo-codex",
72655
- version: "4.16.3",
72660
+ version: "4.17.1",
72656
72661
  type: "module",
72657
72662
  private: true,
72658
72663
  description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
@@ -75952,6 +75957,14 @@ function parseAgentHeaderName(header) {
75952
75957
  const path7 = parseTomlDottedKey(header);
75953
75958
  return path7?.[0] === "agents" ? path7[1] ?? null : null;
75954
75959
  }
75960
+ function parseJsonString(value) {
75961
+ try {
75962
+ const parsed = JSON.parse(value);
75963
+ return typeof parsed === "string" ? parsed : null;
75964
+ } catch {
75965
+ return null;
75966
+ }
75967
+ }
75955
75968
  function parseHookStateHeaderKey(header) {
75956
75969
  const path7 = parseTomlDottedKey(header);
75957
75970
  if (path7?.[0] !== "hooks" || path7[1] !== "state")
@@ -77108,16 +77121,6 @@ function isSectionHeader3(line) {
77108
77121
  function agentNameFromToml(fileName) {
77109
77122
  return fileName.endsWith(".toml") ? fileName.slice(0, -".toml".length) : fileName;
77110
77123
  }
77111
- function parseJsonString(value) {
77112
- try {
77113
- const parsed = JSON.parse(value);
77114
- return typeof parsed === "string" ? parsed : null;
77115
- } catch (error) {
77116
- if (error instanceof Error)
77117
- return null;
77118
- return null;
77119
- }
77120
- }
77121
77124
  async function exists2(path7) {
77122
77125
  try {
77123
77126
  await lstat7(path7);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lazycodex-ai",
3
- "version": "4.17.0",
3
+ "version": "4.17.1",
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",
@@ -3556,13 +3556,13 @@ function resolveSocketPath(dir, version) {
3556
3556
  // src/request-routing.ts
3557
3557
  var CONTEXT_KEY = "_context";
3558
3558
  function extractRequestContext(raw) {
3559
- if (!isRecord5(raw) || raw["method"] !== "tools/call")
3559
+ if (!isPlainRecord(raw) || raw["method"] !== "tools/call")
3560
3560
  return { input: raw, context: undefined };
3561
3561
  const params = raw["params"];
3562
- if (!isRecord5(params))
3562
+ if (!isPlainRecord(params))
3563
3563
  return { input: raw, context: undefined };
3564
3564
  const args = params["arguments"];
3565
- if (!isRecord5(args))
3565
+ if (!isPlainRecord(args))
3566
3566
  return { input: raw, context: undefined };
3567
3567
  const context = parseContext(args[CONTEXT_KEY]);
3568
3568
  if (!context)
@@ -3579,7 +3579,7 @@ function handleDaemonMessage(raw) {
3579
3579
  return handleLspMcpRequest(input);
3580
3580
  }
3581
3581
  function parseContext(value) {
3582
- if (!isRecord5(value))
3582
+ if (!isPlainRecord(value))
3583
3583
  return;
3584
3584
  const context = {};
3585
3585
  const cwd = value["cwd"];
@@ -3590,11 +3590,8 @@ function parseContext(value) {
3590
3590
  context.env = env;
3591
3591
  return context.cwd === undefined && context.env === undefined ? undefined : context;
3592
3592
  }
3593
- function isRecord5(value) {
3594
- return typeof value === "object" && value !== null && !Array.isArray(value);
3595
- }
3596
3593
  function isStringRecord2(value) {
3597
- return isRecord5(value) && Object.values(value).every((item) => typeof item === "string");
3594
+ return isPlainRecord(value) && Object.values(value).every((item) => typeof item === "string");
3598
3595
  }
3599
3596
 
3600
3597
  // src/socket-jsonrpc.ts
@@ -3721,10 +3718,10 @@ function sendToolCall(socketPath, name, args, timeoutMs) {
3721
3718
  });
3722
3719
  }
3723
3720
  function toToolResult(message) {
3724
- if (!isRecord6(message) || message["id"] !== REQUEST_ID)
3721
+ if (!isPlainRecord(message) || message["id"] !== REQUEST_ID)
3725
3722
  return null;
3726
3723
  const result = message["result"];
3727
- if (!isRecord6(result) || !Array.isArray(result["content"]))
3724
+ if (!isPlainRecord(result) || !Array.isArray(result["content"]))
3728
3725
  return null;
3729
3726
  return {
3730
3727
  content: result["content"],
@@ -3732,9 +3729,6 @@ function toToolResult(message) {
3732
3729
  details: result["details"]
3733
3730
  };
3734
3731
  }
3735
- function isRecord6(value) {
3736
- return typeof value === "object" && value !== null && !Array.isArray(value);
3737
- }
3738
3732
  function errorText(error) {
3739
3733
  return error instanceof Error ? error.message : String(error);
3740
3734
  }
@@ -1,4 +1,5 @@
1
1
  import { connect } from "node:net";
2
+ import { isPlainRecord } from "@oh-my-opencode/mcp-stdio-core/record";
2
3
  import { ensureDaemonRunning } from "./ensure-daemon.js";
3
4
  import { daemonPaths } from "./paths.js";
4
5
  import { CONTEXT_KEY } from "./request-routing.js";
@@ -95,10 +96,10 @@ function sendToolCall(socketPath, name, args, timeoutMs) {
95
96
  });
96
97
  }
97
98
  function toToolResult(message) {
98
- if (!isRecord(message) || message["id"] !== REQUEST_ID)
99
+ if (!isPlainRecord(message) || message["id"] !== REQUEST_ID)
99
100
  return null;
100
101
  const result = message["result"];
101
- if (!isRecord(result) || !Array.isArray(result["content"]))
102
+ if (!isPlainRecord(result) || !Array.isArray(result["content"]))
102
103
  return null;
103
104
  return {
104
105
  content: result["content"],
@@ -106,9 +107,6 @@ function toToolResult(message) {
106
107
  details: result["details"],
107
108
  };
108
109
  }
109
- function isRecord(value) {
110
- return typeof value === "object" && value !== null && !Array.isArray(value);
111
- }
112
110
  function errorText(error) {
113
111
  return error instanceof Error ? error.message : String(error);
114
112
  }
@@ -1415,6 +1415,11 @@ async function disposeDefaultLspManager() {
1415
1415
  // src/daemon-client.ts
1416
1416
  import { connect as connect2 } from "node:net";
1417
1417
 
1418
+ // ../mcp-stdio-core/src/record.ts
1419
+ function isPlainRecord(value) {
1420
+ return typeof value === "object" && value !== null && !Array.isArray(value);
1421
+ }
1422
+
1418
1423
  // src/ensure-daemon.ts
1419
1424
  import { spawn as spawn2 } from "node:child_process";
1420
1425
  import { closeSync as closeSync2, existsSync as existsSync2, mkdirSync as mkdirSync2, openSync as openSync2 } from "node:fs";
@@ -1632,11 +1637,6 @@ function resolveSocketPath(dir, version) {
1632
1637
  return natural;
1633
1638
  return join2(tmpdir(), `omo-lsp-${version}-${digest}.sock`);
1634
1639
  }
1635
-
1636
- // ../mcp-stdio-core/src/record.ts
1637
- function isPlainRecord(value) {
1638
- return typeof value === "object" && value !== null && !Array.isArray(value);
1639
- }
1640
1640
  // ../mcp-stdio-core/src/responses.ts
1641
1641
  function successResponse(id, result) {
1642
1642
  return { jsonrpc: "2.0", id, result };
@@ -3550,13 +3550,13 @@ function requestedProtocolVersion(params) {
3550
3550
  // src/request-routing.ts
3551
3551
  var CONTEXT_KEY = "_context";
3552
3552
  function extractRequestContext(raw) {
3553
- if (!isRecord5(raw) || raw["method"] !== "tools/call")
3553
+ if (!isPlainRecord(raw) || raw["method"] !== "tools/call")
3554
3554
  return { input: raw, context: undefined };
3555
3555
  const params = raw["params"];
3556
- if (!isRecord5(params))
3556
+ if (!isPlainRecord(params))
3557
3557
  return { input: raw, context: undefined };
3558
3558
  const args = params["arguments"];
3559
- if (!isRecord5(args))
3559
+ if (!isPlainRecord(args))
3560
3560
  return { input: raw, context: undefined };
3561
3561
  const context = parseContext(args[CONTEXT_KEY]);
3562
3562
  if (!context)
@@ -3573,7 +3573,7 @@ function handleDaemonMessage(raw) {
3573
3573
  return handleLspMcpRequest(input);
3574
3574
  }
3575
3575
  function parseContext(value) {
3576
- if (!isRecord5(value))
3576
+ if (!isPlainRecord(value))
3577
3577
  return;
3578
3578
  const context = {};
3579
3579
  const cwd = value["cwd"];
@@ -3584,11 +3584,8 @@ function parseContext(value) {
3584
3584
  context.env = env;
3585
3585
  return context.cwd === undefined && context.env === undefined ? undefined : context;
3586
3586
  }
3587
- function isRecord5(value) {
3588
- return typeof value === "object" && value !== null && !Array.isArray(value);
3589
- }
3590
3587
  function isStringRecord2(value) {
3591
- return isRecord5(value) && Object.values(value).every((item) => typeof item === "string");
3588
+ return isPlainRecord(value) && Object.values(value).every((item) => typeof item === "string");
3592
3589
  }
3593
3590
 
3594
3591
  // src/socket-jsonrpc.ts
@@ -3715,10 +3712,10 @@ function sendToolCall(socketPath, name, args, timeoutMs) {
3715
3712
  });
3716
3713
  }
3717
3714
  function toToolResult(message) {
3718
- if (!isRecord6(message) || message["id"] !== REQUEST_ID)
3715
+ if (!isPlainRecord(message) || message["id"] !== REQUEST_ID)
3719
3716
  return null;
3720
3717
  const result = message["result"];
3721
- if (!isRecord6(result) || !Array.isArray(result["content"]))
3718
+ if (!isPlainRecord(result) || !Array.isArray(result["content"]))
3722
3719
  return null;
3723
3720
  return {
3724
3721
  content: result["content"],
@@ -3726,9 +3723,6 @@ function toToolResult(message) {
3726
3723
  details: result["details"]
3727
3724
  };
3728
3725
  }
3729
- function isRecord6(value) {
3730
- return typeof value === "object" && value !== null && !Array.isArray(value);
3731
- }
3732
3726
  function errorText(error) {
3733
3727
  return error instanceof Error ? error.message : String(error);
3734
3728
  }
@@ -1,14 +1,15 @@
1
1
  import { handleLspMcpRequest } from "@oh-my-opencode/lsp-core/mcp";
2
2
  import { runWithRequestContext } from "@oh-my-opencode/lsp-core/request-context";
3
+ import { isPlainRecord } from "@oh-my-opencode/mcp-stdio-core/record";
3
4
  export const CONTEXT_KEY = "_context";
4
5
  export function extractRequestContext(raw) {
5
- if (!isRecord(raw) || raw["method"] !== "tools/call")
6
+ if (!isPlainRecord(raw) || raw["method"] !== "tools/call")
6
7
  return { input: raw, context: undefined };
7
8
  const params = raw["params"];
8
- if (!isRecord(params))
9
+ if (!isPlainRecord(params))
9
10
  return { input: raw, context: undefined };
10
11
  const args = params["arguments"];
11
- if (!isRecord(args))
12
+ if (!isPlainRecord(args))
12
13
  return { input: raw, context: undefined };
13
14
  const context = parseContext(args[CONTEXT_KEY]);
14
15
  if (!context)
@@ -25,7 +26,7 @@ export function handleDaemonMessage(raw) {
25
26
  return handleLspMcpRequest(input);
26
27
  }
27
28
  function parseContext(value) {
28
- if (!isRecord(value))
29
+ if (!isPlainRecord(value))
29
30
  return undefined;
30
31
  const context = {};
31
32
  const cwd = value["cwd"];
@@ -36,9 +37,6 @@ function parseContext(value) {
36
37
  context.env = env;
37
38
  return context.cwd === undefined && context.env === undefined ? undefined : context;
38
39
  }
39
- function isRecord(value) {
40
- return typeof value === "object" && value !== null && !Array.isArray(value);
41
- }
42
40
  function isStringRecord(value) {
43
- return isRecord(value) && Object.values(value).every((item) => typeof item === "string");
41
+ return isPlainRecord(value) && Object.values(value).every((item) => typeof item === "string");
44
42
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omo",
3
- "version": "4.17.0",
3
+ "version": "4.17.1",
4
4
  "description": "One Codex plugin namespace for Yeongyu's local Codex components.",
5
5
  "author": {
6
6
  "name": "Yeongyu Kim",