lazycodex-ai 5.0.0-beta.8 → 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/README.ja.md +66 -61
- package/README.ko.md +67 -62
- package/README.md +108 -182
- package/README.ru.md +63 -61
- package/README.zh-cn.md +62 -61
- package/dist/cli/config-manager/parse-opencode-config-file.d.ts +2 -1
- package/dist/cli/doctor/checks/browser-provider.d.ts +2 -0
- package/dist/cli/doctor/checks/index.d.ts +2 -0
- package/dist/cli/doctor/checks/latest-version.d.ts +11 -0
- package/dist/cli/doctor/checks/system-plugin.d.ts +4 -3
- package/dist/cli/doctor/framework/constants.d.ts +5 -0
- package/dist/cli/doctor/framework/types.d.ts +2 -0
- package/dist/cli/fallback-lane-policy.d.ts +1 -0
- package/dist/cli/index.js +50191 -58043
- package/dist/cli/install-codex/install-codex-test-fixtures.d.ts +1 -1
- package/dist/cli/run/on-complete-hook.d.ts +2 -0
- package/dist/cli/runtime-commands.d.ts +1 -1
- package/dist/cli/worktree-sweep/classify.d.ts +16 -0
- package/dist/cli/worktree-sweep/format.d.ts +8 -0
- package/dist/cli/worktree-sweep/git.d.ts +19 -0
- package/dist/cli/worktree-sweep/index.d.ts +7 -0
- package/dist/cli/worktree-sweep/options.d.ts +2 -0
- package/dist/cli/worktree-sweep/parse-worktree-list.d.ts +8 -0
- package/dist/cli/worktree-sweep/sweep.d.ts +2 -0
- package/dist/cli/worktree-sweep/types.d.ts +65 -0
- package/dist/cli/worktree-sweep/worktree-sweep.d.ts +2 -0
- package/dist/cli-node/index.js +51708 -59537
- package/package.json +8 -10
- package/packages/git-bash-mcp/dist/cli.js +6 -1
- package/packages/lsp-daemon/dist/cli.js +904 -479
- package/packages/lsp-daemon/dist/client.d.ts +10 -0
- package/packages/lsp-daemon/dist/client.js +922 -493
- package/packages/lsp-daemon/dist/daemon-client.d.ts +1 -0
- package/packages/lsp-daemon/dist/daemon-client.js +3 -0
- package/packages/lsp-daemon/dist/ensure-daemon.d.ts +6 -1
- package/packages/lsp-daemon/dist/ensure-daemon.js +10 -2
- package/packages/lsp-daemon/dist/index.js +826 -402
- package/packages/lsp-daemon/dist/ownership.js +2 -2
- package/packages/lsp-daemon/dist/proxy.js +3 -0
- package/packages/lsp-daemon/dist/version-reap.js +1 -1
- package/packages/lsp-daemon/package.json +1 -1
- package/packages/lsp-tools-mcp/dist/cli.js +764 -341
- package/packages/lsp-tools-mcp/dist/lsp/manager.js +274 -138
- package/packages/lsp-tools-mcp/dist/mcp.js +789 -368
- package/packages/lsp-tools-mcp/dist/request-context.js +12 -13
- package/packages/lsp-tools-mcp/dist/tools.js +719 -302
- package/packages/lsp-tools-mcp/package.json +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +4 -6
- package/packages/omo-codex/plugin/.mcp.json +0 -6
- package/packages/omo-codex/plugin/AGENTS.md +47 -0
- package/packages/omo-codex/plugin/README.md +6 -2
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +7175 -408
- 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/bootstrap/src/hook.ts +1 -0
- package/packages/omo-codex/plugin/components/bootstrap/src/setup.ts +7 -1
- package/packages/omo-codex/plugin/components/comment-checker/AGENTS.md +9 -0
- package/packages/omo-codex/plugin/components/comment-checker/biome.json +2 -2
- package/packages/omo-codex/plugin/components/comment-checker/dist/cli.js +2 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +5 -5
- package/packages/omo-codex/plugin/components/comment-checker/src/apply-patch.ts +2 -8
- package/packages/omo-codex/plugin/components/comment-checker/src/core.ts +1 -2
- package/packages/omo-codex/plugin/components/comment-checker/src/request-extractor.ts +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/src/runner.ts +1 -0
- package/packages/omo-codex/plugin/components/git-bash/AGENTS.md +1 -1
- package/packages/omo-codex/plugin/components/git-bash/dist/cli.js +1 -1
- package/packages/omo-codex/plugin/components/git-bash/dist/codex-hook.js +2 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +3 -4
- package/packages/omo-codex/plugin/components/git-bash/src/codex-hook.ts +2 -1
- package/packages/omo-codex/plugin/components/git-bash/test/codex-hook.test.ts +6 -7
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/AGENTS.md +2 -2
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/biome.json +2 -2
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/directive.md +2 -0
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/cli.js +36 -29
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/codex-hook.js +32 -26
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/dist/types.d.ts +3 -0
- 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 +5 -5
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/codex-hook.ts +32 -28
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/src/types.ts +3 -0
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/cli.test.ts +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/test/codex-hook.test.ts +137 -28
- package/packages/omo-codex/plugin/components/lcx/skills/lcx-doctor/SKILL.md +4 -2
- package/packages/omo-codex/plugin/components/lsp/AGENTS.md +30 -15
- package/packages/omo-codex/plugin/components/lsp/biome.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +4 -4
- package/packages/omo-codex/plugin/components/lsp/dist/cli.js +943 -540
- package/packages/omo-codex/plugin/components/lsp/dist/daemon-cli-path.js +1 -1
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +5 -5
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +1 -1
- package/packages/omo-codex/plugin/components/lsp/src/daemon-cli-path.ts +1 -5
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +6 -7
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook.test.ts +1 -2
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +11 -1
- package/packages/omo-codex/plugin/components/rules/AGENTS.md +12 -0
- package/packages/omo-codex/plugin/components/rules/README.md +2 -0
- package/packages/omo-codex/plugin/components/rules/biome.json +2 -2
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus/gpt-6.md +123 -0
- package/packages/omo-codex/plugin/components/rules/dist/cli.js +91 -68
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +7 -7
- package/packages/omo-codex/plugin/components/rules/src/config.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/src/persistent-cache.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +15 -5
- package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +1 -4
- package/packages/omo-codex/plugin/components/rules/src/static-injection.ts +4 -9
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules-priority.test.ts +11 -16
- package/packages/omo-codex/plugin/components/rules/test/bundled-rules.test.ts +17 -25
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-budget.test.ts +9 -7
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-context.test.ts +0 -6
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-dedup.test.ts +6 -4
- package/packages/omo-codex/plugin/components/rules/test/codex-hook-post-compact-directive.test.ts +12 -9
- package/packages/omo-codex/plugin/components/rules/test/codex-hook.test.ts +28 -37
- package/packages/omo-codex/plugin/components/rules/test/dynamic-target-fingerprints.test.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/test/engine.test.ts +7 -4
- package/packages/omo-codex/plugin/components/rules/test/finder.test.ts +2 -3
- package/packages/omo-codex/plugin/components/rules/test/formatter.test.ts +39 -72
- package/packages/omo-codex/plugin/components/rules/test/hephaestus-model-variant.test.ts +38 -3
- package/packages/omo-codex/plugin/components/rules/test/hook-output.test.ts +2 -3
- package/packages/omo-codex/plugin/components/rules/test/matcher.test.ts +2 -3
- package/packages/omo-codex/plugin/components/rules/test/package-smoke.test.ts +1 -1
- package/packages/omo-codex/plugin/components/rules/test/parser.test.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/test/post-compact-budget.test.ts +29 -6
- package/packages/omo-codex/plugin/components/rules/test/rules-engine-consumption.test.ts +3 -6
- package/packages/omo-codex/plugin/components/rules/test/scanner.test.ts +1 -2
- package/packages/omo-codex/plugin/components/rules/test/sources.test.ts +2 -5
- package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +2 -17
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +5 -5
- package/packages/omo-codex/plugin/components/teammode/test/thread-title-hook.test.ts +4 -10
- package/packages/omo-codex/plugin/components/telemetry/AGENTS.md +8 -0
- package/packages/omo-codex/plugin/components/telemetry/biome.json +2 -2
- package/packages/omo-codex/plugin/components/telemetry/dist/cli.js +2470 -701
- package/packages/omo-codex/plugin/components/telemetry/dist/posthog.js +2488 -720
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +5 -5
- package/packages/omo-codex/plugin/components/telemetry/src/codex-hook.ts +1 -4
- package/packages/omo-codex/plugin/components/telemetry/src/posthog.ts +4 -14
- package/packages/omo-codex/plugin/components/telemetry/src/product-identity.ts +1 -1
- package/packages/omo-codex/plugin/components/telemetry/test/diagnostics.test.ts +2 -5
- package/packages/omo-codex/plugin/components/ultrawork/AGENTS.md +10 -4
- package/packages/omo-codex/plugin/components/ultrawork/README.md +2 -0
- package/packages/omo-codex/plugin/components/ultrawork/agents/explorer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-clone-fidelity-reviewer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-code-reviewer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-gate-reviewer.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-qa-executor.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-high.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-low.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/lazycodex-worker-medium.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/librarian.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/metis.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/momus.toml +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +4 -4
- package/packages/omo-codex/plugin/components/ultrawork/biome.json +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/dist/cli.js +500 -4
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +5 -6
- package/packages/omo-codex/plugin/components/ultrawork/scripts/sync-directive.mjs +30 -14
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/SKILL.md +4 -5
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/full-workflow.md +5 -5
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/packages/omo-codex/plugin/components/ultrawork/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -0
- package/packages/omo-codex/plugin/components/ultrawork/src/directive-content.ts +4 -0
- package/packages/omo-codex/plugin/components/ultrawork/src/directive.ts +5 -2
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook-trigger-policy.test.ts +9 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/codex-hook.test.ts +0 -136
- package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +14 -8
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +12 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/skill-pointer.test.ts +0 -2
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/AGENTS.md +4 -4
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/NOTICE +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/README.md +6 -6
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/biome.json +2 -2
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/directive.md +11 -11
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/dist/cli.js +16 -16
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +16 -0
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/package.json +12 -12
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/boulder-reader.ts +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/cli.ts +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/codex-hook.ts +4 -4
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/directive.ts +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/index.ts +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/types.ts +1 -1
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/boulder-reader.test.ts +3 -3
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/cli.test.ts +4 -11
- package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/codex-hook.test.ts +24 -22
- package/packages/omo-codex/plugin/components/ulw-loop/AGENTS.md +19 -0
- package/packages/omo-codex/plugin/components/ulw-loop/CHANGELOG.md +17 -1
- package/packages/omo-codex/plugin/components/ulw-loop/README.md +12 -1
- package/packages/omo-codex/plugin/components/ulw-loop/biome.json +2 -2
- package/packages/omo-codex/plugin/components/ulw-loop/directive.md +44 -27
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.d.ts +18 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-codex-validation.js +30 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-continuation.js +10 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.d.ts +2 -5
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-reconciliation.js +5 -78
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.d.ts +12 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint-template.js +114 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.d.ts +7 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/checkpoint.js +57 -46
- 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-commands.js +21 -8
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.d.ts +2 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-output.js +12 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.d.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli-subcommands.js +40 -37
- package/packages/omo-codex/plugin/components/ulw-loop/dist/cli.js +2191 -737
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-instruction.js +28 -8
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.d.ts +8 -5
- package/packages/omo-codex/plugin/components/ulw-loop/dist/codex-goal-snapshot.js +35 -23
- package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/constants.js +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/domain-types.d.ts +25 -9
- package/packages/omo-codex/plugin/components/ulw-loop/dist/driver-objective-ack.d.ts +4 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/driver-objective-ack.js +18 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence-artifacts.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence-artifacts.js +37 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.d.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/evidence.js +24 -12
- package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.d.ts +4 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/ledger.js +39 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/paths.js +19 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.d.ts +19 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-commit.js +108 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.d.ts +6 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-crud.js +54 -25
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-goal-factory.d.ts +10 -3
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-goal-factory.js +38 -31
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.d.ts +10 -7
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-io.js +121 -100
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.d.ts +16 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-log.js +115 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.d.ts +18 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/plan-missing-recovery.js +41 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.d.ts +7 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-aggregate.js +9 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.d.ts +12 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-artifacts.js +104 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.d.ts +13 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-fields.js +65 -9
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate-verdicts.js +5 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.d.ts +4 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/quality-gate.js +72 -117
- 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 +25 -13
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/factory.js +157 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.d.ts +381 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/manifest.js +127 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.d.ts +130 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk/types.js +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.d.ts +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/sdk.js +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.d.ts +5 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-budget-io.js +67 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.d.ts +7 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-guard.js +188 -59
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-role-guard.d.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/spawn-role-guard.js +22 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.d.ts +19 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/state-lock.js +259 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.d.ts +7 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/status-next-actions.js +41 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-batch.js +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.d.ts +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-mutations.js +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering-types.d.ts +9 -1
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.d.ts +3 -2
- package/packages/omo-codex/plugin/components/ulw-loop/dist/steering.js +11 -11
- package/packages/omo-codex/plugin/components/ulw-loop/dist/stop-resume-hook.js +28 -23
- package/packages/omo-codex/plugin/components/ulw-loop/dist/success-criteria-input.d.ts +9 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/success-criteria-input.js +41 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.d.ts +19 -0
- package/packages/omo-codex/plugin/components/ulw-loop/dist/surface.js +83 -0
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +18 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +6 -6
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +7 -2
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +33 -10
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-codex-validation.ts +52 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-continuation.ts +8 -6
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-reconciliation.ts +5 -98
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint-template.ts +134 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +59 -77
- 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-commands.ts +24 -8
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-output.ts +14 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli-subcommands.ts +52 -46
- package/packages/omo-codex/plugin/components/ulw-loop/src/cli.ts +8 -6
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-instruction.ts +35 -7
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-goal-snapshot.ts +51 -33
- package/packages/omo-codex/plugin/components/ulw-loop/src/codex-hook.ts +3 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/constants.ts +1 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/domain-types.ts +27 -9
- package/packages/omo-codex/plugin/components/ulw-loop/src/driver-objective-ack.ts +20 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/evidence-artifacts.ts +45 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/evidence.ts +23 -16
- package/packages/omo-codex/plugin/components/ulw-loop/src/ledger.ts +38 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/paths.ts +32 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-commit.ts +132 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-crud.ts +67 -54
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-goal-factory.ts +63 -31
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-io.ts +140 -119
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-log.ts +112 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/plan-missing-recovery.ts +61 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-aggregate.ts +11 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-artifacts.ts +123 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-fields.ts +71 -15
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate-verdicts.ts +6 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/quality-gate.ts +92 -136
- package/packages/omo-codex/plugin/components/ulw-loop/src/review-blockers.ts +38 -13
- package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/factory.ts +218 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/manifest.ts +156 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/sdk/types.ts +143 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/sdk.ts +3 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-budget-io.ts +59 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-guard.ts +196 -52
- package/packages/omo-codex/plugin/components/ulw-loop/src/spawn-role-guard.ts +22 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/state-lock.ts +257 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/status-next-actions.ts +45 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering-batch.ts +4 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering-mutations.ts +5 -4
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering-types.ts +13 -1
- package/packages/omo-codex/plugin/components/ulw-loop/src/steering.ts +12 -10
- package/packages/omo-codex/plugin/components/ulw-loop/src/stop-resume-hook.ts +27 -22
- package/packages/omo-codex/plugin/components/ulw-loop/src/success-criteria-input.ts +56 -0
- package/packages/omo-codex/plugin/components/ulw-loop/src/surface.ts +115 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-continuation.test.ts +0 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-final.test.ts +131 -82
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint-template.test.ts +147 -0
- 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-continuation.test.ts +4 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-checkpoint.test.ts +31 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-commands.test.ts +2 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-complete-goals.test.ts +3 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-create-goals.test.ts +35 -8
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-entrypoint.test.ts +38 -4
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-json-errors.test.ts +27 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-scope-required.test.ts +144 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-status-next-actions.test.ts +185 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-steering-batch.test.ts +8 -3
- package/packages/omo-codex/plugin/components/ulw-loop/test/cli-validation-batch.test.ts +6 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-instruction.test.ts +37 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-goal-snapshot.test.ts +88 -11
- package/packages/omo-codex/plugin/components/ulw-loop/test/codex-hook.test.ts +0 -3
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/barrier.ts +13 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/cli-session.ts +4 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-child.ts +65 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-cli-qa.mjs +76 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-crash.ts +23 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-mutations.mjs +58 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/commit-writer.ts +65 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/lease-clock.ts +23 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/fixtures/quality-gate-builder.ts +9 -4
- package/packages/omo-codex/plugin/components/ulw-loop/test/guided-recovery.test.ts +67 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/package-smoke.test.ts +5 -37
- package/packages/omo-codex/plugin/components/ulw-loop/test/paths.test.ts +9 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-log.test.ts +252 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-commit-recovery.test.ts +190 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io-cross-process.test.ts +106 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-io.test.ts +74 -25
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-log-legacy-projection.test.ts +228 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/plan-log-newest.test.ts +72 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-aggregate-basics.test.ts +258 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-cap-and-dedupe.test.ts +22 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-fields-messages.test.ts +98 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-lazycodex-surface.test.ts +93 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-poisoning-cascades.test.ts +97 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-roles.test.ts +51 -2
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-senpi-surface.test.ts +131 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate-single-report.test.ts +241 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/quality-gate.test.ts +58 -3
- package/packages/omo-codex/plugin/components/ulw-loop/test/review-blockers.test.ts +9 -7
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-completed-plan.test.ts +43 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-contract.test.ts +137 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-driver-states.test.ts +174 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-dx.test.ts +219 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/sdk-session-context.test.ts +169 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-guard.test.ts +450 -7
- package/packages/omo-codex/plugin/components/ulw-loop/test/spawn-role-matrix.test.ts +113 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/state-lock.test.ts +310 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/status-next-actions-surface.test.ts +133 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/steering-batch.test.ts +12 -12
- package/packages/omo-codex/plugin/components/ulw-loop/test/steering.test.ts +12 -6
- package/packages/omo-codex/plugin/components/ulw-loop/test/stop-resume-hook.test.ts +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/surface.test.ts +74 -0
- package/packages/omo-codex/plugin/components/ulw-loop/test/ultrawork-directive.test.ts +13 -8
- package/packages/omo-codex/plugin/components/ulw-loop/vitest.config.ts +1 -0
- 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 +18 -0
- 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 +17 -0
- 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/model-catalog.json +16 -7
- package/packages/omo-codex/plugin/package-lock.json +676 -524
- package/packages/omo-codex/plugin/package.json +2 -3
- package/packages/omo-codex/plugin/scripts/AGENTS.md +39 -0
- package/packages/omo-codex/plugin/scripts/auto-update-plan.mjs +1 -2
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +0 -9
- package/packages/omo-codex/plugin/scripts/canonical-ultrawork-directive.mjs +17 -0
- package/packages/omo-codex/plugin/scripts/hook-status-message.mjs +0 -1
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/catalog.mjs +16 -7
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/multi-agent-v2-guard.mjs +8 -4
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/subagent-limit-guard.mjs +19 -90
- package/packages/omo-codex/plugin/scripts/migrate-codex-config/toml-section-editor.mjs +1 -1
- package/packages/omo-codex/plugin/scripts/sync-skills.d.mts +4 -0
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +111 -64
- package/packages/omo-codex/plugin/shared/package.json +3 -4
- package/packages/omo-codex/plugin/shared/src/config-loader.ts +2 -102
- package/packages/omo-codex/plugin/shared/src/config-migration.ts +0 -1
- package/packages/omo-codex/plugin/shared/test/config-loader.test.ts +41 -130
- package/packages/omo-codex/plugin/skills/ast-grep/AGENTS.md +51 -0
- package/packages/omo-codex/plugin/skills/ast-grep/SKILL.md +13 -1
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/AGENTS.md +62 -0
- package/packages/omo-codex/plugin/skills/coding-agent-sessions/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/data-scientist/SKILL.md +99 -239
- package/packages/omo-codex/plugin/skills/data-scientist/references/execution-surfaces.md +91 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/placement.md +74 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/polars-lane.md +95 -0
- package/packages/omo-codex/plugin/skills/data-scientist/references/uv-setup.md +1 -1
- package/packages/omo-codex/plugin/skills/data-scientist/references/visualization.md +64 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
- package/packages/omo-codex/plugin/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +3 -1
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/00-setup.md +12 -0
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/02-investigate.md +26 -5
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/go.md +15 -1
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/native-binary.md +38 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/node.md +25 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/python.md +13 -0
- package/packages/omo-codex/plugin/skills/debugging/references/runtimes/rust.md +41 -0
- package/packages/omo-codex/plugin/skills/debugging/references/scripts/dap.mjs +267 -0
- package/packages/omo-codex/plugin/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/dap.md +103 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/frida.md +193 -0
- package/packages/omo-codex/plugin/skills/debugging/references/tools/playwright-cli.md +79 -161
- package/packages/omo-codex/plugin/skills/frontend/ATTRIBUTION.md +10 -0
- package/packages/omo-codex/plugin/skills/frontend/SKILL.md +7 -3
- package/packages/omo-codex/plugin/skills/frontend/references/design/README.md +10 -2
- package/packages/omo-codex/plugin/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/ambience-skill.md +145 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/aside.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/design/interaction-skill.md +2 -0
- package/packages/omo-codex/plugin/skills/frontend/references/design/print-paged-media.md +76 -0
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/README.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/orchestration.md +1 -1
- package/packages/omo-codex/plugin/skills/frontend/references/designpowers/routing.md +5 -5
- package/packages/omo-codex/plugin/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
- package/packages/omo-codex/plugin/skills/git-master/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +20 -18
- package/packages/omo-codex/plugin/skills/lcx-doctor/SKILL.md +4 -2
- package/packages/omo-codex/plugin/skills/lsp-setup/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/programming/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +11 -9
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +11 -9
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +116 -424
- package/packages/omo-codex/plugin/skills/ultimate-browsing/ATTRIBUTION.md +32 -86
- package/packages/omo-codex/plugin/skills/ultimate-browsing/SKILL.md +32 -27
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/AGENTS.md +111 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/package.json +2 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
- package/packages/omo-codex/plugin/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/chrome-stealth.md +86 -95
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/README.md +18 -5
- package/packages/omo-codex/plugin/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
- package/packages/omo-codex/plugin/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
- package/packages/omo-codex/plugin/skills/ultrawork/SKILL.md +44 -27
- package/packages/omo-codex/plugin/skills/{start-work → ulw-execute}/SKILL.md +35 -36
- package/packages/omo-codex/plugin/skills/ulw-execute/agents/openai.yaml +2 -0
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +31 -2
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +33 -10
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +4 -5
- package/packages/omo-codex/plugin/skills/ulw-plan/references/full-workflow.md +5 -5
- package/packages/omo-codex/plugin/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/packages/omo-codex/plugin/skills/ulw-plan/scripts/scaffold-plan.mjs +1 -0
- package/packages/omo-codex/plugin/skills/ulw-research/SKILL.md +16 -9
- package/packages/omo-codex/plugin/skills/visual-qa/AGENTS.md +58 -0
- package/packages/omo-codex/plugin/skills/visual-qa/SKILL.md +10 -7
- package/packages/omo-codex/plugin/skills/visual-qa/references/browser-setup.md +75 -0
- package/packages/omo-codex/plugin/test/AGENTS.md +47 -0
- package/packages/omo-codex/plugin/test/aggregate-agents.test.mjs +19 -173
- package/packages/omo-codex/plugin/test/aggregate-hooks.test.mjs +16 -51
- package/packages/omo-codex/plugin/test/aggregate-manifest.test.mjs +2 -3
- package/packages/omo-codex/plugin/test/aggregate-mcp.test.mjs +2 -7
- package/packages/omo-codex/plugin/test/aggregate-model-catalog.test.mjs +14 -4
- package/packages/omo-codex/plugin/test/aggregate-plugin-fixture.mjs +175 -13
- package/packages/omo-codex/plugin/test/aggregate.test.mjs +78 -2
- package/packages/omo-codex/plugin/test/auto-update-release-notes.test.mjs +19 -33
- package/packages/omo-codex/plugin/test/auto-update.test.mjs +4 -29
- package/packages/omo-codex/plugin/test/bootstrap-default-role.test.mjs +66 -0
- package/packages/omo-codex/plugin/test/bootstrap-setup.test.mjs +0 -31
- package/packages/omo-codex/plugin/test/canonical-ultrawork-directive.test.mjs +53 -0
- package/packages/omo-codex/plugin/test/component-bin-names.test.mjs +2 -2
- package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +1 -51
- package/packages/omo-codex/plugin/test/component-hook-contract-cases.mjs +100 -2
- package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +5 -6
- package/packages/omo-codex/plugin/test/lcx-contribute-bug-fix-template.test.mjs +21 -27
- package/packages/omo-codex/plugin/test/mcp-research-servers.test.mjs +1 -3
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +35 -35
- package/packages/omo-codex/plugin/test/multi-agent-v2-regression.test.mjs +1 -1
- package/packages/omo-codex/plugin/test/scaffold-plan.test.mjs +0 -36
- package/packages/omo-codex/plugin/test/subagent-limit-migration.test.mjs +107 -15
- package/packages/omo-codex/plugin/test/sync-skills-codex-compatibility.test.mjs +168 -0
- package/packages/omo-codex/plugin/test/sync-skills-test-support.mjs +54 -24
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +18 -119
- package/packages/omo-codex/plugin/test/teammode-archive-ambiguity.test.mjs +0 -40
- package/packages/omo-codex/plugin/test/teammode-communication.test.mjs +6 -62
- package/packages/omo-codex/plugin/test/teammode-thread-links.test.mjs +3 -36
- package/packages/omo-codex/plugin/test/teammode-transport.test.mjs +0 -44
- package/packages/omo-codex/plugin/test/teammode-worktree.test.mjs +2 -6
- package/packages/omo-codex/plugin/test/ultrawork-skill-pointer.test.mjs +5 -5
- package/packages/omo-codex/plugin/test/ulw-plan-review-state-contract.test.mjs +0 -3
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +9832 -1445
- package/packages/{omo-codex/plugin/components/ultrawork/skills/ultrawork/SKILL.md → prompts-core/prompts/ultrawork/codex.md} +44 -34
- package/packages/shared-skills/package.json +7 -1
- package/packages/shared-skills/skill-source-filter.d.ts +16 -0
- package/packages/shared-skills/skill-source-filter.mjs +44 -0
- package/packages/shared-skills/skills/ast-grep/AGENTS.md +51 -0
- package/packages/shared-skills/skills/ast-grep/SKILL.md +13 -1
- package/packages/shared-skills/skills/coding-agent-sessions/AGENTS.md +62 -0
- package/packages/shared-skills/skills/coding-agent-sessions/SKILL.md +1 -1
- package/packages/shared-skills/skills/data-scientist/SKILL.md +99 -239
- package/packages/shared-skills/skills/data-scientist/references/execution-surfaces.md +91 -0
- package/packages/shared-skills/skills/data-scientist/references/placement.md +74 -0
- package/packages/shared-skills/skills/data-scientist/references/polars-lane.md +95 -0
- package/packages/shared-skills/skills/data-scientist/references/uv-setup.md +1 -1
- package/packages/shared-skills/skills/data-scientist/references/visualization.md +64 -0
- package/packages/shared-skills/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
- package/packages/shared-skills/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
- package/packages/shared-skills/skills/debugging/SKILL.md +3 -1
- package/packages/shared-skills/skills/debugging/references/methodology/00-setup.md +12 -0
- package/packages/shared-skills/skills/debugging/references/methodology/02-investigate.md +26 -5
- package/packages/shared-skills/skills/debugging/references/runtimes/go.md +15 -1
- package/packages/shared-skills/skills/debugging/references/runtimes/native-binary.md +38 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/node.md +25 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/python.md +13 -0
- package/packages/shared-skills/skills/debugging/references/runtimes/rust.md +41 -0
- package/packages/shared-skills/skills/debugging/references/scripts/dap.mjs +267 -0
- package/packages/shared-skills/skills/debugging/references/scripts/dap.test.ts +86 -0
- package/packages/shared-skills/skills/debugging/references/scripts/fixture-adapter.mjs +59 -0
- package/packages/shared-skills/skills/debugging/references/tools/dap.md +103 -0
- package/packages/shared-skills/skills/debugging/references/tools/frida.md +193 -0
- package/packages/shared-skills/skills/debugging/references/tools/playwright-cli.md +79 -161
- package/packages/shared-skills/skills/frontend/ATTRIBUTION.md +10 -0
- package/packages/shared-skills/skills/frontend/SKILL.md +7 -3
- package/packages/shared-skills/skills/frontend/references/design/README.md +10 -2
- package/packages/shared-skills/skills/frontend/references/design/_INDEX.md +1 -0
- package/packages/shared-skills/skills/frontend/references/design/ambience-skill.md +145 -0
- package/packages/shared-skills/skills/frontend/references/design/aside.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/clone-from-url.md +1 -1
- package/packages/shared-skills/skills/frontend/references/design/interaction-skill.md +2 -0
- package/packages/shared-skills/skills/frontend/references/design/print-paged-media.md +76 -0
- package/packages/shared-skills/skills/frontend/references/designpowers/README.md +1 -1
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-a-direction.md +1 -1
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-b-execution.md +11 -11
- package/packages/shared-skills/skills/frontend/references/designpowers/lane-d-memory.md +3 -3
- package/packages/shared-skills/skills/frontend/references/designpowers/orchestration.md +1 -1
- package/packages/shared-skills/skills/frontend/references/designpowers/routing.md +5 -5
- package/packages/shared-skills/skills/frontend/scripts/perfection/lighthouse-audit.py +2 -2
- package/packages/shared-skills/skills/git-master/SKILL.md +1 -1
- package/packages/shared-skills/skills/init-deep/SKILL.md +14 -14
- package/packages/shared-skills/skills/lsp-setup/SKILL.md +1 -1
- package/packages/shared-skills/skills/programming/SKILL.md +1 -1
- package/packages/shared-skills/skills/refactor/SKILL.md +5 -5
- package/packages/shared-skills/skills/remove-ai-slops/SKILL.md +5 -5
- package/packages/shared-skills/skills/review-work/SKILL.md +101 -419
- package/packages/shared-skills/skills/ultimate-browsing/ATTRIBUTION.md +32 -86
- package/packages/shared-skills/skills/ultimate-browsing/SKILL.md +32 -27
- package/packages/shared-skills/skills/ultimate-browsing/engine/AGENTS.md +111 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/package.json +2 -2
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_mobile_chrome.js +5 -2
- package/packages/shared-skills/skills/ultimate-browsing/engine/templates/playwright_real_chrome.js +8 -6
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_stealth.py +86 -0
- package/packages/shared-skills/skills/ultimate-browsing/engine/tests/test_playwright_templates.py +4 -7
- package/packages/shared-skills/skills/ultimate-browsing/references/chrome-stealth.md +86 -95
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/README.md +18 -5
- package/packages/shared-skills/skills/ultimate-browsing/references/insane-search/playwright.md +16 -13
- package/packages/shared-skills/skills/ultimate-browsing/scripts/extract_cookies.py +3 -3
- package/packages/shared-skills/skills/{start-work → ulw-execute}/SKILL.md +24 -22
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +5 -6
- package/packages/shared-skills/skills/ulw-plan/references/full-workflow.md +6 -5
- package/packages/shared-skills/skills/ulw-plan/references/intent-unclear.md +2 -2
- package/packages/shared-skills/skills/ulw-plan/scripts/scaffold-plan.mjs +2 -1
- package/packages/shared-skills/skills/ulw-research/SKILL.md +10 -5
- package/packages/shared-skills/skills/visual-qa/AGENTS.md +58 -0
- package/packages/shared-skills/skills/visual-qa/SKILL.md +4 -3
- package/packages/shared-skills/skills/visual-qa/references/browser-setup.md +75 -0
- package/script/qa/web-terminal-visual-qa.mjs +2 -0
- package/script/qa/xterm-live-terminal.mjs +18 -2
- package/packages/lsp-tools-mcp/dist/lsp/cleanup-errors.d.ts +0 -1
- package/packages/lsp-tools-mcp/dist/lsp/constants.d.ts +0 -1
- package/packages/lsp-tools-mcp/dist/lsp/language-mappings.d.ts +0 -1
- package/packages/lsp-tools-mcp/dist/lsp/process-signal-cleanup.d.ts +0 -1
- package/packages/lsp-tools-mcp/dist/missing-dependency-result.d.ts +0 -1
- package/packages/omo-codex/plugin/components/codegraph/AGENTS.md +0 -58
- package/packages/omo-codex/plugin/components/codegraph/NODE-RUNTIME-LICENSES.md +0 -2951
- package/packages/omo-codex/plugin/components/codegraph/NOTICE +0 -16
- package/packages/omo-codex/plugin/components/codegraph/dist/cli.js +0 -12244
- package/packages/omo-codex/plugin/components/codegraph/dist/serve.js +0 -9842
- package/packages/omo-codex/plugin/components/codegraph/package.json +0 -33
- package/packages/omo-codex/plugin/components/codegraph/src/cache-gc.ts +0 -29
- package/packages/omo-codex/plugin/components/codegraph/src/cli.ts +0 -79
- package/packages/omo-codex/plugin/components/codegraph/src/hook-input.ts +0 -33
- package/packages/omo-codex/plugin/components/codegraph/src/hook-sweep.ts +0 -25
- package/packages/omo-codex/plugin/components/codegraph/src/hook-types.ts +0 -131
- package/packages/omo-codex/plugin/components/codegraph/src/hook.ts +0 -258
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-bridge.ts +0 -309
- package/packages/omo-codex/plugin/components/codegraph/src/mcp-unavailable.ts +0 -80
- package/packages/omo-codex/plugin/components/codegraph/src/post-tool-use-hook.ts +0 -34
- package/packages/omo-codex/plugin/components/codegraph/src/serve-invocation.ts +0 -29
- package/packages/omo-codex/plugin/components/codegraph/src/serve.ts +0 -263
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-command.ts +0 -106
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-cooldown.ts +0 -145
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-hook-runtime.ts +0 -21
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-lock.ts +0 -139
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-outcome.ts +0 -15
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-paths.ts +0 -32
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-project.ts +0 -109
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker-result.ts +0 -148
- package/packages/omo-codex/plugin/components/codegraph/src/session-start-worker.ts +0 -175
- package/packages/omo-codex/plugin/components/codegraph/src/sweep-cli.ts +0 -81
- package/packages/omo-codex/plugin/components/codegraph/test/cache-gc.test.ts +0 -34
- package/packages/omo-codex/plugin/components/codegraph/test/hook-exclusion.test.ts +0 -112
- package/packages/omo-codex/plugin/components/codegraph/test/hook-registration.test.ts +0 -26
- package/packages/omo-codex/plugin/components/codegraph/test/hook-session-start-guard.test.ts +0 -160
- package/packages/omo-codex/plugin/components/codegraph/test/hook-store-upgrade.test.ts +0 -50
- package/packages/omo-codex/plugin/components/codegraph/test/hook-sweep.test.ts +0 -29
- package/packages/omo-codex/plugin/components/codegraph/test/hook.test.ts +0 -320
- package/packages/omo-codex/plugin/components/codegraph/test/mcp-bridge-fixtures.ts +0 -172
- package/packages/omo-codex/plugin/components/codegraph/test/package-runtime.test.ts +0 -91
- package/packages/omo-codex/plugin/components/codegraph/test/provisioned-node-guard.test.ts +0 -100
- package/packages/omo-codex/plugin/components/codegraph/test/serve-built-wrapper.test.ts +0 -76
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge-lifecycle.test.ts +0 -133
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-bridge.test.ts +0 -245
- package/packages/omo-codex/plugin/components/codegraph/test/serve-mcp-facade.test.ts +0 -69
- package/packages/omo-codex/plugin/components/codegraph/test/serve-node-support.test.ts +0 -43
- package/packages/omo-codex/plugin/components/codegraph/test/serve-provision.test.ts +0 -147
- package/packages/omo-codex/plugin/components/codegraph/test/serve-unavailable.test.ts +0 -175
- package/packages/omo-codex/plugin/components/codegraph/test/serve.test.ts +0 -385
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-node-support.test.ts +0 -206
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-project.test.ts +0 -58
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-state.test.ts +0 -104
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-trust-boundary.test.ts +0 -65
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-availability.test.ts +0 -106
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-cooldown.test.ts +0 -116
- package/packages/omo-codex/plugin/components/codegraph/test/session-start-worker-flow.test.ts +0 -258
- package/packages/omo-codex/plugin/components/codegraph/test/sweep-cli.test.ts +0 -56
- package/packages/omo-codex/plugin/components/codegraph/tsconfig.build.json +0 -13
- package/packages/omo-codex/plugin/components/codegraph/tsconfig.json +0 -25
- package/packages/omo-codex/plugin/components/start-work-continuation/LICENSE +0 -21
- package/packages/omo-codex/plugin/components/start-work-continuation/hooks/hooks.json +0 -28
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +0 -477
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-codegraph-init-guidance.json +0 -18
- package/packages/omo-codex/plugin/hooks/session-start-checking-codegraph-bootstrap.json +0 -17
- package/packages/omo-codex/plugin/hooks/stop-checking-start-work-continuation.json +0 -17
- package/packages/omo-codex/plugin/hooks/subagent-stop-checking-start-work-continuation.json +0 -17
- package/packages/omo-codex/plugin/scripts/migrate-omo-sot/editor.mjs +0 -125
- package/packages/omo-codex/plugin/scripts/migrate-omo-sot/jsonc.mjs +0 -43
- package/packages/omo-codex/plugin/scripts/migrate-omo-sot/scaffold.mjs +0 -29
- package/packages/omo-codex/plugin/scripts/migrate-omo-sot.mjs +0 -121
- package/packages/omo-codex/plugin/skills/data-scientist/references/common-scenarios.md +0 -176
- package/packages/omo-codex/plugin/skills/data-scientist/references/execution-templates.md +0 -197
- package/packages/omo-codex/plugin/skills/data-scientist/references/integration-patterns.md +0 -153
- package/packages/omo-codex/plugin/skills/data-scientist/references/performance-benchmarks.md +0 -37
- package/packages/omo-codex/plugin/skills/start-work/agents/openai.yaml +0 -2
- package/packages/omo-codex/plugin/skills/visual-qa/references/agent-browser-setup.md +0 -45
- package/packages/omo-codex/plugin/test/aggregate-skills.test.mjs +0 -92
- package/packages/omo-codex/plugin/test/component-codegraph-mcp-smoke.test.mjs +0 -76
- package/packages/omo-codex/plugin/test/migrate-omo-sot.test.mjs +0 -179
- package/packages/omo-codex/plugin/test/sync-skills-orchestration.test.mjs +0 -314
- package/packages/omo-codex/plugin/test/ulw-plan-scope-contract.test.mjs +0 -24
- package/packages/shared-skills/skills/data-scientist/references/common-scenarios.md +0 -176
- package/packages/shared-skills/skills/data-scientist/references/execution-templates.md +0 -197
- package/packages/shared-skills/skills/data-scientist/references/integration-patterns.md +0 -153
- package/packages/shared-skills/skills/data-scientist/references/performance-benchmarks.md +0 -37
- package/packages/shared-skills/skills/visual-qa/references/agent-browser-setup.md +0 -45
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/.gitattributes +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/CHANGELOG.md +0 -0
- /package/packages/omo-codex/plugin/components/{codegraph → ulw-execute-continuation}/LICENSE +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/src/plan-checklist.ts +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-completed.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-mixed-platforms.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/boulder-single-codex-work.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-all-done.md +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-scaffold.md +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-nested-checkboxes.md +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/test/fixtures/plan-with-unchecked.md +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.build.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/tsconfig.json +0 -0
- /package/packages/omo-codex/plugin/components/{start-work-continuation → ulw-execute-continuation}/vitest.config.ts +0 -0
|
@@ -54,8 +54,8 @@ test("#given stale root reasoning config #when ensuring config #then replaces st
|
|
|
54
54
|
assert.equal(result.match(/^model_context_window\s*=/gm)?.length, 1);
|
|
55
55
|
assert.equal(result.match(/^model_reasoning_effort\s*=/gm)?.length, 1);
|
|
56
56
|
assert.equal(result.match(/^plan_mode_reasoning_effort\s*=/gm)?.length, 1);
|
|
57
|
-
assert.match(result, /model = "gpt-
|
|
58
|
-
assert.match(result, /model_context_window =
|
|
57
|
+
assert.match(result, /model = "gpt-6-astra"/);
|
|
58
|
+
assert.match(result, /model_context_window = 600000/);
|
|
59
59
|
assert.match(result, /model_reasoning_effort = "high"/);
|
|
60
60
|
assert.match(result, /plan_mode_reasoning_effort = "xhigh"/);
|
|
61
61
|
assert.doesNotMatch(result, /gpt-5\.2/);
|
|
@@ -79,8 +79,8 @@ test("#given section settings reuse managed root keys #when ensuring config #the
|
|
|
79
79
|
].join("\n"),
|
|
80
80
|
);
|
|
81
81
|
|
|
82
|
-
assert.match(result, /^model = "gpt-
|
|
83
|
-
assert.match(result, /^model_context_window =
|
|
82
|
+
assert.match(result, /^model = "gpt-6-astra"$/m);
|
|
83
|
+
assert.match(result, /^model_context_window = 600000$/m);
|
|
84
84
|
assert.match(result, /\[model_providers\.openai\]\nmodel = "provider-scoped-value"\nmodel_context_window = 123456/);
|
|
85
85
|
assert.match(result, /\[profiles\.review\]\nmodel_reasoning_effort = "medium"\nplan_mode_reasoning_effort = "medium"/);
|
|
86
86
|
});
|
|
@@ -161,8 +161,8 @@ test("#given global and project-local stale Codex configs #when migrating #then
|
|
|
161
161
|
});
|
|
162
162
|
|
|
163
163
|
assert.deepEqual(result.changed.sort(), [join(codexHome, "config.toml"), projectConfig].sort());
|
|
164
|
-
assert.match(await readFile(join(codexHome, "config.toml"), "utf8"), /model = "gpt-
|
|
165
|
-
assert.match(await readFile(projectConfig, "utf8"), /model_context_window =
|
|
164
|
+
assert.match(await readFile(join(codexHome, "config.toml"), "utf8"), /model = "gpt-6-astra"/);
|
|
165
|
+
assert.match(await readFile(projectConfig, "utf8"), /model_context_window = 600000/);
|
|
166
166
|
});
|
|
167
167
|
|
|
168
168
|
test("#given model catalog is unavailable and stale 272k config #when migrating #then fallback catalog still upgrades it", async () => {
|
|
@@ -183,8 +183,8 @@ test("#given model catalog is unavailable and stale 272k config #when migrating
|
|
|
183
183
|
|
|
184
184
|
const content = await readFile(join(codexHome, "config.toml"), "utf8");
|
|
185
185
|
assert.deepEqual(result.changed, [join(codexHome, "config.toml")]);
|
|
186
|
-
assert.match(content, /model = "gpt-
|
|
187
|
-
assert.match(content, /model_context_window =
|
|
186
|
+
assert.match(content, /model = "gpt-6-astra"/);
|
|
187
|
+
assert.match(content, /model_context_window = 600000/);
|
|
188
188
|
});
|
|
189
189
|
|
|
190
190
|
test("#given model catalog is malformed and stale config #when migrating #then fallback catalog still upgrades it", async () => {
|
|
@@ -206,8 +206,8 @@ test("#given model catalog is malformed and stale config #when migrating #then f
|
|
|
206
206
|
|
|
207
207
|
const content = await readFile(join(codexHome, "config.toml"), "utf8");
|
|
208
208
|
assert.deepEqual(result.changed, [join(codexHome, "config.toml")]);
|
|
209
|
-
assert.match(content, /model = "gpt-
|
|
210
|
-
assert.match(content, /model_context_window =
|
|
209
|
+
assert.match(content, /model = "gpt-6-astra"/);
|
|
210
|
+
assert.match(content, /model_context_window = 600000/);
|
|
211
211
|
});
|
|
212
212
|
|
|
213
213
|
test("#given user-customized Codex model config #when migrating #then user values are preserved without root multi-agent mode", async () => {
|
|
@@ -234,16 +234,16 @@ test("#given user-customized Codex model config #when migrating #then user value
|
|
|
234
234
|
});
|
|
235
235
|
|
|
236
236
|
const content = await readFile(join(codexHome, "config.toml"), "utf8");
|
|
237
|
-
assert.deepEqual(result.changed, [
|
|
237
|
+
assert.deepEqual(result.changed, []);
|
|
238
238
|
assert.deepEqual(result.modeChanged, []);
|
|
239
239
|
assert.match(content, /model = "gpt-5\.4"/);
|
|
240
240
|
assert.match(content, /model_context_window = 123456/);
|
|
241
241
|
assert.match(content, /model_reasoning_effort = "medium"/);
|
|
242
242
|
assert.match(content, /plan_mode_reasoning_effort = "medium"/);
|
|
243
243
|
assert.doesNotMatch(content, /^\s*multi_agent_mode\s*=/m);
|
|
244
|
-
assert.
|
|
244
|
+
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
245
245
|
assert.match(content, /\[features\.multi_agent_v2\][\s\S]*?enabled = false/);
|
|
246
|
-
assert.
|
|
246
|
+
assert.doesNotMatch(content, /max_concurrent_threads_per_session\s*=/);
|
|
247
247
|
});
|
|
248
248
|
|
|
249
249
|
test("#given managed config state is malformed #when migrating #then migration ignores stale state safely", async () => {
|
|
@@ -262,7 +262,7 @@ test("#given managed config state is malformed #when migrating #then migration i
|
|
|
262
262
|
const content = await readFile(join(codexHome, "config.toml"), "utf8");
|
|
263
263
|
const state = JSON.parse(await readFile(statePath, "utf8"));
|
|
264
264
|
assert.deepEqual(result.changed, [join(codexHome, "config.toml")]);
|
|
265
|
-
assert.match(content, /model_context_window =
|
|
265
|
+
assert.match(content, /model_context_window = 600000/);
|
|
266
266
|
assert.equal(state.files[join(codexHome, "config.toml")].managed, true);
|
|
267
267
|
});
|
|
268
268
|
|
|
@@ -404,8 +404,8 @@ test("#given config already matches current catalog #when catalog version advanc
|
|
|
404
404
|
assert.equal(state.files[configPath].catalogVersion, "test.role-only");
|
|
405
405
|
const content = await readFile(configPath, "utf8");
|
|
406
406
|
assert.doesNotMatch(content, /^\s*multi_agent_mode\s*=/m);
|
|
407
|
-
assert.
|
|
408
|
-
assert.
|
|
407
|
+
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
408
|
+
assert.doesNotMatch(content, /max_concurrent_threads_per_session\s*=/);
|
|
409
409
|
});
|
|
410
410
|
|
|
411
411
|
test("#given stale Context7 placeholder MCP config #when migrating #then removes it and keeps plugin policy", async () => {
|
|
@@ -642,8 +642,8 @@ test("#given global config without multi_agent_v2 section #when full migration r
|
|
|
642
642
|
assert.deepEqual(result.modeChanged, []);
|
|
643
643
|
const content = await readFile(configPath, "utf8");
|
|
644
644
|
assert.match(content, /\[features\.multi_agent_v2\][\s\S]*?enabled = false/);
|
|
645
|
-
assert.
|
|
646
|
-
assert.
|
|
645
|
+
assert.doesNotMatch(content, /max_concurrent_threads_per_session\s*=/);
|
|
646
|
+
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
647
647
|
assert.doesNotMatch(content, /^\s*multi_agent_mode\s*=/m);
|
|
648
648
|
});
|
|
649
649
|
|
|
@@ -670,15 +670,15 @@ test("#given global config starts with inline-comment features table #when full
|
|
|
670
670
|
const content = await readFile(configPath, "utf8");
|
|
671
671
|
const parsed = parseTomlWithPython(content);
|
|
672
672
|
assert.equal("multi_agent_mode" in parsed, false);
|
|
673
|
-
assert.equal(parsed.model, "gpt-
|
|
674
|
-
assert.equal(parsed.model_context_window,
|
|
673
|
+
assert.equal(parsed.model, "gpt-6-astra");
|
|
674
|
+
assert.equal(parsed.model_context_window, 600000);
|
|
675
675
|
assert.equal(parsed.model_reasoning_effort, "high");
|
|
676
676
|
assert.equal(parsed.plan_mode_reasoning_effort, "xhigh");
|
|
677
677
|
assert.equal(parsed.features.plugins, true);
|
|
678
678
|
assert.equal("multi_agent_mode" in parsed.features, false);
|
|
679
679
|
assert.equal("model" in parsed.features, false);
|
|
680
680
|
assert.equal("model_context_window" in parsed.features, false);
|
|
681
|
-
assert.match(content, /^model = "gpt-
|
|
681
|
+
assert.match(content, /^model = "gpt-6-astra"\nmodel_context_window = 600000/m);
|
|
682
682
|
assert.doesNotMatch(content, /^\s*multi_agent_mode\s*=/m);
|
|
683
683
|
assert.match(content, /\[features\] # keep comment\nplugins = true/);
|
|
684
684
|
});
|
|
@@ -750,7 +750,7 @@ test("#given global config with forced multi_agent_v2 #when full migration runs
|
|
|
750
750
|
assert.match(content, /enabled = false/);
|
|
751
751
|
assert.doesNotMatch(content, /enabled = true/);
|
|
752
752
|
assert.match(content, /max_concurrent_threads_per_session = 10000/);
|
|
753
|
-
assert.
|
|
753
|
+
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
754
754
|
});
|
|
755
755
|
|
|
756
756
|
test("#given enabled = true with an inline comment #when forcing disable #then flips to false and preserves the comment", () => {
|
|
@@ -832,7 +832,7 @@ test("#given gpt-5.6-terra with managed disable #when model catalog prefers v2 #
|
|
|
832
832
|
"",
|
|
833
833
|
"[features.multi_agent_v2]",
|
|
834
834
|
"enabled = false",
|
|
835
|
-
"max_concurrent_threads_per_session =
|
|
835
|
+
"max_concurrent_threads_per_session = 7",
|
|
836
836
|
"",
|
|
837
837
|
].join("\n");
|
|
838
838
|
|
|
@@ -842,7 +842,7 @@ test("#given gpt-5.6-terra with managed disable #when model catalog prefers v2 #
|
|
|
842
842
|
assert.doesNotMatch(result, /openai\/codex#26753/);
|
|
843
843
|
assert.doesNotMatch(result, /Managed by LazyCodex: multi_agent_v2/);
|
|
844
844
|
assert.match(result, /\[features\.multi_agent_v2\]/);
|
|
845
|
-
assert.match(result, /max_concurrent_threads_per_session =
|
|
845
|
+
assert.match(result, /max_concurrent_threads_per_session = 7/);
|
|
846
846
|
});
|
|
847
847
|
|
|
848
848
|
test("#given gpt-5.6 v2 model with hide_spawn_agent_metadata=false #when clearing #then removes the stale metadata override", () => {
|
|
@@ -852,7 +852,7 @@ test("#given gpt-5.6 v2 model with hide_spawn_agent_metadata=false #when clearin
|
|
|
852
852
|
"[features.multi_agent_v2]",
|
|
853
853
|
"enabled = false",
|
|
854
854
|
"hide_spawn_agent_metadata = false",
|
|
855
|
-
"max_concurrent_threads_per_session =
|
|
855
|
+
"max_concurrent_threads_per_session = 7",
|
|
856
856
|
"",
|
|
857
857
|
].join("\n");
|
|
858
858
|
|
|
@@ -860,7 +860,7 @@ test("#given gpt-5.6 v2 model with hide_spawn_agent_metadata=false #when clearin
|
|
|
860
860
|
|
|
861
861
|
assert.doesNotMatch(result, /^\s*enabled\s*=\s*false/m);
|
|
862
862
|
assert.doesNotMatch(result, /^\s*hide_spawn_agent_metadata\s*=/m);
|
|
863
|
-
assert.match(result, /max_concurrent_threads_per_session =
|
|
863
|
+
assert.match(result, /max_concurrent_threads_per_session = 7/);
|
|
864
864
|
});
|
|
865
865
|
|
|
866
866
|
test("#given gpt-5.6 v2 model with hide_spawn_agent_metadata=true #when clearing #then leaves the default-matching value alone", () => {
|
|
@@ -948,7 +948,7 @@ test("#given gpt-5.6-terra managed disable #when full migration sees models_cach
|
|
|
948
948
|
assert.doesNotMatch(content, /openai\/codex#26753/);
|
|
949
949
|
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
950
950
|
assert.match(content, /max_depth = 2/);
|
|
951
|
-
assert.
|
|
951
|
+
assert.doesNotMatch(content, /max_concurrent_threads_per_session\s*=/);
|
|
952
952
|
});
|
|
953
953
|
|
|
954
954
|
test("#given config default gpt-5.5 #when SessionStart model is gpt-5.6-terra #then prefers session model and clears disable", () => {
|
|
@@ -957,7 +957,7 @@ test("#given config default gpt-5.5 #when SessionStart model is gpt-5.6-terra #t
|
|
|
957
957
|
"",
|
|
958
958
|
"[features.multi_agent_v2]",
|
|
959
959
|
"enabled = false",
|
|
960
|
-
"max_concurrent_threads_per_session =
|
|
960
|
+
"max_concurrent_threads_per_session = 7",
|
|
961
961
|
"",
|
|
962
962
|
].join("\n");
|
|
963
963
|
|
|
@@ -967,7 +967,7 @@ test("#given config default gpt-5.5 #when SessionStart model is gpt-5.6-terra #t
|
|
|
967
967
|
});
|
|
968
968
|
|
|
969
969
|
assert.doesNotMatch(result, /^\s*enabled\s*=\s*false/m);
|
|
970
|
-
assert.match(result, /max_concurrent_threads_per_session =
|
|
970
|
+
assert.match(result, /max_concurrent_threads_per_session = 7/);
|
|
971
971
|
});
|
|
972
972
|
|
|
973
973
|
test("#given SessionStart without model #when requireSessionModel is set #then skips legacy force-disable", () => {
|
|
@@ -1030,8 +1030,8 @@ test("#given legacy shorthand and no session model on hook path #when full migra
|
|
|
1030
1030
|
const parsed = parseTomlWithPython(content);
|
|
1031
1031
|
assert.doesNotMatch(content, /^\s*multi_agent_v2\s*=\s*(?:true|false)/m);
|
|
1032
1032
|
assert.equal(parsed.features.plugins, true);
|
|
1033
|
-
assert.equal(parsed.features.multi_agent_v2
|
|
1034
|
-
assert.equal(
|
|
1033
|
+
assert.equal(parsed.features.multi_agent_v2?.max_concurrent_threads_per_session, undefined);
|
|
1034
|
+
assert.equal(parsed.features.multi_agent_v2?.enabled, undefined);
|
|
1035
1035
|
});
|
|
1036
1036
|
|
|
1037
1037
|
test("#given SoT migration failure #when hook migration runs #then config.toml repair still happens", async () => {
|
|
@@ -1110,7 +1110,7 @@ test("#given config default gpt-5.5 #when full migration gets SessionStart gpt-5
|
|
|
1110
1110
|
const content = await readFile(configPath, "utf8");
|
|
1111
1111
|
assert.doesNotMatch(content, /^\s*enabled\s*=\s*false/m);
|
|
1112
1112
|
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
1113
|
-
assert.
|
|
1113
|
+
assert.doesNotMatch(content, /max_concurrent_threads_per_session\s*=/);
|
|
1114
1114
|
});
|
|
1115
1115
|
|
|
1116
1116
|
test("#given no session model and no root model #when forcing disable #then leaves the enable state untouched", () => {
|
|
@@ -1151,7 +1151,7 @@ test("#given user-modified config without root model #when full non-hook migrati
|
|
|
1151
1151
|
assert.doesNotMatch(content, /^\s*enabled\s*=\s*false/m);
|
|
1152
1152
|
assert.doesNotMatch(content, /openai\/codex#26753/);
|
|
1153
1153
|
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
1154
|
-
assert.
|
|
1154
|
+
assert.doesNotMatch(content, /max_concurrent_threads_per_session\s*=/);
|
|
1155
1155
|
});
|
|
1156
1156
|
|
|
1157
1157
|
async function canCreateSymlink(type) {
|
|
@@ -1211,8 +1211,8 @@ test("#given model_catalog_json declares a v2 model as v1 #when full migration r
|
|
|
1211
1211
|
|
|
1212
1212
|
const content = await readFile(configPath, "utf8");
|
|
1213
1213
|
assert.match(content, /enabled = false/, "explicit v1 catalog must keep the managed disable");
|
|
1214
|
-
assert.
|
|
1215
|
-
assert.
|
|
1214
|
+
assert.doesNotMatch(content, /^\s*max_threads\s*=/m, "managed agents.max_threads must be removed");
|
|
1215
|
+
assert.doesNotMatch(content, /max_concurrent_threads_per_session\s*=/);
|
|
1216
1216
|
assert.match(content, /max_depth = 2/);
|
|
1217
1217
|
});
|
|
1218
1218
|
|
|
@@ -36,7 +36,7 @@ test("#given relative model_catalog_json declares gpt-5.6 model as v1 #when migr
|
|
|
36
36
|
|
|
37
37
|
const content = await readFile(configPath, "utf8");
|
|
38
38
|
assert.match(content, /enabled = false/);
|
|
39
|
-
assert.
|
|
39
|
+
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
test("#given no SessionStart model and root gpt-5.6 model without catalog #when migrating #then clears stale V2 disable", async () => {
|
|
@@ -8,42 +8,6 @@ import { fileURLToPath, pathToFileURL } from "node:url";
|
|
|
8
8
|
const root = dirname(dirname(fileURLToPath(import.meta.url)));
|
|
9
9
|
const scriptPath = join(root, "skills", "ulw-plan", "scripts", "scaffold-plan.mjs");
|
|
10
10
|
const scriptUrl = pathToFileURL(scriptPath).href;
|
|
11
|
-
const workflowPath = join(root, "skills", "ulw-plan", "references", "full-workflow.md");
|
|
12
|
-
|
|
13
|
-
test("#given the scaffold script and the workflow reference #when compared #then every plan header the script emits is documented in full-workflow.md (no drift)", async () => {
|
|
14
|
-
// given
|
|
15
|
-
const { PLAN_SECTION_HEADERS } = await import(scriptUrl);
|
|
16
|
-
const workflow = await readFile(workflowPath, "utf8");
|
|
17
|
-
|
|
18
|
-
// then --- the script is the single source of the plan shape; the reference must document the same headers
|
|
19
|
-
assert.ok(PLAN_SECTION_HEADERS.length >= 6);
|
|
20
|
-
for (const header of PLAN_SECTION_HEADERS) {
|
|
21
|
-
assert.ok(workflow.includes(header), `full-workflow.md is missing plan header: ${header}`);
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
test("#given buildPlanSkeleton #when intent is unclear #then the human TL;DR leads the plan and surfaces the decisions veto block", async () => {
|
|
26
|
-
// given
|
|
27
|
-
const { buildPlanSkeleton, PLAN_SECTION_HEADERS } = await import(scriptUrl);
|
|
28
|
-
const plan = buildPlanSkeleton("demo", "unclear");
|
|
29
|
-
|
|
30
|
-
// then --- the human-readable summary is on top, above the AI detail
|
|
31
|
-
assert.ok(plan.indexOf("## TL;DR (For humans)") < plan.indexOf("## Scope"));
|
|
32
|
-
assert.match(plan, /Decisions I made for you/);
|
|
33
|
-
for (const header of PLAN_SECTION_HEADERS) {
|
|
34
|
-
assert.ok(plan.includes(header), `plan skeleton missing header: ${header}`);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
test("#given buildPlanSkeleton #when intent is clear #then it surfaces a decisions-to-sanity-check block instead", async () => {
|
|
39
|
-
// given
|
|
40
|
-
const { buildPlanSkeleton } = await import(scriptUrl);
|
|
41
|
-
const plan = buildPlanSkeleton("demo", "clear");
|
|
42
|
-
|
|
43
|
-
// then
|
|
44
|
-
assert.match(plan, /Decisions to sanity-check/);
|
|
45
|
-
assert.doesNotMatch(plan, /Decisions I made for you/);
|
|
46
|
-
});
|
|
47
11
|
|
|
48
12
|
test("#given resolveSafeOmoPath #when the target escapes .omo or the workspace #then it is refused (the script never escapes .omo)", async () => {
|
|
49
13
|
// given
|
|
@@ -6,6 +6,60 @@ import { join } from "node:path";
|
|
|
6
6
|
import test from "node:test";
|
|
7
7
|
|
|
8
8
|
import { migrateConfigFile } from "../scripts/migrate-codex-config.mjs";
|
|
9
|
+
import { ensureSubagentConcurrencyLimit } from "../scripts/migrate-codex-config/subagent-limit-guard.mjs";
|
|
10
|
+
|
|
11
|
+
for (const fixture of [
|
|
12
|
+
{ name: "bare", key: "max_threads", v2Key: "max_concurrent_threads_per_session", before: "", equals: "=" },
|
|
13
|
+
{ name: "double-quoted", key: '"max_threads"', v2Key: '"max_concurrent_threads_per_session"', before: "", equals: " = " },
|
|
14
|
+
{ name: "single-quoted", key: "'max_threads'", v2Key: "'max_concurrent_threads_per_session'", before: " \t", equals: "\t= " },
|
|
15
|
+
{ name: "escaped-quoted", key: '"max_thread\\u0073"', v2Key: '"max_concurrent_threads_per_sessio\\u006e"', before: "\t ", equals: " =\t" },
|
|
16
|
+
]) {
|
|
17
|
+
test(`#given ${fixture.name} thread-cap keys with varied spacing #when migrating #then removes managed values and retains user values`, () => {
|
|
18
|
+
for (const value of [1000, 16, 6, 8, 10000]) {
|
|
19
|
+
const config = [
|
|
20
|
+
"[agents]",
|
|
21
|
+
`${fixture.before}${fixture.key}${fixture.equals}${value} # cap`,
|
|
22
|
+
"max_depth = 4",
|
|
23
|
+
"[agents.explorer]",
|
|
24
|
+
'config_file = "./agents/explorer.toml"',
|
|
25
|
+
"[features.multi_agent_v2]",
|
|
26
|
+
"enabled = false",
|
|
27
|
+
`${fixture.before}${fixture.v2Key}${fixture.equals}${value} # cap`,
|
|
28
|
+
"usage_hint_enabled = false",
|
|
29
|
+
"",
|
|
30
|
+
].join("\n");
|
|
31
|
+
const result = ensureSubagentConcurrencyLimit(config, { multiAgentVersion: "v1" });
|
|
32
|
+
const expected = config
|
|
33
|
+
.replace(value === 1000 ? `${fixture.before}${fixture.key}${fixture.equals}${value} # cap\n` : "", "")
|
|
34
|
+
.replace(value === 1000 || value === 16 ? `${fixture.before}${fixture.v2Key}${fixture.equals}${value} # cap\n` : "", "");
|
|
35
|
+
assert.equal(result, expected);
|
|
36
|
+
assert.deepEqual(parseTomlWithPython(result), parseTomlWithPython(expected));
|
|
37
|
+
assert.equal(ensureSubagentConcurrencyLimit(result, { multiAgentVersion: "v1" }), result);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
test(`#given V2 and an incompatible ${fixture.name} agents cap #when migrating #then removes only the cap assignment`, () => {
|
|
42
|
+
for (const value of [1000, 6]) {
|
|
43
|
+
const config = `[agents]\n${fixture.before}${fixture.key}${fixture.equals}${value}\nmax_depth = 4\n`;
|
|
44
|
+
const result = ensureSubagentConcurrencyLimit(config, { multiAgentVersion: "v2" });
|
|
45
|
+
assert.equal(result, "[agents]\nmax_depth = 4\n");
|
|
46
|
+
assert.deepEqual(parseTomlWithPython(result), { agents: { max_depth: 4 } });
|
|
47
|
+
assert.equal(ensureSubagentConcurrencyLimit(result, { multiAgentVersion: "v2" }), result);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
test('#given verify-a4 quoted agents.max_threads=1000 #when SessionStart migrates under V2 #then removes the cap idempotently', async () => {
|
|
53
|
+
const root = await mkdtemp(join(tmpdir(), "lazycodex-verify-a4-quoted-cap-"));
|
|
54
|
+
const configPath = join(root, "config.toml");
|
|
55
|
+
await writeFile(configPath, '[agents]\n"max_threads" = 1000\n');
|
|
56
|
+
const options = { sessionModel: "gpt-6-astra", env: { CODEX_HOME: root } };
|
|
57
|
+
assert.equal((await migrateConfigFile(configPath, options)).changed, true);
|
|
58
|
+
const firstPass = await readFile(configPath, "utf8");
|
|
59
|
+
assert.deepEqual(parseTomlWithPython(firstPass).agents, {});
|
|
60
|
+
assert.equal((await migrateConfigFile(configPath, options)).changed, false);
|
|
61
|
+
assert.equal(await readFile(configPath, "utf8"), firstPass);
|
|
62
|
+
});
|
|
9
63
|
|
|
10
64
|
function parseTomlWithPython(config) {
|
|
11
65
|
const python = resolvePython();
|
|
@@ -58,18 +112,18 @@ test("#given SessionStart migration sees an inline-commented V2 cap #when migrat
|
|
|
58
112
|
const secondResult = await migrateConfigFile(configPath);
|
|
59
113
|
|
|
60
114
|
const secondPass = await readFile(configPath, "utf8");
|
|
61
|
-
assert.equal(firstResult.changed,
|
|
115
|
+
assert.equal(firstResult.changed, false);
|
|
62
116
|
assert.equal(secondResult.changed, false);
|
|
63
117
|
assert.equal(secondPass, firstPass);
|
|
64
118
|
assert.match(
|
|
65
119
|
secondPass,
|
|
66
120
|
/usage_hint_enabled = false\nmax_concurrent_threads_per_session = 7 # user cap\nshow_tool_use = false/,
|
|
67
121
|
);
|
|
68
|
-
assert.match(secondPass,
|
|
122
|
+
assert.match(secondPass, /^\s*max_threads\s*=\s*6$/m);
|
|
69
123
|
assert.match(secondPass, /max_depth = 4/);
|
|
70
124
|
assert.match(secondPass, /\[agents\.explorer\]\nconfig_file = "\.\/agents\/explorer\.toml"/);
|
|
71
125
|
assert.match(secondPass, /\[features\.multi_agent_v2\][\s\S]*?enabled = false/);
|
|
72
|
-
assert.
|
|
126
|
+
assert.match(secondPass, /^max_threads\s*=\s*6$/m);
|
|
73
127
|
});
|
|
74
128
|
|
|
75
129
|
for (const header of [
|
|
@@ -164,7 +218,7 @@ for (const fixture of [
|
|
|
164
218
|
});
|
|
165
219
|
}
|
|
166
220
|
|
|
167
|
-
test("#given multiline string contains V2 cap lookalikes #when SessionStart migrates #then
|
|
221
|
+
test("#given multiline string contains V2 cap lookalikes #when SessionStart migrates #then leaves the semantic cap absent", async () => {
|
|
168
222
|
const root = await mkdtemp(join(tmpdir(), "lazycodex-subagent-limit-multiline-lookalike-"));
|
|
169
223
|
const configPath = join(root, "config.toml");
|
|
170
224
|
await writeFile(
|
|
@@ -184,10 +238,10 @@ test("#given multiline string contains V2 cap lookalikes #when SessionStart migr
|
|
|
184
238
|
const parsed = parseTomlWithPython(content);
|
|
185
239
|
|
|
186
240
|
assert.match(parsed.notes, /max_concurrent_threads_per_session = 7/);
|
|
187
|
-
assert.equal(parsed.features.multi_agent_v2.max_concurrent_threads_per_session,
|
|
241
|
+
assert.equal(parsed.features.multi_agent_v2.max_concurrent_threads_per_session, undefined);
|
|
188
242
|
});
|
|
189
243
|
|
|
190
|
-
test("#given V2 section multiline value contains a cap lookalike #when SessionStart migrates #then
|
|
244
|
+
test("#given V2 section multiline value contains a cap lookalike #when SessionStart migrates #then leaves the cap absent", async () => {
|
|
191
245
|
const root = await mkdtemp(join(tmpdir(), "lazycodex-subagent-limit-section-multiline-lookalike-"));
|
|
192
246
|
const configPath = join(root, "config.toml");
|
|
193
247
|
await writeFile(
|
|
@@ -196,7 +250,7 @@ test("#given V2 section multiline value contains a cap lookalike #when SessionSt
|
|
|
196
250
|
'model = "gpt-5.4"',
|
|
197
251
|
"[features.multi_agent_v2]",
|
|
198
252
|
'notes = """',
|
|
199
|
-
"max_concurrent_threads_per_session =
|
|
253
|
+
"max_concurrent_threads_per_session = 16",
|
|
200
254
|
'"""',
|
|
201
255
|
"",
|
|
202
256
|
].join("\n"),
|
|
@@ -205,7 +259,8 @@ test("#given V2 section multiline value contains a cap lookalike #when SessionSt
|
|
|
205
259
|
await migrateConfigFile(configPath);
|
|
206
260
|
const parsed = parseTomlWithPython(await readFile(configPath, "utf8"));
|
|
207
261
|
|
|
208
|
-
assert.equal(parsed.features.multi_agent_v2.max_concurrent_threads_per_session,
|
|
262
|
+
assert.equal(parsed.features.multi_agent_v2.max_concurrent_threads_per_session, undefined);
|
|
263
|
+
assert.equal(parsed.features.multi_agent_v2.notes, "max_concurrent_threads_per_session = 16\n");
|
|
209
264
|
});
|
|
210
265
|
|
|
211
266
|
test("#given V2 root-dotted disable and cap #when gpt-5.6 SessionStart migrates #then removes disable and V1 agents cap", async () => {
|
|
@@ -230,7 +285,7 @@ test("#given V2 root-dotted disable and cap #when gpt-5.6 SessionStart migrates
|
|
|
230
285
|
|
|
231
286
|
assert.equal(parsed.features.multi_agent_v2.max_concurrent_threads_per_session, 7);
|
|
232
287
|
assert.equal(parsed.features.multi_agent_v2.enabled, undefined);
|
|
233
|
-
assert.equal(parsed.agents, undefined);
|
|
288
|
+
assert.equal(parsed.agents?.max_threads, undefined);
|
|
234
289
|
});
|
|
235
290
|
|
|
236
291
|
test("#given quoted dotted V1 keys under features #when SessionStart migrates #then replaces enabled without a duplicate", async () => {
|
|
@@ -312,7 +367,7 @@ test("#given gpt-5.6 session model with no models_cache and an explicit V2 cap #
|
|
|
312
367
|
assert.match(content, /max_concurrent_threads_per_session = 6/);
|
|
313
368
|
});
|
|
314
369
|
|
|
315
|
-
test("#given SessionStart config migration has no V2 cap #when migrating #then
|
|
370
|
+
test("#given SessionStart config migration has no V2 cap #when migrating #then leaves the cap unset", async () => {
|
|
316
371
|
const root = await mkdtemp(join(tmpdir(), "lazycodex-subagent-limit-missing-cap-"));
|
|
317
372
|
const configPath = join(root, "config.toml");
|
|
318
373
|
await writeFile(
|
|
@@ -329,7 +384,7 @@ test("#given SessionStart config migration has no V2 cap #when migrating #then w
|
|
|
329
384
|
await migrateConfigFile(configPath);
|
|
330
385
|
|
|
331
386
|
const content = await readFile(configPath, "utf8");
|
|
332
|
-
assert.
|
|
387
|
+
assert.doesNotMatch(content, /max_concurrent_threads_per_session\s*=/);
|
|
333
388
|
assert.doesNotMatch(content, /max_concurrent_threads_per_session = 1000/);
|
|
334
389
|
});
|
|
335
390
|
|
|
@@ -346,10 +401,47 @@ test("#given config without any model #when migrating #then does not introduce a
|
|
|
346
401
|
const content = await readFile(configPath, "utf8");
|
|
347
402
|
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
348
403
|
assert.match(content, /max_depth = 4/);
|
|
349
|
-
assert.
|
|
404
|
+
assert.doesNotMatch(content, /max_concurrent_threads_per_session\s*=/);
|
|
405
|
+
});
|
|
406
|
+
|
|
407
|
+
test("#given todo 4 cap cases #when migrating #then removes managed caps, preserves user caps, and detects gpt-6 V2", async () => {
|
|
408
|
+
const cases = [
|
|
409
|
+
{
|
|
410
|
+
name: "no limits",
|
|
411
|
+
config: 'model = "gpt-6-astra"\n',
|
|
412
|
+
assertResult(content) {
|
|
413
|
+
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
414
|
+
assert.doesNotMatch(content, /^\s*max_concurrent_threads_per_session\s*=/m);
|
|
415
|
+
},
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
name: "managed limits",
|
|
419
|
+
config: ['model = "gpt-6-astra"', 'model_reasoning_effort = "medium"', "", "[features.multi_agent_v2]", "max_concurrent_threads_per_session = 1000", "", "[agents]", "max_threads = 1000", ""].join("\n"),
|
|
420
|
+
assertResult(content) {
|
|
421
|
+
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
422
|
+
assert.doesNotMatch(content, /^\s*max_concurrent_threads_per_session\s*=/m);
|
|
423
|
+
},
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
name: "user limits",
|
|
427
|
+
config: ['model = "gpt-6-astra"', 'model_reasoning_effort = "medium"', "", "[features.multi_agent_v2]", "max_concurrent_threads_per_session = 8", "", "[agents]", "max_threads = 6", ""].join("\n"),
|
|
428
|
+
assertResult(content) {
|
|
429
|
+
assert.doesNotMatch(content, /^\s*max_threads\s*=/m);
|
|
430
|
+
assert.match(content, /^\s*max_concurrent_threads_per_session\s*=\s*8/m);
|
|
431
|
+
},
|
|
432
|
+
},
|
|
433
|
+
];
|
|
434
|
+
|
|
435
|
+
for (const fixture of cases) {
|
|
436
|
+
const root = await mkdtemp(join(tmpdir(), `lazycodex-subagent-limit-todo4-${fixture.name}-`));
|
|
437
|
+
const configPath = join(root, "config.toml");
|
|
438
|
+
await writeFile(configPath, fixture.config);
|
|
439
|
+
await migrateConfigFile(configPath, { env: { CODEX_HOME: root }, sessionModel: "gpt-6-astra" });
|
|
440
|
+
fixture.assertResult(await readFile(configPath, "utf8"));
|
|
441
|
+
}
|
|
350
442
|
});
|
|
351
443
|
|
|
352
|
-
test("#given config without any model but an existing low cap #when migrating #then
|
|
444
|
+
test("#given config without any model but an existing low cap #when migrating #then preserves the existing cap", async () => {
|
|
353
445
|
const root = await mkdtemp(join(tmpdir(), "lazycodex-subagent-limit-no-model-raise-"));
|
|
354
446
|
const configPath = join(root, "config.toml");
|
|
355
447
|
await writeFile(
|
|
@@ -360,7 +452,7 @@ test("#given config without any model but an existing low cap #when migrating #t
|
|
|
360
452
|
await migrateConfigFile(configPath, { env: { CODEX_HOME: root } });
|
|
361
453
|
|
|
362
454
|
const content = await readFile(configPath, "utf8");
|
|
363
|
-
assert.match(content, /max_threads =
|
|
364
|
-
assert.doesNotMatch(content, /max_threads =
|
|
455
|
+
assert.match(content, /max_threads = 6/);
|
|
456
|
+
assert.doesNotMatch(content, /max_threads = 1000/);
|
|
365
457
|
assert.match(content, /max_depth = 4/);
|
|
366
458
|
});
|