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-node/index.js
CHANGED
|
@@ -65,7 +65,7 @@ var package_default;
|
|
|
65
65
|
var init_package = __esm(() => {
|
|
66
66
|
package_default = {
|
|
67
67
|
name: "oh-my-opencode",
|
|
68
|
-
version: "5.0.0-beta.
|
|
68
|
+
version: "5.0.0-beta.84",
|
|
69
69
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
70
70
|
main: "./dist/index.js",
|
|
71
71
|
types: "dist/index.d.ts",
|
|
@@ -248,7 +248,7 @@ var init_package = __esm(() => {
|
|
|
248
248
|
zod: "^4.6.5"
|
|
249
249
|
},
|
|
250
250
|
devDependencies: {
|
|
251
|
-
"@code-yeongyu/senpi": "2026.9.22",
|
|
251
|
+
"@code-yeongyu/senpi": "2026.9.22-4",
|
|
252
252
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
253
253
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
254
254
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -288,18 +288,18 @@ var init_package = __esm(() => {
|
|
|
288
288
|
typescript: "^7.0.2"
|
|
289
289
|
},
|
|
290
290
|
optionalDependencies: {
|
|
291
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
292
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
293
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
300
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
301
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
302
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
291
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.84",
|
|
292
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.84",
|
|
293
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.84",
|
|
294
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.84",
|
|
295
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.84",
|
|
296
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.84",
|
|
297
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.84",
|
|
298
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.84",
|
|
299
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.84",
|
|
300
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.84",
|
|
301
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.84",
|
|
302
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.84"
|
|
303
303
|
},
|
|
304
304
|
overrides: {
|
|
305
305
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -7181,7 +7181,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7181
7181
|
fallbackChain: [
|
|
7182
7182
|
{
|
|
7183
7183
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
7184
|
-
model: "claude-opus-5",
|
|
7184
|
+
model: "claude-opus-5-5",
|
|
7185
7185
|
variant: "max"
|
|
7186
7186
|
},
|
|
7187
7187
|
{
|
|
@@ -7189,7 +7189,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7189
7189
|
model: "kimi-k3"
|
|
7190
7190
|
},
|
|
7191
7191
|
{
|
|
7192
|
-
providers: ["openai", "
|
|
7192
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7193
7193
|
model: "gpt-5.6-sol",
|
|
7194
7194
|
variant: "medium"
|
|
7195
7195
|
},
|
|
@@ -7201,17 +7201,17 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7201
7201
|
hephaestus: {
|
|
7202
7202
|
fallbackChain: [
|
|
7203
7203
|
{
|
|
7204
|
-
providers: ["openai", "
|
|
7204
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7205
7205
|
model: "gpt-5.6-sol",
|
|
7206
7206
|
variant: "medium"
|
|
7207
7207
|
}
|
|
7208
7208
|
],
|
|
7209
|
-
requiresProvider: ["openai", "
|
|
7209
|
+
requiresProvider: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7210
7210
|
requiresAnyModel: true
|
|
7211
7211
|
},
|
|
7212
7212
|
oracle: {
|
|
7213
7213
|
fallbackChain: [
|
|
7214
|
-
{ providers: ["openai", "
|
|
7214
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-5.6-sol", variant: "xhigh" },
|
|
7215
7215
|
{ providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "high" },
|
|
7216
7216
|
{
|
|
7217
7217
|
providers: ["google", "github-copilot", "opencode"],
|
|
@@ -7220,7 +7220,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7220
7220
|
},
|
|
7221
7221
|
{
|
|
7222
7222
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
7223
|
-
model: "claude-opus-5",
|
|
7223
|
+
model: "claude-opus-5-5",
|
|
7224
7224
|
variant: "max"
|
|
7225
7225
|
},
|
|
7226
7226
|
{ providers: ["opencode-go"], model: "glm-5.2" }
|
|
@@ -7228,34 +7228,36 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7228
7228
|
},
|
|
7229
7229
|
librarian: {
|
|
7230
7230
|
fallbackChain: [
|
|
7231
|
-
{ providers: ["
|
|
7231
|
+
{ providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
|
|
7232
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.6-luna-fast", variant: "low" },
|
|
7232
7233
|
{ providers: ["deepseek"], model: "deepseek-v4-flash", variant: "max" },
|
|
7233
7234
|
{ providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
|
|
7234
7235
|
{ providers: ["opencode-go"], model: "minimax-m3" },
|
|
7235
7236
|
{ providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
|
|
7236
7237
|
{ providers: ["opencode-go"], model: "minimax-m2.7" },
|
|
7237
7238
|
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" },
|
|
7238
|
-
{ providers: ["openai", "
|
|
7239
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.4-nano" }
|
|
7239
7240
|
]
|
|
7240
7241
|
},
|
|
7241
7242
|
explore: {
|
|
7242
7243
|
fallbackChain: [
|
|
7243
|
-
{ providers: ["
|
|
7244
|
+
{ providers: ["kimi-for-coding"], model: "kimi-for-coding-highspeed", variant: "off" },
|
|
7245
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.6-luna-fast", variant: "low" },
|
|
7244
7246
|
{ providers: ["deepseek"], model: "deepseek-v4-flash", variant: "max" },
|
|
7245
7247
|
{ providers: ["opencode-go", "bailian-coding-plan"], model: "qwen3.7-plus" },
|
|
7246
7248
|
{ providers: ["opencode-go"], model: "minimax-m3" },
|
|
7247
7249
|
{ providers: ["minimax-coding-plan", "minimax-cn-coding-plan"], model: "MiniMax-M3" },
|
|
7248
7250
|
{ providers: ["opencode-go"], model: "minimax-m2.7" },
|
|
7249
7251
|
{ providers: ["anthropic", "github-copilot"], model: "claude-haiku-4-5" },
|
|
7250
|
-
{ providers: ["openai", "
|
|
7252
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.4-nano" }
|
|
7251
7253
|
]
|
|
7252
7254
|
},
|
|
7253
7255
|
"multimodal-looker": {
|
|
7254
7256
|
fallbackChain: [
|
|
7255
|
-
{ providers: ["openai", "
|
|
7257
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-5.6-sol", variant: "low" },
|
|
7256
7258
|
{ providers: ["opencode-go"], model: "kimi-k3" },
|
|
7257
7259
|
{ providers: ["zai-coding-plan"], model: "glm-4.6v" },
|
|
7258
|
-
{ providers: ["openai", "
|
|
7260
|
+
{ providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"], model: "gpt-5-nano" }
|
|
7259
7261
|
]
|
|
7260
7262
|
},
|
|
7261
7263
|
prometheus: {
|
|
@@ -7281,7 +7283,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7281
7283
|
},
|
|
7282
7284
|
{
|
|
7283
7285
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
7284
|
-
model: "claude-opus-5",
|
|
7286
|
+
model: "claude-opus-5-5",
|
|
7285
7287
|
variant: "max"
|
|
7286
7288
|
},
|
|
7287
7289
|
{
|
|
@@ -7293,12 +7295,12 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7293
7295
|
},
|
|
7294
7296
|
momus: {
|
|
7295
7297
|
fallbackChain: [
|
|
7296
|
-
{ providers: ["openai", "
|
|
7298
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-astra", variant: "xhigh" },
|
|
7297
7299
|
{ providers: ["github-copilot"], model: "gpt-6-astra", variant: "high" },
|
|
7298
|
-
{ providers: ["openai", "
|
|
7300
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-6-astra", variant: "high" },
|
|
7299
7301
|
{
|
|
7300
7302
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
7301
|
-
model: "claude-opus-5",
|
|
7303
|
+
model: "claude-opus-5-5",
|
|
7302
7304
|
variant: "max"
|
|
7303
7305
|
},
|
|
7304
7306
|
{
|
|
@@ -7314,7 +7316,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7314
7316
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-5" },
|
|
7315
7317
|
{ providers: ["opencode-go"], model: "kimi-k3" },
|
|
7316
7318
|
{
|
|
7317
|
-
providers: ["openai", "
|
|
7319
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7318
7320
|
model: "gpt-5.6-sol",
|
|
7319
7321
|
variant: "medium"
|
|
7320
7322
|
},
|
|
@@ -7328,7 +7330,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
7328
7330
|
{ providers: ["anthropic", "github-copilot", "opencode"], model: "claude-sonnet-5" },
|
|
7329
7331
|
{ providers: ["opencode-go"], model: "kimi-k3" },
|
|
7330
7332
|
{
|
|
7331
|
-
providers: ["openai", "
|
|
7333
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7332
7334
|
model: "gpt-5.6-sol",
|
|
7333
7335
|
variant: "medium"
|
|
7334
7336
|
},
|
|
@@ -7354,7 +7356,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7354
7356
|
},
|
|
7355
7357
|
{
|
|
7356
7358
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7357
|
-
model: "claude-opus-5",
|
|
7359
|
+
model: "claude-opus-5-5",
|
|
7358
7360
|
variant: "max"
|
|
7359
7361
|
},
|
|
7360
7362
|
{
|
|
@@ -7366,18 +7368,18 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7366
7368
|
},
|
|
7367
7369
|
ultrabrain: {
|
|
7368
7370
|
fallbackChain: [
|
|
7369
|
-
{ providers: ["openai", "
|
|
7371
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-6-astra", variant: "max" },
|
|
7370
7372
|
{ providers: ["github-copilot"], model: "gpt-6-astra", variant: "max" },
|
|
7371
|
-
{ providers: ["openai", "
|
|
7372
|
-
{ providers: ["openai", "
|
|
7373
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-6-astra", variant: "max" },
|
|
7374
|
+
{ providers: ["openai", "chatgpt-subscription"], model: "gpt-5.6-sol", variant: "max" },
|
|
7373
7375
|
{ providers: ["github-copilot"], model: "gpt-5.6-sol", variant: "max" },
|
|
7374
|
-
{ providers: ["openai", "
|
|
7376
|
+
{ providers: ["openai", "chatgpt-subscription", "opencode"], model: "gpt-5.6-sol", variant: "max" }
|
|
7375
7377
|
]
|
|
7376
7378
|
},
|
|
7377
7379
|
"deep-low": {
|
|
7378
7380
|
fallbackChain: [
|
|
7379
7381
|
{
|
|
7380
|
-
providers: ["openai", "
|
|
7382
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7381
7383
|
model: "gpt-5.6-sol",
|
|
7382
7384
|
variant: "medium"
|
|
7383
7385
|
}
|
|
@@ -7386,7 +7388,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7386
7388
|
"deep-high": {
|
|
7387
7389
|
fallbackChain: [
|
|
7388
7390
|
{
|
|
7389
|
-
providers: ["openai", "
|
|
7391
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7390
7392
|
model: "gpt-6-astra",
|
|
7391
7393
|
variant: "high"
|
|
7392
7394
|
}
|
|
@@ -7406,15 +7408,14 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7406
7408
|
},
|
|
7407
7409
|
{
|
|
7408
7410
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7409
|
-
model: "claude-opus-5",
|
|
7410
|
-
variant: "
|
|
7411
|
+
model: "claude-opus-5-5",
|
|
7412
|
+
variant: "max"
|
|
7411
7413
|
}
|
|
7412
7414
|
]
|
|
7413
7415
|
},
|
|
7414
7416
|
quick: {
|
|
7415
7417
|
fallbackChain: [
|
|
7416
|
-
{ providers: ["
|
|
7417
|
-
{ providers: ["openai-codex"], model: "gpt-5.6-luna-fast", variant: "low" },
|
|
7418
|
+
{ providers: ["chatgpt-subscription"], model: "gpt-5.6-luna-fast", variant: "low" },
|
|
7418
7419
|
{ providers: ["deepseek"], model: "deepseek-v4-flash", variant: "off" },
|
|
7419
7420
|
{
|
|
7420
7421
|
providers: ["qwen-token-plan", "alibaba-token-plan", "bailian-coding-plan"],
|
|
@@ -7433,9 +7434,10 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7433
7434
|
},
|
|
7434
7435
|
"unspecified-low": {
|
|
7435
7436
|
fallbackChain: [
|
|
7436
|
-
{ providers: ["
|
|
7437
|
+
{ providers: ["xiaomi", "opencode-go"], model: "mimo-v2.6-pro", variant: "max" },
|
|
7438
|
+
{ providers: ["xai", "github-copilot", "opencode-go"], model: "grok-4.7", variant: "xhigh" },
|
|
7437
7439
|
{
|
|
7438
|
-
providers: ["openai", "
|
|
7440
|
+
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
7439
7441
|
model: "gpt-5.6-terra",
|
|
7440
7442
|
variant: "high"
|
|
7441
7443
|
},
|
|
@@ -7455,15 +7457,10 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7455
7457
|
},
|
|
7456
7458
|
"unspecified-high": {
|
|
7457
7459
|
fallbackChain: [
|
|
7458
|
-
{
|
|
7459
|
-
providers: ["openai", "openai-codex", "github-copilot", "opencode"],
|
|
7460
|
-
model: "gpt-6-astra",
|
|
7461
|
-
variant: "high"
|
|
7462
|
-
},
|
|
7463
7460
|
{
|
|
7464
7461
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7465
|
-
model: "claude-opus-5",
|
|
7466
|
-
variant: "
|
|
7462
|
+
model: "claude-opus-5-5",
|
|
7463
|
+
variant: "max"
|
|
7467
7464
|
},
|
|
7468
7465
|
{ providers: ["zai-coding-plan", "opencode-go"], model: "glm-5.3", variant: "max" },
|
|
7469
7466
|
{
|
|
@@ -7481,14 +7478,14 @@ var init_category_model_requirements = __esm(() => {
|
|
|
7481
7478
|
variant: "low"
|
|
7482
7479
|
},
|
|
7483
7480
|
{
|
|
7484
|
-
providers: ["
|
|
7485
|
-
model: "
|
|
7481
|
+
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7482
|
+
model: "claude-opus-5-5",
|
|
7486
7483
|
variant: "low"
|
|
7487
7484
|
},
|
|
7488
7485
|
{
|
|
7489
7486
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
7490
7487
|
model: "claude-opus-4-6",
|
|
7491
|
-
variant: "
|
|
7488
|
+
variant: "max"
|
|
7492
7489
|
}
|
|
7493
7490
|
]
|
|
7494
7491
|
}
|
|
@@ -8295,6 +8292,36 @@ var init_supplemental_entries = __esm(() => {
|
|
|
8295
8292
|
output: 32768
|
|
8296
8293
|
}
|
|
8297
8294
|
},
|
|
8295
|
+
"grok-4.7": {
|
|
8296
|
+
id: "grok-4.7",
|
|
8297
|
+
family: "grok",
|
|
8298
|
+
reasoning: false,
|
|
8299
|
+
temperature: true,
|
|
8300
|
+
toolCall: true,
|
|
8301
|
+
modalities: {
|
|
8302
|
+
input: ["text", "image"],
|
|
8303
|
+
output: ["text"]
|
|
8304
|
+
},
|
|
8305
|
+
limit: {
|
|
8306
|
+
context: 500000,
|
|
8307
|
+
output: 32768
|
|
8308
|
+
}
|
|
8309
|
+
},
|
|
8310
|
+
"xai/grok-4.7": {
|
|
8311
|
+
id: "xai/grok-4.7",
|
|
8312
|
+
family: "grok",
|
|
8313
|
+
reasoning: false,
|
|
8314
|
+
temperature: true,
|
|
8315
|
+
toolCall: true,
|
|
8316
|
+
modalities: {
|
|
8317
|
+
input: ["text", "image"],
|
|
8318
|
+
output: ["text"]
|
|
8319
|
+
},
|
|
8320
|
+
limit: {
|
|
8321
|
+
context: 500000,
|
|
8322
|
+
output: 32768
|
|
8323
|
+
}
|
|
8324
|
+
},
|
|
8298
8325
|
"xai/grok-build-0.1": {
|
|
8299
8326
|
id: "xai/grok-build-0.1",
|
|
8300
8327
|
family: "grok",
|
|
@@ -8324,6 +8351,36 @@ var init_supplemental_entries = __esm(() => {
|
|
|
8324
8351
|
context: 256000,
|
|
8325
8352
|
output: 32768
|
|
8326
8353
|
}
|
|
8354
|
+
},
|
|
8355
|
+
"mimo-v2.6-pro": {
|
|
8356
|
+
id: "mimo-v2.6-pro",
|
|
8357
|
+
family: "mimo",
|
|
8358
|
+
reasoning: true,
|
|
8359
|
+
temperature: true,
|
|
8360
|
+
toolCall: true,
|
|
8361
|
+
modalities: {
|
|
8362
|
+
input: ["text", "image"],
|
|
8363
|
+
output: ["text"]
|
|
8364
|
+
},
|
|
8365
|
+
limit: {
|
|
8366
|
+
context: 1048576,
|
|
8367
|
+
output: 131072
|
|
8368
|
+
}
|
|
8369
|
+
},
|
|
8370
|
+
"xiaomi/mimo-v2.6-pro": {
|
|
8371
|
+
id: "xiaomi/mimo-v2.6-pro",
|
|
8372
|
+
family: "mimo",
|
|
8373
|
+
reasoning: true,
|
|
8374
|
+
temperature: true,
|
|
8375
|
+
toolCall: true,
|
|
8376
|
+
modalities: {
|
|
8377
|
+
input: ["text", "image"],
|
|
8378
|
+
output: ["text"]
|
|
8379
|
+
},
|
|
8380
|
+
limit: {
|
|
8381
|
+
context: 1048576,
|
|
8382
|
+
output: 131072
|
|
8383
|
+
}
|
|
8327
8384
|
}
|
|
8328
8385
|
};
|
|
8329
8386
|
});
|
|
@@ -9297,21 +9354,21 @@ var init_openai_categories = __esm(() => {
|
|
|
9297
9354
|
},
|
|
9298
9355
|
{
|
|
9299
9356
|
name: "quick",
|
|
9300
|
-
config: { model: "
|
|
9357
|
+
config: { model: "openai/gpt-5.6-luna-fast", variant: "low" },
|
|
9301
9358
|
description: "Trivial tasks - single file changes, typo fixes, simple modifications",
|
|
9302
9359
|
callerGuidance: QUICK_CATEGORY_CALLER_GUIDANCE,
|
|
9303
9360
|
promptAppend: QUICK_CATEGORY_PROMPT_APPEND
|
|
9304
9361
|
},
|
|
9305
9362
|
{
|
|
9306
9363
|
name: "unspecified-low",
|
|
9307
|
-
config: { model: "
|
|
9364
|
+
config: { model: "xiaomi/mimo-v2.6-pro", variant: "max" },
|
|
9308
9365
|
description: "Tasks that don't fit other categories, low effort required",
|
|
9309
9366
|
callerGuidance: UNSPECIFIED_LOW_CATEGORY_CALLER_GUIDANCE,
|
|
9310
9367
|
promptAppend: UNSPECIFIED_LOW_CATEGORY_PROMPT_APPEND
|
|
9311
9368
|
},
|
|
9312
9369
|
{
|
|
9313
9370
|
name: "unspecified-high",
|
|
9314
|
-
config: { model: "
|
|
9371
|
+
config: { model: "anthropic/claude-opus-5-5", variant: "max" },
|
|
9315
9372
|
description: "Tasks that don't fit other categories, high effort required",
|
|
9316
9373
|
callerGuidance: UNSPECIFIED_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
9317
9374
|
promptAppend: UNSPECIFIED_HIGH_CATEGORY_PROMPT_APPEND,
|
|
@@ -64272,6 +64329,216 @@ var init_model_capabilities_generated = __esm(() => {
|
|
|
64272
64329
|
context: 500000,
|
|
64273
64330
|
output: 500000
|
|
64274
64331
|
}
|
|
64332
|
+
},
|
|
64333
|
+
"claude-opus-5-5": {
|
|
64334
|
+
id: "claude-opus-5-5",
|
|
64335
|
+
family: "claude-opus",
|
|
64336
|
+
reasoning: true,
|
|
64337
|
+
temperature: false,
|
|
64338
|
+
toolCall: true,
|
|
64339
|
+
modalities: {
|
|
64340
|
+
input: [
|
|
64341
|
+
"text",
|
|
64342
|
+
"image",
|
|
64343
|
+
"pdf"
|
|
64344
|
+
],
|
|
64345
|
+
output: [
|
|
64346
|
+
"text"
|
|
64347
|
+
]
|
|
64348
|
+
},
|
|
64349
|
+
limit: {
|
|
64350
|
+
context: 1e6,
|
|
64351
|
+
output: 128000
|
|
64352
|
+
}
|
|
64353
|
+
},
|
|
64354
|
+
"claude-opus-5-5@default": {
|
|
64355
|
+
id: "claude-opus-5-5@default",
|
|
64356
|
+
family: "claude-opus",
|
|
64357
|
+
reasoning: true,
|
|
64358
|
+
temperature: false,
|
|
64359
|
+
toolCall: true,
|
|
64360
|
+
modalities: {
|
|
64361
|
+
input: [
|
|
64362
|
+
"text",
|
|
64363
|
+
"image",
|
|
64364
|
+
"pdf"
|
|
64365
|
+
],
|
|
64366
|
+
output: [
|
|
64367
|
+
"text"
|
|
64368
|
+
]
|
|
64369
|
+
},
|
|
64370
|
+
limit: {
|
|
64371
|
+
context: 1e6,
|
|
64372
|
+
output: 128000
|
|
64373
|
+
}
|
|
64374
|
+
},
|
|
64375
|
+
"anthropic/claude-opus-5.5": {
|
|
64376
|
+
id: "anthropic/claude-opus-5.5",
|
|
64377
|
+
family: "claude-opus",
|
|
64378
|
+
reasoning: true,
|
|
64379
|
+
temperature: true,
|
|
64380
|
+
toolCall: true,
|
|
64381
|
+
modalities: {
|
|
64382
|
+
input: [
|
|
64383
|
+
"text",
|
|
64384
|
+
"image",
|
|
64385
|
+
"pdf"
|
|
64386
|
+
],
|
|
64387
|
+
output: [
|
|
64388
|
+
"text"
|
|
64389
|
+
]
|
|
64390
|
+
},
|
|
64391
|
+
limit: {
|
|
64392
|
+
context: 1e6,
|
|
64393
|
+
output: 128000
|
|
64394
|
+
}
|
|
64395
|
+
},
|
|
64396
|
+
"au.anthropic.claude-opus-5-5": {
|
|
64397
|
+
id: "au.anthropic.claude-opus-5-5",
|
|
64398
|
+
family: "claude-opus",
|
|
64399
|
+
reasoning: true,
|
|
64400
|
+
temperature: false,
|
|
64401
|
+
toolCall: true,
|
|
64402
|
+
modalities: {
|
|
64403
|
+
input: [
|
|
64404
|
+
"text",
|
|
64405
|
+
"image",
|
|
64406
|
+
"pdf"
|
|
64407
|
+
],
|
|
64408
|
+
output: [
|
|
64409
|
+
"text"
|
|
64410
|
+
]
|
|
64411
|
+
},
|
|
64412
|
+
limit: {
|
|
64413
|
+
context: 1e6,
|
|
64414
|
+
output: 128000
|
|
64415
|
+
}
|
|
64416
|
+
},
|
|
64417
|
+
"anthropic.claude-opus-5-5": {
|
|
64418
|
+
id: "anthropic.claude-opus-5-5",
|
|
64419
|
+
family: "claude-opus",
|
|
64420
|
+
reasoning: true,
|
|
64421
|
+
temperature: false,
|
|
64422
|
+
toolCall: true,
|
|
64423
|
+
modalities: {
|
|
64424
|
+
input: [
|
|
64425
|
+
"text",
|
|
64426
|
+
"image",
|
|
64427
|
+
"pdf"
|
|
64428
|
+
],
|
|
64429
|
+
output: [
|
|
64430
|
+
"text"
|
|
64431
|
+
]
|
|
64432
|
+
},
|
|
64433
|
+
limit: {
|
|
64434
|
+
context: 1e6,
|
|
64435
|
+
output: 128000
|
|
64436
|
+
}
|
|
64437
|
+
},
|
|
64438
|
+
"eu.anthropic.claude-opus-5-5": {
|
|
64439
|
+
id: "eu.anthropic.claude-opus-5-5",
|
|
64440
|
+
family: "claude-opus",
|
|
64441
|
+
reasoning: true,
|
|
64442
|
+
temperature: false,
|
|
64443
|
+
toolCall: true,
|
|
64444
|
+
modalities: {
|
|
64445
|
+
input: [
|
|
64446
|
+
"text",
|
|
64447
|
+
"image",
|
|
64448
|
+
"pdf"
|
|
64449
|
+
],
|
|
64450
|
+
output: [
|
|
64451
|
+
"text"
|
|
64452
|
+
]
|
|
64453
|
+
},
|
|
64454
|
+
limit: {
|
|
64455
|
+
context: 1e6,
|
|
64456
|
+
output: 128000
|
|
64457
|
+
}
|
|
64458
|
+
},
|
|
64459
|
+
"global.anthropic.claude-opus-5-5": {
|
|
64460
|
+
id: "global.anthropic.claude-opus-5-5",
|
|
64461
|
+
family: "claude-opus",
|
|
64462
|
+
reasoning: true,
|
|
64463
|
+
temperature: false,
|
|
64464
|
+
toolCall: true,
|
|
64465
|
+
modalities: {
|
|
64466
|
+
input: [
|
|
64467
|
+
"text",
|
|
64468
|
+
"image",
|
|
64469
|
+
"pdf"
|
|
64470
|
+
],
|
|
64471
|
+
output: [
|
|
64472
|
+
"text"
|
|
64473
|
+
]
|
|
64474
|
+
},
|
|
64475
|
+
limit: {
|
|
64476
|
+
context: 1e6,
|
|
64477
|
+
output: 128000
|
|
64478
|
+
}
|
|
64479
|
+
},
|
|
64480
|
+
"jp.anthropic.claude-opus-5-5": {
|
|
64481
|
+
id: "jp.anthropic.claude-opus-5-5",
|
|
64482
|
+
family: "claude-opus",
|
|
64483
|
+
reasoning: true,
|
|
64484
|
+
temperature: false,
|
|
64485
|
+
toolCall: true,
|
|
64486
|
+
modalities: {
|
|
64487
|
+
input: [
|
|
64488
|
+
"text",
|
|
64489
|
+
"image",
|
|
64490
|
+
"pdf"
|
|
64491
|
+
],
|
|
64492
|
+
output: [
|
|
64493
|
+
"text"
|
|
64494
|
+
]
|
|
64495
|
+
},
|
|
64496
|
+
limit: {
|
|
64497
|
+
context: 1e6,
|
|
64498
|
+
output: 128000
|
|
64499
|
+
}
|
|
64500
|
+
},
|
|
64501
|
+
"us.anthropic.claude-opus-5-5": {
|
|
64502
|
+
id: "us.anthropic.claude-opus-5-5",
|
|
64503
|
+
family: "claude-opus",
|
|
64504
|
+
reasoning: true,
|
|
64505
|
+
temperature: false,
|
|
64506
|
+
toolCall: true,
|
|
64507
|
+
modalities: {
|
|
64508
|
+
input: [
|
|
64509
|
+
"text",
|
|
64510
|
+
"image",
|
|
64511
|
+
"pdf"
|
|
64512
|
+
],
|
|
64513
|
+
output: [
|
|
64514
|
+
"text"
|
|
64515
|
+
]
|
|
64516
|
+
},
|
|
64517
|
+
limit: {
|
|
64518
|
+
context: 1e6,
|
|
64519
|
+
output: 128000
|
|
64520
|
+
}
|
|
64521
|
+
},
|
|
64522
|
+
"anthropic/claude-opus-5-5": {
|
|
64523
|
+
id: "anthropic/claude-opus-5-5",
|
|
64524
|
+
family: "claude-opus",
|
|
64525
|
+
reasoning: true,
|
|
64526
|
+
temperature: false,
|
|
64527
|
+
toolCall: true,
|
|
64528
|
+
modalities: {
|
|
64529
|
+
input: [
|
|
64530
|
+
"text",
|
|
64531
|
+
"image",
|
|
64532
|
+
"pdf"
|
|
64533
|
+
],
|
|
64534
|
+
output: [
|
|
64535
|
+
"text"
|
|
64536
|
+
]
|
|
64537
|
+
},
|
|
64538
|
+
limit: {
|
|
64539
|
+
context: 1e6,
|
|
64540
|
+
output: 128000
|
|
64541
|
+
}
|
|
64275
64542
|
}
|
|
64276
64543
|
}
|
|
64277
64544
|
};
|
|
@@ -73962,12 +74229,14 @@ var init_git_master = __esm(() => {
|
|
|
73962
74229
|
});
|
|
73963
74230
|
|
|
73964
74231
|
// packages/omo-config-core/src/schema/harness.ts
|
|
73965
|
-
var HARNESS_IDS, OMO_CONFIG_HARNESS_IDS, OmoHarnessIdSchema;
|
|
74232
|
+
var HARNESS_IDS, OMO_CONFIG_HARNESS_IDS, OmoHarnessIdSchema, OMO_CONFIG_LEGACY_HARNESS_ALIASES, OMO_CONFIG_LEGACY_HARNESS_IDS;
|
|
73966
74233
|
var init_harness = __esm(() => {
|
|
73967
74234
|
init_zod();
|
|
73968
74235
|
HARNESS_IDS = ["codex", "opencode", "omo"];
|
|
73969
|
-
OMO_CONFIG_HARNESS_IDS = ["opencode", "
|
|
74236
|
+
OMO_CONFIG_HARNESS_IDS = ["opencode", "native", "codex"];
|
|
73970
74237
|
OmoHarnessIdSchema = _enum(OMO_CONFIG_HARNESS_IDS);
|
|
74238
|
+
OMO_CONFIG_LEGACY_HARNESS_ALIASES = { senpi: "native" };
|
|
74239
|
+
OMO_CONFIG_LEGACY_HARNESS_IDS = Object.keys(OMO_CONFIG_LEGACY_HARNESS_ALIASES);
|
|
73971
74240
|
});
|
|
73972
74241
|
|
|
73973
74242
|
// packages/omo-config-core/src/schema/memory.ts
|
|
@@ -74470,6 +74739,7 @@ var init_config = __esm(() => {
|
|
|
74470
74739
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
74471
74740
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
74472
74741
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
74742
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
74473
74743
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
74474
74744
|
"[codex]": OmoTypedHarnessConfigSchema.optional()
|
|
74475
74745
|
}).strict();
|
|
@@ -74488,6 +74758,7 @@ var init_config = __esm(() => {
|
|
|
74488
74758
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
74489
74759
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
74490
74760
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
74761
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
74491
74762
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
74492
74763
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
74493
74764
|
profiles: record(string2(), OmoConfigProfileSchema).default({}),
|
|
@@ -74509,6 +74780,7 @@ var init_config = __esm(() => {
|
|
|
74509
74780
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
74510
74781
|
disabled_skills: OmoDisabledSkillsSchema.optional(),
|
|
74511
74782
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
74783
|
+
"[native]": OmoTypedHarnessConfigSchema.optional(),
|
|
74512
74784
|
"[senpi]": OmoTypedHarnessConfigSchema.optional(),
|
|
74513
74785
|
"[codex]": OmoTypedHarnessConfigSchema.optional(),
|
|
74514
74786
|
profiles: record(string2(), OmoConfigProfileSchema).optional(),
|
|
@@ -74579,6 +74851,60 @@ var init_legacy_category_names = __esm(() => {
|
|
|
74579
74851
|
LEGACY_CATEGORY_NAME_ALIASES = { deep: "deep-low" };
|
|
74580
74852
|
});
|
|
74581
74853
|
|
|
74854
|
+
// packages/omo-config-core/src/schema/legacy-harness-names.ts
|
|
74855
|
+
function canonicalHarnessName(name) {
|
|
74856
|
+
return Object.hasOwn(OMO_CONFIG_LEGACY_HARNESS_ALIASES, name) ? OMO_CONFIG_LEGACY_HARNESS_ALIASES[name] : name;
|
|
74857
|
+
}
|
|
74858
|
+
function harnessBlockKey(harness) {
|
|
74859
|
+
return `[${harness}]`;
|
|
74860
|
+
}
|
|
74861
|
+
function legacyHarnessOfBlockKey(key) {
|
|
74862
|
+
if (!key.startsWith("[") || !key.endsWith("]"))
|
|
74863
|
+
return;
|
|
74864
|
+
const harness = key.slice(1, -1);
|
|
74865
|
+
return Object.hasOwn(OMO_CONFIG_LEGACY_HARNESS_ALIASES, harness) ? harness : undefined;
|
|
74866
|
+
}
|
|
74867
|
+
function isRecord10(value) {
|
|
74868
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
74869
|
+
}
|
|
74870
|
+
function canonicalizeBlocksIn(container, path, renames) {
|
|
74871
|
+
const result = {};
|
|
74872
|
+
for (const [key, value] of Object.entries(container)) {
|
|
74873
|
+
const legacyHarness = legacyHarnessOfBlockKey(key);
|
|
74874
|
+
if (legacyHarness === undefined) {
|
|
74875
|
+
result[key] = value;
|
|
74876
|
+
continue;
|
|
74877
|
+
}
|
|
74878
|
+
const canonical = harnessBlockKey(canonicalHarnessName(legacyHarness));
|
|
74879
|
+
const dropped = Object.hasOwn(container, canonical);
|
|
74880
|
+
renames.push({ canonical, dropped, legacy: key, path: [...path, key].join(".") });
|
|
74881
|
+
if (!dropped)
|
|
74882
|
+
result[canonical] = value;
|
|
74883
|
+
}
|
|
74884
|
+
return result;
|
|
74885
|
+
}
|
|
74886
|
+
function canonicalizeLegacyHarnessBlocks(document) {
|
|
74887
|
+
if (!isRecord10(document))
|
|
74888
|
+
return { document: {}, renames: [] };
|
|
74889
|
+
const renames = [];
|
|
74890
|
+
const canonicalized = canonicalizeBlocksIn(document, [], renames);
|
|
74891
|
+
const profiles = canonicalized["profiles"];
|
|
74892
|
+
if (isRecord10(profiles)) {
|
|
74893
|
+
const canonicalProfiles = {};
|
|
74894
|
+
for (const [name, profile] of Object.entries(profiles)) {
|
|
74895
|
+
canonicalProfiles[name] = isRecord10(profile) ? canonicalizeBlocksIn(profile, ["profiles", name], renames) : profile;
|
|
74896
|
+
}
|
|
74897
|
+
canonicalized["profiles"] = canonicalProfiles;
|
|
74898
|
+
}
|
|
74899
|
+
return { document: canonicalized, renames };
|
|
74900
|
+
}
|
|
74901
|
+
function hasLegacyHarnessBlocks(document) {
|
|
74902
|
+
return canonicalizeLegacyHarnessBlocks(document).renames.length > 0;
|
|
74903
|
+
}
|
|
74904
|
+
var init_legacy_harness_names = __esm(() => {
|
|
74905
|
+
init_harness();
|
|
74906
|
+
});
|
|
74907
|
+
|
|
74582
74908
|
// packages/omo-config-core/src/schema/index.ts
|
|
74583
74909
|
var init_schema = __esm(() => {
|
|
74584
74910
|
init_agent();
|
|
@@ -74589,6 +74915,7 @@ var init_schema = __esm(() => {
|
|
|
74589
74915
|
init_git_master();
|
|
74590
74916
|
init_harness();
|
|
74591
74917
|
init_legacy_category_names();
|
|
74918
|
+
init_legacy_harness_names();
|
|
74592
74919
|
init_memory();
|
|
74593
74920
|
init_model_catalog();
|
|
74594
74921
|
init_model_profile();
|
|
@@ -74598,6 +74925,9 @@ var init_schema = __esm(() => {
|
|
|
74598
74925
|
init_telemetry();
|
|
74599
74926
|
});
|
|
74600
74927
|
|
|
74928
|
+
// packages/omo-config-core/src/loader/disabled-skills.ts
|
|
74929
|
+
var init_disabled_skills = () => {};
|
|
74930
|
+
|
|
74601
74931
|
// packages/omo-config-core/src/loader/merge.ts
|
|
74602
74932
|
function isUnsafeObjectKey2(key) {
|
|
74603
74933
|
return DANGEROUS_KEYS2.has(key);
|
|
@@ -74772,7 +75102,13 @@ function withoutControlKeys(config) {
|
|
|
74772
75102
|
function harnessLayer(config, harness) {
|
|
74773
75103
|
if (harness === undefined)
|
|
74774
75104
|
return {};
|
|
74775
|
-
|
|
75105
|
+
const canonical = canonicalHarnessName(harness);
|
|
75106
|
+
const legacyKeys = Object.entries(OMO_CONFIG_LEGACY_HARNESS_ALIASES).filter(([, target]) => target === canonical).map(([legacy]) => harnessBlockKey(legacy));
|
|
75107
|
+
let layer = {};
|
|
75108
|
+
for (const key of [...legacyKeys, harnessBlockKey(canonical)]) {
|
|
75109
|
+
layer = mergeOmoConfigRecords(layer, toRecord(config[key]) ?? {});
|
|
75110
|
+
}
|
|
75111
|
+
return layer;
|
|
74776
75112
|
}
|
|
74777
75113
|
function resolveOmoConfigView(options) {
|
|
74778
75114
|
const profiles = toRecord(options.config["profiles"]);
|
|
@@ -74802,7 +75138,7 @@ var HARNESS_KEYS;
|
|
|
74802
75138
|
var init_resolution = __esm(() => {
|
|
74803
75139
|
init_schema();
|
|
74804
75140
|
init_merge();
|
|
74805
|
-
HARNESS_KEYS = [...new Set([...HARNESS_IDS, ...OMO_CONFIG_HARNESS_IDS])].map((harness) =>
|
|
75141
|
+
HARNESS_KEYS = [...new Set([...HARNESS_IDS, ...OMO_CONFIG_HARNESS_IDS, ...OMO_CONFIG_LEGACY_HARNESS_IDS])].map((harness) => harnessBlockKey(harness));
|
|
74806
75142
|
});
|
|
74807
75143
|
|
|
74808
75144
|
// packages/omo-config-core/src/loader/loader.ts
|
|
@@ -74823,6 +75159,7 @@ function parseJsoncSafe2(content) {
|
|
|
74823
75159
|
function stripResolutionControlKeys(config) {
|
|
74824
75160
|
const {
|
|
74825
75161
|
"[codex]": _codex,
|
|
75162
|
+
"[native]": _native,
|
|
74826
75163
|
"[opencode]": _opencode,
|
|
74827
75164
|
"[senpi]": _senpi,
|
|
74828
75165
|
profiles: _profiles,
|
|
@@ -74848,21 +75185,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
74848
75185
|
function hasTamperedPrototype(value) {
|
|
74849
75186
|
if (Array.isArray(value))
|
|
74850
75187
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
74851
|
-
if (!
|
|
75188
|
+
if (!isRecord11(value))
|
|
74852
75189
|
return false;
|
|
74853
75190
|
const prototype = Object.getPrototypeOf(value);
|
|
74854
75191
|
if (prototype !== Object.prototype && prototype !== null)
|
|
74855
75192
|
return true;
|
|
74856
75193
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
74857
75194
|
}
|
|
74858
|
-
function
|
|
75195
|
+
function isRecord11(value) {
|
|
74859
75196
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
74860
75197
|
}
|
|
74861
75198
|
function containerAt(record, path) {
|
|
74862
75199
|
let container = record;
|
|
74863
75200
|
for (const segment of path) {
|
|
74864
75201
|
const next = container[segment];
|
|
74865
|
-
if (!
|
|
75202
|
+
if (!isRecord11(next))
|
|
74866
75203
|
return null;
|
|
74867
75204
|
container = next;
|
|
74868
75205
|
}
|
|
@@ -74973,6 +75310,15 @@ function legacyCategoryDiagnostic(path, renames) {
|
|
|
74973
75310
|
issuePaths: renames.map((rename) => rename.path)
|
|
74974
75311
|
};
|
|
74975
75312
|
}
|
|
75313
|
+
function legacyHarnessDiagnostic(path, renames) {
|
|
75314
|
+
const detail = renames.map((rename) => rename.dropped ? `${rename.path} ignored because ${rename.canonical} is also configured` : `${rename.path} renamed to ${rename.canonical}`).join(", ");
|
|
75315
|
+
return {
|
|
75316
|
+
kind: "deprecated-keys",
|
|
75317
|
+
message: `Deprecated harness block in ${path}: ${detail}. Rename it; the alias is removed in a future release.`,
|
|
75318
|
+
path,
|
|
75319
|
+
issuePaths: renames.map((rename) => rename.path)
|
|
75320
|
+
};
|
|
75321
|
+
}
|
|
74976
75322
|
function loadOmoConfig(options = {}) {
|
|
74977
75323
|
const fileSystem = options.fileSystem ?? DEFAULT_READ_FILE_SYSTEM;
|
|
74978
75324
|
const cwd = options.cwd ?? process.cwd();
|
|
@@ -74995,8 +75341,12 @@ function loadOmoConfig(options = {}) {
|
|
|
74995
75341
|
if (canonicalized.renames.length > 0) {
|
|
74996
75342
|
diagnostics.push(legacyCategoryDiagnostic(candidate.path, canonicalized.renames));
|
|
74997
75343
|
}
|
|
74998
|
-
|
|
74999
|
-
|
|
75344
|
+
const harnessCanonicalized = canonicalizeLegacyHarnessBlocks(canonicalized.document);
|
|
75345
|
+
if (harnessCanonicalized.renames.length > 0) {
|
|
75346
|
+
diagnostics.push(legacyHarnessDiagnostic(candidate.path, harnessCanonicalized.renames));
|
|
75347
|
+
}
|
|
75348
|
+
layers.push({ config: harnessCanonicalized.document, source: loaded.source });
|
|
75349
|
+
merged = mergeOmoConfigRecords(merged, harnessCanonicalized.document);
|
|
75000
75350
|
}
|
|
75001
75351
|
}
|
|
75002
75352
|
const requestedProfile = resolveOmoProfileName({
|
|
@@ -75044,6 +75394,7 @@ var init_loader2 = __esm(() => {
|
|
|
75044
75394
|
|
|
75045
75395
|
// packages/omo-config-core/src/loader/index.ts
|
|
75046
75396
|
var init_loader3 = __esm(() => {
|
|
75397
|
+
init_disabled_skills();
|
|
75047
75398
|
init_loader2();
|
|
75048
75399
|
init_merge();
|
|
75049
75400
|
init_paths();
|
|
@@ -77361,14 +77712,14 @@ function transformConfigJsoncSources(input) {
|
|
|
77361
77712
|
const omo = recordAt(legacy, "[omo]");
|
|
77362
77713
|
const senpi = recordAt(legacy, "[senpi]");
|
|
77363
77714
|
const history = legacyMigrationHistory(input.discovered, input.sources);
|
|
77364
|
-
const diagnostics = omo !== undefined && senpi !== undefined ? ["conflict: [
|
|
77715
|
+
const diagnostics = omo !== undefined && senpi !== undefined ? ["conflict: [native] legacy [omo] kept [native]"] : [];
|
|
77365
77716
|
return {
|
|
77366
77717
|
diagnostics,
|
|
77367
77718
|
document: {
|
|
77368
77719
|
$schema: OMO_SCHEMA_URL,
|
|
77369
77720
|
...recordAt(legacy, "[opencode]") === undefined ? {} : { "[opencode]": recordAt(legacy, "[opencode]") },
|
|
77370
77721
|
...recordAt(legacy, "[codex]") === undefined ? {} : { "[codex]": recordAt(legacy, "[codex]") },
|
|
77371
|
-
...senpi === undefined && omo === undefined ? {} : { "[
|
|
77722
|
+
...senpi === undefined && omo === undefined ? {} : { "[native]": senpi ?? omo },
|
|
77372
77723
|
...Object.keys(history).length === 0 ? {} : { legacy_migrations: history }
|
|
77373
77724
|
}
|
|
77374
77725
|
};
|
|
@@ -77632,7 +77983,7 @@ function normalizeTypedBlock(value, path, diagnostics, recurseProfiles) {
|
|
|
77632
77983
|
}
|
|
77633
77984
|
if (result["models"] !== undefined)
|
|
77634
77985
|
result["models"] = normalizeCatalog(result["models"]);
|
|
77635
|
-
for (const harness of ["[senpi]", "[codex]"]) {
|
|
77986
|
+
for (const harness of ["[senpi]", "[native]", "[codex]"]) {
|
|
77636
77987
|
if (result[harness] !== undefined)
|
|
77637
77988
|
result[harness] = normalizeTypedBlock(result[harness], [...path, harness], diagnostics, false);
|
|
77638
77989
|
}
|
|
@@ -77686,6 +78037,76 @@ var init_category_deep_split = __esm(() => {
|
|
|
77686
78037
|
init_src4();
|
|
77687
78038
|
});
|
|
77688
78039
|
|
|
78040
|
+
// packages/omo-opencode/src/config-migration/harness-native-rename.ts
|
|
78041
|
+
function transformHarnessNativeRename(document) {
|
|
78042
|
+
const { document: canonicalized, renames } = canonicalizeLegacyHarnessBlocks(document);
|
|
78043
|
+
return {
|
|
78044
|
+
diagnostics: renames.map((rename) => rename.dropped ? `${rename.path} removed: ${rename.canonical} is already configured` : `${rename.path} renamed to ${rename.canonical}`),
|
|
78045
|
+
document: canonicalized
|
|
78046
|
+
};
|
|
78047
|
+
}
|
|
78048
|
+
var HARNESS_NATIVE_RENAME_MIGRATION_ID = "2026-09-harness-native-rename";
|
|
78049
|
+
var init_harness_native_rename = __esm(() => {
|
|
78050
|
+
init_src4();
|
|
78051
|
+
});
|
|
78052
|
+
|
|
78053
|
+
// packages/omo-opencode/src/config-migration/subscription-provider-rename.ts
|
|
78054
|
+
function renameProviderId(providerId) {
|
|
78055
|
+
return LEGACY_PROVIDER_IDS[providerId];
|
|
78056
|
+
}
|
|
78057
|
+
function renameModelReference(modelReference) {
|
|
78058
|
+
const providerSeparator = modelReference.indexOf("/");
|
|
78059
|
+
if (providerSeparator <= 0)
|
|
78060
|
+
return;
|
|
78061
|
+
const canonicalProvider = renameProviderId(modelReference.slice(0, providerSeparator));
|
|
78062
|
+
if (canonicalProvider === undefined)
|
|
78063
|
+
return;
|
|
78064
|
+
const modelPartVerbatim = modelReference.slice(providerSeparator);
|
|
78065
|
+
return `${canonicalProvider}${modelPartVerbatim}`;
|
|
78066
|
+
}
|
|
78067
|
+
function rewriteValue(value, path, rewrites) {
|
|
78068
|
+
if (typeof value === "string") {
|
|
78069
|
+
const renamed = renameModelReference(value) ?? renameProviderId(value);
|
|
78070
|
+
if (renamed === undefined)
|
|
78071
|
+
return value;
|
|
78072
|
+
rewrites.push({ from: value, path, to: renamed });
|
|
78073
|
+
return renamed;
|
|
78074
|
+
}
|
|
78075
|
+
if (Array.isArray(value))
|
|
78076
|
+
return value.map((entry, index) => rewriteValue(entry, `${path}[${index}]`, rewrites));
|
|
78077
|
+
if (value !== null && typeof value === "object") {
|
|
78078
|
+
return Object.fromEntries(Object.entries(value).map(([key, entry]) => {
|
|
78079
|
+
const canonicalKey = renameModelReference(key) ?? renameProviderId(key);
|
|
78080
|
+
const nextKey = canonicalKey ?? key;
|
|
78081
|
+
if (canonicalKey !== undefined)
|
|
78082
|
+
rewrites.push({ from: key, path: `${path}.${key}`, to: canonicalKey });
|
|
78083
|
+
return [nextKey, rewriteValue(entry, `${path}.${nextKey}`, rewrites)];
|
|
78084
|
+
}));
|
|
78085
|
+
}
|
|
78086
|
+
return value;
|
|
78087
|
+
}
|
|
78088
|
+
function hasLegacySubscriptionProviderIds(document) {
|
|
78089
|
+
const rewrites = [];
|
|
78090
|
+
rewriteValue(document, "$", rewrites);
|
|
78091
|
+
return rewrites.length > 0;
|
|
78092
|
+
}
|
|
78093
|
+
function transformSubscriptionProviderRename(document) {
|
|
78094
|
+
const rewrites = [];
|
|
78095
|
+
const rewritten = rewriteValue(document, "$", rewrites);
|
|
78096
|
+
const next = rewritten !== null && typeof rewritten === "object" && !Array.isArray(rewritten) ? rewritten : {};
|
|
78097
|
+
return {
|
|
78098
|
+
diagnostics: rewrites.map((rewrite) => `${rewrite.path}: ${rewrite.from} renamed to ${rewrite.to}`),
|
|
78099
|
+
document: next
|
|
78100
|
+
};
|
|
78101
|
+
}
|
|
78102
|
+
var SUBSCRIPTION_PROVIDER_RENAME_MIGRATION_ID = "2026-09-subscription-provider-rename", LEGACY_PROVIDER_IDS;
|
|
78103
|
+
var init_subscription_provider_rename = __esm(() => {
|
|
78104
|
+
LEGACY_PROVIDER_IDS = Object.freeze({
|
|
78105
|
+
"claude-sdk-oauth": "anthropic-subscription",
|
|
78106
|
+
"openai-codex": "chatgpt-subscription"
|
|
78107
|
+
});
|
|
78108
|
+
});
|
|
78109
|
+
|
|
77689
78110
|
// packages/omo-opencode/src/config-migration/migration-plans.ts
|
|
77690
78111
|
function backupTimestamp(value) {
|
|
77691
78112
|
return value ?? new Date().toISOString().replace(/[:.]/g, "-");
|
|
@@ -77764,6 +78185,30 @@ function categoryDeepSplitPlan(targetPath) {
|
|
|
77764
78185
|
transform: inspect
|
|
77765
78186
|
};
|
|
77766
78187
|
}
|
|
78188
|
+
function harnessNativeRenamePlan(targetPath) {
|
|
78189
|
+
const inspect = (sources) => transformHarnessNativeRename(sources[0]?.value);
|
|
78190
|
+
return {
|
|
78191
|
+
id: HARNESS_NATIVE_RENAME_MIGRATION_ID,
|
|
78192
|
+
inspect,
|
|
78193
|
+
mode: "replace-target",
|
|
78194
|
+
shouldRun: hasLegacyHarnessBlocks,
|
|
78195
|
+
sources: [],
|
|
78196
|
+
targetPath,
|
|
78197
|
+
transform: inspect
|
|
78198
|
+
};
|
|
78199
|
+
}
|
|
78200
|
+
function subscriptionProviderRenamePlan(targetPath) {
|
|
78201
|
+
const inspect = (sources) => transformSubscriptionProviderRename(sources[0]?.value);
|
|
78202
|
+
return {
|
|
78203
|
+
id: SUBSCRIPTION_PROVIDER_RENAME_MIGRATION_ID,
|
|
78204
|
+
inspect,
|
|
78205
|
+
mode: "replace-target",
|
|
78206
|
+
shouldRun: hasLegacySubscriptionProviderIds,
|
|
78207
|
+
sources: [],
|
|
78208
|
+
targetPath,
|
|
78209
|
+
transform: inspect
|
|
78210
|
+
};
|
|
78211
|
+
}
|
|
77767
78212
|
function existingOmoConfigPath(directory, options) {
|
|
77768
78213
|
const fileSystem = discoveryFileSystem(options);
|
|
77769
78214
|
for (const fileName of ["omo.jsonc", "omo.json"]) {
|
|
@@ -77827,7 +78272,9 @@ function createLegacyConfigMigrationPlans(options) {
|
|
|
77827
78272
|
return [
|
|
77828
78273
|
...legacyPlans,
|
|
77829
78274
|
...inPlaceTargets.map(reasoningPlan),
|
|
77830
|
-
...inPlaceTargets.map(categoryDeepSplitPlan)
|
|
78275
|
+
...inPlaceTargets.map(categoryDeepSplitPlan),
|
|
78276
|
+
...inPlaceTargets.map(harnessNativeRenamePlan),
|
|
78277
|
+
...inPlaceTargets.map(subscriptionProviderRenamePlan)
|
|
77831
78278
|
];
|
|
77832
78279
|
}
|
|
77833
78280
|
var init_migration_plans = __esm(() => {
|
|
@@ -77838,6 +78285,8 @@ var init_migration_plans = __esm(() => {
|
|
|
77838
78285
|
init_transform_opencode();
|
|
77839
78286
|
init_reasoning_unification();
|
|
77840
78287
|
init_category_deep_split();
|
|
78288
|
+
init_harness_native_rename();
|
|
78289
|
+
init_subscription_provider_rename();
|
|
77841
78290
|
init_src4();
|
|
77842
78291
|
});
|
|
77843
78292
|
|
|
@@ -78622,7 +79071,7 @@ function shouldRetainLine(line, cutoffMs) {
|
|
|
78622
79071
|
function parseDiagnosticLine(line) {
|
|
78623
79072
|
try {
|
|
78624
79073
|
const parsed = JSON.parse(line);
|
|
78625
|
-
if (!
|
|
79074
|
+
if (!isRecord13(parsed)) {
|
|
78626
79075
|
return null;
|
|
78627
79076
|
}
|
|
78628
79077
|
return parsed;
|
|
@@ -78633,7 +79082,7 @@ function parseDiagnosticLine(line) {
|
|
|
78633
79082
|
throw error;
|
|
78634
79083
|
}
|
|
78635
79084
|
}
|
|
78636
|
-
function
|
|
79085
|
+
function isRecord13(value) {
|
|
78637
79086
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
78638
79087
|
}
|
|
78639
79088
|
function trimToMaxBytes(lines) {
|
|
@@ -86123,7 +86572,7 @@ function coerceBool(value) {
|
|
|
86123
86572
|
function coerceString(value) {
|
|
86124
86573
|
return typeof value == "string" ? value : undefined;
|
|
86125
86574
|
}
|
|
86126
|
-
function
|
|
86575
|
+
function isRecord14(value) {
|
|
86127
86576
|
return typeof value == "object" && value !== null && !Array.isArray(value);
|
|
86128
86577
|
}
|
|
86129
86578
|
function toRfc3339(timestamp) {
|
|
@@ -86145,7 +86594,7 @@ function relocateInto(properties, key, value) {
|
|
|
86145
86594
|
properties[key] = value;
|
|
86146
86595
|
}
|
|
86147
86596
|
function buildV1Event(message) {
|
|
86148
|
-
const sourceProperties =
|
|
86597
|
+
const sourceProperties = isRecord14(message.properties) ? message.properties : {};
|
|
86149
86598
|
const properties = {
|
|
86150
86599
|
...sourceProperties
|
|
86151
86600
|
};
|
|
@@ -88290,7 +88739,7 @@ var package_default2;
|
|
|
88290
88739
|
var init_package2 = __esm(() => {
|
|
88291
88740
|
package_default2 = {
|
|
88292
88741
|
name: "@oh-my-opencode/omo-codex",
|
|
88293
|
-
version: "5.0.0-beta.
|
|
88742
|
+
version: "5.0.0-beta.84",
|
|
88294
88743
|
type: "module",
|
|
88295
88744
|
private: true,
|
|
88296
88745
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -91465,8 +91914,11 @@ function formatConfigSummary(config) {
|
|
|
91465
91914
|
if (config.hasCodex) {
|
|
91466
91915
|
lines.push(` ${SYMBOLS.info} Codex autonomous mode: ${config.codexAutonomous ? "enabled" : "disabled"}`);
|
|
91467
91916
|
}
|
|
91468
|
-
if (config.
|
|
91469
|
-
lines.push(` ${SYMBOLS.info}
|
|
91917
|
+
if (config.hasNative) {
|
|
91918
|
+
lines.push(` ${SYMBOLS.info} OmO Native: installing from omo-ai@beta`);
|
|
91919
|
+
}
|
|
91920
|
+
if (config.hasNativeDev) {
|
|
91921
|
+
lines.push(` ${SYMBOLS.info} OmO Native development adapter: enabled`);
|
|
91470
91922
|
}
|
|
91471
91923
|
if (!config.hasOpenCode)
|
|
91472
91924
|
return lines.join(`
|
|
@@ -91623,7 +92075,8 @@ function argsToConfig(args) {
|
|
|
91623
92075
|
const platform = resolvePlatform(args);
|
|
91624
92076
|
const hasOpenCode = platform === "opencode" || platform === "both";
|
|
91625
92077
|
const hasCodex = platform === "codex" || platform === "both";
|
|
91626
|
-
const
|
|
92078
|
+
const hasNative = platform === "native";
|
|
92079
|
+
const hasNativeDev = platform === "native-dev";
|
|
91627
92080
|
return {
|
|
91628
92081
|
platform,
|
|
91629
92082
|
hasOpenCode,
|
|
@@ -91633,7 +92086,8 @@ function argsToConfig(args) {
|
|
|
91633
92086
|
hasGemini: hasOpenCode && args.gemini === "yes",
|
|
91634
92087
|
hasCopilot: hasOpenCode && args.copilot === "yes",
|
|
91635
92088
|
hasCodex,
|
|
91636
|
-
|
|
92089
|
+
hasNative,
|
|
92090
|
+
hasNativeDev,
|
|
91637
92091
|
hasOpencodeZen: hasOpenCode && args.opencodeZen === "yes",
|
|
91638
92092
|
hasZaiCodingPlan: hasOpenCode && args.zaiCodingPlan === "yes",
|
|
91639
92093
|
hasKimiForCoding: hasOpenCode && args.kimiForCoding === "yes",
|
|
@@ -94357,10 +94811,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
|
|
|
94357
94811
|
} catch {
|
|
94358
94812
|
return null;
|
|
94359
94813
|
}
|
|
94360
|
-
if (!
|
|
94814
|
+
if (!isRecord12(cache) || !Array.isArray(cache.models))
|
|
94361
94815
|
return null;
|
|
94362
94816
|
for (const entry of cache.models) {
|
|
94363
|
-
if (!
|
|
94817
|
+
if (!isRecord12(entry))
|
|
94364
94818
|
continue;
|
|
94365
94819
|
if (entry.slug !== model && entry.id !== model)
|
|
94366
94820
|
continue;
|
|
@@ -94385,7 +94839,7 @@ function readRootModelCatalogPath(config) {
|
|
|
94385
94839
|
const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
|
|
94386
94840
|
return single?.[1] ?? null;
|
|
94387
94841
|
}
|
|
94388
|
-
function
|
|
94842
|
+
function isRecord12(value) {
|
|
94389
94843
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
94390
94844
|
}
|
|
94391
94845
|
function removeFeatureFlagSetting(config, featureName) {
|
|
@@ -97194,7 +97648,7 @@ async function readSettings(settingsPath) {
|
|
|
97194
97648
|
throw error;
|
|
97195
97649
|
}
|
|
97196
97650
|
const parsed = JSON.parse(raw);
|
|
97197
|
-
if (!
|
|
97651
|
+
if (!isRecord15(parsed))
|
|
97198
97652
|
throw new Error(`${settingsPath} must contain a JSON object`);
|
|
97199
97653
|
return parsed;
|
|
97200
97654
|
}
|
|
@@ -97255,7 +97709,7 @@ async function nextBackupPath(settingsPath) {
|
|
|
97255
97709
|
function timestampForBackup() {
|
|
97256
97710
|
return new Date().toISOString().replace(/[-:.]/g, "");
|
|
97257
97711
|
}
|
|
97258
|
-
function
|
|
97712
|
+
function isRecord15(value) {
|
|
97259
97713
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
97260
97714
|
}
|
|
97261
97715
|
async function readPackageName(packagePath) {
|
|
@@ -97275,7 +97729,7 @@ async function readPackageName(packagePath) {
|
|
|
97275
97729
|
return;
|
|
97276
97730
|
throw error;
|
|
97277
97731
|
}
|
|
97278
|
-
return
|
|
97732
|
+
return isRecord15(parsed) && typeof parsed.name === "string" ? parsed.name : undefined;
|
|
97279
97733
|
}
|
|
97280
97734
|
async function fileExists(path) {
|
|
97281
97735
|
try {
|
|
@@ -97299,6 +97753,7 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
|
|
|
97299
97753
|
join61("extensions", "memory-run-supervisor.mjs"),
|
|
97300
97754
|
...PERSONA_ASSET_FILES.map((filename) => join61("extensions", filename)),
|
|
97301
97755
|
join61("skills", "ast-grep", "SKILL.md"),
|
|
97756
|
+
join61("skills", "browser", "SKILL.md"),
|
|
97302
97757
|
join61("skills", "coding-agent-sessions", "SKILL.md"),
|
|
97303
97758
|
join61("skills", "debugging", "SKILL.md"),
|
|
97304
97759
|
join61("skills", "frontend", "SKILL.md"),
|
|
@@ -97390,7 +97845,7 @@ async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
|
|
|
97390
97845
|
}
|
|
97391
97846
|
}
|
|
97392
97847
|
function isAstGrepRuntimeManifest(value) {
|
|
97393
|
-
if (!
|
|
97848
|
+
if (!isRecord15(value))
|
|
97394
97849
|
return false;
|
|
97395
97850
|
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));
|
|
97396
97851
|
}
|
|
@@ -97480,23 +97935,88 @@ function findRepoRoot2(importerDir) {
|
|
|
97480
97935
|
function fileExistsSync(path) {
|
|
97481
97936
|
return existsSync30(path);
|
|
97482
97937
|
}
|
|
97483
|
-
// packages/omo-opencode/src/cli/
|
|
97484
|
-
|
|
97485
|
-
|
|
97486
|
-
|
|
97938
|
+
// packages/omo-opencode/src/cli/install-native-dev/index.ts
|
|
97939
|
+
async function runNativeDevInstaller(options) {
|
|
97940
|
+
return runSenpiInstaller(options);
|
|
97941
|
+
}
|
|
97942
|
+
|
|
97943
|
+
// packages/omo-opencode/src/cli/install-native/plan.ts
|
|
97944
|
+
var NATIVE_PACKAGE_SPEC = "omo-ai@beta";
|
|
97945
|
+
var NATIVE_SETUP_COMMAND = "omo setup";
|
|
97946
|
+
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.";
|
|
97947
|
+
var PLANS = {
|
|
97948
|
+
bun: { packageManager: "bun", command: "bun", args: ["add", "-g", NATIVE_PACKAGE_SPEC] },
|
|
97949
|
+
npm: { packageManager: "npm", command: "npm", args: ["i", "-g", NATIVE_PACKAGE_SPEC] }
|
|
97950
|
+
};
|
|
97951
|
+
function resolveNativeInstallPlan(bunAvailable) {
|
|
97952
|
+
return bunAvailable ? PLANS.bun : PLANS.npm;
|
|
97953
|
+
}
|
|
97954
|
+
function formatNativeInstallCommand(plan) {
|
|
97955
|
+
return [plan.command, ...plan.args].join(" ");
|
|
97956
|
+
}
|
|
97957
|
+
// packages/omo-opencode/src/cli/install-native/run-native-install.ts
|
|
97958
|
+
init_bun_which_shim();
|
|
97959
|
+
init_spawn_with_windows_hide();
|
|
97960
|
+
function describeExit(plan, result) {
|
|
97961
|
+
const stderr = result.stderr?.trim();
|
|
97962
|
+
const head = `${plan.packageManager} exited with code ${result.exitCode}`;
|
|
97963
|
+
return stderr ? `${head}: ${stderr.split(`
|
|
97964
|
+
`).slice(-3).join(" ")}` : head;
|
|
97965
|
+
}
|
|
97966
|
+
async function runNativeInstall(dependencies = defaultNativeInstallDependencies()) {
|
|
97967
|
+
const plan = resolveNativeInstallPlan(await dependencies.isBunAvailable());
|
|
97968
|
+
const notes = plan.packageManager === "npm" ? [NATIVE_RECOMMENDED_RUNTIME_NOTE] : [];
|
|
97969
|
+
const manualCommand = formatNativeInstallCommand(plan);
|
|
97970
|
+
try {
|
|
97971
|
+
const result = await dependencies.spawn(plan.command, plan.args);
|
|
97972
|
+
if (result.exitCode === 0)
|
|
97973
|
+
return { ok: true, plan, notes };
|
|
97974
|
+
return { ok: false, plan, notes, failure: { reason: describeExit(plan, result), manualCommand } };
|
|
97975
|
+
} catch (error) {
|
|
97976
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
97977
|
+
return { ok: false, plan, notes, failure: { reason, manualCommand } };
|
|
97978
|
+
}
|
|
97979
|
+
}
|
|
97980
|
+
function nativeInstallSuccessLine() {
|
|
97981
|
+
return `OmO Native installed. Run ${NATIVE_SETUP_COMMAND} to finish onboarding.`;
|
|
97982
|
+
}
|
|
97983
|
+
function nativeInstallFailureLines(failure) {
|
|
97984
|
+
return [
|
|
97985
|
+
`OmO Native install failed: ${failure.reason}`,
|
|
97986
|
+
`Install it yourself with: ${failure.manualCommand}`,
|
|
97987
|
+
`Then run ${NATIVE_SETUP_COMMAND}.`
|
|
97988
|
+
];
|
|
97989
|
+
}
|
|
97990
|
+
function defaultNativeInstallDependencies() {
|
|
97991
|
+
return {
|
|
97992
|
+
isBunAvailable: () => bunWhich("bun") !== null,
|
|
97993
|
+
spawn: async (command, args) => {
|
|
97994
|
+
const proc = spawnWithWindowsHide([command, ...args], {
|
|
97995
|
+
env: process.env,
|
|
97996
|
+
stdout: "inherit",
|
|
97997
|
+
stderr: "inherit"
|
|
97998
|
+
});
|
|
97999
|
+
return { exitCode: await proc.exited };
|
|
98000
|
+
}
|
|
98001
|
+
};
|
|
98002
|
+
}
|
|
98003
|
+
// packages/omo-opencode/src/cli/native-edition-hint.ts
|
|
98004
|
+
var NATIVE_EDITION_INSTALL_COMMAND = "bun add -g omo-ai@beta";
|
|
98005
|
+
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";
|
|
98006
|
+
var NATIVE_EDITION_HINT_TITLE = "OmO Native (beta)";
|
|
97487
98007
|
var PLAIN_PAINT = {
|
|
97488
98008
|
command: (text) => text,
|
|
97489
98009
|
link: (text) => text
|
|
97490
98010
|
};
|
|
97491
|
-
function
|
|
97492
|
-
return !config.
|
|
98011
|
+
function shouldShowNativeEditionHint(config) {
|
|
98012
|
+
return !config.hasNative && !config.hasNativeDev;
|
|
97493
98013
|
}
|
|
97494
|
-
function
|
|
98014
|
+
function nativeEditionHintLines(paint = PLAIN_PAINT) {
|
|
97495
98015
|
return [
|
|
97496
|
-
`omo also ships as
|
|
97497
|
-
`Try it next to this install: ${paint.command(
|
|
98016
|
+
`omo also ships as OmO Native: the same omo as one ${paint.command("omo")} command, with no OpenCode host required.`,
|
|
98017
|
+
`Try it next to this install: ${paint.command(NATIVE_EDITION_INSTALL_COMMAND)}, then run ${paint.command("omo")}.`,
|
|
97498
98018
|
"This install keeps working as-is.",
|
|
97499
|
-
`Guide: ${paint.link(
|
|
98019
|
+
`Guide: ${paint.link(NATIVE_EDITION_GUIDE_URL)}`
|
|
97500
98020
|
];
|
|
97501
98021
|
}
|
|
97502
98022
|
|
|
@@ -97511,7 +98031,8 @@ var PLATFORM_REPOSITORIES = {
|
|
|
97511
98031
|
opencode: ["code-yeongyu/oh-my-openagent"],
|
|
97512
98032
|
codex: STAR_REPOSITORIES,
|
|
97513
98033
|
both: STAR_REPOSITORIES,
|
|
97514
|
-
|
|
98034
|
+
native: STAR_REPOSITORIES,
|
|
98035
|
+
"native-dev": STAR_REPOSITORIES
|
|
97515
98036
|
};
|
|
97516
98037
|
var execFileAsync2 = promisify3(execFile4);
|
|
97517
98038
|
async function runGitHubStarCommand(repository) {
|
|
@@ -98013,14 +98534,27 @@ async function runCliInstaller(args, version) {
|
|
|
98013
98534
|
}
|
|
98014
98535
|
console.log();
|
|
98015
98536
|
}
|
|
98016
|
-
if (config.
|
|
98017
|
-
printInfo("Installing
|
|
98537
|
+
if (config.hasNative) {
|
|
98538
|
+
printInfo("Installing OmO Native...");
|
|
98539
|
+
const outcome = await runNativeInstall();
|
|
98540
|
+
if (outcome.failure) {
|
|
98541
|
+
for (const line of nativeInstallFailureLines(outcome.failure))
|
|
98542
|
+
printError(line);
|
|
98543
|
+
return 1;
|
|
98544
|
+
}
|
|
98545
|
+
for (const note of outcome.notes)
|
|
98546
|
+
printInfo(note);
|
|
98547
|
+
printSuccess(nativeInstallSuccessLine());
|
|
98548
|
+
console.log();
|
|
98549
|
+
}
|
|
98550
|
+
if (config.hasNativeDev) {
|
|
98551
|
+
printInfo("Installing the OmO Native development adapter...");
|
|
98018
98552
|
try {
|
|
98019
|
-
const
|
|
98020
|
-
printSuccess(`
|
|
98553
|
+
const nativeDevResult = await runNativeDevInstaller();
|
|
98554
|
+
printSuccess(`OmO Native development adapter installed ${SYMBOLS.arrow} ${import_picocolors3.default.dim(nativeDevResult.settingsPath)}`);
|
|
98021
98555
|
} catch (error) {
|
|
98022
98556
|
const message = error instanceof Error ? error.message : String(error);
|
|
98023
|
-
printError(`
|
|
98557
|
+
printError(`OmO Native development adapter install failed: ${message}`);
|
|
98024
98558
|
return 1;
|
|
98025
98559
|
}
|
|
98026
98560
|
console.log();
|
|
@@ -98031,9 +98565,9 @@ async function runCliInstaller(args, version) {
|
|
|
98031
98565
|
printBox(`${import_picocolors3.default.bold("Pro Tip:")} Include ${import_picocolors3.default.cyan("ultrawork")} (or ${import_picocolors3.default.cyan("ulw")}) in your prompt.
|
|
98032
98566
|
` + `All features work like magic-parallel agents, background tasks,
|
|
98033
98567
|
` + `deep exploration, and relentless execution until completion.`, "The Magic Word");
|
|
98034
|
-
if (
|
|
98035
|
-
printInfo(import_picocolors3.default.bold(
|
|
98036
|
-
for (const line of
|
|
98568
|
+
if (shouldShowNativeEditionHint(config)) {
|
|
98569
|
+
printInfo(import_picocolors3.default.bold(NATIVE_EDITION_HINT_TITLE));
|
|
98570
|
+
for (const line of nativeEditionHintLines({ command: import_picocolors3.default.cyan, link: import_picocolors3.default.underline })) {
|
|
98037
98571
|
console.log(` ${line}`);
|
|
98038
98572
|
}
|
|
98039
98573
|
console.log();
|
|
@@ -99173,16 +99707,20 @@ var import_picocolors4 = __toESM(require_picocolors(), 1);
|
|
|
99173
99707
|
// packages/omo-opencode/src/cli/tui-install-prompts.ts
|
|
99174
99708
|
init_model_fallback();
|
|
99175
99709
|
|
|
99176
|
-
// packages/omo-opencode/src/cli/
|
|
99177
|
-
var
|
|
99178
|
-
|
|
99179
|
-
|
|
99180
|
-
|
|
99710
|
+
// packages/omo-opencode/src/cli/native-dev-platform-flag.ts
|
|
99711
|
+
var NATIVE_DEV_PLATFORM_ENV_FLAG = "OMO_ENABLE_NATIVE_DEV_PLATFORM";
|
|
99712
|
+
var LEGACY_NATIVE_DEV_PLATFORM_ENV_FLAG = "OMO_ENABLE_SENPI_PLATFORM";
|
|
99713
|
+
function isTruthy(value) {
|
|
99714
|
+
const normalized = value?.trim().toLowerCase();
|
|
99715
|
+
return normalized === "1" || normalized === "true";
|
|
99716
|
+
}
|
|
99717
|
+
function isNativeDevPlatformEnabled(env = process.env) {
|
|
99718
|
+
return isTruthy(env[NATIVE_DEV_PLATFORM_ENV_FLAG]) || isTruthy(env[LEGACY_NATIVE_DEV_PLATFORM_ENV_FLAG]);
|
|
99181
99719
|
}
|
|
99182
99720
|
function availableInstallPlatforms(env = process.env) {
|
|
99183
|
-
const platforms = ["opencode", "codex", "both"];
|
|
99184
|
-
if (
|
|
99185
|
-
platforms.push("
|
|
99721
|
+
const platforms = ["opencode", "codex", "both", "native"];
|
|
99722
|
+
if (isNativeDevPlatformEnabled(env))
|
|
99723
|
+
platforms.push("native-dev");
|
|
99186
99724
|
return platforms;
|
|
99187
99725
|
}
|
|
99188
99726
|
|
|
@@ -99205,10 +99743,15 @@ async function promptInstallPlatform(initialValue = "opencode") {
|
|
|
99205
99743
|
const options = [
|
|
99206
99744
|
{ value: "opencode", label: "OpenCode", hint: "Install OpenCode plugin only" },
|
|
99207
99745
|
{ value: "codex", label: "Codex", hint: "Install Codex harness adapter only" },
|
|
99208
|
-
{ value: "both", label: "Both", hint: "Install OpenCode plugin and Codex adapter" }
|
|
99746
|
+
{ value: "both", label: "Both", hint: "Install OpenCode plugin and Codex adapter" },
|
|
99747
|
+
{ value: "native", label: "OmO Native", hint: "Install the standalone omo command (no host required)" }
|
|
99209
99748
|
];
|
|
99210
|
-
if (
|
|
99211
|
-
options.push({
|
|
99749
|
+
if (isNativeDevPlatformEnabled()) {
|
|
99750
|
+
options.push({
|
|
99751
|
+
value: "native-dev",
|
|
99752
|
+
label: "OmO Native (development adapter)",
|
|
99753
|
+
hint: "Register this checkout into a local engine install"
|
|
99754
|
+
});
|
|
99212
99755
|
}
|
|
99213
99756
|
return selectOrCancel({
|
|
99214
99757
|
message: "Which platform do you want to install?",
|
|
@@ -99219,7 +99762,8 @@ async function promptInstallPlatform(initialValue = "opencode") {
|
|
|
99219
99762
|
async function promptInstallConfig(detected, platform, codexAutonomousOverride) {
|
|
99220
99763
|
const hasOpenCode = platform === "opencode" || platform === "both";
|
|
99221
99764
|
const hasCodex = platform === "codex" || platform === "both";
|
|
99222
|
-
const
|
|
99765
|
+
const hasNative = platform === "native";
|
|
99766
|
+
const hasNativeDev = platform === "native-dev";
|
|
99223
99767
|
const codexAutonomous = await resolveCodexAutonomous(hasCodex, codexAutonomousOverride);
|
|
99224
99768
|
if (codexAutonomous === null)
|
|
99225
99769
|
return null;
|
|
@@ -99233,7 +99777,8 @@ async function promptInstallConfig(detected, platform, codexAutonomousOverride)
|
|
|
99233
99777
|
hasGemini: false,
|
|
99234
99778
|
hasCopilot: false,
|
|
99235
99779
|
hasCodex,
|
|
99236
|
-
|
|
99780
|
+
hasNative,
|
|
99781
|
+
hasNativeDev,
|
|
99237
99782
|
hasOpencodeZen: false,
|
|
99238
99783
|
hasZaiCodingPlan: false,
|
|
99239
99784
|
hasKimiForCoding: false,
|
|
@@ -99376,7 +99921,8 @@ async function promptInstallConfig(detected, platform, codexAutonomousOverride)
|
|
|
99376
99921
|
hasGemini: gemini === "yes",
|
|
99377
99922
|
hasCopilot: copilot === "yes",
|
|
99378
99923
|
hasCodex,
|
|
99379
|
-
|
|
99924
|
+
hasNative,
|
|
99925
|
+
hasNativeDev,
|
|
99380
99926
|
hasOpencodeZen: opencodeZen === "yes",
|
|
99381
99927
|
hasZaiCodingPlan: zaiCodingPlan === "yes",
|
|
99382
99928
|
hasKimiForCoding: kimiForCoding === "yes",
|
|
@@ -99507,15 +100053,29 @@ async function runTuiInstaller(args, version) {
|
|
|
99507
100053
|
log4.info("The Codex harness is NOT installed. Fix the error above, then re-run: bunx oh-my-openagent install --platform=codex");
|
|
99508
100054
|
}
|
|
99509
100055
|
}
|
|
99510
|
-
if (config.
|
|
99511
|
-
spinner2.start("Installing
|
|
100056
|
+
if (config.hasNative) {
|
|
100057
|
+
spinner2.start("Installing OmO Native");
|
|
100058
|
+
const outcome = await runNativeInstall();
|
|
100059
|
+
if (outcome.failure) {
|
|
100060
|
+
spinner2.stop(`OmO Native install failed ${import_picocolors4.default.yellow("[!]")}`);
|
|
100061
|
+
for (const line of nativeInstallFailureLines(outcome.failure))
|
|
100062
|
+
log4.error(line);
|
|
100063
|
+
outro(import_picocolors4.default.red("Installation failed."));
|
|
100064
|
+
return 1;
|
|
100065
|
+
}
|
|
100066
|
+
spinner2.stop(nativeInstallSuccessLine());
|
|
100067
|
+
for (const note of outcome.notes)
|
|
100068
|
+
log4.info(note);
|
|
100069
|
+
}
|
|
100070
|
+
if (config.hasNativeDev) {
|
|
100071
|
+
spinner2.start("Installing the OmO Native development adapter");
|
|
99512
100072
|
try {
|
|
99513
|
-
const
|
|
99514
|
-
spinner2.stop(`
|
|
100073
|
+
const nativeDevResult = await runNativeDevInstaller();
|
|
100074
|
+
spinner2.stop(`OmO Native development adapter installed to ${import_picocolors4.default.cyan(nativeDevResult.settingsPath)}`);
|
|
99515
100075
|
} catch (error) {
|
|
99516
100076
|
const message = error instanceof Error ? error.message : String(error);
|
|
99517
|
-
spinner2.stop(`
|
|
99518
|
-
log4.error(`
|
|
100077
|
+
spinner2.stop(`OmO Native development adapter install failed ${import_picocolors4.default.yellow("[!]")}`);
|
|
100078
|
+
log4.error(`OmO Native development adapter install failed: ${message}`);
|
|
99519
100079
|
outro(import_picocolors4.default.red("Installation failed."));
|
|
99520
100080
|
return 1;
|
|
99521
100081
|
}
|
|
@@ -99529,9 +100089,9 @@ async function runTuiInstaller(args, version) {
|
|
|
99529
100089
|
note(`Include ${import_picocolors4.default.cyan("ultrawork")} (or ${import_picocolors4.default.cyan("ulw")}) in your prompt.
|
|
99530
100090
|
` + `All features work like magic-parallel agents, background tasks,
|
|
99531
100091
|
` + `deep exploration, and relentless execution until completion.`, "The Magic Word");
|
|
99532
|
-
if (
|
|
99533
|
-
log4.info(import_picocolors4.default.bold(
|
|
99534
|
-
log4.message(
|
|
100092
|
+
if (shouldShowNativeEditionHint(config)) {
|
|
100093
|
+
log4.info(import_picocolors4.default.bold(NATIVE_EDITION_HINT_TITLE));
|
|
100094
|
+
log4.message(nativeEditionHintLines({ command: import_picocolors4.default.cyan, link: import_picocolors4.default.underline }).join(`
|
|
99535
100095
|
`));
|
|
99536
100096
|
}
|
|
99537
100097
|
const shouldStar = await confirm({
|
|
@@ -99572,7 +100132,7 @@ async function runTuiInstaller(args, version) {
|
|
|
99572
100132
|
|
|
99573
100133
|
// packages/omo-opencode/src/cli/install.ts
|
|
99574
100134
|
var VERSION = package_default.version;
|
|
99575
|
-
async function
|
|
100135
|
+
async function install2(args) {
|
|
99576
100136
|
return args.tui ? runTuiInstaller(args, VERSION) : runCliInstaller(args, VERSION);
|
|
99577
100137
|
}
|
|
99578
100138
|
// packages/omo-opencode/src/cli/cleanup.ts
|
|
@@ -101073,7 +101633,8 @@ var HookNameSchema = _enum([
|
|
|
101073
101633
|
"webfetch-redirect-guard",
|
|
101074
101634
|
"fsync-skip-warning",
|
|
101075
101635
|
"plan-format-validator",
|
|
101076
|
-
"legacy-plugin-toast"
|
|
101636
|
+
"legacy-plugin-toast",
|
|
101637
|
+
"native-edition-nudge"
|
|
101077
101638
|
]);
|
|
101078
101639
|
// packages/omo-opencode/src/config/schema/i18n.ts
|
|
101079
101640
|
init_zod();
|
|
@@ -103176,14 +103737,14 @@ var NO_OP_POSTHOG2 = {
|
|
|
103176
103737
|
function isFalsy(value) {
|
|
103177
103738
|
return value === "0" || value === "false" || value === "no";
|
|
103178
103739
|
}
|
|
103179
|
-
function
|
|
103740
|
+
function isTruthy2(value) {
|
|
103180
103741
|
return value === "1" || value === "true" || value === "yes";
|
|
103181
103742
|
}
|
|
103182
103743
|
function shouldDisablePostHog(env, configEnabled) {
|
|
103183
103744
|
if (configEnabled === false) {
|
|
103184
103745
|
return true;
|
|
103185
103746
|
}
|
|
103186
|
-
if (
|
|
103747
|
+
if (isTruthy2(env.OMO_DISABLE_POSTHOG?.trim().toLowerCase())) {
|
|
103187
103748
|
return true;
|
|
103188
103749
|
}
|
|
103189
103750
|
return isFalsy(env.OMO_SEND_ANONYMOUS_TELEMETRY?.trim().toLowerCase());
|
|
@@ -104706,14 +105267,14 @@ var CANONICAL_REPLACEMENT = new Map([
|
|
|
104706
105267
|
var MIGRATE_SUFFIX = ", or run: oh-my-openagent config migrate";
|
|
104707
105268
|
var TUNING_CONTAINERS = new Set(["agents", "categories", "models"]);
|
|
104708
105269
|
var PASSTHROUGH_CONTAINERS = new Set(["provider_options", "providerOptions"]);
|
|
104709
|
-
function
|
|
105270
|
+
function isRecord16(value) {
|
|
104710
105271
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
104711
105272
|
}
|
|
104712
105273
|
function isHarnessBlock(key) {
|
|
104713
105274
|
return key.startsWith("[") && key.endsWith("]");
|
|
104714
105275
|
}
|
|
104715
105276
|
function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
104716
|
-
if (!
|
|
105277
|
+
if (!isRecord16(value))
|
|
104717
105278
|
return [];
|
|
104718
105279
|
const issues = [];
|
|
104719
105280
|
for (const [key, child] of Object.entries(value)) {
|
|
@@ -104729,7 +105290,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
104729
105290
|
});
|
|
104730
105291
|
continue;
|
|
104731
105292
|
}
|
|
104732
|
-
if (!
|
|
105293
|
+
if (!isRecord16(child))
|
|
104733
105294
|
continue;
|
|
104734
105295
|
if (PASSTHROUGH_CONTAINERS.has(key))
|
|
104735
105296
|
continue;
|
|
@@ -104748,7 +105309,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
104748
105309
|
return issues;
|
|
104749
105310
|
}
|
|
104750
105311
|
function migrateFixSuffix(parsed) {
|
|
104751
|
-
if (
|
|
105312
|
+
if (isRecord16(parsed) && hasMigrationMarker(parsed, REASONING_UNIFICATION_MIGRATION_ID))
|
|
104752
105313
|
return "";
|
|
104753
105314
|
return MIGRATE_SUFFIX;
|
|
104754
105315
|
}
|
|
@@ -105986,12 +106547,12 @@ async function auditBundleTargets(pluginRoot) {
|
|
|
105986
106547
|
let referencedCount = 0;
|
|
105987
106548
|
for (const manifestPath of await findManifestPaths(pluginRoot, ".mcp.json")) {
|
|
105988
106549
|
const manifest = await readJson2(manifestPath);
|
|
105989
|
-
if (manifest === null || !
|
|
106550
|
+
if (manifest === null || !isRecord17(manifest["mcpServers"]))
|
|
105990
106551
|
continue;
|
|
105991
106552
|
const manifestRoot = dirname33(manifestPath);
|
|
105992
106553
|
const isRootManifest = resolve24(manifestRoot) === resolve24(pluginRoot);
|
|
105993
106554
|
for (const server of Object.values(manifest["mcpServers"])) {
|
|
105994
|
-
if (!
|
|
106555
|
+
if (!isRecord17(server) || !Array.isArray(server["args"]))
|
|
105995
106556
|
continue;
|
|
105996
106557
|
for (const arg of server["args"]) {
|
|
105997
106558
|
if (typeof arg !== "string" || !isPluginRuntimePathArg(arg))
|
|
@@ -106077,7 +106638,7 @@ function collectHookCommands(value, commands) {
|
|
|
106077
106638
|
collectHookCommands(item, commands);
|
|
106078
106639
|
return;
|
|
106079
106640
|
}
|
|
106080
|
-
if (!
|
|
106641
|
+
if (!isRecord17(value))
|
|
106081
106642
|
return;
|
|
106082
106643
|
if (value["type"] === "command") {
|
|
106083
106644
|
if (typeof value["command"] === "string")
|
|
@@ -106132,7 +106693,7 @@ function parseDegradedEntries(value) {
|
|
|
106132
106693
|
return [];
|
|
106133
106694
|
const entries = [];
|
|
106134
106695
|
for (const item of value) {
|
|
106135
|
-
if (!
|
|
106696
|
+
if (!isRecord17(item))
|
|
106136
106697
|
continue;
|
|
106137
106698
|
if (typeof item["component"] !== "string" || typeof item["reason"] !== "string")
|
|
106138
106699
|
continue;
|
|
@@ -106166,7 +106727,7 @@ function degradedDetailLines(entries) {
|
|
|
106166
106727
|
async function readJson2(path) {
|
|
106167
106728
|
try {
|
|
106168
106729
|
const parsed = JSON.parse(await readFile29(path, "utf8"));
|
|
106169
|
-
return
|
|
106730
|
+
return isRecord17(parsed) ? parsed : null;
|
|
106170
106731
|
} catch (error) {
|
|
106171
106732
|
if (error instanceof Error)
|
|
106172
106733
|
return null;
|
|
@@ -106187,7 +106748,7 @@ function normalizeRelative(root, target) {
|
|
|
106187
106748
|
function normalizePathSeparators(path) {
|
|
106188
106749
|
return path.split("\\").join("/");
|
|
106189
106750
|
}
|
|
106190
|
-
function
|
|
106751
|
+
function isRecord17(value) {
|
|
106191
106752
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
106192
106753
|
}
|
|
106193
106754
|
|
|
@@ -108297,8 +108858,8 @@ var program2 = new Command;
|
|
|
108297
108858
|
function resolveInstallArgs(options, invocationName = process.env.OMO_INVOCATION_NAME) {
|
|
108298
108859
|
const defaultPlatform = process.env.OMO_EDITION === "codex" || invocationName === "lazycodex" || invocationName === "lazycodex-ai" ? "codex" : undefined;
|
|
108299
108860
|
const platform = options.platform ?? defaultPlatform;
|
|
108300
|
-
if (platform === "
|
|
108301
|
-
throw new Error(`The
|
|
108861
|
+
if (platform === "native-dev" && !isNativeDevPlatformEnabled()) {
|
|
108862
|
+
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.`);
|
|
108302
108863
|
}
|
|
108303
108864
|
return {
|
|
108304
108865
|
tui: options.tui !== false,
|
|
@@ -108343,7 +108904,7 @@ Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai > Kimi > Baili
|
|
|
108343
108904
|
`).action(async (options) => {
|
|
108344
108905
|
const rootOptions = program2.opts();
|
|
108345
108906
|
const args = resolveInstallArgs({ ...options, platform: options.platform ?? rootOptions.platform });
|
|
108346
|
-
const exitCode = await
|
|
108907
|
+
const exitCode = await install2(args);
|
|
108347
108908
|
process.exit(exitCode);
|
|
108348
108909
|
});
|
|
108349
108910
|
configureCleanupCommand(program2);
|