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/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.68",
|
|
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",
|
|
@@ -2319,7 +2319,7 @@ var init_package = __esm(() => {
|
|
|
2319
2319
|
},
|
|
2320
2320
|
devDependencies: {
|
|
2321
2321
|
"@clack/prompts": "^1.8.1",
|
|
2322
|
-
"@code-yeongyu/senpi": "2026.11.
|
|
2322
|
+
"@code-yeongyu/senpi": "2026.11.10",
|
|
2323
2323
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
2324
2324
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
2325
2325
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -2384,18 +2384,18 @@ var init_package = __esm(() => {
|
|
|
2384
2384
|
typescript: "^7.0.2"
|
|
2385
2385
|
},
|
|
2386
2386
|
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.
|
|
2387
|
+
"oh-my-opencode-darwin-arm64": "5.1.68",
|
|
2388
|
+
"oh-my-opencode-darwin-x64": "5.1.68",
|
|
2389
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.68",
|
|
2390
|
+
"oh-my-opencode-linux-arm64": "5.1.68",
|
|
2391
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.68",
|
|
2392
|
+
"oh-my-opencode-linux-x64": "5.1.68",
|
|
2393
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.68",
|
|
2394
|
+
"oh-my-opencode-linux-x64-musl": "5.1.68",
|
|
2395
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.68",
|
|
2396
|
+
"oh-my-opencode-windows-arm64": "5.1.68",
|
|
2397
|
+
"oh-my-opencode-windows-x64": "5.1.68",
|
|
2398
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.68"
|
|
2399
2399
|
},
|
|
2400
2400
|
overrides: {
|
|
2401
2401
|
hono: "^4.13.8",
|
|
@@ -8080,7 +8080,7 @@ var init_latest_models = __esm(() => {
|
|
|
8080
8080
|
claudeOpus: "claude-opus-5-5",
|
|
8081
8081
|
claudeSonnet: "claude-sonnet-5-5",
|
|
8082
8082
|
claudeHaiku: "claude-haiku-5-5",
|
|
8083
|
-
claudeFable: "claude-fable-5-
|
|
8083
|
+
claudeFable: "claude-fable-5-2",
|
|
8084
8084
|
gptAstra: "gpt-6-astra",
|
|
8085
8085
|
gptSol: "gpt-6.1-sol",
|
|
8086
8086
|
gptSolFast: "gpt-6.1-sol-fast",
|
|
@@ -9346,61 +9346,9 @@ var init_file_reference_resolver = __esm(() => {
|
|
|
9346
9346
|
init_logger2();
|
|
9347
9347
|
});
|
|
9348
9348
|
|
|
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
9349
|
// packages/model-core/src/agent-model-requirements.ts
|
|
9401
9350
|
var AGENT_MODEL_REQUIREMENTS;
|
|
9402
9351
|
var init_agent_model_requirements = __esm(() => {
|
|
9403
|
-
init_fable_55_launch();
|
|
9404
9352
|
init_latest_models();
|
|
9405
9353
|
AGENT_MODEL_REQUIREMENTS = {
|
|
9406
9354
|
sisyphus: {
|
|
@@ -9495,15 +9443,15 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9495
9443
|
]
|
|
9496
9444
|
},
|
|
9497
9445
|
prometheus: {
|
|
9498
|
-
fallbackChain:
|
|
9446
|
+
fallbackChain: [
|
|
9499
9447
|
{
|
|
9500
9448
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9501
|
-
model:
|
|
9449
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9502
9450
|
variant: "xhigh"
|
|
9503
9451
|
},
|
|
9504
9452
|
{
|
|
9505
9453
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9506
|
-
model:
|
|
9454
|
+
model: "claude-fable-5-1",
|
|
9507
9455
|
variant: "xhigh"
|
|
9508
9456
|
},
|
|
9509
9457
|
{
|
|
@@ -9517,18 +9465,18 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9517
9465
|
variant: "max"
|
|
9518
9466
|
},
|
|
9519
9467
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9520
|
-
]
|
|
9468
|
+
]
|
|
9521
9469
|
},
|
|
9522
9470
|
metis: {
|
|
9523
|
-
fallbackChain:
|
|
9471
|
+
fallbackChain: [
|
|
9524
9472
|
{
|
|
9525
9473
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9526
|
-
model:
|
|
9474
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9527
9475
|
variant: "max"
|
|
9528
9476
|
},
|
|
9529
9477
|
{
|
|
9530
9478
|
providers: ["anthropic", "github-copilot", "opencode"],
|
|
9531
|
-
model:
|
|
9479
|
+
model: "claude-fable-5-1",
|
|
9532
9480
|
variant: "max"
|
|
9533
9481
|
},
|
|
9534
9482
|
{
|
|
@@ -9542,7 +9490,7 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9542
9490
|
variant: "max"
|
|
9543
9491
|
},
|
|
9544
9492
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9545
|
-
]
|
|
9493
|
+
]
|
|
9546
9494
|
},
|
|
9547
9495
|
momus: {
|
|
9548
9496
|
fallbackChain: [
|
|
@@ -9602,20 +9550,19 @@ var init_agent_model_requirements = __esm(() => {
|
|
|
9602
9550
|
// packages/model-core/src/category-model-requirements.ts
|
|
9603
9551
|
var CATEGORY_MODEL_REQUIREMENTS;
|
|
9604
9552
|
var init_category_model_requirements = __esm(() => {
|
|
9605
|
-
init_fable_55_launch();
|
|
9606
9553
|
init_latest_models();
|
|
9607
9554
|
CATEGORY_MODEL_REQUIREMENTS = {
|
|
9608
9555
|
"visual-engineering": {
|
|
9609
|
-
fallbackChain:
|
|
9556
|
+
fallbackChain: [
|
|
9610
9557
|
{ providers: ["google", "google-vertex", "opencode"], model: LATEST_MODEL_BY_FAMILY.geminiPro, variant: "low" },
|
|
9611
9558
|
{
|
|
9612
9559
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9613
|
-
model:
|
|
9560
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9614
9561
|
variant: "max"
|
|
9615
9562
|
},
|
|
9616
9563
|
{
|
|
9617
9564
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9618
|
-
model:
|
|
9565
|
+
model: "claude-fable-5-1",
|
|
9619
9566
|
variant: "max"
|
|
9620
9567
|
},
|
|
9621
9568
|
{
|
|
@@ -9629,7 +9576,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9629
9576
|
variant: "max"
|
|
9630
9577
|
},
|
|
9631
9578
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9632
|
-
]
|
|
9579
|
+
]
|
|
9633
9580
|
},
|
|
9634
9581
|
ultrabrain: {
|
|
9635
9582
|
fallbackChain: [
|
|
@@ -9663,15 +9610,15 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9663
9610
|
]
|
|
9664
9611
|
},
|
|
9665
9612
|
artistry: {
|
|
9666
|
-
fallbackChain:
|
|
9613
|
+
fallbackChain: [
|
|
9667
9614
|
{
|
|
9668
9615
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9669
|
-
model:
|
|
9616
|
+
model: LATEST_MODEL_BY_FAMILY.claudeFable,
|
|
9670
9617
|
variant: "max"
|
|
9671
9618
|
},
|
|
9672
9619
|
{
|
|
9673
9620
|
providers: ["anthropic", "anthropic-api", "github-copilot", "opencode"],
|
|
9674
|
-
model:
|
|
9621
|
+
model: "claude-fable-5-1",
|
|
9675
9622
|
variant: "max"
|
|
9676
9623
|
},
|
|
9677
9624
|
{
|
|
@@ -9685,7 +9632,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
9685
9632
|
variant: "max"
|
|
9686
9633
|
},
|
|
9687
9634
|
{ providers: ["opencode"], model: LATEST_MODEL_BY_FAMILY.kimiK3, variant: "max" }
|
|
9688
|
-
]
|
|
9635
|
+
]
|
|
9689
9636
|
},
|
|
9690
9637
|
quick: {
|
|
9691
9638
|
fallbackChain: [
|
|
@@ -10371,9 +10318,7 @@ var init_runtime_fallback_model = () => {};
|
|
|
10371
10318
|
// packages/model-core/src/model-capabilities/supplemental-entries.ts
|
|
10372
10319
|
var SUPPLEMENTAL_MODEL_CAPABILITIES;
|
|
10373
10320
|
var init_supplemental_entries = __esm(() => {
|
|
10374
|
-
init_fable_55_launch();
|
|
10375
10321
|
SUPPLEMENTAL_MODEL_CAPABILITIES = {
|
|
10376
|
-
[FABLE_55_LAUNCH.id]: FABLE_55_LAUNCH,
|
|
10377
10322
|
"kimi-k3": {
|
|
10378
10323
|
id: "kimi-k3",
|
|
10379
10324
|
family: "kimi",
|
|
@@ -10449,6 +10394,21 @@ var init_supplemental_entries = __esm(() => {
|
|
|
10449
10394
|
output: 128000
|
|
10450
10395
|
}
|
|
10451
10396
|
},
|
|
10397
|
+
"claude-fable-5-2": {
|
|
10398
|
+
id: "claude-fable-5-2",
|
|
10399
|
+
family: "claude-fable",
|
|
10400
|
+
reasoning: true,
|
|
10401
|
+
temperature: false,
|
|
10402
|
+
toolCall: true,
|
|
10403
|
+
modalities: {
|
|
10404
|
+
input: ["text", "image", "pdf"],
|
|
10405
|
+
output: ["text"]
|
|
10406
|
+
},
|
|
10407
|
+
limit: {
|
|
10408
|
+
context: 1e6,
|
|
10409
|
+
output: 128000
|
|
10410
|
+
}
|
|
10411
|
+
},
|
|
10452
10412
|
"gpt-6-astra": {
|
|
10453
10413
|
id: "gpt-6-astra",
|
|
10454
10414
|
family: "gpt",
|
|
@@ -10853,25 +10813,16 @@ var init_supplemental_entries = __esm(() => {
|
|
|
10853
10813
|
});
|
|
10854
10814
|
|
|
10855
10815
|
// 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
10816
|
function getBundledModelCapabilitiesSnapshot(snapshotJson) {
|
|
10867
|
-
|
|
10868
|
-
|
|
10869
|
-
|
|
10870
|
-
|
|
10871
|
-
|
|
10817
|
+
return {
|
|
10818
|
+
...snapshotJson,
|
|
10819
|
+
models: {
|
|
10820
|
+
...snapshotJson.models,
|
|
10821
|
+
...SUPPLEMENTAL_MODEL_CAPABILITIES
|
|
10822
|
+
}
|
|
10823
|
+
};
|
|
10872
10824
|
}
|
|
10873
10825
|
var init_bundled_snapshot = __esm(() => {
|
|
10874
|
-
init_fable_55_launch();
|
|
10875
10826
|
init_supplemental_entries();
|
|
10876
10827
|
});
|
|
10877
10828
|
|
|
@@ -11299,7 +11250,6 @@ var init_src2 = __esm(() => {
|
|
|
11299
11250
|
init_model_requirements();
|
|
11300
11251
|
init_latest_models();
|
|
11301
11252
|
init_model_family_detectors();
|
|
11302
|
-
init_fable_55_launch();
|
|
11303
11253
|
init_model_capability_aliases();
|
|
11304
11254
|
init_model_capability_heuristics();
|
|
11305
11255
|
init_model_capability_guardrails();
|
|
@@ -11621,7 +11571,6 @@ Approach:
|
|
|
11621
11571
|
</Category_Context>`, GOOGLE_CATEGORIES;
|
|
11622
11572
|
var init_google_categories = __esm(() => {
|
|
11623
11573
|
init_latest_models();
|
|
11624
|
-
init_src2();
|
|
11625
11574
|
GOOGLE_CATEGORIES = [
|
|
11626
11575
|
{
|
|
11627
11576
|
name: "visual-engineering",
|
|
@@ -11631,7 +11580,7 @@ var init_google_categories = __esm(() => {
|
|
|
11631
11580
|
},
|
|
11632
11581
|
{
|
|
11633
11582
|
name: "artistry",
|
|
11634
|
-
config: { model: `anthropic/${
|
|
11583
|
+
config: { model: `anthropic/${LATEST_MODEL_BY_FAMILY.claudeFable}`, variant: "max" },
|
|
11635
11584
|
description: "Complex problem-solving with unconventional, creative approaches - beyond standard patterns",
|
|
11636
11585
|
promptAppend: ARTISTRY_CATEGORY_PROMPT_APPEND
|
|
11637
11586
|
}
|
|
@@ -92758,7 +92707,7 @@ var package_default2;
|
|
|
92758
92707
|
var init_package2 = __esm(() => {
|
|
92759
92708
|
package_default2 = {
|
|
92760
92709
|
name: "@oh-my-opencode/omo-codex",
|
|
92761
|
-
version: "5.1.
|
|
92710
|
+
version: "5.1.68",
|
|
92762
92711
|
type: "module",
|
|
92763
92712
|
private: true,
|
|
92764
92713
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -109522,8 +109471,8 @@ var package_default3 = {
|
|
|
109522
109471
|
},
|
|
109523
109472
|
dependencies: {
|
|
109524
109473
|
"@clack/prompts": "^1.8.1",
|
|
109525
|
-
"@code-yeongyu/senpi": "2026.11.
|
|
109526
|
-
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.
|
|
109474
|
+
"@code-yeongyu/senpi": "2026.11.10",
|
|
109475
|
+
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.10",
|
|
109527
109476
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
109528
109477
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
109529
109478
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -112783,8 +112732,110 @@ import { createHash as createHash12, randomUUID as randomUUID8 } from "crypto";
|
|
|
112783
112732
|
import { basename as basename17 } from "path";
|
|
112784
112733
|
|
|
112785
112734
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/darwin-backend.ts
|
|
112735
|
+
import { homedir as homedir32 } from "os";
|
|
112736
|
+
import { join as join110 } from "path";
|
|
112737
|
+
|
|
112738
|
+
// packages/omo-opencode/src/cli/service-auth/account-home.ts
|
|
112739
|
+
import { execFileSync as execFileSync4 } from "child_process";
|
|
112740
|
+
import { accessSync as accessSync5, constants as constants13, mkdirSync as mkdirSync19, readFileSync as readFileSync44, statSync as statSync7 } from "fs";
|
|
112786
112741
|
import { homedir as homedir31 } from "os";
|
|
112787
|
-
import { join as
|
|
112742
|
+
import { join as join106, posix as posix13, win32 as win3210 } from "path";
|
|
112743
|
+
var lockDirectoryIn = (home) => join106(home, ".omo", "session-locks");
|
|
112744
|
+
function userRecordHome(facts) {
|
|
112745
|
+
try {
|
|
112746
|
+
if (facts.platform === "linux")
|
|
112747
|
+
return passwdHome(facts);
|
|
112748
|
+
if (facts.platform === "darwin")
|
|
112749
|
+
return darwinHome(facts);
|
|
112750
|
+
if (facts.platform === "win32")
|
|
112751
|
+
return windowsProfile(facts);
|
|
112752
|
+
return;
|
|
112753
|
+
} catch {
|
|
112754
|
+
return;
|
|
112755
|
+
}
|
|
112756
|
+
}
|
|
112757
|
+
function passwdHome(facts) {
|
|
112758
|
+
if (facts.uid === undefined)
|
|
112759
|
+
return;
|
|
112760
|
+
const uid = String(facts.uid);
|
|
112761
|
+
const home = facts.readFile("/etc/passwd").split(`
|
|
112762
|
+
`).map((line) => line.split(":")).find((fields) => fields[2] === uid)?.[5];
|
|
112763
|
+
return home !== undefined && posix13.isAbsolute(home) ? home : undefined;
|
|
112764
|
+
}
|
|
112765
|
+
function darwinHome(facts) {
|
|
112766
|
+
const fields = facts.run("/usr/bin/id", ["-P"]).trim().split(":");
|
|
112767
|
+
const home = fields[8];
|
|
112768
|
+
if (facts.uid !== undefined && fields[2] !== String(facts.uid))
|
|
112769
|
+
return;
|
|
112770
|
+
return home !== undefined && posix13.isAbsolute(home) ? home : undefined;
|
|
112771
|
+
}
|
|
112772
|
+
function windowsProfile(facts) {
|
|
112773
|
+
const whoami = system32Tool(facts, "whoami.exe");
|
|
112774
|
+
const reg = system32Tool(facts, "reg.exe");
|
|
112775
|
+
if (whoami === undefined || reg === undefined)
|
|
112776
|
+
return;
|
|
112777
|
+
const sid = /S-1-[0-9-]+/.exec(facts.run(whoami, ["/user", "/fo", "csv", "/nh"]))?.[0];
|
|
112778
|
+
if (sid === undefined)
|
|
112779
|
+
return;
|
|
112780
|
+
const key = `HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\ProfileList\\${sid}`;
|
|
112781
|
+
const value = /ProfileImagePath\s+REG_(?:EXPAND_)?SZ\s+(.+)/.exec(facts.run(reg, ["query", key, "/v", "ProfileImagePath"]))?.[1]?.trim();
|
|
112782
|
+
const home = value?.replace(/%([^%]+)%/g, (whole, name) => facts.env[name] ?? whole);
|
|
112783
|
+
return home !== undefined && !home.includes("%") && win3210.isAbsolute(home) ? home : undefined;
|
|
112784
|
+
}
|
|
112785
|
+
function system32Tool(facts, name) {
|
|
112786
|
+
const root = facts.env.SystemRoot;
|
|
112787
|
+
if (root === undefined || !/^[A-Za-z]:[\\/]/.test(root) || root.split(/[\\/]/).includes(".."))
|
|
112788
|
+
return;
|
|
112789
|
+
const tool = win3210.join(root, "System32", name);
|
|
112790
|
+
return facts.isFile(tool) ? tool : undefined;
|
|
112791
|
+
}
|
|
112792
|
+
function chooseLockHome(facts) {
|
|
112793
|
+
const home = facts.homedir();
|
|
112794
|
+
const record = facts.recordHome();
|
|
112795
|
+
if (record === undefined || record === home)
|
|
112796
|
+
return home;
|
|
112797
|
+
try {
|
|
112798
|
+
facts.prepareLockDirectory(lockDirectoryIn(record));
|
|
112799
|
+
return record;
|
|
112800
|
+
} catch (error) {
|
|
112801
|
+
const reason = error instanceof Error && "code" in error ? String(error.code) : String(error);
|
|
112802
|
+
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).`);
|
|
112803
|
+
return home;
|
|
112804
|
+
}
|
|
112805
|
+
}
|
|
112806
|
+
var systemPlatformFacts = {
|
|
112807
|
+
platform: process.platform,
|
|
112808
|
+
uid: process.getuid?.(),
|
|
112809
|
+
env: process.env,
|
|
112810
|
+
readFile: (path) => readFileSync44(path, "utf8"),
|
|
112811
|
+
isFile: (path) => statSync7(path, { throwIfNoEntry: false })?.isFile() ?? false,
|
|
112812
|
+
run: (command, args) => execFileSync4(command, args, { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], timeout: 5000, windowsHide: true })
|
|
112813
|
+
};
|
|
112814
|
+
var systemAccountFacts = {
|
|
112815
|
+
recordHome: () => userRecordHome(systemPlatformFacts),
|
|
112816
|
+
homedir: homedir31,
|
|
112817
|
+
prepareLockDirectory: (directory) => {
|
|
112818
|
+
mkdirSync19(directory, { recursive: true, mode: 448 });
|
|
112819
|
+
accessSync5(directory, constants13.W_OK);
|
|
112820
|
+
},
|
|
112821
|
+
warn: (message) => process.stderr.write(`${message}
|
|
112822
|
+
`)
|
|
112823
|
+
};
|
|
112824
|
+
var TEST_LOCK_HOME_ENV = "OMO_TEST_CREDENTIAL_LOCK_HOME";
|
|
112825
|
+
var INJECTED_SECRETS = Symbol.for("omo.test.injectedSecrets");
|
|
112826
|
+
function testLockHome(env, secrets) {
|
|
112827
|
+
const home = env[TEST_LOCK_HOME_ENV];
|
|
112828
|
+
if (home === undefined || !(posix13.isAbsolute(home) || win3210.isAbsolute(home)))
|
|
112829
|
+
return;
|
|
112830
|
+
const marked = typeof secrets === "object" && secrets !== null && secrets[INJECTED_SECRETS] === true;
|
|
112831
|
+
return marked ? home : undefined;
|
|
112832
|
+
}
|
|
112833
|
+
var facts = systemAccountFacts;
|
|
112834
|
+
var chosen;
|
|
112835
|
+
function accountHome() {
|
|
112836
|
+
chosen ??= testLockHome(process.env, typeof Bun === "undefined" ? undefined : Bun.secrets) ?? chooseLockHome(facts);
|
|
112837
|
+
return chosen;
|
|
112838
|
+
}
|
|
112788
112839
|
|
|
112789
112840
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/client.ts
|
|
112790
112841
|
init_zod();
|
|
@@ -112899,18 +112950,18 @@ async function callHelper(path, call, options = {}) {
|
|
|
112899
112950
|
}
|
|
112900
112951
|
|
|
112901
112952
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/location.ts
|
|
112902
|
-
import { dirname as dirname42, join as
|
|
112953
|
+
import { dirname as dirname42, join as join107, posix as posix14 } from "path";
|
|
112903
112954
|
import { fileURLToPath as fileURLToPath8 } from "url";
|
|
112904
112955
|
function bundleCandidates(moduleUrl) {
|
|
112905
112956
|
const root = dirname42(dirname42(dirname42(fileURLToPath8(moduleUrl))));
|
|
112906
|
-
return [
|
|
112957
|
+
return [join107(root, "bin", "darwin", "omo-keychain"), join107(root, "omo-keychain")];
|
|
112907
112958
|
}
|
|
112908
112959
|
function machineCandidates(home, arch = process.arch) {
|
|
112909
112960
|
const runtimeArch = arch === "arm64" ? "arm64" : "x64";
|
|
112910
112961
|
return [
|
|
112911
112962
|
`/Applications/OmO.app/Contents/Resources/omo-runtime/darwin-${runtimeArch}/omo-keychain`,
|
|
112912
|
-
|
|
112913
|
-
|
|
112963
|
+
posix14.join(home, "Applications", "OmO.app", "Contents", "Resources", "omo-runtime", `darwin-${runtimeArch}`, "omo-keychain"),
|
|
112964
|
+
posix14.join(home, ".bun", "install", "global", "node_modules", "omo-ai", "bin", "darwin", "omo-keychain")
|
|
112914
112965
|
];
|
|
112915
112966
|
}
|
|
112916
112967
|
async function locateHelper(candidates, verify) {
|
|
@@ -112927,9 +112978,9 @@ async function locateHelper(candidates, verify) {
|
|
|
112927
112978
|
|
|
112928
112979
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/pin.ts
|
|
112929
112980
|
import { readdirSync as readdirSync14, rmSync as rmSync9 } from "fs";
|
|
112930
|
-
import { chmod as chmod2, copyFile as copyFile4, constants as
|
|
112981
|
+
import { chmod as chmod2, copyFile as copyFile4, constants as constants14, mkdtemp as mkdtemp2, rm as rm16, stat as stat8 } from "fs/promises";
|
|
112931
112982
|
import { tmpdir as tmpdir6 } from "os";
|
|
112932
|
-
import { basename as basename15, join as
|
|
112983
|
+
import { basename as basename15, join as join108 } from "path";
|
|
112933
112984
|
var DIR_PREFIX = "omo-keychain-";
|
|
112934
112985
|
var OWNED_DIR = new RegExp(`^${DIR_PREFIX}(\\d+)-`);
|
|
112935
112986
|
var isAlive = (pid) => {
|
|
@@ -112953,7 +113004,7 @@ function sweepDeadPinDirs(root = tmpdir6()) {
|
|
|
112953
113004
|
if (owner === undefined || Number(owner) === process.pid || isAlive(Number(owner)))
|
|
112954
113005
|
continue;
|
|
112955
113006
|
try {
|
|
112956
|
-
rmSync9(
|
|
113007
|
+
rmSync9(join108(root, entry), { recursive: true, force: true });
|
|
112957
113008
|
} catch {
|
|
112958
113009
|
continue;
|
|
112959
113010
|
}
|
|
@@ -112966,7 +113017,7 @@ async function processPinDir() {
|
|
|
112966
113017
|
if (processDir !== undefined)
|
|
112967
113018
|
return processDir;
|
|
112968
113019
|
sweepDeadPinDirs();
|
|
112969
|
-
const dir = await mkdtemp2(
|
|
113020
|
+
const dir = await mkdtemp2(join108(tmpdir6(), `${DIR_PREFIX}${process.pid}-`));
|
|
112970
113021
|
process.once("exit", () => rmSync9(dir, { recursive: true, force: true }));
|
|
112971
113022
|
processDir = dir;
|
|
112972
113023
|
return dir;
|
|
@@ -112977,9 +113028,9 @@ async function sourceIdentity(source) {
|
|
|
112977
113028
|
return `${source}\x00${info.dev}\x00${info.ino}\x00${info.size}\x00${info.mtimeMs}\x00${info.ctimeMs}`;
|
|
112978
113029
|
}
|
|
112979
113030
|
async function copyAndVerify(source, verify, dir) {
|
|
112980
|
-
const target =
|
|
113031
|
+
const target = join108(dir, `${crypto.randomUUID()}-${basename15(source)}`);
|
|
112981
113032
|
try {
|
|
112982
|
-
await copyFile4(source, target,
|
|
113033
|
+
await copyFile4(source, target, constants14.COPYFILE_EXCL);
|
|
112983
113034
|
await chmod2(target, 320);
|
|
112984
113035
|
} catch (error) {
|
|
112985
113036
|
await rm16(target, { force: true });
|
|
@@ -113594,16 +113645,16 @@ var {
|
|
|
113594
113645
|
unlink: unlink3
|
|
113595
113646
|
} = promises;
|
|
113596
113647
|
var {
|
|
113597
|
-
accessSync:
|
|
113648
|
+
accessSync: accessSync6,
|
|
113598
113649
|
chmodSync: chmodSync7,
|
|
113599
113650
|
fsyncSync: fsyncSync3,
|
|
113600
113651
|
linkSync,
|
|
113601
113652
|
lstatSync: lstatSync5,
|
|
113602
|
-
mkdirSync:
|
|
113603
|
-
readFileSync:
|
|
113653
|
+
mkdirSync: mkdirSync20,
|
|
113654
|
+
readFileSync: readFileSync45,
|
|
113604
113655
|
readdirSync: readdirSync15,
|
|
113605
113656
|
realpathSync: realpathSync13,
|
|
113606
|
-
statSync:
|
|
113657
|
+
statSync: statSync9,
|
|
113607
113658
|
unlinkSync: unlinkSync10,
|
|
113608
113659
|
writeFileSync: writeFileSync17,
|
|
113609
113660
|
writeSync
|
|
@@ -114073,7 +114124,7 @@ async function publishLockRecord(lockPath, record) {
|
|
|
114073
114124
|
// packages/team-core/src/team-state-store/lock-lease.ts
|
|
114074
114125
|
import { randomUUID as randomUUID7 } from "crypto";
|
|
114075
114126
|
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
|
|
114127
|
+
import { basename as basename16, dirname as dirname44, join as join109 } from "path";
|
|
114077
114128
|
|
|
114078
114129
|
// packages/team-core/src/team-state-store/lock-reclaim.ts
|
|
114079
114130
|
import { createHash as createHash10 } from "crypto";
|
|
@@ -114152,7 +114203,7 @@ var UUID2 = "[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}";
|
|
|
114152
114203
|
var escapeRegExp2 = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
114153
114204
|
var leaseTempPattern = (lockPath) => new RegExp(`^\\.${escapeRegExp2(basename16(lockPath))}\\.${UUID2}\\.lease$`);
|
|
114154
114205
|
async function replaceRecord(lockPath, content) {
|
|
114155
|
-
const temporary =
|
|
114206
|
+
const temporary = join109(dirname44(lockPath), `${leaseTempPrefix(lockPath)}${randomUUID7()}${LEASE_TEMP_SUFFIX}`);
|
|
114156
114207
|
try {
|
|
114157
114208
|
const handle = await open4(temporary, "wx", 384);
|
|
114158
114209
|
try {
|
|
@@ -114178,7 +114229,7 @@ async function removeLeftoverTemps(lockPath) {
|
|
|
114178
114229
|
}
|
|
114179
114230
|
for (const entry of entries) {
|
|
114180
114231
|
if (pattern.test(entry))
|
|
114181
|
-
await rm18(
|
|
114232
|
+
await rm18(join109(dirname44(lockPath), entry), { force: true });
|
|
114182
114233
|
}
|
|
114183
114234
|
}
|
|
114184
114235
|
async function currentRecord(lockPath) {
|
|
@@ -114315,7 +114366,7 @@ function promptLockAt(path, hooks = {}) {
|
|
|
114315
114366
|
var ROW_9B_DEFAULT = "reinstall-notice";
|
|
114316
114367
|
var helperAccess = () => sharedHelperAccess(() => {
|
|
114317
114368
|
const { entryCandidates } = keychainProcessState();
|
|
114318
|
-
return resolveHelperAccess([...entryCandidates, ...bundleCandidates(import.meta.url), ...machineCandidates(
|
|
114369
|
+
return resolveHelperAccess([...entryCandidates, ...bundleCandidates(import.meta.url), ...machineCandidates(homedir32())]);
|
|
114319
114370
|
});
|
|
114320
114371
|
function sharedHelperAccess(resolve) {
|
|
114321
114372
|
const state = keychainProcessState();
|
|
@@ -114352,7 +114403,7 @@ function createDarwinBackend(options) {
|
|
|
114352
114403
|
access: options.access,
|
|
114353
114404
|
cache: options.cache ?? processApprovalCache(),
|
|
114354
114405
|
background: options.background,
|
|
114355
|
-
takePromptLock: promptLockAt(
|
|
114406
|
+
takePromptLock: promptLockAt(join110(lockDirectoryIn(options.home ?? accountHome()), `${options.account}.keychain-prompt`)),
|
|
114356
114407
|
ownSilentGet: () => silently(() => options.secrets.get(key)),
|
|
114357
114408
|
ownOverwrite: (value) => silently(() => options.secrets.set({ ...key, value })),
|
|
114358
114409
|
ownDelete: (name) => name === options.account ? gatedSecrets(() => options.secrets.delete({ ...key, name })) : silently(() => options.secrets.delete({ ...key, name })),
|
|
@@ -114380,22 +114431,22 @@ async function guardHelperlessRead(service, account, choice = ROW_9B_DEFAULT, pr
|
|
|
114380
114431
|
}
|
|
114381
114432
|
|
|
114382
114433
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/store-binding.ts
|
|
114383
|
-
import { homedir as
|
|
114434
|
+
import { homedir as homedir33 } from "os";
|
|
114384
114435
|
|
|
114385
114436
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/creator-handoff.ts
|
|
114386
114437
|
init_bun_file_shim();
|
|
114387
114438
|
init_bun_spawn_shim();
|
|
114388
|
-
import { dirname as dirname47, posix as
|
|
114439
|
+
import { dirname as dirname47, posix as posix15 } from "path";
|
|
114389
114440
|
|
|
114390
114441
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/runtime-capabilities.ts
|
|
114391
114442
|
init_zod();
|
|
114392
114443
|
import { readFile as readFile37 } from "fs/promises";
|
|
114393
|
-
import { dirname as dirname46, join as
|
|
114444
|
+
import { dirname as dirname46, join as join111 } from "path";
|
|
114394
114445
|
var RUNTIME_CAPABILITIES_FILE = "omo-runtime-capabilities.json";
|
|
114395
114446
|
var RUNTIME_CAPABILITIES = { keychainHandoff: 1 };
|
|
114396
114447
|
var capabilitiesSchema = object({ keychainHandoff: number2().int() }).passthrough();
|
|
114397
114448
|
async function runtimeDeclaresKeychainHandoff(runtime) {
|
|
114398
|
-
const text = await readFile37(
|
|
114449
|
+
const text = await readFile37(join111(dirname46(runtime), RUNTIME_CAPABILITIES_FILE), "utf8").catch(() => null);
|
|
114399
114450
|
if (text === null)
|
|
114400
114451
|
return false;
|
|
114401
114452
|
try {
|
|
@@ -114414,9 +114465,9 @@ var HANDOFF_ENV = "OMO_KEYCHAIN_HANDOFF";
|
|
|
114414
114465
|
var HANDOFF_DEADLINE_MS = 45000;
|
|
114415
114466
|
function desktopRuntimeCandidates(home, arch = process.arch) {
|
|
114416
114467
|
const runtimeArch = arch === "arm64" ? "arm64" : "x64";
|
|
114417
|
-
return ["/Applications/OmO.app",
|
|
114468
|
+
return ["/Applications/OmO.app", posix15.join(home, "Applications", "OmO.app")].map((app) => ({
|
|
114418
114469
|
app,
|
|
114419
|
-
runtime:
|
|
114470
|
+
runtime: posix15.join(app, "Contents", "Resources", "omo-runtime", `darwin-${runtimeArch}`, "omo")
|
|
114420
114471
|
}));
|
|
114421
114472
|
}
|
|
114422
114473
|
var verifyBundle = async (app, requirement) => {
|
|
@@ -114474,13 +114525,13 @@ function createCreatorHandOff(options) {
|
|
|
114474
114525
|
|
|
114475
114526
|
// packages/omo-opencode/src/cli/service-auth/keychain-helper/store-binding.ts
|
|
114476
114527
|
var readers = new Map;
|
|
114477
|
-
var
|
|
114478
|
-
var isInjectedSecrets = (api) => api[
|
|
114528
|
+
var INJECTED_SECRETS2 = Symbol.for("omo.test.injectedSecrets");
|
|
114529
|
+
var isInjectedSecrets = (api) => api[INJECTED_SECRETS2] === true;
|
|
114479
114530
|
var backends = new Map;
|
|
114480
114531
|
function processHandOff(origin) {
|
|
114481
114532
|
return () => {
|
|
114482
114533
|
const state = keychainProcessState();
|
|
114483
|
-
state.handOff ??= createCreatorHandOff({ candidates: desktopRuntimeCandidates(
|
|
114534
|
+
state.handOff ??= createCreatorHandOff({ candidates: desktopRuntimeCandidates(homedir33()), origin })();
|
|
114484
114535
|
return state.handOff;
|
|
114485
114536
|
};
|
|
114486
114537
|
}
|
|
@@ -114633,18 +114684,18 @@ var probeSecretServiceLock = () => new Promise((resolve) => {
|
|
|
114633
114684
|
import { AsyncLocalStorage as AsyncLocalStorage3 } from "async_hooks";
|
|
114634
114685
|
import { createHash as createHash11 } from "crypto";
|
|
114635
114686
|
import { mkdir as mkdir12 } from "fs/promises";
|
|
114636
|
-
import {
|
|
114637
|
-
import { join as join112 } from "path";
|
|
114687
|
+
import { join as join113 } from "path";
|
|
114638
114688
|
var held = new AsyncLocalStorage3;
|
|
114639
|
-
|
|
114689
|
+
var CREDENTIAL_LOCK_STALE_AFTER_MS = 60000;
|
|
114690
|
+
function credentialLockPaths(api, home = accountHome()) {
|
|
114640
114691
|
const id = createHash11("sha256").update(serviceOrigin(api)).digest("hex");
|
|
114641
|
-
const directory =
|
|
114642
|
-
return { directory, lock:
|
|
114692
|
+
const directory = lockDirectoryIn(home);
|
|
114693
|
+
return { directory, lock: join113(directory, `${id}.lock`), desktopRecord: join113(directory, `${id}.desktop-generation.json`) };
|
|
114643
114694
|
}
|
|
114644
|
-
function heldCredentialLease(api, home =
|
|
114695
|
+
function heldCredentialLease(api, home = accountHome()) {
|
|
114645
114696
|
return held.getStore()?.get(credentialLockPaths(api, home).lock);
|
|
114646
114697
|
}
|
|
114647
|
-
async function withCredentialLock(api, action, home =
|
|
114698
|
+
async function withCredentialLock(api, action, home = accountHome(), ownerTag = "cli-session") {
|
|
114648
114699
|
const { directory, lock } = credentialLockPaths(api, home);
|
|
114649
114700
|
const owned = held.getStore();
|
|
114650
114701
|
const outer = owned?.get(lock);
|
|
@@ -114653,7 +114704,7 @@ async function withCredentialLock(api, action, home = homedir33(), ownerTag = "c
|
|
|
114653
114704
|
await mkdir12(directory, { recursive: true, mode: 448 });
|
|
114654
114705
|
return withLock(lock, (lease) => held.run(new Map([...owned ?? [], [lock, lease]]), () => action(lease)), {
|
|
114655
114706
|
ownerTag,
|
|
114656
|
-
staleAfterMs:
|
|
114707
|
+
staleAfterMs: CREDENTIAL_LOCK_STALE_AFTER_MS
|
|
114657
114708
|
});
|
|
114658
114709
|
}
|
|
114659
114710
|
|
|
@@ -115021,14 +115072,14 @@ async function loginLoopback(session, options) {
|
|
|
115021
115072
|
|
|
115022
115073
|
// packages/memory-core/src/sync/device-retire.ts
|
|
115023
115074
|
import { createHash as createHash14, randomBytes as randomBytes6 } from "crypto";
|
|
115024
|
-
import { join as
|
|
115075
|
+
import { join as join116 } from "path";
|
|
115025
115076
|
|
|
115026
115077
|
// packages/memory-core/src/identity/layout.ts
|
|
115027
115078
|
import { homedir as homedir34 } from "os";
|
|
115028
|
-
import { join as
|
|
115079
|
+
import { join as join114, resolve as resolve31 } from "path";
|
|
115029
115080
|
var MEMORY_ROOT_ENV_VAR = "OMO_MEMORY_HOME";
|
|
115030
115081
|
function defaultMemoryRoot() {
|
|
115031
|
-
return
|
|
115082
|
+
return join114(homedir34(), ".omo", "memory");
|
|
115032
115083
|
}
|
|
115033
115084
|
function resolveMemoryRoot(env, cwd) {
|
|
115034
115085
|
const override = env[MEMORY_ROOT_ENV_VAR];
|
|
@@ -115038,13 +115089,13 @@ function resolveMemoryRoot(env, cwd) {
|
|
|
115038
115089
|
return resolve31(cwd, override);
|
|
115039
115090
|
}
|
|
115040
115091
|
// packages/memory-core/src/sync/pin-dir.ts
|
|
115041
|
-
import { join as
|
|
115042
|
-
var syncPinDir = (memoryRoot) =>
|
|
115092
|
+
import { join as join115 } from "path";
|
|
115093
|
+
var syncPinDir = (memoryRoot) => join115(memoryRoot, "sync-device");
|
|
115043
115094
|
|
|
115044
115095
|
// packages/memory-core/src/sync/device-retire.ts
|
|
115045
|
-
var trustAnchorRoot = (pinDir) =>
|
|
115096
|
+
var trustAnchorRoot = (pinDir) => join116(pinDir, "trust-anchor");
|
|
115046
115097
|
var trustAnchorKey = (account) => createHash14("sha256").update(account, "utf8").digest("base64url");
|
|
115047
|
-
var trustAnchorDir = (pinDir, account) =>
|
|
115098
|
+
var trustAnchorDir = (pinDir, account) => join116(trustAnchorRoot(pinDir), trustAnchorKey(account));
|
|
115048
115099
|
var hasLiveTrustAnchor = async (pinDir) => {
|
|
115049
115100
|
try {
|
|
115050
115101
|
return (await readdir17(trustAnchorRoot(pinDir))).some((name) => !name.includes(".retired-"));
|
|
@@ -115070,9 +115121,9 @@ import { homedir as homedir35 } from "os";
|
|
|
115070
115121
|
// packages/omo-opencode/src/cli/service-auth/signed-out-marker.ts
|
|
115071
115122
|
init_zod();
|
|
115072
115123
|
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
|
|
115124
|
+
import { dirname as dirname48, join as join117 } from "path";
|
|
115074
115125
|
var markerSchema = object({ device: string2().nullable(), at: string2() });
|
|
115075
|
-
var signedOutMarkerPath = (home, credential) =>
|
|
115126
|
+
var signedOutMarkerPath = (home, credential) => join117(home, ".omo", "account-state", `${credential}.signed-out.json`);
|
|
115076
115127
|
async function readSignedOutMarker(path) {
|
|
115077
115128
|
const text = await readFile38(path, "utf8").catch(() => null);
|
|
115078
115129
|
if (text === null)
|
|
@@ -115637,7 +115688,7 @@ async function boulder(options) {
|
|
|
115637
115688
|
}
|
|
115638
115689
|
// packages/omo-opencode/src/cli/codex-ulw-loop.ts
|
|
115639
115690
|
import { spawn as spawn6 } from "child_process";
|
|
115640
|
-
import { existsSync as existsSync67, readFileSync as
|
|
115691
|
+
import { existsSync as existsSync67, readFileSync as readFileSync46, realpathSync as realpathSync14 } from "fs";
|
|
115641
115692
|
import { homedir as homedir36 } from "os";
|
|
115642
115693
|
var ULW_LOOP_DELEGATION_SENTINEL = "OMO_ULW_LOOP_DELEGATED";
|
|
115643
115694
|
function resolveCodexUlwLoopCommand(input = {}) {
|
|
@@ -115687,7 +115738,7 @@ function resolveLegacyLocalOmoBin(env, homeDir, currentExecutablePaths) {
|
|
|
115687
115738
|
}
|
|
115688
115739
|
function isGeneratedRuntimeWrapper(candidate) {
|
|
115689
115740
|
try {
|
|
115690
|
-
return
|
|
115741
|
+
return readFileSync46(candidate, "utf8").includes(RUNTIME_WRAPPER_MARKER);
|
|
115691
115742
|
} catch (error) {
|
|
115692
115743
|
if (error instanceof Error)
|
|
115693
115744
|
return false;
|
|
@@ -116133,7 +116184,7 @@ prunes.
|
|
|
116133
116184
|
|
|
116134
116185
|
// packages/omo-opencode/src/cli/config-migrate.ts
|
|
116135
116186
|
init_startup_migration();
|
|
116136
|
-
import { posix as
|
|
116187
|
+
import { posix as posix16 } from "path";
|
|
116137
116188
|
function reports(result) {
|
|
116138
116189
|
return result.results.map((entry) => ({
|
|
116139
116190
|
diagnostics: entry.diagnostics,
|
|
@@ -116167,7 +116218,7 @@ function runConfigMigrate(options = {}) {
|
|
|
116167
116218
|
dryRun: options.dryRun ?? false,
|
|
116168
116219
|
environment,
|
|
116169
116220
|
...homeDir === undefined ? {} : { env: { HOME: homeDir }, homeDir },
|
|
116170
|
-
pathOperations:
|
|
116221
|
+
pathOperations: posix16
|
|
116171
116222
|
});
|
|
116172
116223
|
const report = reports(result);
|
|
116173
116224
|
const response = {
|