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-node/index.js
CHANGED
|
@@ -65,7 +65,7 @@ var package_default;
|
|
|
65
65
|
var init_package = __esm(() => {
|
|
66
66
|
package_default = {
|
|
67
67
|
name: "oh-my-opencode",
|
|
68
|
-
version: "5.0.0-beta.
|
|
68
|
+
version: "5.0.0-beta.54",
|
|
69
69
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
70
70
|
main: "./dist/index.js",
|
|
71
71
|
types: "dist/index.d.ts",
|
|
@@ -203,6 +203,7 @@ var init_package = __esm(() => {
|
|
|
203
203
|
"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",
|
|
204
204
|
"typecheck:script": "tsgo --noEmit -p script/tsconfig.json",
|
|
205
205
|
test: "bun test --timeout 20000",
|
|
206
|
+
"changelog:section": "bun script/changelog-section.ts",
|
|
206
207
|
"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",
|
|
207
208
|
"test:fast": "bun run script/test-fast.ts",
|
|
208
209
|
"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",
|
|
@@ -249,7 +250,7 @@ var init_package = __esm(() => {
|
|
|
249
250
|
zod: "^4.4.3"
|
|
250
251
|
},
|
|
251
252
|
devDependencies: {
|
|
252
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
253
|
+
"@code-yeongyu/senpi": "2026.9.11",
|
|
253
254
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
254
255
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
255
256
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -290,18 +291,18 @@ var init_package = __esm(() => {
|
|
|
290
291
|
typescript: "^7.0.2"
|
|
291
292
|
},
|
|
292
293
|
optionalDependencies: {
|
|
293
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
294
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
295
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
296
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
297
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
298
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
299
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
300
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
301
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
302
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
303
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
304
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
294
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.54",
|
|
295
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.54",
|
|
296
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.54",
|
|
297
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.54",
|
|
298
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.54",
|
|
299
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.54",
|
|
300
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.54",
|
|
301
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.54",
|
|
302
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.54",
|
|
303
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.54",
|
|
304
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.54",
|
|
305
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.54"
|
|
305
306
|
},
|
|
306
307
|
overrides: {
|
|
307
308
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -72730,7 +72731,7 @@ var init_harness = __esm(() => {
|
|
|
72730
72731
|
});
|
|
72731
72732
|
|
|
72732
72733
|
// packages/omo-config-core/src/schema/memory.ts
|
|
72733
|
-
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;
|
|
72734
|
+
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;
|
|
72734
72735
|
var init_memory = __esm(() => {
|
|
72735
72736
|
init_zod();
|
|
72736
72737
|
OmoMemoryReflectionTriggerSchema = object({
|
|
@@ -72752,9 +72753,20 @@ var init_memory = __esm(() => {
|
|
|
72752
72753
|
OmoMemorySearchSchema = object({
|
|
72753
72754
|
enabled: boolean2().default(true)
|
|
72754
72755
|
}).strict();
|
|
72756
|
+
OmoMemoryRecallEventCapsSchema = object({
|
|
72757
|
+
tool_args: number2().int().nonnegative().default(400),
|
|
72758
|
+
result_head: number2().int().nonnegative().default(600),
|
|
72759
|
+
assistant: number2().int().nonnegative().default(1500),
|
|
72760
|
+
prompt: number2().int().nonnegative().default(4000)
|
|
72761
|
+
}).strict();
|
|
72755
72762
|
OmoMemoryRecallSchema = object({
|
|
72756
72763
|
enabled: boolean2().default(true),
|
|
72757
|
-
max_items: number2().int().min(1).max(5).default(2)
|
|
72764
|
+
max_items: number2().int().min(1).max(5).default(2),
|
|
72765
|
+
category: string2().min(1).default("quick"),
|
|
72766
|
+
event_caps: OmoMemoryRecallEventCapsSchema.default({ tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 }),
|
|
72767
|
+
sidecar_max_tokens: number2().int().positive().default(48000),
|
|
72768
|
+
max_concurrent_wakes: number2().int().positive().default(2),
|
|
72769
|
+
tool_budget: number2().int().positive().default(8)
|
|
72758
72770
|
}).strict();
|
|
72759
72771
|
OmoMemoryNudgeSchema = object({
|
|
72760
72772
|
enabled: boolean2().default(true),
|
|
@@ -72802,9 +72814,20 @@ var init_memory = __esm(() => {
|
|
|
72802
72814
|
OmoMemorySearchLayerSchema = object({
|
|
72803
72815
|
enabled: boolean2().optional()
|
|
72804
72816
|
}).strict();
|
|
72817
|
+
OmoMemoryRecallEventCapsLayerSchema = object({
|
|
72818
|
+
tool_args: number2().int().nonnegative().optional(),
|
|
72819
|
+
result_head: number2().int().nonnegative().optional(),
|
|
72820
|
+
assistant: number2().int().nonnegative().optional(),
|
|
72821
|
+
prompt: number2().int().nonnegative().optional()
|
|
72822
|
+
}).strict();
|
|
72805
72823
|
OmoMemoryRecallLayerSchema = object({
|
|
72806
72824
|
enabled: boolean2().optional(),
|
|
72807
|
-
max_items: number2().int().min(1).max(5).optional()
|
|
72825
|
+
max_items: number2().int().min(1).max(5).optional(),
|
|
72826
|
+
category: string2().min(1).optional(),
|
|
72827
|
+
event_caps: OmoMemoryRecallEventCapsLayerSchema.optional(),
|
|
72828
|
+
sidecar_max_tokens: number2().int().positive().optional(),
|
|
72829
|
+
max_concurrent_wakes: number2().int().positive().optional(),
|
|
72830
|
+
tool_budget: number2().int().positive().optional()
|
|
72808
72831
|
}).strict();
|
|
72809
72832
|
OmoMemoryNudgeLayerSchema = object({
|
|
72810
72833
|
enabled: boolean2().optional(),
|
|
@@ -72874,7 +72897,15 @@ var init_memory = __esm(() => {
|
|
|
72874
72897
|
write_notice: OmoMemoryWriteNoticeSchema.default({ enabled: true }),
|
|
72875
72898
|
sync: OmoMemorySyncSchema.default({ enabled: true }),
|
|
72876
72899
|
search: OmoMemorySearchSchema.default({ enabled: true }),
|
|
72877
|
-
recall: OmoMemoryRecallSchema.default({
|
|
72900
|
+
recall: OmoMemoryRecallSchema.default({
|
|
72901
|
+
enabled: true,
|
|
72902
|
+
max_items: 2,
|
|
72903
|
+
category: "quick",
|
|
72904
|
+
event_caps: { tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 },
|
|
72905
|
+
sidecar_max_tokens: 48000,
|
|
72906
|
+
max_concurrent_wakes: 2,
|
|
72907
|
+
tool_budget: 8
|
|
72908
|
+
}),
|
|
72878
72909
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
72879
72910
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
72880
72911
|
}).strict();
|
|
@@ -72918,6 +72949,25 @@ var init_model_catalog = __esm(() => {
|
|
|
72918
72949
|
OmoModelCatalogLayerSchema = record(string2(), OmoModelCatalogEntryLayerSchema);
|
|
72919
72950
|
});
|
|
72920
72951
|
|
|
72952
|
+
// packages/omo-config-core/src/schema/model-profile.ts
|
|
72953
|
+
function isRecord8(value) {
|
|
72954
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
72955
|
+
}
|
|
72956
|
+
var OmoModelProfileInputSchema, OmoModelProfileSchema, OmoModelProfilesSchema, OmoModelProfileLayerInputSchema, OmoModelProfileLayerSchema, OmoModelProfilesLayerSchema;
|
|
72957
|
+
var init_model_profile = __esm(() => {
|
|
72958
|
+
init_zod();
|
|
72959
|
+
init_fallback_models();
|
|
72960
|
+
OmoModelProfileInputSchema = object({
|
|
72961
|
+
display_name: string2().optional(),
|
|
72962
|
+
models: array(union([string2(), OmoFallbackModelObjectSchema])).optional()
|
|
72963
|
+
}).strict();
|
|
72964
|
+
OmoModelProfileSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileInputSchema);
|
|
72965
|
+
OmoModelProfilesSchema = record(string2(), OmoModelProfileSchema);
|
|
72966
|
+
OmoModelProfileLayerInputSchema = OmoModelProfileInputSchema.partial();
|
|
72967
|
+
OmoModelProfileLayerSchema = preprocess((value) => isRecord8(value) ? normalizeLegacyModelFields(value) : value, OmoModelProfileLayerInputSchema);
|
|
72968
|
+
OmoModelProfilesLayerSchema = record(string2(), OmoModelProfileLayerSchema);
|
|
72969
|
+
});
|
|
72970
|
+
|
|
72921
72971
|
// packages/omo-config-core/src/schema/task.ts
|
|
72922
72972
|
import { availableParallelism } from "node:os";
|
|
72923
72973
|
function resolveOmoTaskSettings(input, resolveParallelism = availableParallelism) {
|
|
@@ -73110,6 +73160,7 @@ var init_config = __esm(() => {
|
|
|
73110
73160
|
init_git_master();
|
|
73111
73161
|
init_memory();
|
|
73112
73162
|
init_model_catalog();
|
|
73163
|
+
init_model_profile();
|
|
73113
73164
|
init_task();
|
|
73114
73165
|
init_team();
|
|
73115
73166
|
init_telemetry();
|
|
@@ -73123,6 +73174,8 @@ var init_config = __esm(() => {
|
|
|
73123
73174
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73124
73175
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73125
73176
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73177
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73178
|
+
model_profile: string2().optional(),
|
|
73126
73179
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73127
73180
|
telemetry: OmoTelemetrySettingsLayerSchema.optional()
|
|
73128
73181
|
}).strict();
|
|
@@ -73134,6 +73187,8 @@ var init_config = __esm(() => {
|
|
|
73134
73187
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73135
73188
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73136
73189
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73190
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73191
|
+
model_profile: string2().optional(),
|
|
73137
73192
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73138
73193
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73139
73194
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73149,6 +73204,8 @@ var init_config = __esm(() => {
|
|
|
73149
73204
|
task: OmoTaskSettingsSchema.optional(),
|
|
73150
73205
|
teams: OmoTeamsConfigSchema.optional(),
|
|
73151
73206
|
models: OmoModelCatalogSchema.optional(),
|
|
73207
|
+
model_profiles: OmoModelProfilesSchema.optional(),
|
|
73208
|
+
model_profile: string2().optional(),
|
|
73152
73209
|
memory: OmoMemorySettingsSchema.optional(),
|
|
73153
73210
|
telemetry: OmoTelemetrySettingsSchema.optional(),
|
|
73154
73211
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73167,6 +73224,8 @@ var init_config = __esm(() => {
|
|
|
73167
73224
|
task: OmoTaskSettingsLayerSchema.optional(),
|
|
73168
73225
|
teams: OmoTeamsConfigLayerSchema.optional(),
|
|
73169
73226
|
models: OmoModelCatalogLayerSchema.optional(),
|
|
73227
|
+
model_profiles: OmoModelProfilesLayerSchema.optional(),
|
|
73228
|
+
model_profile: string2().optional(),
|
|
73170
73229
|
memory: OmoMemorySettingsLayerSchema.optional(),
|
|
73171
73230
|
telemetry: OmoTelemetrySettingsLayerSchema.optional(),
|
|
73172
73231
|
"[opencode]": OmoOpenCodeHarnessConfigSchema.optional(),
|
|
@@ -73189,6 +73248,7 @@ var init_schema = __esm(() => {
|
|
|
73189
73248
|
init_harness();
|
|
73190
73249
|
init_memory();
|
|
73191
73250
|
init_model_catalog();
|
|
73251
|
+
init_model_profile();
|
|
73192
73252
|
init_model_ref();
|
|
73193
73253
|
init_task();
|
|
73194
73254
|
init_team();
|
|
@@ -73445,21 +73505,21 @@ function hasUnsafeUnrecognizedKey(issues) {
|
|
|
73445
73505
|
function hasTamperedPrototype(value) {
|
|
73446
73506
|
if (Array.isArray(value))
|
|
73447
73507
|
return value.some((entry) => hasTamperedPrototype(entry));
|
|
73448
|
-
if (!
|
|
73508
|
+
if (!isRecord9(value))
|
|
73449
73509
|
return false;
|
|
73450
73510
|
const prototype = Object.getPrototypeOf(value);
|
|
73451
73511
|
if (prototype !== Object.prototype && prototype !== null)
|
|
73452
73512
|
return true;
|
|
73453
73513
|
return Object.values(value).some((entry) => hasTamperedPrototype(entry));
|
|
73454
73514
|
}
|
|
73455
|
-
function
|
|
73515
|
+
function isRecord9(value) {
|
|
73456
73516
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
73457
73517
|
}
|
|
73458
73518
|
function containerAt(record, path) {
|
|
73459
73519
|
let container = record;
|
|
73460
73520
|
for (const segment of path) {
|
|
73461
73521
|
const next = container[segment];
|
|
73462
|
-
if (!
|
|
73522
|
+
if (!isRecord9(next))
|
|
73463
73523
|
return null;
|
|
73464
73524
|
container = next;
|
|
73465
73525
|
}
|
|
@@ -73721,6 +73781,38 @@ function resolveCategoryDefinition(definition, catalog, cycleNames) {
|
|
|
73721
73781
|
...definition.fallback_models === undefined ? {} : { fallback_models: resolveFallbackModels(definition.fallback_models, catalog, cycleNames) }
|
|
73722
73782
|
};
|
|
73723
73783
|
}
|
|
73784
|
+
function resolveModelProfile(definition, catalog, cycleNames) {
|
|
73785
|
+
return {
|
|
73786
|
+
...definition,
|
|
73787
|
+
...definition.models === undefined ? {} : { models: definition.models.map((entry) => resolveModelEntry(entry, catalog, cycleNames)) }
|
|
73788
|
+
};
|
|
73789
|
+
}
|
|
73790
|
+
function profileShadowDiagnostics(view) {
|
|
73791
|
+
if (view.model_profiles === undefined || view.models === undefined)
|
|
73792
|
+
return [];
|
|
73793
|
+
return Object.keys(view.model_profiles).flatMap((name) => view.models?.[name] === undefined ? [] : [{
|
|
73794
|
+
kind: "validation",
|
|
73795
|
+
message: `Model profile "${name}" shadows a model catalog entry of the same name`,
|
|
73796
|
+
path: `model_profiles.${name}`
|
|
73797
|
+
}]);
|
|
73798
|
+
}
|
|
73799
|
+
function profileSpliceDiagnostics(section, definitions, profileNames) {
|
|
73800
|
+
if (definitions === undefined || profileNames.size === 0)
|
|
73801
|
+
return [];
|
|
73802
|
+
return Object.entries(definitions).flatMap(([name, definition]) => (definition.models ?? []).flatMap((entry, index) => typeof entry !== "string" || !profileNames.has(entry) ? [] : [{
|
|
73803
|
+
kind: "validation",
|
|
73804
|
+
message: `"${entry}" is a model profile; splicing a profile into a category chain is not supported yet`,
|
|
73805
|
+
path: `${section}.${name}.models.${index}`
|
|
73806
|
+
}]));
|
|
73807
|
+
}
|
|
73808
|
+
function modelProfileDiagnostics(view) {
|
|
73809
|
+
const profileNames = new Set(Object.keys(view.model_profiles ?? {}));
|
|
73810
|
+
return [
|
|
73811
|
+
...profileShadowDiagnostics(view),
|
|
73812
|
+
...profileSpliceDiagnostics("categories", view.categories, profileNames),
|
|
73813
|
+
...profileSpliceDiagnostics("agents", view.agents, profileNames)
|
|
73814
|
+
];
|
|
73815
|
+
}
|
|
73724
73816
|
function cycleDiagnostics(catalog) {
|
|
73725
73817
|
if (catalog === undefined)
|
|
73726
73818
|
return [];
|
|
@@ -73731,9 +73823,10 @@ function cycleDiagnostics(catalog) {
|
|
|
73731
73823
|
}));
|
|
73732
73824
|
}
|
|
73733
73825
|
function resolveModelReferences(view) {
|
|
73734
|
-
const
|
|
73826
|
+
const cycles = cycleDiagnostics(view.models);
|
|
73827
|
+
const diagnostics = [...cycles, ...modelProfileDiagnostics(view)];
|
|
73735
73828
|
const cycleNames = new Set;
|
|
73736
|
-
for (const diagnostic of
|
|
73829
|
+
for (const diagnostic of cycles) {
|
|
73737
73830
|
const name = diagnostic.path.split(".")[1];
|
|
73738
73831
|
if (name !== undefined)
|
|
73739
73832
|
cycleNames.add(name);
|
|
@@ -73746,12 +73839,17 @@ function resolveModelReferences(view) {
|
|
|
73746
73839
|
name,
|
|
73747
73840
|
resolveCategoryDefinition(definition, view.models, cycleNames)
|
|
73748
73841
|
]));
|
|
73842
|
+
const modelProfiles = view.model_profiles === undefined ? undefined : Object.fromEntries(Object.entries(view.model_profiles).map(([name, definition]) => [
|
|
73843
|
+
name,
|
|
73844
|
+
resolveModelProfile(definition, view.models, cycleNames)
|
|
73845
|
+
]));
|
|
73749
73846
|
return {
|
|
73750
73847
|
diagnostics,
|
|
73751
73848
|
view: {
|
|
73752
73849
|
...view,
|
|
73753
73850
|
...agents === undefined ? {} : { agents },
|
|
73754
|
-
...categories === undefined ? {} : { categories }
|
|
73851
|
+
...categories === undefined ? {} : { categories },
|
|
73852
|
+
...modelProfiles === undefined ? {} : { model_profiles: modelProfiles }
|
|
73755
73853
|
}
|
|
73756
73854
|
};
|
|
73757
73855
|
}
|
|
@@ -77086,7 +77184,7 @@ function shouldRetainLine(line, cutoffMs) {
|
|
|
77086
77184
|
function parseDiagnosticLine(line) {
|
|
77087
77185
|
try {
|
|
77088
77186
|
const parsed = JSON.parse(line);
|
|
77089
|
-
if (!
|
|
77187
|
+
if (!isRecord11(parsed)) {
|
|
77090
77188
|
return null;
|
|
77091
77189
|
}
|
|
77092
77190
|
return parsed;
|
|
@@ -77097,7 +77195,7 @@ function parseDiagnosticLine(line) {
|
|
|
77097
77195
|
throw error;
|
|
77098
77196
|
}
|
|
77099
77197
|
}
|
|
77100
|
-
function
|
|
77198
|
+
function isRecord11(value) {
|
|
77101
77199
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
77102
77200
|
}
|
|
77103
77201
|
function trimToMaxBytes(lines) {
|
|
@@ -82471,7 +82569,7 @@ function coerceBool(value) {
|
|
|
82471
82569
|
function coerceString(value) {
|
|
82472
82570
|
return typeof value == "string" ? value : undefined;
|
|
82473
82571
|
}
|
|
82474
|
-
function
|
|
82572
|
+
function isRecord12(value) {
|
|
82475
82573
|
return typeof value == "object" && value !== null && !Array.isArray(value);
|
|
82476
82574
|
}
|
|
82477
82575
|
function toRfc3339(timestamp) {
|
|
@@ -82493,7 +82591,7 @@ function relocateInto(properties, key, value) {
|
|
|
82493
82591
|
properties[key] = value;
|
|
82494
82592
|
}
|
|
82495
82593
|
function buildV1Event(message) {
|
|
82496
|
-
const sourceProperties =
|
|
82594
|
+
const sourceProperties = isRecord12(message.properties) ? message.properties : {};
|
|
82497
82595
|
const properties = {
|
|
82498
82596
|
...sourceProperties
|
|
82499
82597
|
};
|
|
@@ -84523,7 +84621,7 @@ var package_default2;
|
|
|
84523
84621
|
var init_package2 = __esm(() => {
|
|
84524
84622
|
package_default2 = {
|
|
84525
84623
|
name: "@oh-my-opencode/omo-codex",
|
|
84526
|
-
version: "5.0.0-beta.
|
|
84624
|
+
version: "5.0.0-beta.54",
|
|
84527
84625
|
type: "module",
|
|
84528
84626
|
private: true,
|
|
84529
84627
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -90572,10 +90670,10 @@ function readCatalogMultiAgentVersion(model, cachePath) {
|
|
|
90572
90670
|
} catch {
|
|
90573
90671
|
return null;
|
|
90574
90672
|
}
|
|
90575
|
-
if (!
|
|
90673
|
+
if (!isRecord10(cache) || !Array.isArray(cache.models))
|
|
90576
90674
|
return null;
|
|
90577
90675
|
for (const entry of cache.models) {
|
|
90578
|
-
if (!
|
|
90676
|
+
if (!isRecord10(entry))
|
|
90579
90677
|
continue;
|
|
90580
90678
|
if (entry.slug !== model && entry.id !== model)
|
|
90581
90679
|
continue;
|
|
@@ -90600,7 +90698,7 @@ function readRootModelCatalogPath(config) {
|
|
|
90600
90698
|
const single = config.match(/^\s*model_catalog_json\s*=\s*'([^']+)'/m);
|
|
90601
90699
|
return single?.[1] ?? null;
|
|
90602
90700
|
}
|
|
90603
|
-
function
|
|
90701
|
+
function isRecord10(value) {
|
|
90604
90702
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
90605
90703
|
}
|
|
90606
90704
|
function removeFeatureFlagSetting(config, featureName) {
|
|
@@ -93229,6 +93327,9 @@ function renderLocalLauncher(options) {
|
|
|
93229
93327
|
envPrefix: "OMO",
|
|
93230
93328
|
userAgent: "omo",
|
|
93231
93329
|
originator: "omo",
|
|
93330
|
+
changelog: {
|
|
93331
|
+
path: join57(options.pluginPath, "CHANGELOG.md")
|
|
93332
|
+
},
|
|
93232
93333
|
update: {
|
|
93233
93334
|
packageName: "omo-ai",
|
|
93234
93335
|
distTag: "beta",
|
|
@@ -93333,7 +93434,7 @@ async function readSettings(settingsPath) {
|
|
|
93333
93434
|
throw error;
|
|
93334
93435
|
}
|
|
93335
93436
|
const parsed = JSON.parse(raw);
|
|
93336
|
-
if (!
|
|
93437
|
+
if (!isRecord13(parsed))
|
|
93337
93438
|
throw new Error(`${settingsPath} must contain a JSON object`);
|
|
93338
93439
|
return parsed;
|
|
93339
93440
|
}
|
|
@@ -93394,7 +93495,7 @@ async function nextBackupPath(settingsPath) {
|
|
|
93394
93495
|
function timestampForBackup() {
|
|
93395
93496
|
return new Date().toISOString().replace(/[-:.]/g, "");
|
|
93396
93497
|
}
|
|
93397
|
-
function
|
|
93498
|
+
function isRecord13(value) {
|
|
93398
93499
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
93399
93500
|
}
|
|
93400
93501
|
async function readPackageName(packagePath) {
|
|
@@ -93414,7 +93515,7 @@ async function readPackageName(packagePath) {
|
|
|
93414
93515
|
return;
|
|
93415
93516
|
throw error;
|
|
93416
93517
|
}
|
|
93417
|
-
return
|
|
93518
|
+
return isRecord13(parsed) && typeof parsed.name === "string" ? parsed.name : undefined;
|
|
93418
93519
|
}
|
|
93419
93520
|
async function fileExists(path) {
|
|
93420
93521
|
try {
|
|
@@ -93532,7 +93633,7 @@ async function verifyAstGrepRuntimeIntegrity(pluginPath, platform) {
|
|
|
93532
93633
|
}
|
|
93533
93634
|
}
|
|
93534
93635
|
function isAstGrepRuntimeManifest(value) {
|
|
93535
|
-
if (!
|
|
93636
|
+
if (!isRecord13(value))
|
|
93536
93637
|
return false;
|
|
93537
93638
|
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));
|
|
93538
93639
|
}
|
|
@@ -100771,14 +100872,14 @@ var CANONICAL_REPLACEMENT = new Map([
|
|
|
100771
100872
|
var MIGRATE_SUFFIX = ", or run: oh-my-openagent config migrate";
|
|
100772
100873
|
var TUNING_CONTAINERS = new Set(["agents", "categories", "models"]);
|
|
100773
100874
|
var PASSTHROUGH_CONTAINERS = new Set(["provider_options", "providerOptions"]);
|
|
100774
|
-
function
|
|
100875
|
+
function isRecord14(value) {
|
|
100775
100876
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
100776
100877
|
}
|
|
100777
100878
|
function isHarnessBlock(key) {
|
|
100778
100879
|
return key.startsWith("[") && key.endsWith("]");
|
|
100779
100880
|
}
|
|
100780
100881
|
function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
100781
|
-
if (!
|
|
100882
|
+
if (!isRecord14(value))
|
|
100782
100883
|
return [];
|
|
100783
100884
|
const issues = [];
|
|
100784
100885
|
for (const [key, child] of Object.entries(value)) {
|
|
@@ -100794,7 +100895,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
100794
100895
|
});
|
|
100795
100896
|
continue;
|
|
100796
100897
|
}
|
|
100797
|
-
if (!
|
|
100898
|
+
if (!isRecord14(child))
|
|
100798
100899
|
continue;
|
|
100799
100900
|
if (PASSTHROUGH_CONTAINERS.has(key))
|
|
100800
100901
|
continue;
|
|
@@ -100813,7 +100914,7 @@ function collectIssues(configPath, value, prefix, fixSuffix) {
|
|
|
100813
100914
|
return issues;
|
|
100814
100915
|
}
|
|
100815
100916
|
function migrateFixSuffix(parsed) {
|
|
100816
|
-
if (
|
|
100917
|
+
if (isRecord14(parsed) && hasMigrationMarker(parsed, REASONING_UNIFICATION_MIGRATION_ID))
|
|
100817
100918
|
return "";
|
|
100818
100919
|
return MIGRATE_SUFFIX;
|
|
100819
100920
|
}
|
|
@@ -102051,12 +102152,12 @@ async function auditBundleTargets(pluginRoot) {
|
|
|
102051
102152
|
let referencedCount = 0;
|
|
102052
102153
|
for (const manifestPath of await findManifestPaths(pluginRoot, ".mcp.json")) {
|
|
102053
102154
|
const manifest = await readJson2(manifestPath);
|
|
102054
|
-
if (manifest === null || !
|
|
102155
|
+
if (manifest === null || !isRecord15(manifest["mcpServers"]))
|
|
102055
102156
|
continue;
|
|
102056
102157
|
const manifestRoot = dirname33(manifestPath);
|
|
102057
102158
|
const isRootManifest = resolve24(manifestRoot) === resolve24(pluginRoot);
|
|
102058
102159
|
for (const server of Object.values(manifest["mcpServers"])) {
|
|
102059
|
-
if (!
|
|
102160
|
+
if (!isRecord15(server) || !Array.isArray(server["args"]))
|
|
102060
102161
|
continue;
|
|
102061
102162
|
for (const arg of server["args"]) {
|
|
102062
102163
|
if (typeof arg !== "string" || !isPluginRuntimePathArg(arg))
|
|
@@ -102142,7 +102243,7 @@ function collectHookCommands(value, commands) {
|
|
|
102142
102243
|
collectHookCommands(item, commands);
|
|
102143
102244
|
return;
|
|
102144
102245
|
}
|
|
102145
|
-
if (!
|
|
102246
|
+
if (!isRecord15(value))
|
|
102146
102247
|
return;
|
|
102147
102248
|
if (value["type"] === "command") {
|
|
102148
102249
|
if (typeof value["command"] === "string")
|
|
@@ -102197,7 +102298,7 @@ function parseDegradedEntries(value) {
|
|
|
102197
102298
|
return [];
|
|
102198
102299
|
const entries = [];
|
|
102199
102300
|
for (const item of value) {
|
|
102200
|
-
if (!
|
|
102301
|
+
if (!isRecord15(item))
|
|
102201
102302
|
continue;
|
|
102202
102303
|
if (typeof item["component"] !== "string" || typeof item["reason"] !== "string")
|
|
102203
102304
|
continue;
|
|
@@ -102231,7 +102332,7 @@ function degradedDetailLines(entries) {
|
|
|
102231
102332
|
async function readJson2(path) {
|
|
102232
102333
|
try {
|
|
102233
102334
|
const parsed = JSON.parse(await readFile28(path, "utf8"));
|
|
102234
|
-
return
|
|
102335
|
+
return isRecord15(parsed) ? parsed : null;
|
|
102235
102336
|
} catch (error) {
|
|
102236
102337
|
if (error instanceof Error)
|
|
102237
102338
|
return null;
|
|
@@ -102252,7 +102353,7 @@ function normalizeRelative(root, target) {
|
|
|
102252
102353
|
function normalizePathSeparators(path) {
|
|
102253
102354
|
return path.split("\\").join("/");
|
|
102254
102355
|
}
|
|
102255
|
-
function
|
|
102356
|
+
function isRecord15(value) {
|
|
102256
102357
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
102257
102358
|
}
|
|
102258
102359
|
|