lazycodex-ai 5.0.0-beta.82 → 5.0.0-beta.84
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/README.ja.md +2 -2
- package/README.ko.md +2 -2
- package/README.md +4 -4
- package/README.ru.md +2 -2
- package/README.zh-cn.md +2 -2
- package/dist/cli/index.js +707 -146
- package/dist/cli/install-native/index.d.ts +4 -0
- package/dist/cli/install-native/plan.d.ts +11 -0
- package/dist/cli/install-native/run-native-install.d.ts +23 -0
- package/dist/cli/install-native-dev/index.d.ts +4 -0
- package/dist/cli/native-dev-platform-flag.d.ts +5 -0
- package/dist/cli/native-edition-hint.d.ts +10 -0
- package/dist/cli/types.d.ts +3 -2
- package/dist/cli-node/index.js +707 -146
- package/package.json +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +84 -11
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-contribute-bug-fix/SKILL.md +1 -1
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +3 -3
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-report-bug/SKILL.md +5 -5
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +24 -10
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +8 -6
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +21 -4
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +10 -5
- package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +24 -6
- package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard-native-reviewer.test.ts +207 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +6 -4
- package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +43 -4
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/ATTRIBUTION.md +25 -0
- package/packages/omo-codex/plugin/skills/browser/SKILL.md +89 -0
- package/packages/omo-codex/plugin/skills/browser/agents/openai.yaml +2 -0
- package/packages/omo-codex/plugin/skills/browser/references/commands.md +90 -0
- package/packages/omo-codex/plugin/skills/browser/references/install.md +71 -0
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/README.md +42 -0
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/frames-and-humans.md +39 -0
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/ladder.md +59 -0
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/network.md +42 -0
- package/packages/omo-codex/plugin/skills/browser/references/recipes/1password.md +59 -0
- package/packages/omo-codex/plugin/skills/browser/references/remote.md +24 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +41 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-env.mjs +41 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-install.mjs +51 -0
- package/packages/omo-codex/plugin/skills/lcx-contribute-bug-fix/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +3 -3
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +5 -5
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +1 -0
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +90 -17
- package/packages/shared-skills/skills/browser/ATTRIBUTION.md +25 -0
- package/packages/shared-skills/skills/browser/SKILL.md +89 -0
- package/packages/shared-skills/skills/browser/references/commands.md +90 -0
- package/packages/shared-skills/skills/browser/references/install.md +71 -0
- package/packages/shared-skills/skills/browser/references/owned-engine/README.md +42 -0
- package/packages/shared-skills/skills/browser/references/owned-engine/frames-and-humans.md +39 -0
- package/packages/shared-skills/skills/browser/references/owned-engine/ladder.md +59 -0
- package/packages/shared-skills/skills/browser/references/owned-engine/network.md +42 -0
- package/packages/shared-skills/skills/browser/references/recipes/1password.md +59 -0
- package/packages/shared-skills/skills/browser/references/remote.md +24 -0
- package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +41 -0
- package/packages/shared-skills/skills/browser/scripts/browser-env.mjs +41 -0
- package/packages/shared-skills/skills/browser/scripts/browser-install.mjs +51 -0
- package/dist/cli/install-senpi/index.d.ts +0 -1
- package/dist/cli/senpi-edition-hint.d.ts +0 -10
- package/dist/cli/senpi-platform-flag.d.ts +0 -4
package/dist/cli/index.js
CHANGED
|
@@ -64,7 +64,7 @@ var package_default;
|
|
|
64
64
|
var init_package = __esm(() => {
|
|
65
65
|
package_default = {
|
|
66
66
|
name: "oh-my-opencode",
|
|
67
|
-
version: "5.0.0-beta.
|
|
67
|
+
version: "5.0.0-beta.84",
|
|
68
68
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
69
69
|
main: "./dist/index.js",
|
|
70
70
|
types: "dist/index.d.ts",
|
|
@@ -247,7 +247,7 @@ var init_package = __esm(() => {
|
|
|
247
247
|
zod: "^4.6.5"
|
|
248
248
|
},
|
|
249
249
|
devDependencies: {
|
|
250
|
-
"@code-yeongyu/senpi": "2026.9.22",
|
|
250
|
+
"@code-yeongyu/senpi": "2026.9.22-4",
|
|
251
251
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
252
252
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
253
253
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -287,18 +287,18 @@ var init_package = __esm(() => {
|
|
|
287
287
|
typescript: "^7.0.2"
|
|
288
288
|
},
|
|
289
289
|
optionalDependencies: {
|
|
290
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
291
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
292
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
293
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
300
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
301
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
290
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.84",
|
|
291
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.84",
|
|
292
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.84",
|
|
293
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.84",
|
|
294
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.84",
|
|
295
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.84",
|
|
296
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.84",
|
|
297
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.84",
|
|
298
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.84",
|
|
299
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.84",
|
|
300
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.84",
|
|
301
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.84"
|
|
302
302
|
},
|
|
303
303
|
overrides: {
|
|
304
304
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -7180,7 +7180,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7180
7180
|
fallbackChain: [
|
|
7181
7181
|
{
|
|
7182
7182
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
7183
|
-
model: "claude-opus-5",
|
|
7183
|
+
model: "claude-opus-5-5",
|
|
7184
7184
|
variant: "max"
|
|
7185
7185
|
},
|
|
7186
7186
|
{
|
|
@@ -7188,7 +7188,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7188
7188
|
model: "kimi-k3"
|
|
7189
7189
|
},
|
|
7190
7190
|
{
|
|
7191
|
-
providers: ["openai", "
|
|
7191
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7192
7192
|
model: "gpt-5.6-sol",
|
|
7193
7193
|
variant: "medium"
|
|
7194
7194
|
},
|
|
@@ -7200,17 +7200,17 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7200
7200
|
hephaestus: {
|
|
7201
7201
|
fallbackChain: [
|
|
7202
7202
|
{
|
|
7203
|
-
providers: ["openai", "
|
|
7203
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7204
7204
|
model: "gpt-5.6-sol",
|
|
7205
7205
|
variant: "medium"
|
|
7206
7206
|
}
|
|
7207
7207
|
],
|
|
7208
|
-
requiresProvider: ["openai", "
|
|
7208
|
+
requiresProvider: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7209
7209
|
requiresAnyModel: true
|
|
7210
7210
|
},
|
|
7211
7211
|
oracle: {
|
|
7212
7212
|
fallbackChain: [
|
|
7213
|
-
{ providers: ["openai", "
|
|
7213
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-5.6-sol", variant: "xhigh" },
|
|
7214
7214
|
{ providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "high" },
|
|
7215
7215
|
{
|
|
7216
7216
|
providers: ["google", "github-copilot", "opencode"],
|
|
@@ -7219,7 +7219,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7219
7219
|
},
|
|
7220
7220
|
{
|
|
7221
7221
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
7222
|
-
model: "claude-opus-5",
|
|
7222
|
+
model: "claude-opus-5-5",
|
|
7223
7223
|
variant: "max"
|
|
7224
7224
|
},
|
|
7225
7225
|
{ providers: ["opencode-go"], model: "glm-5.2" }
|
|
@@ -7227,34 +7227,36 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7227
7227
|
},
|
|
7228
7228
|
librarian: {
|
|
7229
7229
|
fallbackChain: [
|
|
7230
|
-
{ providers: ["
|
|
7230
|
+
{ providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
|
|
7231
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.6-luna-fast", variant: "low" },
|
|
7231
7232
|
{ providers: ["deepseek"], model: "deepseek-v4-flash", variant: "max" },
|
|
7232
7233
|
{ providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
|
|
7233
7234
|
{ providers: ["opencode-go"], model: "minimax-m3" },
|
|
7234
7235
|
{ providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
|
|
7235
7236
|
{ providers: ["opencode-go"], model: "minimax-m2.7" },
|
|
7236
7237
|
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" },
|
|
7237
|
-
{ providers: ["openai", "
|
|
7238
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.4-nano" }
|
|
7238
7239
|
]
|
|
7239
7240
|
},
|
|
7240
7241
|
explore: {
|
|
7241
7242
|
fallbackChain: [
|
|
7242
|
-
{ providers: ["
|
|
7243
|
+
{ providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
|
|
7244
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.6-luna-fast", variant: "low" },
|
|
7243
7245
|
{ providers: ["deepseek"], model: "deepseek-v4-flash", variant: "max" },
|
|
7244
7246
|
{ providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
|
|
7245
7247
|
{ providers: ["opencode-go"], model: "minimax-m3" },
|
|
7246
7248
|
{ providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
|
|
7247
7249
|
{ providers: ["opencode-go"], model: "minimax-m2.7" },
|
|
7248
7250
|
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" },
|
|
7249
|
-
{ providers: ["openai", "
|
|
7251
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.4-nano" }
|
|
7250
7252
|
]
|
|
7251
7253
|
},
|
|
7252
7254
|
"multimodal-looker": {
|
|
7253
7255
|
fallbackChain: [
|
|
7254
|
-
{ providers: ["openai", "
|
|
7256
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-5.6-sol", variant: "low" },
|
|
7255
7257
|
{ providers: ["opencode-go"], model: "kimi-k3" },
|
|
7256
7258
|
{ providers: ["zai-coding-plan"], model: "glm-4.6v" },
|
|
7257
|
-
{ providers: ["openai", "
|
|
7259
|
+
{ providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"], model: "gpt-5-nano" }
|
|
7258
7260
|
]
|
|
7259
7261
|
},
|
|
7260
7262
|
prometheus: {
|
|
@@ -7280,7 +7282,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7280
7282
|
},
|
|
7281
7283
|
{
|
|
7282
7284
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
7283
|
-
model: "claude-opus-5",
|
|
7285
|
+
model: "claude-opus-5-5",
|
|
7284
7286
|
variant: "max"
|
|
7285
7287
|
},
|
|
7286
7288
|
{
|
|
@@ -7292,12 +7294,12 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7292
7294
|
},
|
|
7293
7295
|
momus: {
|
|
7294
7296
|
fallbackChain: [
|
|
7295
|
-
{ providers: ["openai", "
|
|
7297
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-astra", variant: "xhigh" },
|
|
7296
7298
|
{ providers: ["github-copilot"], model: "gpt-6-astra", variant: "high" },
|
|
7297
|
-
{ providers: ["openai", "
|
|
7299
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-6-astra", variant: "high" },
|
|
7298
7300
|
{
|
|
7299
7301
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
7300
|
-
model: "claude-opus-5",
|
|
7302
|
+
model: "claude-opus-5-5",
|
|
7301
7303
|
variant: "max"
|
|
7302
7304
|
},
|
|
7303
7305
|
{
|
|
@@ -7313,7 +7315,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7313
7315
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-5" },
|
|
7314
7316
|
{ providers: ["opencode-go"], model: "kimi-k3" },
|
|
7315
7317
|
{
|
|
7316
|
-
providers: ["openai", "
|
|
7318
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7317
7319
|
model: "gpt-5.6-sol",
|
|
7318
7320
|
variant: "medium"
|
|
7319
7321
|
},
|
|
@@ -7327,7 +7329,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7327
7329
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-5" },
|
|
7328
7330
|
{ providers: ["opencode-go"], model: "kimi-k3" },
|
|
7329
7331
|
{
|
|
7330
|
-
providers: ["openai", "
|
|
7332
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7331
7333
|
model: "gpt-5.6-sol",
|
|
7332
7334
|
variant: "medium"
|
|
7333
7335
|
},
|
|
@@ -7353,7 +7355,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7353
7355
|
},
|
|
7354
7356
|
{
|
|
7355
7357
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7356
|
-
model: "claude-opus-5",
|
|
7358
|
+
model: "claude-opus-5-5",
|
|
7357
7359
|
variant: "max"
|
|
7358
7360
|
},
|
|
7359
7361
|
{
|
|
@@ -7365,18 +7367,18 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7365
7367
|
},
|
|
7366
7368
|
ultrabrain: {
|
|
7367
7369
|
fallbackChain: [
|
|
7368
|
-
{ providers: ["openai", "
|
|
7370
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-astra", variant: "max" },
|
|
7369
7371
|
{ providers: ["github-copilot"], model: "gpt-6-astra", variant: "max" },
|
|
7370
|
-
{ providers: ["openai", "
|
|
7371
|
-
{ providers: ["openai", "
|
|
7372
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-6-astra", variant: "max" },
|
|
7373
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.6-sol", variant: "max" },
|
|
7372
7374
|
{ providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "max" },
|
|
7373
|
-
{ providers: ["openai", "
|
|
7375
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-5.6-sol", variant: "max" }
|
|
7374
7376
|
]
|
|
7375
7377
|
},
|
|
7376
7378
|
"deep-low": {
|
|
7377
7379
|
fallbackChain: [
|
|
7378
7380
|
{
|
|
7379
|
-
providers: ["openai", "
|
|
7381
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7380
7382
|
model: "gpt-5.6-sol",
|
|
7381
7383
|
variant: "medium"
|
|
7382
7384
|
}
|
|
@@ -7385,7 +7387,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7385
7387
|
"deep-high": {
|
|
7386
7388
|
fallbackChain: [
|
|
7387
7389
|
{
|
|
7388
|
-
providers: ["openai", "
|
|
7390
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7389
7391
|
model: "gpt-6-astra",
|
|
7390
7392
|
variant: "high"
|
|
7391
7393
|
}
|
|
@@ -7405,15 +7407,14 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7405
7407
|
},
|
|
7406
7408
|
{
|
|
7407
7409
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7408
|
-
model: "claude-opus-5",
|
|
7409
|
-
variant: "
|
|
7410
|
+
model: "claude-opus-5-5",
|
|
7411
|
+
variant: "max"
|
|
7410
7412
|
}
|
|
7411
7413
|
]
|
|
7412
7414
|
},
|
|
7413
7415
|
quick: {
|
|
7414
7416
|
fallbackChain: [
|
|
7415
|
-
{ providers: ["
|
|
7416
|
-
{ providers: ["openai-codex"], model: "gpt-5.6-luna-fast", variant: "low" },
|
|
7417
|
+
{ providers: ["chatgpt-subscription"], model: "gpt-5.6-luna-fast", variant: "low" },
|
|
7417
7418
|
{ providers: ["deepseek"], model: "deepseek-v4-flash", variant: "off" },
|
|
7418
7419
|
{
|
|
7419
7420
|
providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan"],
|
|
@@ -7432,9 +7433,10 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7432
7433
|
},
|
|
7433
7434
|
"unspecified-low": {
|
|
7434
7435
|
fallbackChain: [
|
|
7435
|
-
{ providers: ["
|
|
7436
|
+
{ providers: ["xiaomi", "opencode-go"], model: "mimo-v2.6-pro", variant: "max" },
|
|
7437
|
+
{ providers: ["xai", "github-copilot", "opencode-go"], model: "grok-4.7", variant: "xhigh" },
|
|
7436
7438
|
{
|
|
7437
|
-
providers: ["openai", "
|
|
7439
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7438
7440
|
model: "gpt-5.6-terra",
|
|
7439
7441
|
variant: "high"
|
|
7440
7442
|
},
|
|
@@ -7454,15 +7456,10 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7454
7456
|
},
|
|
7455
7457
|
"unspecified-high": {
|
|
7456
7458
|
fallbackChain: [
|
|
7457
|
-
{
|
|
7458
|
-
providers: ["openai", "openai-codex", "github-copilot", "opencode"],
|
|
7459
|
-
model: "gpt-6-astra",
|
|
7460
|
-
variant: "high"
|
|
7461
|
-
},
|
|
7462
7459
|
{
|
|
7463
7460
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7464
|
-
model: "claude-opus-5",
|
|
7465
|
-
variant: "
|
|
7461
|
+
model: "claude-opus-5-5",
|
|
7462
|
+
variant: "max"
|
|
7466
7463
|
},
|
|
7467
7464
|
{ providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.3", variant: "max" },
|
|
7468
7465
|
{
|
|
@@ -7480,14 +7477,14 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7480
7477
|
variant: "low"
|
|
7481
7478
|
},
|
|
7482
7479
|
{
|
|
7483
|
-
providers: ["
|
|
7484
|
-
model: "
|
|
7480
|
+
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7481
|
+
model: "claude-opus-5-5",
|
|
7485
7482
|
variant: "low"
|
|
7486
7483
|
},
|
|
7487
7484
|
{
|
|
7488
7485
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7489
7486
|
model: "claude-opus-4-6",
|
|
7490
|
-
variant: "
|
|
7487
|
+
variant: "max"
|
|
7491
7488
|
}
|
|
7492
7489
|
]
|
|
7493
7490
|
}
|
|
@@ -8294,6 +8291,36 @@ var init_supplemental_entries = __esm(() => {
|
|
|
8294
8291
|
output: 32768
|
|
8295
8292
|
}
|
|
8296
8293
|
},
|
|
8294
|
+
"grok-4.7": {
|
|
8295
|
+
id: "grok-4.7",
|
|
8296
|
+
family: "grok",
|
|
8297
|
+
reasoning: false,
|
|
8298
|
+
temperature: true,
|
|
8299
|
+
toolCall: true,
|
|
8300
|
+
modalities: {
|
|
8301
|
+
input: ["text", "image"],
|
|
8302
|
+
output: ["text"]
|
|
8303
|
+
},
|
|
8304
|
+
limit: {
|
|
8305
|
+
context: 500000,
|
|
8306
|
+
output: 32768
|
|
8307
|
+
}
|
|
8308
|
+
},
|
|
8309
|
+
"xai/grok-4.7": {
|
|
8310
|
+
id: "xai/grok-4.7",
|
|
8311
|
+
family: "grok",
|
|
8312
|
+
reasoning: false,
|
|
8313
|
+
temperature: true,
|
|
8314
|
+
toolCall: true,
|
|
8315
|
+
modalities: {
|
|
8316
|
+
input: ["text", "image"],
|
|
8317
|
+
output: ["text"]
|
|
8318
|
+
},
|
|
8319
|
+
limit: {
|
|
8320
|
+
context: 500000,
|
|
8321
|
+
output: 32768
|
|
8322
|
+
}
|
|
8323
|
+
},
|
|
8297
8324
|
"xai/grok-build-0.1": {
|
|
8298
8325
|
id: "xai/grok-build-0.1",
|
|
8299
8326
|
family: "grok",
|
|
@@ -8323,6 +8350,36 @@ var init_supplemental_entries = __esm(() => {
|
|
|
8323
8350
|
context: 256000,
|
|
8324
8351
|
output: 32768
|
|
8325
8352
|
}
|
|
8353
|
+
},
|
|
8354
|
+
"mimo-v2.6-pro": {
|
|
8355
|
+
id: "mimo-v2.6-pro",
|
|
8356
|
+
family: "mimo",
|
|
8357
|
+
reasoning: true,
|
|
8358
|
+
temperature: true,
|
|
8359
|
+
toolCall: true,
|
|
8360
|
+
modalities: {
|
|
8361
|
+
input: ["text", "image"],
|
|
8362
|
+
output: ["text"]
|
|
8363
|
+
},
|
|
8364
|
+
limit: {
|
|
8365
|
+
context: 1048576,
|
|
8366
|
+
output: 131072
|
|
8367
|
+
}
|
|
8368
|
+
},
|
|
8369
|
+
"xiaomi/mimo-v2.6-pro": {
|
|
8370
|
+
id: "xiaomi/mimo-v2.6-pro",
|
|
8371
|
+
family: "mimo",
|
|
8372
|
+
reasoning: true,
|
|
8373
|
+
temperature: true,
|
|
8374
|
+
toolCall: true,
|
|
8375
|
+
modalities: {
|
|
8376
|
+
input: ["text", "image"],
|
|
8377
|
+
output: ["text"]
|
|
8378
|
+
},
|
|
8379
|
+
limit: {
|
|
8380
|
+
context: 1048576,
|
|
8381
|
+
output: 131072
|
|
8382
|
+
}
|
|
8326
8383
|
}
|
|
8327
8384
|
};
|
|
8328
8385
|
});
|
|
@@ -9296,21 +9353,21 @@ var init_openai_categories = __esm(() => {
|
|
|
9296
9353
|
},
|
|
9297
9354
|
{
|
|
9298
9355
|
name: "quick",
|
|
9299
|
-
config: { model: "
|
|
9356
|
+
config: { model: "openai/gpt-5.6-luna-fast", variant: "low" },
|
|
9300
9357
|
description: "Trivial tasks - single file changes, typo fixes, simple modifications",
|
|
9301
9358
|
callerGuidance: QUICK_CATEGORY_CALLER_GUIDANCE,
|
|
9302
9359
|
promptAppend: QUICK_CATEGORY_PROMPT_APPEND
|
|
9303
9360
|
},
|
|
9304
9361
|
{
|
|
9305
9362
|
name: "unspecified-low",
|
|
9306
|
-
config: { model: "
|
|
9363
|
+
config: { model: "xiaomi/mimo-v2.6-pro", variant: "max" },
|
|
9307
9364
|
description: "Tasks that don't fit other categories, low effort required",
|
|
9308
9365
|
callerGuidance: UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE,
|
|
9309
9366
|
promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
|
|
9310
9367
|
},
|
|
9311
9368
|
{
|
|
9312
9369
|
name: "unspecified-high",
|
|
9313
|
-
config: { model: "
|
|
9370
|
+
config: { model: "anthropic/claude-opus-5-5", variant: "max" },
|
|
9314
9371
|
description: "Tasks that don't fit other categories, high effort required",
|
|
9315
9372
|
callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
9316
9373
|
promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND,
|
|
@@ -64271,6 +64328,216 @@ var init_model_capabilities_generated = __esm(() => {
|
|
|
64271
64328
|
context: 500000,
|
|
64272
64329
|
output: 500000
|
|
64273
64330
|
}
|
|
64331
|
+
},
|
|
64332
|
+
"claude-opus-5-5": {
|
|
64333
|
+
id: "claude-opus-5-5",
|
|
64334
|
+
family: "claude-opus",
|
|
64335
|
+
reasoning: true,
|
|
64336
|
+
temperature: false,
|
|
64337
|
+
toolCall: true,
|
|
64338
|
+
modalities: {
|
|
64339
|
+
input: [
|
|
64340
|
+
"text",
|
|
64341
|
+
"image",
|
|
64342
|
+
"pdf"
|
|
64343
|
+
],
|
|
64344
|
+
output: [
|
|
64345
|
+
"text"
|
|
64346
|
+
]
|
|
64347
|
+
},
|
|
64348
|
+
limit: {
|
|
64349
|
+
context: 1e6,
|
|
64350
|
+
output: 128000
|
|
64351
|
+
}
|
|
64352
|
+
},
|
|
64353
|
+
"claude-opus-5-5@default": {
|
|
64354
|
+
id: "claude-opus-5-5@default",
|
|
64355
|
+
family: "claude-opus",
|
|
64356
|
+
reasoning: true,
|
|
64357
|
+
temperature: false,
|
|
64358
|
+
toolCall: true,
|
|
64359
|
+
modalities: {
|
|
64360
|
+
input: [
|
|
64361
|
+
"text",
|
|
64362
|
+
"image",
|
|
64363
|
+
"pdf"
|
|
64364
|
+
],
|
|
64365
|
+
output: [
|
|
64366
|
+
"text"
|
|
64367
|
+
]
|
|
64368
|
+
},
|
|
64369
|
+
limit: {
|
|
64370
|
+
context: 1e6,
|
|
64371
|
+
output: 128000
|
|
64372
|
+
}
|
|
64373
|
+
},
|
|
64374
|
+
"anthropic/claude-opus-5.5": {
|
|
64375
|
+
id: "anthropic/claude-opus-5.5",
|
|
64376
|
+
family: "claude-opus",
|
|
64377
|
+
reasoning: true,
|
|
64378
|
+
temperature: true,
|
|
64379
|
+
toolCall: true,
|
|
64380
|
+
modalities: {
|
|
64381
|
+
input: [
|
|
64382
|
+
"text",
|
|
64383
|
+
"image",
|
|
64384
|
+
"pdf"
|
|
64385
|
+
],
|
|
64386
|
+
output: [
|
|
64387
|
+
"text"
|
|
64388
|
+
]
|
|
64389
|
+
},
|
|
64390
|
+
limit: {
|
|
64391
|
+
context: 1e6,
|
|
64392
|
+
output: 128000
|
|
64393
|
+
}
|
|
64394
|
+
},
|
|
64395
|
+
"au.anthropic.claude-opus-5-5": {
|
|
64396
|
+
id: "au.anthropic.claude-opus-5-5",
|
|
64397
|
+
family: "claude-opus",
|
|
64398
|
+
reasoning: true,
|
|
64399
|
+
temperature: false,
|
|
64400
|
+
toolCall: true,
|
|
64401
|
+
modalities: {
|
|
64402
|
+
input: [
|
|
64403
|
+
"text",
|
|
64404
|
+
"image",
|
|
64405
|
+
"pdf"
|
|
64406
|
+
],
|
|
64407
|
+
output: [
|
|
64408
|
+
"text"
|
|
64409
|
+
]
|
|
64410
|
+
},
|
|
64411
|
+
limit: {
|
|
64412
|
+
context: 1e6,
|
|
64413
|
+
output: 128000
|
|
64414
|
+
}
|
|
64415
|
+
},
|
|
64416
|
+
"anthropic.claude-opus-5-5": {
|
|
64417
|
+
id: "anthropic.claude-opus-5-5",
|
|
64418
|
+
family: "claude-opus",
|
|
64419
|
+
reasoning: true,
|
|
64420
|
+
temperature: false,
|
|
64421
|
+
toolCall: true,
|
|
64422
|
+
modalities: {
|
|
64423
|
+
input: [
|
|
64424
|
+
"text",
|
|
64425
|
+
"image",
|
|
64426
|
+
"pdf"
|
|
64427
|
+
],
|
|
64428
|
+
output: [
|
|
64429
|
+
"text"
|
|
64430
|
+
]
|
|
64431
|
+
},
|
|
64432
|
+
limit: {
|
|
64433
|
+
context: 1e6,
|
|
64434
|
+
output: 128000
|
|
64435
|
+
}
|
|
64436
|
+
},
|
|
64437
|
+
"eu.anthropic.claude-opus-5-5": {
|
|
64438
|
+
id: "eu.anthropic.claude-opus-5-5",
|
|
64439
|
+
family: "claude-opus",
|
|
64440
|
+
reasoning: true,
|
|
64441
|
+
temperature: false,
|
|
64442
|
+
toolCall: true,
|
|
64443
|
+
modalities: {
|
|
64444
|
+
input: [
|
|
64445
|
+
"text",
|
|
64446
|
+
"image",
|
|
64447
|
+
"pdf"
|
|
64448
|
+
],
|
|
64449
|
+
output: [
|
|
64450
|
+
"text"
|
|
64451
|
+
]
|
|
64452
|
+
},
|
|
64453
|
+
limit: {
|
|
64454
|
+
context: 1e6,
|
|
64455
|
+
output: 128000
|
|
64456
|
+
}
|
|
64457
|
+
},
|
|
64458
|
+
"global.anthropic.claude-opus-5-5": {
|
|
64459
|
+
id: "global.anthropic.claude-opus-5-5",
|
|
64460
|
+
family: "claude-opus",
|
|
64461
|
+
reasoning: true,
|
|
64462
|
+
temperature: false,
|
|
64463
|
+
toolCall: true,
|
|
64464
|
+
modalities: {
|
|
64465
|
+
input: [
|
|
64466
|
+
"text",
|
|
64467
|
+
"image",
|
|
64468
|
+
"pdf"
|
|
64469
|
+
],
|
|
64470
|
+
output: [
|
|
64471
|
+
"text"
|
|
64472
|
+
]
|
|
64473
|
+
},
|
|
64474
|
+
limit: {
|
|
64475
|
+
context: 1e6,
|
|
64476
|
+
output: 128000
|
|
64477
|
+
}
|
|
64478
|
+
},
|
|
64479
|
+
"jp.anthropic.claude-opus-5-5": {
|
|
64480
|
+
id: "jp.anthropic.claude-opus-5-5",
|
|
64481
|
+
family: "claude-opus",
|
|
64482
|
+
reasoning: true,
|
|
64483
|
+
temperature: false,
|
|
64484
|
+
toolCall: true,
|
|
64485
|
+
modalities: {
|
|
64486
|
+
input: [
|
|
64487
|
+
"text",
|
|
64488
|
+
"image",
|
|
64489
|
+
"pdf"
|
|
64490
|
+
],
|
|
64491
|
+
output: [
|
|
64492
|
+
"text"
|
|
64493
|
+
]
|
|
64494
|
+
},
|
|
64495
|
+
limit: {
|
|
64496
|
+
context: 1e6,
|
|
64497
|
+
output: 128000
|
|
64498
|
+
}
|
|
64499
|
+
},
|
|
64500
|
+
"us.anthropic.claude-opus-5-5": {
|
|
64501
|
+
id: "us.anthropic.claude-opus-5-5",
|
|
64502
|
+
family: "claude-opus",
|
|
64503
|
+
reasoning: true,
|
|
64504
|
+
temperature: false,
|
|
64505
|
+
toolCall: true,
|
|
64506
|
+
modalities: {
|
|
64507
|
+
input: [
|
|
64508
|
+
"text",
|
|
64509
|
+
"image",
|
|
64510
|
+
"pdf"
|
|
64511
|
+
],
|
|
64512
|
+
output: [
|
|
64513
|
+
"text"
|
|
64514
|
+
]
|
|
64515
|
+
},
|
|
64516
|
+
limit: {
|
|
64517
|
+
context: 1e6,
|
|
64518
|
+
output: 128000
|
|
64519
|
+
}
|
|
64520
|
+
},
|
|
64521
|
+
"anthropic/claude-opus-5-5": {
|
|
64522
|
+
id: "anthropic/claude-opus-5-5",
|
|
64523
|
+
family: "claude-opus",
|
|
64524
|
+
reasoning: true,
|
|
64525
|
+
temperature: false,
|
|
64526
|
+
toolCall: true,
|
|
64527
|
+
modalities: {
|
|
64528
|
+
input: [
|
|
64529
|
+
"text",
|
|
64530
|
+
"image",
|
|
64531
|
+
"pdf"
|
|
64532
|
+
],
|
|
64533
|
+
output: [
|
|
64534
|
+
"text"
|
|
64535
|
+
]
|
|
64536
|
+
},
|
|
64537
|
+
limit: {
|
|
64538
|
+
context: 1e6,
|
|
64539
|
+
output: 128000
|
|
64540
|
+
}
|
|
64274
64541
|
}
|
|
64275
64542
|
}
|
|
64276
64543
|
};
|
|
@@ -73883,12 +74150,14 @@ var init_git_master = __esm(() => {
|
|
|
73883
74150
|
});
|
|
73884
74151
|
|
|
73885
74152
|
// packages/omo-config-core/src/schema/harness.ts
|
|
73886
|
-
var HARNESS_IDS, OMO_CONFIG_HARNESS_IDS, OmoHarnessIdSchema;
|
|
74153
|
+
var HARNESS_IDS, OMO_CONFIG_HARNESS_IDS, OmoHarnessIdSchema, OMO_CONFIG_LEGACY_HARNESS_ALIASES, OMO_CONFIG_LEGACY_HARNESS_IDS;
|
|
73887
74154
|
var init_harness = __esm(() => {
|
|
73888
74155
|
init_zod();
|
|
73889
74156
|
HARNESS_IDS = ["codex", "opencode", "omo"];
|
|
73890
|
-
OMO_CONFIG_HARNESS_IDS = ["opencode", "
|
|
74157
|
+
OMO_CONFIG_HARNESS_IDS = ["opencode", "native", "codex"];
|
|
73891
74158
|
OmoHarnessIdSchema = _enum(OMO_CONFIG_HARNESS_IDS);
|
|
74159
|
+
OMO_CONFIG_LEGACY_HARNESS_ALIASES = { senpi: "native" };
|
|
74160
|
+
OMO_CONFIG_LEGACY_HARNESS_IDS = Object.keys(OMO_CONFIG_LEGACY_HARNESS_ALIASES);
|
|
73892
74161
|
});
|
|
73893
74162
|
|
|
73894
74163
|
// packages/omo-config-core/src/schema/memory.ts
|
|
@@ -74391,6 +74660,7 @@ var init_config = __esm(() => {
|
|
|
74391
74660
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
74392
74661
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
74393
74662
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
74663
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
74394
74664
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
74395
74665
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
74396
74666
|
}).strict();
|
|
@@ -74409,6 +74679,7 @@ var init_config = __esm(() => {
|
|
|
74409
74679
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
74410
74680
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
74411
74681
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
74682
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
74412
74683
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
74413
74684
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
74414
74685
|
profiles: record(string2(), OmoConfigProfileSchema).default({}),
|
|
@@ -74430,6 +74701,7 @@ var init_config = __esm(() => {
|
|
|
74430
74701
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
74431
74702
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
74432
74703
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
74704
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
74433
74705
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
74434
74706
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
74435
74707
|
profiles: record(string2(), OmoConfigProfileSchema).optional(),
|
|
@@ -74500,6 +74772,60 @@ var init_legacy_category_names = __esm(() => {
|
|
|
74500
74772
|
LEGACY_CATEGORY_NAME_ALIASES = { deep: "deep-low" };
|
|
74501
74773
|
});
|
|
74502
74774
|
|
|
74775
|
+
// packages/omo-config-core/src/schema/legacy-harness-names.ts
|
|
74776
|
+
function canonicalHarnessName(name) {
|
|
74777
|
+
return Object.hasOwn(OMO_CONFIG_LEGACY_HARNESS_ALIASES, name) ? OMO_CONFIG_LEGACY_HARNESS_ALIASES[name] : name;
|
|
74778
|
+
}
|
|
74779
|
+
function harnessBlockKey(harness) {
|
|
74780
|
+
return `[${harness}]`;
|
|
74781
|
+
}
|
|
74782
|
+
function legacyHarnessOfBlockKey(key) {
|
|
74783
|
+
if (!key.startsWith("[") || !key.endsWith("]"))
|
|
74784
|
+
return;
|
|
74785
|
+
const harness = key.slice(1, -1);
|
|
74786
|
+
return Object.hasOwn(OMO_CONFIG_LEGACY_HARNESS_ALIASES, harness) ? harness : undefined;
|
|
74787
|
+
}
|
|
74788
|
+
function isRecord10(value) {
|
|
74789
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
74790
|
+
}
|
|
74791
|
+
function canonicalizeBlocksIn(container, path, renames) {
|
|
74792
|
+
const result = {};
|
|
74793
|
+
for (const [key, value] of Object.entries(container)) {
|
|
74794
|
+
const legacyHarness = legacyHarnessOfBlockKey(key);
|
|
74795
|
+
if (legacyHarness === undefined) {
|
|
74796
|
+
result[key] = value;
|
|
74797
|
+
continue;
|
|
74798
|
+
}
|
|
74799
|
+
const canonical = harnessBlockKey(canonicalHarnessName(legacyHarness));
|
|
74800
|
+
const dropped = Object.hasOwn(container, canonical);
|
|
74801
|
+
renames.push({ canonical, dropped, legacy: key, path: [...path, key].join(".") });
|
|
74802
|
+
if (!dropped)
|
|
74803
|
+
result[canonical] = value;
|
|
74804
|
+
}
|
|
74805
|
+
return result;
|
|
74806
|
+
}
|
|
74807
|
+
function canonicalizeLegacyHarnessBlocks(document) {
|
|
74808
|
+
if (!isRecord10(document))
|
|
74809
|
+
return { document: {}, renames: [] };
|
|
74810
|
+
const renames = [];
|
|
74811
|
+
const canonicalized = canonicalizeBlocksIn(document, [], renames);
|
|
74812
|
+
const profiles = canonicalized["profiles"];
|
|
74813
|
+
if (isRecord10(profiles)) {
|
|
74814
|
+
const canonicalProfiles = {};
|
|
74815
|
+
for (const [name, profile] of Object.entries(profiles)) {
|
|
74816
|
+
canonicalProfiles[name] = isRecord10(profile) ? canonicalizeBlocksIn(profile, ["profiles", name], renames) : profile;
|
|
74817
|
+
}
|
|
74818
|
+
canonicalized["profiles"] = canonicalProfiles;
|
|
74819
|
+
}
|
|
74820
|
+
return { document: canonicalized, renames };
|
|
74821
|
+
}
|
|
74822
|
+
function hasLegacyHarnessBlocks(document) {
|
|
74823
|
+
return canonicalizeLegacyHarnessBlocks(document).renames.length > 0;
|
|
74824
|
+
}
|
|
74825
|
+
var init_legacy_harness_names = __esm(() => {
|
|
74826
|
+
init_harness();
|
|
74827
|
+
});
|
|
74828
|
+
|
|
74503
74829
|
// packages/omo-config-core/src/schema/index.ts
|
|
74504
74830
|
var init_schema = __esm(() => {
|
|
74505
74831
|
init_agent();
|
|
@@ -74510,6 +74836,7 @@ var init_schema = __esm(() => {
|
|
|
74510
74836
|
init_git_master();
|
|
74511
74837
|
init_harness();
|
|
74512
74838
|
init_legacy_category_names();
|
|
74839
|
+
init_legacy_harness_names();
|
|
74513
74840
|
init_memory();
|
|
74514
74841
|
init_model_catalog();
|
|
74515
74842
|
init_model_profile();
|
|
@@ -74519,6 +74846,9 @@ var init_schema = __esm(() => {
|
|
|
74519
74846
|
init_telemetry();
|
|
74520
74847
|
});
|
|
74521
74848
|
|
|
74849
|
+
// packages/omo-config-core/src/loader/disabled-skills.ts
|
|
74850
|
+
var init_disabled_skills = () => {};
|
|
74851
|
+
|
|
74522
74852
|
// packages/omo-config-core/src/loader/merge.ts
|
|
74523
74853
|
function isUnsafeObjectKey2(key) {
|
|
74524
74854
|
return DANGEROUS_KEYS2.has(key);
|
|
@@ -74693,7 +75023,13 @@ function withoutControlKeys(config) {
|
|
|
74693
75023
|
function harnessLayer(config, harness) {
|
|
74694
75024
|
if (harness === undefined)
|
|
74695
75025
|
return {};
|
|
74696
|
-
|
|
75026
|
+
const canonical = canonicalHarnessName(harness);
|
|
75027
|
+
const legacyKeys = Object.entries(OMO_CONFIG_LEGACY_HARNESS_ALIASES).filter(([, target]) => target === canonical).map(([legacy]) => harnessBlockKey(legacy));
|
|
75028
|
+
let layer = {};
|
|
75029
|
+
for (const key of [...legacyKeys, harnessBlockKey(canonical)]) {
|
|
75030
|
+
layer = mergeOmoConfigRecords(layer, toRecord(config[key]) ?? {});
|
|
75031
|
+
}
|
|
75032
|
+
return layer;
|
|
74697
75033
|
}
|
|
74698
75034
|
function resolveOmoConfigView(options) {
|
|
74699
75035
|
const profiles = toRecord(options.config["profiles"]);
|
|
@@ -74723,7 +75059,7 @@ var HARNESS_KEYS;
|
|
|
74723
75059
|
var init_resolution = __esm(() => {
|
|
74724
75060
|
init_schema();
|
|
74725
75061
|
init_merge();
|
|
74726
|
-
HARNESS_KEYS = [...new Set([...HARNESS_IDS, ...OMO_CONFIG_HARNESS_IDS])].map((harness) =>
|
|
75062
|
+
HARNESS_KEYS = [...new Set([...HARNESS_IDS, ...OMO_CONFIG_HARNESS_IDS, ...OMO_CONFIG_LEGACY_HARNESS_IDS])].map((harness) => harnessBlockKey(harness));
|
|
74727
75063
|
});
|
|
74728
75064
|
|
|
74729
75065
|
// packages/omo-config-core/src/loader/loader.ts
|
|
@@ -74744,6 +75080,7 @@ function parseJsoncSafe2(content) {
|
|
|
74744
75080
|
function stripResolutionControlKeys(config) {
|
|
74745
75081
|
const {
|
|
74746
75082
|
"[codex]": _codex,
|
|
75083
|
+
"[native]": _native,
|
|
74747
75084
|
"[opencode]": _opencode,
|
|
74748
75085
|
"[senpi]": _senpi,
|
|
74749
75086
|
profiles: _profiles,
|
|
@@ -74769,21 +75106,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
74769
75106
|
function hasTamperedPrototype(value) {
|
|
74770
75107
|
if (Array.isArray(value))
|
|
74771
75108
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
74772
|
-
if (!
|
|
75109
|
+
if (!isRecord11(value))
|
|
74773
75110
|
return false;
|
|
74774
75111
|
const prototype = Object.getPrototypeOf(value);
|
|
74775
75112
|
if (prototype !== Object.prototype && prototype !== null)
|
|
74776
75113
|
return true;
|
|
74777
75114
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
74778
75115
|
}
|
|
74779
|
-
function
|
|
75116
|
+
function isRecord11(value) {
|
|
74780
75117
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
74781
75118
|
}
|
|
74782
75119
|
function containerAt(record, path) {
|
|
74783
75120
|
let container = record;
|
|
74784
75121
|
for (const segment of path) {
|
|
74785
75122
|
const next = container[segment];
|
|
74786
|
-
if (!
|
|
75123
|
+
if (!isRecord11(next))
|
|
74787
75124
|
return null;
|
|
74788
75125
|
container = next;
|
|
74789
75126
|
}
|
|
@@ -74894,6 +75231,15 @@ function legacyCategoryDiagnostic(path, renames) {
|
|
|
74894
75231
|
issuePaths: renames.map((rename) => rename.path)
|
|
74895
75232
|
};
|
|
74896
75233
|
}
|
|
75234
|
+
function legacyHarnessDiagnostic(path, renames) {
|
|
75235
|
+
const detail = renames.map((rename) => rename.dropped ? `${rename.path} ignored because ${rename.canonical} is also configured` : `${rename.path} renamed to ${rename.canonical}`).join(", ");
|
|
75236
|
+
return {
|
|
75237
|
+
kind: "deprecated-keys",
|
|
75238
|
+
message: `Deprecated harness block in ${path}: ${detail}. Rename it; the alias is removed in a future release.`,
|
|
75239
|
+
path,
|
|
75240
|
+
issuePaths: renames.map((rename) => rename.path)
|
|
75241
|
+
};
|
|
75242
|
+
}
|
|
74897
75243
|
function loadOmoConfig(options = {}) {
|
|
74898
75244
|
const fileSystem = options.fileSystem ?? DEFAULT_READ_FILE_SYSTEM;
|
|
74899
75245
|
const cwd = options.cwd ?? process.cwd();
|
|
@@ -74916,8 +75262,12 @@ function loadOmoConfig(options = {}) {
|
|
|
74916
75262
|
if (canonicalized.renames.length > 0) {
|
|
74917
75263
|
diagnostics.push(legacyCategoryDiagnostic(candidate.path, canonicalized.renames));
|
|
74918
75264
|
}
|
|
74919
|
-
|
|
74920
|
-
|
|
75265
|
+
const harnessCanonicalized = canonicalizeLegacyHarnessBlocks(canonicalized.document);
|
|
75266
|
+
if (harnessCanonicalized.renames.length > 0) {
|
|
75267
|
+
diagnostics.push(legacyHarnessDiagnostic(candidate.path, harnessCanonicalized.renames));
|
|
75268
|
+
}
|
|
75269
|
+
layers.push({ config: harnessCanonicalized.document, source: loaded.source });
|
|
75270
|
+
merged = mergeOmoConfigRecords(merged, harnessCanonicalized.document);
|
|
74921
75271
|
}
|
|
74922
75272
|
}
|
|
74923
75273
|
const requestedProfile = resolveOmoProfileName({
|
|
@@ -74965,6 +75315,7 @@ var init_loader2 = __esm(() => {
|
|
|
74965
75315
|
|
|
74966
75316
|
// packages/omo-config-core/src/loader/index.ts
|
|
74967
75317
|
var init_loader3 = __esm(() => {
|
|
75318
|
+
init_disabled_skills();
|
|
74968
75319
|
init_loader2();
|
|
74969
75320
|
init_merge();
|
|
74970
75321
|
init_paths();
|
|
@@ -77282,14 +77633,14 @@ function transformConfigJsoncSources(input) {
|
|
|
77282
77633
|
const omo = recordAt(legacy, "[omo]");
|
|
77283
77634
|
const senpi = recordAt(legacy, "[senpi]");
|
|
77284
77635
|
const history = legacyMigrationHistory(input.discovered, input.sources);
|
|
77285
|
-
const diagnostics = omo !== undefined && senpi !== undefined ? ["conflict: [
|
|
77636
|
+
const diagnostics = omo !== undefined && senpi !== undefined ? ["conflict: [native] legacy [omo] kept [native]"] : [];
|
|
77286
77637
|
return {
|
|
77287
77638
|
diagnostics,
|
|
77288
77639
|
document: {
|
|
77289
77640
|
$schema: OMO_SCHEMA_URL,
|
|
77290
77641
|
...recordAt(legacy, "[opencode]") === undefined ? {} : { "[opencode]": recordAt(legacy, "[opencode]") },
|
|
77291
77642
|
...recordAt(legacy, "[codex]") === undefined ? {} : { "[codex]": recordAt(legacy, "[codex]") },
|
|
77292
|
-
...senpi === undefined && omo === undefined ? {} : { "[
|
|
77643
|
+
...senpi === undefined && omo === undefined ? {} : { "[native]": senpi ?? omo },
|
|
77293
77644
|
...Object.keys(history).length === 0 ? {} : { legacy_migrations: history }
|
|
77294
77645
|
}
|
|
77295
77646
|
};
|
|
@@ -77553,7 +77904,7 @@ function normalizeTypedBlock(value, path, diagnostics, recurseProfiles) {
|
|
|
77553
77904
|
}
|
|
77554
77905
|
if (result["models"] !== undefined)
|
|
77555
77906
|
result["models"] = normalizeCatalog(result["models"]);
|
|
77556
|
-
for (const harness of ["[senpi]", "[codex]"]) {
|
|
77907
|
+
for (const harness of ["[senpi]", "[native]", "[codex]"]) {
|
|
77557
77908
|
if (result[harness] !== undefined)
|
|
77558
77909
|
result[harness] = normalizeTypedBlock(result[harness], [...path, harness], diagnostics, false);
|
|
77559
77910
|
}
|
|
@@ -77607,6 +77958,76 @@ var init_category_deep_split = __esm(() => {
|
|
|
77607
77958
|
init_src4();
|
|
77608
77959
|
});
|
|
77609
77960
|
|
|
77961
|
+
// packages/omo-opencode/src/config-migration/harness-native-rename.ts
|
|
77962
|
+
function transformHarnessNativeRename(document) {
|
|
77963
|
+
const { document: canonicalized, renames } = canonicalizeLegacyHarnessBlocks(document);
|
|
77964
|
+
return {
|
|
77965
|
+
diagnostics: renames.map((rename) => rename.dropped ? `${rename.path} removed: ${rename.canonical} is already configured` : `${rename.path} renamed to ${rename.canonical}`),
|
|
77966
|
+
document: canonicalized
|
|
77967
|
+
};
|
|
77968
|
+
}
|
|
77969
|
+
var HARNESS_NATIVE_RENAME_MIGRATION_ID = "2026-09-harness-native-rename";
|
|
77970
|
+
var init_harness_native_rename = __esm(() => {
|
|
77971
|
+
init_src4();
|
|
77972
|
+
});
|
|
77973
|
+
|
|
77974
|
+
// packages/omo-opencode/src/config-migration/subscription-provider-rename.ts
|
|
77975
|
+
function renameProviderId(providerId) {
|
|
77976
|
+
return LEGACY_PROVIDER_IDS[providerId];
|
|
77977
|
+
}
|
|
77978
|
+
function renameModelReference(modelReference) {
|
|
77979
|
+
const providerSeparator = modelReference.indexOf("/");
|
|
77980
|
+
if (providerSeparator <= 0)
|
|
77981
|
+
return;
|
|
77982
|
+
const canonicalProvider = renameProviderId(modelReference.slice(0, providerSeparator));
|
|
77983
|
+
if (canonicalProvider === undefined)
|
|
77984
|
+
return;
|
|
77985
|
+
const modelPartVerbatim = modelReference.slice(providerSeparator);
|
|
77986
|
+
return `${canonicalProvider}${modelPartVerbatim}`;
|
|
77987
|
+
}
|
|
77988
|
+
function rewriteValue(value, path, rewrites) {
|
|
77989
|
+
if (typeof value === "string") {
|
|
77990
|
+
const renamed = renameModelReference(value) ?? renameProviderId(value);
|
|
77991
|
+
if (renamed === undefined)
|
|
77992
|
+
return value;
|
|
77993
|
+
rewrites.push({ from: value, path, to: renamed });
|
|
77994
|
+
return renamed;
|
|
77995
|
+
}
|
|
77996
|
+
if (Array.isArray(value))
|
|
77997
|
+
return value.map((entry, index) => rewriteValue(entry, `${path}[${index}]`, rewrites));
|
|
77998
|
+
if (value !== null && typeof value === "object") {
|
|
77999
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => {
|
|
78000
|
+
const canonicalKey = renameModelReference(key) ?? renameProviderId(key);
|
|
78001
|
+
const nextKey = canonicalKey ?? key;
|
|
78002
|
+
if (canonicalKey !== undefined)
|
|
78003
|
+
rewrites.push({ from: key, path: `${path}.${key}`, to: canonicalKey });
|
|
78004
|
+
return [nextKey, rewriteValue(entry, `${path}.${nextKey}`, rewrites)];
|
|
78005
|
+
}));
|
|
78006
|
+
}
|
|
78007
|
+
return value;
|
|
78008
|
+
}
|
|
78009
|
+
function hasLegacySubscriptionProviderIds(document) {
|
|
78010
|
+
const rewrites = [];
|
|
78011
|
+
rewriteValue(document, "$", rewrites);
|
|
78012
|
+
return rewrites.length > 0;
|
|
78013
|
+
}
|
|
78014
|
+
function transformSubscriptionProviderRename(document) {
|
|
78015
|
+
const rewrites = [];
|
|
78016
|
+
const rewritten = rewriteValue(document, "$", rewrites);
|
|
78017
|
+
const next = rewritten !== null && typeof rewritten === "object" && !Array.isArray(rewritten) ? rewritten : {};
|
|
78018
|
+
return {
|
|
78019
|
+
diagnostics: rewrites.map((rewrite) => `${rewrite.path}: ${rewrite.from} renamed to ${rewrite.to}`),
|
|
78020
|
+
document: next
|
|
78021
|
+
};
|
|
78022
|
+
}
|
|
78023
|
+
var SUBSCRIPTION_PROVIDER_RENAME_MIGRATION_ID = "2026-09-subscription-provider-rename", LEGACY_PROVIDER_IDS;
|
|
78024
|
+
var init_subscription_provider_rename = __esm(() => {
|
|
78025
|
+
LEGACY_PROVIDER_IDS = Object.freeze({
|
|
78026
|
+
"claude-sdk-oauth": "anthropic-subscription",
|
|
78027
|
+
"openai-codex": "chatgpt-subscription"
|
|
78028
|
+
});
|
|
78029
|
+
});
|
|
78030
|
+
|
|
77610
78031
|
// packages/omo-opencode/src/config-migration/migration-plans.ts
|
|
77611
78032
|
function backupTimestamp(value) {
|
|
77612
78033
|
return value ?? new Date().toISOString().replace(/[:.]/g, "-");
|
|
@@ -77685,6 +78106,30 @@ function categoryDeepSplitPlan(targetPath) {
|
|
|
77685
78106
|
transform: inspect
|
|
77686
78107
|
};
|
|
77687
78108
|
}
|
|
78109
|
+
function harnessNativeRenamePlan(targetPath) {
|
|
78110
|
+
const inspect = (sources) => transformHarnessNativeRename(sources[0]?.value);
|
|
78111
|
+
return {
|
|
78112
|
+
id: HARNESS_NATIVE_RENAME_MIGRATION_ID,
|
|
78113
|
+
inspect,
|
|
78114
|
+
mode: "replace-target",
|
|
78115
|
+
shouldRun: hasLegacyHarnessBlocks,
|
|
78116
|
+
sources: [],
|
|
78117
|
+
targetPath,
|
|
78118
|
+
transform: inspect
|
|
78119
|
+
};
|
|
78120
|
+
}
|
|
78121
|
+
function subscriptionProviderRenamePlan(targetPath) {
|
|
78122
|
+
const inspect = (sources) => transformSubscriptionProviderRename(sources[0]?.value);
|
|
78123
|
+
return {
|
|
78124
|
+
id: SUBSCRIPTION_PROVIDER_RENAME_MIGRATION_ID,
|
|
78125
|
+
inspect,
|
|
78126
|
+
mode: "replace-target",
|
|
78127
|
+
shouldRun: hasLegacySubscriptionProviderIds,
|
|
78128
|
+
sources: [],
|
|
78129
|
+
targetPath,
|
|
78130
|
+
transform: inspect
|
|
78131
|
+
};
|
|
78132
|
+
}
|
|
77688
78133
|
function existingOmoConfigPath(directory, options) {
|
|
77689
78134
|
const fileSystem = discoveryFileSystem(options);
|
|
77690
78135
|
for (const fileName of ["omo.jsonc", "omo.json"]) {
|
|
@@ -77748,7 +78193,9 @@ function createLegacyConfigMigrationPlans(options) {
|
|
|
77748
78193
|
return [
|
|
77749
78194
|
...legacyPlans,
|
|
77750
78195
|
...inPlaceTargets.map(reasoningPlan),
|
|
77751
|
-
...inPlaceTargets.map(categoryDeepSplitPlan)
|
|
78196
|
+
...inPlaceTargets.map(categoryDeepSplitPlan),
|
|
78197
|
+
...inPlaceTargets.map(harnessNativeRenamePlan),
|
|
78198
|
+
...inPlaceTargets.map(subscriptionProviderRenamePlan)
|
|
77752
78199
|
];
|
|
77753
78200
|
}
|
|
77754
78201
|
var init_migration_plans = __esm(() => {
|
|
@@ -77759,6 +78206,8 @@ var init_migration_plans = __esm(() => {
|
|
|
77759
78206
|
init_transform_opencode();
|
|
77760
78207
|
init_reasoning_unification();
|
|
77761
78208
|
init_category_deep_split();
|
|
78209
|
+
init_harness_native_rename();
|
|
78210
|
+
init_subscription_provider_rename();
|
|
77762
78211
|
init_src4();
|
|
77763
78212
|
});
|
|
77764
78213
|
|
|
@@ -78543,7 +78992,7 @@ function shouldRetainLine(line, cutoffMs) {
|
|
|
78543
78992
|
function parseDiagnosticLine(line) {
|
|
78544
78993
|
try {
|
|
78545
78994
|
const parsed = JSON.parse(line);
|
|
78546
|
-
if (!
|
|
78995
|
+
if (!isRecord13(parsed)) {
|
|
78547
78996
|
return null;
|
|
78548
78997
|
}
|
|
78549
78998
|
return parsed;
|
|
@@ -78554,7 +79003,7 @@ function parseDiagnosticLine(line) {
|
|
|
78554
79003
|
throw error;
|
|
78555
79004
|
}
|
|
78556
79005
|
}
|
|
78557
|
-
function
|
|
79006
|
+
function isRecord13(value) {
|
|
78558
79007
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
78559
79008
|
}
|
|
78560
79009
|
function trimToMaxBytes(lines) {
|
|
@@ -86044,7 +86493,7 @@ function coerceBool(value) {
|
|
|
86044
86493
|
function coerceString(value) {
|
|
86045
86494
|
return typeof value == "string" ? value : undefined;
|
|
86046
86495
|
}
|
|
86047
|
-
function
|
|
86496
|
+
function isRecord14(value) {
|
|
86048
86497
|
return typeof value == "object" && value !== null && !Array.isArray(value);
|
|
86049
86498
|
}
|
|
86050
86499
|
function toRfc3339(timestamp) {
|
|
@@ -86066,7 +86515,7 @@ function relocateInto(properties, key, value) {
|
|
|
86066
86515
|
properties[key] = value;
|
|
86067
86516
|
}
|
|
86068
86517
|
function buildV1Event(message) {
|
|
86069
|
-
const sourceProperties =
|
|
86518
|
+
const sourceProperties = isRecord14(message.properties) ? message.properties : {};
|
|
86070
86519
|
const properties = {
|
|
86071
86520
|
...sourceProperties
|
|
86072
86521
|
};
|
|
@@ -88211,7 +88660,7 @@ var package_default2;
|
|
|
88211
88660
|
var init_package2 = __esm(() => {
|
|
88212
88661
|
package_default2 = {
|
|
88213
88662
|
name: "@oh-my-opencode/omo-codex",
|
|
88214
|
-
version: "5.0.0-beta.
|
|
88663
|
+
version: "5.0.0-beta.84",
|
|
88215
88664
|
type: "module",
|
|
88216
88665
|
private: true,
|
|
88217
88666
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -91386,8 +91835,11 @@ function formatConfigSummary(config) {
|
|
|
91386
91835
|
if (config.hasCodex) {
|
|
91387
91836
|
lines.push(` ${SYMBOLS.info} Codex autonomous mode: ${config.codexAutonomous ? "enabled" : "disabled"}`);
|
|
91388
91837
|
}
|
|
91389
|
-
if (config.
|
|
91390
|
-
lines.push(` ${SYMBOLS.info}
|
|
91838
|
+
if (config.hasNative) {
|
|
91839
|
+
lines.push(` ${SYMBOLS.info} OmO Native: installing from omo-ai@beta`);
|
|
91840
|
+
}
|
|
91841
|
+
if (config.hasNativeDev) {
|
|
91842
|
+
lines.push(` ${SYMBOLS.info} OmO Native development adapter: enabled`);
|
|
91391
91843
|
}
|
|
91392
91844
|
if (!config.hasOpenCode)
|
|
91393
91845
|
return lines.join(`
|
|
@@ -91544,7 +91996,8 @@ function argsToConfig(args) {
|
|
|
91544
91996
|
const platform = resolvePlatform(args);
|
|
91545
91997
|
const hasOpenCode = platform === "opencode" || platform === "both";
|
|
91546
91998
|
const hasCodex = platform === "codex" || platform === "both";
|
|
91547
|
-
const
|
|
91999
|
+
const hasNative = platform === "native";
|
|
92000
|
+
const hasNativeDev = platform === "native-dev";
|
|
91548
92001
|
return {
|
|
91549
92002
|
platform,
|
|
91550
92003
|
hasOpenCode,
|
|
@@ -91554,7 +92007,8 @@ function argsToConfig(args) {
|
|
|
91554
92007
|
hasGemini: hasOpenCode && args.gemini === "yes",
|
|
91555
92008
|
hasCopilot: hasOpenCode && args.copilot === "yes",
|
|
91556
92009
|
hasCodex,
|
|
91557
|
-
|
|
92010
|
+
hasNative,
|
|
92011
|
+
hasNativeDev,
|
|
91558
92012
|
hasOpencodeZen: hasOpenCode && args.opencodeZen === "yes",
|
|
91559
92013
|
hasZaiCodingPlan: hasOpenCode && args.zaiCodingPlan === "yes",
|
|
91560
92014
|
hasKimiForCoding: hasOpenCode && args.kimiForCoding === "yes",
|
|
@@ -94278,10 +94732,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
|
|
|
94278
94732
|
} catch {
|
|
94279
94733
|
return null;
|
|
94280
94734
|
}
|
|
94281
|
-
if (!
|
|
94735
|
+
if (!isRecord12(cache) || !Array.isArray(cache.models))
|
|
94282
94736
|
return null;
|
|
94283
94737
|
for (const entry of cache.models) {
|
|
94284
|
-
if (!
|
|
94738
|
+
if (!isRecord12(entry))
|
|
94285
94739
|
continue;
|
|
94286
94740
|
if (entry.slug !== model && entry.id !== model)
|
|
94287
94741
|
continue;
|
|
@@ -94306,7 +94760,7 @@ function readRootModelCatalogPath(config) {
|
|
|
94306
94760
|
const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
|
|
94307
94761
|
return single?.[1] ?? null;
|
|
94308
94762
|
}
|
|
94309
|
-
function
|
|
94763
|
+
function isRecord12(value) {
|
|
94310
94764
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
94311
94765
|
}
|
|
94312
94766
|
function removeFeatureFlagSetting(config, featureName) {
|
|
@@ -97115,7 +97569,7 @@ async function readSettings(settingsPath) {
|
|
|
97115
97569
|
throw error;
|
|
97116
97570
|
}
|
|
97117
97571
|
const parsed = JSON.parse(raw);
|
|
97118
|
-
if (!
|
|
97572
|
+
if (!isRecord15(parsed))
|
|
97119
97573
|
throw new Error(`${settingsPath} must contain a JSON object`);
|
|
97120
97574
|
return parsed;
|
|
97121
97575
|
}
|
|
@@ -97176,7 +97630,7 @@ async function nextBackupPath(settingsPath) {
|
|
|
97176
97630
|
function timestampForBackup() {
|
|
97177
97631
|
return new Date().toISOString().replace(/[-:.]/g, "");
|
|
97178
97632
|
}
|
|
97179
|
-
function
|
|
97633
|
+
function isRecord15(value) {
|
|
97180
97634
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
97181
97635
|
}
|
|
97182
97636
|
async function readPackageName(packagePath) {
|
|
@@ -97196,7 +97650,7 @@ async function readPackageName(packagePath) {
|
|
|
97196
97650
|
return;
|
|
97197
97651
|
throw error;
|
|
97198
97652
|
}
|
|
97199
|
-
return
|
|
97653
|
+
return isRecord15(parsed) && typeof parsed.name === "string" ? parsed.name : undefined;
|
|
97200
97654
|
}
|
|
97201
97655
|
async function fileExists(path) {
|
|
97202
97656
|
try {
|
|
@@ -97220,6 +97674,7 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
|
|
|
97220
97674
|
join61("extensions", "memory-run-supervisor.mjs"),
|
|
97221
97675
|
...PERSONA_ASSET_FILES.map((filename) => join61("extensions", filename)),
|
|
97222
97676
|
join61("skills", "ast-grep", "SKILL.md"),
|
|
97677
|
+
join61("skills", "browser", "SKILL.md"),
|
|
97223
97678
|
join61("skills", "coding-agent-sessions", "SKILL.md"),
|
|
97224
97679
|
join61("skills", "debugging", "SKILL.md"),
|
|
97225
97680
|
join61("skills", "frontend", "SKILL.md"),
|
|
@@ -97311,7 +97766,7 @@ async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
|
|
|
97311
97766
|
}
|
|
97312
97767
|
}
|
|
97313
97768
|
function isAstGrepRuntimeManifest(value) {
|
|
97314
|
-
if (!
|
|
97769
|
+
if (!isRecord15(value))
|
|
97315
97770
|
return false;
|
|
97316
97771
|
return typeof value.sha256 === "string" && /^[a-f0-9]{64}$/.test(value.sha256) && typeof value.mode === "number" && Number.isInteger(value.mode) && typeof value.stagedAtUtc === "string" && !Number.isNaN(Date.parse(value.stagedAtUtc));
|
|
97317
97772
|
}
|
|
@@ -97401,23 +97856,88 @@ function findRepoRoot2(importerDir) {
|
|
|
97401
97856
|
function fileExistsSync(path) {
|
|
97402
97857
|
return existsSync30(path);
|
|
97403
97858
|
}
|
|
97404
|
-
// packages/omo-opencode/src/cli/
|
|
97405
|
-
|
|
97406
|
-
|
|
97407
|
-
|
|
97859
|
+
// packages/omo-opencode/src/cli/install-native-dev/index.ts
|
|
97860
|
+
async function runNativeDevInstaller(options) {
|
|
97861
|
+
return runSenpiInstaller(options);
|
|
97862
|
+
}
|
|
97863
|
+
|
|
97864
|
+
// packages/omo-opencode/src/cli/install-native/plan.ts
|
|
97865
|
+
var NATIVE_PACKAGE_SPEC = "omo-ai@beta";
|
|
97866
|
+
var NATIVE_SETUP_COMMAND = "omo setup";
|
|
97867
|
+
var NATIVE_RECOMMENDED_RUNTIME_NOTE = "bun is the recommended runtime for OmO Native; npm works, but bun is what the beta channel is tested on.";
|
|
97868
|
+
var PLANS = {
|
|
97869
|
+
bun: { packageManager: "bun", command: "bun", args: ["add", "-g", NATIVE_PACKAGE_SPEC] },
|
|
97870
|
+
npm: { packageManager: "npm", command: "npm", args: ["i", "-g", NATIVE_PACKAGE_SPEC] }
|
|
97871
|
+
};
|
|
97872
|
+
function resolveNativeInstallPlan(bunAvailable) {
|
|
97873
|
+
return bunAvailable ? PLANS.bun : PLANS.npm;
|
|
97874
|
+
}
|
|
97875
|
+
function formatNativeInstallCommand(plan) {
|
|
97876
|
+
return [plan.command, ...plan.args].join(" ");
|
|
97877
|
+
}
|
|
97878
|
+
// packages/omo-opencode/src/cli/install-native/run-native-install.ts
|
|
97879
|
+
init_bun_which_shim();
|
|
97880
|
+
init_spawn_with_windows_hide();
|
|
97881
|
+
function describeExit(plan, result) {
|
|
97882
|
+
const stderr = result.stderr?.trim();
|
|
97883
|
+
const head = `${plan.packageManager} exited with code ${result.exitCode}`;
|
|
97884
|
+
return stderr ? `${head}: ${stderr.split(`
|
|
97885
|
+
`).slice(-3).join(" ")}` : head;
|
|
97886
|
+
}
|
|
97887
|
+
async function runNativeInstall(dependencies = defaultNativeInstallDependencies()) {
|
|
97888
|
+
const plan = resolveNativeInstallPlan(await dependencies.isBunAvailable());
|
|
97889
|
+
const notes = plan.packageManager === "npm" ? [NATIVE_RECOMMENDED_RUNTIME_NOTE] : [];
|
|
97890
|
+
const manualCommand = formatNativeInstallCommand(plan);
|
|
97891
|
+
try {
|
|
97892
|
+
const result = await dependencies.spawn(plan.command, plan.args);
|
|
97893
|
+
if (result.exitCode === 0)
|
|
97894
|
+
return { ok: true, plan, notes };
|
|
97895
|
+
return { ok: false, plan, notes, failure: { reason: describeExit(plan, result), manualCommand } };
|
|
97896
|
+
} catch (error) {
|
|
97897
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
97898
|
+
return { ok: false, plan, notes, failure: { reason, manualCommand } };
|
|
97899
|
+
}
|
|
97900
|
+
}
|
|
97901
|
+
function nativeInstallSuccessLine() {
|
|
97902
|
+
return `OmO Native installed. Run ${NATIVE_SETUP_COMMAND} to finish onboarding.`;
|
|
97903
|
+
}
|
|
97904
|
+
function nativeInstallFailureLines(failure) {
|
|
97905
|
+
return [
|
|
97906
|
+
`OmO Native install failed: ${failure.reason}`,
|
|
97907
|
+
`Install it yourself with: ${failure.manualCommand}`,
|
|
97908
|
+
`Then run ${NATIVE_SETUP_COMMAND}.`
|
|
97909
|
+
];
|
|
97910
|
+
}
|
|
97911
|
+
function defaultNativeInstallDependencies() {
|
|
97912
|
+
return {
|
|
97913
|
+
isBunAvailable: () => bunWhich("bun") !== null,
|
|
97914
|
+
spawn: async (command, args) => {
|
|
97915
|
+
const proc = spawnWithWindowsHide([command, ...args], {
|
|
97916
|
+
env: process.env,
|
|
97917
|
+
stdout: "inherit",
|
|
97918
|
+
stderr: "inherit"
|
|
97919
|
+
});
|
|
97920
|
+
return { exitCode: await proc.exited };
|
|
97921
|
+
}
|
|
97922
|
+
};
|
|
97923
|
+
}
|
|
97924
|
+
// packages/omo-opencode/src/cli/native-edition-hint.ts
|
|
97925
|
+
var NATIVE_EDITION_INSTALL_COMMAND = "bun add -g omo-ai@beta";
|
|
97926
|
+
var NATIVE_EDITION_GUIDE_URL = "https://github.com/code-yeongyu/oh-my-openagent/blob/dev/docs/guide/installation.md#omo-native-beta-omo-via-omo-ai";
|
|
97927
|
+
var NATIVE_EDITION_HINT_TITLE = "OmO Native (beta)";
|
|
97408
97928
|
var PLAIN_PAINT = {
|
|
97409
97929
|
command: (text) => text,
|
|
97410
97930
|
link: (text) => text
|
|
97411
97931
|
};
|
|
97412
|
-
function
|
|
97413
|
-
return !config.
|
|
97932
|
+
function shouldShowNativeEditionHint(config) {
|
|
97933
|
+
return !config.hasNative && !config.hasNativeDev;
|
|
97414
97934
|
}
|
|
97415
|
-
function
|
|
97935
|
+
function nativeEditionHintLines(paint = PLAIN_PAINT) {
|
|
97416
97936
|
return [
|
|
97417
|
-
`omo also ships as
|
|
97418
|
-
`Try it next to this install: ${paint.command(
|
|
97937
|
+
`omo also ships as OmO Native: the same omo as one ${paint.command("omo")} command, with no OpenCode host required.`,
|
|
97938
|
+
`Try it next to this install: ${paint.command(NATIVE_EDITION_INSTALL_COMMAND)}, then run ${paint.command("omo")}.`,
|
|
97419
97939
|
"This install keeps working as-is.",
|
|
97420
|
-
`Guide: ${paint.link(
|
|
97940
|
+
`Guide: ${paint.link(NATIVE_EDITION_GUIDE_URL)}`
|
|
97421
97941
|
];
|
|
97422
97942
|
}
|
|
97423
97943
|
|
|
@@ -97432,7 +97952,8 @@ var PLATFORM_REPOSITORIES = {
|
|
|
97432
97952
|
opencode: ["code-yeongyu/oh-my-openagent"],
|
|
97433
97953
|
codex: STAR_REPOSITORIES,
|
|
97434
97954
|
both: STAR_REPOSITORIES,
|
|
97435
|
-
|
|
97955
|
+
native: STAR_REPOSITORIES,
|
|
97956
|
+
"native-dev": STAR_REPOSITORIES
|
|
97436
97957
|
};
|
|
97437
97958
|
var execFileAsync2 = promisify3(execFile4);
|
|
97438
97959
|
async function runGitHubStarCommand(repository) {
|
|
@@ -97934,14 +98455,27 @@ async function runCliInstaller(args, version) {
|
|
|
97934
98455
|
}
|
|
97935
98456
|
console.log();
|
|
97936
98457
|
}
|
|
97937
|
-
if (config.
|
|
97938
|
-
printInfo("Installing
|
|
98458
|
+
if (config.hasNative) {
|
|
98459
|
+
printInfo("Installing OmO Native...");
|
|
98460
|
+
const outcome = await runNativeInstall();
|
|
98461
|
+
if (outcome.failure) {
|
|
98462
|
+
for (const line of nativeInstallFailureLines(outcome.failure))
|
|
98463
|
+
printError(line);
|
|
98464
|
+
return 1;
|
|
98465
|
+
}
|
|
98466
|
+
for (const note of outcome.notes)
|
|
98467
|
+
printInfo(note);
|
|
98468
|
+
printSuccess(nativeInstallSuccessLine());
|
|
98469
|
+
console.log();
|
|
98470
|
+
}
|
|
98471
|
+
if (config.hasNativeDev) {
|
|
98472
|
+
printInfo("Installing the OmO Native development adapter...");
|
|
97939
98473
|
try {
|
|
97940
|
-
const
|
|
97941
|
-
printSuccess(`
|
|
98474
|
+
const nativeDevResult = await runNativeDevInstaller();
|
|
98475
|
+
printSuccess(`OmO Native development adapter installed ${SYMBOLS.arrow} ${import_picocolors3.default.dim(nativeDevResult.settingsPath)}`);
|
|
97942
98476
|
} catch (error) {
|
|
97943
98477
|
const message = error instanceof Error ? error.message : String(error);
|
|
97944
|
-
printError(`
|
|
98478
|
+
printError(`OmO Native development adapter install failed: ${message}`);
|
|
97945
98479
|
return 1;
|
|
97946
98480
|
}
|
|
97947
98481
|
console.log();
|
|
@@ -97952,9 +98486,9 @@ async function runCliInstaller(args, version) {
|
|
|
97952
98486
|
printBox(`${import_picocolors3.default.bold("Pro Tip:")} Include ${import_picocolors3.default.cyan("ultrawork")} (or ${import_picocolors3.default.cyan("ulw")}) in your prompt.
|
|
97953
98487
|
` + `All features work like magic-parallel agents, background tasks,
|
|
97954
98488
|
` + `deep exploration, and relentless execution until completion.`, "The Magic Word");
|
|
97955
|
-
if (
|
|
97956
|
-
printInfo(import_picocolors3.default.bold(
|
|
97957
|
-
for (const line of
|
|
98489
|
+
if (shouldShowNativeEditionHint(config)) {
|
|
98490
|
+
printInfo(import_picocolors3.default.bold(NATIVE_EDITION_HINT_TITLE));
|
|
98491
|
+
for (const line of nativeEditionHintLines({ command: import_picocolors3.default.cyan, link: import_picocolors3.default.underline })) {
|
|
97958
98492
|
console.log(` ${line}`);
|
|
97959
98493
|
}
|
|
97960
98494
|
console.log();
|
|
@@ -99094,16 +99628,20 @@ var import_picocolors4 = __toESM(require_picocolors(), 1);
|
|
|
99094
99628
|
// packages/omo-opencode/src/cli/tui-install-prompts.ts
|
|
99095
99629
|
init_model_fallback();
|
|
99096
99630
|
|
|
99097
|
-
// packages/omo-opencode/src/cli/
|
|
99098
|
-
var
|
|
99099
|
-
|
|
99100
|
-
|
|
99101
|
-
|
|
99631
|
+
// packages/omo-opencode/src/cli/native-dev-platform-flag.ts
|
|
99632
|
+
var NATIVE_DEV_PLATFORM_ENV_FLAG = "OMO_ENABLE_NATIVE_DEV_PLATFORM";
|
|
99633
|
+
var LEGACY_NATIVE_DEV_PLATFORM_ENV_FLAG = "OMO_ENABLE_SENPI_PLATFORM";
|
|
99634
|
+
function isTruthy(value) {
|
|
99635
|
+
const normalized = value?.trim().toLowerCase();
|
|
99636
|
+
return normalized === "1" || normalized === "true";
|
|
99637
|
+
}
|
|
99638
|
+
function isNativeDevPlatformEnabled(env = process.env) {
|
|
99639
|
+
return isTruthy(env[NATIVE_DEV_PLATFORM_ENV_FLAG]) || isTruthy(env[LEGACY_NATIVE_DEV_PLATFORM_ENV_FLAG]);
|
|
99102
99640
|
}
|
|
99103
99641
|
function availableInstallPlatforms(env = process.env) {
|
|
99104
|
-
const platforms = ["opencode", "codex", "both"];
|
|
99105
|
-
if (
|
|
99106
|
-
platforms.push("
|
|
99642
|
+
const platforms = ["opencode", "codex", "both", "native"];
|
|
99643
|
+
if (isNativeDevPlatformEnabled(env))
|
|
99644
|
+
platforms.push("native-dev");
|
|
99107
99645
|
return platforms;
|
|
99108
99646
|
}
|
|
99109
99647
|
|
|
@@ -99126,10 +99664,15 @@ async function promptInstallPlatform(initialValue = "opencode") {
|
|
|
99126
99664
|
const options = [
|
|
99127
99665
|
{ value: "opencode", label: "OpenCode", hint: "Install OpenCode plugin only" },
|
|
99128
99666
|
{ value: "codex", label: "Codex", hint: "Install Codex harness adapter only" },
|
|
99129
|
-
{ value: "both", label: "Both", hint: "Install OpenCode plugin and Codex adapter" }
|
|
99667
|
+
{ value: "both", label: "Both", hint: "Install OpenCode plugin and Codex adapter" },
|
|
99668
|
+
{ value: "native", label: "OmO Native", hint: "Install the standalone omo command (no host required)" }
|
|
99130
99669
|
];
|
|
99131
|
-
if (
|
|
99132
|
-
options.push({
|
|
99670
|
+
if (isNativeDevPlatformEnabled()) {
|
|
99671
|
+
options.push({
|
|
99672
|
+
value: "native-dev",
|
|
99673
|
+
label: "OmO Native (development adapter)",
|
|
99674
|
+
hint: "Register this checkout into a local engine install"
|
|
99675
|
+
});
|
|
99133
99676
|
}
|
|
99134
99677
|
return selectOrCancel({
|
|
99135
99678
|
message: "Which platform do you want to install?",
|
|
@@ -99140,7 +99683,8 @@ async function promptInstallPlatform(initialValue = "opencode") {
|
|
|
99140
99683
|
async function promptInstallConfig(detected, platform, codexAutonomousOverride) {
|
|
99141
99684
|
const hasOpenCode = platform === "opencode" || platform === "both";
|
|
99142
99685
|
const hasCodex = platform === "codex" || platform === "both";
|
|
99143
|
-
const
|
|
99686
|
+
const hasNative = platform === "native";
|
|
99687
|
+
const hasNativeDev = platform === "native-dev";
|
|
99144
99688
|
const codexAutonomous = await resolveCodexAutonomous(hasCodex, codexAutonomousOverride);
|
|
99145
99689
|
if (codexAutonomous === null)
|
|
99146
99690
|
return null;
|
|
@@ -99154,7 +99698,8 @@ async function promptInstallConfig(detected, platform, codexAutonomousOverride)
|
|
|
99154
99698
|
hasGemini: false,
|
|
99155
99699
|
hasCopilot: false,
|
|
99156
99700
|
hasCodex,
|
|
99157
|
-
|
|
99701
|
+
hasNative,
|
|
99702
|
+
hasNativeDev,
|
|
99158
99703
|
hasOpencodeZen: false,
|
|
99159
99704
|
hasZaiCodingPlan: false,
|
|
99160
99705
|
hasKimiForCoding: false,
|
|
@@ -99297,7 +99842,8 @@ async function promptInstallConfig(detected, platform, codexAutonomousOverride)
|
|
|
99297
99842
|
hasGemini: gemini === "yes",
|
|
99298
99843
|
hasCopilot: copilot === "yes",
|
|
99299
99844
|
hasCodex,
|
|
99300
|
-
|
|
99845
|
+
hasNative,
|
|
99846
|
+
hasNativeDev,
|
|
99301
99847
|
hasOpencodeZen: opencodeZen === "yes",
|
|
99302
99848
|
hasZaiCodingPlan: zaiCodingPlan === "yes",
|
|
99303
99849
|
hasKimiForCoding: kimiForCoding === "yes",
|
|
@@ -99428,15 +99974,29 @@ async function runTuiInstaller(args, version) {
|
|
|
99428
99974
|
log4.info("The Codex harness is NOT installed. Fix the error above, then re-run: bunx oh-my-openagent install --platform=codex");
|
|
99429
99975
|
}
|
|
99430
99976
|
}
|
|
99431
|
-
if (config.
|
|
99432
|
-
spinner2.start("Installing
|
|
99977
|
+
if (config.hasNative) {
|
|
99978
|
+
spinner2.start("Installing OmO Native");
|
|
99979
|
+
const outcome = await runNativeInstall();
|
|
99980
|
+
if (outcome.failure) {
|
|
99981
|
+
spinner2.stop(`OmO Native install failed ${import_picocolors4.default.yellow("[!]")}`);
|
|
99982
|
+
for (const line of nativeInstallFailureLines(outcome.failure))
|
|
99983
|
+
log4.error(line);
|
|
99984
|
+
outro(import_picocolors4.default.red("Installation failed."));
|
|
99985
|
+
return 1;
|
|
99986
|
+
}
|
|
99987
|
+
spinner2.stop(nativeInstallSuccessLine());
|
|
99988
|
+
for (const note of outcome.notes)
|
|
99989
|
+
log4.info(note);
|
|
99990
|
+
}
|
|
99991
|
+
if (config.hasNativeDev) {
|
|
99992
|
+
spinner2.start("Installing the OmO Native development adapter");
|
|
99433
99993
|
try {
|
|
99434
|
-
const
|
|
99435
|
-
spinner2.stop(`
|
|
99994
|
+
const nativeDevResult = await runNativeDevInstaller();
|
|
99995
|
+
spinner2.stop(`OmO Native development adapter installed to ${import_picocolors4.default.cyan(nativeDevResult.settingsPath)}`);
|
|
99436
99996
|
} catch (error) {
|
|
99437
99997
|
const message = error instanceof Error ? error.message : String(error);
|
|
99438
|
-
spinner2.stop(`
|
|
99439
|
-
log4.error(`
|
|
99998
|
+
spinner2.stop(`OmO Native development adapter install failed ${import_picocolors4.default.yellow("[!]")}`);
|
|
99999
|
+
log4.error(`OmO Native development adapter install failed: ${message}`);
|
|
99440
100000
|
outro(import_picocolors4.default.red("Installation failed."));
|
|
99441
100001
|
return 1;
|
|
99442
100002
|
}
|
|
@@ -99450,9 +100010,9 @@ async function runTuiInstaller(args, version) {
|
|
|
99450
100010
|
note(`Include ${import_picocolors4.default.cyan("ultrawork")} (or ${import_picocolors4.default.cyan("ulw")}) in your prompt.
|
|
99451
100011
|
` + `All features work like magic-parallel agents, background tasks,
|
|
99452
100012
|
` + `deep exploration, and relentless execution until completion.`, "The Magic Word");
|
|
99453
|
-
if (
|
|
99454
|
-
log4.info(import_picocolors4.default.bold(
|
|
99455
|
-
log4.message(
|
|
100013
|
+
if (shouldShowNativeEditionHint(config)) {
|
|
100014
|
+
log4.info(import_picocolors4.default.bold(NATIVE_EDITION_HINT_TITLE));
|
|
100015
|
+
log4.message(nativeEditionHintLines({ command: import_picocolors4.default.cyan, link: import_picocolors4.default.underline }).join(`
|
|
99456
100016
|
`));
|
|
99457
100017
|
}
|
|
99458
100018
|
const shouldStar = await confirm({
|
|
@@ -99493,7 +100053,7 @@ async function runTuiInstaller(args, version) {
|
|
|
99493
100053
|
|
|
99494
100054
|
// packages/omo-opencode/src/cli/install.ts
|
|
99495
100055
|
var VERSION = package_default.version;
|
|
99496
|
-
async function
|
|
100056
|
+
async function install2(args) {
|
|
99497
100057
|
return args.tui ? runTuiInstaller(args, VERSION) : runCliInstaller(args, VERSION);
|
|
99498
100058
|
}
|
|
99499
100059
|
// packages/omo-opencode/src/cli/cleanup.ts
|
|
@@ -100994,7 +101554,8 @@ var HookNameSchema = _enum([
|
|
|
100994
101554
|
"webfetch-redirect-guard",
|
|
100995
101555
|
"fsync-skip-warning",
|
|
100996
101556
|
"plan-format-validator",
|
|
100997
|
-
"legacy-plugin-toast"
|
|
101557
|
+
"legacy-plugin-toast",
|
|
101558
|
+
"native-edition-nudge"
|
|
100998
101559
|
]);
|
|
100999
101560
|
// packages/omo-opencode/src/config/schema/i18n.ts
|
|
101000
101561
|
init_zod();
|
|
@@ -103097,14 +103658,14 @@ var NO_OP_POSTHOG2 = {
|
|
|
103097
103658
|
function isFalsy(value) {
|
|
103098
103659
|
return value === "0" || value === "false" || value === "no";
|
|
103099
103660
|
}
|
|
103100
|
-
function
|
|
103661
|
+
function isTruthy2(value) {
|
|
103101
103662
|
return value === "1" || value === "true" || value === "yes";
|
|
103102
103663
|
}
|
|
103103
103664
|
function shouldDisablePostHog(env, configEnabled) {
|
|
103104
103665
|
if (configEnabled === false) {
|
|
103105
103666
|
return true;
|
|
103106
103667
|
}
|
|
103107
|
-
if (
|
|
103668
|
+
if (isTruthy2(env.OMO_DISABLE_POSTHOG?.trim().toLowerCase())) {
|
|
103108
103669
|
return true;
|
|
103109
103670
|
}
|
|
103110
103671
|
return isFalsy(env.OMO_SEND_ANONYMOUS_TELEMETRY?.trim().toLowerCase());
|
|
@@ -104627,14 +105188,14 @@ var CANONICAL_REPLACEMENT = new Map([
|
|
|
104627
105188
|
var MIGRATE_SUFFIX = ", or run: oh-my-openagent config migrate";
|
|
104628
105189
|
var TUNING_CONTAINERS = new Set(["agents", "categories", "models"]);
|
|
104629
105190
|
var PASSTHROUGH_CONTAINERS = new Set(["provider_options", "providerOptions"]);
|
|
104630
|
-
function
|
|
105191
|
+
function isRecord16(value) {
|
|
104631
105192
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
104632
105193
|
}
|
|
104633
105194
|
function isHarnessBlock(key) {
|
|
104634
105195
|
return key.startsWith("[") && key.endsWith("]");
|
|
104635
105196
|
}
|
|
104636
105197
|
function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
104637
|
-
if (!
|
|
105198
|
+
if (!isRecord16(value))
|
|
104638
105199
|
return [];
|
|
104639
105200
|
const issues = [];
|
|
104640
105201
|
for (const [key, child] of Object.entries(value)) {
|
|
@@ -104650,7 +105211,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
104650
105211
|
});
|
|
104651
105212
|
continue;
|
|
104652
105213
|
}
|
|
104653
|
-
if (!
|
|
105214
|
+
if (!isRecord16(child))
|
|
104654
105215
|
continue;
|
|
104655
105216
|
if (PASSTHROUGH_CONTAINERS.has(key))
|
|
104656
105217
|
continue;
|
|
@@ -104669,7 +105230,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
104669
105230
|
return issues;
|
|
104670
105231
|
}
|
|
104671
105232
|
function migrateFixSuffix(parsed) {
|
|
104672
|
-
if (
|
|
105233
|
+
if (isRecord16(parsed) && hasMigrationMarker(parsed, REASONING_UNIFICATION_MIGRATION_ID))
|
|
104673
105234
|
return "";
|
|
104674
105235
|
return MIGRATE_SUFFIX;
|
|
104675
105236
|
}
|
|
@@ -105907,12 +106468,12 @@ async function auditBundleTargets(pluginRoot) {
|
|
|
105907
106468
|
let referencedCount = 0;
|
|
105908
106469
|
for (const manifestPath of await findManifestPaths(pluginRoot, ".mcp.json")) {
|
|
105909
106470
|
const manifest = await readJson2(manifestPath);
|
|
105910
|
-
if (manifest === null || !
|
|
106471
|
+
if (manifest === null || !isRecord17(manifest["mcpServers"]))
|
|
105911
106472
|
continue;
|
|
105912
106473
|
const manifestRoot = dirname33(manifestPath);
|
|
105913
106474
|
const isRootManifest = resolve24(manifestRoot) === resolve24(pluginRoot);
|
|
105914
106475
|
for (const server of Object.values(manifest["mcpServers"])) {
|
|
105915
|
-
if (!
|
|
106476
|
+
if (!isRecord17(server) || !Array.isArray(server["args"]))
|
|
105916
106477
|
continue;
|
|
105917
106478
|
for (const arg of server["args"]) {
|
|
105918
106479
|
if (typeof arg !== "string" || !isPluginRuntimePathArg(arg))
|
|
@@ -105998,7 +106559,7 @@ function collectHookCommands(value, commands) {
|
|
|
105998
106559
|
collectHookCommands(item, commands);
|
|
105999
106560
|
return;
|
|
106000
106561
|
}
|
|
106001
|
-
if (!
|
|
106562
|
+
if (!isRecord17(value))
|
|
106002
106563
|
return;
|
|
106003
106564
|
if (value["type"] === "command") {
|
|
106004
106565
|
if (typeof value["command"] === "string")
|
|
@@ -106053,7 +106614,7 @@ function parseDegradedEntries(value) {
|
|
|
106053
106614
|
return [];
|
|
106054
106615
|
const entries = [];
|
|
106055
106616
|
for (const item of value) {
|
|
106056
|
-
if (!
|
|
106617
|
+
if (!isRecord17(item))
|
|
106057
106618
|
continue;
|
|
106058
106619
|
if (typeof item["component"] !== "string" || typeof item["reason"] !== "string")
|
|
106059
106620
|
continue;
|
|
@@ -106087,7 +106648,7 @@ function degradedDetailLines(entries) {
|
|
|
106087
106648
|
async function readJson2(path) {
|
|
106088
106649
|
try {
|
|
106089
106650
|
const parsed = JSON.parse(await readFile29(path, "utf8"));
|
|
106090
|
-
return
|
|
106651
|
+
return isRecord17(parsed) ? parsed : null;
|
|
106091
106652
|
} catch (error) {
|
|
106092
106653
|
if (error instanceof Error)
|
|
106093
106654
|
return null;
|
|
@@ -106108,7 +106669,7 @@ function normalizeRelative(root, target) {
|
|
|
106108
106669
|
function normalizePathSeparators(path) {
|
|
106109
106670
|
return path.split("\\").join("/");
|
|
106110
106671
|
}
|
|
106111
|
-
function
|
|
106672
|
+
function isRecord17(value) {
|
|
106112
106673
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
106113
106674
|
}
|
|
106114
106675
|
|
|
@@ -108218,8 +108779,8 @@ var program2 = new Command;
|
|
|
108218
108779
|
function resolveInstallArgs(options, invocationName = process.env.OMO_INVOCATION_NAME) {
|
|
108219
108780
|
const defaultPlatform = process.env.OMO_EDITION === "codex" || invocationName === "lazycodex" || invocationName === "lazycodex-ai" ? "codex" : undefined;
|
|
108220
108781
|
const platform = options.platform ?? defaultPlatform;
|
|
108221
|
-
if (platform === "
|
|
108222
|
-
throw new Error(`The
|
|
108782
|
+
if (platform === "native-dev" && !isNativeDevPlatformEnabled()) {
|
|
108783
|
+
throw new Error(`The native-dev install platform is not available in this release. Set ${NATIVE_DEV_PLATFORM_ENV_FLAG}=1 to enable it from a source checkout.`);
|
|
108223
108784
|
}
|
|
108224
108785
|
return {
|
|
108225
108786
|
tui: options.tui !== false,
|
|
@@ -108264,7 +108825,7 @@ Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai > Kimi > Baili
|
|
|
108264
108825
|
`).action(async (options) => {
|
|
108265
108826
|
const rootOptions = program2.opts();
|
|
108266
108827
|
const args = resolveInstallArgs({ ...options, platform: options.platform ?? rootOptions.platform });
|
|
108267
|
-
const exitCode = await
|
|
108828
|
+
const exitCode = await install2(args);
|
|
108268
108829
|
process.exit(exitCode);
|
|
108269
108830
|
});
|
|
108270
108831
|
configureCleanupCommand(program2);
|