oh-my-opencode 5.0.0-beta.79 → 5.0.0-beta.80
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/.agents/command/remove-deadcode.md +1 -1
- package/.agents/skills/hyperplan/SKILL.md +5 -5
- package/.agents/skills/remove-deadcode/SKILL.md +1 -1
- package/.agents/skills/security-research/SKILL.md +4 -4
- package/dist/cli/index.js +499 -336
- package/dist/cli-node/index.js +499 -336
- package/dist/config-migration/category-deep-split.d.ts +3 -0
- package/dist/config-migration/migration-plans.d.ts +1 -0
- package/dist/features/builtin-commands/templates/hyperplan.d.ts +1 -1
- package/dist/features/builtin-commands/templates/refactor-sections/team-mode-addendum.d.ts +1 -1
- package/dist/features/builtin-commands/templates/remove-ai-slops.d.ts +1 -1
- package/dist/index.js +282 -123
- package/dist/plugin-config/omo-config-chain.d.ts +1 -0
- package/dist/skills/debugging/references/methodology/02-investigate.md +5 -5
- package/dist/skills/refactor/SKILL.md +2 -2
- package/dist/skills/remove-ai-slops/SKILL.md +4 -4
- package/dist/skills/ulw-execute/SKILL.md +3 -2
- package/dist/skills/ulw-plan/references/full-workflow.md +1 -1
- package/dist/skills/ulw-research/SKILL.md +2 -2
- package/dist/tools/delegate-task/openai-categories.d.ts +6 -4
- package/dist/tui.js +146 -71
- package/package.json +14 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +77 -8
- 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/dist/cli.js +63 -17
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +63 -17
- 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/ultrawork/skills/ulw-plan/references/full-workflow.md +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/dist/checkpoint-template.js +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +14 -6
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +9 -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/components/ulw-loop/src/checkpoint-template.ts +3 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +9 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-contract.test.ts +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/debugging/references/methodology/02-investigate.md +5 -5
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +2 -2
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +4 -4
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +3 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +1 -1
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +2 -2
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +167 -51
- package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +5 -5
- package/packages/shared-skills/skills/refactor/SKILL.md +2 -2
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +4 -4
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +3 -2
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +1 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +2 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-opencode",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.80",
|
|
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",
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
"zod": "^4.4.3"
|
|
183
183
|
},
|
|
184
184
|
"devDependencies": {
|
|
185
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
185
|
+
"@code-yeongyu/senpi": "2026.9.20",
|
|
186
186
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
187
187
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
188
188
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -221,18 +221,18 @@
|
|
|
221
221
|
"typescript": "^7.0.2"
|
|
222
222
|
},
|
|
223
223
|
"optionalDependencies": {
|
|
224
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
225
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
226
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
227
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
228
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
229
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
230
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
231
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
232
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
233
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
234
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
235
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
224
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.80",
|
|
225
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.80",
|
|
226
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.80",
|
|
227
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.80",
|
|
228
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.80",
|
|
229
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.80",
|
|
230
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.80",
|
|
231
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.80",
|
|
232
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.80",
|
|
233
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.80",
|
|
234
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.80",
|
|
235
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.80"
|
|
236
236
|
},
|
|
237
237
|
"overrides": {
|
|
238
238
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -6324,6 +6324,62 @@ var OmoConfigLayerSchema = object({
|
|
|
6324
6324
|
legacy_migrations: record(string2(), unknown()).optional()
|
|
6325
6325
|
}).strict();
|
|
6326
6326
|
|
|
6327
|
+
// ../../omo-config-core/src/schema/legacy-category-names.ts
|
|
6328
|
+
var LEGACY_CATEGORY_NAME_ALIASES = { deep: "deep-low" };
|
|
6329
|
+
function canonicalCategoryName(name) {
|
|
6330
|
+
return Object.hasOwn(LEGACY_CATEGORY_NAME_ALIASES, name) ? LEGACY_CATEGORY_NAME_ALIASES[name] : name;
|
|
6331
|
+
}
|
|
6332
|
+
function isRecord7(value) {
|
|
6333
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
6334
|
+
}
|
|
6335
|
+
function joinPath(path, segment) {
|
|
6336
|
+
return [...path, segment].join(".");
|
|
6337
|
+
}
|
|
6338
|
+
function canonicalizeCategoriesRecord(categories, path, renames) {
|
|
6339
|
+
const result = {};
|
|
6340
|
+
for (const [name, definition] of Object.entries(categories)) {
|
|
6341
|
+
const canonical = canonicalCategoryName(name);
|
|
6342
|
+
if (canonical === name) {
|
|
6343
|
+
result[name] = definition;
|
|
6344
|
+
continue;
|
|
6345
|
+
}
|
|
6346
|
+
const dropped = Object.hasOwn(categories, canonical);
|
|
6347
|
+
renames.push({ canonical, dropped, legacy: name, path: joinPath(path, name) });
|
|
6348
|
+
if (!dropped)
|
|
6349
|
+
result[canonical] = definition;
|
|
6350
|
+
}
|
|
6351
|
+
return result;
|
|
6352
|
+
}
|
|
6353
|
+
function canonicalizeValue(value, path, renames) {
|
|
6354
|
+
if (Array.isArray(value)) {
|
|
6355
|
+
return value.map((entry, index) => canonicalizeValue(entry, [...path, String(index)], renames));
|
|
6356
|
+
}
|
|
6357
|
+
if (!isRecord7(value))
|
|
6358
|
+
return value;
|
|
6359
|
+
const result = {};
|
|
6360
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
6361
|
+
if (key === "categories" && isRecord7(entry)) {
|
|
6362
|
+
result[key] = canonicalizeCategoriesRecord(entry, [...path, key], renames);
|
|
6363
|
+
continue;
|
|
6364
|
+
}
|
|
6365
|
+
if (key === "category" && typeof entry === "string") {
|
|
6366
|
+
const canonical = canonicalCategoryName(entry);
|
|
6367
|
+
if (canonical !== entry) {
|
|
6368
|
+
renames.push({ canonical, dropped: false, legacy: entry, path: joinPath(path, key) });
|
|
6369
|
+
}
|
|
6370
|
+
result[key] = canonical;
|
|
6371
|
+
continue;
|
|
6372
|
+
}
|
|
6373
|
+
result[key] = canonicalizeValue(entry, [...path, key], renames);
|
|
6374
|
+
}
|
|
6375
|
+
return result;
|
|
6376
|
+
}
|
|
6377
|
+
function canonicalizeLegacyCategoryNames(document) {
|
|
6378
|
+
const renames = [];
|
|
6379
|
+
const canonicalized = isRecord7(document) ? canonicalizeValue(document, [], renames) : {};
|
|
6380
|
+
return { document: canonicalized, renames };
|
|
6381
|
+
}
|
|
6382
|
+
|
|
6327
6383
|
// ../../../node_modules/.bun/jsonc-parser@3.3.1/node_modules/jsonc-parser/lib/esm/impl/scanner.js
|
|
6328
6384
|
function createScanner(text, ignoreTrivia = false) {
|
|
6329
6385
|
const len = text.length;
|
|
@@ -7404,21 +7460,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
7404
7460
|
function hasTamperedPrototype(value) {
|
|
7405
7461
|
if (Array.isArray(value))
|
|
7406
7462
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
7407
|
-
if (!
|
|
7463
|
+
if (!isRecord8(value))
|
|
7408
7464
|
return false;
|
|
7409
7465
|
const prototype = Object.getPrototypeOf(value);
|
|
7410
7466
|
if (prototype !== Object.prototype && prototype !== null)
|
|
7411
7467
|
return true;
|
|
7412
7468
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
7413
7469
|
}
|
|
7414
|
-
function
|
|
7470
|
+
function isRecord8(value) {
|
|
7415
7471
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7416
7472
|
}
|
|
7417
7473
|
function containerAt(record, path) {
|
|
7418
7474
|
let container = record;
|
|
7419
7475
|
for (const segment of path) {
|
|
7420
7476
|
const next = container[segment];
|
|
7421
|
-
if (!
|
|
7477
|
+
if (!isRecord8(next))
|
|
7422
7478
|
return null;
|
|
7423
7479
|
container = next;
|
|
7424
7480
|
}
|
|
@@ -7520,6 +7576,15 @@ function readConfigSource(path, scope, fileSystem) {
|
|
|
7520
7576
|
value: parsedRecord
|
|
7521
7577
|
};
|
|
7522
7578
|
}
|
|
7579
|
+
function legacyCategoryDiagnostic(path, renames) {
|
|
7580
|
+
const detail = renames.map((rename) => rename.dropped ? `${rename.path} ignored because ${rename.canonical} is also configured` : `${rename.path} renamed to ${rename.canonical}`).join(", ");
|
|
7581
|
+
return {
|
|
7582
|
+
kind: "deprecated-keys",
|
|
7583
|
+
message: `Deprecated category name in ${path}: ${detail}. Rename it; the alias is removed in a future release.`,
|
|
7584
|
+
path,
|
|
7585
|
+
issuePaths: renames.map((rename) => rename.path)
|
|
7586
|
+
};
|
|
7587
|
+
}
|
|
7523
7588
|
function loadOmoConfig(options = {}) {
|
|
7524
7589
|
const fileSystem = options.fileSystem ?? DEFAULT_READ_FILE_SYSTEM;
|
|
7525
7590
|
const cwd = options.cwd ?? process.cwd();
|
|
@@ -7538,8 +7603,12 @@ function loadOmoConfig(options = {}) {
|
|
|
7538
7603
|
if (loaded.diagnostic !== undefined)
|
|
7539
7604
|
diagnostics.push(loaded.diagnostic);
|
|
7540
7605
|
if (loaded.value !== undefined) {
|
|
7541
|
-
|
|
7542
|
-
|
|
7606
|
+
const canonicalized = canonicalizeLegacyCategoryNames(loaded.value);
|
|
7607
|
+
if (canonicalized.renames.length > 0) {
|
|
7608
|
+
diagnostics.push(legacyCategoryDiagnostic(candidate.path, canonicalized.renames));
|
|
7609
|
+
}
|
|
7610
|
+
layers.push({ config: canonicalized.document, source: loaded.source });
|
|
7611
|
+
merged = mergeOmoConfigRecords(merged, canonicalized.document);
|
|
7543
7612
|
}
|
|
7544
7613
|
}
|
|
7545
7614
|
const requestedProfile = resolveOmoProfileName({
|
|
@@ -9943,10 +10012,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
|
|
|
9943
10012
|
} catch {
|
|
9944
10013
|
return null;
|
|
9945
10014
|
}
|
|
9946
|
-
if (!
|
|
10015
|
+
if (!isRecord9(cache) || !Array.isArray(cache.models))
|
|
9947
10016
|
return null;
|
|
9948
10017
|
for (const entry of cache.models) {
|
|
9949
|
-
if (!
|
|
10018
|
+
if (!isRecord9(entry))
|
|
9950
10019
|
continue;
|
|
9951
10020
|
if (entry.slug !== model && entry.id !== model)
|
|
9952
10021
|
continue;
|
|
@@ -9971,7 +10040,7 @@ function readRootModelCatalogPath(config) {
|
|
|
9971
10040
|
const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
|
|
9972
10041
|
return single?.[1] ?? null;
|
|
9973
10042
|
}
|
|
9974
|
-
function
|
|
10043
|
+
function isRecord9(value) {
|
|
9975
10044
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
9976
10045
|
}
|
|
9977
10046
|
function removeFeatureFlagSetting(config, featureName) {
|
|
@@ -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.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.80) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sisyphuslabs/codex-bootstrap",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.80",
|
|
4
4
|
"description": "Codex SessionStart bootstrap component that provisions LazyCodex runtime dependencies from a detached worker.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": true,
|
|
@@ -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.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.
|
|
23
|
+
"statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.80) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/codex-lazycodex-executor-verify",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.80",
|
|
4
4
|
"description": "Codex SubagentStop evidence verifier for LazyCodex executor completions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "npm@11.12.1",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.0.0-beta.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.0.0-beta.80",
|
|
4
|
+
"inputDigest": "sha256:4c3ae4939cef82bfbc66b27a58b66f2585d1ca4520dd51f0b3e42540270af7ae",
|
|
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.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.
|
|
24
|
+
"statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.
|
|
10
|
+
"statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.
|
|
22
|
+
"statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.
|
|
35
|
+
"statusMessage": "(OmO 5.0.0-beta.80) 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.0.0-beta.
|
|
48
|
+
"statusMessage": "(OmO 5.0.0-beta.80) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.0.0-beta.
|
|
11
|
+
"statusMessage": "(OmO 5.0.0-beta.80) Checking Thread Title Hygiene"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
import { stdin as processStdin, stdout as processStdout } from "node:process";
|
|
5
5
|
|
|
6
6
|
// ../../telemetry-core/src/activity-state.ts
|
|
7
|
-
import { existsSync, mkdirSync as
|
|
8
|
-
import { basename, join } from "node:path";
|
|
7
|
+
import { existsSync, mkdirSync as mkdirSync3, readFileSync } from "node:fs";
|
|
8
|
+
import { basename, join as join2 } from "node:path";
|
|
9
9
|
|
|
10
10
|
// ../../utils/src/atomic-write.ts
|
|
11
11
|
import {
|
|
@@ -97,36 +97,82 @@ function resolveWritableDirectory(preferredDir, fallbackSuffix, osProvider) {
|
|
|
97
97
|
}
|
|
98
98
|
}
|
|
99
99
|
|
|
100
|
+
// ../../telemetry-core/src/day-claim.ts
|
|
101
|
+
import { closeSync as closeSync2, mkdirSync as mkdirSync2, openSync as openSync2, readdirSync, rmSync as rmSync2 } from "node:fs";
|
|
102
|
+
import { join } from "node:path";
|
|
103
|
+
var CLAIM_PREFIX = "daily-active.";
|
|
104
|
+
var CLAIM_SUFFIX = ".claim";
|
|
105
|
+
function getTelemetryDayClaimFilePath(stateDir, dayUTC) {
|
|
106
|
+
return join(stateDir, `${CLAIM_PREFIX}${dayUTC}${CLAIM_SUFFIX}`);
|
|
107
|
+
}
|
|
108
|
+
function claimUtcDay(stateDir, dayUTC) {
|
|
109
|
+
try {
|
|
110
|
+
mkdirSync2(stateDir, { recursive: true });
|
|
111
|
+
closeSync2(openSync2(getTelemetryDayClaimFilePath(stateDir, dayUTC), "wx"));
|
|
112
|
+
} catch (error) {
|
|
113
|
+
return error.code === "EEXIST" ? "already-claimed" : "unavailable";
|
|
114
|
+
}
|
|
115
|
+
pruneSupersededClaims(stateDir, dayUTC);
|
|
116
|
+
return "claimed";
|
|
117
|
+
}
|
|
118
|
+
function pruneSupersededClaims(stateDir, dayUTC) {
|
|
119
|
+
const currentClaim = `${CLAIM_PREFIX}${dayUTC}${CLAIM_SUFFIX}`;
|
|
120
|
+
let entries;
|
|
121
|
+
try {
|
|
122
|
+
entries = readdirSync(stateDir);
|
|
123
|
+
} catch {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
for (const entry of entries) {
|
|
127
|
+
if (entry === currentClaim)
|
|
128
|
+
continue;
|
|
129
|
+
if (!entry.startsWith(CLAIM_PREFIX) || !entry.endsWith(CLAIM_SUFFIX))
|
|
130
|
+
continue;
|
|
131
|
+
try {
|
|
132
|
+
rmSync2(join(stateDir, entry), { force: true });
|
|
133
|
+
} catch {}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
100
137
|
// ../../telemetry-core/src/activity-state.ts
|
|
101
138
|
var POSTHOG_ACTIVITY_STATE_FILE = "posthog-activity.json";
|
|
139
|
+
var capturedDaysByStateDir = new Map;
|
|
102
140
|
function resolveTelemetryStateDir(product, options = {}) {
|
|
103
141
|
const dataDir = resolveXdgDataDir(product.cacheDirName, {
|
|
104
142
|
env: options.env,
|
|
105
143
|
osProvider: options.osProvider
|
|
106
144
|
});
|
|
107
|
-
const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined :
|
|
145
|
+
const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join2(options.env.XDG_DATA_HOME, product.cacheDirName);
|
|
108
146
|
if (dataDir === xdgStateDir || xdgStateDir === undefined && basename(dataDir) === product.cacheDirName) {
|
|
109
147
|
return dataDir;
|
|
110
148
|
}
|
|
111
|
-
return
|
|
149
|
+
return join2(dataDir, product.cacheDirName);
|
|
112
150
|
}
|
|
113
151
|
function getTelemetryActivityStateFilePath(stateDir) {
|
|
114
|
-
return
|
|
152
|
+
return join2(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
|
|
115
153
|
}
|
|
116
154
|
function getDailyActiveCaptureState(input) {
|
|
117
|
-
const state = readPostHogActivityState(input.stateDir, input.diagnostics);
|
|
118
155
|
const dayUTC = getUtcDayString(input.now ?? new Date);
|
|
119
|
-
|
|
120
|
-
|
|
156
|
+
if (capturedDaysByStateDir.get(input.stateDir) === dayUTC) {
|
|
157
|
+
return { dayUTC, captureDaily: false };
|
|
158
|
+
}
|
|
159
|
+
const state = readPostHogActivityState(input.stateDir, input.diagnostics);
|
|
160
|
+
if (state.lastActiveDayUTC === dayUTC) {
|
|
161
|
+
capturedDaysByStateDir.set(input.stateDir, dayUTC);
|
|
162
|
+
return { dayUTC, captureDaily: false };
|
|
163
|
+
}
|
|
164
|
+
const claim = claimUtcDay(input.stateDir, dayUTC);
|
|
165
|
+
capturedDaysByStateDir.set(input.stateDir, dayUTC);
|
|
166
|
+
if (claim === "already-claimed") {
|
|
167
|
+
return { dayUTC, captureDaily: false };
|
|
168
|
+
}
|
|
169
|
+
if (claim === "claimed") {
|
|
121
170
|
writePostHogActivityState(input.stateDir, {
|
|
122
171
|
...state,
|
|
123
172
|
lastActiveDayUTC: dayUTC
|
|
124
173
|
}, input.diagnostics);
|
|
125
174
|
}
|
|
126
|
-
return {
|
|
127
|
-
dayUTC,
|
|
128
|
-
captureDaily
|
|
129
|
-
};
|
|
175
|
+
return { dayUTC, captureDaily: true };
|
|
130
176
|
}
|
|
131
177
|
function getUtcDayString(date) {
|
|
132
178
|
return date.toISOString().slice(0, 10);
|
|
@@ -159,7 +205,7 @@ function readPostHogActivityState(stateDir, diagnostics) {
|
|
|
159
205
|
function writePostHogActivityState(stateDir, nextState, diagnostics) {
|
|
160
206
|
const stateFilePath = getTelemetryActivityStateFilePath(stateDir);
|
|
161
207
|
try {
|
|
162
|
-
|
|
208
|
+
mkdirSync3(stateDir, { recursive: true });
|
|
163
209
|
writeFileAtomically(stateFilePath, `${JSON.stringify(nextState, null, 2)}
|
|
164
210
|
`);
|
|
165
211
|
} catch (error) {
|
|
@@ -178,19 +224,19 @@ var DEFAULT_POSTHOG_API_KEY = "phc_CFJhj5HyvA62QPhvyaUCtaq23aUfznnijg5VaaGkNk74"
|
|
|
178
224
|
var UNCONFIGURED_POSTHOG_API_KEY = "phc_REPLACE_ME_OMO_NATIVE";
|
|
179
225
|
|
|
180
226
|
// ../../telemetry-core/src/diagnostics.ts
|
|
181
|
-
import { appendFileSync, existsSync as existsSync2, mkdirSync as
|
|
182
|
-
import { join as
|
|
227
|
+
import { appendFileSync, existsSync as existsSync2, mkdirSync as mkdirSync4, readFileSync as readFileSync2 } from "node:fs";
|
|
228
|
+
import { join as join3 } from "node:path";
|
|
183
229
|
var DIAGNOSTICS_FILE_NAME = "telemetry-diagnostics.jsonl";
|
|
184
230
|
var DIAGNOSTICS_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;
|
|
185
231
|
var DIAGNOSTICS_MAX_BYTES = 256 * 1024;
|
|
186
232
|
function getTelemetryDiagnosticsFilePath(diagnosticsDir) {
|
|
187
|
-
return
|
|
233
|
+
return join3(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
|
|
188
234
|
}
|
|
189
235
|
function writeTelemetryDiagnostic(input, options) {
|
|
190
236
|
const now = options.now ?? new Date;
|
|
191
237
|
try {
|
|
192
238
|
cleanupTelemetryDiagnostics({ diagnosticsDir: options.diagnosticsDir, now });
|
|
193
|
-
|
|
239
|
+
mkdirSync4(options.diagnosticsDir, { recursive: true });
|
|
194
240
|
appendFileSync(getTelemetryDiagnosticsFilePath(options.diagnosticsDir), `${JSON.stringify(toDiagnosticRecord(input, now))}
|
|
195
241
|
`, "utf-8");
|
|
196
242
|
} catch (error) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// ../../../../telemetry-core/src/activity-state.ts
|
|
2
|
-
import { existsSync, mkdirSync as
|
|
3
|
-
import { basename, join } from "node:path";
|
|
2
|
+
import { existsSync, mkdirSync as mkdirSync3, readFileSync } from "node:fs";
|
|
3
|
+
import { basename, join as join2 } from "node:path";
|
|
4
4
|
|
|
5
5
|
// ../../../../utils/src/atomic-write.ts
|
|
6
6
|
import {
|
|
@@ -92,36 +92,82 @@ function resolveWritableDirectory(preferredDir, fallbackSuffix, osProvider) {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
// ../../../../telemetry-core/src/day-claim.ts
|
|
96
|
+
import { closeSync as closeSync2, mkdirSync as mkdirSync2, openSync as openSync2, readdirSync, rmSync as rmSync2 } from "node:fs";
|
|
97
|
+
import { join } from "node:path";
|
|
98
|
+
var CLAIM_PREFIX = "daily-active.";
|
|
99
|
+
var CLAIM_SUFFIX = ".claim";
|
|
100
|
+
function getTelemetryDayClaimFilePath(stateDir, dayUTC) {
|
|
101
|
+
return join(stateDir, `${CLAIM_PREFIX}${dayUTC}${CLAIM_SUFFIX}`);
|
|
102
|
+
}
|
|
103
|
+
function claimUtcDay(stateDir, dayUTC) {
|
|
104
|
+
try {
|
|
105
|
+
mkdirSync2(stateDir, { recursive: true });
|
|
106
|
+
closeSync2(openSync2(getTelemetryDayClaimFilePath(stateDir, dayUTC), "wx"));
|
|
107
|
+
} catch (error) {
|
|
108
|
+
return error.code === "EEXIST" ? "already-claimed" : "unavailable";
|
|
109
|
+
}
|
|
110
|
+
pruneSupersededClaims(stateDir, dayUTC);
|
|
111
|
+
return "claimed";
|
|
112
|
+
}
|
|
113
|
+
function pruneSupersededClaims(stateDir, dayUTC) {
|
|
114
|
+
const currentClaim = `${CLAIM_PREFIX}${dayUTC}${CLAIM_SUFFIX}`;
|
|
115
|
+
let entries;
|
|
116
|
+
try {
|
|
117
|
+
entries = readdirSync(stateDir);
|
|
118
|
+
} catch {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
for (const entry of entries) {
|
|
122
|
+
if (entry === currentClaim)
|
|
123
|
+
continue;
|
|
124
|
+
if (!entry.startsWith(CLAIM_PREFIX) || !entry.endsWith(CLAIM_SUFFIX))
|
|
125
|
+
continue;
|
|
126
|
+
try {
|
|
127
|
+
rmSync2(join(stateDir, entry), { force: true });
|
|
128
|
+
} catch {}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
95
132
|
// ../../../../telemetry-core/src/activity-state.ts
|
|
96
133
|
var POSTHOG_ACTIVITY_STATE_FILE = "posthog-activity.json";
|
|
134
|
+
var capturedDaysByStateDir = new Map;
|
|
97
135
|
function resolveTelemetryStateDir(product, options = {}) {
|
|
98
136
|
const dataDir = resolveXdgDataDir(product.cacheDirName, {
|
|
99
137
|
env: options.env,
|
|
100
138
|
osProvider: options.osProvider
|
|
101
139
|
});
|
|
102
|
-
const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined :
|
|
140
|
+
const xdgStateDir = options.env?.XDG_DATA_HOME === undefined ? undefined : join2(options.env.XDG_DATA_HOME, product.cacheDirName);
|
|
103
141
|
if (dataDir === xdgStateDir || xdgStateDir === undefined && basename(dataDir) === product.cacheDirName) {
|
|
104
142
|
return dataDir;
|
|
105
143
|
}
|
|
106
|
-
return
|
|
144
|
+
return join2(dataDir, product.cacheDirName);
|
|
107
145
|
}
|
|
108
146
|
function getTelemetryActivityStateFilePath(stateDir) {
|
|
109
|
-
return
|
|
147
|
+
return join2(stateDir, POSTHOG_ACTIVITY_STATE_FILE);
|
|
110
148
|
}
|
|
111
149
|
function getDailyActiveCaptureState(input) {
|
|
112
|
-
const state = readPostHogActivityState(input.stateDir, input.diagnostics);
|
|
113
150
|
const dayUTC = getUtcDayString(input.now ?? new Date);
|
|
114
|
-
|
|
115
|
-
|
|
151
|
+
if (capturedDaysByStateDir.get(input.stateDir) === dayUTC) {
|
|
152
|
+
return { dayUTC, captureDaily: false };
|
|
153
|
+
}
|
|
154
|
+
const state = readPostHogActivityState(input.stateDir, input.diagnostics);
|
|
155
|
+
if (state.lastActiveDayUTC === dayUTC) {
|
|
156
|
+
capturedDaysByStateDir.set(input.stateDir, dayUTC);
|
|
157
|
+
return { dayUTC, captureDaily: false };
|
|
158
|
+
}
|
|
159
|
+
const claim = claimUtcDay(input.stateDir, dayUTC);
|
|
160
|
+
capturedDaysByStateDir.set(input.stateDir, dayUTC);
|
|
161
|
+
if (claim === "already-claimed") {
|
|
162
|
+
return { dayUTC, captureDaily: false };
|
|
163
|
+
}
|
|
164
|
+
if (claim === "claimed") {
|
|
116
165
|
writePostHogActivityState(input.stateDir, {
|
|
117
166
|
...state,
|
|
118
167
|
lastActiveDayUTC: dayUTC
|
|
119
168
|
}, input.diagnostics);
|
|
120
169
|
}
|
|
121
|
-
return {
|
|
122
|
-
dayUTC,
|
|
123
|
-
captureDaily
|
|
124
|
-
};
|
|
170
|
+
return { dayUTC, captureDaily: true };
|
|
125
171
|
}
|
|
126
172
|
function getUtcDayString(date) {
|
|
127
173
|
return date.toISOString().slice(0, 10);
|
|
@@ -154,7 +200,7 @@ function readPostHogActivityState(stateDir, diagnostics) {
|
|
|
154
200
|
function writePostHogActivityState(stateDir, nextState, diagnostics) {
|
|
155
201
|
const stateFilePath = getTelemetryActivityStateFilePath(stateDir);
|
|
156
202
|
try {
|
|
157
|
-
|
|
203
|
+
mkdirSync3(stateDir, { recursive: true });
|
|
158
204
|
writeFileAtomically(stateFilePath, `${JSON.stringify(nextState, null, 2)}
|
|
159
205
|
`);
|
|
160
206
|
} catch (error) {
|
|
@@ -173,19 +219,19 @@ var DEFAULT_POSTHOG_API_KEY = "phc_CFJhj5HyvA62QPhvyaUCtaq23aUfznnijg5VaaGkNk74"
|
|
|
173
219
|
var UNCONFIGURED_POSTHOG_API_KEY = "phc_REPLACE_ME_OMO_NATIVE";
|
|
174
220
|
|
|
175
221
|
// ../../../../telemetry-core/src/diagnostics.ts
|
|
176
|
-
import { appendFileSync, existsSync as existsSync2, mkdirSync as
|
|
177
|
-
import { join as
|
|
222
|
+
import { appendFileSync, existsSync as existsSync2, mkdirSync as mkdirSync4, readFileSync as readFileSync2 } from "node:fs";
|
|
223
|
+
import { join as join3 } from "node:path";
|
|
178
224
|
var DIAGNOSTICS_FILE_NAME = "telemetry-diagnostics.jsonl";
|
|
179
225
|
var DIAGNOSTICS_RETENTION_MS = 7 * 24 * 60 * 60 * 1000;
|
|
180
226
|
var DIAGNOSTICS_MAX_BYTES = 256 * 1024;
|
|
181
227
|
function getTelemetryDiagnosticsFilePath(diagnosticsDir) {
|
|
182
|
-
return
|
|
228
|
+
return join3(diagnosticsDir, DIAGNOSTICS_FILE_NAME);
|
|
183
229
|
}
|
|
184
230
|
function writeTelemetryDiagnostic(input, options) {
|
|
185
231
|
const now = options.now ?? new Date;
|
|
186
232
|
try {
|
|
187
233
|
cleanupTelemetryDiagnostics({ diagnosticsDir: options.diagnosticsDir, now });
|
|
188
|
-
|
|
234
|
+
mkdirSync4(options.diagnosticsDir, { recursive: true });
|
|
189
235
|
appendFileSync(getTelemetryDiagnosticsFilePath(options.diagnosticsDir), `${JSON.stringify(toDiagnosticRecord(input, now))}
|
|
190
236
|
`, "utf-8");
|
|
191
237
|
} catch (error) {
|