lazycodex-ai 5.1.66 → 5.1.68
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 +209 -158
- 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 +209 -158
- package/package.json +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +1 -1
- 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 +3 -3
- 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.68",
|
|
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",
|
|
@@ -2320,7 +2320,7 @@ var init_package = __esm(() => {
|
|
|
2320
2320
|
},
|
|
2321
2321
|
devDependencies: {
|
|
2322
2322
|
"@clack/prompts": "^1.8.1",
|
|
2323
|
-
"@code-yeongyu/senpi": "2026.11.
|
|
2323
|
+
"@code-yeongyu/senpi": "2026.11.10",
|
|
2324
2324
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
2325
2325
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
2326
2326
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -2385,18 +2385,18 @@ var init_package = __esm(() => {
|
|
|
2385
2385
|
typescript: "^7.0.2"
|
|
2386
2386
|
},
|
|
2387
2387
|
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.
|
|
2388
|
+
"oh-my-opencode-darwin-arm64": "5.1.68",
|
|
2389
|
+
"oh-my-opencode-darwin-x64": "5.1.68",
|
|
2390
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.68",
|
|
2391
|
+
"oh-my-opencode-linux-arm64": "5.1.68",
|
|
2392
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.68",
|
|
2393
|
+
"oh-my-opencode-linux-x64": "5.1.68",
|
|
2394
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.68",
|
|
2395
|
+
"oh-my-opencode-linux-x64-musl": "5.1.68",
|
|
2396
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.68",
|
|
2397
|
+
"oh-my-opencode-windows-arm64": "5.1.68",
|
|
2398
|
+
"oh-my-opencode-windows-x64": "5.1.68",
|
|
2399
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.68"
|
|
2400
2400
|
},
|
|
2401
2401
|
overrides: {
|
|
2402
2402
|
hono: "^4.13.8",
|
|
@@ -8081,7 +8081,7 @@ var init_latest_models = __esm(() => {
|
|
|
8081
8081
|
claudeOpus: "claude-opus-5-5",
|
|
8082
8082
|
claudeSonnet: "claude-sonnet-5-5",
|
|
8083
8083
|
claudeHaiku: "claude-haiku-5-5",
|
|
8084
|
-
claudeFable: "claude-fable-5-
|
|
8084
|
+
claudeFable: "claude-fable-5-2",
|
|
8085
8085
|
gptAstra: "gpt-6-astra",
|
|
8086
8086
|
gptSol: "gpt-6.1-sol",
|
|
8087
8087
|
gptSolFast: "gpt-6.1-sol-fast",
|
|
@@ -9347,61 +9347,9 @@ var init_file_reference_resolver = __esm(() => {
|
|
|
9347
9347
|
init_logger2();
|
|
9348
9348
|
});
|
|
9349
9349
|
|
|
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
9350
|
// packages/model-core/src/agent-model-requirements.ts
|
|
9402
9351
|
var AGENT_MODEL_REQUIREMENTS;
|
|
9403
9352
|
var init_agent_model_requirements = __esm(() => {
|
|
9404
|
-
init_fable_55_launch();
|
|
9405
9353
|
init_latest_models();
|
|
9406
9354
|
AGENT_MODEL_REQUIREMENTS = {
|
|
9407
9355
|
sisyphus: {
|
|
@@ -9496,15 +9444,15 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9496
9444
|
]
|
|
9497
9445
|
},
|
|
9498
9446
|
prometheus: {
|
|
9499
|
-
fallbackChain:
|
|
9447
|
+
fallbackChain: [
|
|
9500
9448
|
{
|
|
9501
9449
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9502
|
-
model:
|
|
9450
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9503
9451
|
variant: "xhigh"
|
|
9504
9452
|
},
|
|
9505
9453
|
{
|
|
9506
9454
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9507
|
-
model:
|
|
9455
|
+
model: "claude-fable-5-1",
|
|
9508
9456
|
variant: "xhigh"
|
|
9509
9457
|
},
|
|
9510
9458
|
{
|
|
@@ -9518,18 +9466,18 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9518
9466
|
variant: "max"
|
|
9519
9467
|
},
|
|
9520
9468
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9521
|
-
]
|
|
9469
|
+
]
|
|
9522
9470
|
},
|
|
9523
9471
|
metis: {
|
|
9524
|
-
fallbackChain:
|
|
9472
|
+
fallbackChain: [
|
|
9525
9473
|
{
|
|
9526
9474
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9527
|
-
model:
|
|
9475
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9528
9476
|
variant: "max"
|
|
9529
9477
|
},
|
|
9530
9478
|
{
|
|
9531
9479
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9532
|
-
model:
|
|
9480
|
+
model: "claude-fable-5-1",
|
|
9533
9481
|
variant: "max"
|
|
9534
9482
|
},
|
|
9535
9483
|
{
|
|
@@ -9543,7 +9491,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9543
9491
|
variant: "max"
|
|
9544
9492
|
},
|
|
9545
9493
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9546
|
-
]
|
|
9494
|
+
]
|
|
9547
9495
|
},
|
|
9548
9496
|
momus: {
|
|
9549
9497
|
fallbackChain: [
|
|
@@ -9603,20 +9551,19 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9603
9551
|
// packages/model-core/src/category-model-requirements.ts
|
|
9604
9552
|
var CATEGORY_MODEL_REQUIREMENTS;
|
|
9605
9553
|
var init_category_model_requirements = __esm(() => {
|
|
9606
|
-
init_fable_55_launch();
|
|
9607
9554
|
init_latest_models();
|
|
9608
9555
|
CATEGORY_MODEL_REQUIREMENTS = {
|
|
9609
9556
|
"visual-engineering": {
|
|
9610
|
-
fallbackChain:
|
|
9557
|
+
fallbackChain: [
|
|
9611
9558
|
{ providers: ["google", "google-vertex", "opencode"], model: LATEST_MODEL_BY_FAMILY.geminiPro, variant: "low" },
|
|
9612
9559
|
{
|
|
9613
9560
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9614
|
-
model:
|
|
9561
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9615
9562
|
variant: "max"
|
|
9616
9563
|
},
|
|
9617
9564
|
{
|
|
9618
9565
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9619
|
-
model:
|
|
9566
|
+
model: "claude-fable-5-1",
|
|
9620
9567
|
variant: "max"
|
|
9621
9568
|
},
|
|
9622
9569
|
{
|
|
@@ -9630,7 +9577,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9630
9577
|
variant: "max"
|
|
9631
9578
|
},
|
|
9632
9579
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9633
|
-
]
|
|
9580
|
+
]
|
|
9634
9581
|
},
|
|
9635
9582
|
ultrabrain: {
|
|
9636
9583
|
fallbackChain: [
|
|
@@ -9664,15 +9611,15 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9664
9611
|
]
|
|
9665
9612
|
},
|
|
9666
9613
|
artistry: {
|
|
9667
|
-
fallbackChain:
|
|
9614
|
+
fallbackChain: [
|
|
9668
9615
|
{
|
|
9669
9616
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9670
|
-
model:
|
|
9617
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9671
9618
|
variant: "max"
|
|
9672
9619
|
},
|
|
9673
9620
|
{
|
|
9674
9621
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9675
|
-
model:
|
|
9622
|
+
model: "claude-fable-5-1",
|
|
9676
9623
|
variant: "max"
|
|
9677
9624
|
},
|
|
9678
9625
|
{
|
|
@@ -9686,7 +9633,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9686
9633
|
variant: "max"
|
|
9687
9634
|
},
|
|
9688
9635
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9689
|
-
]
|
|
9636
|
+
]
|
|
9690
9637
|
},
|
|
9691
9638
|
quick: {
|
|
9692
9639
|
fallbackChain: [
|
|
@@ -10372,9 +10319,7 @@ var init_runtime_fallback_model = () => {};
|
|
|
10372
10319
|
// packages/model-core/src/model-capabilities/supplemental-entries.ts
|
|
10373
10320
|
var SUPPLEMENTAL_MODEL_CAPABILITIES;
|
|
10374
10321
|
var init_supplemental_entries = __esm(() => {
|
|
10375
|
-
init_fable_55_launch();
|
|
10376
10322
|
SUPPLEMENTAL_MODEL_CAPABILITIES = {
|
|
10377
|
-
[FABLE_55_LAUNCH.id]: FABLE_55_LAUNCH,
|
|
10378
10323
|
"kimi-k3": {
|
|
10379
10324
|
id: "kimi-k3",
|
|
10380
10325
|
family: "kimi",
|
|
@@ -10450,6 +10395,21 @@ var init_supplemental_entries = __esm(() => {
|
|
|
10450
10395
|
output: 128000
|
|
10451
10396
|
}
|
|
10452
10397
|
},
|
|
10398
|
+
"claude-fable-5-2": {
|
|
10399
|
+
id: "claude-fable-5-2",
|
|
10400
|
+
family: "claude-fable",
|
|
10401
|
+
reasoning: true,
|
|
10402
|
+
temperature: false,
|
|
10403
|
+
toolCall: true,
|
|
10404
|
+
modalities: {
|
|
10405
|
+
input: ["text", "image", "pdf"],
|
|
10406
|
+
output: ["text"]
|
|
10407
|
+
},
|
|
10408
|
+
limit: {
|
|
10409
|
+
context: 1e6,
|
|
10410
|
+
output: 128000
|
|
10411
|
+
}
|
|
10412
|
+
},
|
|
10453
10413
|
"gpt-6-astra": {
|
|
10454
10414
|
id: "gpt-6-astra",
|
|
10455
10415
|
family: "gpt",
|
|
@@ -10854,25 +10814,16 @@ var init_supplemental_entries = __esm(() => {
|
|
|
10854
10814
|
});
|
|
10855
10815
|
|
|
10856
10816
|
// 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
10817
|
function getBundledModelCapabilitiesSnapshot(snapshotJson) {
|
|
10868
|
-
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
|
|
10872
|
-
|
|
10818
|
+
return {
|
|
10819
|
+
...snapshotJson,
|
|
10820
|
+
models: {
|
|
10821
|
+
...snapshotJson.models,
|
|
10822
|
+
...SUPPLEMENTAL_MODEL_CAPABILITIES
|
|
10823
|
+
}
|
|
10824
|
+
};
|
|
10873
10825
|
}
|
|
10874
10826
|
var init_bundled_snapshot = __esm(() => {
|
|
10875
|
-
init_fable_55_launch();
|
|
10876
10827
|
init_supplemental_entries();
|
|
10877
10828
|
});
|
|
10878
10829
|
|
|
@@ -11300,7 +11251,6 @@ var init_src2 = __esm(() => {
|
|
|
11300
11251
|
init_model_requirements();
|
|
11301
11252
|
init_latest_models();
|
|
11302
11253
|
init_model_family_detectors();
|
|
11303
|
-
init_fable_55_launch();
|
|
11304
11254
|
init_model_capability_aliases();
|
|
11305
11255
|
init_model_capability_heuristics();
|
|
11306
11256
|
init_model_capability_guardrails();
|
|
@@ -11622,7 +11572,6 @@ Approach:
|
|
|
11622
11572
|
</Category_Context>`, GOOGLE_CATEGORIES;
|
|
11623
11573
|
var init_google_categories = __esm(() => {
|
|
11624
11574
|
init_latest_models();
|
|
11625
|
-
init_src2();
|
|
11626
11575
|
GOOGLE_CATEGORIES = [
|
|
11627
11576
|
{
|
|
11628
11577
|
name: "visual-engineering",
|
|
@@ -11632,7 +11581,7 @@ var init_google_categories = __esm(() => {
|
|
|
11632
11581
|
},
|
|
11633
11582
|
{
|
|
11634
11583
|
name: "artistry",
|
|
11635
|
-
config: { model: `anthropic/${
|
|
11584
|
+
config: { model: `anthropic/${LATEST_MODEL_BY_FAMILY.claudeFable}`, variant: "max" },
|
|
11636
11585
|
description: "Complex problem-solving with unconventional, creative approaches - beyond standard patterns",
|
|
11637
11586
|
promptAppend: ARTISTRY_CATEGORY_PROMPT_APPEND
|
|
11638
11587
|
}
|
|
@@ -92837,7 +92786,7 @@ var package_default2;
|
|
|
92837
92786
|
var init_package2 = __esm(() => {
|
|
92838
92787
|
package_default2 = {
|
|
92839
92788
|
name: "@oh-my-opencode/omo-codex",
|
|
92840
|
-
version: "5.1.
|
|
92789
|
+
version: "5.1.68",
|
|
92841
92790
|
type: "module",
|
|
92842
92791
|
private: true,
|
|
92843
92792
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -109601,8 +109550,8 @@ var package_default3 = {
|
|
|
109601
109550
|
},
|
|
109602
109551
|
dependencies: {
|
|
109603
109552
|
"@clack/prompts": "^1.8.1",
|
|
109604
|
-
"@code-yeongyu/senpi": "2026.11.
|
|
109605
|
-
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.
|
|
109553
|
+
"@code-yeongyu/senpi": "2026.11.10",
|
|
109554
|
+
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.10",
|
|
109606
109555
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
109607
109556
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
109608
109557
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -112862,8 +112811,110 @@ import { createHash as createHash12, randomUUID as randomUUID8 } from "node:cryp
|
|
|
112862
112811
|
import { basename as basename17 } from "node:path";
|
|
112863
112812
|
|
|
112864
112813
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/darwin-backend.ts
|
|
112814
|
+
import { homedir as homedir32 } from "node:os";
|
|
112815
|
+
import { join as join110 } from "node:path";
|
|
112816
|
+
|
|
112817
|
+
// packages/omo-opencode/src/cli/service-auth/account-home.ts
|
|
112818
|
+
import { execFileSync as execFileSync4 } from "node:child_process";
|
|
112819
|
+
import { accessSync as accessSync5, constants as constants13, mkdirSync as mkdirSync19, readFileSync as readFileSync44, statSync as statSync7 } from "node:fs";
|
|
112865
112820
|
import { homedir as homedir31 } from "node:os";
|
|
112866
|
-
import { join as
|
|
112821
|
+
import { join as join106, posix as posix13, win32 as win3210 } from "node:path";
|
|
112822
|
+
var lockDirectoryIn = (home) => join106(home, ".omo", "session-locks");
|
|
112823
|
+
function userRecordHome(facts) {
|
|
112824
|
+
try {
|
|
112825
|
+
if (facts.platform === "linux")
|
|
112826
|
+
return passwdHome(facts);
|
|
112827
|
+
if (facts.platform === "darwin")
|
|
112828
|
+
return darwinHome(facts);
|
|
112829
|
+
if (facts.platform === "win32")
|
|
112830
|
+
return windowsProfile(facts);
|
|
112831
|
+
return;
|
|
112832
|
+
} catch {
|
|
112833
|
+
return;
|
|
112834
|
+
}
|
|
112835
|
+
}
|
|
112836
|
+
function passwdHome(facts) {
|
|
112837
|
+
if (facts.uid === undefined)
|
|
112838
|
+
return;
|
|
112839
|
+
const uid = String(facts.uid);
|
|
112840
|
+
const home = facts.readFile("/etc/passwd").split(`
|
|
112841
|
+
`).map((line) => line.split(":")).find((fields) => fields[2] === uid)?.[5];
|
|
112842
|
+
return home !== undefined && posix13.isAbsolute(home) ? home : undefined;
|
|
112843
|
+
}
|
|
112844
|
+
function darwinHome(facts) {
|
|
112845
|
+
const fields = facts.run("/usr/bin/id", ["-P"]).trim().split(":");
|
|
112846
|
+
const home = fields[8];
|
|
112847
|
+
if (facts.uid !== undefined && fields[2] !== String(facts.uid))
|
|
112848
|
+
return;
|
|
112849
|
+
return home !== undefined && posix13.isAbsolute(home) ? home : undefined;
|
|
112850
|
+
}
|
|
112851
|
+
function windowsProfile(facts) {
|
|
112852
|
+
const whoami = system32Tool(facts, "whoami.exe");
|
|
112853
|
+
const reg = system32Tool(facts, "reg.exe");
|
|
112854
|
+
if (whoami === undefined || reg === undefined)
|
|
112855
|
+
return;
|
|
112856
|
+
const sid = /S-1-[0-9-]+/.exec(facts.run(whoami, ["/user", "/fo", "csv", "/nh"]))?.[0];
|
|
112857
|
+
if (sid === undefined)
|
|
112858
|
+
return;
|
|
112859
|
+
const key = `HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\${sid}`;
|
|
112860
|
+
const value = /ProfileImagePath\s+REG_(?:EXPAND_)?SZ\s+(.+)/.exec(facts.run(reg, ["query", key, "/v", "ProfileImagePath"]))?.[1]?.trim();
|
|
112861
|
+
const home = value?.replace(/%([^%]+)%/g, (whole, name) => facts.env[name] ?? whole);
|
|
112862
|
+
return home !== undefined && !home.includes("%") && win3210.isAbsolute(home) ? home : undefined;
|
|
112863
|
+
}
|
|
112864
|
+
function system32Tool(facts, name) {
|
|
112865
|
+
const root = facts.env.SystemRoot;
|
|
112866
|
+
if (root === undefined || !/^[A-Za-z]:[\\/]/.test(root) || root.split(/[\\/]/).includes(".."))
|
|
112867
|
+
return;
|
|
112868
|
+
const tool = win3210.join(root, "System32", name);
|
|
112869
|
+
return facts.isFile(tool) ? tool : undefined;
|
|
112870
|
+
}
|
|
112871
|
+
function chooseLockHome(facts) {
|
|
112872
|
+
const home = facts.homedir();
|
|
112873
|
+
const record = facts.recordHome();
|
|
112874
|
+
if (record === undefined || record === home)
|
|
112875
|
+
return home;
|
|
112876
|
+
try {
|
|
112877
|
+
facts.prepareLockDirectory(lockDirectoryIn(record));
|
|
112878
|
+
return record;
|
|
112879
|
+
} catch (error) {
|
|
112880
|
+
const reason = error instanceof Error && "code" in error ? String(error.code) : String(error);
|
|
112881
|
+
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).`);
|
|
112882
|
+
return home;
|
|
112883
|
+
}
|
|
112884
|
+
}
|
|
112885
|
+
var systemPlatformFacts = {
|
|
112886
|
+
platform: process.platform,
|
|
112887
|
+
uid: process.getuid?.(),
|
|
112888
|
+
env: process.env,
|
|
112889
|
+
readFile: (path) => readFileSync44(path, "utf8"),
|
|
112890
|
+
isFile: (path) => statSync7(path, { throwIfNoEntry: false })?.isFile() ?? false,
|
|
112891
|
+
run: (command, args) => execFileSync4(command, args, { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], timeout: 5000, windowsHide: true })
|
|
112892
|
+
};
|
|
112893
|
+
var systemAccountFacts = {
|
|
112894
|
+
recordHome: () => userRecordHome(systemPlatformFacts),
|
|
112895
|
+
homedir: homedir31,
|
|
112896
|
+
prepareLockDirectory: (directory) => {
|
|
112897
|
+
mkdirSync19(directory, { recursive: true, mode: 448 });
|
|
112898
|
+
accessSync5(directory, constants13.W_OK);
|
|
112899
|
+
},
|
|
112900
|
+
warn: (message) => process.stderr.write(`${message}
|
|
112901
|
+
`)
|
|
112902
|
+
};
|
|
112903
|
+
var TEST_LOCK_HOME_ENV = "OMO_TEST_CREDENTIAL_LOCK_HOME";
|
|
112904
|
+
var INJECTED_SECRETS = Symbol.for("omo.test.injectedSecrets");
|
|
112905
|
+
function testLockHome(env, secrets) {
|
|
112906
|
+
const home = env[TEST_LOCK_HOME_ENV];
|
|
112907
|
+
if (home === undefined || !(posix13.isAbsolute(home) || win3210.isAbsolute(home)))
|
|
112908
|
+
return;
|
|
112909
|
+
const marked = typeof secrets === "object" && secrets !== null && secrets[INJECTED_SECRETS] === true;
|
|
112910
|
+
return marked ? home : undefined;
|
|
112911
|
+
}
|
|
112912
|
+
var facts = systemAccountFacts;
|
|
112913
|
+
var chosen;
|
|
112914
|
+
function accountHome() {
|
|
112915
|
+
chosen ??= testLockHome(process.env, typeof Bun === "undefined" ? undefined : Bun.secrets) ?? chooseLockHome(facts);
|
|
112916
|
+
return chosen;
|
|
112917
|
+
}
|
|
112867
112918
|
|
|
112868
112919
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/client.ts
|
|
112869
112920
|
init_zod();
|
|
@@ -112978,18 +113029,18 @@ async function callHelper(path, call, options = {}) {
|
|
|
112978
113029
|
}
|
|
112979
113030
|
|
|
112980
113031
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/location.ts
|
|
112981
|
-
import { dirname as dirname42, join as
|
|
113032
|
+
import { dirname as dirname42, join as join107, posix as posix14 } from "node:path";
|
|
112982
113033
|
import { fileURLToPath as fileURLToPath8 } from "node:url";
|
|
112983
113034
|
function bundleCandidates(moduleUrl) {
|
|
112984
113035
|
const root = dirname42(dirname42(dirname42(fileURLToPath8(moduleUrl))));
|
|
112985
|
-
return [
|
|
113036
|
+
return [join107(root, "bin", "darwin", "omo-keychain"), join107(root, "omo-keychain")];
|
|
112986
113037
|
}
|
|
112987
113038
|
function machineCandidates(home, arch = process.arch) {
|
|
112988
113039
|
const runtimeArch = arch === "arm64" ? "arm64" : "x64";
|
|
112989
113040
|
return [
|
|
112990
113041
|
`/Applications/OmO.app/Contents/Resources/omo-runtime/darwin-${runtimeArch}/omo-keychain`,
|
|
112991
|
-
|
|
112992
|
-
|
|
113042
|
+
posix14.join(home, "Applications", "OmO.app", "Contents", "Resources", "omo-runtime", `darwin-${runtimeArch}`, "omo-keychain"),
|
|
113043
|
+
posix14.join(home, ".bun", "install", "global", "node_modules", "omo-ai", "bin", "darwin", "omo-keychain")
|
|
112993
113044
|
];
|
|
112994
113045
|
}
|
|
112995
113046
|
async function locateHelper(candidates, verify) {
|
|
@@ -113006,9 +113057,9 @@ async function locateHelper(candidates, verify) {
|
|
|
113006
113057
|
|
|
113007
113058
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/pin.ts
|
|
113008
113059
|
import { readdirSync as readdirSync14, rmSync as rmSync9 } from "node:fs";
|
|
113009
|
-
import { chmod as chmod2, copyFile as copyFile4, constants as
|
|
113060
|
+
import { chmod as chmod2, copyFile as copyFile4, constants as constants14, mkdtemp as mkdtemp2, rm as rm16, stat as stat8 } from "node:fs/promises";
|
|
113010
113061
|
import { tmpdir as tmpdir6 } from "node:os";
|
|
113011
|
-
import { basename as basename15, join as
|
|
113062
|
+
import { basename as basename15, join as join108 } from "node:path";
|
|
113012
113063
|
var DIR_PREFIX = "omo-keychain-";
|
|
113013
113064
|
var OWNED_DIR = new RegExp(`^${DIR_PREFIX}(\\d+)-`);
|
|
113014
113065
|
var isAlive = (pid) => {
|
|
@@ -113032,7 +113083,7 @@ function sweepDeadPinDirs(root = tmpdir6()) {
|
|
|
113032
113083
|
if (owner === undefined || Number(owner) === process.pid || isAlive(Number(owner)))
|
|
113033
113084
|
continue;
|
|
113034
113085
|
try {
|
|
113035
|
-
rmSync9(
|
|
113086
|
+
rmSync9(join108(root, entry), { recursive: true, force: true });
|
|
113036
113087
|
} catch {
|
|
113037
113088
|
continue;
|
|
113038
113089
|
}
|
|
@@ -113045,7 +113096,7 @@ async function processPinDir() {
|
|
|
113045
113096
|
if (processDir !== undefined)
|
|
113046
113097
|
return processDir;
|
|
113047
113098
|
sweepDeadPinDirs();
|
|
113048
|
-
const dir = await mkdtemp2(
|
|
113099
|
+
const dir = await mkdtemp2(join108(tmpdir6(), `${DIR_PREFIX}${process.pid}-`));
|
|
113049
113100
|
process.once("exit", () => rmSync9(dir, { recursive: true, force: true }));
|
|
113050
113101
|
processDir = dir;
|
|
113051
113102
|
return dir;
|
|
@@ -113056,9 +113107,9 @@ async function sourceIdentity(source) {
|
|
|
113056
113107
|
return `${source}\x00${info.dev}\x00${info.ino}\x00${info.size}\x00${info.mtimeMs}\x00${info.ctimeMs}`;
|
|
113057
113108
|
}
|
|
113058
113109
|
async function copyAndVerify(source, verify, dir) {
|
|
113059
|
-
const target =
|
|
113110
|
+
const target = join108(dir, `${crypto.randomUUID()}-${basename15(source)}`);
|
|
113060
113111
|
try {
|
|
113061
|
-
await copyFile4(source, target,
|
|
113112
|
+
await copyFile4(source, target, constants14.COPYFILE_EXCL);
|
|
113062
113113
|
await chmod2(target, 320);
|
|
113063
113114
|
} catch (error) {
|
|
113064
113115
|
await rm16(target, { force: true });
|
|
@@ -113673,16 +113724,16 @@ var {
|
|
|
113673
113724
|
unlink: unlink3
|
|
113674
113725
|
} = promises;
|
|
113675
113726
|
var {
|
|
113676
|
-
accessSync:
|
|
113727
|
+
accessSync: accessSync6,
|
|
113677
113728
|
chmodSync: chmodSync7,
|
|
113678
113729
|
fsyncSync: fsyncSync3,
|
|
113679
113730
|
linkSync,
|
|
113680
113731
|
lstatSync: lstatSync5,
|
|
113681
|
-
mkdirSync:
|
|
113682
|
-
readFileSync:
|
|
113732
|
+
mkdirSync: mkdirSync20,
|
|
113733
|
+
readFileSync: readFileSync45,
|
|
113683
113734
|
readdirSync: readdirSync15,
|
|
113684
113735
|
realpathSync: realpathSync13,
|
|
113685
|
-
statSync:
|
|
113736
|
+
statSync: statSync9,
|
|
113686
113737
|
unlinkSync: unlinkSync10,
|
|
113687
113738
|
writeFileSync: writeFileSync17,
|
|
113688
113739
|
writeSync
|
|
@@ -114152,7 +114203,7 @@ async function publishLockRecord(lockPath, record) {
|
|
|
114152
114203
|
// packages/team-core/src/team-state-store/lock-lease.ts
|
|
114153
114204
|
import { randomUUID as randomUUID7 } from "node:crypto";
|
|
114154
114205
|
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
|
|
114206
|
+
import { basename as basename16, dirname as dirname44, join as join109 } from "node:path";
|
|
114156
114207
|
|
|
114157
114208
|
// packages/team-core/src/team-state-store/lock-reclaim.ts
|
|
114158
114209
|
import { createHash as createHash10 } from "node:crypto";
|
|
@@ -114231,7 +114282,7 @@ var UUID2 = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
|
|
|
114231
114282
|
var escapeRegExp2 = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
114232
114283
|
var leaseTempPattern = (lockPath) => new RegExp(`^\\.${escapeRegExp2(basename16(lockPath))}\\.${UUID2}\\.lease$`);
|
|
114233
114284
|
async function replaceRecord(lockPath, content) {
|
|
114234
|
-
const temporary =
|
|
114285
|
+
const temporary = join109(dirname44(lockPath), `${leaseTempPrefix(lockPath)}${randomUUID7()}${LEASE_TEMP_SUFFIX}`);
|
|
114235
114286
|
try {
|
|
114236
114287
|
const handle = await open4(temporary, "wx", 384);
|
|
114237
114288
|
try {
|
|
@@ -114257,7 +114308,7 @@ async function removeLeftoverTemps(lockPath) {
|
|
|
114257
114308
|
}
|
|
114258
114309
|
for (const entry of entries) {
|
|
114259
114310
|
if (pattern.test(entry))
|
|
114260
|
-
await rm18(
|
|
114311
|
+
await rm18(join109(dirname44(lockPath), entry), { force: true });
|
|
114261
114312
|
}
|
|
114262
114313
|
}
|
|
114263
114314
|
async function currentRecord(lockPath) {
|
|
@@ -114394,7 +114445,7 @@ function promptLockAt(path, hooks = {}) {
|
|
|
114394
114445
|
var ROW_9B_DEFAULT = "reinstall-notice";
|
|
114395
114446
|
var helperAccess = () => sharedHelperAccess(() => {
|
|
114396
114447
|
const { entryCandidates } = keychainProcessState();
|
|
114397
|
-
return resolveHelperAccess([...entryCandidates, ...bundleCandidates(import.meta.url), ...machineCandidates(
|
|
114448
|
+
return resolveHelperAccess([...entryCandidates, ...bundleCandidates(import.meta.url), ...machineCandidates(homedir32())]);
|
|
114398
114449
|
});
|
|
114399
114450
|
function sharedHelperAccess(resolve) {
|
|
114400
114451
|
const state = keychainProcessState();
|
|
@@ -114431,7 +114482,7 @@ function createDarwinBackend(options) {
|
|
|
114431
114482
|
access: options.access,
|
|
114432
114483
|
cache: options.cache ?? processApprovalCache(),
|
|
114433
114484
|
background: options.background,
|
|
114434
|
-
takePromptLock: promptLockAt(
|
|
114485
|
+
takePromptLock: promptLockAt(join110(lockDirectoryIn(options.home ?? accountHome()), `${options.account}.keychain-prompt`)),
|
|
114435
114486
|
ownSilentGet: () => silently(() => options.secrets.get(key)),
|
|
114436
114487
|
ownOverwrite: (value) => silently(() => options.secrets.set({ ...key, value })),
|
|
114437
114488
|
ownDelete: (name) => name === options.account ? gatedSecrets(() => options.secrets.delete({ ...key, name })) : silently(() => options.secrets.delete({ ...key, name })),
|
|
@@ -114459,22 +114510,22 @@ async function guardHelperlessRead(service, account, choice = ROW_9B_DEFAULT, pr
|
|
|
114459
114510
|
}
|
|
114460
114511
|
|
|
114461
114512
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/store-binding.ts
|
|
114462
|
-
import { homedir as
|
|
114513
|
+
import { homedir as homedir33 } from "node:os";
|
|
114463
114514
|
|
|
114464
114515
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/creator-handoff.ts
|
|
114465
114516
|
init_bun_file_shim();
|
|
114466
114517
|
init_bun_spawn_shim();
|
|
114467
|
-
import { dirname as dirname47, posix as
|
|
114518
|
+
import { dirname as dirname47, posix as posix15 } from "node:path";
|
|
114468
114519
|
|
|
114469
114520
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/runtime-capabilities.ts
|
|
114470
114521
|
init_zod();
|
|
114471
114522
|
import { readFile as readFile37 } from "node:fs/promises";
|
|
114472
|
-
import { dirname as dirname46, join as
|
|
114523
|
+
import { dirname as dirname46, join as join111 } from "node:path";
|
|
114473
114524
|
var RUNTIME_CAPABILITIES_FILE = "omo-runtime-capabilities.json";
|
|
114474
114525
|
var RUNTIME_CAPABILITIES = { keychainHandoff: 1 };
|
|
114475
114526
|
var capabilitiesSchema = object({ keychainHandoff: number2().int() }).passthrough();
|
|
114476
114527
|
async function runtimeDeclaresKeychainHandoff(runtime) {
|
|
114477
|
-
const text = await readFile37(
|
|
114528
|
+
const text = await readFile37(join111(dirname46(runtime), RUNTIME_CAPABILITIES_FILE), "utf8").catch(() => null);
|
|
114478
114529
|
if (text === null)
|
|
114479
114530
|
return false;
|
|
114480
114531
|
try {
|
|
@@ -114493,9 +114544,9 @@ var HANDOFF_ENV = "OMO_KEYCHAIN_HANDOFF";
|
|
|
114493
114544
|
var HANDOFF_DEADLINE_MS = 45000;
|
|
114494
114545
|
function desktopRuntimeCandidates(home, arch = process.arch) {
|
|
114495
114546
|
const runtimeArch = arch === "arm64" ? "arm64" : "x64";
|
|
114496
|
-
return ["/Applications/OmO.app",
|
|
114547
|
+
return ["/Applications/OmO.app", posix15.join(home, "Applications", "OmO.app")].map((app) => ({
|
|
114497
114548
|
app,
|
|
114498
|
-
runtime:
|
|
114549
|
+
runtime: posix15.join(app, "Contents", "Resources", "omo-runtime", `darwin-${runtimeArch}`, "omo")
|
|
114499
114550
|
}));
|
|
114500
114551
|
}
|
|
114501
114552
|
var verifyBundle = async (app, requirement) => {
|
|
@@ -114553,13 +114604,13 @@ function createCreatorHandOff(options) {
|
|
|
114553
114604
|
|
|
114554
114605
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/store-binding.ts
|
|
114555
114606
|
var readers = new Map;
|
|
114556
|
-
var
|
|
114557
|
-
var isInjectedSecrets = (api) => api[
|
|
114607
|
+
var INJECTED_SECRETS2 = Symbol.for("omo.test.injectedSecrets");
|
|
114608
|
+
var isInjectedSecrets = (api) => api[INJECTED_SECRETS2] === true;
|
|
114558
114609
|
var backends = new Map;
|
|
114559
114610
|
function processHandOff(origin) {
|
|
114560
114611
|
return () => {
|
|
114561
114612
|
const state = keychainProcessState();
|
|
114562
|
-
state.handOff ??= createCreatorHandOff({ candidates: desktopRuntimeCandidates(
|
|
114613
|
+
state.handOff ??= createCreatorHandOff({ candidates: desktopRuntimeCandidates(homedir33()), origin })();
|
|
114563
114614
|
return state.handOff;
|
|
114564
114615
|
};
|
|
114565
114616
|
}
|
|
@@ -114712,18 +114763,18 @@ var probeSecretServiceLock = () => new Promise((resolve) => {
|
|
|
114712
114763
|
import { AsyncLocalStorage as AsyncLocalStorage3 } from "node:async_hooks";
|
|
114713
114764
|
import { createHash as createHash11 } from "node:crypto";
|
|
114714
114765
|
import { mkdir as mkdir12 } from "node:fs/promises";
|
|
114715
|
-
import {
|
|
114716
|
-
import { join as join112 } from "node:path";
|
|
114766
|
+
import { join as join113 } from "node:path";
|
|
114717
114767
|
var held = new AsyncLocalStorage3;
|
|
114718
|
-
|
|
114768
|
+
var CREDENTIAL_LOCK_STALE_AFTER_MS = 60000;
|
|
114769
|
+
function credentialLockPaths(api, home = accountHome()) {
|
|
114719
114770
|
const id = createHash11("sha256").update(serviceOrigin(api)).digest("hex");
|
|
114720
|
-
const directory =
|
|
114721
|
-
return { directory, lock:
|
|
114771
|
+
const directory = lockDirectoryIn(home);
|
|
114772
|
+
return { directory, lock: join113(directory, `${id}.lock`), desktopRecord: join113(directory, `${id}.desktop-generation.json`) };
|
|
114722
114773
|
}
|
|
114723
|
-
function heldCredentialLease(api, home =
|
|
114774
|
+
function heldCredentialLease(api, home = accountHome()) {
|
|
114724
114775
|
return held.getStore()?.get(credentialLockPaths(api, home).lock);
|
|
114725
114776
|
}
|
|
114726
|
-
async function withCredentialLock(api, action, home =
|
|
114777
|
+
async function withCredentialLock(api, action, home = accountHome(), ownerTag = "cli-session") {
|
|
114727
114778
|
const { directory, lock } = credentialLockPaths(api, home);
|
|
114728
114779
|
const owned = held.getStore();
|
|
114729
114780
|
const outer = owned?.get(lock);
|
|
@@ -114732,7 +114783,7 @@ async function withCredentialLock(api, action, home = homedir33(), ownerTag = "c
|
|
|
114732
114783
|
await mkdir12(directory, { recursive: true, mode: 448 });
|
|
114733
114784
|
return withLock(lock, (lease) => held.run(new Map([...owned ?? [], [lock, lease]]), () => action(lease)), {
|
|
114734
114785
|
ownerTag,
|
|
114735
|
-
staleAfterMs:
|
|
114786
|
+
staleAfterMs: CREDENTIAL_LOCK_STALE_AFTER_MS
|
|
114736
114787
|
});
|
|
114737
114788
|
}
|
|
114738
114789
|
|
|
@@ -115100,14 +115151,14 @@ async function loginLoopback(session, options) {
|
|
|
115100
115151
|
|
|
115101
115152
|
// packages/memory-core/src/sync/device-retire.ts
|
|
115102
115153
|
import { createHash as createHash14, randomBytes as randomBytes6 } from "node:crypto";
|
|
115103
|
-
import { join as
|
|
115154
|
+
import { join as join116 } from "node:path";
|
|
115104
115155
|
|
|
115105
115156
|
// packages/memory-core/src/identity/layout.ts
|
|
115106
115157
|
import { homedir as homedir34 } from "node:os";
|
|
115107
|
-
import { join as
|
|
115158
|
+
import { join as join114, resolve as resolve31 } from "node:path";
|
|
115108
115159
|
var MEMORY_ROOT_ENV_VAR = "OMO_MEMORY_HOME";
|
|
115109
115160
|
function defaultMemoryRoot() {
|
|
115110
|
-
return
|
|
115161
|
+
return join114(homedir34(), ".omo", "memory");
|
|
115111
115162
|
}
|
|
115112
115163
|
function resolveMemoryRoot(env, cwd) {
|
|
115113
115164
|
const override = env[MEMORY_ROOT_ENV_VAR];
|
|
@@ -115117,13 +115168,13 @@ function resolveMemoryRoot(env, cwd) {
|
|
|
115117
115168
|
return resolve31(cwd, override);
|
|
115118
115169
|
}
|
|
115119
115170
|
// packages/memory-core/src/sync/pin-dir.ts
|
|
115120
|
-
import { join as
|
|
115121
|
-
var syncPinDir = (memoryRoot) =>
|
|
115171
|
+
import { join as join115 } from "node:path";
|
|
115172
|
+
var syncPinDir = (memoryRoot) => join115(memoryRoot, "sync-device");
|
|
115122
115173
|
|
|
115123
115174
|
// packages/memory-core/src/sync/device-retire.ts
|
|
115124
|
-
var trustAnchorRoot = (pinDir) =>
|
|
115175
|
+
var trustAnchorRoot = (pinDir) => join116(pinDir, "trust-anchor");
|
|
115125
115176
|
var trustAnchorKey = (account) => createHash14("sha256").update(account, "utf8").digest("base64url");
|
|
115126
|
-
var trustAnchorDir = (pinDir, account) =>
|
|
115177
|
+
var trustAnchorDir = (pinDir, account) => join116(trustAnchorRoot(pinDir), trustAnchorKey(account));
|
|
115127
115178
|
var hasLiveTrustAnchor = async (pinDir) => {
|
|
115128
115179
|
try {
|
|
115129
115180
|
return (await readdir17(trustAnchorRoot(pinDir))).some((name) => !name.includes(".retired-"));
|
|
@@ -115149,9 +115200,9 @@ import { homedir as homedir35 } from "node:os";
|
|
|
115149
115200
|
// packages/omo-opencode/src/cli/service-auth/signed-out-marker.ts
|
|
115150
115201
|
init_zod();
|
|
115151
115202
|
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
|
|
115203
|
+
import { dirname as dirname48, join as join117 } from "node:path";
|
|
115153
115204
|
var markerSchema = object({ device: string2().nullable(), at: string2() });
|
|
115154
|
-
var signedOutMarkerPath = (home, credential) =>
|
|
115205
|
+
var signedOutMarkerPath = (home, credential) => join117(home, ".omo", "account-state", `${credential}.signed-out.json`);
|
|
115155
115206
|
async function readSignedOutMarker(path) {
|
|
115156
115207
|
const text = await readFile38(path, "utf8").catch(() => null);
|
|
115157
115208
|
if (text === null)
|
|
@@ -115716,7 +115767,7 @@ async function boulder(options) {
|
|
|
115716
115767
|
}
|
|
115717
115768
|
// packages/omo-opencode/src/cli/codex-ulw-loop.ts
|
|
115718
115769
|
import { spawn as spawn6 } from "node:child_process";
|
|
115719
|
-
import { existsSync as existsSync67, readFileSync as
|
|
115770
|
+
import { existsSync as existsSync67, readFileSync as readFileSync46, realpathSync as realpathSync14 } from "node:fs";
|
|
115720
115771
|
import { homedir as homedir36 } from "node:os";
|
|
115721
115772
|
var ULW_LOOP_DELEGATION_SENTINEL = "OMO_ULW_LOOP_DELEGATED";
|
|
115722
115773
|
function resolveCodexUlwLoopCommand(input = {}) {
|
|
@@ -115766,7 +115817,7 @@ function resolveLegacyLocalOmoBin(env, homeDir, currentExecutablePaths) {
|
|
|
115766
115817
|
}
|
|
115767
115818
|
function isGeneratedRuntimeWrapper(candidate) {
|
|
115768
115819
|
try {
|
|
115769
|
-
return
|
|
115820
|
+
return readFileSync46(candidate, "utf8").includes(RUNTIME_WRAPPER_MARKER);
|
|
115770
115821
|
} catch (error) {
|
|
115771
115822
|
if (error instanceof Error)
|
|
115772
115823
|
return false;
|
|
@@ -116212,7 +116263,7 @@ prunes.
|
|
|
116212
116263
|
|
|
116213
116264
|
// packages/omo-opencode/src/cli/config-migrate.ts
|
|
116214
116265
|
init_startup_migration();
|
|
116215
|
-
import { posix as
|
|
116266
|
+
import { posix as posix16 } from "node:path";
|
|
116216
116267
|
function reports(result) {
|
|
116217
116268
|
return result.results.map((entry) => ({
|
|
116218
116269
|
diagnostics: entry.diagnostics,
|
|
@@ -116246,7 +116297,7 @@ function runConfigMigrate(options = {}) {
|
|
|
116246
116297
|
dryRun: options.dryRun ?? false,
|
|
116247
116298
|
environment,
|
|
116248
116299
|
...homeDir === undefined ? {} : { env: { HOME: homeDir }, homeDir },
|
|
116249
|
-
pathOperations:
|
|
116300
|
+
pathOperations: posix16
|
|
116250
116301
|
});
|
|
116251
116302
|
const report = reports(result);
|
|
116252
116303
|
const response = {
|