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/index.js
CHANGED
|
@@ -2132,7 +2132,7 @@ var package_default;
|
|
|
2132
2132
|
var init_package = __esm(() => {
|
|
2133
2133
|
package_default = {
|
|
2134
2134
|
name: "oh-my-opencode",
|
|
2135
|
-
version: "5.1.
|
|
2135
|
+
version: "5.1.69",
|
|
2136
2136
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
2137
2137
|
main: "./dist/index.js",
|
|
2138
2138
|
types: "dist/index.d.ts",
|
|
@@ -2170,6 +2170,7 @@ var init_package = __esm(() => {
|
|
|
2170
2170
|
"packages/senpi-desktop-engine",
|
|
2171
2171
|
"packages/senpi-desktop-prelude",
|
|
2172
2172
|
"packages/senpi-desktop-service",
|
|
2173
|
+
"packages/senpi-desktop-sdk",
|
|
2173
2174
|
"packages/senpi-desktop-tool",
|
|
2174
2175
|
"packages/omo-opencode",
|
|
2175
2176
|
"packages/omo-native"
|
|
@@ -2277,7 +2278,7 @@ var init_package = __esm(() => {
|
|
|
2277
2278
|
"check:copy": "bun script/check-copy.ts",
|
|
2278
2279
|
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",
|
|
2279
2280
|
"typecheck:skill-scripts": "bun check --no-script --all -p packages/shared-skills/skills/frontend/scripts/detect/tsconfig.json",
|
|
2280
|
-
"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",
|
|
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-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",
|
|
2281
2282
|
"typecheck:script": "bun check --no-script --all -p script/tsconfig.json",
|
|
2282
2283
|
test: "bun test --timeout 20000",
|
|
2283
2284
|
"changelog:section": "bun script/changelog-section.ts",
|
|
@@ -2287,7 +2288,7 @@ var init_package = __esm(() => {
|
|
|
2287
2288
|
"test:windows-codex": "bun run test:codex",
|
|
2288
2289
|
"build:git-bash-mcp": "bun run --cwd packages/git-bash-mcp build",
|
|
2289
2290
|
"build:ast-grep-mcp": "bun run --cwd packages/ast-grep-mcp build",
|
|
2290
|
-
"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",
|
|
2291
|
+
"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",
|
|
2291
2292
|
"lint:ratchet": "bun script/lint-ratchet.ts",
|
|
2292
2293
|
"knip:check": "knip --no-progress --no-config-hints",
|
|
2293
2294
|
"lint:ratchet:update": "bun script/lint-ratchet.ts --update",
|
|
@@ -2319,7 +2320,7 @@ var init_package = __esm(() => {
|
|
|
2319
2320
|
},
|
|
2320
2321
|
devDependencies: {
|
|
2321
2322
|
"@clack/prompts": "^1.8.1",
|
|
2322
|
-
"@code-yeongyu/senpi": "2026.11.
|
|
2323
|
+
"@code-yeongyu/senpi": "2026.11.10-2",
|
|
2323
2324
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
2324
2325
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
2325
2326
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -2346,6 +2347,7 @@ var init_package = __esm(() => {
|
|
|
2346
2347
|
"@oh-my-opencode/senpi-desktop-engine": "workspace:*",
|
|
2347
2348
|
"@oh-my-opencode/senpi-desktop-prelude": "workspace:*",
|
|
2348
2349
|
"@oh-my-opencode/senpi-desktop-protocol": "workspace:*",
|
|
2350
|
+
"@oh-my-opencode/senpi-desktop-sdk": "workspace:*",
|
|
2349
2351
|
"@oh-my-opencode/senpi-desktop-service": "workspace:*",
|
|
2350
2352
|
"@oh-my-opencode/senpi-desktop-tool": "workspace:*",
|
|
2351
2353
|
"@oh-my-opencode/senpi-task": "workspace:*",
|
|
@@ -2384,18 +2386,18 @@ var init_package = __esm(() => {
|
|
|
2384
2386
|
typescript: "^7.0.2"
|
|
2385
2387
|
},
|
|
2386
2388
|
optionalDependencies: {
|
|
2387
|
-
"oh-my-opencode-darwin-arm64": "5.1.
|
|
2388
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
2389
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
2390
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
2391
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
2392
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
2393
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
2394
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
2395
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
2396
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
2397
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
2398
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
2389
|
+
"oh-my-opencode-darwin-arm64": "5.1.69",
|
|
2390
|
+
"oh-my-opencode-darwin-x64": "5.1.69",
|
|
2391
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.69",
|
|
2392
|
+
"oh-my-opencode-linux-arm64": "5.1.69",
|
|
2393
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.69",
|
|
2394
|
+
"oh-my-opencode-linux-x64": "5.1.69",
|
|
2395
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.69",
|
|
2396
|
+
"oh-my-opencode-linux-x64-musl": "5.1.69",
|
|
2397
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.69",
|
|
2398
|
+
"oh-my-opencode-windows-arm64": "5.1.69",
|
|
2399
|
+
"oh-my-opencode-windows-x64": "5.1.69",
|
|
2400
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.69"
|
|
2399
2401
|
},
|
|
2400
2402
|
overrides: {
|
|
2401
2403
|
hono: "^4.13.8",
|
|
@@ -8080,7 +8082,7 @@ var init_latest_models = __esm(() => {
|
|
|
8080
8082
|
claudeOpus: "claude-opus-5-5",
|
|
8081
8083
|
claudeSonnet: "claude-sonnet-5-5",
|
|
8082
8084
|
claudeHaiku: "claude-haiku-5-5",
|
|
8083
|
-
claudeFable: "claude-fable-5-
|
|
8085
|
+
claudeFable: "claude-fable-5-2",
|
|
8084
8086
|
gptAstra: "gpt-6-astra",
|
|
8085
8087
|
gptSol: "gpt-6.1-sol",
|
|
8086
8088
|
gptSolFast: "gpt-6.1-sol-fast",
|
|
@@ -9346,61 +9348,9 @@ var init_file_reference_resolver = __esm(() => {
|
|
|
9346
9348
|
init_logger2();
|
|
9347
9349
|
});
|
|
9348
9350
|
|
|
9349
|
-
// packages/model-core/src/fable-55-launch.ts
|
|
9350
|
-
function isFable55Model(model) {
|
|
9351
|
-
const modelId = model.split("/").pop() ?? model;
|
|
9352
|
-
return modelId.replaceAll(".", "-") === FABLE_55_LAUNCH.id;
|
|
9353
|
-
}
|
|
9354
|
-
function selectLaunchRungs(rungs, gate, onRejected) {
|
|
9355
|
-
return rungs.filter((rung) => {
|
|
9356
|
-
if (!isFable55Model(rung.model))
|
|
9357
|
-
return true;
|
|
9358
|
-
if (!gate.released)
|
|
9359
|
-
return false;
|
|
9360
|
-
if (rung.variant !== undefined && gate.accepted.includes(rung.variant))
|
|
9361
|
-
return true;
|
|
9362
|
-
onRejected({ model: rung.model, variant: rung.variant });
|
|
9363
|
-
return false;
|
|
9364
|
-
});
|
|
9365
|
-
}
|
|
9366
|
-
function recordLaunchRungRejection(rejection) {
|
|
9367
|
-
launchRungRejectionLog.push(rejection);
|
|
9368
|
-
console.warn(`[fable-55-launch] dropped a Fable 5.5 rung with effort "${rejection.variant ?? "(none)"}": not in FABLE_55_EFFORTS.accepted`);
|
|
9369
|
-
}
|
|
9370
|
-
function launchRungs(rungs) {
|
|
9371
|
-
return selectLaunchRungs(rungs, { released: FABLE_55_RELEASED, accepted: FABLE_55_EFFORTS.accepted }, recordLaunchRungRejection);
|
|
9372
|
-
}
|
|
9373
|
-
function launchDefaultModelId() {
|
|
9374
|
-
return FABLE_55_RELEASED ? FABLE_55_LAUNCH.id : FABLE_55_PREDECESSOR;
|
|
9375
|
-
}
|
|
9376
|
-
var FABLE_55_LAUNCH, FABLE_55_RELEASED = false, FABLE_55_EFFORTS, launchRungRejectionLog, FABLE_55_PREDECESSOR;
|
|
9377
|
-
var init_fable_55_launch = __esm(() => {
|
|
9378
|
-
init_latest_models();
|
|
9379
|
-
FABLE_55_LAUNCH = {
|
|
9380
|
-
id: "claude-fable-5-5",
|
|
9381
|
-
family: "claude-fable",
|
|
9382
|
-
reasoning: undefined,
|
|
9383
|
-
temperature: undefined,
|
|
9384
|
-
toolCall: undefined,
|
|
9385
|
-
modalities: undefined,
|
|
9386
|
-
limit: {
|
|
9387
|
-
context: undefined,
|
|
9388
|
-
input: undefined,
|
|
9389
|
-
output: undefined
|
|
9390
|
-
}
|
|
9391
|
-
};
|
|
9392
|
-
FABLE_55_EFFORTS = {
|
|
9393
|
-
measured: false,
|
|
9394
|
-
accepted: ["xhigh", "max"]
|
|
9395
|
-
};
|
|
9396
|
-
launchRungRejectionLog = [];
|
|
9397
|
-
FABLE_55_PREDECESSOR = LATEST_MODEL_BY_FAMILY.claudeFable;
|
|
9398
|
-
});
|
|
9399
|
-
|
|
9400
9351
|
// packages/model-core/src/agent-model-requirements.ts
|
|
9401
9352
|
var AGENT_MODEL_REQUIREMENTS;
|
|
9402
9353
|
var init_agent_model_requirements = __esm(() => {
|
|
9403
|
-
init_fable_55_launch();
|
|
9404
9354
|
init_latest_models();
|
|
9405
9355
|
AGENT_MODEL_REQUIREMENTS = {
|
|
9406
9356
|
sisyphus: {
|
|
@@ -9495,15 +9445,15 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9495
9445
|
]
|
|
9496
9446
|
},
|
|
9497
9447
|
prometheus: {
|
|
9498
|
-
fallbackChain:
|
|
9448
|
+
fallbackChain: [
|
|
9499
9449
|
{
|
|
9500
9450
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9501
|
-
model:
|
|
9451
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9502
9452
|
variant: "xhigh"
|
|
9503
9453
|
},
|
|
9504
9454
|
{
|
|
9505
9455
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9506
|
-
model:
|
|
9456
|
+
model: "claude-fable-5-1",
|
|
9507
9457
|
variant: "xhigh"
|
|
9508
9458
|
},
|
|
9509
9459
|
{
|
|
@@ -9517,18 +9467,18 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9517
9467
|
variant: "max"
|
|
9518
9468
|
},
|
|
9519
9469
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9520
|
-
]
|
|
9470
|
+
]
|
|
9521
9471
|
},
|
|
9522
9472
|
metis: {
|
|
9523
|
-
fallbackChain:
|
|
9473
|
+
fallbackChain: [
|
|
9524
9474
|
{
|
|
9525
9475
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9526
|
-
model:
|
|
9476
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9527
9477
|
variant: "max"
|
|
9528
9478
|
},
|
|
9529
9479
|
{
|
|
9530
9480
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9531
|
-
model:
|
|
9481
|
+
model: "claude-fable-5-1",
|
|
9532
9482
|
variant: "max"
|
|
9533
9483
|
},
|
|
9534
9484
|
{
|
|
@@ -9542,7 +9492,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9542
9492
|
variant: "max"
|
|
9543
9493
|
},
|
|
9544
9494
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9545
|
-
]
|
|
9495
|
+
]
|
|
9546
9496
|
},
|
|
9547
9497
|
momus: {
|
|
9548
9498
|
fallbackChain: [
|
|
@@ -9602,20 +9552,19 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9602
9552
|
// packages/model-core/src/category-model-requirements.ts
|
|
9603
9553
|
var CATEGORY_MODEL_REQUIREMENTS;
|
|
9604
9554
|
var init_category_model_requirements = __esm(() => {
|
|
9605
|
-
init_fable_55_launch();
|
|
9606
9555
|
init_latest_models();
|
|
9607
9556
|
CATEGORY_MODEL_REQUIREMENTS = {
|
|
9608
9557
|
"visual-engineering": {
|
|
9609
|
-
fallbackChain:
|
|
9558
|
+
fallbackChain: [
|
|
9610
9559
|
{ providers: ["google", "google-vertex", "opencode"], model: LATEST_MODEL_BY_FAMILY.geminiPro, variant: "low" },
|
|
9611
9560
|
{
|
|
9612
9561
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9613
|
-
model:
|
|
9562
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9614
9563
|
variant: "max"
|
|
9615
9564
|
},
|
|
9616
9565
|
{
|
|
9617
9566
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9618
|
-
model:
|
|
9567
|
+
model: "claude-fable-5-1",
|
|
9619
9568
|
variant: "max"
|
|
9620
9569
|
},
|
|
9621
9570
|
{
|
|
@@ -9629,7 +9578,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9629
9578
|
variant: "max"
|
|
9630
9579
|
},
|
|
9631
9580
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9632
|
-
]
|
|
9581
|
+
]
|
|
9633
9582
|
},
|
|
9634
9583
|
ultrabrain: {
|
|
9635
9584
|
fallbackChain: [
|
|
@@ -9663,15 +9612,15 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9663
9612
|
]
|
|
9664
9613
|
},
|
|
9665
9614
|
artistry: {
|
|
9666
|
-
fallbackChain:
|
|
9615
|
+
fallbackChain: [
|
|
9667
9616
|
{
|
|
9668
9617
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9669
|
-
model:
|
|
9618
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9670
9619
|
variant: "max"
|
|
9671
9620
|
},
|
|
9672
9621
|
{
|
|
9673
9622
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9674
|
-
model:
|
|
9623
|
+
model: "claude-fable-5-1",
|
|
9675
9624
|
variant: "max"
|
|
9676
9625
|
},
|
|
9677
9626
|
{
|
|
@@ -9685,7 +9634,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9685
9634
|
variant: "max"
|
|
9686
9635
|
},
|
|
9687
9636
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9688
|
-
]
|
|
9637
|
+
]
|
|
9689
9638
|
},
|
|
9690
9639
|
quick: {
|
|
9691
9640
|
fallbackChain: [
|
|
@@ -10371,9 +10320,7 @@ var init_runtime_fallback_model = () => {};
|
|
|
10371
10320
|
// packages/model-core/src/model-capabilities/supplemental-entries.ts
|
|
10372
10321
|
var SUPPLEMENTAL_MODEL_CAPABILITIES;
|
|
10373
10322
|
var init_supplemental_entries = __esm(() => {
|
|
10374
|
-
init_fable_55_launch();
|
|
10375
10323
|
SUPPLEMENTAL_MODEL_CAPABILITIES = {
|
|
10376
|
-
[FABLE_55_LAUNCH.id]: FABLE_55_LAUNCH,
|
|
10377
10324
|
"kimi-k3": {
|
|
10378
10325
|
id: "kimi-k3",
|
|
10379
10326
|
family: "kimi",
|
|
@@ -10449,6 +10396,21 @@ var init_supplemental_entries = __esm(() => {
|
|
|
10449
10396
|
output: 128000
|
|
10450
10397
|
}
|
|
10451
10398
|
},
|
|
10399
|
+
"claude-fable-5-2": {
|
|
10400
|
+
id: "claude-fable-5-2",
|
|
10401
|
+
family: "claude-fable",
|
|
10402
|
+
reasoning: true,
|
|
10403
|
+
temperature: false,
|
|
10404
|
+
toolCall: true,
|
|
10405
|
+
modalities: {
|
|
10406
|
+
input: ["text", "image", "pdf"],
|
|
10407
|
+
output: ["text"]
|
|
10408
|
+
},
|
|
10409
|
+
limit: {
|
|
10410
|
+
context: 1e6,
|
|
10411
|
+
output: 128000
|
|
10412
|
+
}
|
|
10413
|
+
},
|
|
10452
10414
|
"gpt-6-astra": {
|
|
10453
10415
|
id: "gpt-6-astra",
|
|
10454
10416
|
family: "gpt",
|
|
@@ -10853,25 +10815,16 @@ var init_supplemental_entries = __esm(() => {
|
|
|
10853
10815
|
});
|
|
10854
10816
|
|
|
10855
10817
|
// packages/model-core/src/model-capabilities/bundled-snapshot.ts
|
|
10856
|
-
function fillGaps(generated, placeholder) {
|
|
10857
|
-
const merged = { ...placeholder };
|
|
10858
|
-
for (const [key, value] of Object.entries(generated)) {
|
|
10859
|
-
if (value === undefined)
|
|
10860
|
-
continue;
|
|
10861
|
-
const base = merged[key];
|
|
10862
|
-
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;
|
|
10863
|
-
}
|
|
10864
|
-
return merged;
|
|
10865
|
-
}
|
|
10866
10818
|
function getBundledModelCapabilitiesSnapshot(snapshotJson) {
|
|
10867
|
-
|
|
10868
|
-
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
|
|
10819
|
+
return {
|
|
10820
|
+
...snapshotJson,
|
|
10821
|
+
models: {
|
|
10822
|
+
...snapshotJson.models,
|
|
10823
|
+
...SUPPLEMENTAL_MODEL_CAPABILITIES
|
|
10824
|
+
}
|
|
10825
|
+
};
|
|
10872
10826
|
}
|
|
10873
10827
|
var init_bundled_snapshot = __esm(() => {
|
|
10874
|
-
init_fable_55_launch();
|
|
10875
10828
|
init_supplemental_entries();
|
|
10876
10829
|
});
|
|
10877
10830
|
|
|
@@ -11299,7 +11252,6 @@ var init_src2 = __esm(() => {
|
|
|
11299
11252
|
init_model_requirements();
|
|
11300
11253
|
init_latest_models();
|
|
11301
11254
|
init_model_family_detectors();
|
|
11302
|
-
init_fable_55_launch();
|
|
11303
11255
|
init_model_capability_aliases();
|
|
11304
11256
|
init_model_capability_heuristics();
|
|
11305
11257
|
init_model_capability_guardrails();
|
|
@@ -11621,7 +11573,6 @@ Approach:
|
|
|
11621
11573
|
</Category_Context>`, GOOGLE_CATEGORIES;
|
|
11622
11574
|
var init_google_categories = __esm(() => {
|
|
11623
11575
|
init_latest_models();
|
|
11624
|
-
init_src2();
|
|
11625
11576
|
GOOGLE_CATEGORIES = [
|
|
11626
11577
|
{
|
|
11627
11578
|
name: "visual-engineering",
|
|
@@ -11631,7 +11582,7 @@ var init_google_categories = __esm(() => {
|
|
|
11631
11582
|
},
|
|
11632
11583
|
{
|
|
11633
11584
|
name: "artistry",
|
|
11634
|
-
config: { model: `anthropic/${
|
|
11585
|
+
config: { model: `anthropic/${LATEST_MODEL_BY_FAMILY.claudeFable}`, variant: "max" },
|
|
11635
11586
|
description: "Complex problem-solving with unconventional, creative approaches - beyond standard patterns",
|
|
11636
11587
|
promptAppend: ARTISTRY_CATEGORY_PROMPT_APPEND
|
|
11637
11588
|
}
|
|
@@ -77065,7 +77016,11 @@ var init_computer = __esm(() => {
|
|
|
77065
77016
|
audit_log: object({ enabled: boolean2() }).partial().strict(),
|
|
77066
77017
|
screenshot_gc: object({ enabled: boolean2(), stale_ms: nonNegativeInteger, scan_interval_ms: nonNegativeInteger }).partial().strict(),
|
|
77067
77018
|
engine_path: string2().min(1),
|
|
77068
|
-
cua_adapter: boolean2()
|
|
77019
|
+
cua_adapter: boolean2(),
|
|
77020
|
+
run_sandbox: _enum(["vm", "quickjs"]).describe("Where `run` code executes (default: vm; reserved: every run uses vm until the QuickJS cell lands)"),
|
|
77021
|
+
intervention: _enum(["continue", "pause"]).describe("What a background action does while the user uses the target app (default: continue)"),
|
|
77022
|
+
macos_key_priming: _enum(["on", "off"]).describe("macOS background keys first make the target window key (default: off)"),
|
|
77023
|
+
trace: boolean2().describe("Per-request timing traces (default: false)")
|
|
77069
77024
|
}).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.");
|
|
77070
77025
|
OmoComputerSettingsSchema = OmoComputerSettingsLayerSchema;
|
|
77071
77026
|
});
|
|
@@ -92758,7 +92713,7 @@ var package_default2;
|
|
|
92758
92713
|
var init_package2 = __esm(() => {
|
|
92759
92714
|
package_default2 = {
|
|
92760
92715
|
name: "@oh-my-opencode/omo-codex",
|
|
92761
|
-
version: "5.1.
|
|
92716
|
+
version: "5.1.69",
|
|
92762
92717
|
type: "module",
|
|
92763
92718
|
private: true,
|
|
92764
92719
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -100149,6 +100104,8 @@ var REQUIRED_PLUGIN_ARTIFACTS = [
|
|
|
100149
100104
|
join66("extensions", "omo-member.js"),
|
|
100150
100105
|
join66("extensions", "memory-run-supervisor.mjs"),
|
|
100151
100106
|
join66("extensions", "gateway-store-worker.mjs"),
|
|
100107
|
+
join66("extensions", "omo-computer-run-worker.mjs"),
|
|
100108
|
+
join66("extensions", "quickjs.wasm"),
|
|
100152
100109
|
...PERSONA_ASSET_FILES.map((filename) => join66("extensions", filename)),
|
|
100153
100110
|
join66("skills", "ast-grep", "SKILL.md"),
|
|
100154
100111
|
join66("skills", "browser", "SKILL.md"),
|
|
@@ -109522,8 +109479,8 @@ var package_default3 = {
|
|
|
109522
109479
|
},
|
|
109523
109480
|
dependencies: {
|
|
109524
109481
|
"@clack/prompts": "^1.8.1",
|
|
109525
|
-
"@code-yeongyu/senpi": "2026.11.
|
|
109526
|
-
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.
|
|
109482
|
+
"@code-yeongyu/senpi": "2026.11.10-2",
|
|
109483
|
+
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.10-2",
|
|
109527
109484
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
109528
109485
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
109529
109486
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -112783,8 +112740,110 @@ import { createHash as createHash12, randomUUID as randomUUID8 } from "crypto";
|
|
|
112783
112740
|
import { basename as basename17 } from "path";
|
|
112784
112741
|
|
|
112785
112742
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/darwin-backend.ts
|
|
112743
|
+
import { homedir as homedir32 } from "os";
|
|
112744
|
+
import { join as join110 } from "path";
|
|
112745
|
+
|
|
112746
|
+
// packages/omo-opencode/src/cli/service-auth/account-home.ts
|
|
112747
|
+
import { execFileSync as execFileSync4 } from "child_process";
|
|
112748
|
+
import { accessSync as accessSync5, constants as constants13, mkdirSync as mkdirSync19, readFileSync as readFileSync44, statSync as statSync7 } from "fs";
|
|
112786
112749
|
import { homedir as homedir31 } from "os";
|
|
112787
|
-
import { join as
|
|
112750
|
+
import { join as join106, posix as posix13, win32 as win3210 } from "path";
|
|
112751
|
+
var lockDirectoryIn = (home) => join106(home, ".omo", "session-locks");
|
|
112752
|
+
function userRecordHome(facts) {
|
|
112753
|
+
try {
|
|
112754
|
+
if (facts.platform === "linux")
|
|
112755
|
+
return passwdHome(facts);
|
|
112756
|
+
if (facts.platform === "darwin")
|
|
112757
|
+
return darwinHome(facts);
|
|
112758
|
+
if (facts.platform === "win32")
|
|
112759
|
+
return windowsProfile(facts);
|
|
112760
|
+
return;
|
|
112761
|
+
} catch {
|
|
112762
|
+
return;
|
|
112763
|
+
}
|
|
112764
|
+
}
|
|
112765
|
+
function passwdHome(facts) {
|
|
112766
|
+
if (facts.uid === undefined)
|
|
112767
|
+
return;
|
|
112768
|
+
const uid = String(facts.uid);
|
|
112769
|
+
const home = facts.readFile("/etc/passwd").split(`
|
|
112770
|
+
`).map((line) => line.split(":")).find((fields) => fields[2] === uid)?.[5];
|
|
112771
|
+
return home !== undefined && posix13.isAbsolute(home) ? home : undefined;
|
|
112772
|
+
}
|
|
112773
|
+
function darwinHome(facts) {
|
|
112774
|
+
const fields = facts.run("/usr/bin/id", ["-P"]).trim().split(":");
|
|
112775
|
+
const home = fields[8];
|
|
112776
|
+
if (facts.uid !== undefined && fields[2] !== String(facts.uid))
|
|
112777
|
+
return;
|
|
112778
|
+
return home !== undefined && posix13.isAbsolute(home) ? home : undefined;
|
|
112779
|
+
}
|
|
112780
|
+
function windowsProfile(facts) {
|
|
112781
|
+
const whoami = system32Tool(facts, "whoami.exe");
|
|
112782
|
+
const reg = system32Tool(facts, "reg.exe");
|
|
112783
|
+
if (whoami === undefined || reg === undefined)
|
|
112784
|
+
return;
|
|
112785
|
+
const sid = /S-1-[0-9-]+/.exec(facts.run(whoami, ["/user", "/fo", "csv", "/nh"]))?.[0];
|
|
112786
|
+
if (sid === undefined)
|
|
112787
|
+
return;
|
|
112788
|
+
const key = `HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\${sid}`;
|
|
112789
|
+
const value = /ProfileImagePath\s+REG_(?:EXPAND_)?SZ\s+(.+)/.exec(facts.run(reg, ["query", key, "/v", "ProfileImagePath"]))?.[1]?.trim();
|
|
112790
|
+
const home = value?.replace(/%([^%]+)%/g, (whole, name) => facts.env[name] ?? whole);
|
|
112791
|
+
return home !== undefined && !home.includes("%") && win3210.isAbsolute(home) ? home : undefined;
|
|
112792
|
+
}
|
|
112793
|
+
function system32Tool(facts, name) {
|
|
112794
|
+
const root = facts.env.SystemRoot;
|
|
112795
|
+
if (root === undefined || !/^[A-Za-z]:[\\/]/.test(root) || root.split(/[\\/]/).includes(".."))
|
|
112796
|
+
return;
|
|
112797
|
+
const tool = win3210.join(root, "System32", name);
|
|
112798
|
+
return facts.isFile(tool) ? tool : undefined;
|
|
112799
|
+
}
|
|
112800
|
+
function chooseLockHome(facts) {
|
|
112801
|
+
const home = facts.homedir();
|
|
112802
|
+
const record = facts.recordHome();
|
|
112803
|
+
if (record === undefined || record === home)
|
|
112804
|
+
return home;
|
|
112805
|
+
try {
|
|
112806
|
+
facts.prepareLockDirectory(lockDirectoryIn(record));
|
|
112807
|
+
return record;
|
|
112808
|
+
} catch (error) {
|
|
112809
|
+
const reason = error instanceof Error && "code" in error ? String(error.code) : String(error);
|
|
112810
|
+
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).`);
|
|
112811
|
+
return home;
|
|
112812
|
+
}
|
|
112813
|
+
}
|
|
112814
|
+
var systemPlatformFacts = {
|
|
112815
|
+
platform: process.platform,
|
|
112816
|
+
uid: process.getuid?.(),
|
|
112817
|
+
env: process.env,
|
|
112818
|
+
readFile: (path) => readFileSync44(path, "utf8"),
|
|
112819
|
+
isFile: (path) => statSync7(path, { throwIfNoEntry: false })?.isFile() ?? false,
|
|
112820
|
+
run: (command, args) => execFileSync4(command, args, { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], timeout: 5000, windowsHide: true })
|
|
112821
|
+
};
|
|
112822
|
+
var systemAccountFacts = {
|
|
112823
|
+
recordHome: () => userRecordHome(systemPlatformFacts),
|
|
112824
|
+
homedir: homedir31,
|
|
112825
|
+
prepareLockDirectory: (directory) => {
|
|
112826
|
+
mkdirSync19(directory, { recursive: true, mode: 448 });
|
|
112827
|
+
accessSync5(directory, constants13.W_OK);
|
|
112828
|
+
},
|
|
112829
|
+
warn: (message) => process.stderr.write(`${message}
|
|
112830
|
+
`)
|
|
112831
|
+
};
|
|
112832
|
+
var TEST_LOCK_HOME_ENV = "OMO_TEST_CREDENTIAL_LOCK_HOME";
|
|
112833
|
+
var INJECTED_SECRETS = Symbol.for("omo.test.injectedSecrets");
|
|
112834
|
+
function testLockHome(env, secrets) {
|
|
112835
|
+
const home = env[TEST_LOCK_HOME_ENV];
|
|
112836
|
+
if (home === undefined || !(posix13.isAbsolute(home) || win3210.isAbsolute(home)))
|
|
112837
|
+
return;
|
|
112838
|
+
const marked = typeof secrets === "object" && secrets !== null && secrets[INJECTED_SECRETS] === true;
|
|
112839
|
+
return marked ? home : undefined;
|
|
112840
|
+
}
|
|
112841
|
+
var facts = systemAccountFacts;
|
|
112842
|
+
var chosen;
|
|
112843
|
+
function accountHome() {
|
|
112844
|
+
chosen ??= testLockHome(process.env, typeof Bun === "undefined" ? undefined : Bun.secrets) ?? chooseLockHome(facts);
|
|
112845
|
+
return chosen;
|
|
112846
|
+
}
|
|
112788
112847
|
|
|
112789
112848
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/client.ts
|
|
112790
112849
|
init_zod();
|
|
@@ -112899,18 +112958,18 @@ async function callHelper(path, call, options = {}) {
|
|
|
112899
112958
|
}
|
|
112900
112959
|
|
|
112901
112960
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/location.ts
|
|
112902
|
-
import { dirname as dirname42, join as
|
|
112961
|
+
import { dirname as dirname42, join as join107, posix as posix14 } from "path";
|
|
112903
112962
|
import { fileURLToPath as fileURLToPath8 } from "url";
|
|
112904
112963
|
function bundleCandidates(moduleUrl) {
|
|
112905
112964
|
const root = dirname42(dirname42(dirname42(fileURLToPath8(moduleUrl))));
|
|
112906
|
-
return [
|
|
112965
|
+
return [join107(root, "bin", "darwin", "omo-keychain"), join107(root, "omo-keychain")];
|
|
112907
112966
|
}
|
|
112908
112967
|
function machineCandidates(home, arch = process.arch) {
|
|
112909
112968
|
const runtimeArch = arch === "arm64" ? "arm64" : "x64";
|
|
112910
112969
|
return [
|
|
112911
112970
|
`/Applications/OmO.app/Contents/Resources/omo-runtime/darwin-${runtimeArch}/omo-keychain`,
|
|
112912
|
-
|
|
112913
|
-
|
|
112971
|
+
posix14.join(home, "Applications", "OmO.app", "Contents", "Resources", "omo-runtime", `darwin-${runtimeArch}`, "omo-keychain"),
|
|
112972
|
+
posix14.join(home, ".bun", "install", "global", "node_modules", "omo-ai", "bin", "darwin", "omo-keychain")
|
|
112914
112973
|
];
|
|
112915
112974
|
}
|
|
112916
112975
|
async function locateHelper(candidates, verify) {
|
|
@@ -112927,9 +112986,9 @@ async function locateHelper(candidates, verify) {
|
|
|
112927
112986
|
|
|
112928
112987
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/pin.ts
|
|
112929
112988
|
import { readdirSync as readdirSync14, rmSync as rmSync9 } from "fs";
|
|
112930
|
-
import { chmod as chmod2, copyFile as copyFile4, constants as
|
|
112989
|
+
import { chmod as chmod2, copyFile as copyFile4, constants as constants14, mkdtemp as mkdtemp2, rm as rm16, stat as stat8 } from "fs/promises";
|
|
112931
112990
|
import { tmpdir as tmpdir6 } from "os";
|
|
112932
|
-
import { basename as basename15, join as
|
|
112991
|
+
import { basename as basename15, join as join108 } from "path";
|
|
112933
112992
|
var DIR_PREFIX = "omo-keychain-";
|
|
112934
112993
|
var OWNED_DIR = new RegExp(`^${DIR_PREFIX}(\\d+)-`);
|
|
112935
112994
|
var isAlive = (pid) => {
|
|
@@ -112953,7 +113012,7 @@ function sweepDeadPinDirs(root = tmpdir6()) {
|
|
|
112953
113012
|
if (owner === undefined || Number(owner) === process.pid || isAlive(Number(owner)))
|
|
112954
113013
|
continue;
|
|
112955
113014
|
try {
|
|
112956
|
-
rmSync9(
|
|
113015
|
+
rmSync9(join108(root, entry), { recursive: true, force: true });
|
|
112957
113016
|
} catch {
|
|
112958
113017
|
continue;
|
|
112959
113018
|
}
|
|
@@ -112966,7 +113025,7 @@ async function processPinDir() {
|
|
|
112966
113025
|
if (processDir !== undefined)
|
|
112967
113026
|
return processDir;
|
|
112968
113027
|
sweepDeadPinDirs();
|
|
112969
|
-
const dir = await mkdtemp2(
|
|
113028
|
+
const dir = await mkdtemp2(join108(tmpdir6(), `${DIR_PREFIX}${process.pid}-`));
|
|
112970
113029
|
process.once("exit", () => rmSync9(dir, { recursive: true, force: true }));
|
|
112971
113030
|
processDir = dir;
|
|
112972
113031
|
return dir;
|
|
@@ -112977,9 +113036,9 @@ async function sourceIdentity(source) {
|
|
|
112977
113036
|
return `${source}\x00${info.dev}\x00${info.ino}\x00${info.size}\x00${info.mtimeMs}\x00${info.ctimeMs}`;
|
|
112978
113037
|
}
|
|
112979
113038
|
async function copyAndVerify(source, verify, dir) {
|
|
112980
|
-
const target =
|
|
113039
|
+
const target = join108(dir, `${crypto.randomUUID()}-${basename15(source)}`);
|
|
112981
113040
|
try {
|
|
112982
|
-
await copyFile4(source, target,
|
|
113041
|
+
await copyFile4(source, target, constants14.COPYFILE_EXCL);
|
|
112983
113042
|
await chmod2(target, 320);
|
|
112984
113043
|
} catch (error) {
|
|
112985
113044
|
await rm16(target, { force: true });
|
|
@@ -113594,16 +113653,16 @@ var {
|
|
|
113594
113653
|
unlink: unlink3
|
|
113595
113654
|
} = promises;
|
|
113596
113655
|
var {
|
|
113597
|
-
accessSync:
|
|
113656
|
+
accessSync: accessSync6,
|
|
113598
113657
|
chmodSync: chmodSync7,
|
|
113599
113658
|
fsyncSync: fsyncSync3,
|
|
113600
113659
|
linkSync,
|
|
113601
113660
|
lstatSync: lstatSync5,
|
|
113602
|
-
mkdirSync:
|
|
113603
|
-
readFileSync:
|
|
113661
|
+
mkdirSync: mkdirSync20,
|
|
113662
|
+
readFileSync: readFileSync45,
|
|
113604
113663
|
readdirSync: readdirSync15,
|
|
113605
113664
|
realpathSync: realpathSync13,
|
|
113606
|
-
statSync:
|
|
113665
|
+
statSync: statSync9,
|
|
113607
113666
|
unlinkSync: unlinkSync10,
|
|
113608
113667
|
writeFileSync: writeFileSync17,
|
|
113609
113668
|
writeSync
|
|
@@ -114073,7 +114132,7 @@ async function publishLockRecord(lockPath, record) {
|
|
|
114073
114132
|
// packages/team-core/src/team-state-store/lock-lease.ts
|
|
114074
114133
|
import { randomUUID as randomUUID7 } from "crypto";
|
|
114075
114134
|
import { open as open4, readdir as readdir18, readFile as readFile36, rename as rename9, rm as rm18 } from "fs/promises";
|
|
114076
|
-
import { basename as basename16, dirname as dirname44, join as
|
|
114135
|
+
import { basename as basename16, dirname as dirname44, join as join109 } from "path";
|
|
114077
114136
|
|
|
114078
114137
|
// packages/team-core/src/team-state-store/lock-reclaim.ts
|
|
114079
114138
|
import { createHash as createHash10 } from "crypto";
|
|
@@ -114152,7 +114211,7 @@ var UUID2 = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
|
|
|
114152
114211
|
var escapeRegExp2 = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
114153
114212
|
var leaseTempPattern = (lockPath) => new RegExp(`^\\.${escapeRegExp2(basename16(lockPath))}\\.${UUID2}\\.lease$`);
|
|
114154
114213
|
async function replaceRecord(lockPath, content) {
|
|
114155
|
-
const temporary =
|
|
114214
|
+
const temporary = join109(dirname44(lockPath), `${leaseTempPrefix(lockPath)}${randomUUID7()}${LEASE_TEMP_SUFFIX}`);
|
|
114156
114215
|
try {
|
|
114157
114216
|
const handle = await open4(temporary, "wx", 384);
|
|
114158
114217
|
try {
|
|
@@ -114178,7 +114237,7 @@ async function removeLeftoverTemps(lockPath) {
|
|
|
114178
114237
|
}
|
|
114179
114238
|
for (const entry of entries) {
|
|
114180
114239
|
if (pattern.test(entry))
|
|
114181
|
-
await rm18(
|
|
114240
|
+
await rm18(join109(dirname44(lockPath), entry), { force: true });
|
|
114182
114241
|
}
|
|
114183
114242
|
}
|
|
114184
114243
|
async function currentRecord(lockPath) {
|
|
@@ -114315,7 +114374,7 @@ function promptLockAt(path, hooks = {}) {
|
|
|
114315
114374
|
var ROW_9B_DEFAULT = "reinstall-notice";
|
|
114316
114375
|
var helperAccess = () => sharedHelperAccess(() => {
|
|
114317
114376
|
const { entryCandidates } = keychainProcessState();
|
|
114318
|
-
return resolveHelperAccess([...entryCandidates, ...bundleCandidates(import.meta.url), ...machineCandidates(
|
|
114377
|
+
return resolveHelperAccess([...entryCandidates, ...bundleCandidates(import.meta.url), ...machineCandidates(homedir32())]);
|
|
114319
114378
|
});
|
|
114320
114379
|
function sharedHelperAccess(resolve) {
|
|
114321
114380
|
const state = keychainProcessState();
|
|
@@ -114352,7 +114411,7 @@ function createDarwinBackend(options) {
|
|
|
114352
114411
|
access: options.access,
|
|
114353
114412
|
cache: options.cache ?? processApprovalCache(),
|
|
114354
114413
|
background: options.background,
|
|
114355
|
-
takePromptLock: promptLockAt(
|
|
114414
|
+
takePromptLock: promptLockAt(join110(lockDirectoryIn(options.home ?? accountHome()), `${options.account}.keychain-prompt`)),
|
|
114356
114415
|
ownSilentGet: () => silently(() => options.secrets.get(key)),
|
|
114357
114416
|
ownOverwrite: (value) => silently(() => options.secrets.set({ ...key, value })),
|
|
114358
114417
|
ownDelete: (name) => name === options.account ? gatedSecrets(() => options.secrets.delete({ ...key, name })) : silently(() => options.secrets.delete({ ...key, name })),
|
|
@@ -114380,22 +114439,22 @@ async function guardHelperlessRead(service, account, choice = ROW_9B_DEFAULT, pr
|
|
|
114380
114439
|
}
|
|
114381
114440
|
|
|
114382
114441
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/store-binding.ts
|
|
114383
|
-
import { homedir as
|
|
114442
|
+
import { homedir as homedir33 } from "os";
|
|
114384
114443
|
|
|
114385
114444
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/creator-handoff.ts
|
|
114386
114445
|
init_bun_file_shim();
|
|
114387
114446
|
init_bun_spawn_shim();
|
|
114388
|
-
import { dirname as dirname47, posix as
|
|
114447
|
+
import { dirname as dirname47, posix as posix15 } from "path";
|
|
114389
114448
|
|
|
114390
114449
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/runtime-capabilities.ts
|
|
114391
114450
|
init_zod();
|
|
114392
114451
|
import { readFile as readFile37 } from "fs/promises";
|
|
114393
|
-
import { dirname as dirname46, join as
|
|
114452
|
+
import { dirname as dirname46, join as join111 } from "path";
|
|
114394
114453
|
var RUNTIME_CAPABILITIES_FILE = "omo-runtime-capabilities.json";
|
|
114395
114454
|
var RUNTIME_CAPABILITIES = { keychainHandoff: 1 };
|
|
114396
114455
|
var capabilitiesSchema = object({ keychainHandoff: number2().int() }).passthrough();
|
|
114397
114456
|
async function runtimeDeclaresKeychainHandoff(runtime) {
|
|
114398
|
-
const text = await readFile37(
|
|
114457
|
+
const text = await readFile37(join111(dirname46(runtime), RUNTIME_CAPABILITIES_FILE), "utf8").catch(() => null);
|
|
114399
114458
|
if (text === null)
|
|
114400
114459
|
return false;
|
|
114401
114460
|
try {
|
|
@@ -114414,9 +114473,9 @@ var HANDOFF_ENV = "OMO_KEYCHAIN_HANDOFF";
|
|
|
114414
114473
|
var HANDOFF_DEADLINE_MS = 45000;
|
|
114415
114474
|
function desktopRuntimeCandidates(home, arch = process.arch) {
|
|
114416
114475
|
const runtimeArch = arch === "arm64" ? "arm64" : "x64";
|
|
114417
|
-
return ["/Applications/OmO.app",
|
|
114476
|
+
return ["/Applications/OmO.app", posix15.join(home, "Applications", "OmO.app")].map((app) => ({
|
|
114418
114477
|
app,
|
|
114419
|
-
runtime:
|
|
114478
|
+
runtime: posix15.join(app, "Contents", "Resources", "omo-runtime", `darwin-${runtimeArch}`, "omo")
|
|
114420
114479
|
}));
|
|
114421
114480
|
}
|
|
114422
114481
|
var verifyBundle = async (app, requirement) => {
|
|
@@ -114474,13 +114533,13 @@ function createCreatorHandOff(options) {
|
|
|
114474
114533
|
|
|
114475
114534
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/store-binding.ts
|
|
114476
114535
|
var readers = new Map;
|
|
114477
|
-
var
|
|
114478
|
-
var isInjectedSecrets = (api) => api[
|
|
114536
|
+
var INJECTED_SECRETS2 = Symbol.for("omo.test.injectedSecrets");
|
|
114537
|
+
var isInjectedSecrets = (api) => api[INJECTED_SECRETS2] === true;
|
|
114479
114538
|
var backends = new Map;
|
|
114480
114539
|
function processHandOff(origin) {
|
|
114481
114540
|
return () => {
|
|
114482
114541
|
const state = keychainProcessState();
|
|
114483
|
-
state.handOff ??= createCreatorHandOff({ candidates: desktopRuntimeCandidates(
|
|
114542
|
+
state.handOff ??= createCreatorHandOff({ candidates: desktopRuntimeCandidates(homedir33()), origin })();
|
|
114484
114543
|
return state.handOff;
|
|
114485
114544
|
};
|
|
114486
114545
|
}
|
|
@@ -114633,18 +114692,18 @@ var probeSecretServiceLock = () => new Promise((resolve) => {
|
|
|
114633
114692
|
import { AsyncLocalStorage as AsyncLocalStorage3 } from "async_hooks";
|
|
114634
114693
|
import { createHash as createHash11 } from "crypto";
|
|
114635
114694
|
import { mkdir as mkdir12 } from "fs/promises";
|
|
114636
|
-
import {
|
|
114637
|
-
import { join as join112 } from "path";
|
|
114695
|
+
import { join as join113 } from "path";
|
|
114638
114696
|
var held = new AsyncLocalStorage3;
|
|
114639
|
-
|
|
114697
|
+
var CREDENTIAL_LOCK_STALE_AFTER_MS = 60000;
|
|
114698
|
+
function credentialLockPaths(api, home = accountHome()) {
|
|
114640
114699
|
const id = createHash11("sha256").update(serviceOrigin(api)).digest("hex");
|
|
114641
|
-
const directory =
|
|
114642
|
-
return { directory, lock:
|
|
114700
|
+
const directory = lockDirectoryIn(home);
|
|
114701
|
+
return { directory, lock: join113(directory, `${id}.lock`), desktopRecord: join113(directory, `${id}.desktop-generation.json`) };
|
|
114643
114702
|
}
|
|
114644
|
-
function heldCredentialLease(api, home =
|
|
114703
|
+
function heldCredentialLease(api, home = accountHome()) {
|
|
114645
114704
|
return held.getStore()?.get(credentialLockPaths(api, home).lock);
|
|
114646
114705
|
}
|
|
114647
|
-
async function withCredentialLock(api, action, home =
|
|
114706
|
+
async function withCredentialLock(api, action, home = accountHome(), ownerTag = "cli-session") {
|
|
114648
114707
|
const { directory, lock } = credentialLockPaths(api, home);
|
|
114649
114708
|
const owned = held.getStore();
|
|
114650
114709
|
const outer = owned?.get(lock);
|
|
@@ -114653,7 +114712,7 @@ async function withCredentialLock(api, action, home = homedir33(), ownerTag = "c
|
|
|
114653
114712
|
await mkdir12(directory, { recursive: true, mode: 448 });
|
|
114654
114713
|
return withLock(lock, (lease) => held.run(new Map([...owned ?? [], [lock, lease]]), () => action(lease)), {
|
|
114655
114714
|
ownerTag,
|
|
114656
|
-
staleAfterMs:
|
|
114715
|
+
staleAfterMs: CREDENTIAL_LOCK_STALE_AFTER_MS
|
|
114657
114716
|
});
|
|
114658
114717
|
}
|
|
114659
114718
|
|
|
@@ -115021,14 +115080,14 @@ async function loginLoopback(session, options) {
|
|
|
115021
115080
|
|
|
115022
115081
|
// packages/memory-core/src/sync/device-retire.ts
|
|
115023
115082
|
import { createHash as createHash14, randomBytes as randomBytes6 } from "crypto";
|
|
115024
|
-
import { join as
|
|
115083
|
+
import { join as join116 } from "path";
|
|
115025
115084
|
|
|
115026
115085
|
// packages/memory-core/src/identity/layout.ts
|
|
115027
115086
|
import { homedir as homedir34 } from "os";
|
|
115028
|
-
import { join as
|
|
115087
|
+
import { join as join114, resolve as resolve31 } from "path";
|
|
115029
115088
|
var MEMORY_ROOT_ENV_VAR = "OMO_MEMORY_HOME";
|
|
115030
115089
|
function defaultMemoryRoot() {
|
|
115031
|
-
return
|
|
115090
|
+
return join114(homedir34(), ".omo", "memory");
|
|
115032
115091
|
}
|
|
115033
115092
|
function resolveMemoryRoot(env, cwd) {
|
|
115034
115093
|
const override = env[MEMORY_ROOT_ENV_VAR];
|
|
@@ -115038,13 +115097,13 @@ function resolveMemoryRoot(env, cwd) {
|
|
|
115038
115097
|
return resolve31(cwd, override);
|
|
115039
115098
|
}
|
|
115040
115099
|
// packages/memory-core/src/sync/pin-dir.ts
|
|
115041
|
-
import { join as
|
|
115042
|
-
var syncPinDir = (memoryRoot) =>
|
|
115100
|
+
import { join as join115 } from "path";
|
|
115101
|
+
var syncPinDir = (memoryRoot) => join115(memoryRoot, "sync-device");
|
|
115043
115102
|
|
|
115044
115103
|
// packages/memory-core/src/sync/device-retire.ts
|
|
115045
|
-
var trustAnchorRoot = (pinDir) =>
|
|
115104
|
+
var trustAnchorRoot = (pinDir) => join116(pinDir, "trust-anchor");
|
|
115046
115105
|
var trustAnchorKey = (account) => createHash14("sha256").update(account, "utf8").digest("base64url");
|
|
115047
|
-
var trustAnchorDir = (pinDir, account) =>
|
|
115106
|
+
var trustAnchorDir = (pinDir, account) => join116(trustAnchorRoot(pinDir), trustAnchorKey(account));
|
|
115048
115107
|
var hasLiveTrustAnchor = async (pinDir) => {
|
|
115049
115108
|
try {
|
|
115050
115109
|
return (await readdir17(trustAnchorRoot(pinDir))).some((name) => !name.includes(".retired-"));
|
|
@@ -115070,9 +115129,9 @@ import { homedir as homedir35 } from "os";
|
|
|
115070
115129
|
// packages/omo-opencode/src/cli/service-auth/signed-out-marker.ts
|
|
115071
115130
|
init_zod();
|
|
115072
115131
|
import { mkdir as mkdir13, readFile as readFile38, rename as rename10, rm as rm19, writeFile as writeFile18 } from "fs/promises";
|
|
115073
|
-
import { dirname as dirname48, join as
|
|
115132
|
+
import { dirname as dirname48, join as join117 } from "path";
|
|
115074
115133
|
var markerSchema = object({ device: string2().nullable(), at: string2() });
|
|
115075
|
-
var signedOutMarkerPath = (home, credential) =>
|
|
115134
|
+
var signedOutMarkerPath = (home, credential) => join117(home, ".omo", "account-state", `${credential}.signed-out.json`);
|
|
115076
115135
|
async function readSignedOutMarker(path) {
|
|
115077
115136
|
const text = await readFile38(path, "utf8").catch(() => null);
|
|
115078
115137
|
if (text === null)
|
|
@@ -115637,7 +115696,7 @@ async function boulder(options) {
|
|
|
115637
115696
|
}
|
|
115638
115697
|
// packages/omo-opencode/src/cli/codex-ulw-loop.ts
|
|
115639
115698
|
import { spawn as spawn6 } from "child_process";
|
|
115640
|
-
import { existsSync as existsSync67, readFileSync as
|
|
115699
|
+
import { existsSync as existsSync67, readFileSync as readFileSync46, realpathSync as realpathSync14 } from "fs";
|
|
115641
115700
|
import { homedir as homedir36 } from "os";
|
|
115642
115701
|
var ULW_LOOP_DELEGATION_SENTINEL = "OMO_ULW_LOOP_DELEGATED";
|
|
115643
115702
|
function resolveCodexUlwLoopCommand(input = {}) {
|
|
@@ -115687,7 +115746,7 @@ function resolveLegacyLocalOmoBin(env, homeDir, currentExecutablePaths) {
|
|
|
115687
115746
|
}
|
|
115688
115747
|
function isGeneratedRuntimeWrapper(candidate) {
|
|
115689
115748
|
try {
|
|
115690
|
-
return
|
|
115749
|
+
return readFileSync46(candidate, "utf8").includes(RUNTIME_WRAPPER_MARKER);
|
|
115691
115750
|
} catch (error) {
|
|
115692
115751
|
if (error instanceof Error)
|
|
115693
115752
|
return false;
|
|
@@ -116133,7 +116192,7 @@ prunes.
|
|
|
116133
116192
|
|
|
116134
116193
|
// packages/omo-opencode/src/cli/config-migrate.ts
|
|
116135
116194
|
init_startup_migration();
|
|
116136
|
-
import { posix as
|
|
116195
|
+
import { posix as posix16 } from "path";
|
|
116137
116196
|
function reports(result) {
|
|
116138
116197
|
return result.results.map((entry) => ({
|
|
116139
116198
|
diagnostics: entry.diagnostics,
|
|
@@ -116167,7 +116226,7 @@ function runConfigMigrate(options = {}) {
|
|
|
116167
116226
|
dryRun: options.dryRun ?? false,
|
|
116168
116227
|
environment,
|
|
116169
116228
|
...homeDir === undefined ? {} : { env: { HOME: homeDir }, homeDir },
|
|
116170
|
-
pathOperations:
|
|
116229
|
+
pathOperations: posix16
|
|
116171
116230
|
});
|
|
116172
116231
|
const report = reports(result);
|
|
116173
116232
|
const response = {
|