mirror of
https://fastgit.cc/github.com/Yeachan-Heo/oh-my-claudecode
synced 2026-04-20 21:00:50 +08:00
Keep PR #2701 focused on workflow-slot state changes
The original branch update bundled unrelated generated dist churn alongside the
intended workflow-slot/state-init source changes. This follow-up commit reverts
only the generated artifacts that do not correspond to the touched source areas,
so the PR diff stays aligned with the bridge, keyword-detector, persistent-mode,
mode-registry, skill-state, mode-names, and state-tools changes.
Constraint: GitHub PR #2701 must update via the real head branch instead of a local-only approval path
Constraint: Keep the follow-up diff limited to generated artifacts that shrink the existing PR scope
Rejected: Force-push a rewritten replacement commit | unnecessary history rewrite for a narrow cleanup-only fix
Rejected: Keep all dist outputs from 56718e05 | preserves unrelated churn that blocks review
Confidence: high
Scope-risk: narrow
Reversibility: clean
Directive: Regenerate and commit dist only for source areas that remain in the final PR diff
Tested: Branch diff review vs dev after cleanup; targeted verification pending on final commit SHA
Not-tested: Full project-wide build/lint suite for this cleanup-only dist follow-up
This commit is contained in:
6
dist/__tests__/auto-update.test.js
generated
vendored
6
dist/__tests__/auto-update.test.js
generated
vendored
@@ -134,7 +134,7 @@ describe('auto-update reconciliation', () => {
|
||||
});
|
||||
it('syncs active plugin cache roots and logs when copy occurs', () => {
|
||||
const consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
||||
const activeRoot = join(CLAUDE_CONFIG_DIR, 'plugins', 'cache', 'omc', 'oh-my-claudecode', '4.1.5');
|
||||
const activeRoot = '/tmp/.claude/plugins/cache/omc/oh-my-claudecode/4.1.5';
|
||||
mockedReadFileSync.mockImplementation((path) => {
|
||||
const normalized = String(path).replace(/\\/g, '/');
|
||||
if (normalized.includes('.omc-version.json')) {
|
||||
@@ -308,8 +308,8 @@ describe('auto-update reconciliation', () => {
|
||||
});
|
||||
it('dedupes plugin roots and ignores missing targets during sync', () => {
|
||||
const consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
|
||||
const activeRoot = join(CLAUDE_CONFIG_DIR, 'plugins', 'cache', 'omc', 'oh-my-claudecode', '4.1.5');
|
||||
const staleRoot = join(CLAUDE_CONFIG_DIR, 'plugins', 'cache', 'omc', 'oh-my-claudecode', '4.1.4');
|
||||
const activeRoot = '/tmp/.claude/plugins/cache/omc/oh-my-claudecode/4.1.5';
|
||||
const staleRoot = '/tmp/.claude/plugins/cache/omc/oh-my-claudecode/4.1.4';
|
||||
process.env.CLAUDE_PLUGIN_ROOT = activeRoot;
|
||||
mockedReadFileSync.mockImplementation((path) => {
|
||||
const normalized = String(path).replace(/\\/g, '/');
|
||||
|
||||
2
dist/__tests__/auto-update.test.js.map
generated
vendored
2
dist/__tests__/auto-update.test.js.map
generated
vendored
File diff suppressed because one or more lines are too long
35
dist/__tests__/bedrock-lm-suffix-hook.test.js
generated
vendored
35
dist/__tests__/bedrock-lm-suffix-hook.test.js
generated
vendored
@@ -161,22 +161,7 @@ function runHook(toolInput, env) {
|
||||
const result = spawnSync('node', [HOOK_PATH], {
|
||||
input: stdin,
|
||||
encoding: 'utf8',
|
||||
env: {
|
||||
...process.env,
|
||||
// Reset tier-resolution chain so host env doesn't leak into tests.
|
||||
OMC_SUBAGENT_MODEL: '',
|
||||
OMC_MODEL_LOW: '',
|
||||
OMC_MODEL_MEDIUM: '',
|
||||
OMC_MODEL_HIGH: '',
|
||||
CLAUDE_CODE_BEDROCK_HAIKU_MODEL: '',
|
||||
CLAUDE_CODE_BEDROCK_SONNET_MODEL: '',
|
||||
CLAUDE_CODE_BEDROCK_OPUS_MODEL: '',
|
||||
ANTHROPIC_DEFAULT_HAIKU_MODEL: '',
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: '',
|
||||
ANTHROPIC_DEFAULT_OPUS_MODEL: '',
|
||||
...env,
|
||||
OMC_ROUTING_FORCE_INHERIT: 'true',
|
||||
},
|
||||
env: { ...process.env, ...env, OMC_ROUTING_FORCE_INHERIT: 'true' },
|
||||
timeout: 10000,
|
||||
});
|
||||
const lines = (result.stdout || '').split('\n').filter(Boolean);
|
||||
@@ -212,21 +197,13 @@ describe('hook integration — force-inherit + [1m] scenarios', () => {
|
||||
expect(result.reason).toMatch(/model="sonnet"/);
|
||||
expect(result.reason).toMatch(/global\.anthropic\.claude-sonnet-4-6\[1m\]/);
|
||||
});
|
||||
it('derives tier alias from session model when ANTHROPIC_DEFAULT_SONNET_MODEL is set', () => {
|
||||
const result = runHook({}, {
|
||||
ANTHROPIC_MODEL: 'global.anthropic.claude-sonnet-4-6[1m]',
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
||||
});
|
||||
expect(result.denied).toBe(true);
|
||||
// normalizeToCcAlias(sessionModel) → 'sonnet'; resolvedSafe is truthy
|
||||
expect(result.reason).toMatch(/model="sonnet"/);
|
||||
});
|
||||
it('derives tier alias from OMC_SUBAGENT_MODEL when set (backward compat)', () => {
|
||||
it('derives tier alias from OMC_SUBAGENT_MODEL when set', () => {
|
||||
const result = runHook({}, {
|
||||
ANTHROPIC_MODEL: 'global.anthropic.claude-sonnet-4-6[1m]',
|
||||
OMC_SUBAGENT_MODEL: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
||||
});
|
||||
expect(result.denied).toBe(true);
|
||||
// normalizeToCcAlias('us.anthropic.claude-sonnet-4-5-...') → 'sonnet'
|
||||
expect(result.reason).toMatch(/model="sonnet"/);
|
||||
});
|
||||
it('denies no-model call when only ANTHROPIC_MODEL has [1m] suffix (any [1m] triggers deny)', () => {
|
||||
@@ -246,13 +223,13 @@ describe('hook integration — force-inherit + [1m] scenarios', () => {
|
||||
expect(result.reason).toMatch(/model="sonnet"/);
|
||||
expect(result.reason).toMatch(/claude-sonnet-4-6\[1m\]/);
|
||||
});
|
||||
it('derives tier alias from ANTHROPIC_DEFAULT_SONNET_MODEL for guidance in [1m] deny', () => {
|
||||
it('derives tier alias from OMC_SUBAGENT_MODEL for guidance in [1m] deny', () => {
|
||||
// normalizeToCcAlias('us.anthropic.claude-sonnet-4-5-20250929-v1:0') → 'sonnet'
|
||||
const result = runHook({}, {
|
||||
ANTHROPIC_MODEL: 'claude-sonnet-4-6[1m]',
|
||||
ANTHROPIC_DEFAULT_SONNET_MODEL: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
||||
OMC_SUBAGENT_MODEL: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
||||
});
|
||||
expect(result.denied).toBe(true);
|
||||
// normalizeToCcAlias('claude-sonnet-4-6[1m]') → 'sonnet'; resolvedSafe is truthy
|
||||
expect(result.reason).toMatch(/model="sonnet"/);
|
||||
});
|
||||
it('denies no-model call when CLAUDE_MODEL is provider-specific[1m] but ANTHROPIC_MODEL is bare[1m]', () => {
|
||||
|
||||
2
dist/__tests__/bedrock-lm-suffix-hook.test.js.map
generated
vendored
2
dist/__tests__/bedrock-lm-suffix-hook.test.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/__tests__/bedrock-model-routing.test.js
generated
vendored
2
dist/__tests__/bedrock-model-routing.test.js
generated
vendored
@@ -116,7 +116,7 @@ describe('Bedrock model routing repro', () => {
|
||||
const defs = getAgentDefinitions({ config });
|
||||
expect(defs['executor'].model).toBe('claude-sonnet-4-6');
|
||||
expect(defs['explore'].model).toBe('claude-haiku-4-5');
|
||||
expect(defs['architect'].model).toBe('claude-opus-4-7');
|
||||
expect(defs['architect'].model).toBe('claude-opus-4-6');
|
||||
// 4. enforceModel normalizes to bare CC-supported aliases (FIX)
|
||||
const { enforceModel } = await import('../features/delegation-enforcer.js');
|
||||
// 4a. executor → 'sonnet' (normalized from config's full model ID)
|
||||
|
||||
18
dist/__tests__/hud/model.test.js
generated
vendored
18
dist/__tests__/hud/model.test.js
generated
vendored
@@ -3,7 +3,7 @@ import { formatModelName, renderModel } from '../../hud/elements/model.js';
|
||||
describe('model element', () => {
|
||||
describe('formatModelName', () => {
|
||||
it('returns Opus for opus model IDs', () => {
|
||||
expect(formatModelName('claude-opus-4-7-20260416')).toBe('Opus');
|
||||
expect(formatModelName('claude-opus-4-6-20260205')).toBe('Opus');
|
||||
expect(formatModelName('claude-3-opus-20240229')).toBe('Opus');
|
||||
});
|
||||
it('returns Sonnet for sonnet model IDs', () => {
|
||||
@@ -18,20 +18,20 @@ describe('model element', () => {
|
||||
expect(formatModelName(undefined)).toBeNull();
|
||||
});
|
||||
it('returns versioned name from model IDs', () => {
|
||||
expect(formatModelName('claude-opus-4-7-20260416', 'versioned')).toBe('Opus 4.7');
|
||||
expect(formatModelName('claude-opus-4-6-20260205', 'versioned')).toBe('Opus 4.6');
|
||||
expect(formatModelName('claude-sonnet-4-6-20260217', 'versioned')).toBe('Sonnet 4.6');
|
||||
expect(formatModelName('claude-haiku-4-5-20251001', 'versioned')).toBe('Haiku 4.5');
|
||||
});
|
||||
it('returns versioned name from display names', () => {
|
||||
expect(formatModelName('Sonnet 4.5', 'versioned')).toBe('Sonnet 4.5');
|
||||
expect(formatModelName('Opus 4.7', 'versioned')).toBe('Opus 4.7');
|
||||
expect(formatModelName('Opus 4.6', 'versioned')).toBe('Opus 4.6');
|
||||
expect(formatModelName('Haiku 4.5', 'versioned')).toBe('Haiku 4.5');
|
||||
});
|
||||
it('falls back to short name when no version found', () => {
|
||||
expect(formatModelName('claude-3-opus-20240229', 'versioned')).toBe('Opus');
|
||||
});
|
||||
it('returns full model ID in full format', () => {
|
||||
expect(formatModelName('claude-opus-4-7-20260416', 'full')).toBe('claude-opus-4-7-20260416');
|
||||
expect(formatModelName('claude-opus-4-6-20260205', 'full')).toBe('claude-opus-4-6-20260205');
|
||||
});
|
||||
it('truncates long unrecognized model names', () => {
|
||||
const longName = 'some-very-long-model-name-that-exceeds-limit';
|
||||
@@ -40,20 +40,20 @@ describe('model element', () => {
|
||||
});
|
||||
describe('renderModel', () => {
|
||||
it('renders formatted model name', () => {
|
||||
const result = renderModel('claude-opus-4-7-20260416');
|
||||
const result = renderModel('claude-opus-4-6-20260205');
|
||||
expect(result).not.toBeNull();
|
||||
expect(result).toContain('Opus');
|
||||
});
|
||||
it('renders versioned format', () => {
|
||||
const result = renderModel('claude-opus-4-7-20260416', 'versioned');
|
||||
const result = renderModel('claude-opus-4-6-20260205', 'versioned');
|
||||
expect(result).not.toBeNull();
|
||||
expect(result).toContain('Opus');
|
||||
expect(result).toContain('4.7');
|
||||
expect(result).toContain('4.6');
|
||||
});
|
||||
it('renders full format', () => {
|
||||
const result = renderModel('claude-opus-4-7-20260416', 'full');
|
||||
const result = renderModel('claude-opus-4-6-20260205', 'full');
|
||||
expect(result).not.toBeNull();
|
||||
expect(result).toContain('claude-opus-4-7');
|
||||
expect(result).toContain('claude-opus-4-6');
|
||||
});
|
||||
it('returns null for null input', () => {
|
||||
expect(renderModel(null)).toBeNull();
|
||||
|
||||
2
dist/__tests__/npm-package-hook-surface.test.d.ts
generated
vendored
2
dist/__tests__/npm-package-hook-surface.test.d.ts
generated
vendored
@@ -1,2 +0,0 @@
|
||||
export {};
|
||||
//# sourceMappingURL=npm-package-hook-surface.test.d.ts.map
|
||||
1
dist/__tests__/npm-package-hook-surface.test.d.ts.map
generated
vendored
1
dist/__tests__/npm-package-hook-surface.test.d.ts.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"npm-package-hook-surface.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/npm-package-hook-surface.test.ts"],"names":[],"mappings":""}
|
||||
85
dist/__tests__/npm-package-hook-surface.test.js
generated
vendored
85
dist/__tests__/npm-package-hook-surface.test.js
generated
vendored
@@ -1,85 +0,0 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { execFileSync } from 'node:child_process';
|
||||
import { existsSync, readFileSync } from 'node:fs';
|
||||
import { dirname, join, normalize, relative } from 'node:path';
|
||||
const PACKAGE_ROOT = process.cwd();
|
||||
const HOOKS_JSON_PATH = join(PACKAGE_ROOT, 'hooks', 'hooks.json');
|
||||
const SCRIPTS_ROOT = join(PACKAGE_ROOT, 'scripts');
|
||||
const LOCAL_IMPORT_RE = /(?:import\s+(?:[^'"()]+?\s+from\s+)?|import\s*\(|export\s+\*\s+from\s+|export\s+\{[^}]*\}\s+from\s+|require\s*\()\s*['"](\.[^'"]+)['"]/g;
|
||||
const PLUGIN_SCRIPT_RE = /"\$CLAUDE_PLUGIN_ROOT"\/(scripts\/[^\s"]+)/g;
|
||||
function listHookScriptEntries() {
|
||||
const hooksJson = JSON.parse(readFileSync(HOOKS_JSON_PATH, 'utf-8'));
|
||||
const entries = new Set(['scripts/run.cjs']);
|
||||
for (const eventHooks of Object.values(hooksJson.hooks ?? {})) {
|
||||
for (const matcherEntry of eventHooks) {
|
||||
for (const hook of matcherEntry.hooks ?? []) {
|
||||
const command = hook.command ?? '';
|
||||
for (const match of command.matchAll(PLUGIN_SCRIPT_RE)) {
|
||||
entries.add(match[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return [...entries].sort();
|
||||
}
|
||||
function resolveRelativeScriptImport(fromFile, specifier) {
|
||||
const resolved = normalize(join(dirname(fromFile), specifier));
|
||||
const candidates = [
|
||||
resolved,
|
||||
`${resolved}.mjs`,
|
||||
`${resolved}.cjs`,
|
||||
`${resolved}.js`,
|
||||
join(resolved, 'index.mjs'),
|
||||
join(resolved, 'index.cjs'),
|
||||
join(resolved, 'index.js'),
|
||||
];
|
||||
for (const candidate of candidates) {
|
||||
if (candidate.startsWith(SCRIPTS_ROOT) && existsSync(candidate)) {
|
||||
return candidate;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
function collectRequiredScriptFiles(entryRelPath, collected = new Set()) {
|
||||
const absolutePath = join(PACKAGE_ROOT, entryRelPath);
|
||||
if (!existsSync(absolutePath)) {
|
||||
throw new Error(`Required hook file is missing in repo: ${entryRelPath}`);
|
||||
}
|
||||
const normalizedRel = relative(PACKAGE_ROOT, absolutePath).replace(/\\/g, '/');
|
||||
if (collected.has(normalizedRel)) {
|
||||
return collected;
|
||||
}
|
||||
collected.add(normalizedRel);
|
||||
const content = readFileSync(absolutePath, 'utf-8');
|
||||
for (const match of content.matchAll(LOCAL_IMPORT_RE)) {
|
||||
const resolved = resolveRelativeScriptImport(absolutePath, match[1]);
|
||||
if (!resolved) {
|
||||
continue;
|
||||
}
|
||||
collectRequiredScriptFiles(relative(PACKAGE_ROOT, resolved).replace(/\\/g, '/'), collected);
|
||||
}
|
||||
return collected;
|
||||
}
|
||||
function getPackedFiles() {
|
||||
const stdout = execFileSync('npm', ['pack', '--dry-run', '--json'], {
|
||||
cwd: PACKAGE_ROOT,
|
||||
encoding: 'utf-8',
|
||||
});
|
||||
const results = JSON.parse(stdout);
|
||||
return new Set((results[0]?.files ?? []).map(file => file.path));
|
||||
}
|
||||
describe('npm package hook surface regression', () => {
|
||||
it('packs hooks.json, hook entry scripts, and their local script dependencies', () => {
|
||||
const requiredFiles = new Set(['hooks/hooks.json']);
|
||||
for (const entryRelPath of listHookScriptEntries()) {
|
||||
for (const file of collectRequiredScriptFiles(entryRelPath)) {
|
||||
requiredFiles.add(file);
|
||||
}
|
||||
}
|
||||
const packedFiles = getPackedFiles();
|
||||
expect([...requiredFiles].sort()).not.toHaveLength(0);
|
||||
const missing = [...requiredFiles].filter(file => !packedFiles.has(file)).sort();
|
||||
expect(missing).toEqual([]);
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=npm-package-hook-surface.test.js.map
|
||||
1
dist/__tests__/npm-package-hook-surface.test.js.map
generated
vendored
1
dist/__tests__/npm-package-hook-surface.test.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"npm-package-hook-surface.test.js","sourceRoot":"","sources":["../../src/__tests__/npm-package-hook-surface.test.ts"],"names":[],"mappings":"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"}
|
||||
8
dist/__tests__/types.test.js
generated
vendored
8
dist/__tests__/types.test.js
generated
vendored
@@ -47,13 +47,13 @@ describe('Type Tests', () => {
|
||||
const config = {
|
||||
agents: {
|
||||
omc: { model: 'claude-sonnet-4-6' },
|
||||
architect: { model: 'claude-opus-4-7' },
|
||||
architect: { model: 'claude-opus-4-6' },
|
||||
explore: { model: 'claude-haiku-4-5' },
|
||||
documentSpecialist: { model: 'claude-haiku-4-5' },
|
||||
},
|
||||
};
|
||||
expect(config.agents?.omc?.model).toBe('claude-sonnet-4-6');
|
||||
expect(config.agents?.architect?.model).toBe('claude-opus-4-7');
|
||||
expect(config.agents?.architect?.model).toBe('claude-opus-4-6');
|
||||
});
|
||||
it('should support routing configuration', () => {
|
||||
const config = {
|
||||
@@ -65,13 +65,13 @@ describe('Type Tests', () => {
|
||||
tierModels: {
|
||||
LOW: 'claude-haiku-4',
|
||||
MEDIUM: 'claude-sonnet-4-6',
|
||||
HIGH: 'claude-opus-4-7',
|
||||
HIGH: 'claude-opus-4-6',
|
||||
},
|
||||
},
|
||||
};
|
||||
expect(config.routing?.enabled).toBe(true);
|
||||
expect(config.routing?.defaultTier).toBe('MEDIUM');
|
||||
expect(config.routing?.tierModels?.HIGH).toBe('claude-opus-4-7');
|
||||
expect(config.routing?.tierModels?.HIGH).toBe('claude-opus-4-6');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
2
dist/features/auto-update.d.ts.map
generated
vendored
2
dist/features/auto-update.d.ts.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../../src/features/auto-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAW3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAIpE,oCAAoC;AACpC,eAAO,MAAM,UAAU,gBAAgB,CAAC;AACxC,eAAO,MAAM,SAAS,qBAAqB,CAAC;AAC5C,eAAO,MAAM,cAAc,8DAA4D,CAAC;AACxF,eAAO,MAAM,cAAc,mEAAiE,CAAC;AAyG7F,wBAAgB,2CAA2C,IAAI,OAAO,CAgBrE;AAED,wBAAgB,eAAe,CAAC,OAAO,GAAE,OAAe,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAoDjH;AAED,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,QAAuB,CAAC;AACtD,eAAO,MAAM,YAAY,QAA+C,CAAC;AACzE,eAAO,MAAM,WAAW,QAA+C,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,yBAAyB;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,0BAA0B;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,QAAQ,CAAC,EAAE,0BAA0B,CAAC;IACtC,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,KAAK,CAAC,EAAE,uBAAuB,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oEAAoE;IACpE,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,+CAA+C;IAC/C,cAAc,CAAC,EAAE;QACf,mCAAmC;QACnC,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,iEAAiE;QACjE,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;IACF,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,uBAAuB,CAAC;IAC5C,0DAA0D;IAC1D,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC1D,gGAAgG;IAChG,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;wFACoF;IACpF,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;0FACsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CA4BxC;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAGnD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAevC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,aAAa,EAAE,QAAQ,GAAG,KAAK,GAAG,QAAQ,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,eAAe,GAAG,IAAI,CA+B5D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAMnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAM1C;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,CAqC/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAmB5D;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAmBlE;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,qBAAqB,CAmFxH;AAgCD;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,CAAC,EAAE;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,GAAG,OAAO,CAAC,YAAY,CAAC,CAqHxB;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,iBAAiB,GAAG,MAAM,CA8B/E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,GAAE,MAAW,GAAG,OAAO,CAYzE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI,CAqB1F;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BvD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yEAAyE;IACzE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA0DD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAyFpG;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAGjD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAIhD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAGvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,kBAAuB,GAAG,IAAI,CAK1E"}
|
||||
{"version":3,"file":"auto-update.d.ts","sourceRoot":"","sources":["../../src/features/auto-update.ts"],"names":[],"mappings":"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"}
|
||||
54
dist/features/auto-update.js
generated
vendored
54
dist/features/auto-update.js
generated
vendored
@@ -9,10 +9,10 @@
|
||||
* - Store version metadata for installed components
|
||||
* - Configurable update notifications
|
||||
*/
|
||||
import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';
|
||||
import { readFileSync, writeFileSync, existsSync, mkdirSync, cpSync } from 'fs';
|
||||
import { join, dirname } from 'path';
|
||||
import { execSync, execFileSync } from 'child_process';
|
||||
import { install as installOmc, HOOKS_DIR, isProjectScopedPlugin, isRunningAsPlugin, copyPluginSyncPayload, syncInstalledPluginPayload, } from '../installer/index.js';
|
||||
import { install as installOmc, HOOKS_DIR, isProjectScopedPlugin, isRunningAsPlugin, getInstalledOmcPluginRoots, getRuntimePackageRoot, } from '../installer/index.js';
|
||||
import { getClaudeConfigDir } from '../utils/config-dir.js';
|
||||
import { purgeStalePluginCacheVersions } from '../utils/paths.js';
|
||||
import { isAutoUpdateDisabled } from '../lib/security-config.js';
|
||||
@@ -102,8 +102,56 @@ function syncMarketplaceClone(verbose = false) {
|
||||
}
|
||||
return { ok: true, message: 'Marketplace clone updated' };
|
||||
}
|
||||
const PLUGIN_SYNC_PAYLOAD = [
|
||||
'dist',
|
||||
'bridge',
|
||||
'hooks',
|
||||
'scripts',
|
||||
'skills',
|
||||
'agents',
|
||||
'templates',
|
||||
'docs',
|
||||
'.claude-plugin',
|
||||
'.mcp.json',
|
||||
'README.md',
|
||||
'LICENSE',
|
||||
'package.json',
|
||||
];
|
||||
function copyPluginSyncPayload(sourceRoot, targetRoots) {
|
||||
if (targetRoots.length === 0) {
|
||||
return { synced: false, errors: [] };
|
||||
}
|
||||
let synced = false;
|
||||
const errors = [];
|
||||
for (const targetRoot of targetRoots) {
|
||||
let copiedToTarget = false;
|
||||
for (const entry of PLUGIN_SYNC_PAYLOAD) {
|
||||
const sourcePath = join(sourceRoot, entry);
|
||||
if (!existsSync(sourcePath)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
cpSync(sourcePath, join(targetRoot, entry), {
|
||||
recursive: true,
|
||||
force: true,
|
||||
});
|
||||
copiedToTarget = true;
|
||||
}
|
||||
catch (error) {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
errors.push(`Failed to sync ${entry} to ${targetRoot}: ${message}`);
|
||||
}
|
||||
}
|
||||
synced = synced || copiedToTarget;
|
||||
}
|
||||
return { synced, errors };
|
||||
}
|
||||
function syncActivePluginCache() {
|
||||
const result = syncInstalledPluginPayload();
|
||||
const activeRoots = getInstalledOmcPluginRoots().filter(root => existsSync(root));
|
||||
if (activeRoots.length === 0) {
|
||||
return { synced: false, errors: [] };
|
||||
}
|
||||
const result = copyPluginSyncPayload(getRuntimePackageRoot(), activeRoots);
|
||||
if (result.synced) {
|
||||
console.log('[omc update] Synced plugin cache');
|
||||
}
|
||||
|
||||
2
dist/features/auto-update.js.map
generated
vendored
2
dist/features/auto-update.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/hooks/recovery/types.d.ts
generated
vendored
2
dist/hooks/recovery/types.d.ts
generated
vendored
@@ -34,7 +34,7 @@ export interface ParsedTokenLimitError {
|
||||
errorType: string;
|
||||
/** Provider ID (e.g., 'anthropic') */
|
||||
providerID?: string;
|
||||
/** Model ID (e.g., 'claude-opus-4-7') */
|
||||
/** Model ID (e.g., 'claude-opus-4-6') */
|
||||
modelID?: string;
|
||||
/** Index of the problematic message */
|
||||
messageIndex?: number;
|
||||
|
||||
6
dist/hooks/think-mode/__tests__/index.test.js
generated
vendored
6
dist/hooks/think-mode/__tests__/index.test.js
generated
vendored
@@ -148,14 +148,14 @@ World`);
|
||||
it('should return high variant for claude-sonnet-4-6', () => {
|
||||
expect(getHighVariant('claude-sonnet-4-6')).toBe('claude-sonnet-4-6-high');
|
||||
});
|
||||
it('should return high variant for claude-opus-4-7', () => {
|
||||
expect(getHighVariant('claude-opus-4-7')).toBe('claude-opus-4-7-high');
|
||||
it('should return high variant for claude-opus-4-6', () => {
|
||||
expect(getHighVariant('claude-opus-4-6')).toBe('claude-opus-4-6-high');
|
||||
});
|
||||
it('should return high variant for claude-3-5-sonnet', () => {
|
||||
expect(getHighVariant('claude-3-5-sonnet')).toBe('claude-sonnet-4-6-high');
|
||||
});
|
||||
it('should return high variant for claude-3-opus', () => {
|
||||
expect(getHighVariant('claude-3-opus')).toBe('claude-opus-4-7-high');
|
||||
expect(getHighVariant('claude-3-opus')).toBe('claude-opus-4-6-high');
|
||||
});
|
||||
it('should handle version with dot notation', () => {
|
||||
expect(getHighVariant('claude-sonnet-4.5')).toBe('claude-sonnet-4-6-high');
|
||||
|
||||
4
dist/hud/elements/model.js
generated
vendored
4
dist/hud/elements/model.js
generated
vendored
@@ -7,7 +7,7 @@ import { cyan } from '../colors.js';
|
||||
import { truncateToWidth } from '../../utils/string-width.js';
|
||||
/**
|
||||
* Extract version from a model ID string.
|
||||
* E.g., 'claude-opus-4-7-20260416' -> '4.7'
|
||||
* E.g., 'claude-opus-4-6-20260205' -> '4.6'
|
||||
* 'claude-sonnet-4-6-20260217' -> '4.6'
|
||||
* 'claude-haiku-4-5-20251001' -> '4.5'
|
||||
*/
|
||||
@@ -16,7 +16,7 @@ function extractVersion(modelId) {
|
||||
const idMatch = modelId.match(/(?:opus|sonnet|haiku)-(\d+)-(\d+)/i);
|
||||
if (idMatch)
|
||||
return `${idMatch[1]}.${idMatch[2]}`;
|
||||
// Match display name patterns like "Sonnet 4.5", "Opus 4.7"
|
||||
// Match display name patterns like "Sonnet 4.5", "Opus 4.6"
|
||||
const displayMatch = modelId.match(/(?:opus|sonnet|haiku)\s+(\d+(?:\.\d+)?)/i);
|
||||
if (displayMatch)
|
||||
return displayMatch[1];
|
||||
|
||||
4
dist/hud/types.d.ts
generated
vendored
4
dist/hud/types.d.ts
generated
vendored
@@ -318,8 +318,8 @@ export type CwdFormat = 'relative' | 'absolute' | 'folder';
|
||||
/**
|
||||
* Model name format options:
|
||||
* - short: 'Opus', 'Sonnet', 'Haiku'
|
||||
* - versioned: 'Opus 4.7', 'Sonnet 4.5', 'Haiku 4.5'
|
||||
* - full: raw model ID like 'claude-opus-4-7-20260416'
|
||||
* - versioned: 'Opus 4.6', 'Sonnet 4.5', 'Haiku 4.5'
|
||||
* - full: raw model ID like 'claude-opus-4-6-20260205'
|
||||
*/
|
||||
export type ModelFormat = 'short' | 'versioned' | 'full';
|
||||
export type CallCountsFormat = 'auto' | 'emoji' | 'ascii';
|
||||
|
||||
56
dist/installer/__tests__/mcp-registry.test.js
generated
vendored
56
dist/installer/__tests__/mcp-registry.test.js
generated
vendored
@@ -145,38 +145,6 @@ describe('unified MCP registry sync', () => {
|
||||
expect(codexConfig).toContain('url = "https://lab.example.com/mcp"');
|
||||
expect(codexConfig).toContain('startup_timeout_sec = 30');
|
||||
});
|
||||
it('reproduces issue #2679: sync strips remote entry type during round-trip', () => {
|
||||
const settings = {
|
||||
mcpServers: {
|
||||
mySseServer: {
|
||||
url: 'http://localhost:11235/mcp/sse',
|
||||
type: 'sse',
|
||||
},
|
||||
},
|
||||
};
|
||||
const { settings: syncedSettings, result } = syncUnifiedMcpRegistryTargets(settings);
|
||||
expect(result.bootstrappedFromClaude).toBe(true);
|
||||
expect(result.serverNames).toEqual(['mySseServer']);
|
||||
expect(syncedSettings).toEqual({});
|
||||
expect(JSON.parse(readFileSync(getUnifiedMcpRegistryPath(), 'utf-8'))).toEqual({
|
||||
mySseServer: {
|
||||
url: 'http://localhost:11235/mcp/sse',
|
||||
type: 'sse',
|
||||
},
|
||||
});
|
||||
expect(JSON.parse(readFileSync(getClaudeMcpConfigPath(), 'utf-8'))).toEqual({
|
||||
mcpServers: {
|
||||
mySseServer: {
|
||||
url: 'http://localhost:11235/mcp/sse',
|
||||
type: 'sse',
|
||||
},
|
||||
},
|
||||
});
|
||||
const codexConfig = readFileSync(getCodexConfigPath(), 'utf-8');
|
||||
expect(codexConfig).toContain('[mcp_servers.mySseServer]');
|
||||
expect(codexConfig).toContain('url = "http://localhost:11235/mcp/sse"');
|
||||
expect(codexConfig).toContain('type = "sse"');
|
||||
});
|
||||
it('preserves explicit launcher timeouts and leaves custom MCP servers untouched', () => {
|
||||
const settings = {
|
||||
mcpServers: {
|
||||
@@ -379,30 +347,6 @@ describe('unified MCP registry sync', () => {
|
||||
},
|
||||
});
|
||||
});
|
||||
it('respects explicit removal from ~/.claude.json when legacy settings still contain a stale copy', () => {
|
||||
writeFileSync(getUnifiedMcpRegistryPath(), JSON.stringify({
|
||||
gitnexus: { command: 'gitnexus', args: ['mcp'] },
|
||||
}, null, 2));
|
||||
writeFileSync(getClaudeMcpConfigPath(), JSON.stringify({
|
||||
mcpServers: {
|
||||
customLocal: { command: 'custom-local', args: ['serve'] },
|
||||
},
|
||||
}, null, 2));
|
||||
const { settings, result } = syncUnifiedMcpRegistryTargets({
|
||||
theme: 'dark',
|
||||
mcpServers: {
|
||||
gitnexus: { command: 'stale-gitnexus', args: ['legacy'] },
|
||||
},
|
||||
});
|
||||
expect(settings).toEqual({ theme: 'dark' });
|
||||
expect(result.bootstrappedFromClaude).toBe(false);
|
||||
expect(JSON.parse(readFileSync(getClaudeMcpConfigPath(), 'utf-8'))).toEqual({
|
||||
mcpServers: {
|
||||
customLocal: { command: 'custom-local', args: ['serve'] },
|
||||
gitnexus: { command: 'gitnexus', args: ['mcp'] },
|
||||
},
|
||||
});
|
||||
});
|
||||
it('detects mismatched URL-based remote MCP definitions during doctor inspection', () => {
|
||||
writeFileSync(getUnifiedMcpRegistryPath(), JSON.stringify({
|
||||
remoteOmc: { url: 'https://lab.example.com/mcp', timeout: 30 },
|
||||
|
||||
2
dist/installer/__tests__/mcp-registry.test.js.map
generated
vendored
2
dist/installer/__tests__/mcp-registry.test.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/installer/__tests__/plugin-cache-sync.test.d.ts
generated
vendored
2
dist/installer/__tests__/plugin-cache-sync.test.d.ts
generated
vendored
@@ -1,2 +0,0 @@
|
||||
export {};
|
||||
//# sourceMappingURL=plugin-cache-sync.test.d.ts.map
|
||||
1
dist/installer/__tests__/plugin-cache-sync.test.d.ts.map
generated
vendored
1
dist/installer/__tests__/plugin-cache-sync.test.d.ts.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"plugin-cache-sync.test.d.ts","sourceRoot":"","sources":["../../../src/installer/__tests__/plugin-cache-sync.test.ts"],"names":[],"mappings":""}
|
||||
117
dist/installer/__tests__/plugin-cache-sync.test.js
generated
vendored
117
dist/installer/__tests__/plugin-cache-sync.test.js
generated
vendored
@@ -1,117 +0,0 @@
|
||||
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
||||
import { existsSync, mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'fs';
|
||||
import { tmpdir } from 'os';
|
||||
import { dirname, join } from 'path';
|
||||
const ORIG_ENV = { ...process.env };
|
||||
function writeFile(path, content) {
|
||||
mkdirSync(dirname(path), { recursive: true });
|
||||
writeFileSync(path, content);
|
||||
}
|
||||
function writePayloadTree(root, version = '9.9.9-test') {
|
||||
mkdirSync(root, { recursive: true });
|
||||
writeFile(join(root, 'dist', 'lib', 'worktree-paths.js'), 'export const test = true;\n');
|
||||
writeFile(join(root, 'bridge', 'cli.cjs'), 'console.log("bridge");\n');
|
||||
writeFile(join(root, 'hooks', 'hooks.json'), '{}\n');
|
||||
writeFile(join(root, 'scripts', 'run.cjs'), 'console.log("run");\n');
|
||||
writeFile(join(root, 'skills', 'plan', 'SKILL.md'), '# plan\n');
|
||||
writeFile(join(root, 'agents', 'executor.md'), '# executor\n');
|
||||
writeFile(join(root, 'templates', 'deliverables.json'), '{}\n');
|
||||
writeFile(join(root, 'docs', 'CLAUDE.md'), '# docs\n');
|
||||
writeFile(join(root, '.claude-plugin', 'plugin.json'), '{"name":"oh-my-claudecode"}\n');
|
||||
writeFile(join(root, '.mcp.json'), '{}\n');
|
||||
writeFile(join(root, 'README.md'), '# readme\n');
|
||||
writeFile(join(root, 'LICENSE'), 'MIT\n');
|
||||
writeFile(join(root, 'package.json'), JSON.stringify({ name: 'oh-my-claude-sisyphus', version }, null, 2));
|
||||
}
|
||||
async function freshInstaller() {
|
||||
vi.resetModules();
|
||||
return await import('../index.js');
|
||||
}
|
||||
describe('syncInstalledPluginPayload', () => {
|
||||
let tempRoot;
|
||||
beforeEach(() => {
|
||||
tempRoot = mkdtempSync(join(tmpdir(), 'omc-plugin-cache-sync-'));
|
||||
process.env.CLAUDE_CONFIG_DIR = join(tempRoot, '.claude');
|
||||
delete process.env.CLAUDE_PLUGIN_ROOT;
|
||||
delete process.env.OMC_PLUGIN_ROOT;
|
||||
});
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
for (const key of Object.keys(process.env)) {
|
||||
if (!(key in ORIG_ENV))
|
||||
delete process.env[key];
|
||||
}
|
||||
Object.assign(process.env, ORIG_ENV);
|
||||
rmSync(tempRoot, { recursive: true, force: true });
|
||||
});
|
||||
it('repairs incomplete cache installs from the known marketplace source instead of reusing the installed root', async () => {
|
||||
const configDir = process.env.CLAUDE_CONFIG_DIR;
|
||||
const cacheRoot = join(configDir, 'plugins', 'cache', 'omc', 'oh-my-claudecode', '4.12.0');
|
||||
const sourceRoot = join(tempRoot, 'marketplace-source');
|
||||
writePayloadTree(sourceRoot);
|
||||
mkdirSync(join(cacheRoot, 'agents'), { recursive: true });
|
||||
writeFileSync(join(cacheRoot, 'agents', 'executor.md'), '# stale executor\n');
|
||||
mkdirSync(join(configDir, 'plugins'), { recursive: true });
|
||||
writeFileSync(join(configDir, 'plugins', 'installed_plugins.json'), JSON.stringify({
|
||||
version: 2,
|
||||
plugins: {
|
||||
'oh-my-claudecode@omc': [{ installPath: cacheRoot, version: '4.12.0' }],
|
||||
},
|
||||
}, null, 2));
|
||||
writeFileSync(join(configDir, 'plugins', 'known_marketplaces.json'), JSON.stringify({
|
||||
omc: {
|
||||
installLocation: sourceRoot,
|
||||
source: { source: 'directory', path: sourceRoot },
|
||||
},
|
||||
}, null, 2));
|
||||
const installer = await freshInstaller();
|
||||
const result = installer.syncInstalledPluginPayload();
|
||||
expect(result.synced).toBe(true);
|
||||
expect(result.errors).toEqual([]);
|
||||
expect(result.sourceRoot).toBe(sourceRoot);
|
||||
expect(result.targetRoots).toEqual([cacheRoot]);
|
||||
expect(existsSync(join(cacheRoot, 'package.json'))).toBe(true);
|
||||
expect(existsSync(join(cacheRoot, 'skills', 'plan', 'SKILL.md'))).toBe(true);
|
||||
expect(existsSync(join(cacheRoot, 'hooks', 'hooks.json'))).toBe(true);
|
||||
expect(existsSync(join(cacheRoot, 'scripts', 'run.cjs'))).toBe(true);
|
||||
expect(JSON.parse(readFileSync(join(cacheRoot, 'package.json'), 'utf-8')).version).toBe('9.9.9-test');
|
||||
});
|
||||
it('repairs incomplete cache installs during setup before plugin-provided file detection runs', async () => {
|
||||
const configDir = process.env.CLAUDE_CONFIG_DIR;
|
||||
const cacheRoot = join(configDir, 'plugins', 'cache', 'omc', 'oh-my-claudecode', '4.12.0');
|
||||
const sourceRoot = join(tempRoot, 'marketplace-source-install');
|
||||
writePayloadTree(sourceRoot, '4.12.0');
|
||||
mkdirSync(join(cacheRoot, 'agents'), { recursive: true });
|
||||
writeFileSync(join(cacheRoot, 'agents', 'executor.md'), '# stale executor\n');
|
||||
mkdirSync(join(configDir, 'plugins'), { recursive: true });
|
||||
writeFileSync(join(configDir, 'plugins', 'installed_plugins.json'), JSON.stringify({
|
||||
version: 2,
|
||||
plugins: {
|
||||
'oh-my-claudecode@omc': [{ installPath: cacheRoot, version: '4.12.0' }],
|
||||
},
|
||||
}, null, 2));
|
||||
writeFileSync(join(configDir, 'plugins', 'known_marketplaces.json'), JSON.stringify({
|
||||
omc: {
|
||||
installLocation: sourceRoot,
|
||||
source: { source: 'directory', path: sourceRoot },
|
||||
},
|
||||
}, null, 2));
|
||||
writeFileSync(join(configDir, 'settings.json'), JSON.stringify({ enabledPlugins: ['oh-my-claudecode@omc'] }, null, 2));
|
||||
const installer = await freshInstaller();
|
||||
const result = installer.install({
|
||||
skipClaudeCheck: true,
|
||||
skipHud: true,
|
||||
});
|
||||
expect(result.success).toBe(true);
|
||||
expect(result.installedAgents).toEqual([]);
|
||||
expect(result.installedSkills).toEqual([]);
|
||||
expect(installer.hasPluginProvidedAgentFiles()).toBe(true);
|
||||
expect(installer.hasPluginProvidedSkillFiles()).toBe(true);
|
||||
expect(installer.hasPluginProvidedHookFiles()).toBe(true);
|
||||
expect(existsSync(join(cacheRoot, 'package.json'))).toBe(true);
|
||||
expect(existsSync(join(cacheRoot, 'skills', 'plan', 'SKILL.md'))).toBe(true);
|
||||
expect(existsSync(join(cacheRoot, 'hooks', 'hooks.json'))).toBe(true);
|
||||
expect(existsSync(join(cacheRoot, 'scripts', 'run.cjs'))).toBe(true);
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=plugin-cache-sync.test.js.map
|
||||
1
dist/installer/__tests__/plugin-cache-sync.test.js.map
generated
vendored
1
dist/installer/__tests__/plugin-cache-sync.test.js.map
generated
vendored
File diff suppressed because one or more lines are too long
10
dist/installer/index.d.ts
generated
vendored
10
dist/installer/index.d.ts
generated
vendored
@@ -166,16 +166,6 @@ export declare function cleanupStaleSkills(log: (msg: string) => void): string[]
|
||||
*/
|
||||
export declare function prunePluginDuplicateSkills(log: (msg: string) => void): string[];
|
||||
export declare function getInstalledOmcPluginRoots(): string[];
|
||||
export declare function copyPluginSyncPayload(sourceRoot: string, targetRoots: string[]): {
|
||||
synced: boolean;
|
||||
errors: string[];
|
||||
};
|
||||
export declare function syncInstalledPluginPayload(): {
|
||||
synced: boolean;
|
||||
errors: string[];
|
||||
sourceRoot: string | null;
|
||||
targetRoots: string[];
|
||||
};
|
||||
/**
|
||||
* Detect whether an installed Claude Code plugin already provides OMC agent
|
||||
* markdown files, so the legacy ~/.claude/agents copy can be skipped.
|
||||
|
||||
2
dist/installer/index.d.ts.map
generated
vendored
2
dist/installer/index.d.ts.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAqBH,0CAA0C;AAC1C,eAAO,MAAM,iBAAiB,QAAuB,CAAC;AACtD,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,YAAY,QAAsC,CAAC;AAChE,eAAO,MAAM,UAAU,QAAoC,CAAC;AAC5D,eAAO,MAAM,SAAS,QAAmC,CAAC;AAC1D,eAAO,MAAM,OAAO,QAAiC,CAAC;AACtD,eAAO,MAAM,aAAa,QAA2C,CAAC;AACtE,eAAO,MAAM,YAAY,QAA+C,CAAC;AAGzE;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,EAAO,CAAC;AAE1C,sBAAsB;AACtB,eAAO,MAAM,OAAO,QAA6B,CAAC;AAoLlD,0BAA0B;AAC1B,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,2BAA2B;AAC3B,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAa9C;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,OAAO,GAAG,OAAO,CAc5D;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAiBlD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOxF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAQ3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAI3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAe/C;AA4PD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,EAAE,CA4BvE;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,EAAE,CA4B/E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,EAAE,CA4CvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,EAAE,CAgE/E;AA4BD,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAmCrD;AA6HD,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAiCtH;AAED,wBAAgB,0BAA0B,IAAI;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAoBA;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,OAAO,CAIrD;AAED,wBAAgB,2BAA2B,IAAI,OAAO,CAIrD;AAED,wBAAgB,0BAA0B,IAAI,OAAO,CAIpD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAyC7C;AA4DD,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C;AA0HD;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc5E;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,OAAO,CAqCV;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CA0D1G;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,OAAO,GAAE,cAAmB,GAAG,aAAa,CA6ZnE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAehG"}
|
||||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/installer/index.ts"],"names":[],"mappings":"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"}
|
||||
164
dist/installer/index.js
generated
vendored
164
dist/installer/index.js
generated
vendored
@@ -800,157 +800,6 @@ export function getInstalledOmcPluginRoots() {
|
||||
}
|
||||
return Array.from(pluginRoots);
|
||||
}
|
||||
const PLUGIN_SYNC_PAYLOAD = [
|
||||
'dist',
|
||||
'bridge',
|
||||
'hooks',
|
||||
'scripts',
|
||||
'skills',
|
||||
'agents',
|
||||
'templates',
|
||||
'docs',
|
||||
'.claude-plugin',
|
||||
'.mcp.json',
|
||||
'README.md',
|
||||
'LICENSE',
|
||||
'package.json',
|
||||
];
|
||||
function countPluginSyncPayloadEntries(root) {
|
||||
let score = 0;
|
||||
for (const entry of PLUGIN_SYNC_PAYLOAD) {
|
||||
if (existsSync(join(root, entry))) {
|
||||
score += 1;
|
||||
}
|
||||
}
|
||||
return score;
|
||||
}
|
||||
function getKnownMarketplaceInstallRoots() {
|
||||
const knownMarketplacesPath = join(CLAUDE_CONFIG_DIR, 'plugins', 'known_marketplaces.json');
|
||||
if (!existsSync(knownMarketplacesPath)) {
|
||||
return [];
|
||||
}
|
||||
try {
|
||||
const raw = JSON.parse(readFileSync(knownMarketplacesPath, 'utf-8'));
|
||||
const roots = new Set();
|
||||
for (const [marketplaceId, entry] of Object.entries(raw)) {
|
||||
const isOmcMarketplace = marketplaceId.toLowerCase().includes('omc')
|
||||
|| marketplaceId.toLowerCase().includes('oh-my-claudecode');
|
||||
if (!isOmcMarketplace) {
|
||||
continue;
|
||||
}
|
||||
if (typeof entry?.installLocation === 'string' && entry.installLocation.trim().length > 0) {
|
||||
roots.add(entry.installLocation.trim());
|
||||
}
|
||||
if (typeof entry?.source?.path === 'string' && entry.source.path.trim().length > 0) {
|
||||
roots.add(entry.source.path.trim());
|
||||
}
|
||||
}
|
||||
return Array.from(roots);
|
||||
}
|
||||
catch {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
function getGlobalInstalledPackageRoot() {
|
||||
try {
|
||||
const npmRoot = String(execSync('npm root -g', {
|
||||
encoding: 'utf-8',
|
||||
stdio: 'pipe',
|
||||
timeout: 10000,
|
||||
...(process.platform === 'win32' ? { windowsHide: true } : {}),
|
||||
}) ?? '').trim();
|
||||
if (!npmRoot) {
|
||||
return null;
|
||||
}
|
||||
const globalPackageRoot = join(npmRoot, 'oh-my-claude-sisyphus');
|
||||
return existsSync(globalPackageRoot) ? globalPackageRoot : null;
|
||||
}
|
||||
catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
function isCacheInstalledPluginRoot(root) {
|
||||
const normalizedRoot = normalizePath(root);
|
||||
const cacheBase = normalizePath(join(CLAUDE_CONFIG_DIR, 'plugins', 'cache'));
|
||||
return normalizedRoot === cacheBase || normalizedRoot.startsWith(`${cacheBase}/`);
|
||||
}
|
||||
function resolveBestPluginSyncSource(targetRoots) {
|
||||
const excludedRoots = new Set(targetRoots.map(normalizePath));
|
||||
const seen = new Set();
|
||||
const globalPackageRoot = getGlobalInstalledPackageRoot();
|
||||
const candidates = [
|
||||
...getKnownMarketplaceInstallRoots(),
|
||||
...(globalPackageRoot ? [globalPackageRoot] : []),
|
||||
getRuntimePackageRoot(),
|
||||
];
|
||||
let bestRoot = null;
|
||||
let bestScore = -1;
|
||||
let bestOrder = Number.POSITIVE_INFINITY;
|
||||
for (const [order, candidate] of candidates.entries()) {
|
||||
const normalizedCandidate = normalizePath(candidate);
|
||||
if (seen.has(normalizedCandidate) || excludedRoots.has(normalizedCandidate) || !existsSync(candidate)) {
|
||||
continue;
|
||||
}
|
||||
seen.add(normalizedCandidate);
|
||||
const score = countPluginSyncPayloadEntries(candidate);
|
||||
if (score === 0) {
|
||||
continue;
|
||||
}
|
||||
if (score > bestScore || (score === bestScore && order < bestOrder)) {
|
||||
bestRoot = candidate;
|
||||
bestScore = score;
|
||||
bestOrder = order;
|
||||
}
|
||||
}
|
||||
return bestRoot;
|
||||
}
|
||||
export function copyPluginSyncPayload(sourceRoot, targetRoots) {
|
||||
if (targetRoots.length === 0) {
|
||||
return { synced: false, errors: [] };
|
||||
}
|
||||
let synced = false;
|
||||
const errors = [];
|
||||
for (const targetRoot of targetRoots) {
|
||||
let copiedToTarget = false;
|
||||
for (const entry of PLUGIN_SYNC_PAYLOAD) {
|
||||
const sourcePath = join(sourceRoot, entry);
|
||||
if (!existsSync(sourcePath)) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
cpSync(sourcePath, join(targetRoot, entry), {
|
||||
recursive: true,
|
||||
force: true,
|
||||
});
|
||||
copiedToTarget = true;
|
||||
}
|
||||
catch (error) {
|
||||
const message = error instanceof Error ? error.message : String(error);
|
||||
errors.push(`Failed to sync ${entry} to ${targetRoot}: ${message}`);
|
||||
}
|
||||
}
|
||||
synced = synced || copiedToTarget;
|
||||
}
|
||||
return { synced, errors };
|
||||
}
|
||||
export function syncInstalledPluginPayload() {
|
||||
const targetRoots = getInstalledOmcPluginRoots()
|
||||
.filter(root => existsSync(root) && isCacheInstalledPluginRoot(root));
|
||||
if (targetRoots.length === 0) {
|
||||
return { synced: false, errors: [], sourceRoot: null, targetRoots: [] };
|
||||
}
|
||||
const sourceRoot = resolveBestPluginSyncSource(targetRoots);
|
||||
if (!sourceRoot) {
|
||||
return {
|
||||
synced: false,
|
||||
errors: ['Unable to find a complete OMC package source to repair installed plugin roots'],
|
||||
sourceRoot: null,
|
||||
targetRoots,
|
||||
};
|
||||
}
|
||||
const result = copyPluginSyncPayload(sourceRoot, targetRoots);
|
||||
return { ...result, sourceRoot, targetRoots };
|
||||
}
|
||||
/**
|
||||
* Detect whether an installed Claude Code plugin already provides OMC agent
|
||||
* markdown files, so the legacy ~/.claude/agents copy can be skipped.
|
||||
@@ -1298,19 +1147,6 @@ export function install(options = {}) {
|
||||
// Check if running as a plugin
|
||||
const runningAsPlugin = isRunningAsPlugin();
|
||||
const projectScoped = isProjectScopedPlugin();
|
||||
const pluginPayloadSync = syncInstalledPluginPayload();
|
||||
if (pluginPayloadSync.errors.length > 0) {
|
||||
for (const error of pluginPayloadSync.errors) {
|
||||
log(`Plugin cache sync warning: ${error}`);
|
||||
}
|
||||
}
|
||||
if (pluginPayloadSync.synced) {
|
||||
const targetSummary = pluginPayloadSync.targetRoots.length > 0
|
||||
? pluginPayloadSync.targetRoots.join(', ')
|
||||
: 'installed plugin roots';
|
||||
const sourceSummary = pluginPayloadSync.sourceRoot ?? 'unknown source';
|
||||
log(`Repaired installed OMC plugin payload from ${sourceSummary} -> ${targetSummary}`);
|
||||
}
|
||||
const pluginProvidesAgentFiles = hasPluginProvidedAgentFiles();
|
||||
const pluginProvidesSkillFiles = hasPluginProvidedSkillFiles();
|
||||
const pluginProvidesHookFiles = hasPluginProvidedHookFiles();
|
||||
|
||||
2
dist/installer/index.js.map
generated
vendored
2
dist/installer/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
1
dist/installer/mcp-registry.d.ts
generated
vendored
1
dist/installer/mcp-registry.d.ts
generated
vendored
@@ -3,7 +3,6 @@ export interface UnifiedMcpRegistryEntry {
|
||||
args?: string[];
|
||||
env?: Record<string, string>;
|
||||
url?: string;
|
||||
type?: string;
|
||||
timeout?: number;
|
||||
}
|
||||
export type UnifiedMcpRegistry = Record<string, UnifiedMcpRegistryEntry>;
|
||||
|
||||
2
dist/installer/mcp-registry.d.ts.map
generated
vendored
2
dist/installer/mcp-registry.d.ts.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../../src/installer/mcp-registry.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAEzE,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAkBD,wBAAgB,sBAAsB,IAAI,MAAM,CAM/C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAqGD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAE9F;AAED,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CA6B5H;AAiFD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CASzD;AAgID,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAQ/E;AAED,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAWhI;AAqED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,4BAA4B,CAAA;CAAE,CAgD7E;AAiBD,wBAAgB,6BAA6B,IAAI,wBAAwB,CAyDxE"}
|
||||
{"version":3,"file":"mcp-registry.d.ts","sourceRoot":"","sources":["../../src/installer/mcp-registry.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAEzE,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAMD,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAkBD,wBAAgB,sBAAsB,IAAI,MAAM,CAM/C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAG3C;AAiGD,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,kBAAkB,CAE9F;AAED,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG;IAAE,QAAQ,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CA6B5H;AAiFD,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CASzD;AA6HD,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAQ/E;AAED,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,kBAAkB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAWhI;AAkED,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC;IAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,MAAM,EAAE,4BAA4B,CAAA;CAAE,CAgD7E;AAiBD,wBAAgB,6BAA6B,IAAI,wBAAwB,CAyDxE"}
|
||||
12
dist/installer/mcp-registry.js
generated
vendored
12
dist/installer/mcp-registry.js
generated
vendored
@@ -72,9 +72,6 @@ function normalizeRegistryEntry(value) {
|
||||
const url = typeof raw.url === 'string' && raw.url.trim().length > 0
|
||||
? raw.url.trim()
|
||||
: undefined;
|
||||
const type = typeof raw.type === 'string' && raw.type.trim().length > 0
|
||||
? raw.type.trim()
|
||||
: undefined;
|
||||
if (!command && !url) {
|
||||
return null;
|
||||
}
|
||||
@@ -91,7 +88,6 @@ function normalizeRegistryEntry(value) {
|
||||
...(args.length > 0 ? { args } : {}),
|
||||
...(env && Object.keys(env).length > 0 ? { env } : {}),
|
||||
...(url ? { url } : {}),
|
||||
...(type ? { type } : {}),
|
||||
...(effectiveTimeout ? { timeout: effectiveTimeout } : {}),
|
||||
};
|
||||
}
|
||||
@@ -298,9 +294,6 @@ function renderCodexServerBlock(name, entry) {
|
||||
if (entry.url) {
|
||||
lines.push(`url = ${renderTomlString(entry.url)}`);
|
||||
}
|
||||
if (entry.type) {
|
||||
lines.push(`type = ${renderTomlString(entry.type)}`);
|
||||
}
|
||||
if (entry.env && Object.keys(entry.env).length > 0) {
|
||||
lines.push(`env = ${renderTomlEnvTable(entry.env)}`);
|
||||
}
|
||||
@@ -383,11 +376,6 @@ function parseCodexMcpRegistryEntries(content) {
|
||||
if (parsed)
|
||||
currentEntry.url = parsed;
|
||||
}
|
||||
else if (key === 'type') {
|
||||
const parsed = parseTomlQuotedString(value);
|
||||
if (parsed)
|
||||
currentEntry.type = parsed;
|
||||
}
|
||||
else if (key === 'env') {
|
||||
const parsed = parseTomlEnvTable(value);
|
||||
if (parsed)
|
||||
|
||||
2
dist/installer/mcp-registry.js.map
generated
vendored
2
dist/installer/mcp-registry.js.map
generated
vendored
File diff suppressed because one or more lines are too long
2
dist/team/__tests__/runtime-v2.gemini-preflight.test.d.ts
generated
vendored
2
dist/team/__tests__/runtime-v2.gemini-preflight.test.d.ts
generated
vendored
@@ -1,2 +0,0 @@
|
||||
export {};
|
||||
//# sourceMappingURL=runtime-v2.gemini-preflight.test.d.ts.map
|
||||
1
dist/team/__tests__/runtime-v2.gemini-preflight.test.d.ts.map
generated
vendored
1
dist/team/__tests__/runtime-v2.gemini-preflight.test.d.ts.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"runtime-v2.gemini-preflight.test.d.ts","sourceRoot":"","sources":["../../../src/team/__tests__/runtime-v2.gemini-preflight.test.ts"],"names":[],"mappings":""}
|
||||
97
dist/team/__tests__/runtime-v2.gemini-preflight.test.js
generated
vendored
97
dist/team/__tests__/runtime-v2.gemini-preflight.test.js
generated
vendored
@@ -1,97 +0,0 @@
|
||||
import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
|
||||
import { mkdtemp, rm } from 'fs/promises';
|
||||
import { join } from 'path';
|
||||
import { tmpdir } from 'os';
|
||||
const mocks = vi.hoisted(() => ({
|
||||
createTeamSession: vi.fn(),
|
||||
spawnWorkerInPane: vi.fn(),
|
||||
sendToWorker: vi.fn(),
|
||||
waitForPaneReady: vi.fn(),
|
||||
applyMainVerticalLayout: vi.fn(),
|
||||
tmuxExecAsync: vi.fn(),
|
||||
queueInboxInstruction: vi.fn(),
|
||||
}));
|
||||
const modelContractMocks = vi.hoisted(() => ({
|
||||
buildWorkerArgv: vi.fn((agentType, config) => [config?.resolvedBinaryPath ?? agentType ?? 'claude']),
|
||||
resolveValidatedBinaryPath: vi.fn((agentType) => {
|
||||
if (agentType === 'gemini')
|
||||
throw new Error('Resolved CLI binary \'gemini\' to untrusted location: /tmp/gemini');
|
||||
return `/usr/bin/${agentType ?? 'claude'}`;
|
||||
}),
|
||||
getContract: vi.fn((agentType) => ({ binary: agentType ?? 'claude' })),
|
||||
getWorkerEnv: vi.fn(() => ({ OMC_TEAM_WORKER: 'issue2675-team/worker-1' })),
|
||||
isPromptModeAgent: vi.fn(() => false),
|
||||
getPromptModeArgs: vi.fn(() => []),
|
||||
resolveClaudeWorkerModel: vi.fn(() => undefined),
|
||||
}));
|
||||
vi.mock('../../cli/tmux-utils.js', () => ({
|
||||
tmuxExecAsync: mocks.tmuxExecAsync,
|
||||
}));
|
||||
vi.mock('../tmux-session.js', () => ({
|
||||
createTeamSession: mocks.createTeamSession,
|
||||
spawnWorkerInPane: mocks.spawnWorkerInPane,
|
||||
sendToWorker: mocks.sendToWorker,
|
||||
waitForPaneReady: mocks.waitForPaneReady,
|
||||
paneHasActiveTask: vi.fn(() => false),
|
||||
paneLooksReady: vi.fn(() => true),
|
||||
applyMainVerticalLayout: mocks.applyMainVerticalLayout,
|
||||
}));
|
||||
vi.mock('../model-contract.js', () => ({
|
||||
buildWorkerArgv: modelContractMocks.buildWorkerArgv,
|
||||
resolveValidatedBinaryPath: modelContractMocks.resolveValidatedBinaryPath,
|
||||
getContract: modelContractMocks.getContract,
|
||||
getWorkerEnv: modelContractMocks.getWorkerEnv,
|
||||
isPromptModeAgent: modelContractMocks.isPromptModeAgent,
|
||||
getPromptModeArgs: modelContractMocks.getPromptModeArgs,
|
||||
resolveClaudeWorkerModel: modelContractMocks.resolveClaudeWorkerModel,
|
||||
}));
|
||||
vi.mock('../mcp-comm.js', () => ({
|
||||
queueInboxInstruction: mocks.queueInboxInstruction,
|
||||
}));
|
||||
describe('runtime-v2 Gemini preflight routing', () => {
|
||||
let cwd = '';
|
||||
beforeEach(() => {
|
||||
vi.resetModules();
|
||||
mocks.createTeamSession.mockResolvedValue({
|
||||
sessionName: 'issue2675-session',
|
||||
leaderPaneId: '%1',
|
||||
workerPaneIds: [],
|
||||
sessionMode: 'split-pane',
|
||||
});
|
||||
mocks.spawnWorkerInPane.mockResolvedValue(undefined);
|
||||
mocks.waitForPaneReady.mockResolvedValue(true);
|
||||
mocks.applyMainVerticalLayout.mockResolvedValue(undefined);
|
||||
mocks.tmuxExecAsync.mockImplementation(async (args) => {
|
||||
if (args[0] === 'split-window') {
|
||||
return { stdout: '%2\n', stderr: '' };
|
||||
}
|
||||
return { stdout: '', stderr: '' };
|
||||
});
|
||||
mocks.queueInboxInstruction.mockResolvedValue({ ok: true, reason: 'transport_direct', transport: 'transport_direct' });
|
||||
});
|
||||
afterEach(async () => {
|
||||
if (cwd)
|
||||
await rm(cwd, { recursive: true, force: true });
|
||||
});
|
||||
it('keeps an explicitly routed gemini lane on gemini when strict preflight path probing false-negatives', async () => {
|
||||
cwd = await mkdtemp(join(tmpdir(), 'issue2675-repro-'));
|
||||
const { startTeamV2 } = await import('../runtime-v2.js');
|
||||
const runtime = await startTeamV2({
|
||||
teamName: 'issue2675-team',
|
||||
workerCount: 1,
|
||||
agentTypes: ['gemini'],
|
||||
tasks: [{ subject: 'Review code', description: 'Review code', role: 'executor' }],
|
||||
cwd,
|
||||
pluginConfig: {
|
||||
team: { roleRouting: { executor: { provider: 'gemini' } } },
|
||||
},
|
||||
});
|
||||
expect(runtime.config.workers[0]?.worker_cli).toBe('gemini');
|
||||
expect(modelContractMocks.buildWorkerArgv).toHaveBeenCalledWith('gemini', expect.objectContaining({
|
||||
teamName: 'issue2675-team',
|
||||
workerName: 'worker-1',
|
||||
resolvedBinaryPath: 'gemini',
|
||||
}));
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=runtime-v2.gemini-preflight.test.js.map
|
||||
1
dist/team/__tests__/runtime-v2.gemini-preflight.test.js.map
generated
vendored
1
dist/team/__tests__/runtime-v2.gemini-preflight.test.js.map
generated
vendored
@@ -1 +0,0 @@
|
||||
{"version":3,"file":"runtime-v2.gemini-preflight.test.js","sourceRoot":"","sources":["../../../src/team/__tests__/runtime-v2.gemini-preflight.test.ts"],"names":[],"mappings":"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"}
|
||||
2
dist/team/runtime-v2.d.ts.map
generated
vendored
2
dist/team/runtime-v2.d.ts.map
generated
vendored
@@ -1 +1 @@
|
||||
{"version":3,"file":"runtime-v2.d.ts","sourceRoot":"","sources":["../../src/team/runtime-v2.ts"],"names":[],"mappings":"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"}
|
||||
{"version":3,"file":"runtime-v2.d.ts","sourceRoot":"","sources":["../../src/team/runtime-v2.ts"],"names":[],"mappings":"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"}
|
||||
21
dist/team/runtime-v2.js
generated
vendored
21
dist/team/runtime-v2.js
generated
vendored
@@ -27,7 +27,7 @@ import { appendTeamEvent, emitMonitorDerivedEvents } from './events.js';
|
||||
import { DEFAULT_TEAM_GOVERNANCE, DEFAULT_TEAM_TRANSPORT_POLICY, getConfigGovernance, } from './governance.js';
|
||||
import { inferPhase } from './phase-controller.js';
|
||||
import { validateTeamName } from './team-name.js';
|
||||
import { buildWorkerArgv, getContract, resolveValidatedBinaryPath, getWorkerEnv as getModelWorkerEnv, isPromptModeAgent, getPromptModeArgs, resolveClaudeWorkerModel, } from './model-contract.js';
|
||||
import { buildWorkerArgv, resolveValidatedBinaryPath, getWorkerEnv as getModelWorkerEnv, isPromptModeAgent, getPromptModeArgs, resolveClaudeWorkerModel, } from './model-contract.js';
|
||||
import { createTeamSession, spawnWorkerInPane, sendToWorker, waitForPaneReady, paneHasActiveTask, paneLooksReady, applyMainVerticalLayout, } from './tmux-session.js';
|
||||
import { composeInitialInbox, ensureWorkerStateDir, writeWorkerOverlay, generateTriggerMessage, generatePromptModeStartupPrompt, } from './worker-bootstrap.js';
|
||||
import { queueInboxInstruction } from './mcp-comm.js';
|
||||
@@ -106,21 +106,6 @@ function sanitizeTeamName(name) {
|
||||
throw new Error(`Invalid team name: "${name}" produces empty slug after sanitization`);
|
||||
return sanitized;
|
||||
}
|
||||
function shouldUseLaunchTimeCliResolution(reason) {
|
||||
return /untrusted location|relative path/i.test(reason);
|
||||
}
|
||||
function resolvePreflightBinaryPath(agentType) {
|
||||
try {
|
||||
return { path: resolveValidatedBinaryPath(agentType), degraded: false };
|
||||
}
|
||||
catch (err) {
|
||||
const reason = err instanceof Error ? err.message : String(err);
|
||||
if (shouldUseLaunchTimeCliResolution(reason)) {
|
||||
return { path: getContract(agentType).binary, degraded: true, reason };
|
||||
}
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
// ---------------------------------------------------------------------------
|
||||
// Helper: check worker liveness via tmux pane
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -448,7 +433,7 @@ export async function startTeamV2(config) {
|
||||
const missingBinaryReasons = [];
|
||||
for (const agentType of [...new Set(agentTypes)]) {
|
||||
try {
|
||||
resolvedBinaryPaths[agentType] = resolvePreflightBinaryPath(agentType).path;
|
||||
resolvedBinaryPaths[agentType] = resolveValidatedBinaryPath(agentType);
|
||||
}
|
||||
catch (err) {
|
||||
const reason = err instanceof Error ? err.message : String(err);
|
||||
@@ -465,7 +450,7 @@ export async function startTeamV2(config) {
|
||||
if (missingBinaryReasons.some((m) => m.agentType === provider))
|
||||
continue;
|
||||
try {
|
||||
resolvedBinaryPaths[provider] = resolvePreflightBinaryPath(provider).path;
|
||||
resolvedBinaryPaths[provider] = resolveValidatedBinaryPath(provider);
|
||||
}
|
||||
catch (err) {
|
||||
const reason = err instanceof Error ? err.message : String(err);
|
||||
|
||||
2
dist/team/runtime-v2.js.map
generated
vendored
2
dist/team/runtime-v2.js.map
generated
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user