lazycodex-ai 5.1.64 → 5.1.66
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 +99 -60
- package/dist/cli/service-auth/closed-device-login.d.ts +16 -0
- package/dist/cli/service-auth/commands.d.ts +9 -2
- package/dist/cli/service-auth/session.d.ts +12 -0
- package/dist/cli-node/index.js +99 -60
- 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 +19 -0
- 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/SKILL.md +24 -7
- package/packages/omo-codex/plugin/skills/browser/references/commands.md +41 -4
- package/packages/omo-codex/plugin/skills/browser/references/owned-engine/frames-and-humans.md +15 -4
- package/packages/omo-codex/plugin/skills/browser/references/recipes/1password.md +4 -2
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/index.js +232 -341
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +5 -5
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/page-bundle.js +1586 -1394
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor-report.mjs +68 -0
- package/packages/omo-codex/plugin/skills/browser/scripts/browser-doctor.mjs +8 -43
- package/packages/omo-codex/plugin/skills/browser/scripts/omowright.mjs +7 -1
- package/packages/omo-codex/plugin/skills/debugging/references/tools/browser-qa.md +4 -3
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/ulw-research/references/research-collection.md +2 -2
- package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +5 -4
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +21 -2
- package/packages/shared-skills/skills/browser/SKILL.md +24 -7
- package/packages/shared-skills/skills/browser/references/commands.md +41 -4
- package/packages/shared-skills/skills/browser/references/owned-engine/frames-and-humans.md +15 -4
- package/packages/shared-skills/skills/browser/references/recipes/1password.md +4 -2
- package/packages/shared-skills/skills/browser/runtime/omowright/index.js +232 -341
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +5 -5
- package/packages/shared-skills/skills/browser/runtime/omowright/page-bundle.js +1586 -1394
- package/packages/shared-skills/skills/browser/scripts/browser-doctor-report.mjs +68 -0
- package/packages/shared-skills/skills/browser/scripts/browser-doctor.mjs +8 -43
- package/packages/shared-skills/skills/browser/scripts/omowright.mjs +7 -1
- package/packages/shared-skills/skills/debugging/references/tools/browser-qa.md +4 -3
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +6 -6
- package/packages/shared-skills/skills/ulw-research/references/research-collection.md +2 -2
- package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +5 -4
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.66",
|
|
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.9-2",
|
|
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:*",
|
|
@@ -2375,7 +2375,7 @@ var init_package = __esm(() => {
|
|
|
2375
2375
|
"jsonc-parser": "^3.3.1",
|
|
2376
2376
|
knip: "6.43.0",
|
|
2377
2377
|
"node-pty": "^1.1.0",
|
|
2378
|
-
omowright: "
|
|
2378
|
+
omowright: "^0.3.0",
|
|
2379
2379
|
"oxc-parser": "0.148.0",
|
|
2380
2380
|
oxlint: "1.89.0",
|
|
2381
2381
|
picocolors: "^1.1.1",
|
|
@@ -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.66",
|
|
2389
|
+
"oh-my-opencode-darwin-x64": "5.1.66",
|
|
2390
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.66",
|
|
2391
|
+
"oh-my-opencode-linux-arm64": "5.1.66",
|
|
2392
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.66",
|
|
2393
|
+
"oh-my-opencode-linux-x64": "5.1.66",
|
|
2394
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.66",
|
|
2395
|
+
"oh-my-opencode-linux-x64-musl": "5.1.66",
|
|
2396
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.66",
|
|
2397
|
+
"oh-my-opencode-windows-arm64": "5.1.66",
|
|
2398
|
+
"oh-my-opencode-windows-x64": "5.1.66",
|
|
2399
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.66"
|
|
2400
2400
|
},
|
|
2401
2401
|
overrides: {
|
|
2402
2402
|
hono: "^4.13.8",
|
|
@@ -77199,7 +77199,7 @@ var init_memory_agreements = __esm(() => {
|
|
|
77199
77199
|
});
|
|
77200
77200
|
|
|
77201
77201
|
// packages/omo-config-core/src/schema/memory.ts
|
|
77202
|
-
var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallEventCapsSchema, OmoMemoryRecallSchema, OmoMemoryProjectScopeSchema, OmoMemoryProjectScopeLayerSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallEventCapsLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryProjectionSchema, OmoMemoryProjectionLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemoryAutoIdentitySchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
|
|
77202
|
+
var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallEventCapsSchema, OmoMemoryRecallSchema, OmoMemoryProjectScopeSchema, OmoMemoryProjectScopeLayerSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallEventCapsLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryProjectionSchema, OmoMemoryProjectionLayerSchema, OmoMemoryRuntimeSchema, OmoMemoryRuntimeLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemoryAutoIdentitySchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
|
|
77203
77203
|
var init_memory = __esm(() => {
|
|
77204
77204
|
init_zod();
|
|
77205
77205
|
init_memory_agreements();
|
|
@@ -77348,6 +77348,22 @@ var init_memory = __esm(() => {
|
|
|
77348
77348
|
max_entries_per_directory: number2().int().min(0).optional(),
|
|
77349
77349
|
max_bytes: number2().int().min(0).optional()
|
|
77350
77350
|
}).strict();
|
|
77351
|
+
OmoMemoryRuntimeSchema = object({
|
|
77352
|
+
retention_days: number2().int().min(1).default(7),
|
|
77353
|
+
abandoned_journal_days: number2().int().min(1).default(14),
|
|
77354
|
+
completions_days: number2().int().min(1).default(30),
|
|
77355
|
+
pass_budget_ms: number2().int().min(1).default(60000),
|
|
77356
|
+
discard_unreflected_journals: boolean2().default(false),
|
|
77357
|
+
max_bytes: number2().int().min(0).default(2 * 1024 * 1024 * 1024)
|
|
77358
|
+
}).strict();
|
|
77359
|
+
OmoMemoryRuntimeLayerSchema = object({
|
|
77360
|
+
retention_days: number2().int().min(1).optional(),
|
|
77361
|
+
abandoned_journal_days: number2().int().min(1).optional(),
|
|
77362
|
+
completions_days: number2().int().min(1).optional(),
|
|
77363
|
+
pass_budget_ms: number2().int().min(1).optional(),
|
|
77364
|
+
discard_unreflected_journals: boolean2().optional(),
|
|
77365
|
+
max_bytes: number2().int().min(0).optional()
|
|
77366
|
+
}).strict();
|
|
77351
77367
|
OmoMemoryAgentOverridesSchema = object({
|
|
77352
77368
|
enabled: boolean2().optional(),
|
|
77353
77369
|
agent: string2().min(1).optional(),
|
|
@@ -77363,6 +77379,7 @@ var init_memory = __esm(() => {
|
|
|
77363
77379
|
search: OmoMemorySearchLayerSchema.optional(),
|
|
77364
77380
|
recall: OmoMemoryRecallLayerSchema.optional(),
|
|
77365
77381
|
projection: OmoMemoryProjectionLayerSchema.optional(),
|
|
77382
|
+
runtime: OmoMemoryRuntimeLayerSchema.optional(),
|
|
77366
77383
|
compile_warn_tokens: number2().int().positive().optional()
|
|
77367
77384
|
}).strict();
|
|
77368
77385
|
OmoMemoryAutoIdentitySchema = _enum(["path", "git"]);
|
|
@@ -77407,6 +77424,7 @@ var init_memory = __esm(() => {
|
|
|
77407
77424
|
}),
|
|
77408
77425
|
project_scope: OmoMemoryProjectScopeSchema.default({ nudge: true, recall: true }),
|
|
77409
77426
|
projection: OmoMemoryProjectionSchema.default({ max_entries_per_directory: 0, max_bytes: 40960 }),
|
|
77427
|
+
runtime: OmoMemoryRuntimeSchema.default({ retention_days: 7, abandoned_journal_days: 14, completions_days: 30, pass_budget_ms: 60000, discard_unreflected_journals: false, max_bytes: 2 * 1024 * 1024 * 1024 }),
|
|
77410
77428
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
77411
77429
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
77412
77430
|
}).strict();
|
|
@@ -77427,6 +77445,7 @@ var init_memory = __esm(() => {
|
|
|
77427
77445
|
recall: OmoMemoryRecallLayerSchema.optional(),
|
|
77428
77446
|
project_scope: OmoMemoryProjectScopeLayerSchema.optional(),
|
|
77429
77447
|
projection: OmoMemoryProjectionLayerSchema.optional(),
|
|
77448
|
+
runtime: OmoMemoryRuntimeLayerSchema.optional(),
|
|
77430
77449
|
compile_warn_tokens: number2().int().positive().optional(),
|
|
77431
77450
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).optional()
|
|
77432
77451
|
}).strict();
|
|
@@ -92818,7 +92837,7 @@ var package_default2;
|
|
|
92818
92837
|
var init_package2 = __esm(() => {
|
|
92819
92838
|
package_default2 = {
|
|
92820
92839
|
name: "@oh-my-opencode/omo-codex",
|
|
92821
|
-
version: "5.1.
|
|
92840
|
+
version: "5.1.66",
|
|
92822
92841
|
type: "module",
|
|
92823
92842
|
private: true,
|
|
92824
92843
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -104951,6 +104970,7 @@ var RuntimeFallbackConfigSchema = object({
|
|
|
104951
104970
|
max_fallback_attempts: number2().min(1).max(20).optional(),
|
|
104952
104971
|
cooldown_seconds: number2().min(0).optional(),
|
|
104953
104972
|
timeout_seconds: number2().min(0).optional(),
|
|
104973
|
+
first_prompt_timeout_seconds: number2().min(0).optional(),
|
|
104954
104974
|
notify_on_fallback: boolean2().optional(),
|
|
104955
104975
|
restore_primary_after_cooldown: boolean2().optional()
|
|
104956
104976
|
});
|
|
@@ -109581,8 +109601,8 @@ var package_default3 = {
|
|
|
109581
109601
|
},
|
|
109582
109602
|
dependencies: {
|
|
109583
109603
|
"@clack/prompts": "^1.8.1",
|
|
109584
|
-
"@code-yeongyu/senpi": "2026.11.
|
|
109585
|
-
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.
|
|
109604
|
+
"@code-yeongyu/senpi": "2026.11.9-2",
|
|
109605
|
+
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.11.9-2",
|
|
109586
109606
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
109587
109607
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
109588
109608
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -112435,6 +112455,15 @@ function signInHint(when, route = signInRoute()) {
|
|
|
112435
112455
|
return SIGN_IN_HINTS[route][when];
|
|
112436
112456
|
}
|
|
112437
112457
|
|
|
112458
|
+
// packages/omo-opencode/src/cli/service-auth/closed-device-login.ts
|
|
112459
|
+
init_commander();
|
|
112460
|
+
function withClosedDeviceLoginOptions(command) {
|
|
112461
|
+
return command.helpOption(false).allowUnknownOption().allowExcessArguments().option("--device").option("--no-browser").option("--api <url>");
|
|
112462
|
+
}
|
|
112463
|
+
function isClosedDeviceLogin(options, leftover) {
|
|
112464
|
+
return (options.device === true || options.browser === false) && leftover.length === 0;
|
|
112465
|
+
}
|
|
112466
|
+
|
|
112438
112467
|
// packages/omo-opencode/src/cli/service-auth/browser.ts
|
|
112439
112468
|
import { execFile as execFile6 } from "node:child_process";
|
|
112440
112469
|
var execute = (file, args, env) => new Promise((resolve) => {
|
|
@@ -115164,6 +115193,7 @@ var discardedOf = (credentials, cause) => ({
|
|
|
115164
115193
|
});
|
|
115165
115194
|
function createSession(options) {
|
|
115166
115195
|
const api = serviceOrigin(options.api);
|
|
115196
|
+
const deviceService = options.deviceService;
|
|
115167
115197
|
const now = options.now ?? Date.now;
|
|
115168
115198
|
const { store, signal, beforeKeysDiscarded } = options;
|
|
115169
115199
|
const markerPath = signedOutMarkerPath(options.home ?? homedir35(), credentialId(api));
|
|
@@ -115200,6 +115230,7 @@ function createSession(options) {
|
|
|
115200
115230
|
if (error instanceof ApiRefusal && error.status < 500 && ["unauthorized", "account_deleted", "reauth_required", "invalid_grant", "device_revoked"].includes(error.code)) {
|
|
115201
115231
|
await beforeKeysDiscarded(discardedOf(current, "refused"));
|
|
115202
115232
|
await store.clear();
|
|
115233
|
+
await deviceService?.forget();
|
|
115203
115234
|
throw new SessionEnded(error.code === "reauth_required" ? `This session was ended because its refresh token was reused. ${signInHint("again")}` : refusalMessage(refusalGuidance(error.code, error.status)), DEVICE_REVOKING_REFUSALS.has(error.code), error.code);
|
|
115204
115235
|
}
|
|
115205
115236
|
if (error instanceof RequestFailure && error.notSent || error instanceof ApiRefusal && error.status === 429 && error.code === "rate_limited") {
|
|
@@ -115241,6 +115272,7 @@ function createSession(options) {
|
|
|
115241
115272
|
await store.write(value, "fresh-sign-in", () => beforeKeysDiscarded({ kind: "unreadable" }));
|
|
115242
115273
|
await clearSignedOutMarker(markerPath);
|
|
115243
115274
|
});
|
|
115275
|
+
await deviceService?.adopt(value);
|
|
115244
115276
|
},
|
|
115245
115277
|
signedOutMarker: () => readSignedOutMarker(markerPath),
|
|
115246
115278
|
clearSignedOutMarker: () => clearSignedOutMarker(markerPath),
|
|
@@ -115259,41 +115291,46 @@ function createSession(options) {
|
|
|
115259
115291
|
},
|
|
115260
115292
|
async forget() {
|
|
115261
115293
|
await locked(() => store.clear());
|
|
115294
|
+
await deviceService?.forget();
|
|
115262
115295
|
},
|
|
115263
115296
|
accessSnapshot: snapshot,
|
|
115264
115297
|
async logout() {
|
|
115265
|
-
|
|
115266
|
-
|
|
115267
|
-
|
|
115268
|
-
|
|
115269
|
-
|
|
115270
|
-
|
|
115271
|
-
if (current
|
|
115272
|
-
|
|
115273
|
-
|
|
115274
|
-
|
|
115275
|
-
|
|
115298
|
+
try {
|
|
115299
|
+
return await locked(async () => {
|
|
115300
|
+
let current = null;
|
|
115301
|
+
let account;
|
|
115302
|
+
try {
|
|
115303
|
+
current = await store.readAuthoritative();
|
|
115304
|
+
if (current !== null) {
|
|
115305
|
+
if (current.refreshState === "uncertain")
|
|
115306
|
+
return false;
|
|
115307
|
+
const access = Date.parse(current.accessTokenExpiresAt) <= now() ? (await refreshed(current)).accessToken : current.accessToken;
|
|
115308
|
+
if (current.accountId === undefined && current.owner === undefined && await beforeKeysDiscarded.wantsAccount?.() === true) {
|
|
115309
|
+
account = await accountOf(access);
|
|
115310
|
+
}
|
|
115311
|
+
await request(`/v1/devices/${encodeURIComponent(current.device.id)}`, {
|
|
115312
|
+
method: "DELETE",
|
|
115313
|
+
headers: { authorization: `Bearer ${access}` }
|
|
115314
|
+
});
|
|
115276
115315
|
}
|
|
115277
|
-
|
|
115278
|
-
|
|
115279
|
-
|
|
115280
|
-
|
|
115316
|
+
return true;
|
|
115317
|
+
} catch (error) {
|
|
115318
|
+
if (error instanceof SessionEnded)
|
|
115319
|
+
return error.deviceRevoked;
|
|
115320
|
+
if (error instanceof SignInError)
|
|
115321
|
+
return false;
|
|
115322
|
+
throw error;
|
|
115323
|
+
} finally {
|
|
115324
|
+
await writeSignedOutMarker(markerPath, current?.device.id ?? null);
|
|
115325
|
+
const stored = current === null ? null : await store.read().catch(() => current);
|
|
115326
|
+
if (stored !== null)
|
|
115327
|
+
await beforeKeysDiscarded(discardedOf(stored.accountId === undefined && account !== undefined ? { ...stored, accountId: account } : stored, "logout"));
|
|
115328
|
+
await store.clear();
|
|
115281
115329
|
}
|
|
115282
|
-
|
|
115283
|
-
|
|
115284
|
-
|
|
115285
|
-
|
|
115286
|
-
if (error instanceof SignInError)
|
|
115287
|
-
return false;
|
|
115288
|
-
throw error;
|
|
115289
|
-
} finally {
|
|
115290
|
-
await writeSignedOutMarker(markerPath, current?.device.id ?? null);
|
|
115291
|
-
const stored = current === null ? null : await store.read().catch(() => current);
|
|
115292
|
-
if (stored !== null)
|
|
115293
|
-
await beforeKeysDiscarded(discardedOf(stored.accountId === undefined && account !== undefined ? { ...stored, accountId: account } : stored, "logout"));
|
|
115294
|
-
await store.clear();
|
|
115295
|
-
}
|
|
115296
|
-
});
|
|
115330
|
+
});
|
|
115331
|
+
} finally {
|
|
115332
|
+
await deviceService?.forget();
|
|
115333
|
+
}
|
|
115297
115334
|
},
|
|
115298
115335
|
async accessToken(expect) {
|
|
115299
115336
|
signal?.throwIfAborted();
|
|
@@ -115382,7 +115419,7 @@ var DEFAULT_ACCOUNTS_ORIGIN = "https://signin.omo.dev";
|
|
|
115382
115419
|
function accountsOrigin(options, env) {
|
|
115383
115420
|
return serviceOrigin(options.accounts ?? env.OMO_SERVICE_ACCOUNTS_URL ?? DEFAULT_ACCOUNTS_ORIGIN);
|
|
115384
115421
|
}
|
|
115385
|
-
async function run2(action, options) {
|
|
115422
|
+
async function run2(action, options, hooks = {}) {
|
|
115386
115423
|
const controller = new AbortController;
|
|
115387
115424
|
const cancel = () => controller.abort();
|
|
115388
115425
|
process.once("SIGINT", cancel);
|
|
@@ -115390,10 +115427,12 @@ async function run2(action, options) {
|
|
|
115390
115427
|
try {
|
|
115391
115428
|
const api = serviceOrigin(options.api ?? process.env.OMO_SERVICE_API_URL ?? "https://api.omo.dev");
|
|
115392
115429
|
const store = createCredentialStore(api, { wait: INTERACTIVE_READ_WAIT });
|
|
115430
|
+
const deviceService = hooks.deviceService?.(api);
|
|
115393
115431
|
const session = createSession({
|
|
115394
115432
|
api,
|
|
115395
115433
|
store,
|
|
115396
115434
|
signal: controller.signal,
|
|
115435
|
+
...deviceService === undefined ? {} : { deviceService },
|
|
115397
115436
|
beforeKeysDiscarded: retireSyncPinOnDiscard({ pinDir: () => syncPinDir(resolveMemoryRoot(process.env, process.cwd())), log: (line) => console.error(line) })
|
|
115398
115437
|
});
|
|
115399
115438
|
if (action === "logout") {
|
|
@@ -115453,10 +115492,10 @@ function refuseClosedServiceAuth() {
|
|
|
115453
115492
|
console.error(SERVICE_ACCOUNTS_CLOSED_MESSAGE);
|
|
115454
115493
|
process.exit(1);
|
|
115455
115494
|
}
|
|
115456
|
-
function configureClosedServiceAuthCommands(program) {
|
|
115495
|
+
function configureClosedServiceAuthCommands(program, hooks) {
|
|
115457
115496
|
for (const name of SERVICE_AUTH_COMMANDS) {
|
|
115458
115497
|
if (name === "login") {
|
|
115459
|
-
configureClosedDeviceLogin(program);
|
|
115498
|
+
configureClosedDeviceLogin(program, hooks);
|
|
115460
115499
|
continue;
|
|
115461
115500
|
}
|
|
115462
115501
|
const command = program.command(name, { hidden: true }).helpOption(false).allowUnknownOption().allowExcessArguments().action(() => {
|
|
@@ -115466,25 +115505,25 @@ function configureClosedServiceAuthCommands(program) {
|
|
|
115466
115505
|
command.help = refuseClosedServiceAuth;
|
|
115467
115506
|
}
|
|
115468
115507
|
}
|
|
115469
|
-
function configureClosedDeviceLogin(program) {
|
|
115470
|
-
const command = program.command("login", { hidden: true })
|
|
115471
|
-
if (options
|
|
115508
|
+
function configureClosedDeviceLogin(program, hooks) {
|
|
115509
|
+
const command = withClosedDeviceLoginOptions(program.command("login", { hidden: true })).action((options) => {
|
|
115510
|
+
if (!isClosedDeviceLogin(options, command.args)) {
|
|
115472
115511
|
console.error(SERVICE_ACCOUNTS_CLOSED_MESSAGE);
|
|
115473
115512
|
process.exitCode = 1;
|
|
115474
115513
|
return;
|
|
115475
115514
|
}
|
|
115476
|
-
return run2("login", { ...options, device: true });
|
|
115515
|
+
return run2("login", { ...options, device: true }, hooks);
|
|
115477
115516
|
});
|
|
115478
115517
|
command.help = refuseClosedServiceAuth;
|
|
115479
115518
|
}
|
|
115480
|
-
function configureServiceAuthCommands(program, open = serviceAccountsOpen()) {
|
|
115519
|
+
function configureServiceAuthCommands(program, open = serviceAccountsOpen(), hooks = {}) {
|
|
115481
115520
|
if (!open) {
|
|
115482
|
-
configureClosedServiceAuthCommands(program);
|
|
115521
|
+
configureClosedServiceAuthCommands(program, hooks);
|
|
115483
115522
|
return;
|
|
115484
115523
|
}
|
|
115485
|
-
program.command("login").description("Sign in to OmO using the OS credential store").option("--device", "Use a device code instead of a browser callback").option("--no-browser", "Sign in by device code without opening a browser").option("--api <url>", "OmO API origin (or OMO_SERVICE_API_URL)").option("--accounts <url>", "OmO sign-in page origin (or OMO_SERVICE_ACCOUNTS_URL)").action((options) => run2("login", options));
|
|
115524
|
+
program.command("login").description("Sign in to OmO using the OS credential store").option("--device", "Use a device code instead of a browser callback").option("--no-browser", "Sign in by device code without opening a browser").option("--api <url>", "OmO API origin (or OMO_SERVICE_API_URL)").option("--accounts <url>", "OmO sign-in page origin (or OMO_SERVICE_ACCOUNTS_URL)").action((options) => run2("login", options, hooks));
|
|
115486
115525
|
for (const action of ["logout", "whoami"]) {
|
|
115487
|
-
program.command(action).description(action === "logout" ? "Remove stored OmO credentials and device keys" : "Show the current OmO device sign-in").option("--api <url>", "OmO API origin (or OMO_SERVICE_API_URL)").action((options) => run2(action, options));
|
|
115526
|
+
program.command(action).description(action === "logout" ? "Remove stored OmO credentials and device keys" : "Show the current OmO device sign-in").option("--api <url>", "OmO API origin (or OMO_SERVICE_API_URL)").action((options) => run2(action, options, hooks));
|
|
115488
115527
|
}
|
|
115489
115528
|
}
|
|
115490
115529
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lazycodex-ai",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.66",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -7287,6 +7287,22 @@ var OmoMemoryProjectionLayerSchema = object({
|
|
|
7287
7287
|
max_entries_per_directory: number2().int().min(0).optional(),
|
|
7288
7288
|
max_bytes: number2().int().min(0).optional()
|
|
7289
7289
|
}).strict();
|
|
7290
|
+
var OmoMemoryRuntimeSchema = object({
|
|
7291
|
+
retention_days: number2().int().min(1).default(7),
|
|
7292
|
+
abandoned_journal_days: number2().int().min(1).default(14),
|
|
7293
|
+
completions_days: number2().int().min(1).default(30),
|
|
7294
|
+
pass_budget_ms: number2().int().min(1).default(60000),
|
|
7295
|
+
discard_unreflected_journals: boolean2().default(false),
|
|
7296
|
+
max_bytes: number2().int().min(0).default(2 * 1024 * 1024 * 1024)
|
|
7297
|
+
}).strict();
|
|
7298
|
+
var OmoMemoryRuntimeLayerSchema = object({
|
|
7299
|
+
retention_days: number2().int().min(1).optional(),
|
|
7300
|
+
abandoned_journal_days: number2().int().min(1).optional(),
|
|
7301
|
+
completions_days: number2().int().min(1).optional(),
|
|
7302
|
+
pass_budget_ms: number2().int().min(1).optional(),
|
|
7303
|
+
discard_unreflected_journals: boolean2().optional(),
|
|
7304
|
+
max_bytes: number2().int().min(0).optional()
|
|
7305
|
+
}).strict();
|
|
7290
7306
|
var OmoMemoryAgentOverridesSchema = object({
|
|
7291
7307
|
enabled: boolean2().optional(),
|
|
7292
7308
|
agent: string2().min(1).optional(),
|
|
@@ -7302,6 +7318,7 @@ var OmoMemoryAgentOverridesSchema = object({
|
|
|
7302
7318
|
search: OmoMemorySearchLayerSchema.optional(),
|
|
7303
7319
|
recall: OmoMemoryRecallLayerSchema.optional(),
|
|
7304
7320
|
projection: OmoMemoryProjectionLayerSchema.optional(),
|
|
7321
|
+
runtime: OmoMemoryRuntimeLayerSchema.optional(),
|
|
7305
7322
|
compile_warn_tokens: number2().int().positive().optional()
|
|
7306
7323
|
}).strict();
|
|
7307
7324
|
var OmoMemoryAutoIdentitySchema = _enum(["path", "git"]);
|
|
@@ -7346,6 +7363,7 @@ var OmoMemorySettingsSchema = object({
|
|
|
7346
7363
|
}),
|
|
7347
7364
|
project_scope: OmoMemoryProjectScopeSchema.default({ nudge: true, recall: true }),
|
|
7348
7365
|
projection: OmoMemoryProjectionSchema.default({ max_entries_per_directory: 0, max_bytes: 40960 }),
|
|
7366
|
+
runtime: OmoMemoryRuntimeSchema.default({ retention_days: 7, abandoned_journal_days: 14, completions_days: 30, pass_budget_ms: 60000, discard_unreflected_journals: false, max_bytes: 2 * 1024 * 1024 * 1024 }),
|
|
7349
7367
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
7350
7368
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
7351
7369
|
}).strict();
|
|
@@ -7366,6 +7384,7 @@ var OmoMemorySettingsLayerSchema = object({
|
|
|
7366
7384
|
recall: OmoMemoryRecallLayerSchema.optional(),
|
|
7367
7385
|
project_scope: OmoMemoryProjectScopeLayerSchema.optional(),
|
|
7368
7386
|
projection: OmoMemoryProjectionLayerSchema.optional(),
|
|
7387
|
+
runtime: OmoMemoryRuntimeLayerSchema.optional(),
|
|
7369
7388
|
compile_warn_tokens: number2().int().positive().optional(),
|
|
7370
7389
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).optional()
|
|
7371
7390
|
}).strict();
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.66) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.66) Recommending Git Bash MCP"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.1.
|
|
23
|
+
"statusMessage": "(OmO 5.1.66) Resetting Git Bash MCP Reminder"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.66) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.1.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.1.66",
|
|
4
|
+
"inputDigest": "sha256:9d361074ac1ead129a62074e9417d52268b4e4893f9c93b5e05fffd0e0c692ab",
|
|
5
5
|
"outputs": [
|
|
6
6
|
{
|
|
7
7
|
"path": "cli.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 60,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.66) Checking LSP Diagnostics"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"type": "command",
|
|
22
22
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
23
23
|
"timeout": 5,
|
|
24
|
-
"statusMessage": "(OmO 5.1.
|
|
24
|
+
"statusMessage": "(OmO 5.1.66) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.1.
|
|
10
|
+
"statusMessage": "(OmO 5.1.66) Loading Project Rules"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.1.
|
|
22
|
+
"statusMessage": "(OmO 5.1.66) Loading Project Rules"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"type": "command",
|
|
33
33
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
34
34
|
"timeout": 10,
|
|
35
|
-
"statusMessage": "(OmO 5.1.
|
|
35
|
+
"statusMessage": "(OmO 5.1.66) Matching Project Rules"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"type": "command",
|
|
46
46
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
47
47
|
"timeout": 10,
|
|
48
|
-
"statusMessage": "(OmO 5.1.
|
|
48
|
+
"statusMessage": "(OmO 5.1.66) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-ultrawork",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.66",
|
|
4
4
|
"description": "Codex plugin that injects the ultrawork orchestration directive and ships LazyCodex planning, review, QA, and gate agent roles.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/ulw-execute-continuation/dist/cli.js\" hook stop",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.1.
|
|
10
|
+
"statusMessage": "(OmO 5.1.66) Checking Ulw-Execute Continuation"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|