oh-my-opencode 5.0.0-beta.52 → 5.0.0-beta.54
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/publish.md +15 -7
- package/.agents/skills/publish/SKILL.md +15 -7
- package/.opencode/command/publish.md +15 -7
- package/README.ja.md +11 -18
- package/README.ko.md +10 -17
- package/README.md +11 -18
- package/README.ru.md +11 -18
- package/README.zh-cn.md +11 -18
- package/dist/cli/index.js +147 -46
- package/dist/cli-node/index.js +147 -46
- package/dist/index.js +1311 -1200
- package/dist/skills/refactor/SKILL.md +3 -3
- package/dist/skills/review-work/SKILL.md +1 -1
- package/dist/skills/ulw-execute/SKILL.md +5 -5
- package/dist/tui.js +107 -10
- package/package.json +15 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +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/dist/checkpoint-codex-validation.d.ts +5 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +14 -34
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +1 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +0 -18
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +1 -88
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +10 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-arg-parser.js +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +86 -174
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +2 -18
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +23 -33
- package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/review-blockers.js +16 -9
- 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-codex-validation.ts +18 -59
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +1 -6
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +1 -124
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +11 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-arg-parser.ts +10 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +31 -50
- package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +29 -10
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +0 -82
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +16 -22
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint.test.ts +27 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-json-errors.test.ts +25 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +34 -11
- package/packages/omo-codex/plugin/components/ulw-loop/test/guided-recovery.test.ts +9 -47
- package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +9 -7
- 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/refactor/SKILL.md +3 -3
- package/packages/omo-codex/plugin/skills/ulw-execute/SKILL.md +5 -5
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- package/packages/shared-skills/skills/refactor/SKILL.md +3 -3
- package/packages/shared-skills/skills/review-work/SKILL.md +1 -1
- package/packages/shared-skills/skills/ulw-execute/SKILL.md +5 -5
package/dist/cli/index.js
CHANGED
|
@@ -64,7 +64,7 @@ var package_default;
|
|
|
64
64
|
var init_package = __esm(() => {
|
|
65
65
|
package_default = {
|
|
66
66
|
name: "oh-my-opencode",
|
|
67
|
-
version: "5.0.0-beta.
|
|
67
|
+
version: "5.0.0-beta.54",
|
|
68
68
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
69
69
|
main: "./dist/index.js",
|
|
70
70
|
types: "dist/index.d.ts",
|
|
@@ -202,6 +202,7 @@ var init_package = __esm(() => {
|
|
|
202
202
|
"typecheck:packages": "tsgo --noEmit -p packages/rules-engine/tsconfig.json && tsgo --noEmit -p packages/delegate-core/tsconfig.json && tsgo --noEmit -p packages/mcp-stdio-core/tsconfig.json && tsgo --noEmit -p packages/mcp-client-core/tsconfig.json && tsgo --noEmit -p packages/git-bash-mcp/tsconfig.json && tsgo --noEmit -p packages/ast-grep-mcp/tsconfig.json && tsgo --noEmit -p packages/lsp-core/tsconfig.json && tsgo --noEmit -p packages/utils/tsconfig.json && tsgo --noEmit -p packages/model-core/tsconfig.json && tsgo --noEmit -p packages/omo-config-core/tsconfig.json && tsgo --noEmit -p packages/prompts-core/tsconfig.json && tsgo --noEmit -p packages/comment-checker-core/tsconfig.json && tsgo --noEmit -p packages/hashline-core/tsconfig.json && tsgo --noEmit -p packages/tmux-core/tsconfig.json && tsgo --noEmit -p packages/team-core/tsconfig.json && tsgo --noEmit -p packages/openclaw-core/tsconfig.json && tsgo --noEmit -p packages/boulder-state/tsconfig.json && tsgo --noEmit -p packages/memory-core/tsconfig.json && tsgo --noEmit -p packages/telemetry-core/tsconfig.json && tsgo --noEmit -p packages/claude-code-compat-core/tsconfig.json && tsgo --noEmit -p packages/skills-loader-core/tsconfig.json && tsgo --noEmit -p packages/agents-md-core/tsconfig.json && tsgo --noEmit -p packages/omo-codex/plugin/shared/tsconfig.json && tsgo --noEmit -p packages/omo-codex/tsconfig.json && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && tsgo --noEmit -p packages/senpi-task/tsconfig.json && tsgo --noEmit -p packages/pi-goal/tsconfig.json && tsgo --noEmit -p packages/pi-webfetch/tsconfig.json && tsgo --noEmit -p packages/omo-opencode/tsconfig.json && tsgo --noEmit -p packages/omo-native/tsconfig.json",
|
|
203
203
|
"typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
|
|
204
204
|
test: "bun test --timeout 20000",
|
|
205
|
+
"changelog:section": "bun script/changelog-section.ts",
|
|
205
206
|
"test:codex": "bun run build:codex-install && bun run build:git-bash-mcp && bun run build:lsp-tools-mcp && bun run build:lsp-daemon && npm --prefix packages/lsp-tools-mcp test && npm --prefix packages/omo-codex/plugin ci && npm --prefix packages/omo-codex/plugin/components/ulw-loop test && bun run --cwd packages/omo-codex/plugin build && node scripts/check-third-party-notices.mjs --ship && bun test --timeout 20000 packages/omo-opencode/src/cli/cli-installer.platform.test.ts packages/omo-codex/src/install/codex-cache.test.ts packages/omo-codex/src/install/codex-cleanup.test.ts packages/omo-codex/src/install/codex-config-agent-cleanup.test.ts packages/omo-codex/src/install/codex-config-autonomous-features.test.ts packages/omo-codex/src/install/codex-config-reasoning.test.ts packages/omo-codex/src/install/codex-config-toml.test.ts packages/omo-codex/src/install/codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex-project-local-cleanup.test.ts packages/omo-codex/src/install/install-codex.test.ts packages/omo-codex/src/install/install-codex-packaged.test.ts packages/omo-codex/src/install/link-cached-plugin-agents.test.ts packages/omo-codex/src/**/*.test.ts packages/utils/src/jsonc-parser.test.ts packages/utils/src/frontmatter.test.ts packages/hashline-core/src/hash-computation.test.ts packages/hashline-core/src/smoke-untested-modules.test.ts packages/rules-engine/src/index.test.ts packages/rules-engine/src/security-boundary.test.ts packages/agents-md-core/src/injector.test.ts packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts && node --test packages/omo-codex/plugin/test/*.test.mjs packages/omo-codex/scripts/install-cache-copy.test.mjs packages/omo-codex/scripts/install-cli-args.test.mjs packages/omo-codex/scripts/install-delegated-command.test.mjs packages/omo-codex/scripts/install-config-autonomous-features.test.mjs packages/omo-codex/scripts/install-config-autonomous.test.mjs packages/omo-codex/scripts/install-config-reasoning.test.mjs packages/omo-codex/scripts/install-config.test.mjs packages/omo-codex/scripts/install-hook-targets.test.mjs packages/omo-codex/scripts/install-project-local-cleanup.test.mjs packages/omo-codex/scripts/install-lazycodex-version-stamp.test.mjs packages/omo-codex/scripts/install-local-entrypoint.test.mjs packages/omo-codex/scripts/install-local-git-bash-preflight.test.mjs packages/omo-codex/scripts/install-local.test.mjs packages/omo-codex/scripts/install-marketplace-cache.test.mjs packages/omo-codex/scripts/install-mcp-context7-runtime.test.mjs packages/omo-codex/scripts/install-mcp-runtime.test.mjs packages/omo-codex/scripts/install-packaged-local.test.mjs packages/omo-codex/scripts/install-generated-bundle.test.mjs packages/omo-codex/scripts/install-agent-links.test.mjs packages/omo-codex/scripts/install-bin-links.test.mjs",
|
|
206
207
|
"test:fast": "bun run script/test-fast.ts",
|
|
207
208
|
"test:senpi": "bun run build:senpi-plugin && tsgo --noEmit -p packages/omo-senpi/tsconfig.json && bun test --timeout 20000 packages/omo-senpi && bun test ./.agents/skills/senpi-qa/scripts/resolve-evidence-dir.test.mjs",
|
|
@@ -248,7 +249,7 @@ var init_package = __esm(() => {
|
|
|
248
249
|
zod: "^4.4.3"
|
|
249
250
|
},
|
|
250
251
|
devDependencies: {
|
|
251
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
252
|
+
"@code-yeongyu/senpi": "2026.9.11",
|
|
252
253
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
253
254
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
254
255
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -289,18 +290,18 @@ var init_package = __esm(() => {
|
|
|
289
290
|
typescript: "^7.0.2"
|
|
290
291
|
},
|
|
291
292
|
optionalDependencies: {
|
|
292
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
293
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
300
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
301
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
302
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
303
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
293
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.54",
|
|
294
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.54",
|
|
295
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.54",
|
|
296
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.54",
|
|
297
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.54",
|
|
298
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.54",
|
|
299
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.54",
|
|
300
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.54",
|
|
301
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.54",
|
|
302
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.54",
|
|
303
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.54",
|
|
304
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.54"
|
|
304
305
|
},
|
|
305
306
|
overrides: {
|
|
306
307
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -72651,7 +72652,7 @@ var init_harness = __esm(() => {
|
|
|
72651
72652
|
});
|
|
72652
72653
|
|
|
72653
72654
|
// packages/omo-config-core/src/schema/memory.ts
|
|
72654
|
-
var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
|
|
72655
|
+
var OmoMemoryReflectionTriggerSchema, OmoMemoryReflectionSchema, OmoMemorySyncSchema, OmoMemorySearchSchema, OmoMemoryRecallEventCapsSchema, OmoMemoryRecallSchema, OmoMemoryNudgeSchema, OmoMemoryFactsSchema, OmoMemoryDreamSchema, OmoMemoryPeopleSchema, OmoMemorySoulSchema, OmoMemoryWriteNoticeSchema, OmoMemoryReflectionTriggerLayerSchema, OmoMemoryReflectionLayerSchema, OmoMemorySyncLayerSchema, OmoMemorySearchLayerSchema, OmoMemoryRecallEventCapsLayerSchema, OmoMemoryRecallLayerSchema, OmoMemoryNudgeLayerSchema, OmoMemoryFactsLayerSchema, OmoMemoryDreamLayerSchema, OmoMemoryPeopleLayerSchema, OmoMemorySoulLayerSchema, OmoMemoryWriteNoticeLayerSchema, OmoMemoryAgentOverridesSchema, OmoMemorySettingsSchema, OmoMemorySettingsLayerSchema;
|
|
72655
72656
|
var init_memory = __esm(() => {
|
|
72656
72657
|
init_zod();
|
|
72657
72658
|
OmoMemoryReflectionTriggerSchema = object({
|
|
@@ -72673,9 +72674,20 @@ var init_memory = __esm(() => {
|
|
|
72673
72674
|
OmoMemorySearchSchema = object({
|
|
72674
72675
|
enabled: boolean2().default(true)
|
|
72675
72676
|
}).strict();
|
|
72677
|
+
OmoMemoryRecallEventCapsSchema = object({
|
|
72678
|
+
tool_args: number2().int().nonnegative().default(400),
|
|
72679
|
+
result_head: number2().int().nonnegative().default(600),
|
|
72680
|
+
assistant: number2().int().nonnegative().default(1500),
|
|
72681
|
+
prompt: number2().int().nonnegative().default(4000)
|
|
72682
|
+
}).strict();
|
|
72676
72683
|
OmoMemoryRecallSchema = object({
|
|
72677
72684
|
enabled: boolean2().default(true),
|
|
72678
|
-
max_items: number2().int().min(1).max(5).default(2)
|
|
72685
|
+
max_items: number2().int().min(1).max(5).default(2),
|
|
72686
|
+
category: string2().min(1).default("quick"),
|
|
72687
|
+
event_caps: OmoMemoryRecallEventCapsSchema.default({ tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 }),
|
|
72688
|
+
sidecar_max_tokens: number2().int().positive().default(48000),
|
|
72689
|
+
max_concurrent_wakes: number2().int().positive().default(2),
|
|
72690
|
+
tool_budget: number2().int().positive().default(8)
|
|
72679
72691
|
}).strict();
|
|
72680
72692
|
OmoMemoryNudgeSchema = object({
|
|
72681
72693
|
enabled: boolean2().default(true),
|
|
@@ -72723,9 +72735,20 @@ var init_memory = __esm(() => {
|
|
|
72723
72735
|
OmoMemorySearchLayerSchema = object({
|
|
72724
72736
|
enabled: boolean2().optional()
|
|
72725
72737
|
}).strict();
|
|
72738
|
+
OmoMemoryRecallEventCapsLayerSchema = object({
|
|
72739
|
+
tool_args: number2().int().nonnegative().optional(),
|
|
72740
|
+
result_head: number2().int().nonnegative().optional(),
|
|
72741
|
+
assistant: number2().int().nonnegative().optional(),
|
|
72742
|
+
prompt: number2().int().nonnegative().optional()
|
|
72743
|
+
}).strict();
|
|
72726
72744
|
OmoMemoryRecallLayerSchema = object({
|
|
72727
72745
|
enabled: boolean2().optional(),
|
|
72728
|
-
max_items: number2().int().min(1).max(5).optional()
|
|
72746
|
+
max_items: number2().int().min(1).max(5).optional(),
|
|
72747
|
+
category: string2().min(1).optional(),
|
|
72748
|
+
event_caps: OmoMemoryRecallEventCapsLayerSchema.optional(),
|
|
72749
|
+
sidecar_max_tokens: number2().int().positive().optional(),
|
|
72750
|
+
max_concurrent_wakes: number2().int().positive().optional(),
|
|
72751
|
+
tool_budget: number2().int().positive().optional()
|
|
72729
72752
|
}).strict();
|
|
72730
72753
|
OmoMemoryNudgeLayerSchema = object({
|
|
72731
72754
|
enabled: boolean2().optional(),
|
|
@@ -72795,7 +72818,15 @@ var init_memory = __esm(() => {
|
|
|
72795
72818
|
write_notice: OmoMemoryWriteNoticeSchema.default({ enabled: true }),
|
|
72796
72819
|
sync: OmoMemorySyncSchema.default({ enabled: true }),
|
|
72797
72820
|
search: OmoMemorySearchSchema.default({ enabled: true }),
|
|
72798
|
-
recall: OmoMemoryRecallSchema.default({
|
|
72821
|
+
recall: OmoMemoryRecallSchema.default({
|
|
72822
|
+
enabled: true,
|
|
72823
|
+
max_items: 2,
|
|
72824
|
+
category: "quick",
|
|
72825
|
+
event_caps: { tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 },
|
|
72826
|
+
sidecar_max_tokens: 48000,
|
|
72827
|
+
max_concurrent_wakes: 2,
|
|
72828
|
+
tool_budget: 8
|
|
72829
|
+
}),
|
|
72799
72830
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
72800
72831
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
72801
72832
|
}).strict();
|
|
@@ -72839,6 +72870,25 @@ var init_model_catalog = __esm(() => {
|
|
|
72839
72870
|
OmoModelCatalogLayerSchema = record(string2(), OmoModelCatalogEntryLayerSchema);
|
|
72840
72871
|
});
|
|
72841
72872
|
|
|
72873
|
+
// packages/omo-config-core/src/schema/model-profile.ts
|
|
72874
|
+
function isRecord8(value) {
|
|
72875
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
72876
|
+
}
|
|
72877
|
+
var OmoModelProfileInputSchema, OmoModelProfileSchema, OmoModelProfilesSchema, OmoModelProfileLayerInputSchema, OmoModelProfileLayerSchema, OmoModelProfilesLayerSchema;
|
|
72878
|
+
var init_model_profile = __esm(() => {
|
|
72879
|
+
init_zod();
|
|
72880
|
+
init_fallback_models();
|
|
72881
|
+
OmoModelProfileInputSchema = object({
|
|
72882
|
+
display_name: string2().optional(),
|
|
72883
|
+
models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
|
|
72884
|
+
}).strict();
|
|
72885
|
+
OmoModelProfileSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
|
|
72886
|
+
OmoModelProfilesSchema = record(string2(), OmoModelProfileSchema);
|
|
72887
|
+
OmoModelProfileLayerInputSchema = OmoModelProfileInputSchema.partial();
|
|
72888
|
+
OmoModelProfileLayerSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileLayerInputSchema);
|
|
72889
|
+
OmoModelProfilesLayerSchema = record(string2(), OmoModelProfileLayerSchema);
|
|
72890
|
+
});
|
|
72891
|
+
|
|
72842
72892
|
// packages/omo-config-core/src/schema/task.ts
|
|
72843
72893
|
import { availableParallelism } from "os";
|
|
72844
72894
|
function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism) {
|
|
@@ -73031,6 +73081,7 @@ var init_config = __esm(() => {
|
|
|
73031
73081
|
init_git_master();
|
|
73032
73082
|
init_memory();
|
|
73033
73083
|
init_model_catalog();
|
|
73084
|
+
init_model_profile();
|
|
73034
73085
|
init_task();
|
|
73035
73086
|
init_team();
|
|
73036
73087
|
init_telemetry();
|
|
@@ -73044,6 +73095,8 @@ var init_config = __esm(() => {
|
|
|
73044
73095
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73045
73096
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73046
73097
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73098
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73099
|
+
model_profile: string2().optional(),
|
|
73047
73100
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73048
73101
|
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
73049
73102
|
}).strict();
|
|
@@ -73055,6 +73108,8 @@ var init_config = __esm(() => {
|
|
|
73055
73108
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73056
73109
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73057
73110
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73111
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73112
|
+
model_profile: string2().optional(),
|
|
73058
73113
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73059
73114
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73060
73115
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73070,6 +73125,8 @@ var init_config = __esm(() => {
|
|
|
73070
73125
|
task: OmoTaskSettingsSchema.optional(),
|
|
73071
73126
|
teams: OmoTeamsConfigSchema.optional(),
|
|
73072
73127
|
models: OmoModelCatalogSchema.optional(),
|
|
73128
|
+
model_profiles: OmoModelProfilesSchema.optional(),
|
|
73129
|
+
model_profile: string2().optional(),
|
|
73073
73130
|
memory: OmoMemorySettingsSchema.optional(),
|
|
73074
73131
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
73075
73132
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73088,6 +73145,8 @@ var init_config = __esm(() => {
|
|
|
73088
73145
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73089
73146
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73090
73147
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73148
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73149
|
+
model_profile: string2().optional(),
|
|
73091
73150
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73092
73151
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73093
73152
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73110,6 +73169,7 @@ var init_schema = __esm(() => {
|
|
|
73110
73169
|
init_harness();
|
|
73111
73170
|
init_memory();
|
|
73112
73171
|
init_model_catalog();
|
|
73172
|
+
init_model_profile();
|
|
73113
73173
|
init_model_ref();
|
|
73114
73174
|
init_task();
|
|
73115
73175
|
init_team();
|
|
@@ -73366,21 +73426,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
73366
73426
|
function hasTamperedPrototype(value) {
|
|
73367
73427
|
if (Array.isArray(value))
|
|
73368
73428
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
73369
|
-
if (!
|
|
73429
|
+
if (!isRecord9(value))
|
|
73370
73430
|
return false;
|
|
73371
73431
|
const prototype = Object.getPrototypeOf(value);
|
|
73372
73432
|
if (prototype !== Object.prototype && prototype !== null)
|
|
73373
73433
|
return true;
|
|
73374
73434
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
73375
73435
|
}
|
|
73376
|
-
function
|
|
73436
|
+
function isRecord9(value) {
|
|
73377
73437
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
73378
73438
|
}
|
|
73379
73439
|
function containerAt(record, path) {
|
|
73380
73440
|
let container = record;
|
|
73381
73441
|
for (const segment of path) {
|
|
73382
73442
|
const next = container[segment];
|
|
73383
|
-
if (!
|
|
73443
|
+
if (!isRecord9(next))
|
|
73384
73444
|
return null;
|
|
73385
73445
|
container = next;
|
|
73386
73446
|
}
|
|
@@ -73642,6 +73702,38 @@ function resolveCategoryDefinition(definition, catalog, cycleNames) {
|
|
|
73642
73702
|
...definition.fallback_models === undefined ? {} : { fallback_models: resolveFallbackModels(definition.fallback_models, catalog, cycleNames) }
|
|
73643
73703
|
};
|
|
73644
73704
|
}
|
|
73705
|
+
function resolveModelProfile(definition, catalog, cycleNames) {
|
|
73706
|
+
return {
|
|
73707
|
+
...definition,
|
|
73708
|
+
...definition.models === undefined ? {} : { models: definition.models.map((entry) => resolveModelEntry(entry, catalog, cycleNames)) }
|
|
73709
|
+
};
|
|
73710
|
+
}
|
|
73711
|
+
function profileShadowDiagnostics(view) {
|
|
73712
|
+
if (view.model_profiles === undefined || view.models === undefined)
|
|
73713
|
+
return [];
|
|
73714
|
+
return Object.keys(view.model_profiles).flatMap((name) => view.models?.[name] === undefined ? [] : [{
|
|
73715
|
+
kind: "validation",
|
|
73716
|
+
message: `Model profile "${name}" shadows a model catalog entry of the same name`,
|
|
73717
|
+
path: `model_profiles.${name}`
|
|
73718
|
+
}]);
|
|
73719
|
+
}
|
|
73720
|
+
function profileSpliceDiagnostics(section, definitions, profileNames) {
|
|
73721
|
+
if (definitions === undefined || profileNames.size === 0)
|
|
73722
|
+
return [];
|
|
73723
|
+
return Object.entries(definitions).flatMap(([name, definition]) => (definition.models ?? []).flatMap((entry, index) => typeof entry !== "string" || !profileNames.has(entry) ? [] : [{
|
|
73724
|
+
kind: "validation",
|
|
73725
|
+
message: `"${entry}" is a model profile; splicing a profile into a category chain is not supported yet`,
|
|
73726
|
+
path: `${section}.${name}.models.${index}`
|
|
73727
|
+
}]));
|
|
73728
|
+
}
|
|
73729
|
+
function modelProfileDiagnostics(view) {
|
|
73730
|
+
const profileNames = new Set(Object.keys(view.model_profiles ?? {}));
|
|
73731
|
+
return [
|
|
73732
|
+
...profileShadowDiagnostics(view),
|
|
73733
|
+
...profileSpliceDiagnostics("categories", view.categories, profileNames),
|
|
73734
|
+
...profileSpliceDiagnostics("agents", view.agents, profileNames)
|
|
73735
|
+
];
|
|
73736
|
+
}
|
|
73645
73737
|
function cycleDiagnostics(catalog) {
|
|
73646
73738
|
if (catalog === undefined)
|
|
73647
73739
|
return [];
|
|
@@ -73652,9 +73744,10 @@ function cycleDiagnostics(catalog) {
|
|
|
73652
73744
|
}));
|
|
73653
73745
|
}
|
|
73654
73746
|
function resolveModelReferences(view) {
|
|
73655
|
-
const
|
|
73747
|
+
const cycles = cycleDiagnostics(view.models);
|
|
73748
|
+
const diagnostics = [...cycles, ...modelProfileDiagnostics(view)];
|
|
73656
73749
|
const cycleNames = new Set;
|
|
73657
|
-
for (const diagnostic of
|
|
73750
|
+
for (const diagnostic of cycles) {
|
|
73658
73751
|
const name = diagnostic.path.split(".")[1];
|
|
73659
73752
|
if (name !== undefined)
|
|
73660
73753
|
cycleNames.add(name);
|
|
@@ -73667,12 +73760,17 @@ function resolveModelReferences(view) {
|
|
|
73667
73760
|
name,
|
|
73668
73761
|
resolveCategoryDefinition(definition, view.models, cycleNames)
|
|
73669
73762
|
]));
|
|
73763
|
+
const modelProfiles = view.model_profiles === undefined ? undefined : Object.fromEntries(Object.entries(view.model_profiles).map(([name, definition]) => [
|
|
73764
|
+
name,
|
|
73765
|
+
resolveModelProfile(definition, view.models, cycleNames)
|
|
73766
|
+
]));
|
|
73670
73767
|
return {
|
|
73671
73768
|
diagnostics,
|
|
73672
73769
|
view: {
|
|
73673
73770
|
...view,
|
|
73674
73771
|
...agents === undefined ? {} : { agents },
|
|
73675
|
-
...categories === undefined ? {} : { categories }
|
|
73772
|
+
...categories === undefined ? {} : { categories },
|
|
73773
|
+
...modelProfiles === undefined ? {} : { model_profiles: modelProfiles }
|
|
73676
73774
|
}
|
|
73677
73775
|
};
|
|
73678
73776
|
}
|
|
@@ -77007,7 +77105,7 @@ function shouldRetainLine(line, cutoffMs) {
|
|
|
77007
77105
|
function parseDiagnosticLine(line) {
|
|
77008
77106
|
try {
|
|
77009
77107
|
const parsed = JSON.parse(line);
|
|
77010
|
-
if (!
|
|
77108
|
+
if (!isRecord11(parsed)) {
|
|
77011
77109
|
return null;
|
|
77012
77110
|
}
|
|
77013
77111
|
return parsed;
|
|
@@ -77018,7 +77116,7 @@ function parseDiagnosticLine(line) {
|
|
|
77018
77116
|
throw error;
|
|
77019
77117
|
}
|
|
77020
77118
|
}
|
|
77021
|
-
function
|
|
77119
|
+
function isRecord11(value) {
|
|
77022
77120
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
77023
77121
|
}
|
|
77024
77122
|
function trimToMaxBytes(lines) {
|
|
@@ -82392,7 +82490,7 @@ function coerceBool(value) {
|
|
|
82392
82490
|
function coerceString(value) {
|
|
82393
82491
|
return typeof value == "string" ? value : undefined;
|
|
82394
82492
|
}
|
|
82395
|
-
function
|
|
82493
|
+
function isRecord12(value) {
|
|
82396
82494
|
return typeof value == "object" && value !== null && !Array.isArray(value);
|
|
82397
82495
|
}
|
|
82398
82496
|
function toRfc3339(timestamp) {
|
|
@@ -82414,7 +82512,7 @@ function relocateInto(properties, key, value) {
|
|
|
82414
82512
|
properties[key] = value;
|
|
82415
82513
|
}
|
|
82416
82514
|
function buildV1Event(message) {
|
|
82417
|
-
const sourceProperties =
|
|
82515
|
+
const sourceProperties = isRecord12(message.properties) ? message.properties : {};
|
|
82418
82516
|
const properties = {
|
|
82419
82517
|
...sourceProperties
|
|
82420
82518
|
};
|
|
@@ -84444,7 +84542,7 @@ var package_default2;
|
|
|
84444
84542
|
var init_package2 = __esm(() => {
|
|
84445
84543
|
package_default2 = {
|
|
84446
84544
|
name: "@oh-my-opencode/omo-codex",
|
|
84447
|
-
version: "5.0.0-beta.
|
|
84545
|
+
version: "5.0.0-beta.54",
|
|
84448
84546
|
type: "module",
|
|
84449
84547
|
private: true,
|
|
84450
84548
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -90493,10 +90591,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
|
|
|
90493
90591
|
} catch {
|
|
90494
90592
|
return null;
|
|
90495
90593
|
}
|
|
90496
|
-
if (!
|
|
90594
|
+
if (!isRecord10(cache) || !Array.isArray(cache.models))
|
|
90497
90595
|
return null;
|
|
90498
90596
|
for (const entry of cache.models) {
|
|
90499
|
-
if (!
|
|
90597
|
+
if (!isRecord10(entry))
|
|
90500
90598
|
continue;
|
|
90501
90599
|
if (entry.slug !== model && entry.id !== model)
|
|
90502
90600
|
continue;
|
|
@@ -90521,7 +90619,7 @@ function readRootModelCatalogPath(config) {
|
|
|
90521
90619
|
const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
|
|
90522
90620
|
return single?.[1] ?? null;
|
|
90523
90621
|
}
|
|
90524
|
-
function
|
|
90622
|
+
function isRecord10(value) {
|
|
90525
90623
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
90526
90624
|
}
|
|
90527
90625
|
function removeFeatureFlagSetting(config, featureName) {
|
|
@@ -93150,6 +93248,9 @@ function renderLocalLauncher(options) {
|
|
|
93150
93248
|
envPrefix: "OMO",
|
|
93151
93249
|
userAgent: "omo",
|
|
93152
93250
|
originator: "omo",
|
|
93251
|
+
changelog: {
|
|
93252
|
+
path: join57(options.pluginPath, "CHANGELOG.md")
|
|
93253
|
+
},
|
|
93153
93254
|
update: {
|
|
93154
93255
|
packageName: "omo-ai",
|
|
93155
93256
|
distTag: "beta",
|
|
@@ -93254,7 +93355,7 @@ async function readSettings(settingsPath) {
|
|
|
93254
93355
|
throw error;
|
|
93255
93356
|
}
|
|
93256
93357
|
const parsed = JSON.parse(raw);
|
|
93257
|
-
if (!
|
|
93358
|
+
if (!isRecord13(parsed))
|
|
93258
93359
|
throw new Error(`${settingsPath} must contain a JSON object`);
|
|
93259
93360
|
return parsed;
|
|
93260
93361
|
}
|
|
@@ -93315,7 +93416,7 @@ async function nextBackupPath(settingsPath) {
|
|
|
93315
93416
|
function timestampForBackup() {
|
|
93316
93417
|
return new Date().toISOString().replace(/[-:.]/g, "");
|
|
93317
93418
|
}
|
|
93318
|
-
function
|
|
93419
|
+
function isRecord13(value) {
|
|
93319
93420
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
93320
93421
|
}
|
|
93321
93422
|
async function readPackageName(packagePath) {
|
|
@@ -93335,7 +93436,7 @@ async function readPackageName(packagePath) {
|
|
|
93335
93436
|
return;
|
|
93336
93437
|
throw error;
|
|
93337
93438
|
}
|
|
93338
|
-
return
|
|
93439
|
+
return isRecord13(parsed) && typeof parsed.name === "string" ? parsed.name : undefined;
|
|
93339
93440
|
}
|
|
93340
93441
|
async function fileExists(path) {
|
|
93341
93442
|
try {
|
|
@@ -93453,7 +93554,7 @@ async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
|
|
|
93453
93554
|
}
|
|
93454
93555
|
}
|
|
93455
93556
|
function isAstGrepRuntimeManifest(value) {
|
|
93456
|
-
if (!
|
|
93557
|
+
if (!isRecord13(value))
|
|
93457
93558
|
return false;
|
|
93458
93559
|
return typeof value.sha256 === "string" && /^[a-f0-9]{64}$/.test(value.sha256) && typeof value.mode === "number" && Number.isInteger(value.mode) && typeof value.stagedAtUtc === "string" && !Number.isNaN(Date.parse(value.stagedAtUtc));
|
|
93459
93560
|
}
|
|
@@ -100692,14 +100793,14 @@ var CANONICAL_REPLACEMENT = new Map([
|
|
|
100692
100793
|
var MIGRATE_SUFFIX = ", or run: oh-my-openagent config migrate";
|
|
100693
100794
|
var TUNING_CONTAINERS = new Set(["agents", "categories", "models"]);
|
|
100694
100795
|
var PASSTHROUGH_CONTAINERS = new Set(["provider_options", "providerOptions"]);
|
|
100695
|
-
function
|
|
100796
|
+
function isRecord14(value) {
|
|
100696
100797
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
100697
100798
|
}
|
|
100698
100799
|
function isHarnessBlock(key) {
|
|
100699
100800
|
return key.startsWith("[") && key.endsWith("]");
|
|
100700
100801
|
}
|
|
100701
100802
|
function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
100702
|
-
if (!
|
|
100803
|
+
if (!isRecord14(value))
|
|
100703
100804
|
return [];
|
|
100704
100805
|
const issues = [];
|
|
100705
100806
|
for (const [key, child] of Object.entries(value)) {
|
|
@@ -100715,7 +100816,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
100715
100816
|
});
|
|
100716
100817
|
continue;
|
|
100717
100818
|
}
|
|
100718
|
-
if (!
|
|
100819
|
+
if (!isRecord14(child))
|
|
100719
100820
|
continue;
|
|
100720
100821
|
if (PASSTHROUGH_CONTAINERS.has(key))
|
|
100721
100822
|
continue;
|
|
@@ -100734,7 +100835,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
100734
100835
|
return issues;
|
|
100735
100836
|
}
|
|
100736
100837
|
function migrateFixSuffix(parsed) {
|
|
100737
|
-
if (
|
|
100838
|
+
if (isRecord14(parsed) && hasMigrationMarker(parsed, REASONING_UNIFICATION_MIGRATION_ID))
|
|
100738
100839
|
return "";
|
|
100739
100840
|
return MIGRATE_SUFFIX;
|
|
100740
100841
|
}
|
|
@@ -101972,12 +102073,12 @@ async function auditBundleTargets(pluginRoot) {
|
|
|
101972
102073
|
let referencedCount = 0;
|
|
101973
102074
|
for (const manifestPath of await findManifestPaths(pluginRoot, ".mcp.json")) {
|
|
101974
102075
|
const manifest = await readJson2(manifestPath);
|
|
101975
|
-
if (manifest === null || !
|
|
102076
|
+
if (manifest === null || !isRecord15(manifest["mcpServers"]))
|
|
101976
102077
|
continue;
|
|
101977
102078
|
const manifestRoot = dirname33(manifestPath);
|
|
101978
102079
|
const isRootManifest = resolve24(manifestRoot) === resolve24(pluginRoot);
|
|
101979
102080
|
for (const server of Object.values(manifest["mcpServers"])) {
|
|
101980
|
-
if (!
|
|
102081
|
+
if (!isRecord15(server) || !Array.isArray(server["args"]))
|
|
101981
102082
|
continue;
|
|
101982
102083
|
for (const arg of server["args"]) {
|
|
101983
102084
|
if (typeof arg !== "string" || !isPluginRuntimePathArg(arg))
|
|
@@ -102063,7 +102164,7 @@ function collectHookCommands(value, commands) {
|
|
|
102063
102164
|
collectHookCommands(item, commands);
|
|
102064
102165
|
return;
|
|
102065
102166
|
}
|
|
102066
|
-
if (!
|
|
102167
|
+
if (!isRecord15(value))
|
|
102067
102168
|
return;
|
|
102068
102169
|
if (value["type"] === "command") {
|
|
102069
102170
|
if (typeof value["command"] === "string")
|
|
@@ -102118,7 +102219,7 @@ function parseDegradedEntries(value) {
|
|
|
102118
102219
|
return [];
|
|
102119
102220
|
const entries = [];
|
|
102120
102221
|
for (const item of value) {
|
|
102121
|
-
if (!
|
|
102222
|
+
if (!isRecord15(item))
|
|
102122
102223
|
continue;
|
|
102123
102224
|
if (typeof item["component"] !== "string" || typeof item["reason"] !== "string")
|
|
102124
102225
|
continue;
|
|
@@ -102152,7 +102253,7 @@ function degradedDetailLines(entries) {
|
|
|
102152
102253
|
async function readJson2(path) {
|
|
102153
102254
|
try {
|
|
102154
102255
|
const parsed = JSON.parse(await readFile28(path, "utf8"));
|
|
102155
|
-
return
|
|
102256
|
+
return isRecord15(parsed) ? parsed : null;
|
|
102156
102257
|
} catch (error) {
|
|
102157
102258
|
if (error instanceof Error)
|
|
102158
102259
|
return null;
|
|
@@ -102173,7 +102274,7 @@ function normalizeRelative(root, target) {
|
|
|
102173
102274
|
function normalizePathSeparators(path) {
|
|
102174
102275
|
return path.split("\\").join("/");
|
|
102175
102276
|
}
|
|
102176
|
-
function
|
|
102277
|
+
function isRecord15(value) {
|
|
102177
102278
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
102178
102279
|
}
|
|
102179
102280
|
|