oh-my-openagent 4.6.0 → 4.7.1
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/bin/version-mismatch.js +47 -0
- package/bin/version-mismatch.test.ts +120 -0
- package/dist/cli/codex-ulw-loop.d.ts +12 -0
- package/dist/cli/doctor/checks/tui-plugin-config.d.ts +2 -0
- package/dist/cli/index.js +5999 -5542
- package/dist/cli/install-codex/codex-config-reasoning.d.ts +2 -1
- package/dist/cli/install-codex/codex-model-catalog.d.ts +13 -0
- package/dist/features/background-agent/concurrency.d.ts +1 -0
- package/dist/features/background-agent/process-cleanup.d.ts +6 -0
- package/dist/features/claude-code-session-state/state.d.ts +1 -0
- package/dist/features/opencode-skill-loader/index.d.ts +1 -0
- package/dist/features/opencode-skill-loader/opencode-config-skills-reader.d.ts +5 -0
- package/dist/features/tmux-subagent/attachable-session-status.d.ts +1 -1
- package/dist/features/tmux-subagent/session-status-parser.d.ts +1 -0
- package/dist/hooks/comment-checker/cli.d.ts +1 -0
- package/dist/hooks/tasks-todowrite-disabler/constants.d.ts +1 -1
- package/dist/index.js +4250 -3776
- package/dist/shared/command-executor/execute-hook-command.d.ts +2 -0
- package/dist/tools/skill/description-formatter.d.ts +5 -1
- package/dist/tools/skill/types.d.ts +1 -0
- package/package.json +13 -14
- package/packages/ast-grep-mcp/dist/cli.js +53 -9
- package/packages/lsp-tools-mcp/dist/lsp/process.js +1 -1
- package/packages/omo-codex/plugin/components/lsp/hooks/hooks.json +13 -0
- package/packages/omo-codex/plugin/components/lsp/src/cli.ts +6 -2
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook-cli.ts +13 -2
- package/packages/omo-codex/plugin/components/lsp/src/codex-hook.ts +30 -79
- package/packages/omo-codex/plugin/components/lsp/src/lsp-session-state.ts +116 -0
- package/packages/omo-codex/plugin/components/lsp/src/mutated-file-paths.ts +88 -0
- package/packages/omo-codex/plugin/components/lsp/test/codex-hook-unavailable.test.ts +206 -0
- package/packages/omo-codex/plugin/components/lsp/test/package-smoke.test.ts +5 -3
- package/packages/omo-codex/plugin/components/rules/bundled-rules/hephaestus.md +6 -4
- package/packages/omo-codex/plugin/components/rules/src/codex-hook-options.ts +1 -0
- package/packages/omo-codex/plugin/components/rules/src/post-compact-budget.ts +0 -2
- package/packages/omo-codex/plugin/components/rules/src/rules/finder.ts +15 -2
- package/packages/omo-codex/plugin/components/rules/src/rules-engine-factory.ts +4 -1
- package/packages/omo-codex/plugin/components/rules/test/windows-git-bash-bundled-rule.test.ts +28 -5
- package/packages/omo-codex/plugin/components/start-work-continuation/directive.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/CHANGELOG.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/README.md +1 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/codex-ultrawork-reviewer.toml +3 -1
- package/packages/omo-codex/plugin/components/ultrawork/agents/plan.toml +7 -7
- package/packages/omo-codex/plugin/components/ultrawork/directive.md +1 -1
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/SKILL.md +5 -4
- package/packages/omo-codex/plugin/components/ulw-loop/skills/ulw-loop/references/full-workflow.md +4 -3
- package/packages/omo-codex/plugin/components/ulw-loop/src/checkpoint.ts +12 -1
- package/packages/omo-codex/plugin/components/ulw-loop/test/checkpoint.test.ts +19 -1
- package/packages/omo-codex/plugin/hooks/hooks.json +24 -2
- package/packages/omo-codex/plugin/model-catalog.json +49 -0
- package/packages/omo-codex/plugin/scripts/auto-update.mjs +159 -0
- package/packages/omo-codex/plugin/scripts/migrate-codex-config.mjs +269 -0
- package/packages/omo-codex/plugin/scripts/sync-hook-status-messages.mjs +4 -9
- package/packages/omo-codex/plugin/scripts/sync-skills.mjs +6 -6
- package/packages/omo-codex/plugin/skills/init-deep/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/lcx-report-bug/SKILL.md +127 -0
- package/packages/omo-codex/plugin/skills/lcx-report-bug/agents/openai.yaml +9 -0
- package/packages/omo-codex/plugin/skills/refactor/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/remove-ai-slops/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/review-work/SKILL.md +7 -7
- package/packages/omo-codex/plugin/skills/start-work/SKILL.md +6 -6
- package/packages/omo-codex/plugin/skills/ulw-loop/SKILL.md +5 -4
- package/packages/omo-codex/plugin/skills/ulw-loop/references/full-workflow.md +4 -3
- package/packages/omo-codex/plugin/skills/ulw-plan/SKILL.md +17 -17
- package/packages/omo-codex/plugin/test/aggregate.test.mjs +188 -19
- package/packages/omo-codex/plugin/test/auto-update.test.mjs +129 -0
- package/packages/omo-codex/plugin/test/hook-status-message.test.mjs +7 -27
- package/packages/omo-codex/plugin/test/migrate-codex-config.test.mjs +146 -0
- package/packages/omo-codex/plugin/test/sync-hook-status-messages.test.mjs +27 -1
- package/packages/omo-codex/plugin/test/sync-skills.test.mjs +22 -0
- package/packages/omo-codex/scripts/install/cli-args.mjs +1 -1
- package/packages/omo-codex/scripts/install/config.mjs +2 -15
- package/packages/omo-codex/scripts/install/delegated-command.mjs +1 -1
- package/packages/omo-codex/scripts/install/legacy-bins.mjs +1 -0
- package/packages/omo-codex/scripts/install/model-catalog.mjs +66 -0
- package/packages/omo-codex/scripts/install/permissions.mjs +11 -0
- package/packages/omo-codex/scripts/install/reasoning-config.mjs +65 -7
- package/packages/omo-codex/scripts/install-bin-links.test.mjs +23 -0
- package/packages/omo-codex/scripts/install-config-autonomous-features.test.mjs +83 -0
- package/packages/omo-codex/scripts/install-config-reasoning.test.mjs +82 -3
- package/packages/omo-codex/scripts/install-config.test.mjs +5 -6
- package/packages/omo-codex/scripts/install-local-entrypoint.test.mjs +30 -2
- package/packages/omo-codex/scripts/install-local.mjs +1 -1
- package/packages/omo-codex/scripts/install-local.test.mjs +3 -1
- package/packages/shared-skills/skills/lcx-report-bug/SKILL.md +127 -0
- package/packages/shared-skills/skills/lcx-report-bug/agents/openai.yaml +9 -0
- package/packages/shared-skills/skills/review-work/SKILL.md +7 -7
- package/packages/shared-skills/skills/start-work/SKILL.md +6 -6
- package/packages/shared-skills/skills/ulw-plan/SKILL.md +11 -11
- package/postinstall.mjs +36 -3
- package/dist/cli/install-codex/codex-config-mcp.d.ts +0 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// bin/version-mismatch.js
|
|
2
|
+
// Detects platform binary version mismatch against the main package.
|
|
3
|
+
// Background: issue #3918 - `oh-my-opencode-windows-x64@3.9.0` could stay installed
|
|
4
|
+
// alongside `oh-my-opencode@4.0.0`, leaving the startup banner pinned to 3.9.0.
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Strips an optional leading "v" so callers can pass either "4.5.1" or "v4.5.1".
|
|
8
|
+
* Pre-release suffixes (e.g. "-beta.1") are preserved because the release
|
|
9
|
+
* workflow publishes prereleases as standalone versions on the `next` dist-tag,
|
|
10
|
+
* and `oh-my-opencode@4.5.1-beta.1` paired with `oh-my-opencode-x64@4.5.1`
|
|
11
|
+
* IS a real mismatch the wrapper would silently honour.
|
|
12
|
+
*
|
|
13
|
+
* @param {string} version
|
|
14
|
+
* @returns {string} Full version with leading "v" stripped.
|
|
15
|
+
*/
|
|
16
|
+
function normalizeVersion(version) {
|
|
17
|
+
return version.replace(/^v/, "");
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Detect a main / platform-binary version mismatch.
|
|
22
|
+
*
|
|
23
|
+
* Both versions must be known to report a mismatch; if either is null/undefined,
|
|
24
|
+
* the check is skipped (returns null) rather than producing a false alarm.
|
|
25
|
+
*
|
|
26
|
+
* Comparison is exact on the full semver string (after stripping a leading "v"),
|
|
27
|
+
* including any pre-release suffix. This means `4.5.1-beta.1` and `4.5.1` are
|
|
28
|
+
* treated as DIFFERENT versions, matching the publish workflow that ships
|
|
29
|
+
* prerelease builds to the `next` dist-tag alongside stable releases.
|
|
30
|
+
*
|
|
31
|
+
* @param {object} input
|
|
32
|
+
* @param {string | null | undefined} input.mainVersion
|
|
33
|
+
* @param {string | null | undefined} input.platformVersion
|
|
34
|
+
* @param {string} input.platformPackage
|
|
35
|
+
* @returns {{ mainVersion: string, platformVersion: string, platformPackage: string } | null}
|
|
36
|
+
*/
|
|
37
|
+
export function detectPlatformBinaryMismatch({ mainVersion, platformVersion, platformPackage }) {
|
|
38
|
+
if (!mainVersion || !platformVersion) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (normalizeVersion(mainVersion) === normalizeVersion(platformVersion)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return { mainVersion, platformVersion, platformPackage };
|
|
47
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
// bin/version-mismatch.test.ts
|
|
2
|
+
import { describe, expect, test } from "bun:test";
|
|
3
|
+
import { detectPlatformBinaryMismatch } from "./version-mismatch.js";
|
|
4
|
+
|
|
5
|
+
describe("detectPlatformBinaryMismatch", () => {
|
|
6
|
+
test("returns null when main and platform versions match", () => {
|
|
7
|
+
// #given identical main and platform binary versions
|
|
8
|
+
const input = { mainVersion: "4.5.1", platformVersion: "4.5.1", platformPackage: "oh-my-opencode-windows-x64" };
|
|
9
|
+
|
|
10
|
+
// #when detecting mismatch
|
|
11
|
+
const result = detectPlatformBinaryMismatch(input);
|
|
12
|
+
|
|
13
|
+
// #then no mismatch is reported
|
|
14
|
+
expect(result).toBeNull();
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
test("reports mismatch when platform version is older than main", () => {
|
|
18
|
+
// #given main package newer than installed platform binary (issue #3918 case)
|
|
19
|
+
const input = { mainVersion: "4.5.1", platformVersion: "3.9.0", platformPackage: "oh-my-opencode-windows-x64" };
|
|
20
|
+
|
|
21
|
+
// #when detecting mismatch
|
|
22
|
+
const result = detectPlatformBinaryMismatch(input);
|
|
23
|
+
|
|
24
|
+
// #then mismatch object is returned with both versions
|
|
25
|
+
expect(result).toEqual({
|
|
26
|
+
mainVersion: "4.5.1",
|
|
27
|
+
platformVersion: "3.9.0",
|
|
28
|
+
platformPackage: "oh-my-opencode-windows-x64",
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
test("reports mismatch when platform version is newer than main", () => {
|
|
33
|
+
// #given platform binary newer than main wrapper
|
|
34
|
+
const input = { mainVersion: "4.0.0", platformVersion: "4.5.1", platformPackage: "oh-my-opencode-linux-x64" };
|
|
35
|
+
|
|
36
|
+
// #when detecting mismatch
|
|
37
|
+
const result = detectPlatformBinaryMismatch(input);
|
|
38
|
+
|
|
39
|
+
// #then mismatch is still reported (any difference is a mismatch)
|
|
40
|
+
expect(result).not.toBeNull();
|
|
41
|
+
expect(result?.platformVersion).toBe("4.5.1");
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test("returns null when main version is unknown", () => {
|
|
45
|
+
// #given main version could not be read
|
|
46
|
+
const input = { mainVersion: null, platformVersion: "4.5.1", platformPackage: "oh-my-opencode-windows-x64" };
|
|
47
|
+
|
|
48
|
+
// #when detecting mismatch
|
|
49
|
+
const result = detectPlatformBinaryMismatch(input);
|
|
50
|
+
|
|
51
|
+
// #then no mismatch is reported - cannot compare without main version
|
|
52
|
+
expect(result).toBeNull();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test("returns null when platform version is unknown", () => {
|
|
56
|
+
// #given platform package.json could not be read
|
|
57
|
+
const input = { mainVersion: "4.5.1", platformVersion: null, platformPackage: "oh-my-opencode-windows-x64" };
|
|
58
|
+
|
|
59
|
+
// #when detecting mismatch
|
|
60
|
+
const result = detectPlatformBinaryMismatch(input);
|
|
61
|
+
|
|
62
|
+
// #then no mismatch is reported - silently skip rather than alarm
|
|
63
|
+
expect(result).toBeNull();
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
test("reports mismatch when main is a prerelease and platform is the matching stable", () => {
|
|
67
|
+
// #given prerelease main against stable platform binary - the publish workflow
|
|
68
|
+
// ships prereleases under the `next` dist-tag, so this combo is a real
|
|
69
|
+
// mismatch the wrapper would silently honour
|
|
70
|
+
const input = { mainVersion: "4.5.1-beta.1", platformVersion: "4.5.1", platformPackage: "oh-my-opencode-darwin-arm64" };
|
|
71
|
+
|
|
72
|
+
// #when detecting mismatch
|
|
73
|
+
const result = detectPlatformBinaryMismatch(input);
|
|
74
|
+
|
|
75
|
+
// #then mismatch is reported with the full prerelease string preserved
|
|
76
|
+
expect(result).toEqual({
|
|
77
|
+
mainVersion: "4.5.1-beta.1",
|
|
78
|
+
platformVersion: "4.5.1",
|
|
79
|
+
platformPackage: "oh-my-opencode-darwin-arm64",
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test("reports mismatch between two different prerelease iterations", () => {
|
|
84
|
+
// #given two different prerelease iterations - publish.yml allows multiple
|
|
85
|
+
// beta builds on the `next` dist-tag, so beta.1 vs beta.2 IS a mismatch
|
|
86
|
+
const input = { mainVersion: "4.5.1-beta.2", platformVersion: "4.5.1-beta.1", platformPackage: "oh-my-opencode-linux-x64" };
|
|
87
|
+
|
|
88
|
+
// #when detecting mismatch
|
|
89
|
+
const result = detectPlatformBinaryMismatch(input);
|
|
90
|
+
|
|
91
|
+
// #then mismatch is reported with both prerelease tags preserved
|
|
92
|
+
expect(result).toEqual({
|
|
93
|
+
mainVersion: "4.5.1-beta.2",
|
|
94
|
+
platformVersion: "4.5.1-beta.1",
|
|
95
|
+
platformPackage: "oh-my-opencode-linux-x64",
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
test("returns null when both versions are the exact same prerelease", () => {
|
|
100
|
+
// #given matched prereleases on both sides
|
|
101
|
+
const input = { mainVersion: "4.5.1-beta.1", platformVersion: "4.5.1-beta.1", platformPackage: "oh-my-opencode-windows-x64" };
|
|
102
|
+
|
|
103
|
+
// #when detecting mismatch
|
|
104
|
+
const result = detectPlatformBinaryMismatch(input);
|
|
105
|
+
|
|
106
|
+
// #then no mismatch is reported
|
|
107
|
+
expect(result).toBeNull();
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
test("normalizes leading 'v' so 'v4.5.1' matches '4.5.1'", () => {
|
|
111
|
+
// #given the same version with and without a leading "v"
|
|
112
|
+
const input = { mainVersion: "v4.5.1", platformVersion: "4.5.1", platformPackage: "oh-my-opencode-windows-x64" };
|
|
113
|
+
|
|
114
|
+
// #when detecting mismatch
|
|
115
|
+
const result = detectPlatformBinaryMismatch(input);
|
|
116
|
+
|
|
117
|
+
// #then leading "v" is treated as cosmetic, no mismatch reported
|
|
118
|
+
expect(result).toBeNull();
|
|
119
|
+
});
|
|
120
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type CodexUlwLoopCommand = {
|
|
2
|
+
readonly executable: string;
|
|
3
|
+
readonly argsPrefix: readonly string[];
|
|
4
|
+
};
|
|
5
|
+
type ResolveCodexUlwLoopCommandInput = {
|
|
6
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
7
|
+
readonly homeDir?: string;
|
|
8
|
+
readonly currentExecutablePaths?: readonly string[];
|
|
9
|
+
};
|
|
10
|
+
export declare function resolveCodexUlwLoopCommand(input?: ResolveCodexUlwLoopCommandInput): CodexUlwLoopCommand | null;
|
|
11
|
+
export declare function codexUlwLoop(args: readonly string[]): Promise<number>;
|
|
12
|
+
export {};
|
|
@@ -2,11 +2,13 @@ import type { CheckResult } from "../types";
|
|
|
2
2
|
interface ServerPluginInfo {
|
|
3
3
|
registered: boolean;
|
|
4
4
|
configPath: string | null;
|
|
5
|
+
packageExportsTui: boolean | null;
|
|
5
6
|
}
|
|
6
7
|
interface TuiPluginInfo {
|
|
7
8
|
registered: boolean;
|
|
8
9
|
configPath: string | null;
|
|
9
10
|
exists: boolean;
|
|
11
|
+
hasNamedTuiEntry: boolean;
|
|
10
12
|
}
|
|
11
13
|
export declare function detectServerPluginRegistration(): ServerPluginInfo;
|
|
12
14
|
export declare function detectTuiPluginRegistration(): TuiPluginInfo;
|