oh-my-opencode 5.1.7 → 5.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +35 -43
- package/dist/cli-node/index.js +35 -43
- package/dist/index.js +1118 -1106
- package/dist/shared/index.d.ts +0 -1
- package/dist/shared/live-server-route.d.ts +0 -2
- package/dist/shared/tmux/tmux-utils/pane-close.d.ts +0 -3
- package/dist/shared/tmux/tmux-utils/server-health.d.ts +1 -1
- package/dist/skills/browser/runtime/omowright/manifest.json +1 -1
- package/dist/skills/debugging/SKILL.md +1 -1
- package/dist/skills/debugging/references/methodology/06-fix.md +8 -0
- package/dist/tui.js +34 -42
- package/package.json +14 -14
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/dist/cli.js +12 -3
- 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/test/download.test.ts +0 -16
- package/packages/omo-codex/plugin/components/bootstrap/test/environment.test.ts +3 -0
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +0 -27
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/test/directive-source.test.ts +0 -6
- package/packages/omo-codex/plugin/components/ultrawork/test/package-smoke.test.ts +0 -15
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +5 -5
- package/packages/omo-codex/plugin/components/ulw-loop/package.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-git-bash-mcp-reminder.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-lsp-diagnostics-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-compact-resetting-project-rule-cache.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-comments.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-lsp-diagnostics.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-checking-thread-title-hygiene.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-matching-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/post-tool-use-recording-spawn-admission.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-enforcing-unlimited-goal-budget.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-guarding-ulw-loop-spawns.json +1 -1
- package/packages/omo-codex/plugin/hooks/pre-tool-use-recommending-git-bash-mcp.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-auto-update.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-checking-bootstrap-provisioning.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/hooks/session-start-recording-session-telemetry.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-execute-continuation.json +1 -1
- package/packages/omo-codex/plugin/hooks/stop-checking-ulw-loop-resume.json +1 -1
- package/packages/omo-codex/plugin/hooks/subagent-stop-verifying-lazycodex-executor-evidence.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ultrawork-trigger.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-checking-ulw-loop-steering.json +1 -1
- package/packages/omo-codex/plugin/hooks/user-prompt-submit-loading-project-rules.json +1 -1
- package/packages/omo-codex/plugin/package-lock.json +12 -12
- package/packages/omo-codex/plugin/package.json +1 -1
- package/packages/omo-codex/plugin/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/omo-codex/plugin/skills/debugging/SKILL.md +1 -1
- package/packages/omo-codex/plugin/skills/debugging/references/methodology/06-fix.md +8 -0
- package/packages/omo-codex/plugin/test/AGENTS.md +11 -0
- package/packages/omo-codex/plugin/test/component-bundled-cli.test.mjs +0 -50
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +14 -5
- package/packages/shared-skills/skills/browser/runtime/omowright/manifest.json +1 -1
- package/packages/shared-skills/skills/debugging/SKILL.md +1 -1
- package/packages/shared-skills/skills/debugging/references/methodology/06-fix.md +8 -0
package/dist/shared/index.d.ts
CHANGED
|
@@ -78,5 +78,4 @@ export * from "./legacy-workspace-migration";
|
|
|
78
78
|
export * from "./task-system-enabled";
|
|
79
79
|
export * from "./parse-tools-config";
|
|
80
80
|
export { parseModelString } from "./model-string-parser";
|
|
81
|
-
export { EXCLUDED_DIRS } from "./excluded-dirs";
|
|
82
81
|
export * from "./replace-tool-args";
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
export declare const LIVE_ROUTE_DISPATCH_LOG = "[live-server-route] dispatch via live listener";
|
|
2
|
-
export declare const LIVE_ROUTE_UNAVAILABLE_LOG = "[live-server-route] route unavailable; using in-process client";
|
|
3
1
|
type RouteResult = {
|
|
4
2
|
client: unknown;
|
|
5
3
|
route: "live" | "in-process";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { createServerHealthState,
|
|
1
|
+
export { createServerHealthState, isServerRunning, markServerRunningInProcess, resetServerCheck, } from "@oh-my-opencode/tmux-core";
|
|
2
2
|
export type { ServerHealthState } from "@oh-my-opencode/tmux-core";
|
|
@@ -73,7 +73,7 @@ Each phase has exactly one reference. Read it as you enter the phase — not in
|
|
|
73
73
|
| 4 | **Oracle Triple** — after 2 consecutive failed rounds, spawn three Oracles with orthogonal framings and synthesize | [references/methodology/04-oracle-triple.md](references/methodology/04-oracle-triple.md) |
|
|
74
74
|
| 5 | **User decision escalation** — only when evidence exhausted and the call has policy implications | [references/methodology/05-escalate.md](references/methodology/05-escalate.md) |
|
|
75
75
|
| 6 | **Root cause confirmation** — confirmed only when toggling the suspected cause toggles the bug | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
|
|
76
|
-
| 7 | **
|
|
76
|
+
| 7 | **Fix locked by a failing proof** — reuse the owner test that already fails or add one regression that fails on the pre-fix code, minimal green, no scope expansion | [references/methodology/06-fix.md](references/methodology/06-fix.md) |
|
|
77
77
|
| 8 | **Manual QA** — actually use the system (tmux for CLI, Playwright for browser, real curl for API, real repro for binary) | [references/methodology/08-qa.md](references/methodology/08-qa.md) |
|
|
78
78
|
| 9 | **Cleanup** — walk the journal, revert every artifact, verify `git diff` shows only fix + test | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
|
|
79
79
|
| 10 | **Final verification** — four evidence gates before declaring done | [references/methodology/09-cleanup.md](references/methodology/09-cleanup.md) |
|
|
@@ -51,6 +51,14 @@ The "mechanism" field is the acid test. If you can't write the causal chain from
|
|
|
51
51
|
|
|
52
52
|
Red, green, refactor. No shortcuts.
|
|
53
53
|
|
|
54
|
+
### 0. Look for the owner test first
|
|
55
|
+
|
|
56
|
+
Before writing a reproduction test, find the test that already owns this contract at the strongest boundary. Run it on the pre-fix code:
|
|
57
|
+
|
|
58
|
+
- **It already fails for this bug.** It is the red proof. Record its failure and skip step 1.
|
|
59
|
+
- **It passes but covers the path.** Extend it with the failing case (a table row, a fixture case) instead of adding a parallel test.
|
|
60
|
+
- **No owner exists.** Write the new reproduction test in step 1, and apply the repository's test-authoring gate if it has one.
|
|
61
|
+
|
|
54
62
|
### 1. Red — the reproduction as a test
|
|
55
63
|
|
|
56
64
|
Write a test that fails *specifically because of this bug*. Requirements:
|
package/dist/tui.js
CHANGED
|
@@ -3517,7 +3517,7 @@ var init_category_model_requirements = __esm(() => {
|
|
|
3517
3517
|
{
|
|
3518
3518
|
providers: ["openai", "chatgpt-subscription", "github-copilot", "opencode"],
|
|
3519
3519
|
model: "gpt-6-astra",
|
|
3520
|
-
variant: "
|
|
3520
|
+
variant: "high"
|
|
3521
3521
|
}
|
|
3522
3522
|
]
|
|
3523
3523
|
},
|
|
@@ -5319,7 +5319,7 @@ var init_openai_categories = __esm(() => {
|
|
|
5319
5319
|
},
|
|
5320
5320
|
{
|
|
5321
5321
|
name: "deep-high",
|
|
5322
|
-
config: { model: "openai/gpt-6-astra", variant: "
|
|
5322
|
+
config: { model: "openai/gpt-6-astra", variant: "high" },
|
|
5323
5323
|
description: "Escalation deep lane: a goal whose central decision cannot be settled from evidence alone. Same one-goal, one-deliverable contract as deep-low.",
|
|
5324
5324
|
callerGuidance: DEEP_HIGH_CATEGORY_CALLER_GUIDANCE,
|
|
5325
5325
|
promptAppend: DEEP_HIGH_CATEGORY_PROMPT_APPEND,
|
|
@@ -63514,28 +63514,6 @@ var init_legacy_workspace_migration = __esm(() => {
|
|
|
63514
63514
|
// packages/omo-opencode/src/shared/model-string-parser.ts
|
|
63515
63515
|
var init_model_string_parser2 = () => {};
|
|
63516
63516
|
|
|
63517
|
-
// packages/omo-opencode/src/shared/excluded-dirs.ts
|
|
63518
|
-
var EXCLUDED_DIR_NAMES, EXCLUDED_DIRS;
|
|
63519
|
-
var init_excluded_dirs = __esm(() => {
|
|
63520
|
-
EXCLUDED_DIR_NAMES = [
|
|
63521
|
-
"node_modules",
|
|
63522
|
-
".git",
|
|
63523
|
-
"dist",
|
|
63524
|
-
"build",
|
|
63525
|
-
".next",
|
|
63526
|
-
".omo",
|
|
63527
|
-
".sisyphus",
|
|
63528
|
-
".turbo",
|
|
63529
|
-
"coverage",
|
|
63530
|
-
"out",
|
|
63531
|
-
".cache",
|
|
63532
|
-
".vscode-test",
|
|
63533
|
-
"target",
|
|
63534
|
-
".local-ignore"
|
|
63535
|
-
];
|
|
63536
|
-
EXCLUDED_DIRS = Object.freeze(new Set(EXCLUDED_DIR_NAMES));
|
|
63537
|
-
});
|
|
63538
|
-
|
|
63539
63517
|
// packages/omo-opencode/src/shared/replace-tool-args.ts
|
|
63540
63518
|
var init_replace_tool_args = () => {};
|
|
63541
63519
|
|
|
@@ -63546,7 +63524,6 @@ var init_shared = __esm(() => {
|
|
|
63546
63524
|
init_model_resolution_pipeline();
|
|
63547
63525
|
init_session_category_registry();
|
|
63548
63526
|
init_model_string_parser2();
|
|
63549
|
-
init_excluded_dirs();
|
|
63550
63527
|
init_frontmatter2();
|
|
63551
63528
|
init_command_executor2();
|
|
63552
63529
|
init_contains_path2();
|
|
@@ -69930,7 +69907,8 @@ var init_memory = __esm(() => {
|
|
|
69930
69907
|
event_caps: OmoMemoryRecallEventCapsSchema.default({ tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 }),
|
|
69931
69908
|
sidecar_max_tokens: number2().int().positive().default(48000),
|
|
69932
69909
|
max_concurrent_wakes: number2().int().positive().default(2),
|
|
69933
|
-
tool_budget: number2().int().positive().default(8)
|
|
69910
|
+
tool_budget: number2().int().positive().default(8),
|
|
69911
|
+
query_expansion: boolean2().default(false)
|
|
69934
69912
|
}).strict();
|
|
69935
69913
|
OmoMemoryNudgeSchema = object({
|
|
69936
69914
|
enabled: boolean2().default(true),
|
|
@@ -69991,7 +69969,8 @@ var init_memory = __esm(() => {
|
|
|
69991
69969
|
event_caps: OmoMemoryRecallEventCapsLayerSchema.optional(),
|
|
69992
69970
|
sidecar_max_tokens: number2().int().positive().optional(),
|
|
69993
69971
|
max_concurrent_wakes: number2().int().positive().optional(),
|
|
69994
|
-
tool_budget: number2().int().positive().optional()
|
|
69972
|
+
tool_budget: number2().int().positive().optional(),
|
|
69973
|
+
query_expansion: boolean2().optional()
|
|
69995
69974
|
}).strict();
|
|
69996
69975
|
OmoMemoryNudgeLayerSchema = object({
|
|
69997
69976
|
enabled: boolean2().optional(),
|
|
@@ -70068,7 +70047,8 @@ var init_memory = __esm(() => {
|
|
|
70068
70047
|
event_caps: { tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 },
|
|
70069
70048
|
sidecar_max_tokens: 48000,
|
|
70070
70049
|
max_concurrent_wakes: 2,
|
|
70071
|
-
tool_budget: 8
|
|
70050
|
+
tool_budget: 8,
|
|
70051
|
+
query_expansion: false
|
|
70072
70052
|
}),
|
|
70073
70053
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
70074
70054
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
@@ -70354,6 +70334,13 @@ var init_format_on_mutation = __esm(() => {
|
|
|
70354
70334
|
}).strict();
|
|
70355
70335
|
});
|
|
70356
70336
|
|
|
70337
|
+
// packages/omo-config-core/src/schema/gateway.ts
|
|
70338
|
+
var OmoGatewaySectionSchema;
|
|
70339
|
+
var init_gateway = __esm(() => {
|
|
70340
|
+
init_zod();
|
|
70341
|
+
OmoGatewaySectionSchema = record(string2(), unknown()).describe("Chat-surface gateway settings, owned and validated by a separately installed gateway package. omo accepts the key and never reads it.");
|
|
70342
|
+
});
|
|
70343
|
+
|
|
70357
70344
|
// packages/omo-config-core/src/schema/config.ts
|
|
70358
70345
|
var OmoOpenCodeHarnessConfigSchema, OmoDisabledSkillsSchema, OmoTypedHarnessConfigSchema, OmoConfigProfileSchema, OmoConfigSchema, OmoConfigLayerSchema;
|
|
70359
70346
|
var init_config = __esm(() => {
|
|
@@ -70369,10 +70356,12 @@ var init_config = __esm(() => {
|
|
|
70369
70356
|
init_team();
|
|
70370
70357
|
init_telemetry();
|
|
70371
70358
|
init_format_on_mutation();
|
|
70359
|
+
init_gateway();
|
|
70372
70360
|
OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
|
|
70373
70361
|
OmoDisabledSkillsSchema = array(string2());
|
|
70374
70362
|
OmoTypedHarnessConfigSchema = object({
|
|
70375
70363
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
70364
|
+
gateway: OmoGatewaySectionSchema.optional(),
|
|
70376
70365
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
70377
70366
|
agents: OmoAgentsConfigSchema.optional(),
|
|
70378
70367
|
git_master: OmoGitMasterSettingsLayerSchema.optional(),
|
|
@@ -70407,6 +70396,7 @@ var init_config = __esm(() => {
|
|
|
70407
70396
|
}).strict();
|
|
70408
70397
|
OmoConfigSchema = object({
|
|
70409
70398
|
formatOnMutation: OmoFormatOnMutationSchema.optional(),
|
|
70399
|
+
gateway: OmoGatewaySectionSchema.optional(),
|
|
70410
70400
|
$schema: string2().optional(),
|
|
70411
70401
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
70412
70402
|
agents: OmoAgentsConfigSchema.optional(),
|
|
@@ -70430,6 +70420,7 @@ var init_config = __esm(() => {
|
|
|
70430
70420
|
}).strict();
|
|
70431
70421
|
OmoConfigLayerSchema = object({
|
|
70432
70422
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
70423
|
+
gateway: OmoGatewaySectionSchema.optional(),
|
|
70433
70424
|
$schema: string2().optional(),
|
|
70434
70425
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
70435
70426
|
agents: OmoAgentsConfigSchema.optional(),
|
|
@@ -70570,6 +70561,7 @@ var init_schema = __esm(() => {
|
|
|
70570
70561
|
init_config();
|
|
70571
70562
|
init_fallback_models();
|
|
70572
70563
|
init_format_on_mutation();
|
|
70564
|
+
init_gateway();
|
|
70573
70565
|
init_git_master();
|
|
70574
70566
|
init_harness();
|
|
70575
70567
|
init_legacy_category_names();
|
|
@@ -74617,7 +74609,7 @@ init_shared();
|
|
|
74617
74609
|
// package.json
|
|
74618
74610
|
var package_default = {
|
|
74619
74611
|
name: "oh-my-opencode",
|
|
74620
|
-
version: "5.1.
|
|
74612
|
+
version: "5.1.9",
|
|
74621
74613
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
74622
74614
|
main: "./dist/index.js",
|
|
74623
74615
|
types: "dist/index.d.ts",
|
|
@@ -74794,7 +74786,7 @@ var package_default = {
|
|
|
74794
74786
|
},
|
|
74795
74787
|
devDependencies: {
|
|
74796
74788
|
"@clack/prompts": "^1.8.1",
|
|
74797
|
-
"@code-yeongyu/senpi": "2026.
|
|
74789
|
+
"@code-yeongyu/senpi": "2026.10.1-3",
|
|
74798
74790
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
74799
74791
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
74800
74792
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -74852,18 +74844,18 @@ var package_default = {
|
|
|
74852
74844
|
typescript: "^7.0.2"
|
|
74853
74845
|
},
|
|
74854
74846
|
optionalDependencies: {
|
|
74855
|
-
"oh-my-opencode-darwin-arm64": "5.1.
|
|
74856
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
74857
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
74858
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
74859
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
74860
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
74861
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
74862
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
74863
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
74864
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
74865
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
74866
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
74847
|
+
"oh-my-opencode-darwin-arm64": "5.1.9",
|
|
74848
|
+
"oh-my-opencode-darwin-x64": "5.1.9",
|
|
74849
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.9",
|
|
74850
|
+
"oh-my-opencode-linux-arm64": "5.1.9",
|
|
74851
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.9",
|
|
74852
|
+
"oh-my-opencode-linux-x64": "5.1.9",
|
|
74853
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.9",
|
|
74854
|
+
"oh-my-opencode-linux-x64-musl": "5.1.9",
|
|
74855
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.9",
|
|
74856
|
+
"oh-my-opencode-windows-arm64": "5.1.9",
|
|
74857
|
+
"oh-my-opencode-windows-x64": "5.1.9",
|
|
74858
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.9"
|
|
74867
74859
|
},
|
|
74868
74860
|
overrides: {
|
|
74869
74861
|
hono: "^4.13.8",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oh-my-opencode",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.9",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -177,7 +177,7 @@
|
|
|
177
177
|
},
|
|
178
178
|
"devDependencies": {
|
|
179
179
|
"@clack/prompts": "^1.8.1",
|
|
180
|
-
"@code-yeongyu/senpi": "2026.
|
|
180
|
+
"@code-yeongyu/senpi": "2026.10.1-3",
|
|
181
181
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
182
182
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
183
183
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
@@ -235,18 +235,18 @@
|
|
|
235
235
|
"typescript": "^7.0.2"
|
|
236
236
|
},
|
|
237
237
|
"optionalDependencies": {
|
|
238
|
-
"oh-my-opencode-darwin-arm64": "5.1.
|
|
239
|
-
"oh-my-opencode-darwin-x64": "5.1.
|
|
240
|
-
"oh-my-opencode-darwin-x64-baseline": "5.1.
|
|
241
|
-
"oh-my-opencode-linux-arm64": "5.1.
|
|
242
|
-
"oh-my-opencode-linux-arm64-musl": "5.1.
|
|
243
|
-
"oh-my-opencode-linux-x64": "5.1.
|
|
244
|
-
"oh-my-opencode-linux-x64-baseline": "5.1.
|
|
245
|
-
"oh-my-opencode-linux-x64-musl": "5.1.
|
|
246
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.1.
|
|
247
|
-
"oh-my-opencode-windows-arm64": "5.1.
|
|
248
|
-
"oh-my-opencode-windows-x64": "5.1.
|
|
249
|
-
"oh-my-opencode-windows-x64-baseline": "5.1.
|
|
238
|
+
"oh-my-opencode-darwin-arm64": "5.1.9",
|
|
239
|
+
"oh-my-opencode-darwin-x64": "5.1.9",
|
|
240
|
+
"oh-my-opencode-darwin-x64-baseline": "5.1.9",
|
|
241
|
+
"oh-my-opencode-linux-arm64": "5.1.9",
|
|
242
|
+
"oh-my-opencode-linux-arm64-musl": "5.1.9",
|
|
243
|
+
"oh-my-opencode-linux-x64": "5.1.9",
|
|
244
|
+
"oh-my-opencode-linux-x64-baseline": "5.1.9",
|
|
245
|
+
"oh-my-opencode-linux-x64-musl": "5.1.9",
|
|
246
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.1.9",
|
|
247
|
+
"oh-my-opencode-windows-arm64": "5.1.9",
|
|
248
|
+
"oh-my-opencode-windows-x64": "5.1.9",
|
|
249
|
+
"oh-my-opencode-windows-x64-baseline": "5.1.9"
|
|
250
250
|
},
|
|
251
251
|
"overrides": {
|
|
252
252
|
"hono": "^4.13.8",
|
|
@@ -7148,7 +7148,8 @@ var OmoMemoryRecallSchema = object({
|
|
|
7148
7148
|
event_caps: OmoMemoryRecallEventCapsSchema.default({ tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 }),
|
|
7149
7149
|
sidecar_max_tokens: number2().int().positive().default(48000),
|
|
7150
7150
|
max_concurrent_wakes: number2().int().positive().default(2),
|
|
7151
|
-
tool_budget: number2().int().positive().default(8)
|
|
7151
|
+
tool_budget: number2().int().positive().default(8),
|
|
7152
|
+
query_expansion: boolean2().default(false)
|
|
7152
7153
|
}).strict();
|
|
7153
7154
|
var OmoMemoryNudgeSchema = object({
|
|
7154
7155
|
enabled: boolean2().default(true),
|
|
@@ -7209,7 +7210,8 @@ var OmoMemoryRecallLayerSchema = object({
|
|
|
7209
7210
|
event_caps: OmoMemoryRecallEventCapsLayerSchema.optional(),
|
|
7210
7211
|
sidecar_max_tokens: number2().int().positive().optional(),
|
|
7211
7212
|
max_concurrent_wakes: number2().int().positive().optional(),
|
|
7212
|
-
tool_budget: number2().int().positive().optional()
|
|
7213
|
+
tool_budget: number2().int().positive().optional(),
|
|
7214
|
+
query_expansion: boolean2().optional()
|
|
7213
7215
|
}).strict();
|
|
7214
7216
|
var OmoMemoryNudgeLayerSchema = object({
|
|
7215
7217
|
enabled: boolean2().optional(),
|
|
@@ -7286,7 +7288,8 @@ var OmoMemorySettingsSchema = object({
|
|
|
7286
7288
|
event_caps: { tool_args: 400, result_head: 600, assistant: 1500, prompt: 4000 },
|
|
7287
7289
|
sidecar_max_tokens: 48000,
|
|
7288
7290
|
max_concurrent_wakes: 2,
|
|
7289
|
-
tool_budget: 8
|
|
7291
|
+
tool_budget: 8,
|
|
7292
|
+
query_expansion: false
|
|
7290
7293
|
}),
|
|
7291
7294
|
compile_warn_tokens: number2().int().positive().default(30000),
|
|
7292
7295
|
agents: record(string2(), OmoMemoryAgentOverridesSchema).default({})
|
|
@@ -7545,11 +7548,15 @@ var OmoFormatOnMutationSchema = OmoFormatOnMutationLayerSchema.extend({
|
|
|
7545
7548
|
timeoutMs: number2().int().positive().default(3000)
|
|
7546
7549
|
}).strict();
|
|
7547
7550
|
|
|
7551
|
+
// ../../omo-config-core/src/schema/gateway.ts
|
|
7552
|
+
var OmoGatewaySectionSchema = record(string2(), unknown()).describe("Chat-surface gateway settings, owned and validated by a separately installed gateway package. omo accepts the key and never reads it.");
|
|
7553
|
+
|
|
7548
7554
|
// ../../omo-config-core/src/schema/config.ts
|
|
7549
7555
|
var OmoOpenCodeHarnessConfigSchema = record(string2(), unknown());
|
|
7550
7556
|
var OmoDisabledSkillsSchema = array(string2());
|
|
7551
7557
|
var OmoTypedHarnessConfigSchema = object({
|
|
7552
7558
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
7559
|
+
gateway: OmoGatewaySectionSchema.optional(),
|
|
7553
7560
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
7554
7561
|
agents: OmoAgentsConfigSchema.optional(),
|
|
7555
7562
|
git_master: OmoGitMasterSettingsLayerSchema.optional(),
|
|
@@ -7584,6 +7591,7 @@ var OmoConfigProfileSchema = object({
|
|
|
7584
7591
|
}).strict();
|
|
7585
7592
|
var OmoConfigSchema = object({
|
|
7586
7593
|
formatOnMutation: OmoFormatOnMutationSchema.optional(),
|
|
7594
|
+
gateway: OmoGatewaySectionSchema.optional(),
|
|
7587
7595
|
$schema: string2().optional(),
|
|
7588
7596
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
7589
7597
|
agents: OmoAgentsConfigSchema.optional(),
|
|
@@ -7607,6 +7615,7 @@ var OmoConfigSchema = object({
|
|
|
7607
7615
|
}).strict();
|
|
7608
7616
|
var OmoConfigLayerSchema = object({
|
|
7609
7617
|
formatOnMutation: OmoFormatOnMutationLayerSchema.optional(),
|
|
7618
|
+
gateway: OmoGatewaySectionSchema.optional(),
|
|
7610
7619
|
$schema: string2().optional(),
|
|
7611
7620
|
categories: OmoCategoriesConfigSchema.optional(),
|
|
7612
7621
|
agents: OmoAgentsConfigSchema.optional(),
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/components/bootstrap/dist/cli.js\" hook session-start",
|
|
9
9
|
"commandWindows": "powershell -NoProfile -ExecutionPolicy Bypass -File \"${PLUGIN_ROOT}\\components\\bootstrap\\scripts\\bootstrap.ps1\"",
|
|
10
10
|
"timeout": 30,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.9) Checking Bootstrap Provisioning"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -262,22 +262,6 @@ describe("downloadFromManifest", () => {
|
|
|
262
262
|
});
|
|
263
263
|
|
|
264
264
|
describe("committed manifests", () => {
|
|
265
|
-
it("#given the committed ast-grep manifest #when loaded #then every required platform pins an https URL and a sha256", async () => {
|
|
266
|
-
// given / when
|
|
267
|
-
const manifest = await loadAssetManifest("ast-grep");
|
|
268
|
-
|
|
269
|
-
// then
|
|
270
|
-
expect(manifest.name).toBe("ast-grep");
|
|
271
|
-
expect(manifest.version).toMatch(/^\d+\.\d+\.\d+$/);
|
|
272
|
-
for (const platformKey of ["darwin-arm64", "darwin-x64", "linux-x64", "win32-x64"]) {
|
|
273
|
-
const asset = manifest.platforms[platformKey];
|
|
274
|
-
if (asset === undefined) throw new Error(`missing platform ${platformKey}`);
|
|
275
|
-
expect(asset.url).toStartWith("https://");
|
|
276
|
-
expect(asset.url).toContain(manifest.version);
|
|
277
|
-
expect(asset.sha256).toMatch(/^[a-f0-9]{64}$/);
|
|
278
|
-
}
|
|
279
|
-
});
|
|
280
|
-
|
|
281
265
|
it("#given the committed node manifest #when loaded #then the win32-x64 LTS zip pins an https URL and a sha256", async () => {
|
|
282
266
|
// given / when
|
|
283
267
|
const manifest = await loadAssetManifest("node");
|
|
@@ -373,4 +373,7 @@ async function writeSyncSourceFixture(sourceRoot: string): Promise<void> {
|
|
|
373
373
|
await writeExecutableStub(join(sourceRoot, "packages", "git-bash-mcp", "dist", "cli.js"));
|
|
374
374
|
await writeExecutableStub(join(sourceRoot, "packages", "lsp-tools-mcp", "dist", "cli.js"));
|
|
375
375
|
await writeExecutableStub(join(sourceRoot, "packages", "lsp-daemon", "dist", "cli.js"));
|
|
376
|
+
// The sync bundles the root CLI and its node fallback too (script/lazycodex-runtime-dists.ts).
|
|
377
|
+
await writeExecutableStub(join(sourceRoot, "dist", "cli", "index.js"));
|
|
378
|
+
await writeExecutableStub(join(sourceRoot, "dist", "cli-node", "index.js"));
|
|
376
379
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook pre-tool-use",
|
|
10
10
|
"timeout": 5,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.9) Recommending Git Bash MCP"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"type": "command",
|
|
21
21
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
22
22
|
"timeout": 5,
|
|
23
|
-
"statusMessage": "(OmO 5.1.
|
|
23
|
+
"statusMessage": "(OmO 5.1.9) Resetting Git Bash MCP Reminder"
|
|
24
24
|
}
|
|
25
25
|
]
|
|
26
26
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/components/lazycodex-executor-verify/dist/cli.js\" hook subagent-stop",
|
|
10
10
|
"timeout": 10,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.9) Verifying LazyCodex Executor Evidence"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "5.1.
|
|
4
|
-
"inputDigest": "sha256:
|
|
3
|
+
"version": "5.1.9",
|
|
4
|
+
"inputDigest": "sha256:408549caf858a9eb5d20f3b2d5b951828904b19d663a0296c992546a061ec3ea",
|
|
5
5
|
"outputs": [
|
|
6
6
|
{
|
|
7
7
|
"path": "cli.d.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
10
10
|
"timeout": 60,
|
|
11
|
-
"statusMessage": "(OmO 5.1.
|
|
11
|
+
"statusMessage": "(OmO 5.1.9) Checking LSP Diagnostics"
|
|
12
12
|
}
|
|
13
13
|
]
|
|
14
14
|
}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"type": "command",
|
|
22
22
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
23
23
|
"timeout": 5,
|
|
24
|
-
"statusMessage": "(OmO 5.1.
|
|
24
|
+
"statusMessage": "(OmO 5.1.9) Resetting LSP Diagnostics Cache"
|
|
25
25
|
}
|
|
26
26
|
]
|
|
27
27
|
}
|
|
@@ -16,9 +16,6 @@ describe("plugin package metadata", () => {
|
|
|
16
16
|
const hooksJson = readHooksJson("hooks/hooks.json");
|
|
17
17
|
const mcpJson = readMcpJson(".mcp.json");
|
|
18
18
|
const cliSource = readTextFile("src/cli.ts");
|
|
19
|
-
const daemonCliPathSource = readTextFile("src/daemon-cli-path.ts");
|
|
20
|
-
const codexHookCliSource = readTextFile("src/codex-hook-cli.ts");
|
|
21
|
-
const codexHookSource = readTextFile("src/codex-hook.ts");
|
|
22
19
|
const sourceFiles = listDirectoryEntries("src");
|
|
23
20
|
const scripts = requireScripts(packageJson, "package.json");
|
|
24
21
|
|
|
@@ -55,30 +52,6 @@ describe("plugin package metadata", () => {
|
|
|
55
52
|
},
|
|
56
53
|
},
|
|
57
54
|
});
|
|
58
|
-
expect(cliSource).not.toContain("./lazy-lsp-mcp.js");
|
|
59
|
-
expect(cliSource).toContain("resolveLspDaemonCliPath");
|
|
60
|
-
expect(daemonCliPathSource).toContain("@code-yeongyu/lsp-daemon/cli");
|
|
61
|
-
expect(daemonCliPathSource).toContain("../../lsp-daemon/dist/cli.js");
|
|
62
|
-
expect(daemonCliPathSource).toContain("OMO_LSP_DAEMON_VERSION");
|
|
63
|
-
expect(cliSource).not.toContain("../../../../../lsp-daemon/dist/cli.js");
|
|
64
|
-
expect(codexHookSource).toContain("ensureLspDaemonCliEnv");
|
|
65
|
-
expect(codexHookCliSource).not.toContain("@code-yeongyu/lsp-daemon");
|
|
66
|
-
expect(codexHookSource).toContain("@code-yeongyu/lsp-daemon/client");
|
|
67
|
-
expect(codexHookSource).toContain("@oh-my-opencode/lsp-core/post-edit");
|
|
68
|
-
expect(codexHookSource).toContain("CODEX_HOME");
|
|
69
|
-
expect(codexHookCliSource).not.toContain("../../../../../lsp-daemon");
|
|
70
|
-
expect(codexHookSource).not.toContain("../../../../../lsp-daemon");
|
|
71
55
|
expect(sourceFiles.filter((name) => name.startsWith("lazy-mcp") || name === "lazy-lsp-mcp.ts")).toEqual([]);
|
|
72
56
|
});
|
|
73
|
-
|
|
74
|
-
it("#given built component CLI #when runtime imports are inspected #then it is self-contained except Node builtins", () => {
|
|
75
|
-
const cliSource = readTextFile("dist/cli.js");
|
|
76
|
-
const imports = [
|
|
77
|
-
...cliSource.matchAll(/\bimport\s+(?:[^'";]+?\s+from\s+)?["']([^"']+)["']/g),
|
|
78
|
-
...cliSource.matchAll(/\bimport\s*\(\s*["']([^"']+)["']\s*\)/g),
|
|
79
|
-
].flatMap((match) => (match[1] === undefined ? [] : [match[1]]));
|
|
80
|
-
expect(imports.filter((specifier) => !specifier.startsWith("node:"))).toEqual([]);
|
|
81
|
-
expect(cliSource).not.toContain("@code-yeongyu/lsp-daemon/client");
|
|
82
|
-
expect(cliSource).not.toContain("@oh-my-opencode/lsp-core");
|
|
83
|
-
});
|
|
84
57
|
});
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"type": "command",
|
|
8
8
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook session-start",
|
|
9
9
|
"timeout": 10,
|
|
10
|
-
"statusMessage": "(OmO 5.1.
|
|
10
|
+
"statusMessage": "(OmO 5.1.9) Loading Project Rules"
|
|
11
11
|
}
|
|
12
12
|
]
|
|
13
13
|
}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"type": "command",
|
|
20
20
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook user-prompt-submit",
|
|
21
21
|
"timeout": 10,
|
|
22
|
-
"statusMessage": "(OmO 5.1.
|
|
22
|
+
"statusMessage": "(OmO 5.1.9) Loading Project Rules"
|
|
23
23
|
}
|
|
24
24
|
]
|
|
25
25
|
}
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"type": "command",
|
|
33
33
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-tool-use",
|
|
34
34
|
"timeout": 10,
|
|
35
|
-
"statusMessage": "(OmO 5.1.
|
|
35
|
+
"statusMessage": "(OmO 5.1.9) Matching Project Rules"
|
|
36
36
|
}
|
|
37
37
|
]
|
|
38
38
|
}
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"type": "command",
|
|
46
46
|
"command": "node \"${PLUGIN_ROOT}/dist/cli.js\" hook post-compact",
|
|
47
47
|
"timeout": 10,
|
|
48
|
-
"statusMessage": "(OmO 5.1.
|
|
48
|
+
"statusMessage": "(OmO 5.1.9) Resetting Project Rule Cache"
|
|
49
49
|
}
|
|
50
50
|
]
|
|
51
51
|
}
|