oh-my-codex 0.10.4 → 0.10.5
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/Cargo.lock +2 -2
- package/Cargo.toml +1 -1
- package/dist/agents/__tests__/role-model-tier.test.d.ts +2 -0
- package/dist/agents/__tests__/role-model-tier.test.d.ts.map +1 -0
- package/dist/agents/__tests__/role-model-tier.test.js +45 -0
- package/dist/agents/__tests__/role-model-tier.test.js.map +1 -0
- package/dist/agents/__tests__/skill-bridge.test.d.ts +2 -0
- package/dist/agents/__tests__/skill-bridge.test.d.ts.map +1 -0
- package/dist/agents/__tests__/skill-bridge.test.js +71 -0
- package/dist/agents/__tests__/skill-bridge.test.js.map +1 -0
- package/dist/agents/model-routing.d.ts +14 -0
- package/dist/agents/model-routing.d.ts.map +1 -0
- package/dist/agents/model-routing.js +34 -0
- package/dist/agents/model-routing.js.map +1 -0
- package/dist/agents/skill-bridge.d.ts +20 -0
- package/dist/agents/skill-bridge.d.ts.map +1 -0
- package/dist/agents/skill-bridge.js +150 -0
- package/dist/agents/skill-bridge.js.map +1 -0
- package/dist/cli/__tests__/runtime-native-resolution.test.d.ts +2 -0
- package/dist/cli/__tests__/runtime-native-resolution.test.d.ts.map +1 -0
- package/dist/cli/__tests__/runtime-native-resolution.test.js.map +1 -0
- package/dist/cli/__tests__/runtime-native.test.d.ts +2 -0
- package/dist/cli/__tests__/runtime-native.test.d.ts.map +1 -0
- package/dist/cli/__tests__/runtime-native.test.js.map +1 -0
- package/dist/cli/runtime-native.d.ts +23 -0
- package/dist/cli/runtime-native.d.ts.map +1 -0
- package/dist/cli/runtime-native.js +86 -0
- package/dist/cli/runtime-native.js.map +1 -0
- package/dist/hud/constants.d.ts +1 -1
- package/dist/hud/constants.js +1 -1
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts +2 -0
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts.map +1 -0
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.js.map +1 -0
- package/dist/team/__tests__/runtime.test.js +2 -2
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +0 -34
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/tmux-session.d.ts +4 -4
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +15 -48
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/utils/__tests__/agents-model-table-role-split.test.d.ts +2 -0
- package/dist/utils/__tests__/agents-model-table-role-split.test.d.ts.map +1 -0
- package/dist/utils/__tests__/agents-model-table-role-split.test.js +19 -0
- package/dist/utils/__tests__/agents-model-table-role-split.test.js.map +1 -0
- package/package.json +1 -1
package/Cargo.lock
CHANGED
package/Cargo.toml
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-model-tier.test.d.ts","sourceRoot":"","sources":["../../../src/agents/__tests__/role-model-tier.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { AGENT_DEFINITIONS } from '../definitions.js';
|
|
4
|
+
function preferredModelTier(role) {
|
|
5
|
+
return AGENT_DEFINITIONS[role]?.preferredModelTier;
|
|
6
|
+
}
|
|
7
|
+
describe('agent preferred model tiers', () => {
|
|
8
|
+
it('encodes the approved role split in explicit preferredModelTier metadata', () => {
|
|
9
|
+
const expected = {
|
|
10
|
+
'analyst': 'frontier',
|
|
11
|
+
'architect': 'frontier',
|
|
12
|
+
'build-fixer': 'mini',
|
|
13
|
+
'code-reviewer': 'frontier',
|
|
14
|
+
'code-simplifier': 'frontier',
|
|
15
|
+
'critic': 'frontier',
|
|
16
|
+
'debugger': 'mini',
|
|
17
|
+
'dependency-expert': 'mini',
|
|
18
|
+
'designer': 'mini',
|
|
19
|
+
'executor': 'mini',
|
|
20
|
+
'explore': 'spark',
|
|
21
|
+
'git-master': 'mini',
|
|
22
|
+
'planner': 'frontier',
|
|
23
|
+
'researcher': 'mini',
|
|
24
|
+
'security-reviewer': 'frontier',
|
|
25
|
+
'team-executor': 'frontier',
|
|
26
|
+
'test-engineer': 'frontier',
|
|
27
|
+
'verifier': 'mini',
|
|
28
|
+
'vision': 'frontier',
|
|
29
|
+
'writer': 'mini',
|
|
30
|
+
};
|
|
31
|
+
for (const [role, tier] of Object.entries(expected)) {
|
|
32
|
+
assert.equal(preferredModelTier(role), tier, `${role} should resolve to ${tier}`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
it('keeps explore as the only spark-tier role in the first rollout', () => {
|
|
36
|
+
const sparkRoles = Object.entries(AGENT_DEFINITIONS)
|
|
37
|
+
.filter(([, definition]) => definition.preferredModelTier === 'spark')
|
|
38
|
+
.map(([role]) => role)
|
|
39
|
+
.sort();
|
|
40
|
+
assert.deepEqual(sparkRoles, ['explore']);
|
|
41
|
+
assert.equal(preferredModelTier('style-reviewer'), 'default');
|
|
42
|
+
assert.equal(preferredModelTier('quality-reviewer'), 'default');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=role-model-tier.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"role-model-tier.test.js","sourceRoot":"","sources":["../../../src/agents/__tests__/role-model-tier.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAItD,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAQ,iBAAiB,CAAC,IAAI,CAA6D,EAAE,kBAAkB,CAAC;AAClH,CAAC;AAED,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,QAAQ,GAAuC;YACnD,SAAS,EAAE,UAAU;YACrB,WAAW,EAAE,UAAU;YACvB,aAAa,EAAE,MAAM;YACrB,eAAe,EAAE,UAAU;YAC3B,iBAAiB,EAAE,UAAU;YAC7B,QAAQ,EAAE,UAAU;YACpB,UAAU,EAAE,MAAM;YAClB,mBAAmB,EAAE,MAAM;YAC3B,UAAU,EAAE,MAAM;YAClB,UAAU,EAAE,MAAM;YAClB,SAAS,EAAE,OAAO;YAClB,YAAY,EAAE,MAAM;YACpB,SAAS,EAAE,UAAU;YACrB,YAAY,EAAE,MAAM;YACpB,mBAAmB,EAAE,UAAU;YAC/B,eAAe,EAAE,UAAU;YAC3B,eAAe,EAAE,UAAU;YAC3B,UAAU,EAAE,MAAM;YAClB,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,MAAM;SACjB,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpD,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,sBAAsB,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;aACjD,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAE,UAA0D,CAAC,kBAAkB,KAAK,OAAO,CAAC;aACtH,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;aACrB,IAAI,EAAE,CAAC;QAEV,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,SAAS,CAAC,CAAC;QAC9D,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-bridge.test.d.ts","sourceRoot":"","sources":["../../../src/agents/__tests__/skill-bridge.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { describe, it } from 'node:test';
|
|
3
|
+
import { mkdir, mkdtemp, rm, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { tmpdir } from 'node:os';
|
|
6
|
+
import { buildSkillBridgeResolutionGuidance, generateSkillBridgeAgentToml, listInstalledSkillBridgeAgents, } from '../skill-bridge.js';
|
|
7
|
+
describe('agents/skill-bridge', () => {
|
|
8
|
+
it('generates lightweight bridge TOML without developer instructions', () => {
|
|
9
|
+
const toml = generateSkillBridgeAgentToml({
|
|
10
|
+
name: 'code-review',
|
|
11
|
+
description: 'Run a comprehensive code review',
|
|
12
|
+
skillRef: 'code-review',
|
|
13
|
+
});
|
|
14
|
+
assert.match(toml, /# oh-my-codex skill bridge agent: code-review/);
|
|
15
|
+
assert.match(toml, /^skill_ref = "code-review"$/m);
|
|
16
|
+
assert.doesNotMatch(toml, /developer_instructions\s*=/);
|
|
17
|
+
});
|
|
18
|
+
it('discovers installed skill bridge agents and emits Codex-home-first guidance', async () => {
|
|
19
|
+
const wd = await mkdtemp(join(tmpdir(), 'omx-skill-bridge-'));
|
|
20
|
+
const home = join(wd, 'home');
|
|
21
|
+
const previousHome = process.env.HOME;
|
|
22
|
+
const previousCodexHome = process.env.CODEX_HOME;
|
|
23
|
+
process.env.HOME = home;
|
|
24
|
+
process.env.CODEX_HOME = join(home, '.codex');
|
|
25
|
+
try {
|
|
26
|
+
const projectAgentsDir = join(wd, '.codex', 'agents');
|
|
27
|
+
const userAgentsDir = join(home, '.codex', 'agents');
|
|
28
|
+
const userSkillsPath = join(home, '.codex', 'skills', 'plan');
|
|
29
|
+
const legacyProjectSkillsPath = join(wd, '.agents', 'skills', 'code-review');
|
|
30
|
+
await mkdir(projectAgentsDir, { recursive: true });
|
|
31
|
+
await mkdir(userAgentsDir, { recursive: true });
|
|
32
|
+
await mkdir(userSkillsPath, { recursive: true });
|
|
33
|
+
await mkdir(legacyProjectSkillsPath, { recursive: true });
|
|
34
|
+
await writeFile(join(userSkillsPath, 'SKILL.md'), '# user plan\n');
|
|
35
|
+
await writeFile(join(legacyProjectSkillsPath, 'SKILL.md'), '# legacy project review\n');
|
|
36
|
+
await writeFile(join(projectAgentsDir, 'plan.toml'), generateSkillBridgeAgentToml({
|
|
37
|
+
name: 'plan',
|
|
38
|
+
description: 'Strategic planning',
|
|
39
|
+
skillRef: 'plan',
|
|
40
|
+
}));
|
|
41
|
+
await writeFile(join(userAgentsDir, 'code-review.toml'), generateSkillBridgeAgentToml({
|
|
42
|
+
name: 'code-review',
|
|
43
|
+
description: 'Review code',
|
|
44
|
+
skillRef: 'code-review',
|
|
45
|
+
}));
|
|
46
|
+
const bridges = await listInstalledSkillBridgeAgents(wd);
|
|
47
|
+
assert.deepEqual(bridges.map((item) => [item.scope, item.name, item.skillRef]), [
|
|
48
|
+
['project', 'plan', 'plan'],
|
|
49
|
+
['user', 'code-review', 'code-review'],
|
|
50
|
+
]);
|
|
51
|
+
const guidance = await buildSkillBridgeResolutionGuidance(wd);
|
|
52
|
+
assert.match(guidance, /Native Skill Bridge/);
|
|
53
|
+
assert.match(guidance, new RegExp(`${join(home, '.codex', 'skills').replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}/<skill>/SKILL\.md`));
|
|
54
|
+
assert.match(guidance, /primary Codex skills path/);
|
|
55
|
+
assert.match(guidance, /legacy project fallback/);
|
|
56
|
+
assert.match(guidance, /legacy compatibility fallback/);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
if (typeof previousHome === 'string')
|
|
60
|
+
process.env.HOME = previousHome;
|
|
61
|
+
else
|
|
62
|
+
delete process.env.HOME;
|
|
63
|
+
if (typeof previousCodexHome === 'string')
|
|
64
|
+
process.env.CODEX_HOME = previousCodexHome;
|
|
65
|
+
else
|
|
66
|
+
delete process.env.CODEX_HOME;
|
|
67
|
+
await rm(wd, { recursive: true, force: true });
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=skill-bridge.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-bridge.test.js","sourceRoot":"","sources":["../../../src/agents/__tests__/skill-bridge.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { AgentDefinition } from './definitions.js';
|
|
2
|
+
export interface AgentModelResolutionContext {
|
|
3
|
+
frontierModel: string;
|
|
4
|
+
miniModel: string;
|
|
5
|
+
sparkModel: string;
|
|
6
|
+
subagentDefaultModel: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveAgentModelContext(configTomlContent: string, options?: {
|
|
9
|
+
codexHomeOverride?: string;
|
|
10
|
+
env?: NodeJS.ProcessEnv;
|
|
11
|
+
}): AgentModelResolutionContext;
|
|
12
|
+
export declare function resolveModelForPreferredTier(preferredModelTier: AgentDefinition['preferredModelTier'], context: AgentModelResolutionContext): string;
|
|
13
|
+
export declare function resolveAgentModel(agent: AgentDefinition, context: AgentModelResolutionContext): string;
|
|
14
|
+
//# sourceMappingURL=model-routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-routing.d.ts","sourceRoot":"","sources":["../../src/agents/model-routing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAWxD,MAAM,WAAW,2BAA2B;IAC1C,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE;IACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACpB,GACL,2BAA2B,CAiB7B;AAED,wBAAgB,4BAA4B,CAC1C,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,EACzD,OAAO,EAAE,2BAA2B,GACnC,MAAM,CAYR;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,2BAA2B,GACnC,MAAM,CAER"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getRootModelName } from '../config/generator.js';
|
|
2
|
+
import { DEFAULT_FRONTIER_MODEL, DEFAULT_MINI_MODEL, DEFAULT_SPARK_MODEL, getEnvConfiguredMainDefaultModel, getEnvConfiguredSparkDefaultModel, getSparkDefaultModel, } from '../config/models.js';
|
|
3
|
+
export function resolveAgentModelContext(configTomlContent, options = {}) {
|
|
4
|
+
const { codexHomeOverride, env = process.env } = options;
|
|
5
|
+
const frontierModel = getRootModelName(configTomlContent) ??
|
|
6
|
+
getEnvConfiguredMainDefaultModel(env, codexHomeOverride) ??
|
|
7
|
+
DEFAULT_FRONTIER_MODEL;
|
|
8
|
+
const sparkModel = getEnvConfiguredSparkDefaultModel(env, codexHomeOverride) ??
|
|
9
|
+
getSparkDefaultModel(codexHomeOverride) ??
|
|
10
|
+
DEFAULT_SPARK_MODEL;
|
|
11
|
+
return {
|
|
12
|
+
frontierModel,
|
|
13
|
+
miniModel: DEFAULT_MINI_MODEL,
|
|
14
|
+
sparkModel,
|
|
15
|
+
subagentDefaultModel: frontierModel,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
export function resolveModelForPreferredTier(preferredModelTier, context) {
|
|
19
|
+
switch (preferredModelTier) {
|
|
20
|
+
case 'frontier':
|
|
21
|
+
return context.frontierModel;
|
|
22
|
+
case 'mini':
|
|
23
|
+
return context.miniModel;
|
|
24
|
+
case 'spark':
|
|
25
|
+
return context.sparkModel;
|
|
26
|
+
case 'default':
|
|
27
|
+
default:
|
|
28
|
+
return context.subagentDefaultModel;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function resolveAgentModel(agent, context) {
|
|
32
|
+
return resolveModelForPreferredTier(agent.preferredModelTier, context);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=model-routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-routing.js","sourceRoot":"","sources":["../../src/agents/model-routing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,gCAAgC,EAChC,iCAAiC,EACjC,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAS7B,MAAM,UAAU,wBAAwB,CACtC,iBAAyB,EACzB,UAGI,EAAE;IAEN,MAAM,EAAE,iBAAiB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,aAAa,GACjB,gBAAgB,CAAC,iBAAiB,CAAC;QACnC,gCAAgC,CAAC,GAAG,EAAE,iBAAiB,CAAC;QACxD,sBAAsB,CAAC;IACzB,MAAM,UAAU,GACd,iCAAiC,CAAC,GAAG,EAAE,iBAAiB,CAAC;QACzD,oBAAoB,CAAC,iBAAiB,CAAC;QACvC,mBAAmB,CAAC;IAEtB,OAAO;QACL,aAAa;QACb,SAAS,EAAE,kBAAkB;QAC7B,UAAU;QACV,oBAAoB,EAAE,aAAa;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,kBAAyD,EACzD,OAAoC;IAEpC,QAAQ,kBAAkB,EAAE,CAAC;QAC3B,KAAK,UAAU;YACb,OAAO,OAAO,CAAC,aAAa,CAAC;QAC/B,KAAK,MAAM;YACT,OAAO,OAAO,CAAC,SAAS,CAAC;QAC3B,KAAK,OAAO;YACV,OAAO,OAAO,CAAC,UAAU,CAAC;QAC5B,KAAK,SAAS,CAAC;QACf;YACE,OAAO,OAAO,CAAC,oBAAoB,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAAsB,EACtB,OAAoC;IAEpC,OAAO,4BAA4B,CAAC,KAAK,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface SkillBridgeAgentConfig {
|
|
2
|
+
name: string;
|
|
3
|
+
description: string;
|
|
4
|
+
skillRef: string;
|
|
5
|
+
model?: string;
|
|
6
|
+
reasoningEffort?: 'low' | 'medium' | 'high' | 'xhigh';
|
|
7
|
+
}
|
|
8
|
+
export interface SkillBridgeAgentRecord {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
skillRef: string;
|
|
12
|
+
scope: 'project' | 'user';
|
|
13
|
+
path: string;
|
|
14
|
+
model?: string;
|
|
15
|
+
reasoningEffort?: 'low' | 'medium' | 'high' | 'xhigh';
|
|
16
|
+
}
|
|
17
|
+
export declare function generateSkillBridgeAgentToml(config: SkillBridgeAgentConfig): string;
|
|
18
|
+
export declare function listInstalledSkillBridgeAgents(projectRoot?: string): Promise<SkillBridgeAgentRecord[]>;
|
|
19
|
+
export declare function buildSkillBridgeResolutionGuidance(projectRoot?: string): Promise<string>;
|
|
20
|
+
//# sourceMappingURL=skill-bridge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-bridge.d.ts","sourceRoot":"","sources":["../../src/agents/skill-bridge.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;CACvD;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;CACvD;AAoBD,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAgBnF;AA+CD,wBAAsB,8BAA8B,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAc5G;AAoCD,wBAAsB,kCAAkC,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAiC9F"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import TOML from '@iarna/toml';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { readFile, readdir } from 'node:fs/promises';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { codexAgentsDir, listInstalledSkillDirectories, projectCodexAgentsDir, projectSkillsDir, userSkillsDir, } from '../utils/paths.js';
|
|
6
|
+
function escapeTomlBasicString(s) {
|
|
7
|
+
return s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
8
|
+
}
|
|
9
|
+
function normalizeNonEmptyString(value) {
|
|
10
|
+
if (typeof value !== 'string')
|
|
11
|
+
return undefined;
|
|
12
|
+
const trimmed = value.trim();
|
|
13
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
14
|
+
}
|
|
15
|
+
function normalizeReasoning(value) {
|
|
16
|
+
const normalized = normalizeNonEmptyString(value)?.toLowerCase();
|
|
17
|
+
if (normalized === 'low' || normalized === 'medium' || normalized === 'high' || normalized === 'xhigh') {
|
|
18
|
+
return normalized;
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
export function generateSkillBridgeAgentToml(config) {
|
|
23
|
+
const lines = [
|
|
24
|
+
`# oh-my-codex skill bridge agent: ${config.name}`,
|
|
25
|
+
`name = "${escapeTomlBasicString(config.name)}"`,
|
|
26
|
+
`description = "${escapeTomlBasicString(config.description)}"`,
|
|
27
|
+
];
|
|
28
|
+
if (config.model) {
|
|
29
|
+
lines.push(`model = "${escapeTomlBasicString(config.model)}"`);
|
|
30
|
+
}
|
|
31
|
+
if (config.reasoningEffort) {
|
|
32
|
+
lines.push(`model_reasoning_effort = "${config.reasoningEffort}"`);
|
|
33
|
+
}
|
|
34
|
+
lines.push(`skill_ref = "${escapeTomlBasicString(config.skillRef)}"`, '');
|
|
35
|
+
return lines.join('\n');
|
|
36
|
+
}
|
|
37
|
+
function parseSkillBridgeAgentRecord(content, path, scope) {
|
|
38
|
+
try {
|
|
39
|
+
const parsed = TOML.parse(content);
|
|
40
|
+
const skillRef = normalizeNonEmptyString(parsed.skill_ref);
|
|
41
|
+
const name = normalizeNonEmptyString(parsed.name);
|
|
42
|
+
const description = normalizeNonEmptyString(parsed.description);
|
|
43
|
+
if (!skillRef || !name || !description)
|
|
44
|
+
return null;
|
|
45
|
+
return {
|
|
46
|
+
name,
|
|
47
|
+
description,
|
|
48
|
+
skillRef,
|
|
49
|
+
scope,
|
|
50
|
+
path,
|
|
51
|
+
model: normalizeNonEmptyString(parsed.model),
|
|
52
|
+
reasoningEffort: normalizeReasoning(parsed.model_reasoning_effort),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
async function readSkillBridgeAgentsFromDir(dir, scope) {
|
|
60
|
+
if (!existsSync(dir))
|
|
61
|
+
return [];
|
|
62
|
+
const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
63
|
+
const bridges = [];
|
|
64
|
+
for (const entry of entries) {
|
|
65
|
+
if (!entry.isFile() || !entry.name.endsWith('.toml'))
|
|
66
|
+
continue;
|
|
67
|
+
const path = join(dir, entry.name);
|
|
68
|
+
const parsed = parseSkillBridgeAgentRecord(await readFile(path, 'utf-8'), path, scope);
|
|
69
|
+
if (parsed)
|
|
70
|
+
bridges.push(parsed);
|
|
71
|
+
}
|
|
72
|
+
return bridges.sort((a, b) => a.name.localeCompare(b.name));
|
|
73
|
+
}
|
|
74
|
+
export async function listInstalledSkillBridgeAgents(projectRoot) {
|
|
75
|
+
const [projectAgents, userAgents] = await Promise.all([
|
|
76
|
+
readSkillBridgeAgentsFromDir(projectCodexAgentsDir(projectRoot), 'project'),
|
|
77
|
+
readSkillBridgeAgentsFromDir(codexAgentsDir(), 'user'),
|
|
78
|
+
]);
|
|
79
|
+
const deduped = [];
|
|
80
|
+
const seenNames = new Set();
|
|
81
|
+
for (const item of [...projectAgents, ...userAgents]) {
|
|
82
|
+
if (seenNames.has(item.name))
|
|
83
|
+
continue;
|
|
84
|
+
seenNames.add(item.name);
|
|
85
|
+
deduped.push(item);
|
|
86
|
+
}
|
|
87
|
+
return deduped;
|
|
88
|
+
}
|
|
89
|
+
function listNames(items, limit = 8) {
|
|
90
|
+
if (items.length === 0)
|
|
91
|
+
return '- none';
|
|
92
|
+
const visible = items.slice(0, limit).map((item) => `- \`${item}\``);
|
|
93
|
+
if (items.length > limit)
|
|
94
|
+
visible.push(`- ...and ${items.length - limit} more`);
|
|
95
|
+
return visible.join('\n');
|
|
96
|
+
}
|
|
97
|
+
function buildSkillResolutionOrder(skillsByName, projectRoot) {
|
|
98
|
+
const projectScoped = [...skillsByName.values()].filter((item) => item.scope === 'project');
|
|
99
|
+
const userScoped = [...skillsByName.values()].filter((item) => item.scope === 'user');
|
|
100
|
+
const lines = [
|
|
101
|
+
'Resolution order for a referenced skill:',
|
|
102
|
+
`1. \`${userSkillsDir()}/<skill>/SKILL.md\` (primary Codex skills path)`,
|
|
103
|
+
`2. \`${projectSkillsDir(projectRoot)}/<skill>/SKILL.md\` (legacy project fallback)`,
|
|
104
|
+
'3. `~/.agents/skills/<skill>/SKILL.md` (legacy compatibility fallback)',
|
|
105
|
+
];
|
|
106
|
+
if (userScoped.length > 0 || projectScoped.length > 0) {
|
|
107
|
+
lines.push('');
|
|
108
|
+
if (userScoped.length > 0) {
|
|
109
|
+
lines.push(`Codex-installed skills (primary):\n${listNames(userScoped.map((item) => item.name))}`);
|
|
110
|
+
}
|
|
111
|
+
if (projectScoped.length > 0) {
|
|
112
|
+
lines.push(`Legacy project skills fallback:\n${listNames(projectScoped.map((item) => item.name))}`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return lines;
|
|
116
|
+
}
|
|
117
|
+
export async function buildSkillBridgeResolutionGuidance(projectRoot) {
|
|
118
|
+
const bridges = await listInstalledSkillBridgeAgents(projectRoot);
|
|
119
|
+
if (bridges.length === 0)
|
|
120
|
+
return '';
|
|
121
|
+
const installedSkills = await listInstalledSkillDirectories(projectRoot);
|
|
122
|
+
const skillsByName = new Map(installedSkills.map((item) => [item.name, item]));
|
|
123
|
+
const bridgeLines = bridges.map((bridge) => {
|
|
124
|
+
const primaryCodexSkillPath = join(userSkillsDir(), bridge.skillRef, 'SKILL.md');
|
|
125
|
+
const legacyProjectSkillPath = join(projectSkillsDir(projectRoot), bridge.skillRef, 'SKILL.md');
|
|
126
|
+
const legacyUserSkillPath = join(process.env.HOME || '~', '.agents', 'skills', bridge.skillRef, 'SKILL.md');
|
|
127
|
+
const suffix = existsSync(primaryCodexSkillPath)
|
|
128
|
+
? ' -> Codex skills primary'
|
|
129
|
+
: existsSync(legacyProjectSkillPath)
|
|
130
|
+
? ' -> legacy project fallback'
|
|
131
|
+
: existsSync(legacyUserSkillPath)
|
|
132
|
+
? ' -> legacy user fallback'
|
|
133
|
+
: skillsByName.get(bridge.skillRef)
|
|
134
|
+
? ` -> ${skillsByName.get(bridge.skillRef)?.scope} skill`
|
|
135
|
+
: ' -> unresolved skill (keep fallback resolution order)';
|
|
136
|
+
return `- \`${bridge.name}\` => \`${bridge.skillRef}\`${suffix}`;
|
|
137
|
+
});
|
|
138
|
+
return [
|
|
139
|
+
'**Native Skill Bridge:**',
|
|
140
|
+
'Some lightweight native agent TOMLs declare `skill_ref` instead of embedding skill markdown.',
|
|
141
|
+
'When the active native agent includes `skill_ref`, resolve that reference at runtime and follow the installed SKILL.md instructions from disk.',
|
|
142
|
+
'Do not expect long `developer_instructions` blocks inside skill-bridge TOMLs.',
|
|
143
|
+
'',
|
|
144
|
+
'Installed skill bridge agents:',
|
|
145
|
+
...bridgeLines,
|
|
146
|
+
'',
|
|
147
|
+
...buildSkillResolutionOrder(skillsByName, projectRoot),
|
|
148
|
+
].join('\n');
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=skill-bridge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-bridge.js","sourceRoot":"","sources":["../../src/agents/skill-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,cAAc,EACd,6BAA6B,EAC7B,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,GAEd,MAAM,mBAAmB,CAAC;AAoB3B,SAAS,qBAAqB,CAAC,CAAS;IACtC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,MAAM,UAAU,GAAG,uBAAuB,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACjE,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QACvG,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAA8B;IACzE,MAAM,KAAK,GAAG;QACZ,qCAAqC,MAAM,CAAC,IAAI,EAAE;QAClD,WAAW,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;QAChD,kBAAkB,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;KAC/D,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,YAAY,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gBAAgB,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,2BAA2B,CAClC,OAAe,EACf,IAAY,EACZ,KAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;QAC9D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,uBAAuB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAEpD,OAAO;YACL,IAAI;YACJ,WAAW;YACX,QAAQ;YACR,KAAK;YACL,IAAI;YACJ,KAAK,EAAE,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5C,eAAe,EAAE,kBAAkB,CAAC,MAAM,CAAC,sBAAsB,CAAC;SACnE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,GAAW,EACX,KAAyB;IAEzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,OAAO,GAA6B,EAAE,CAAC;IAE7C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,MAAM,GAAG,2BAA2B,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvF,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,8BAA8B,CAAC,WAAoB;IACvE,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpD,4BAA4B,CAAC,qBAAqB,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;QAC3E,4BAA4B,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC;KACvD,CAAC,CAAC;IAEH,MAAM,OAAO,GAA6B,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,aAAa,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;QACrD,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QACvC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAC,KAAe,EAAE,KAAK,GAAG,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;IACrE,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,MAAM,GAAG,KAAK,OAAO,CAAC,CAAC;IAChF,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,yBAAyB,CAChC,YAA0D,EAC1D,WAAoB;IAEpB,MAAM,aAAa,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAC5F,MAAM,UAAU,GAAG,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC;IAEtF,MAAM,KAAK,GAAG;QACZ,0CAA0C;QAC1C,QAAQ,aAAa,EAAE,iDAAiD;QACxE,QAAQ,gBAAgB,CAAC,WAAW,CAAC,+CAA+C;QACpF,wEAAwE;KACzE,CAAC;IAEF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,sCAAsC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,oCAAoC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,WAAoB;IAC3E,MAAM,OAAO,GAAG,MAAM,8BAA8B,CAAC,WAAW,CAAC,CAAC;IAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,eAAe,GAAG,MAAM,6BAA6B,CAAC,WAAW,CAAC,CAAC;IACzE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACzC,MAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACjF,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChG,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5G,MAAM,MAAM,GAAG,UAAU,CAAC,qBAAqB,CAAC;YAC9C,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,UAAU,CAAC,sBAAsB,CAAC;gBAClC,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC;oBAC/B,CAAC,CAAC,0BAA0B;oBAC5B,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;wBACjC,CAAC,CAAC,OAAO,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,QAAQ;wBACzD,CAAC,CAAC,uDAAuD,CAAC;QAClE,OAAO,OAAO,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,0BAA0B;QAC1B,8FAA8F;QAC9F,gJAAgJ;QAChJ,+EAA+E;QAC/E,EAAE;QACF,gCAAgC;QAChC,GAAG,WAAW;QACd,EAAE;QACF,GAAG,yBAAyB,CAAC,YAAY,EAAE,WAAW,CAAC;KACxD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-native-resolution.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/runtime-native-resolution.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-native-resolution.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/runtime-native-resolution.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EACL,yBAAyB,EACzB,0BAA0B,EAC1B,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,QAAQ,GAAG,wBAAwB,CAAC;YACxC,GAAG,EAAE,gBAAgB;YACrB,GAAG,EAAE,EAAE,eAAe,EAAE,0BAA0B,EAAE;YACpD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK;SACpB,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,uCAAuC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,WAAW,GAAG,OAAO,CAAC;QAC5B,MAAM,QAAQ,GAAG,yBAAyB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,0BAA0B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,gCAAgC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,wBAAwB,CAAC;YACxC,GAAG,EAAE,WAAW;YAChB,WAAW;YACX,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,MAAM;SAC7E,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,WAAW,GAAG,OAAO,CAAC;QAC5B,MAAM,SAAS,GAAG,0BAA0B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEnE,MAAM,QAAQ,GAAG,wBAAwB,CAAC;YACxC,GAAG,EAAE,WAAW;YAChB,WAAW;YACX,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS;SACrC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kFAAkF,EAAE,GAAG,EAAE;QAC1F,MAAM,WAAW,GAAG,OAAO,CAAC;QAC5B,MAAM,MAAM,GAAG,gCAAgC,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,wBAAwB,CAAC;YACxC,GAAG,EAAE,WAAW;YAChB,WAAW;YACX,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,KAAK;YACX,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM;SAClC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-native.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/runtime-native.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-native.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/runtime-native.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,MAAM,sBAAsB,CAAC;AAElG,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,KAAK,CACV,8BAA8B,CAAC,KAAK,EAAE,GAAG,CAAC,EAC1C,yDAAyD,CAC1D,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sFAAsF,EAAE,GAAG,EAAE;QAC9F,MAAM,CAAC,KAAK,CACV,0BAA0B,CAAC,iBAAiB,CAAC,EAC7C,oCAAoC,CACrC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,GAAG,EAAE;QACjF,MAAM,CAAC,KAAK,CACV,0BAA0B,CAAC,iBAAiB,EAAE;YAC5C,GAAG,EAAE,EAAE,sBAAsB,EAAE,GAAG,EAAE;SACrC,CAAC,EACF,yBAAyB,CAC1B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,KAAK,CACV,0BAA0B,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EACpE,qDAAqD,CACtD,CAAC;QACF,MAAM,CAAC,KAAK,CACV,0BAA0B,CAAC,iBAAiB,EAAE;YAC5C,MAAM,EAAE,SAAS;YACjB,GAAG,EAAE,EAAE,sBAAsB,EAAE,GAAG,EAAE,eAAe,EAAE,uBAAuB,EAAE;SAC/E,CAAC,EACF,oDAAoD,CACrD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare const RUNTIME_BIN_ENV = "OMX_RUNTIME_BIN";
|
|
2
|
+
export interface ResolveRuntimeBinaryPathOptions {
|
|
3
|
+
cwd?: string;
|
|
4
|
+
env?: NodeJS.ProcessEnv;
|
|
5
|
+
packageRoot?: string;
|
|
6
|
+
platform?: NodeJS.Platform;
|
|
7
|
+
arch?: string;
|
|
8
|
+
exists?: (path: string) => boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface BuildPhase1HudWatchCommandOptions {
|
|
11
|
+
env?: NodeJS.ProcessEnv;
|
|
12
|
+
preset?: string;
|
|
13
|
+
runtimeBinary?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function buildRuntimeCapturePaneCommand(paneId: string, tailLines: number): string;
|
|
16
|
+
export declare function buildPhase1HudWatchCommand(omxBin: string, options?: BuildPhase1HudWatchCommandOptions): string;
|
|
17
|
+
export declare function runtimeBinaryName(platform?: NodeJS.Platform): string;
|
|
18
|
+
export declare function packagedRuntimeBinaryPath(packageRoot?: string, platform?: NodeJS.Platform, arch?: string): string;
|
|
19
|
+
export declare function repoLocalRuntimeBinaryPath(packageRoot?: string, platform?: NodeJS.Platform): string;
|
|
20
|
+
export declare function nestedRepoLocalRuntimeBinaryPath(packageRoot?: string, platform?: NodeJS.Platform): string;
|
|
21
|
+
export declare function resolveRuntimeBinaryPath(options?: ResolveRuntimeBinaryPathOptions): string;
|
|
22
|
+
export declare function resolveRuntimeBinaryPathWithHydration(options?: ResolveRuntimeBinaryPathOptions): Promise<string>;
|
|
23
|
+
//# sourceMappingURL=runtime-native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-native.d.ts","sourceRoot":"","sources":["../../src/cli/runtime-native.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,eAAe,oBAAyB,CAAC;AAGtD,MAAM,WAAW,+BAA+B;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,iCAAiC;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAWD,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,iCAAsC,GAC9C,MAAM,CAaR;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAAG,MAAM,CAEtF;AAED,wBAAgB,yBAAyB,CACvC,WAAW,SAAmB,EAC9B,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,IAAI,GAAE,MAAiB,GACtB,MAAM,CAER;AAED,wBAAgB,0BAA0B,CACxC,WAAW,SAAmB,EAC9B,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAER;AAED,wBAAgB,gCAAgC,CAC9C,WAAW,SAAmB,EAC9B,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAER;AAED,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,+BAAoC,GAAG,MAAM,CA4B9F;AAED,wBAAsB,qCAAqC,CACzD,OAAO,GAAE,+BAAoC,GAC5C,OAAO,CAAC,MAAM,CAAC,CAmCjB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { existsSync } from 'fs';
|
|
2
|
+
import { arch as osArch } from 'os';
|
|
3
|
+
import { isAbsolute, join, resolve } from 'path';
|
|
4
|
+
import { getPackageRoot } from '../utils/package.js';
|
|
5
|
+
import { RUNTIME_BIN_ENV as RUNTIME_BIN_ENV_SHARED, getPackageVersion, hydrateNativeBinary, resolveCachedNativeBinaryPath, } from './native-assets.js';
|
|
6
|
+
export const RUNTIME_BIN_ENV = RUNTIME_BIN_ENV_SHARED;
|
|
7
|
+
const RUNTIME_HUD_NATIVE_ENV = 'OMX_RUNTIME_HUD_NATIVE';
|
|
8
|
+
function quoteShellArg(value) {
|
|
9
|
+
return `'${value.replace(/'/g, `'\"'\"'`)}'`;
|
|
10
|
+
}
|
|
11
|
+
function parseHudPreset(value) {
|
|
12
|
+
if (value === 'minimal' || value === 'focused' || value === 'full')
|
|
13
|
+
return value;
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
export function buildRuntimeCapturePaneCommand(paneId, tailLines) {
|
|
17
|
+
return `omx-runtime capture-pane --pane-id ${paneId} --tail-lines ${tailLines}`;
|
|
18
|
+
}
|
|
19
|
+
export function buildPhase1HudWatchCommand(omxBin, options = {}) {
|
|
20
|
+
const env = options.env ?? process.env;
|
|
21
|
+
const preset = parseHudPreset(options.preset);
|
|
22
|
+
const presetArg = preset ? ` --preset=${preset}` : '';
|
|
23
|
+
if (env[RUNTIME_HUD_NATIVE_ENV] === '1') {
|
|
24
|
+
const runtimeBinary = options.runtimeBinary?.trim()
|
|
25
|
+
|| env[RUNTIME_BIN_ENV]?.trim()
|
|
26
|
+
|| runtimeBinaryName(process.platform);
|
|
27
|
+
return `${quoteShellArg(runtimeBinary)} hud-watch${presetArg}`;
|
|
28
|
+
}
|
|
29
|
+
return `node ${quoteShellArg(omxBin)} hud --watch${presetArg}`;
|
|
30
|
+
}
|
|
31
|
+
export function runtimeBinaryName(platform = process.platform) {
|
|
32
|
+
return platform === 'win32' ? 'omx-runtime.exe' : 'omx-runtime';
|
|
33
|
+
}
|
|
34
|
+
export function packagedRuntimeBinaryPath(packageRoot = getPackageRoot(), platform = process.platform, arch = osArch()) {
|
|
35
|
+
return join(packageRoot, 'bin', 'rust', `${platform}-${arch}`, runtimeBinaryName(platform));
|
|
36
|
+
}
|
|
37
|
+
export function repoLocalRuntimeBinaryPath(packageRoot = getPackageRoot(), platform = process.platform) {
|
|
38
|
+
return join(packageRoot, 'target', 'release', runtimeBinaryName(platform));
|
|
39
|
+
}
|
|
40
|
+
export function nestedRepoLocalRuntimeBinaryPath(packageRoot = getPackageRoot(), platform = process.platform) {
|
|
41
|
+
return join(packageRoot, 'crates', 'omx-runtime', 'target', 'release', runtimeBinaryName(platform));
|
|
42
|
+
}
|
|
43
|
+
export function resolveRuntimeBinaryPath(options = {}) {
|
|
44
|
+
const { cwd = process.cwd(), env = process.env, packageRoot = getPackageRoot(), platform = process.platform, arch = osArch(), exists = existsSync, } = options;
|
|
45
|
+
const override = env[RUNTIME_BIN_ENV]?.trim();
|
|
46
|
+
if (override) {
|
|
47
|
+
return isAbsolute(override) ? override : resolve(cwd, override);
|
|
48
|
+
}
|
|
49
|
+
const packaged = packagedRuntimeBinaryPath(packageRoot, platform, arch);
|
|
50
|
+
if (exists(packaged))
|
|
51
|
+
return packaged;
|
|
52
|
+
const repoLocal = repoLocalRuntimeBinaryPath(packageRoot, platform);
|
|
53
|
+
if (exists(repoLocal))
|
|
54
|
+
return repoLocal;
|
|
55
|
+
const nestedRepoLocal = nestedRepoLocalRuntimeBinaryPath(packageRoot, platform);
|
|
56
|
+
if (exists(nestedRepoLocal))
|
|
57
|
+
return nestedRepoLocal;
|
|
58
|
+
throw new Error(`[runtime-native] native binary not found. Checked ${packaged}, ${repoLocal}, and ${nestedRepoLocal}. `
|
|
59
|
+
+ `Set ${RUNTIME_BIN_ENV} to override the path.`);
|
|
60
|
+
}
|
|
61
|
+
export async function resolveRuntimeBinaryPathWithHydration(options = {}) {
|
|
62
|
+
const { cwd = process.cwd(), env = process.env, packageRoot = getPackageRoot(), platform = process.platform, arch = osArch(), exists = existsSync, } = options;
|
|
63
|
+
const override = env[RUNTIME_BIN_ENV]?.trim();
|
|
64
|
+
if (override) {
|
|
65
|
+
return isAbsolute(override) ? override : resolve(cwd, override);
|
|
66
|
+
}
|
|
67
|
+
const version = await getPackageVersion(packageRoot);
|
|
68
|
+
const cached = resolveCachedNativeBinaryPath('omx-runtime', version, platform, arch, env);
|
|
69
|
+
if (exists(cached))
|
|
70
|
+
return cached;
|
|
71
|
+
const packaged = packagedRuntimeBinaryPath(packageRoot, platform, arch);
|
|
72
|
+
if (exists(packaged))
|
|
73
|
+
return packaged;
|
|
74
|
+
const repoLocal = repoLocalRuntimeBinaryPath(packageRoot, platform);
|
|
75
|
+
if (exists(repoLocal))
|
|
76
|
+
return repoLocal;
|
|
77
|
+
const nestedRepoLocal = nestedRepoLocalRuntimeBinaryPath(packageRoot, platform);
|
|
78
|
+
if (exists(nestedRepoLocal))
|
|
79
|
+
return nestedRepoLocal;
|
|
80
|
+
const hydrated = await hydrateNativeBinary('omx-runtime', { packageRoot, env, platform, arch });
|
|
81
|
+
if (hydrated)
|
|
82
|
+
return hydrated;
|
|
83
|
+
throw new Error(`[runtime-native] native binary not found. Checked ${cached}, ${packaged}, ${repoLocal}, and ${nestedRepoLocal}. `
|
|
84
|
+
+ `Reconnect to the network so OMX can fetch the release asset, or set ${RUNTIME_BIN_ENV} to override the path.`);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=runtime-native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-native.js","sourceRoot":"","sources":["../../src/cli/runtime-native.ts"],"names":[],"mappings":"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"}
|
package/dist/hud/constants.d.ts
CHANGED
package/dist/hud/constants.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-run-native-cutover.test.d.ts","sourceRoot":"","sources":["../../../src/mcp/__tests__/runtime-run-native-cutover.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-run-native-cutover.test.js","sourceRoot":"","sources":["../../../src/mcp/__tests__/runtime-run-native-cutover.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,gBAAgB,GAAG,YAAY,CACnC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,gBAAgB,CAAC,EACrE,MAAM,CACP,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;QAClD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB,0BAA0B,EAC1B,kFAAkF,CACnF,CAAC;QACF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB,2DAA2D,EAC3D,kFAAkF,CACnF,CAAC;QACF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB,0BAA0B,EAC1B,mGAAmG,CACpG,CAAC;QACF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB,qBAAqB,EACrB,gHAAgH,CACjH,CAAC;QACF,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB,qBAAqB,EACrB,sFAAsF,CACvF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -894,8 +894,8 @@ exit 0
|
|
|
894
894
|
assert.equal(tmuxLog.match(standaloneHudSplitRe)?.length ?? 0, 1);
|
|
895
895
|
assert.equal(tmuxLog.match(/set-hook -t leader:0 client-resized\[\d+\]/g)?.length ?? 0, 2);
|
|
896
896
|
assert.equal(tmuxLog.match(/set-hook -t leader:0 client-attached\[\d+\]/g)?.length ?? 0, 2);
|
|
897
|
-
assert.
|
|
898
|
-
assert.
|
|
897
|
+
assert.equal(tmuxLog.match(/run-shell -b sleep \d+; tmux resize-pane -t %3 -y \d+ >/g)?.length ?? 0, 3);
|
|
898
|
+
assert.equal(tmuxLog.match(/run-shell tmux resize-pane -t %3 -y \d+ >/g)?.length ?? 0, 3);
|
|
899
899
|
assert.ok((tmuxLog.match(/select-layout -t leader:0 main-vertical/g)?.length ?? 0) >= 2);
|
|
900
900
|
assert.match(tmuxLog, /kill-pane -t %3/);
|
|
901
901
|
});
|