oh-my-opencode 5.0.0-beta.26 → 5.0.0-beta.28
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/config-manager/parse-opencode-config-file.d.ts +2 -1
- package/dist/cli/doctor/checks/system-plugin.d.ts +4 -3
- package/dist/cli/index.js +59 -45
- package/dist/cli-node/index.js +82 -45
- package/dist/hooks/todo-continuation-enforcer/types.d.ts +1 -0
- package/dist/index.js +53 -28
- package/dist/shared/index.d.ts +1 -0
- package/dist/shared/legacy-plugin-warning.d.ts +2 -1
- package/dist/shared/plugin-entry-migrator.d.ts +4 -3
- package/dist/shared/plugin-entry-shape.d.ts +6 -0
- package/dist/skills/data-scientist/SKILL.md +99 -239
- package/dist/skills/data-scientist/references/execution-surfaces.md +91 -0
- package/dist/skills/data-scientist/references/placement.md +74 -0
- package/dist/skills/data-scientist/references/polars-lane.md +95 -0
- package/dist/skills/data-scientist/references/uv-setup.md +1 -1
- package/dist/skills/data-scientist/references/visualization.md +64 -0
- package/dist/skills/data-scientist/scripts/ensure-js-deps.sh +28 -0
- package/dist/skills/data-scientist/scripts/ensure-py-deps.sh +37 -0
- package/dist/skills/ulw-research/SKILL.md +3 -1
- package/dist/tui.d.ts +12 -0
- package/dist/tui.js +3 -3
- package/package.json +15 -15
- package/packages/lsp-core/src/request-context.test.ts +29 -0
- package/packages/lsp-core/src/request-context.ts +1 -1
- package/packages/lsp-daemon/dist/cli.js +1 -1
- package/packages/lsp-daemon/dist/client.js +1 -1
- package/packages/lsp-daemon/dist/index.js +1 -1
- package/packages/lsp-tools-mcp/dist/cli.js +1 -1
- package/packages/lsp-tools-mcp/dist/mcp.js +1 -1
- package/packages/lsp-tools-mcp/dist/request-context.js +1 -1
- package/packages/lsp-tools-mcp/dist/tools.js +1 -1
- package/packages/omo-codex/plugin/.codex-plugin/plugin.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/bootstrap/package.json +1 -1
- package/packages/omo-codex/plugin/components/codegraph/package.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/comment-checker/package.json +1 -1
- package/packages/omo-codex/plugin/components/git-bash/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/git-bash/package.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/lazycodex-executor-verify/package.json +1 -1
- package/packages/omo-codex/plugin/components/lsp/dist/.omo-runtime-manifest.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/lsp/package.json +1 -1
- package/packages/omo-codex/plugin/components/rules/hooks/hooks.json +4 -4
- package/packages/omo-codex/plugin/components/rules/package.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/teammode/package.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/telemetry/package.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/hooks/hooks.json +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/hooks/hooks.json +2 -2
- package/packages/omo-codex/plugin/components/ulw-execute-continuation/package.json +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/hooks/hooks.json +4 -4
- 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-codegraph-init-guidance.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/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-checking-codegraph-bootstrap.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-checking-ulw-execute-continuation.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 +13 -13
- package/packages/omo-codex/plugin/package.json +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/ulw-research/SKILL.md +3 -1
- package/packages/omo-codex/scripts/install-dist/install-local.mjs +2 -2
- 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/ulw-research/SKILL.md +3 -1
- package/dist/skills/data-scientist/references/common-scenarios.md +0 -176
- package/dist/skills/data-scientist/references/execution-templates.md +0 -197
- package/dist/skills/data-scientist/references/integration-patterns.md +0 -153
- package/dist/skills/data-scientist/references/performance-benchmarks.md +0 -37
- 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/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
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { type PluginEntry } from "../../shared";
|
|
1
2
|
interface ParseConfigResult {
|
|
2
3
|
config: OpenCodeConfig | null;
|
|
3
4
|
error?: string;
|
|
4
5
|
}
|
|
5
6
|
export interface OpenCodeConfig {
|
|
6
|
-
plugin?:
|
|
7
|
+
plugin?: PluginEntry[];
|
|
7
8
|
[key: string]: unknown;
|
|
8
9
|
}
|
|
9
10
|
export declare function parseOpenCodeConfigFileWithError(path: string): ParseConfigResult;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
import { type PluginEntry } from "../../../shared";
|
|
1
2
|
export interface PluginInfo {
|
|
2
3
|
registered: boolean;
|
|
3
4
|
configPath: string | null;
|
|
4
|
-
entry:
|
|
5
|
+
entry: PluginEntry | null;
|
|
5
6
|
isPinned: boolean;
|
|
6
7
|
pinnedVersion: string | null;
|
|
7
8
|
isLocalDev: boolean;
|
|
8
9
|
}
|
|
9
10
|
declare function detectConfigPath(): string | null;
|
|
10
|
-
declare function findPluginEntry(entries:
|
|
11
|
-
entry:
|
|
11
|
+
declare function findPluginEntry(entries: PluginEntry[]): {
|
|
12
|
+
entry: PluginEntry;
|
|
12
13
|
isLocalDev: boolean;
|
|
13
14
|
} | null;
|
|
14
15
|
export declare function getPluginInfo(): PluginInfo;
|
package/dist/cli/index.js
CHANGED
|
@@ -54,7 +54,7 @@ var package_default;
|
|
|
54
54
|
var init_package = __esm(() => {
|
|
55
55
|
package_default = {
|
|
56
56
|
name: "oh-my-opencode",
|
|
57
|
-
version: "5.0.0-beta.
|
|
57
|
+
version: "5.0.0-beta.28",
|
|
58
58
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
59
59
|
main: "./dist/index.js",
|
|
60
60
|
types: "dist/index.d.ts",
|
|
@@ -235,7 +235,7 @@ var init_package = __esm(() => {
|
|
|
235
235
|
zod: "^4.4.3"
|
|
236
236
|
},
|
|
237
237
|
devDependencies: {
|
|
238
|
-
"@code-yeongyu/senpi": "2026.8.
|
|
238
|
+
"@code-yeongyu/senpi": "2026.8.30",
|
|
239
239
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
240
240
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
241
241
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -276,18 +276,18 @@ var init_package = __esm(() => {
|
|
|
276
276
|
typescript: "^7.0.2"
|
|
277
277
|
},
|
|
278
278
|
optionalDependencies: {
|
|
279
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
280
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
281
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
282
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
283
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
284
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
285
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
286
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
287
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
288
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
289
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
290
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
279
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.28",
|
|
280
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.28",
|
|
281
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.28",
|
|
282
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.28",
|
|
283
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.28",
|
|
284
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.28",
|
|
285
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.28",
|
|
286
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.28",
|
|
287
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.28",
|
|
288
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.28",
|
|
289
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.28",
|
|
290
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.28"
|
|
291
291
|
},
|
|
292
292
|
overrides: {
|
|
293
293
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -305,7 +305,7 @@ var init_package = __esm(() => {
|
|
|
305
305
|
"@code-yeongyu/comment-checker"
|
|
306
306
|
],
|
|
307
307
|
patchedDependencies: {
|
|
308
|
-
"@code-yeongyu/senpi@2026.8.
|
|
308
|
+
"@code-yeongyu/senpi@2026.8.30": "patches/@code-yeongyu%2Fsenpi@2026.8.30.patch"
|
|
309
309
|
}
|
|
310
310
|
};
|
|
311
311
|
});
|
|
@@ -84204,6 +84204,17 @@ var init_session_category_registry = __esm(() => {
|
|
|
84204
84204
|
sessionCategoryMap = new Map;
|
|
84205
84205
|
});
|
|
84206
84206
|
|
|
84207
|
+
// packages/omo-opencode/src/shared/plugin-entry-shape.ts
|
|
84208
|
+
function isPluginTupleEntry(entry) {
|
|
84209
|
+
return Array.isArray(entry) && typeof entry[0] === "string";
|
|
84210
|
+
}
|
|
84211
|
+
function getPluginEntryName(entry) {
|
|
84212
|
+
return isPluginTupleEntry(entry) ? entry[0] : entry;
|
|
84213
|
+
}
|
|
84214
|
+
function withPluginEntryName(entry, name) {
|
|
84215
|
+
return isPluginTupleEntry(entry) ? [name, entry[1]] : name;
|
|
84216
|
+
}
|
|
84217
|
+
|
|
84207
84218
|
// packages/omo-opencode/src/shared/legacy-plugin-warning.ts
|
|
84208
84219
|
var init_legacy_plugin_warning = __esm(() => {
|
|
84209
84220
|
init_jsonc_parser2();
|
|
@@ -84669,13 +84680,14 @@ function getConfigTargets() {
|
|
|
84669
84680
|
});
|
|
84670
84681
|
}
|
|
84671
84682
|
function isSourceOmoPluginEntry(plugin) {
|
|
84672
|
-
const normalized = plugin.toLowerCase().replaceAll("\\", "/");
|
|
84683
|
+
const normalized = getPluginEntryName(plugin).toLowerCase().replaceAll("\\", "/");
|
|
84673
84684
|
if (!normalized.startsWith("file://"))
|
|
84674
84685
|
return false;
|
|
84675
84686
|
return /\/(omo(?:-[^/]*)?|oh-my-opencode|oh-my-openagent)\/(src|dist)\/index\.(ts|js)$/.test(normalized);
|
|
84676
84687
|
}
|
|
84677
84688
|
function isPackageOmoPluginEntry(plugin) {
|
|
84678
|
-
|
|
84689
|
+
const name = getPluginEntryName(plugin);
|
|
84690
|
+
return name === PLUGIN_NAME || name.startsWith(`${PLUGIN_NAME}@`) || name === LEGACY_PLUGIN_NAME || name.startsWith(`${LEGACY_PLUGIN_NAME}@`);
|
|
84679
84691
|
}
|
|
84680
84692
|
function isOurPlugin(plugin) {
|
|
84681
84693
|
return isPackageOmoPluginEntry(plugin) || isSourceOmoPluginEntry(plugin);
|
|
@@ -84697,6 +84709,9 @@ function choosePluginEntry(params) {
|
|
|
84697
84709
|
if (params.preferredSourceEntry) {
|
|
84698
84710
|
return params.preferredSourceEntry;
|
|
84699
84711
|
}
|
|
84712
|
+
if (params.existingEntry) {
|
|
84713
|
+
return withPluginEntryName(params.existingEntry, params.fallbackEntry);
|
|
84714
|
+
}
|
|
84700
84715
|
return params.fallbackEntry;
|
|
84701
84716
|
}
|
|
84702
84717
|
function writePluginEntryToTarget(params) {
|
|
@@ -84730,7 +84745,7 @@ function writePluginEntryToTarget(params) {
|
|
|
84730
84745
|
preferredSourceEntry
|
|
84731
84746
|
});
|
|
84732
84747
|
if (existingEntry && !preferredSourceEntry) {
|
|
84733
|
-
const installedVersion = extractVersionFromPluginEntry(existingEntry);
|
|
84748
|
+
const installedVersion = extractVersionFromPluginEntry(getPluginEntryName(existingEntry));
|
|
84734
84749
|
const compatibility = checkVersionCompatibility(installedVersion, currentVersion);
|
|
84735
84750
|
if (!compatibility.canUpgrade) {
|
|
84736
84751
|
return {
|
|
@@ -84753,20 +84768,12 @@ function writePluginEntryToTarget(params) {
|
|
|
84753
84768
|
config3.plugin = normalizedPlugins;
|
|
84754
84769
|
if (target.format === "jsonc") {
|
|
84755
84770
|
const content = readFileSync8(target.path, "utf-8");
|
|
84756
|
-
const
|
|
84757
|
-
|
|
84758
|
-
|
|
84759
|
-
|
|
84760
|
-
|
|
84761
|
-
|
|
84762
|
-
${formattedPlugins}
|
|
84763
|
-
]`);
|
|
84764
|
-
writeFileSync5(target.path, newContent);
|
|
84765
|
-
} else {
|
|
84766
|
-
const newContent = content.replace(/(\{)/, `$1
|
|
84767
|
-
"plugin": ["${nextPluginEntry}"],`);
|
|
84768
|
-
writeFileSync5(target.path, newContent);
|
|
84769
|
-
}
|
|
84771
|
+
const edits = modify(content, ["plugin"], normalizedPlugins, {
|
|
84772
|
+
formattingOptions: { insertSpaces: true, tabSize: 2, eol: `
|
|
84773
|
+
` },
|
|
84774
|
+
getInsertionIndex: () => 0
|
|
84775
|
+
});
|
|
84776
|
+
writeFileSync5(target.path, applyEdits(content, edits));
|
|
84770
84777
|
} else {
|
|
84771
84778
|
writeFileSync5(target.path, JSON.stringify(config3, null, 2) + `
|
|
84772
84779
|
`);
|
|
@@ -84811,6 +84818,7 @@ async function addPluginToOpenCodeConfig(currentVersion) {
|
|
|
84811
84818
|
return primaryResult ?? { success: true, configPath: primaryTarget.path };
|
|
84812
84819
|
}
|
|
84813
84820
|
var init_add_plugin_to_opencode_config = __esm(() => {
|
|
84821
|
+
init_main();
|
|
84814
84822
|
init_shared();
|
|
84815
84823
|
init_backup_config();
|
|
84816
84824
|
init_config_context();
|
|
@@ -86340,10 +86348,12 @@ function detectProvidersFromOmoConfig() {
|
|
|
86340
86348
|
}
|
|
86341
86349
|
}
|
|
86342
86350
|
function isOurPlugin2(plugin) {
|
|
86343
|
-
|
|
86351
|
+
const name = getPluginEntryName(plugin);
|
|
86352
|
+
return name === PLUGIN_NAME || name.startsWith(`${PLUGIN_NAME}@`) || name === LEGACY_PLUGIN_NAME || name.startsWith(`${LEGACY_PLUGIN_NAME}@`);
|
|
86344
86353
|
}
|
|
86345
86354
|
function findOurPluginEntry2(plugins) {
|
|
86346
|
-
|
|
86355
|
+
const entry = plugins.find(isOurPlugin2);
|
|
86356
|
+
return entry === undefined ? null : getPluginEntryName(entry);
|
|
86347
86357
|
}
|
|
86348
86358
|
function detectCurrentConfig() {
|
|
86349
86359
|
const result = {
|
|
@@ -94390,7 +94400,7 @@ var package_default2;
|
|
|
94390
94400
|
var init_package2 = __esm(() => {
|
|
94391
94401
|
package_default2 = {
|
|
94392
94402
|
name: "@oh-my-opencode/omo-codex",
|
|
94393
|
-
version: "5.0.0-beta.
|
|
94403
|
+
version: "5.0.0-beta.28",
|
|
94394
94404
|
type: "module",
|
|
94395
94405
|
private: true,
|
|
94396
94406
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -110035,14 +110045,15 @@ function detectConfigPath() {
|
|
|
110035
110045
|
return null;
|
|
110036
110046
|
}
|
|
110037
110047
|
function parsePluginVersion(entry) {
|
|
110038
|
-
|
|
110039
|
-
|
|
110048
|
+
const name = getPluginEntryName(entry);
|
|
110049
|
+
if (name.startsWith(`${PLUGIN_NAME}@`)) {
|
|
110050
|
+
const value = name.slice(PLUGIN_NAME.length + 1);
|
|
110040
110051
|
if (!value || value === "latest")
|
|
110041
110052
|
return null;
|
|
110042
110053
|
return value;
|
|
110043
110054
|
}
|
|
110044
|
-
if (
|
|
110045
|
-
const value =
|
|
110055
|
+
if (name.startsWith(`${LEGACY_PLUGIN_NAME}@`)) {
|
|
110056
|
+
const value = name.slice(LEGACY_PLUGIN_NAME.length + 1);
|
|
110046
110057
|
if (!value || value === "latest")
|
|
110047
110058
|
return null;
|
|
110048
110059
|
return value;
|
|
@@ -110051,13 +110062,14 @@ function parsePluginVersion(entry) {
|
|
|
110051
110062
|
}
|
|
110052
110063
|
function findPluginEntry2(entries) {
|
|
110053
110064
|
for (const entry of entries) {
|
|
110054
|
-
|
|
110065
|
+
const name = getPluginEntryName(entry);
|
|
110066
|
+
if (name === PLUGIN_NAME || name.startsWith(`${PLUGIN_NAME}@`)) {
|
|
110055
110067
|
return { entry, isLocalDev: false };
|
|
110056
110068
|
}
|
|
110057
|
-
if (
|
|
110069
|
+
if (name === LEGACY_PLUGIN_NAME || name.startsWith(`${LEGACY_PLUGIN_NAME}@`)) {
|
|
110058
110070
|
return { entry, isLocalDev: false };
|
|
110059
110071
|
}
|
|
110060
|
-
if (
|
|
110072
|
+
if (name.startsWith("file://") && (name.includes(PLUGIN_NAME) || name.includes(LEGACY_PLUGIN_NAME))) {
|
|
110061
110073
|
return { entry, isLocalDev: true };
|
|
110062
110074
|
}
|
|
110063
110075
|
}
|
|
@@ -110379,13 +110391,14 @@ async function checkSystem(deps = defaultDeps6) {
|
|
|
110379
110391
|
});
|
|
110380
110392
|
}
|
|
110381
110393
|
if (pluginInfo.entry && !pluginInfo.isLocalDev) {
|
|
110382
|
-
const
|
|
110394
|
+
const entryName = getPluginEntryName(pluginInfo.entry);
|
|
110395
|
+
const isLegacyName = entryName === LEGACY_PLUGIN_NAME || entryName.startsWith(`${LEGACY_PLUGIN_NAME}@`);
|
|
110383
110396
|
if (isLegacyName) {
|
|
110384
|
-
const suggestedEntry =
|
|
110397
|
+
const suggestedEntry = entryName.replace(LEGACY_PLUGIN_NAME, PLUGIN_NAME);
|
|
110385
110398
|
issues.push({
|
|
110386
110399
|
title: "Using legacy package name",
|
|
110387
110400
|
description: `Your opencode.json references "${LEGACY_PLUGIN_NAME}" which has been renamed to "${PLUGIN_NAME}". The old name may stop working in a future release.`,
|
|
110388
|
-
fix: `Update your opencode.json plugin entry: "${
|
|
110401
|
+
fix: `Update your opencode.json plugin entry: "${entryName}" \u2192 "${suggestedEntry}"`,
|
|
110389
110402
|
severity: "warning",
|
|
110390
110403
|
affects: ["plugin loading"]
|
|
110391
110404
|
});
|
|
@@ -111405,6 +111418,7 @@ function createLspMcpConfig(options = {}) {
|
|
|
111405
111418
|
enabled: resolvedCommand.exists,
|
|
111406
111419
|
cwd,
|
|
111407
111420
|
environment: {
|
|
111421
|
+
LSP_TOOLS_MCP_CWD: cwd,
|
|
111408
111422
|
LSP_TOOLS_MCP_PROJECT_CONFIG: PROJECT_LSP_CONFIGS.map((configPath) => resolve23(cwd, configPath)).join(delimiter3),
|
|
111409
111423
|
LSP_TOOLS_MCP_USER_CONFIG: resolve23(configDir, "lsp.json"),
|
|
111410
111424
|
LSP_TOOLS_MCP_INSTALL_DECISIONS: resolve23(configDir, "lsp-install-decisions.json"),
|
package/dist/cli-node/index.js
CHANGED
|
@@ -55,7 +55,7 @@ var package_default;
|
|
|
55
55
|
var init_package = __esm(() => {
|
|
56
56
|
package_default = {
|
|
57
57
|
name: "oh-my-opencode",
|
|
58
|
-
version: "5.0.0-beta.
|
|
58
|
+
version: "5.0.0-beta.28",
|
|
59
59
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
60
60
|
main: "./dist/index.js",
|
|
61
61
|
types: "dist/index.d.ts",
|
|
@@ -236,7 +236,7 @@ var init_package = __esm(() => {
|
|
|
236
236
|
zod: "^4.4.3"
|
|
237
237
|
},
|
|
238
238
|
devDependencies: {
|
|
239
|
-
"@code-yeongyu/senpi": "2026.8.
|
|
239
|
+
"@code-yeongyu/senpi": "2026.8.30",
|
|
240
240
|
"@oh-my-opencode/agents-md-core": "workspace:*",
|
|
241
241
|
"@oh-my-opencode/ast-grep-mcp": "workspace:*",
|
|
242
242
|
"@oh-my-opencode/boulder-state": "workspace:*",
|
|
@@ -277,18 +277,18 @@ var init_package = __esm(() => {
|
|
|
277
277
|
typescript: "^7.0.2"
|
|
278
278
|
},
|
|
279
279
|
optionalDependencies: {
|
|
280
|
-
"oh-my-opencode-darwin-arm64": "5.0.0-beta.
|
|
281
|
-
"oh-my-opencode-darwin-x64": "5.0.0-beta.
|
|
282
|
-
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.
|
|
283
|
-
"oh-my-opencode-linux-arm64": "5.0.0-beta.
|
|
284
|
-
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.
|
|
285
|
-
"oh-my-opencode-linux-x64": "5.0.0-beta.
|
|
286
|
-
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.
|
|
287
|
-
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.
|
|
288
|
-
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.
|
|
289
|
-
"oh-my-opencode-windows-arm64": "5.0.0-beta.
|
|
290
|
-
"oh-my-opencode-windows-x64": "5.0.0-beta.
|
|
291
|
-
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.
|
|
280
|
+
"oh-my-opencode-darwin-arm64": "5.0.0-beta.28",
|
|
281
|
+
"oh-my-opencode-darwin-x64": "5.0.0-beta.28",
|
|
282
|
+
"oh-my-opencode-darwin-x64-baseline": "5.0.0-beta.28",
|
|
283
|
+
"oh-my-opencode-linux-arm64": "5.0.0-beta.28",
|
|
284
|
+
"oh-my-opencode-linux-arm64-musl": "5.0.0-beta.28",
|
|
285
|
+
"oh-my-opencode-linux-x64": "5.0.0-beta.28",
|
|
286
|
+
"oh-my-opencode-linux-x64-baseline": "5.0.0-beta.28",
|
|
287
|
+
"oh-my-opencode-linux-x64-musl": "5.0.0-beta.28",
|
|
288
|
+
"oh-my-opencode-linux-x64-musl-baseline": "5.0.0-beta.28",
|
|
289
|
+
"oh-my-opencode-windows-arm64": "5.0.0-beta.28",
|
|
290
|
+
"oh-my-opencode-windows-x64": "5.0.0-beta.28",
|
|
291
|
+
"oh-my-opencode-windows-x64-baseline": "5.0.0-beta.28"
|
|
292
292
|
},
|
|
293
293
|
overrides: {
|
|
294
294
|
"@earendil-works/pi-agent-core": "0.84.2",
|
|
@@ -306,7 +306,7 @@ var init_package = __esm(() => {
|
|
|
306
306
|
"@code-yeongyu/comment-checker"
|
|
307
307
|
],
|
|
308
308
|
patchedDependencies: {
|
|
309
|
-
"@code-yeongyu/senpi@2026.8.
|
|
309
|
+
"@code-yeongyu/senpi@2026.8.30": "patches/@code-yeongyu%2Fsenpi@2026.8.30.patch"
|
|
310
310
|
}
|
|
311
311
|
};
|
|
312
312
|
});
|
|
@@ -84205,6 +84205,17 @@ var init_session_category_registry = __esm(() => {
|
|
|
84205
84205
|
sessionCategoryMap = new Map;
|
|
84206
84206
|
});
|
|
84207
84207
|
|
|
84208
|
+
// packages/omo-opencode/src/shared/plugin-entry-shape.ts
|
|
84209
|
+
function isPluginTupleEntry(entry) {
|
|
84210
|
+
return Array.isArray(entry) && typeof entry[0] === "string";
|
|
84211
|
+
}
|
|
84212
|
+
function getPluginEntryName(entry) {
|
|
84213
|
+
return isPluginTupleEntry(entry) ? entry[0] : entry;
|
|
84214
|
+
}
|
|
84215
|
+
function withPluginEntryName(entry, name) {
|
|
84216
|
+
return isPluginTupleEntry(entry) ? [name, entry[1]] : name;
|
|
84217
|
+
}
|
|
84218
|
+
|
|
84208
84219
|
// packages/omo-opencode/src/shared/legacy-plugin-warning.ts
|
|
84209
84220
|
var init_legacy_plugin_warning = __esm(() => {
|
|
84210
84221
|
init_jsonc_parser2();
|
|
@@ -84213,6 +84224,29 @@ var init_legacy_plugin_warning = __esm(() => {
|
|
|
84213
84224
|
});
|
|
84214
84225
|
|
|
84215
84226
|
// node_modules/jsonc-parser/lib/esm/main.js
|
|
84227
|
+
function modify2(text, path7, value, options) {
|
|
84228
|
+
return setProperty(text, path7, value, options);
|
|
84229
|
+
}
|
|
84230
|
+
function applyEdits2(text, edits) {
|
|
84231
|
+
let sortedEdits = edits.slice(0).sort((a, b) => {
|
|
84232
|
+
const diff = a.offset - b.offset;
|
|
84233
|
+
if (diff === 0) {
|
|
84234
|
+
return a.length - b.length;
|
|
84235
|
+
}
|
|
84236
|
+
return diff;
|
|
84237
|
+
});
|
|
84238
|
+
let lastModifiedOffset = text.length;
|
|
84239
|
+
for (let i = sortedEdits.length - 1;i >= 0; i--) {
|
|
84240
|
+
let e = sortedEdits[i];
|
|
84241
|
+
if (e.offset + e.length <= lastModifiedOffset) {
|
|
84242
|
+
text = applyEdit(text, e);
|
|
84243
|
+
} else {
|
|
84244
|
+
throw new Error("Overlapping edit");
|
|
84245
|
+
}
|
|
84246
|
+
lastModifiedOffset = e.offset;
|
|
84247
|
+
}
|
|
84248
|
+
return text;
|
|
84249
|
+
}
|
|
84216
84250
|
var ScanError2, SyntaxKind2, ParseErrorCode2;
|
|
84217
84251
|
var init_main2 = __esm(() => {
|
|
84218
84252
|
init_format();
|
|
@@ -84725,13 +84759,14 @@ function getConfigTargets() {
|
|
|
84725
84759
|
});
|
|
84726
84760
|
}
|
|
84727
84761
|
function isSourceOmoPluginEntry(plugin) {
|
|
84728
|
-
const normalized = plugin.toLowerCase().replaceAll("\\", "/");
|
|
84762
|
+
const normalized = getPluginEntryName(plugin).toLowerCase().replaceAll("\\", "/");
|
|
84729
84763
|
if (!normalized.startsWith("file://"))
|
|
84730
84764
|
return false;
|
|
84731
84765
|
return /\/(omo(?:-[^/]*)?|oh-my-opencode|oh-my-openagent)\/(src|dist)\/index\.(ts|js)$/.test(normalized);
|
|
84732
84766
|
}
|
|
84733
84767
|
function isPackageOmoPluginEntry(plugin) {
|
|
84734
|
-
|
|
84768
|
+
const name = getPluginEntryName(plugin);
|
|
84769
|
+
return name === PLUGIN_NAME || name.startsWith(`${PLUGIN_NAME}@`) || name === LEGACY_PLUGIN_NAME || name.startsWith(`${LEGACY_PLUGIN_NAME}@`);
|
|
84735
84770
|
}
|
|
84736
84771
|
function isOurPlugin(plugin) {
|
|
84737
84772
|
return isPackageOmoPluginEntry(plugin) || isSourceOmoPluginEntry(plugin);
|
|
@@ -84753,6 +84788,9 @@ function choosePluginEntry(params) {
|
|
|
84753
84788
|
if (params.preferredSourceEntry) {
|
|
84754
84789
|
return params.preferredSourceEntry;
|
|
84755
84790
|
}
|
|
84791
|
+
if (params.existingEntry) {
|
|
84792
|
+
return withPluginEntryName(params.existingEntry, params.fallbackEntry);
|
|
84793
|
+
}
|
|
84756
84794
|
return params.fallbackEntry;
|
|
84757
84795
|
}
|
|
84758
84796
|
function writePluginEntryToTarget(params) {
|
|
@@ -84786,7 +84824,7 @@ function writePluginEntryToTarget(params) {
|
|
|
84786
84824
|
preferredSourceEntry
|
|
84787
84825
|
});
|
|
84788
84826
|
if (existingEntry && !preferredSourceEntry) {
|
|
84789
|
-
const installedVersion = extractVersionFromPluginEntry(existingEntry);
|
|
84827
|
+
const installedVersion = extractVersionFromPluginEntry(getPluginEntryName(existingEntry));
|
|
84790
84828
|
const compatibility = checkVersionCompatibility(installedVersion, currentVersion);
|
|
84791
84829
|
if (!compatibility.canUpgrade) {
|
|
84792
84830
|
return {
|
|
@@ -84809,20 +84847,12 @@ function writePluginEntryToTarget(params) {
|
|
|
84809
84847
|
config3.plugin = normalizedPlugins;
|
|
84810
84848
|
if (target.format === "jsonc") {
|
|
84811
84849
|
const content = readFileSync8(target.path, "utf-8");
|
|
84812
|
-
const
|
|
84813
|
-
|
|
84814
|
-
|
|
84815
|
-
|
|
84816
|
-
|
|
84817
|
-
|
|
84818
|
-
${formattedPlugins}
|
|
84819
|
-
]`);
|
|
84820
|
-
writeFileSync5(target.path, newContent);
|
|
84821
|
-
} else {
|
|
84822
|
-
const newContent = content.replace(/(\{)/, `$1
|
|
84823
|
-
"plugin": ["${nextPluginEntry}"],`);
|
|
84824
|
-
writeFileSync5(target.path, newContent);
|
|
84825
|
-
}
|
|
84850
|
+
const edits = modify2(content, ["plugin"], normalizedPlugins, {
|
|
84851
|
+
formattingOptions: { insertSpaces: true, tabSize: 2, eol: `
|
|
84852
|
+
` },
|
|
84853
|
+
getInsertionIndex: () => 0
|
|
84854
|
+
});
|
|
84855
|
+
writeFileSync5(target.path, applyEdits2(content, edits));
|
|
84826
84856
|
} else {
|
|
84827
84857
|
writeFileSync5(target.path, JSON.stringify(config3, null, 2) + `
|
|
84828
84858
|
`);
|
|
@@ -84867,6 +84897,7 @@ async function addPluginToOpenCodeConfig(currentVersion) {
|
|
|
84867
84897
|
return primaryResult ?? { success: true, configPath: primaryTarget.path };
|
|
84868
84898
|
}
|
|
84869
84899
|
var init_add_plugin_to_opencode_config = __esm(() => {
|
|
84900
|
+
init_main2();
|
|
84870
84901
|
init_shared();
|
|
84871
84902
|
init_backup_config();
|
|
84872
84903
|
init_config_context();
|
|
@@ -86396,10 +86427,12 @@ function detectProvidersFromOmoConfig() {
|
|
|
86396
86427
|
}
|
|
86397
86428
|
}
|
|
86398
86429
|
function isOurPlugin2(plugin) {
|
|
86399
|
-
|
|
86430
|
+
const name = getPluginEntryName(plugin);
|
|
86431
|
+
return name === PLUGIN_NAME || name.startsWith(`${PLUGIN_NAME}@`) || name === LEGACY_PLUGIN_NAME || name.startsWith(`${LEGACY_PLUGIN_NAME}@`);
|
|
86400
86432
|
}
|
|
86401
86433
|
function findOurPluginEntry2(plugins) {
|
|
86402
|
-
|
|
86434
|
+
const entry = plugins.find(isOurPlugin2);
|
|
86435
|
+
return entry === undefined ? null : getPluginEntryName(entry);
|
|
86403
86436
|
}
|
|
86404
86437
|
function detectCurrentConfig() {
|
|
86405
86438
|
const result = {
|
|
@@ -94446,7 +94479,7 @@ var package_default2;
|
|
|
94446
94479
|
var init_package2 = __esm(() => {
|
|
94447
94480
|
package_default2 = {
|
|
94448
94481
|
name: "@oh-my-opencode/omo-codex",
|
|
94449
|
-
version: "5.0.0-beta.
|
|
94482
|
+
version: "5.0.0-beta.28",
|
|
94450
94483
|
type: "module",
|
|
94451
94484
|
private: true,
|
|
94452
94485
|
description: "Codex harness adapter for oh-my-openagent. Vendored Codex plugin namespace (omo) + TypeScript installer + telemetry.",
|
|
@@ -110091,14 +110124,15 @@ function detectConfigPath() {
|
|
|
110091
110124
|
return null;
|
|
110092
110125
|
}
|
|
110093
110126
|
function parsePluginVersion(entry) {
|
|
110094
|
-
|
|
110095
|
-
|
|
110127
|
+
const name = getPluginEntryName(entry);
|
|
110128
|
+
if (name.startsWith(`${PLUGIN_NAME}@`)) {
|
|
110129
|
+
const value = name.slice(PLUGIN_NAME.length + 1);
|
|
110096
110130
|
if (!value || value === "latest")
|
|
110097
110131
|
return null;
|
|
110098
110132
|
return value;
|
|
110099
110133
|
}
|
|
110100
|
-
if (
|
|
110101
|
-
const value =
|
|
110134
|
+
if (name.startsWith(`${LEGACY_PLUGIN_NAME}@`)) {
|
|
110135
|
+
const value = name.slice(LEGACY_PLUGIN_NAME.length + 1);
|
|
110102
110136
|
if (!value || value === "latest")
|
|
110103
110137
|
return null;
|
|
110104
110138
|
return value;
|
|
@@ -110107,13 +110141,14 @@ function parsePluginVersion(entry) {
|
|
|
110107
110141
|
}
|
|
110108
110142
|
function findPluginEntry2(entries) {
|
|
110109
110143
|
for (const entry of entries) {
|
|
110110
|
-
|
|
110144
|
+
const name = getPluginEntryName(entry);
|
|
110145
|
+
if (name === PLUGIN_NAME || name.startsWith(`${PLUGIN_NAME}@`)) {
|
|
110111
110146
|
return { entry, isLocalDev: false };
|
|
110112
110147
|
}
|
|
110113
|
-
if (
|
|
110148
|
+
if (name === LEGACY_PLUGIN_NAME || name.startsWith(`${LEGACY_PLUGIN_NAME}@`)) {
|
|
110114
110149
|
return { entry, isLocalDev: false };
|
|
110115
110150
|
}
|
|
110116
|
-
if (
|
|
110151
|
+
if (name.startsWith("file://") && (name.includes(PLUGIN_NAME) || name.includes(LEGACY_PLUGIN_NAME))) {
|
|
110117
110152
|
return { entry, isLocalDev: true };
|
|
110118
110153
|
}
|
|
110119
110154
|
}
|
|
@@ -110435,13 +110470,14 @@ async function checkSystem(deps = defaultDeps6) {
|
|
|
110435
110470
|
});
|
|
110436
110471
|
}
|
|
110437
110472
|
if (pluginInfo.entry && !pluginInfo.isLocalDev) {
|
|
110438
|
-
const
|
|
110473
|
+
const entryName = getPluginEntryName(pluginInfo.entry);
|
|
110474
|
+
const isLegacyName = entryName === LEGACY_PLUGIN_NAME || entryName.startsWith(`${LEGACY_PLUGIN_NAME}@`);
|
|
110439
110475
|
if (isLegacyName) {
|
|
110440
|
-
const suggestedEntry =
|
|
110476
|
+
const suggestedEntry = entryName.replace(LEGACY_PLUGIN_NAME, PLUGIN_NAME);
|
|
110441
110477
|
issues.push({
|
|
110442
110478
|
title: "Using legacy package name",
|
|
110443
110479
|
description: `Your opencode.json references "${LEGACY_PLUGIN_NAME}" which has been renamed to "${PLUGIN_NAME}". The old name may stop working in a future release.`,
|
|
110444
|
-
fix: `Update your opencode.json plugin entry: "${
|
|
110480
|
+
fix: `Update your opencode.json plugin entry: "${entryName}" → "${suggestedEntry}"`,
|
|
110445
110481
|
severity: "warning",
|
|
110446
110482
|
affects: ["plugin loading"]
|
|
110447
110483
|
});
|
|
@@ -111461,6 +111497,7 @@ function createLspMcpConfig(options = {}) {
|
|
|
111461
111497
|
enabled: resolvedCommand.exists,
|
|
111462
111498
|
cwd,
|
|
111463
111499
|
environment: {
|
|
111500
|
+
LSP_TOOLS_MCP_CWD: cwd,
|
|
111464
111501
|
LSP_TOOLS_MCP_PROJECT_CONFIG: PROJECT_LSP_CONFIGS.map((configPath) => resolve23(cwd, configPath)).join(delimiter3),
|
|
111465
111502
|
LSP_TOOLS_MCP_USER_CONFIG: resolve23(configDir, "lsp.json"),
|
|
111466
111503
|
LSP_TOOLS_MCP_INSTALL_DECISIONS: resolve23(configDir, "lsp-install-decisions.json"),
|