lazycodex-ai 5.1.66 → 5.1.69
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/dist/cli/index.js +220 -161
- package/dist/cli/service-auth/account-home.d.ts +47 -0
- package/dist/cli/service-auth/account-home.fixture.d.ts +1 -0
- package/dist/cli/service-auth/credential-lock.d.ts +2 -0
- package/dist/cli/service-auth/index.d.ts +1 -1
- package/dist/cli-node/index.js +220 -161
- package/package.json +2 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +6 -2
- 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/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/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- 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 +11 -7
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/LICENSE +21 -0
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +4 -3
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +8 -4
- package/packages/shared-skills/skills/browser/ATTRIBUTION.md +11 -7
- package/packages/shared-skills/skills/browser/runtime/omowright/LICENSE +21 -0
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +4 -3
package/dist/cli-node/index.js
CHANGED
|
@@ -2133,7 +2133,7 @@ var package_default;
|
|
|
2133
2133
|
var init_package = __esm(() => {
|
|
2134
2134
|
package_default = {
|
|
2135
2135
|
name: "oh-my-opencode",
|
|
2136
|
-
version: "5.1.
|
|
2136
|
+
version: "5.1.69",
|
|
2137
2137
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
2138
2138
|
main: "./dist/index.js",
|
|
2139
2139
|
types: "dist/index.d.ts",
|
|
@@ -2171,6 +2171,7 @@ var init_package = __esm(() => {
|
|
|
2171
2171
|
"packages/senpi-desktop-engine",
|
|
2172
2172
|
"packages/senpi-desktop-prelude",
|
|
2173
2173
|
"packages/senpi-desktop-service",
|
|
2174
|
+
"packages/senpi-desktop-sdk",
|
|
2174
2175
|
"packages/senpi-desktop-tool",
|
|
2175
2176
|
"packages/omo-opencode",
|
|
2176
2177
|
"packages/omo-native"
|
|
@@ -2278,7 +2279,7 @@ var init_package = __esm(() => {
|
|
|
2278
2279
|
"check:copy": "bun script/check-copy.ts",
|
|
2279
2280
|
typecheck: "bun run check:copy && bun check --no-script --all -p tsconfig.json && bun run typecheck:script && bun run typecheck:packages && bun run typecheck:skill-scripts",
|
|
2280
2281
|
"typecheck:skill-scripts": "bun check --no-script --all -p packages/shared-skills/skills/frontend/scripts/detect/tsconfig.json",
|
|
2281
|
-
"typecheck:packages": "bun check --no-script --all -p packages/rules-engine/tsconfig.json && bun check --no-script --all -p packages/delegate-core/tsconfig.json && bun check --no-script --all -p packages/mcp-stdio-core/tsconfig.json && bun check --no-script --all -p packages/mcp-client-core/tsconfig.json && bun check --no-script --all -p packages/git-bash-mcp/tsconfig.json && bun check --no-script --all -p packages/ast-grep-mcp/tsconfig.json && bun check --no-script --all -p packages/lsp-core/tsconfig.json && bun check --no-script --all -p packages/utils/tsconfig.json && bun check --no-script --all -p packages/device-service-core/tsconfig.json && bun check --no-script --all -p packages/model-core/tsconfig.json && bun check --no-script --all -p packages/omo-config-core/tsconfig.json && bun check --no-script --all -p packages/prompts-core/tsconfig.json && bun check --no-script --all -p packages/comment-checker-core/tsconfig.json && bun check --no-script --all -p packages/hashline-core/tsconfig.json && bun check --no-script --all -p packages/tmux-core/tsconfig.json && bun check --no-script --all -p packages/team-core/tsconfig.json && bun check --no-script --all -p packages/openclaw-core/tsconfig.json && bun check --no-script --all -p packages/boulder-state/tsconfig.json && bun check --no-script --all -p packages/isolation-core/tsconfig.json && bun check --no-script --all -p packages/memory-core/tsconfig.json && bun check --no-script --all -p packages/telemetry-core/tsconfig.json && bun check --no-script --all -p packages/claude-code-compat-core/tsconfig.json && bun check --no-script --all -p packages/skills-loader-core/tsconfig.json && bun check --no-script --all -p packages/agents-md-core/tsconfig.json && bun check --no-script --all -p packages/omo-codex/plugin/shared/tsconfig.json && bun check --no-script --all -p packages/omo-codex/tsconfig.json && bun check --no-script --all -p packages/omo-senpi/tsconfig.json && bun check --no-script --all -p packages/senpi-task/tsconfig.json && bun check --no-script --all -p packages/omo-opencode/tsconfig.json && bun check --no-script --all -p packages/omo-native/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-protocol/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-engine/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-prelude/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-service/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-tool/tsconfig.json",
|
|
2282
|
+
"typecheck:packages": "bun check --no-script --all -p packages/rules-engine/tsconfig.json && bun check --no-script --all -p packages/delegate-core/tsconfig.json && bun check --no-script --all -p packages/mcp-stdio-core/tsconfig.json && bun check --no-script --all -p packages/mcp-client-core/tsconfig.json && bun check --no-script --all -p packages/git-bash-mcp/tsconfig.json && bun check --no-script --all -p packages/ast-grep-mcp/tsconfig.json && bun check --no-script --all -p packages/lsp-core/tsconfig.json && bun check --no-script --all -p packages/utils/tsconfig.json && bun check --no-script --all -p packages/device-service-core/tsconfig.json && bun check --no-script --all -p packages/model-core/tsconfig.json && bun check --no-script --all -p packages/omo-config-core/tsconfig.json && bun check --no-script --all -p packages/prompts-core/tsconfig.json && bun check --no-script --all -p packages/comment-checker-core/tsconfig.json && bun check --no-script --all -p packages/hashline-core/tsconfig.json && bun check --no-script --all -p packages/tmux-core/tsconfig.json && bun check --no-script --all -p packages/team-core/tsconfig.json && bun check --no-script --all -p packages/openclaw-core/tsconfig.json && bun check --no-script --all -p packages/boulder-state/tsconfig.json && bun check --no-script --all -p packages/isolation-core/tsconfig.json && bun check --no-script --all -p packages/memory-core/tsconfig.json && bun check --no-script --all -p packages/telemetry-core/tsconfig.json && bun check --no-script --all -p packages/claude-code-compat-core/tsconfig.json && bun check --no-script --all -p packages/skills-loader-core/tsconfig.json && bun check --no-script --all -p packages/agents-md-core/tsconfig.json && bun check --no-script --all -p packages/omo-codex/plugin/shared/tsconfig.json && bun check --no-script --all -p packages/omo-codex/tsconfig.json && bun check --no-script --all -p packages/omo-senpi/tsconfig.json && bun check --no-script --all -p packages/senpi-task/tsconfig.json && bun check --no-script --all -p packages/omo-opencode/tsconfig.json && bun check --no-script --all -p packages/omo-native/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-protocol/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-engine/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-prelude/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-sdk/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-service/tsconfig.json && bun check --no-script --all -p packages/senpi-desktop-tool/tsconfig.json",
|
|
2282
2283
|
"typecheck:script": "bun check --no-script --all -p script/tsconfig.json",
|
|
2283
2284
|
test: "bun test --timeout 20000",
|
|
2284
2285
|
"changelog:section": "bun script/changelog-section.ts",
|
|
@@ -2288,7 +2289,7 @@ var init_package = __esm(() => {
|
|
|
2288
2289
|
"test:windows-codex": "bun run test:codex",
|
|
2289
2290
|
"build:git-bash-mcp": "bun run --cwd packages/git-bash-mcp build",
|
|
2290
2291
|
"build:ast-grep-mcp": "bun run --cwd packages/ast-grep-mcp build",
|
|
2291
|
-
"test:desktop": "bun script/check-cargo-pinned-deps.mjs && bun run --cwd packages/senpi-desktop-protocol test && bun run --cwd packages/senpi-desktop-engine test && bun run --cwd packages/senpi-desktop-prelude test && bun run --cwd packages/senpi-desktop-service test && bun run --cwd packages/senpi-desktop-tool test",
|
|
2292
|
+
"test:desktop": "bun script/check-cargo-pinned-deps.mjs && node --test scripts/desktop-package-boundaries.test.mjs && bun run --cwd packages/senpi-desktop-protocol test && bun run --cwd packages/senpi-desktop-engine test && bun run --cwd packages/senpi-desktop-prelude test && bun run --cwd packages/senpi-desktop-sdk test && bun run --cwd packages/senpi-desktop-service test && bun run --cwd packages/senpi-desktop-tool test",
|
|
2292
2293
|
"lint:ratchet": "bun script/lint-ratchet.ts",
|
|
2293
2294
|
"knip:check": "knip --no-progress --no-config-hints",
|
|
2294
2295
|
"lint:ratchet:update": "bun script/lint-ratchet.ts --update",
|
|
@@ -2320,7 +2321,7 @@ var init_package = __esm(() => {
|
|
|
2320
2321
|
},
|
|
2321
2322
|
devDependencies: {
|
|
2322
2323
|
"@clack/prompts": "^1.8.1",
|
|
2323
|
-
"@code-yeongyu/senpi": "2026.11.
|
|
2324
|
+
"@code-yeongyu/senpi": "2026.11.10-2",
|
|
2324
2325
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
2325
2326
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
2326
2327
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -2347,6 +2348,7 @@ var init_package = __esm(() => {
|
|
|
2347
2348
|
"@oh-my-opencode/senpi-desktop-engine": "workspace:*",
|
|
2348
2349
|
"@oh-my-opencode/senpi-desktop-prelude": "workspace:*",
|
|
2349
2350
|
"@oh-my-opencode/senpi-desktop-protocol": "workspace:*",
|
|
2351
|
+
"@oh-my-opencode/senpi-desktop-sdk": "workspace:*",
|
|
2350
2352
|
"@oh-my-opencode/senpi-desktop-service": "workspace:*",
|
|
2351
2353
|
"@oh-my-opencode/senpi-desktop-tool": "workspace:*",
|
|
2352
2354
|
"@oh-my-opencode/senpi-task": "workspace:*",
|
|
@@ -2385,18 +2387,18 @@ var init_package = __esm(() => {
|
|
|
2385
2387
|
typescript: "^7.0.2"
|
|
2386
2388
|
},
|
|
2387
2389
|
optionalDependencies: {
|
|
2388
|
-
"oh-my-opencode-darwin-arm64": "5.1.
|
|
2389
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
2390
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
2391
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
2392
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
2393
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
2394
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
2395
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
2396
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
2397
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
2398
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
2399
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
2390
|
+
"oh-my-opencode-darwin-arm64": "5.1.69",
|
|
2391
|
+
"oh-my-opencode-darwin-x64": "5.1.69",
|
|
2392
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.69",
|
|
2393
|
+
"oh-my-opencode-linux-arm64": "5.1.69",
|
|
2394
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.69",
|
|
2395
|
+
"oh-my-opencode-linux-x64": "5.1.69",
|
|
2396
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.69",
|
|
2397
|
+
"oh-my-opencode-linux-x64-musl": "5.1.69",
|
|
2398
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.69",
|
|
2399
|
+
"oh-my-opencode-windows-arm64": "5.1.69",
|
|
2400
|
+
"oh-my-opencode-windows-x64": "5.1.69",
|
|
2401
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.69"
|
|
2400
2402
|
},
|
|
2401
2403
|
overrides: {
|
|
2402
2404
|
hono: "^4.13.8",
|
|
@@ -8081,7 +8083,7 @@ var init_latest_models = __esm(() => {
|
|
|
8081
8083
|
claudeOpus: "claude-opus-5-5",
|
|
8082
8084
|
claudeSonnet: "claude-sonnet-5-5",
|
|
8083
8085
|
claudeHaiku: "claude-haiku-5-5",
|
|
8084
|
-
claudeFable: "claude-fable-5-
|
|
8086
|
+
claudeFable: "claude-fable-5-2",
|
|
8085
8087
|
gptAstra: "gpt-6-astra",
|
|
8086
8088
|
gptSol: "gpt-6.1-sol",
|
|
8087
8089
|
gptSolFast: "gpt-6.1-sol-fast",
|
|
@@ -9347,61 +9349,9 @@ var init_file_reference_resolver = __esm(() => {
|
|
|
9347
9349
|
init_logger2();
|
|
9348
9350
|
});
|
|
9349
9351
|
|
|
9350
|
-
// packages/model-core/src/fable-55-launch.ts
|
|
9351
|
-
function isFable55Model(model) {
|
|
9352
|
-
const modelId = model.split("/").pop() ?? model;
|
|
9353
|
-
return modelId.replaceAll(".", "-") === FABLE_55_LAUNCH.id;
|
|
9354
|
-
}
|
|
9355
|
-
function selectLaunchRungs(rungs, gate, onRejected) {
|
|
9356
|
-
return rungs.filter((rung) => {
|
|
9357
|
-
if (!isFable55Model(rung.model))
|
|
9358
|
-
return true;
|
|
9359
|
-
if (!gate.released)
|
|
9360
|
-
return false;
|
|
9361
|
-
if (rung.variant !== undefined && gate.accepted.includes(rung.variant))
|
|
9362
|
-
return true;
|
|
9363
|
-
onRejected({ model: rung.model, variant: rung.variant });
|
|
9364
|
-
return false;
|
|
9365
|
-
});
|
|
9366
|
-
}
|
|
9367
|
-
function recordLaunchRungRejection(rejection) {
|
|
9368
|
-
launchRungRejectionLog.push(rejection);
|
|
9369
|
-
console.warn(`[fable-55-launch] dropped a Fable 5.5 rung with effort "${rejection.variant ?? "(none)"}": not in FABLE_55_EFFORTS.accepted`);
|
|
9370
|
-
}
|
|
9371
|
-
function launchRungs(rungs) {
|
|
9372
|
-
return selectLaunchRungs(rungs, { released: FABLE_55_RELEASED, accepted: FABLE_55_EFFORTS.accepted }, recordLaunchRungRejection);
|
|
9373
|
-
}
|
|
9374
|
-
function launchDefaultModelId() {
|
|
9375
|
-
return FABLE_55_RELEASED ? FABLE_55_LAUNCH.id : FABLE_55_PREDECESSOR;
|
|
9376
|
-
}
|
|
9377
|
-
var FABLE_55_LAUNCH, FABLE_55_RELEASED = false, FABLE_55_EFFORTS, launchRungRejectionLog, FABLE_55_PREDECESSOR;
|
|
9378
|
-
var init_fable_55_launch = __esm(() => {
|
|
9379
|
-
init_latest_models();
|
|
9380
|
-
FABLE_55_LAUNCH = {
|
|
9381
|
-
id: "claude-fable-5-5",
|
|
9382
|
-
family: "claude-fable",
|
|
9383
|
-
reasoning: undefined,
|
|
9384
|
-
temperature: undefined,
|
|
9385
|
-
toolCall: undefined,
|
|
9386
|
-
modalities: undefined,
|
|
9387
|
-
limit: {
|
|
9388
|
-
context: undefined,
|
|
9389
|
-
input: undefined,
|
|
9390
|
-
output: undefined
|
|
9391
|
-
}
|
|
9392
|
-
};
|
|
9393
|
-
FABLE_55_EFFORTS = {
|
|
9394
|
-
measured: false,
|
|
9395
|
-
accepted: ["xhigh", "max"]
|
|
9396
|
-
};
|
|
9397
|
-
launchRungRejectionLog = [];
|
|
9398
|
-
FABLE_55_PREDECESSOR = LATEST_MODEL_BY_FAMILY.claudeFable;
|
|
9399
|
-
});
|
|
9400
|
-
|
|
9401
9352
|
// packages/model-core/src/agent-model-requirements.ts
|
|
9402
9353
|
var AGENT_MODEL_REQUIREMENTS;
|
|
9403
9354
|
var init_agent_model_requirements = __esm(() => {
|
|
9404
|
-
init_fable_55_launch();
|
|
9405
9355
|
init_latest_models();
|
|
9406
9356
|
AGENT_MODEL_REQUIREMENTS = {
|
|
9407
9357
|
sisyphus: {
|
|
@@ -9496,15 +9446,15 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9496
9446
|
]
|
|
9497
9447
|
},
|
|
9498
9448
|
prometheus: {
|
|
9499
|
-
fallbackChain:
|
|
9449
|
+
fallbackChain: [
|
|
9500
9450
|
{
|
|
9501
9451
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9502
|
-
model:
|
|
9452
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9503
9453
|
variant: "xhigh"
|
|
9504
9454
|
},
|
|
9505
9455
|
{
|
|
9506
9456
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9507
|
-
model:
|
|
9457
|
+
model: "claude-fable-5-1",
|
|
9508
9458
|
variant: "xhigh"
|
|
9509
9459
|
},
|
|
9510
9460
|
{
|
|
@@ -9518,18 +9468,18 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9518
9468
|
variant: "max"
|
|
9519
9469
|
},
|
|
9520
9470
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9521
|
-
]
|
|
9471
|
+
]
|
|
9522
9472
|
},
|
|
9523
9473
|
metis: {
|
|
9524
|
-
fallbackChain:
|
|
9474
|
+
fallbackChain: [
|
|
9525
9475
|
{
|
|
9526
9476
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9527
|
-
model:
|
|
9477
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9528
9478
|
variant: "max"
|
|
9529
9479
|
},
|
|
9530
9480
|
{
|
|
9531
9481
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9532
|
-
model:
|
|
9482
|
+
model: "claude-fable-5-1",
|
|
9533
9483
|
variant: "max"
|
|
9534
9484
|
},
|
|
9535
9485
|
{
|
|
@@ -9543,7 +9493,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9543
9493
|
variant: "max"
|
|
9544
9494
|
},
|
|
9545
9495
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9546
|
-
]
|
|
9496
|
+
]
|
|
9547
9497
|
},
|
|
9548
9498
|
momus: {
|
|
9549
9499
|
fallbackChain: [
|
|
@@ -9603,20 +9553,19 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9603
9553
|
// packages/model-core/src/category-model-requirements.ts
|
|
9604
9554
|
var CATEGORY_MODEL_REQUIREMENTS;
|
|
9605
9555
|
var init_category_model_requirements = __esm(() => {
|
|
9606
|
-
init_fable_55_launch();
|
|
9607
9556
|
init_latest_models();
|
|
9608
9557
|
CATEGORY_MODEL_REQUIREMENTS = {
|
|
9609
9558
|
"visual-engineering": {
|
|
9610
|
-
fallbackChain:
|
|
9559
|
+
fallbackChain: [
|
|
9611
9560
|
{ providers: ["google", "google-vertex", "opencode"], model: LATEST_MODEL_BY_FAMILY.geminiPro, variant: "low" },
|
|
9612
9561
|
{
|
|
9613
9562
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9614
|
-
model:
|
|
9563
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9615
9564
|
variant: "max"
|
|
9616
9565
|
},
|
|
9617
9566
|
{
|
|
9618
9567
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9619
|
-
model:
|
|
9568
|
+
model: "claude-fable-5-1",
|
|
9620
9569
|
variant: "max"
|
|
9621
9570
|
},
|
|
9622
9571
|
{
|
|
@@ -9630,7 +9579,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9630
9579
|
variant: "max"
|
|
9631
9580
|
},
|
|
9632
9581
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9633
|
-
]
|
|
9582
|
+
]
|
|
9634
9583
|
},
|
|
9635
9584
|
ultrabrain: {
|
|
9636
9585
|
fallbackChain: [
|
|
@@ -9664,15 +9613,15 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9664
9613
|
]
|
|
9665
9614
|
},
|
|
9666
9615
|
artistry: {
|
|
9667
|
-
fallbackChain:
|
|
9616
|
+
fallbackChain: [
|
|
9668
9617
|
{
|
|
9669
9618
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9670
|
-
model:
|
|
9619
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9671
9620
|
variant: "max"
|
|
9672
9621
|
},
|
|
9673
9622
|
{
|
|
9674
9623
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9675
|
-
model:
|
|
9624
|
+
model: "claude-fable-5-1",
|
|
9676
9625
|
variant: "max"
|
|
9677
9626
|
},
|
|
9678
9627
|
{
|
|
@@ -9686,7 +9635,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9686
9635
|
variant: "max"
|
|
9687
9636
|
},
|
|
9688
9637
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9689
|
-
]
|
|
9638
|
+
]
|
|
9690
9639
|
},
|
|
9691
9640
|
quick: {
|
|
9692
9641
|
fallbackChain: [
|
|
@@ -10372,9 +10321,7 @@ var init_runtime_fallback_model = () => {};
|
|
|
10372
10321
|
// packages/model-core/src/model-capabilities/supplemental-entries.ts
|
|
10373
10322
|
var SUPPLEMENTAL_MODEL_CAPABILITIES;
|
|
10374
10323
|
var init_supplemental_entries = __esm(() => {
|
|
10375
|
-
init_fable_55_launch();
|
|
10376
10324
|
SUPPLEMENTAL_MODEL_CAPABILITIES = {
|
|
10377
|
-
[FABLE_55_LAUNCH.id]: FABLE_55_LAUNCH,
|
|
10378
10325
|
"kimi-k3": {
|
|
10379
10326
|
id: "kimi-k3",
|
|
10380
10327
|
family: "kimi",
|
|
@@ -10450,6 +10397,21 @@ var init_supplemental_entries = __esm(() => {
|
|
|
10450
10397
|
output: 128000
|
|
10451
10398
|
}
|
|
10452
10399
|
},
|
|
10400
|
+
"claude-fable-5-2": {
|
|
10401
|
+
id: "claude-fable-5-2",
|
|
10402
|
+
family: "claude-fable",
|
|
10403
|
+
reasoning: true,
|
|
10404
|
+
temperature: false,
|
|
10405
|
+
toolCall: true,
|
|
10406
|
+
modalities: {
|
|
10407
|
+
input: ["text", "image", "pdf"],
|
|
10408
|
+
output: ["text"]
|
|
10409
|
+
},
|
|
10410
|
+
limit: {
|
|
10411
|
+
context: 1e6,
|
|
10412
|
+
output: 128000
|
|
10413
|
+
}
|
|
10414
|
+
},
|
|
10453
10415
|
"gpt-6-astra": {
|
|
10454
10416
|
id: "gpt-6-astra",
|
|
10455
10417
|
family: "gpt",
|
|
@@ -10854,25 +10816,16 @@ var init_supplemental_entries = __esm(() => {
|
|
|
10854
10816
|
});
|
|
10855
10817
|
|
|
10856
10818
|
// packages/model-core/src/model-capabilities/bundled-snapshot.ts
|
|
10857
|
-
function fillGaps(generated, placeholder) {
|
|
10858
|
-
const merged = { ...placeholder };
|
|
10859
|
-
for (const [key, value] of Object.entries(generated)) {
|
|
10860
|
-
if (value === undefined)
|
|
10861
|
-
continue;
|
|
10862
|
-
const base = merged[key];
|
|
10863
|
-
merged[key] = value !== null && typeof value === "object" && !Array.isArray(value) && base !== null && typeof base === "object" ? { ...base, ...Object.fromEntries(Object.entries(value).filter(([, v]) => v !== undefined)) } : value;
|
|
10864
|
-
}
|
|
10865
|
-
return merged;
|
|
10866
|
-
}
|
|
10867
10819
|
function getBundledModelCapabilitiesSnapshot(snapshotJson) {
|
|
10868
|
-
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
|
|
10872
|
-
|
|
10820
|
+
return {
|
|
10821
|
+
...snapshotJson,
|
|
10822
|
+
models: {
|
|
10823
|
+
...snapshotJson.models,
|
|
10824
|
+
...SUPPLEMENTAL_MODEL_CAPABILITIES
|
|
10825
|
+
}
|
|
10826
|
+
};
|
|
10873
10827
|
}
|
|
10874
10828
|
var init_bundled_snapshot = __esm(() => {
|
|
10875
|
-
init_fable_55_launch();
|
|
10876
10829
|
init_supplemental_entries();
|
|
10877
10830
|
});
|
|
10878
10831
|
|
|
@@ -11300,7 +11253,6 @@ var init_src2 = __esm(() => {
|
|
|
11300
11253
|
init_model_requirements();
|
|
11301
11254
|
init_latest_models();
|
|
11302
11255
|
init_model_family_detectors();
|
|
11303
|
-
init_fable_55_launch();
|
|
11304
11256
|
init_model_capability_aliases();
|
|
11305
11257
|
init_model_capability_heuristics();
|
|
11306
11258
|
init_model_capability_guardrails();
|
|
@@ -11622,7 +11574,6 @@ Approach:
|
|
|
11622
11574
|
</Category_Context>`, GOOGLE_CATEGORIES;
|
|
11623
11575
|
var init_google_categories = __esm(() => {
|
|
11624
11576
|
init_latest_models();
|
|
11625
|
-
init_src2();
|
|
11626
11577
|
GOOGLE_CATEGORIES = [
|
|
11627
11578
|
{
|
|
11628
11579
|
name: "visual-engineering",
|
|
@@ -11632,7 +11583,7 @@ var init_google_categories = __esm(() => {
|
|
|
11632
11583
|
},
|
|
11633
11584
|
{
|
|
11634
11585
|
name: "artistry",
|
|
11635
|
-
config: { model: `anthropic/${
|
|
11586
|
+
config: { model: `anthropic/${LATEST_MODEL_BY_FAMILY.claudeFable}`, variant: "max" },
|
|
11636
11587
|
description: "Complex problem-solving with unconventional, creative approaches - beyond standard patterns",
|
|
11637
11588
|
promptAppend: ARTISTRY_CATEGORY_PROMPT_APPEND
|
|
11638
11589
|
}
|
|
@@ -77144,7 +77095,11 @@ var init_computer = __esm(() => {
|
|
|
77144
77095
|
audit_log: object({ enabled: boolean2() }).partial().strict(),
|
|
77145
77096
|
screenshot_gc: object({ enabled: boolean2(), stale_ms: nonNegativeInteger, scan_interval_ms: nonNegativeInteger }).partial().strict(),
|
|
77146
77097
|
engine_path: string2().min(1),
|
|
77147
|
-
cua_adapter: boolean2()
|
|
77098
|
+
cua_adapter: boolean2(),
|
|
77099
|
+
run_sandbox: _enum(["vm", "quickjs"]).describe("Where `run` code executes (default: vm; reserved: every run uses vm until the QuickJS cell lands)"),
|
|
77100
|
+
intervention: _enum(["continue", "pause"]).describe("What a background action does while the user uses the target app (default: continue)"),
|
|
77101
|
+
macos_key_priming: _enum(["on", "off"]).describe("macOS background keys first make the target window key (default: off)"),
|
|
77102
|
+
trace: boolean2().describe("Per-request timing traces (default: false)")
|
|
77148
77103
|
}).partial().strict().describe("Experimental computer use in OmO Native: screenshots, windows, accessibility trees and native mouse and keyboard input. Every key is optional; defaults depend on the host.");
|
|
77149
77104
|
OmoComputerSettingsSchema = OmoComputerSettingsLayerSchema;
|
|
77150
77105
|
});
|
|
@@ -92837,7 +92792,7 @@ var package_default2;
|
|
|
92837
92792
|
var init_package2 = __esm(() => {
|
|
92838
92793
|
package_default2 = {
|
|
92839
92794
|
name: "@oh-my-opencode/omo-codex",
|
|
92840
|
-
version: "5.1.
|
|
92795
|
+
version: "5.1.69",
|
|
92841
92796
|
type: "module",
|
|
92842
92797
|
private: true,
|
|
92843
92798
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -100228,6 +100183,8 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
|
|
|
100228
100183
|
join66("extensions", "omo-member.js"),
|
|
100229
100184
|
join66("extensions", "memory-run-supervisor.mjs"),
|
|
100230
100185
|
join66("extensions", "gateway-store-worker.mjs"),
|
|
100186
|
+
join66("extensions", "omo-computer-run-worker.mjs"),
|
|
100187
|
+
join66("extensions", "quickjs.wasm"),
|
|
100231
100188
|
...PERSONA_ASSET_FILES.map((filename) => join66("extensions", filename)),
|
|
100232
100189
|
join66("skills", "ast-grep", "SKILL.md"),
|
|
100233
100190
|
join66("skills", "browser", "SKILL.md"),
|
|
@@ -109601,8 +109558,8 @@ var package_default3 = {
|
|
|
109601
109558
|
},
|
|
109602
109559
|
dependencies: {
|
|
109603
109560
|
"@clack/prompts": "^1.8.1",
|
|
109604
|
-
"@code-yeongyu/senpi": "2026.11.
|
|
109605
|
-
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.
|
|
109561
|
+
"@code-yeongyu/senpi": "2026.11.10-2",
|
|
109562
|
+
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.10-2",
|
|
109606
109563
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
109607
109564
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
109608
109565
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -112862,8 +112819,110 @@ import { createHash as createHash12, randomUUID as randomUUID8 } from "node:cryp
|
|
|
112862
112819
|
import { basename as basename17 } from "node:path";
|
|
112863
112820
|
|
|
112864
112821
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/darwin-backend.ts
|
|
112822
|
+
import { homedir as homedir32 } from "node:os";
|
|
112823
|
+
import { join as join110 } from "node:path";
|
|
112824
|
+
|
|
112825
|
+
// packages/omo-opencode/src/cli/service-auth/account-home.ts
|
|
112826
|
+
import { execFileSync as execFileSync4 } from "node:child_process";
|
|
112827
|
+
import { accessSync as accessSync5, constants as constants13, mkdirSync as mkdirSync19, readFileSync as readFileSync44, statSync as statSync7 } from "node:fs";
|
|
112865
112828
|
import { homedir as homedir31 } from "node:os";
|
|
112866
|
-
import { join as
|
|
112829
|
+
import { join as join106, posix as posix13, win32 as win3210 } from "node:path";
|
|
112830
|
+
var lockDirectoryIn = (home) => join106(home, ".omo", "session-locks");
|
|
112831
|
+
function userRecordHome(facts) {
|
|
112832
|
+
try {
|
|
112833
|
+
if (facts.platform === "linux")
|
|
112834
|
+
return passwdHome(facts);
|
|
112835
|
+
if (facts.platform === "darwin")
|
|
112836
|
+
return darwinHome(facts);
|
|
112837
|
+
if (facts.platform === "win32")
|
|
112838
|
+
return windowsProfile(facts);
|
|
112839
|
+
return;
|
|
112840
|
+
} catch {
|
|
112841
|
+
return;
|
|
112842
|
+
}
|
|
112843
|
+
}
|
|
112844
|
+
function passwdHome(facts) {
|
|
112845
|
+
if (facts.uid === undefined)
|
|
112846
|
+
return;
|
|
112847
|
+
const uid = String(facts.uid);
|
|
112848
|
+
const home = facts.readFile("/etc/passwd").split(`
|
|
112849
|
+
`).map((line) => line.split(":")).find((fields) => fields[2] === uid)?.[5];
|
|
112850
|
+
return home !== undefined && posix13.isAbsolute(home) ? home : undefined;
|
|
112851
|
+
}
|
|
112852
|
+
function darwinHome(facts) {
|
|
112853
|
+
const fields = facts.run("/usr/bin/id", ["-P"]).trim().split(":");
|
|
112854
|
+
const home = fields[8];
|
|
112855
|
+
if (facts.uid !== undefined && fields[2] !== String(facts.uid))
|
|
112856
|
+
return;
|
|
112857
|
+
return home !== undefined && posix13.isAbsolute(home) ? home : undefined;
|
|
112858
|
+
}
|
|
112859
|
+
function windowsProfile(facts) {
|
|
112860
|
+
const whoami = system32Tool(facts, "whoami.exe");
|
|
112861
|
+
const reg = system32Tool(facts, "reg.exe");
|
|
112862
|
+
if (whoami === undefined || reg === undefined)
|
|
112863
|
+
return;
|
|
112864
|
+
const sid = /S-1-[0-9-]+/.exec(facts.run(whoami, ["/user", "/fo", "csv", "/nh"]))?.[0];
|
|
112865
|
+
if (sid === undefined)
|
|
112866
|
+
return;
|
|
112867
|
+
const key = `HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\${sid}`;
|
|
112868
|
+
const value = /ProfileImagePath\s+REG_(?:EXPAND_)?SZ\s+(.+)/.exec(facts.run(reg, ["query", key, "/v", "ProfileImagePath"]))?.[1]?.trim();
|
|
112869
|
+
const home = value?.replace(/%([^%]+)%/g, (whole, name) => facts.env[name] ?? whole);
|
|
112870
|
+
return home !== undefined && !home.includes("%") && win3210.isAbsolute(home) ? home : undefined;
|
|
112871
|
+
}
|
|
112872
|
+
function system32Tool(facts, name) {
|
|
112873
|
+
const root = facts.env.SystemRoot;
|
|
112874
|
+
if (root === undefined || !/^[A-Za-z]:[\\/]/.test(root) || root.split(/[\\/]/).includes(".."))
|
|
112875
|
+
return;
|
|
112876
|
+
const tool = win3210.join(root, "System32", name);
|
|
112877
|
+
return facts.isFile(tool) ? tool : undefined;
|
|
112878
|
+
}
|
|
112879
|
+
function chooseLockHome(facts) {
|
|
112880
|
+
const home = facts.homedir();
|
|
112881
|
+
const record = facts.recordHome();
|
|
112882
|
+
if (record === undefined || record === home)
|
|
112883
|
+
return home;
|
|
112884
|
+
try {
|
|
112885
|
+
facts.prepareLockDirectory(lockDirectoryIn(record));
|
|
112886
|
+
return record;
|
|
112887
|
+
} catch (error) {
|
|
112888
|
+
const reason = error instanceof Error && "code" in error ? String(error.code) : String(error);
|
|
112889
|
+
facts.warn(`omo: the account home ${record} cannot hold the credential lock (${reason}); using ${home}. A process started with another HOME may refresh the same sign-in at the same time (#12978).`);
|
|
112890
|
+
return home;
|
|
112891
|
+
}
|
|
112892
|
+
}
|
|
112893
|
+
var systemPlatformFacts = {
|
|
112894
|
+
platform: process.platform,
|
|
112895
|
+
uid: process.getuid?.(),
|
|
112896
|
+
env: process.env,
|
|
112897
|
+
readFile: (path) => readFileSync44(path, "utf8"),
|
|
112898
|
+
isFile: (path) => statSync7(path, { throwIfNoEntry: false })?.isFile() ?? false,
|
|
112899
|
+
run: (command, args) => execFileSync4(command, args, { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], timeout: 5000, windowsHide: true })
|
|
112900
|
+
};
|
|
112901
|
+
var systemAccountFacts = {
|
|
112902
|
+
recordHome: () => userRecordHome(systemPlatformFacts),
|
|
112903
|
+
homedir: homedir31,
|
|
112904
|
+
prepareLockDirectory: (directory) => {
|
|
112905
|
+
mkdirSync19(directory, { recursive: true, mode: 448 });
|
|
112906
|
+
accessSync5(directory, constants13.W_OK);
|
|
112907
|
+
},
|
|
112908
|
+
warn: (message) => process.stderr.write(`${message}
|
|
112909
|
+
`)
|
|
112910
|
+
};
|
|
112911
|
+
var TEST_LOCK_HOME_ENV = "OMO_TEST_CREDENTIAL_LOCK_HOME";
|
|
112912
|
+
var INJECTED_SECRETS = Symbol.for("omo.test.injectedSecrets");
|
|
112913
|
+
function testLockHome(env, secrets) {
|
|
112914
|
+
const home = env[TEST_LOCK_HOME_ENV];
|
|
112915
|
+
if (home === undefined || !(posix13.isAbsolute(home) || win3210.isAbsolute(home)))
|
|
112916
|
+
return;
|
|
112917
|
+
const marked = typeof secrets === "object" && secrets !== null && secrets[INJECTED_SECRETS] === true;
|
|
112918
|
+
return marked ? home : undefined;
|
|
112919
|
+
}
|
|
112920
|
+
var facts = systemAccountFacts;
|
|
112921
|
+
var chosen;
|
|
112922
|
+
function accountHome() {
|
|
112923
|
+
chosen ??= testLockHome(process.env, typeof Bun === "undefined" ? undefined : Bun.secrets) ?? chooseLockHome(facts);
|
|
112924
|
+
return chosen;
|
|
112925
|
+
}
|
|
112867
112926
|
|
|
112868
112927
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/client.ts
|
|
112869
112928
|
init_zod();
|
|
@@ -112978,18 +113037,18 @@ async function callHelper(path, call, options = {}) {
|
|
|
112978
113037
|
}
|
|
112979
113038
|
|
|
112980
113039
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/location.ts
|
|
112981
|
-
import { dirname as dirname42, join as
|
|
113040
|
+
import { dirname as dirname42, join as join107, posix as posix14 } from "node:path";
|
|
112982
113041
|
import { fileURLToPath as fileURLToPath8 } from "node:url";
|
|
112983
113042
|
function bundleCandidates(moduleUrl) {
|
|
112984
113043
|
const root = dirname42(dirname42(dirname42(fileURLToPath8(moduleUrl))));
|
|
112985
|
-
return [
|
|
113044
|
+
return [join107(root, "bin", "darwin", "omo-keychain"), join107(root, "omo-keychain")];
|
|
112986
113045
|
}
|
|
112987
113046
|
function machineCandidates(home, arch = process.arch) {
|
|
112988
113047
|
const runtimeArch = arch === "arm64" ? "arm64" : "x64";
|
|
112989
113048
|
return [
|
|
112990
113049
|
`/Applications/OmO.app/Contents/Resources/omo-runtime/darwin-${runtimeArch}/omo-keychain`,
|
|
112991
|
-
|
|
112992
|
-
|
|
113050
|
+
posix14.join(home, "Applications", "OmO.app", "Contents", "Resources", "omo-runtime", `darwin-${runtimeArch}`, "omo-keychain"),
|
|
113051
|
+
posix14.join(home, ".bun", "install", "global", "node_modules", "omo-ai", "bin", "darwin", "omo-keychain")
|
|
112993
113052
|
];
|
|
112994
113053
|
}
|
|
112995
113054
|
async function locateHelper(candidates, verify) {
|
|
@@ -113006,9 +113065,9 @@ async function locateHelper(candidates, verify) {
|
|
|
113006
113065
|
|
|
113007
113066
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/pin.ts
|
|
113008
113067
|
import { readdirSync as readdirSync14, rmSync as rmSync9 } from "node:fs";
|
|
113009
|
-
import { chmod as chmod2, copyFile as copyFile4, constants as
|
|
113068
|
+
import { chmod as chmod2, copyFile as copyFile4, constants as constants14, mkdtemp as mkdtemp2, rm as rm16, stat as stat8 } from "node:fs/promises";
|
|
113010
113069
|
import { tmpdir as tmpdir6 } from "node:os";
|
|
113011
|
-
import { basename as basename15, join as
|
|
113070
|
+
import { basename as basename15, join as join108 } from "node:path";
|
|
113012
113071
|
var DIR_PREFIX = "omo-keychain-";
|
|
113013
113072
|
var OWNED_DIR = new RegExp(`^${DIR_PREFIX}(\\d+)-`);
|
|
113014
113073
|
var isAlive = (pid) => {
|
|
@@ -113032,7 +113091,7 @@ function sweepDeadPinDirs(root = tmpdir6()) {
|
|
|
113032
113091
|
if (owner === undefined || Number(owner) === process.pid || isAlive(Number(owner)))
|
|
113033
113092
|
continue;
|
|
113034
113093
|
try {
|
|
113035
|
-
rmSync9(
|
|
113094
|
+
rmSync9(join108(root, entry), { recursive: true, force: true });
|
|
113036
113095
|
} catch {
|
|
113037
113096
|
continue;
|
|
113038
113097
|
}
|
|
@@ -113045,7 +113104,7 @@ async function processPinDir() {
|
|
|
113045
113104
|
if (processDir !== undefined)
|
|
113046
113105
|
return processDir;
|
|
113047
113106
|
sweepDeadPinDirs();
|
|
113048
|
-
const dir = await mkdtemp2(
|
|
113107
|
+
const dir = await mkdtemp2(join108(tmpdir6(), `${DIR_PREFIX}${process.pid}-`));
|
|
113049
113108
|
process.once("exit", () => rmSync9(dir, { recursive: true, force: true }));
|
|
113050
113109
|
processDir = dir;
|
|
113051
113110
|
return dir;
|
|
@@ -113056,9 +113115,9 @@ async function sourceIdentity(source) {
|
|
|
113056
113115
|
return `${source}\x00${info.dev}\x00${info.ino}\x00${info.size}\x00${info.mtimeMs}\x00${info.ctimeMs}`;
|
|
113057
113116
|
}
|
|
113058
113117
|
async function copyAndVerify(source, verify, dir) {
|
|
113059
|
-
const target =
|
|
113118
|
+
const target = join108(dir, `${crypto.randomUUID()}-${basename15(source)}`);
|
|
113060
113119
|
try {
|
|
113061
|
-
await copyFile4(source, target,
|
|
113120
|
+
await copyFile4(source, target, constants14.COPYFILE_EXCL);
|
|
113062
113121
|
await chmod2(target, 320);
|
|
113063
113122
|
} catch (error) {
|
|
113064
113123
|
await rm16(target, { force: true });
|
|
@@ -113673,16 +113732,16 @@ var {
|
|
|
113673
113732
|
unlink: unlink3
|
|
113674
113733
|
} = promises;
|
|
113675
113734
|
var {
|
|
113676
|
-
accessSync:
|
|
113735
|
+
accessSync: accessSync6,
|
|
113677
113736
|
chmodSync: chmodSync7,
|
|
113678
113737
|
fsyncSync: fsyncSync3,
|
|
113679
113738
|
linkSync,
|
|
113680
113739
|
lstatSync: lstatSync5,
|
|
113681
|
-
mkdirSync:
|
|
113682
|
-
readFileSync:
|
|
113740
|
+
mkdirSync: mkdirSync20,
|
|
113741
|
+
readFileSync: readFileSync45,
|
|
113683
113742
|
readdirSync: readdirSync15,
|
|
113684
113743
|
realpathSync: realpathSync13,
|
|
113685
|
-
statSync:
|
|
113744
|
+
statSync: statSync9,
|
|
113686
113745
|
unlinkSync: unlinkSync10,
|
|
113687
113746
|
writeFileSync: writeFileSync17,
|
|
113688
113747
|
writeSync
|
|
@@ -114152,7 +114211,7 @@ async function publishLockRecord(lockPath, record) {
|
|
|
114152
114211
|
// packages/team-core/src/team-state-store/lock-lease.ts
|
|
114153
114212
|
import { randomUUID as randomUUID7 } from "node:crypto";
|
|
114154
114213
|
import { open as open4, readdir as readdir18, readFile as readFile36, rename as rename9, rm as rm18 } from "node:fs/promises";
|
|
114155
|
-
import { basename as basename16, dirname as dirname44, join as
|
|
114214
|
+
import { basename as basename16, dirname as dirname44, join as join109 } from "node:path";
|
|
114156
114215
|
|
|
114157
114216
|
// packages/team-core/src/team-state-store/lock-reclaim.ts
|
|
114158
114217
|
import { createHash as createHash10 } from "node:crypto";
|
|
@@ -114231,7 +114290,7 @@ var UUID2 = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
|
|
|
114231
114290
|
var escapeRegExp2 = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
114232
114291
|
var leaseTempPattern = (lockPath) => new RegExp(`^\\.${escapeRegExp2(basename16(lockPath))}\\.${UUID2}\\.lease$`);
|
|
114233
114292
|
async function replaceRecord(lockPath, content) {
|
|
114234
|
-
const temporary =
|
|
114293
|
+
const temporary = join109(dirname44(lockPath), `${leaseTempPrefix(lockPath)}${randomUUID7()}${LEASE_TEMP_SUFFIX}`);
|
|
114235
114294
|
try {
|
|
114236
114295
|
const handle = await open4(temporary, "wx", 384);
|
|
114237
114296
|
try {
|
|
@@ -114257,7 +114316,7 @@ async function removeLeftoverTemps(lockPath) {
|
|
|
114257
114316
|
}
|
|
114258
114317
|
for (const entry of entries) {
|
|
114259
114318
|
if (pattern.test(entry))
|
|
114260
|
-
await rm18(
|
|
114319
|
+
await rm18(join109(dirname44(lockPath), entry), { force: true });
|
|
114261
114320
|
}
|
|
114262
114321
|
}
|
|
114263
114322
|
async function currentRecord(lockPath) {
|
|
@@ -114394,7 +114453,7 @@ function promptLockAt(path, hooks = {}) {
|
|
|
114394
114453
|
var ROW_9B_DEFAULT = "reinstall-notice";
|
|
114395
114454
|
var helperAccess = () => sharedHelperAccess(() => {
|
|
114396
114455
|
const { entryCandidates } = keychainProcessState();
|
|
114397
|
-
return resolveHelperAccess([...entryCandidates, ...bundleCandidates(import.meta.url), ...machineCandidates(
|
|
114456
|
+
return resolveHelperAccess([...entryCandidates, ...bundleCandidates(import.meta.url), ...machineCandidates(homedir32())]);
|
|
114398
114457
|
});
|
|
114399
114458
|
function sharedHelperAccess(resolve) {
|
|
114400
114459
|
const state = keychainProcessState();
|
|
@@ -114431,7 +114490,7 @@ function createDarwinBackend(options) {
|
|
|
114431
114490
|
access: options.access,
|
|
114432
114491
|
cache: options.cache ?? processApprovalCache(),
|
|
114433
114492
|
background: options.background,
|
|
114434
|
-
takePromptLock: promptLockAt(
|
|
114493
|
+
takePromptLock: promptLockAt(join110(lockDirectoryIn(options.home ?? accountHome()), `${options.account}.keychain-prompt`)),
|
|
114435
114494
|
ownSilentGet: () => silently(() => options.secrets.get(key)),
|
|
114436
114495
|
ownOverwrite: (value) => silently(() => options.secrets.set({ ...key, value })),
|
|
114437
114496
|
ownDelete: (name) => name === options.account ? gatedSecrets(() => options.secrets.delete({ ...key, name })) : silently(() => options.secrets.delete({ ...key, name })),
|
|
@@ -114459,22 +114518,22 @@ async function guardHelperlessRead(service, account, choice = ROW_9B_DEFAULT, pr
|
|
|
114459
114518
|
}
|
|
114460
114519
|
|
|
114461
114520
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/store-binding.ts
|
|
114462
|
-
import { homedir as
|
|
114521
|
+
import { homedir as homedir33 } from "node:os";
|
|
114463
114522
|
|
|
114464
114523
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/creator-handoff.ts
|
|
114465
114524
|
init_bun_file_shim();
|
|
114466
114525
|
init_bun_spawn_shim();
|
|
114467
|
-
import { dirname as dirname47, posix as
|
|
114526
|
+
import { dirname as dirname47, posix as posix15 } from "node:path";
|
|
114468
114527
|
|
|
114469
114528
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/runtime-capabilities.ts
|
|
114470
114529
|
init_zod();
|
|
114471
114530
|
import { readFile as readFile37 } from "node:fs/promises";
|
|
114472
|
-
import { dirname as dirname46, join as
|
|
114531
|
+
import { dirname as dirname46, join as join111 } from "node:path";
|
|
114473
114532
|
var RUNTIME_CAPABILITIES_FILE = "omo-runtime-capabilities.json";
|
|
114474
114533
|
var RUNTIME_CAPABILITIES = { keychainHandoff: 1 };
|
|
114475
114534
|
var capabilitiesSchema = object({ keychainHandoff: number2().int() }).passthrough();
|
|
114476
114535
|
async function runtimeDeclaresKeychainHandoff(runtime) {
|
|
114477
|
-
const text = await readFile37(
|
|
114536
|
+
const text = await readFile37(join111(dirname46(runtime), RUNTIME_CAPABILITIES_FILE), "utf8").catch(() => null);
|
|
114478
114537
|
if (text === null)
|
|
114479
114538
|
return false;
|
|
114480
114539
|
try {
|
|
@@ -114493,9 +114552,9 @@ var HANDOFF_ENV = "OMO_KEYCHAIN_HANDOFF";
|
|
|
114493
114552
|
var HANDOFF_DEADLINE_MS = 45000;
|
|
114494
114553
|
function desktopRuntimeCandidates(home, arch = process.arch) {
|
|
114495
114554
|
const runtimeArch = arch === "arm64" ? "arm64" : "x64";
|
|
114496
|
-
return ["/Applications/OmO.app",
|
|
114555
|
+
return ["/Applications/OmO.app", posix15.join(home, "Applications", "OmO.app")].map((app) => ({
|
|
114497
114556
|
app,
|
|
114498
|
-
runtime:
|
|
114557
|
+
runtime: posix15.join(app, "Contents", "Resources", "omo-runtime", `darwin-${runtimeArch}`, "omo")
|
|
114499
114558
|
}));
|
|
114500
114559
|
}
|
|
114501
114560
|
var verifyBundle = async (app, requirement) => {
|
|
@@ -114553,13 +114612,13 @@ function createCreatorHandOff(options) {
|
|
|
114553
114612
|
|
|
114554
114613
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/store-binding.ts
|
|
114555
114614
|
var readers = new Map;
|
|
114556
|
-
var
|
|
114557
|
-
var isInjectedSecrets = (api) => api[
|
|
114615
|
+
var INJECTED_SECRETS2 = Symbol.for("omo.test.injectedSecrets");
|
|
114616
|
+
var isInjectedSecrets = (api) => api[INJECTED_SECRETS2] === true;
|
|
114558
114617
|
var backends = new Map;
|
|
114559
114618
|
function processHandOff(origin) {
|
|
114560
114619
|
return () => {
|
|
114561
114620
|
const state = keychainProcessState();
|
|
114562
|
-
state.handOff ??= createCreatorHandOff({ candidates: desktopRuntimeCandidates(
|
|
114621
|
+
state.handOff ??= createCreatorHandOff({ candidates: desktopRuntimeCandidates(homedir33()), origin })();
|
|
114563
114622
|
return state.handOff;
|
|
114564
114623
|
};
|
|
114565
114624
|
}
|
|
@@ -114712,18 +114771,18 @@ var probeSecretServiceLock = () => new Promise((resolve) => {
|
|
|
114712
114771
|
import { AsyncLocalStorage as AsyncLocalStorage3 } from "node:async_hooks";
|
|
114713
114772
|
import { createHash as createHash11 } from "node:crypto";
|
|
114714
114773
|
import { mkdir as mkdir12 } from "node:fs/promises";
|
|
114715
|
-
import {
|
|
114716
|
-
import { join as join112 } from "node:path";
|
|
114774
|
+
import { join as join113 } from "node:path";
|
|
114717
114775
|
var held = new AsyncLocalStorage3;
|
|
114718
|
-
|
|
114776
|
+
var CREDENTIAL_LOCK_STALE_AFTER_MS = 60000;
|
|
114777
|
+
function credentialLockPaths(api, home = accountHome()) {
|
|
114719
114778
|
const id = createHash11("sha256").update(serviceOrigin(api)).digest("hex");
|
|
114720
|
-
const directory =
|
|
114721
|
-
return { directory, lock:
|
|
114779
|
+
const directory = lockDirectoryIn(home);
|
|
114780
|
+
return { directory, lock: join113(directory, `${id}.lock`), desktopRecord: join113(directory, `${id}.desktop-generation.json`) };
|
|
114722
114781
|
}
|
|
114723
|
-
function heldCredentialLease(api, home =
|
|
114782
|
+
function heldCredentialLease(api, home = accountHome()) {
|
|
114724
114783
|
return held.getStore()?.get(credentialLockPaths(api, home).lock);
|
|
114725
114784
|
}
|
|
114726
|
-
async function withCredentialLock(api, action, home =
|
|
114785
|
+
async function withCredentialLock(api, action, home = accountHome(), ownerTag = "cli-session") {
|
|
114727
114786
|
const { directory, lock } = credentialLockPaths(api, home);
|
|
114728
114787
|
const owned = held.getStore();
|
|
114729
114788
|
const outer = owned?.get(lock);
|
|
@@ -114732,7 +114791,7 @@ async function withCredentialLock(api, action, home = homedir33(), ownerTag = "c
|
|
|
114732
114791
|
await mkdir12(directory, { recursive: true, mode: 448 });
|
|
114733
114792
|
return withLock(lock, (lease) => held.run(new Map([...owned ?? [], [lock, lease]]), () => action(lease)), {
|
|
114734
114793
|
ownerTag,
|
|
114735
|
-
staleAfterMs:
|
|
114794
|
+
staleAfterMs: CREDENTIAL_LOCK_STALE_AFTER_MS
|
|
114736
114795
|
});
|
|
114737
114796
|
}
|
|
114738
114797
|
|
|
@@ -115100,14 +115159,14 @@ async function loginLoopback(session, options) {
|
|
|
115100
115159
|
|
|
115101
115160
|
// packages/memory-core/src/sync/device-retire.ts
|
|
115102
115161
|
import { createHash as createHash14, randomBytes as randomBytes6 } from "node:crypto";
|
|
115103
|
-
import { join as
|
|
115162
|
+
import { join as join116 } from "node:path";
|
|
115104
115163
|
|
|
115105
115164
|
// packages/memory-core/src/identity/layout.ts
|
|
115106
115165
|
import { homedir as homedir34 } from "node:os";
|
|
115107
|
-
import { join as
|
|
115166
|
+
import { join as join114, resolve as resolve31 } from "node:path";
|
|
115108
115167
|
var MEMORY_ROOT_ENV_VAR = "OMO_MEMORY_HOME";
|
|
115109
115168
|
function defaultMemoryRoot() {
|
|
115110
|
-
return
|
|
115169
|
+
return join114(homedir34(), ".omo", "memory");
|
|
115111
115170
|
}
|
|
115112
115171
|
function resolveMemoryRoot(env, cwd) {
|
|
115113
115172
|
const override = env[MEMORY_ROOT_ENV_VAR];
|
|
@@ -115117,13 +115176,13 @@ function resolveMemoryRoot(env, cwd) {
|
|
|
115117
115176
|
return resolve31(cwd, override);
|
|
115118
115177
|
}
|
|
115119
115178
|
// packages/memory-core/src/sync/pin-dir.ts
|
|
115120
|
-
import { join as
|
|
115121
|
-
var syncPinDir = (memoryRoot) =>
|
|
115179
|
+
import { join as join115 } from "node:path";
|
|
115180
|
+
var syncPinDir = (memoryRoot) => join115(memoryRoot, "sync-device");
|
|
115122
115181
|
|
|
115123
115182
|
// packages/memory-core/src/sync/device-retire.ts
|
|
115124
|
-
var trustAnchorRoot = (pinDir) =>
|
|
115183
|
+
var trustAnchorRoot = (pinDir) => join116(pinDir, "trust-anchor");
|
|
115125
115184
|
var trustAnchorKey = (account) => createHash14("sha256").update(account, "utf8").digest("base64url");
|
|
115126
|
-
var trustAnchorDir = (pinDir, account) =>
|
|
115185
|
+
var trustAnchorDir = (pinDir, account) => join116(trustAnchorRoot(pinDir), trustAnchorKey(account));
|
|
115127
115186
|
var hasLiveTrustAnchor = async (pinDir) => {
|
|
115128
115187
|
try {
|
|
115129
115188
|
return (await readdir17(trustAnchorRoot(pinDir))).some((name) => !name.includes(".retired-"));
|
|
@@ -115149,9 +115208,9 @@ import { homedir as homedir35 } from "node:os";
|
|
|
115149
115208
|
// packages/omo-opencode/src/cli/service-auth/signed-out-marker.ts
|
|
115150
115209
|
init_zod();
|
|
115151
115210
|
import { mkdir as mkdir13, readFile as readFile38, rename as rename10, rm as rm19, writeFile as writeFile18 } from "node:fs/promises";
|
|
115152
|
-
import { dirname as dirname48, join as
|
|
115211
|
+
import { dirname as dirname48, join as join117 } from "node:path";
|
|
115153
115212
|
var markerSchema = object({ device: string2().nullable(), at: string2() });
|
|
115154
|
-
var signedOutMarkerPath = (home, credential) =>
|
|
115213
|
+
var signedOutMarkerPath = (home, credential) => join117(home, ".omo", "account-state", `${credential}.signed-out.json`);
|
|
115155
115214
|
async function readSignedOutMarker(path) {
|
|
115156
115215
|
const text = await readFile38(path, "utf8").catch(() => null);
|
|
115157
115216
|
if (text === null)
|
|
@@ -115716,7 +115775,7 @@ async function boulder(options) {
|
|
|
115716
115775
|
}
|
|
115717
115776
|
// packages/omo-opencode/src/cli/codex-ulw-loop.ts
|
|
115718
115777
|
import { spawn as spawn6 } from "node:child_process";
|
|
115719
|
-
import { existsSync as existsSync67, readFileSync as
|
|
115778
|
+
import { existsSync as existsSync67, readFileSync as readFileSync46, realpathSync as realpathSync14 } from "node:fs";
|
|
115720
115779
|
import { homedir as homedir36 } from "node:os";
|
|
115721
115780
|
var ULW_LOOP_DELEGATION_SENTINEL = "OMO_ULW_LOOP_DELEGATED";
|
|
115722
115781
|
function resolveCodexUlwLoopCommand(input = {}) {
|
|
@@ -115766,7 +115825,7 @@ function resolveLegacyLocalOmoBin(env, homeDir, currentExecutablePaths) {
|
|
|
115766
115825
|
}
|
|
115767
115826
|
function isGeneratedRuntimeWrapper(candidate) {
|
|
115768
115827
|
try {
|
|
115769
|
-
return
|
|
115828
|
+
return readFileSync46(candidate, "utf8").includes(RUNTIME_WRAPPER_MARKER);
|
|
115770
115829
|
} catch (error) {
|
|
115771
115830
|
if (error instanceof Error)
|
|
115772
115831
|
return false;
|
|
@@ -116212,7 +116271,7 @@ prunes.
|
|
|
116212
116271
|
|
|
116213
116272
|
// packages/omo-opencode/src/cli/config-migrate.ts
|
|
116214
116273
|
init_startup_migration();
|
|
116215
|
-
import { posix as
|
|
116274
|
+
import { posix as posix16 } from "node:path";
|
|
116216
116275
|
function reports(result) {
|
|
116217
116276
|
return result.results.map((entry) => ({
|
|
116218
116277
|
diagnostics: entry.diagnostics,
|
|
@@ -116246,7 +116305,7 @@ function runConfigMigrate(options = {}) {
|
|
|
116246
116305
|
dryRun: options.dryRun ?? false,
|
|
116247
116306
|
environment,
|
|
116248
116307
|
...homeDir === undefined ? {} : { env: { HOME: homeDir }, homeDir },
|
|
116249
|
-
pathOperations:
|
|
116308
|
+
pathOperations: posix16
|
|
116250
116309
|
});
|
|
116251
116310
|
const report = reports(result);
|
|
116252
116311
|
const response = {
|