oh-my-copilot 4.11.8 → 4.11.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/bridge/cli.cjs +189 -53
- package/bridge/runtime-cli.cjs +12 -2
- package/bridge/team-bridge.cjs +1 -1
- package/bridge/team.js +13 -3
- package/dist/__tests__/bedrock-lm-suffix-hook.test.js +29 -6
- package/dist/__tests__/bedrock-lm-suffix-hook.test.js.map +1 -1
- package/dist/__tests__/bedrock-model-routing.test.js +1 -1
- package/dist/__tests__/cli-config-stop-callback.test.js +23 -5
- package/dist/__tests__/cli-config-stop-callback.test.js.map +1 -1
- package/dist/__tests__/cli-notify-profile.test.js +20 -4
- package/dist/__tests__/cli-notify-profile.test.js.map +1 -1
- package/dist/__tests__/hud/model.test.js +9 -9
- package/dist/__tests__/job-management.test.js +27 -8
- package/dist/__tests__/job-management.test.js.map +1 -1
- package/dist/__tests__/pre-tool-enforcer.test.js +169 -4
- package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -1
- package/dist/__tests__/types.test.js +4 -4
- package/dist/cli/__tests__/ask.test.js +19 -3
- package/dist/cli/__tests__/ask.test.js.map +1 -1
- package/dist/config/models.js +1 -1
- package/dist/features/auto-update.d.ts.map +1 -1
- package/dist/features/auto-update.js +3 -51
- package/dist/features/auto-update.js.map +1 -1
- package/dist/hooks/recovery/types.d.ts +1 -1
- package/dist/hooks/think-mode/__tests__/index.test.js +2 -2
- package/dist/installer/index.d.ts +10 -0
- package/dist/installer/index.d.ts.map +1 -1
- package/dist/installer/index.js +181 -0
- package/dist/installer/index.js.map +1 -1
- package/dist/installer/mcp-registry.d.ts +1 -0
- package/dist/installer/mcp-registry.d.ts.map +1 -1
- package/dist/installer/mcp-registry.js +12 -0
- package/dist/installer/mcp-registry.js.map +1 -1
- package/dist/utils/omc-cli-rendering.d.ts.map +1 -1
- package/dist/utils/omc-cli-rendering.js +15 -1
- package/dist/utils/omc-cli-rendering.js.map +1 -1
- package/docs/agent-templates/tier-instructions.md +1 -1
- package/docs/copilot-instructions.md +1 -1
- package/package.json +1 -1
- package/scripts/pre-tool-enforcer.mjs +49 -26
- package/skills/hud/SKILL.md +2 -2
- package/templates/hooks/keyword-detector.mjs +12 -0
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
{
|
|
11
11
|
"name": "oh-my-copilot",
|
|
12
12
|
"description": "Copilot CLI native multi-agent orchestration with intelligent model routing, 18 agent variants, and 32 powerful skills. Zero learning curve. Maximum power.",
|
|
13
|
-
"version": "4.11.
|
|
13
|
+
"version": "4.11.9",
|
|
14
14
|
"author": {
|
|
15
15
|
"name": "Robin Norberg",
|
|
16
16
|
"email": "github@platypus.se"
|
|
@@ -27,5 +27,5 @@
|
|
|
27
27
|
]
|
|
28
28
|
}
|
|
29
29
|
],
|
|
30
|
-
"version": "4.11.
|
|
30
|
+
"version": "4.11.9"
|
|
31
31
|
}
|
package/bridge/cli.cjs
CHANGED
|
@@ -3352,7 +3352,7 @@ var init_models = __esm({
|
|
|
3352
3352
|
COPILOT_FAMILY_DEFAULTS = {
|
|
3353
3353
|
HAIKU: "claude-haiku-4-5",
|
|
3354
3354
|
SONNET: "claude-sonnet-4-6",
|
|
3355
|
-
OPUS: "claude-opus-4-
|
|
3355
|
+
OPUS: "claude-opus-4-7"
|
|
3356
3356
|
};
|
|
3357
3357
|
BUILTIN_TIER_MODEL_DEFAULTS = {
|
|
3358
3358
|
LOW: COPILOT_FAMILY_DEFAULTS.HAIKU,
|
|
@@ -14170,6 +14170,7 @@ function normalizeRegistryEntry(value) {
|
|
|
14170
14170
|
const raw = value;
|
|
14171
14171
|
const command = typeof raw.command === "string" && raw.command.trim().length > 0 ? raw.command.trim() : void 0;
|
|
14172
14172
|
const url2 = typeof raw.url === "string" && raw.url.trim().length > 0 ? raw.url.trim() : void 0;
|
|
14173
|
+
const type = typeof raw.type === "string" && raw.type.trim().length > 0 ? raw.type.trim() : void 0;
|
|
14173
14174
|
if (!command && !url2) {
|
|
14174
14175
|
return null;
|
|
14175
14176
|
}
|
|
@@ -14182,6 +14183,7 @@ function normalizeRegistryEntry(value) {
|
|
|
14182
14183
|
...args.length > 0 ? { args } : {},
|
|
14183
14184
|
...env2 && Object.keys(env2).length > 0 ? { env: env2 } : {},
|
|
14184
14185
|
...url2 ? { url: url2 } : {},
|
|
14186
|
+
...type ? { type } : {},
|
|
14185
14187
|
...effectiveTimeout ? { timeout: effectiveTimeout } : {}
|
|
14186
14188
|
};
|
|
14187
14189
|
}
|
|
@@ -14320,6 +14322,9 @@ function renderCodexServerBlock(name, entry) {
|
|
|
14320
14322
|
if (entry.url) {
|
|
14321
14323
|
lines.push(`url = ${renderTomlString(entry.url)}`);
|
|
14322
14324
|
}
|
|
14325
|
+
if (entry.type) {
|
|
14326
|
+
lines.push(`type = ${renderTomlString(entry.type)}`);
|
|
14327
|
+
}
|
|
14323
14328
|
if (entry.env && Object.keys(entry.env).length > 0) {
|
|
14324
14329
|
lines.push(`env = ${renderTomlEnvTable(entry.env)}`);
|
|
14325
14330
|
}
|
|
@@ -14998,6 +15003,138 @@ function getInstalledOmcPluginRoots() {
|
|
|
14998
15003
|
}
|
|
14999
15004
|
return Array.from(pluginRoots);
|
|
15000
15005
|
}
|
|
15006
|
+
function countPluginSyncPayloadEntries(root) {
|
|
15007
|
+
let score = 0;
|
|
15008
|
+
for (const entry of PLUGIN_SYNC_PAYLOAD) {
|
|
15009
|
+
if ((0, import_fs29.existsSync)((0, import_path38.join)(root, entry))) {
|
|
15010
|
+
score += 1;
|
|
15011
|
+
}
|
|
15012
|
+
}
|
|
15013
|
+
return score;
|
|
15014
|
+
}
|
|
15015
|
+
function getKnownMarketplaceInstallRoots() {
|
|
15016
|
+
const knownMarketplacesPath = (0, import_path38.join)(COPILOT_CONFIG_DIR, "plugins", "known_marketplaces.json");
|
|
15017
|
+
if (!(0, import_fs29.existsSync)(knownMarketplacesPath)) {
|
|
15018
|
+
return [];
|
|
15019
|
+
}
|
|
15020
|
+
try {
|
|
15021
|
+
const raw = JSON.parse((0, import_fs29.readFileSync)(knownMarketplacesPath, "utf-8"));
|
|
15022
|
+
const roots = /* @__PURE__ */ new Set();
|
|
15023
|
+
for (const [marketplaceId, entry] of Object.entries(raw)) {
|
|
15024
|
+
const lower = marketplaceId.toLowerCase();
|
|
15025
|
+
const isOmcMarketplace = lower.includes("omc") || lower.includes("oh-my-copilot");
|
|
15026
|
+
if (!isOmcMarketplace) {
|
|
15027
|
+
continue;
|
|
15028
|
+
}
|
|
15029
|
+
if (typeof entry?.installLocation === "string" && entry.installLocation.trim().length > 0) {
|
|
15030
|
+
roots.add(entry.installLocation.trim());
|
|
15031
|
+
}
|
|
15032
|
+
if (typeof entry?.source?.path === "string" && entry.source.path.trim().length > 0) {
|
|
15033
|
+
roots.add(entry.source.path.trim());
|
|
15034
|
+
}
|
|
15035
|
+
}
|
|
15036
|
+
return Array.from(roots);
|
|
15037
|
+
} catch {
|
|
15038
|
+
return [];
|
|
15039
|
+
}
|
|
15040
|
+
}
|
|
15041
|
+
function getGlobalInstalledPackageRoot() {
|
|
15042
|
+
try {
|
|
15043
|
+
const npmRoot = String((0, import_child_process11.execSync)("npm root -g", {
|
|
15044
|
+
encoding: "utf-8",
|
|
15045
|
+
stdio: "pipe",
|
|
15046
|
+
timeout: 1e4,
|
|
15047
|
+
...process.platform === "win32" ? { windowsHide: true } : {}
|
|
15048
|
+
}) ?? "").trim();
|
|
15049
|
+
if (!npmRoot) {
|
|
15050
|
+
return null;
|
|
15051
|
+
}
|
|
15052
|
+
const globalPackageRoot = (0, import_path38.join)(npmRoot, "oh-my-copilot");
|
|
15053
|
+
return (0, import_fs29.existsSync)(globalPackageRoot) ? globalPackageRoot : null;
|
|
15054
|
+
} catch {
|
|
15055
|
+
return null;
|
|
15056
|
+
}
|
|
15057
|
+
}
|
|
15058
|
+
function isCacheInstalledPluginRoot(root) {
|
|
15059
|
+
const normalizedRoot = normalizePath2(root);
|
|
15060
|
+
const cacheBase = normalizePath2((0, import_path38.join)(COPILOT_CONFIG_DIR, "plugins", "cache"));
|
|
15061
|
+
return normalizedRoot === cacheBase || normalizedRoot.startsWith(`${cacheBase}/`);
|
|
15062
|
+
}
|
|
15063
|
+
function resolveBestPluginSyncSource(targetRoots) {
|
|
15064
|
+
const excludedRoots = new Set(targetRoots.map(normalizePath2));
|
|
15065
|
+
const seen = /* @__PURE__ */ new Set();
|
|
15066
|
+
const globalPackageRoot = getGlobalInstalledPackageRoot();
|
|
15067
|
+
const candidates = [
|
|
15068
|
+
...getKnownMarketplaceInstallRoots(),
|
|
15069
|
+
...globalPackageRoot ? [globalPackageRoot] : [],
|
|
15070
|
+
getRuntimePackageRoot()
|
|
15071
|
+
];
|
|
15072
|
+
let bestRoot = null;
|
|
15073
|
+
let bestScore = -1;
|
|
15074
|
+
let bestOrder = Number.POSITIVE_INFINITY;
|
|
15075
|
+
for (const [order, candidate] of candidates.entries()) {
|
|
15076
|
+
const normalizedCandidate = normalizePath2(candidate);
|
|
15077
|
+
if (seen.has(normalizedCandidate) || excludedRoots.has(normalizedCandidate) || !(0, import_fs29.existsSync)(candidate)) {
|
|
15078
|
+
continue;
|
|
15079
|
+
}
|
|
15080
|
+
seen.add(normalizedCandidate);
|
|
15081
|
+
const score = countPluginSyncPayloadEntries(candidate);
|
|
15082
|
+
if (score === 0) {
|
|
15083
|
+
continue;
|
|
15084
|
+
}
|
|
15085
|
+
if (score > bestScore || score === bestScore && order < bestOrder) {
|
|
15086
|
+
bestRoot = candidate;
|
|
15087
|
+
bestScore = score;
|
|
15088
|
+
bestOrder = order;
|
|
15089
|
+
}
|
|
15090
|
+
}
|
|
15091
|
+
return bestRoot;
|
|
15092
|
+
}
|
|
15093
|
+
function copyPluginSyncPayload(sourceRoot, targetRoots) {
|
|
15094
|
+
if (targetRoots.length === 0) {
|
|
15095
|
+
return { synced: false, errors: [] };
|
|
15096
|
+
}
|
|
15097
|
+
let synced = false;
|
|
15098
|
+
const errors = [];
|
|
15099
|
+
for (const targetRoot of targetRoots) {
|
|
15100
|
+
let copiedToTarget = false;
|
|
15101
|
+
for (const entry of PLUGIN_SYNC_PAYLOAD) {
|
|
15102
|
+
const sourcePath = (0, import_path38.join)(sourceRoot, entry);
|
|
15103
|
+
if (!(0, import_fs29.existsSync)(sourcePath)) {
|
|
15104
|
+
continue;
|
|
15105
|
+
}
|
|
15106
|
+
try {
|
|
15107
|
+
(0, import_fs29.cpSync)(sourcePath, (0, import_path38.join)(targetRoot, entry), {
|
|
15108
|
+
recursive: true,
|
|
15109
|
+
force: true
|
|
15110
|
+
});
|
|
15111
|
+
copiedToTarget = true;
|
|
15112
|
+
} catch (error48) {
|
|
15113
|
+
const message = error48 instanceof Error ? error48.message : String(error48);
|
|
15114
|
+
errors.push(`Failed to sync ${entry} to ${targetRoot}: ${message}`);
|
|
15115
|
+
}
|
|
15116
|
+
}
|
|
15117
|
+
synced = synced || copiedToTarget;
|
|
15118
|
+
}
|
|
15119
|
+
return { synced, errors };
|
|
15120
|
+
}
|
|
15121
|
+
function syncInstalledPluginPayload() {
|
|
15122
|
+
const targetRoots = getInstalledOmcPluginRoots().filter((root) => (0, import_fs29.existsSync)(root) && isCacheInstalledPluginRoot(root));
|
|
15123
|
+
if (targetRoots.length === 0) {
|
|
15124
|
+
return { synced: false, errors: [], sourceRoot: null, targetRoots: [] };
|
|
15125
|
+
}
|
|
15126
|
+
const sourceRoot = resolveBestPluginSyncSource(targetRoots);
|
|
15127
|
+
if (!sourceRoot) {
|
|
15128
|
+
return {
|
|
15129
|
+
synced: false,
|
|
15130
|
+
errors: ["Unable to find a complete OMC package source to repair installed plugin roots"],
|
|
15131
|
+
sourceRoot: null,
|
|
15132
|
+
targetRoots
|
|
15133
|
+
};
|
|
15134
|
+
}
|
|
15135
|
+
const result = copyPluginSyncPayload(sourceRoot, targetRoots);
|
|
15136
|
+
return { ...result, sourceRoot, targetRoots };
|
|
15137
|
+
}
|
|
15001
15138
|
function hasPluginProvidedAgentFiles() {
|
|
15002
15139
|
return getInstalledOmcPluginRoots().some(
|
|
15003
15140
|
(pluginRoot) => directoryHasMarkdownFiles((0, import_path38.join)(pluginRoot, "agents"))
|
|
@@ -15301,6 +15438,17 @@ function install(options = {}) {
|
|
|
15301
15438
|
log3(`Platform: ${process.platform} (Node.js hooks)`);
|
|
15302
15439
|
const runningAsPlugin = isRunningAsPlugin();
|
|
15303
15440
|
const projectScoped = isProjectScopedPlugin();
|
|
15441
|
+
const pluginPayloadSync = syncInstalledPluginPayload();
|
|
15442
|
+
if (pluginPayloadSync.errors.length > 0) {
|
|
15443
|
+
for (const error48 of pluginPayloadSync.errors) {
|
|
15444
|
+
log3(`Plugin cache sync warning: ${error48}`);
|
|
15445
|
+
}
|
|
15446
|
+
}
|
|
15447
|
+
if (pluginPayloadSync.synced) {
|
|
15448
|
+
const targetSummary = pluginPayloadSync.targetRoots.length > 0 ? pluginPayloadSync.targetRoots.join(", ") : "installed plugin roots";
|
|
15449
|
+
const sourceSummary = pluginPayloadSync.sourceRoot ?? "unknown source";
|
|
15450
|
+
log3(`Repaired installed OMC plugin payload from ${sourceSummary} -> ${targetSummary}`);
|
|
15451
|
+
}
|
|
15304
15452
|
const pluginProvidesAgentFiles = hasPluginProvidedAgentFiles();
|
|
15305
15453
|
const pluginProvidesSkillFiles = hasPluginProvidedSkillFiles();
|
|
15306
15454
|
const pluginProvidesHookFiles = hasPluginProvidedHookFiles();
|
|
@@ -15473,6 +15621,16 @@ function install(options = {}) {
|
|
|
15473
15621
|
(0, import_fs29.chmodSync)(hudScriptPath, 493);
|
|
15474
15622
|
}
|
|
15475
15623
|
log3(" Installed omcp-hud.mjs");
|
|
15624
|
+
for (const legacyName of ["omc-hud.mjs", "omc-hud.js"]) {
|
|
15625
|
+
const legacyPath = (0, import_path38.join)(HUD_DIR, legacyName);
|
|
15626
|
+
if ((0, import_fs29.existsSync)(legacyPath)) {
|
|
15627
|
+
try {
|
|
15628
|
+
(0, import_fs29.unlinkSync)(legacyPath);
|
|
15629
|
+
log3(` Removed legacy HUD wrapper: ${legacyName}`);
|
|
15630
|
+
} catch {
|
|
15631
|
+
}
|
|
15632
|
+
}
|
|
15633
|
+
}
|
|
15476
15634
|
} catch (_e) {
|
|
15477
15635
|
log3(" Warning: Could not install HUD statusline script (non-fatal)");
|
|
15478
15636
|
hudScriptPath = null;
|
|
@@ -15585,7 +15743,7 @@ function getInstallInfo() {
|
|
|
15585
15743
|
return null;
|
|
15586
15744
|
}
|
|
15587
15745
|
}
|
|
15588
|
-
var import_fs29, import_path38, import_url7, import_os10, import_child_process11, COPILOT_CONFIG_DIR, AGENTS_DIR, COMMANDS_DIR, SKILLS_DIR, HOOKS_DIR, HUD_DIR, SETTINGS_FILE, VERSION_FILE, OMC_MANAGED_SKILL_MARKER, CORE_COMMANDS, VERSION, OMC_VERSION_MARKER_PATTERN, CC_NATIVE_COMMANDS, SKININTHEGAMEBROS_ONLY_SKILLS, OMC_HOOK_FILENAMES, STANDALONE_HOOK_TEMPLATE_FILES;
|
|
15746
|
+
var import_fs29, import_path38, import_url7, import_os10, import_child_process11, COPILOT_CONFIG_DIR, AGENTS_DIR, COMMANDS_DIR, SKILLS_DIR, HOOKS_DIR, HUD_DIR, SETTINGS_FILE, VERSION_FILE, OMC_MANAGED_SKILL_MARKER, CORE_COMMANDS, VERSION, OMC_VERSION_MARKER_PATTERN, CC_NATIVE_COMMANDS, SKININTHEGAMEBROS_ONLY_SKILLS, OMC_HOOK_FILENAMES, STANDALONE_HOOK_TEMPLATE_FILES, PLUGIN_SYNC_PAYLOAD;
|
|
15589
15747
|
var init_installer = __esm({
|
|
15590
15748
|
"src/installer/index.ts"() {
|
|
15591
15749
|
"use strict";
|
|
@@ -15652,6 +15810,21 @@ var init_installer = __esm({
|
|
|
15652
15810
|
"persistent-mode.mjs",
|
|
15653
15811
|
"code-simplifier.mjs"
|
|
15654
15812
|
];
|
|
15813
|
+
PLUGIN_SYNC_PAYLOAD = [
|
|
15814
|
+
"dist",
|
|
15815
|
+
"bridge",
|
|
15816
|
+
"hooks",
|
|
15817
|
+
"scripts",
|
|
15818
|
+
"skills",
|
|
15819
|
+
"agents",
|
|
15820
|
+
"templates",
|
|
15821
|
+
"docs",
|
|
15822
|
+
".claude-plugin",
|
|
15823
|
+
".mcp.json",
|
|
15824
|
+
"README.md",
|
|
15825
|
+
"LICENSE",
|
|
15826
|
+
"package.json"
|
|
15827
|
+
];
|
|
15655
15828
|
}
|
|
15656
15829
|
});
|
|
15657
15830
|
|
|
@@ -15716,40 +15889,8 @@ function syncMarketplaceClone(verbose = false) {
|
|
|
15716
15889
|
}
|
|
15717
15890
|
return { ok: true, message: "Marketplace clone updated" };
|
|
15718
15891
|
}
|
|
15719
|
-
function copyPluginSyncPayload(sourceRoot, targetRoots) {
|
|
15720
|
-
if (targetRoots.length === 0) {
|
|
15721
|
-
return { synced: false, errors: [] };
|
|
15722
|
-
}
|
|
15723
|
-
let synced = false;
|
|
15724
|
-
const errors = [];
|
|
15725
|
-
for (const targetRoot of targetRoots) {
|
|
15726
|
-
let copiedToTarget = false;
|
|
15727
|
-
for (const entry of PLUGIN_SYNC_PAYLOAD) {
|
|
15728
|
-
const sourcePath = (0, import_path39.join)(sourceRoot, entry);
|
|
15729
|
-
if (!(0, import_fs30.existsSync)(sourcePath)) {
|
|
15730
|
-
continue;
|
|
15731
|
-
}
|
|
15732
|
-
try {
|
|
15733
|
-
(0, import_fs30.cpSync)(sourcePath, (0, import_path39.join)(targetRoot, entry), {
|
|
15734
|
-
recursive: true,
|
|
15735
|
-
force: true
|
|
15736
|
-
});
|
|
15737
|
-
copiedToTarget = true;
|
|
15738
|
-
} catch (error48) {
|
|
15739
|
-
const message = error48 instanceof Error ? error48.message : String(error48);
|
|
15740
|
-
errors.push(`Failed to sync ${entry} to ${targetRoot}: ${message}`);
|
|
15741
|
-
}
|
|
15742
|
-
}
|
|
15743
|
-
synced = synced || copiedToTarget;
|
|
15744
|
-
}
|
|
15745
|
-
return { synced, errors };
|
|
15746
|
-
}
|
|
15747
15892
|
function syncActivePluginCache() {
|
|
15748
|
-
const
|
|
15749
|
-
if (activeRoots.length === 0) {
|
|
15750
|
-
return { synced: false, errors: [] };
|
|
15751
|
-
}
|
|
15752
|
-
const result = copyPluginSyncPayload(getRuntimePackageRoot(), activeRoots);
|
|
15893
|
+
const result = syncInstalledPluginPayload();
|
|
15753
15894
|
if (result.synced) {
|
|
15754
15895
|
console.log("[omc update] Synced plugin cache");
|
|
15755
15896
|
}
|
|
@@ -16331,7 +16472,7 @@ function initSilentAutoUpdate(config2 = {}) {
|
|
|
16331
16472
|
silentAutoUpdate(config2).catch(() => {
|
|
16332
16473
|
});
|
|
16333
16474
|
}
|
|
16334
|
-
var import_fs30, import_path39, import_child_process12, REPO_OWNER, REPO_NAME, GITHUB_API_URL, GITHUB_RAW_URL,
|
|
16475
|
+
var import_fs30, import_path39, import_child_process12, REPO_OWNER, REPO_NAME, GITHUB_API_URL, GITHUB_RAW_URL, COPILOT_CONFIG_DIR2, VERSION_FILE2, CONFIG_FILE, SILENT_UPDATE_STATE_FILE;
|
|
16335
16476
|
var init_auto_update = __esm({
|
|
16336
16477
|
"src/features/auto-update.ts"() {
|
|
16337
16478
|
"use strict";
|
|
@@ -16346,21 +16487,6 @@ var init_auto_update = __esm({
|
|
|
16346
16487
|
REPO_NAME = "oh-my-copilot";
|
|
16347
16488
|
GITHUB_API_URL = `https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}`;
|
|
16348
16489
|
GITHUB_RAW_URL = `https://raw.githubusercontent.com/${REPO_OWNER}/${REPO_NAME}`;
|
|
16349
|
-
PLUGIN_SYNC_PAYLOAD = [
|
|
16350
|
-
"dist",
|
|
16351
|
-
"bridge",
|
|
16352
|
-
"hooks",
|
|
16353
|
-
"scripts",
|
|
16354
|
-
"skills",
|
|
16355
|
-
"agents",
|
|
16356
|
-
"templates",
|
|
16357
|
-
"docs",
|
|
16358
|
-
".claude-plugin",
|
|
16359
|
-
".mcp.json",
|
|
16360
|
-
"README.md",
|
|
16361
|
-
"LICENSE",
|
|
16362
|
-
"package.json"
|
|
16363
|
-
];
|
|
16364
16490
|
COPILOT_CONFIG_DIR2 = getConfigDir();
|
|
16365
16491
|
VERSION_FILE2 = (0, import_path39.join)(COPILOT_CONFIG_DIR2, ".omc-version.json");
|
|
16366
16492
|
CONFIG_FILE = (0, import_path39.join)(COPILOT_CONFIG_DIR2, ".omc-config.json");
|
|
@@ -17800,12 +17926,21 @@ function isClaudeSession(env2) {
|
|
|
17800
17926
|
);
|
|
17801
17927
|
}
|
|
17802
17928
|
function commandExists2(command, env2) {
|
|
17929
|
+
const pathValue = env2.PATH ?? env2.Path ?? "";
|
|
17930
|
+
const pathExt = env2.PATHEXT ?? "";
|
|
17931
|
+
const cacheKey = `${command}\0${pathValue}\0${pathExt}`;
|
|
17932
|
+
const cached2 = commandExistsCache.get(cacheKey);
|
|
17933
|
+
if (cached2 !== void 0) {
|
|
17934
|
+
return cached2;
|
|
17935
|
+
}
|
|
17803
17936
|
const lookupCommand = process.platform === "win32" ? "where" : "which";
|
|
17804
17937
|
const result = (0, import_child_process14.spawnSync)(lookupCommand, [command], {
|
|
17805
17938
|
stdio: "ignore",
|
|
17806
17939
|
env: env2
|
|
17807
17940
|
});
|
|
17808
|
-
|
|
17941
|
+
const found = result.status === 0;
|
|
17942
|
+
commandExistsCache.set(cacheKey, found);
|
|
17943
|
+
return found;
|
|
17809
17944
|
}
|
|
17810
17945
|
function resolveOmcCliPrefix(options = {}) {
|
|
17811
17946
|
const env2 = options.env ?? process.env;
|
|
@@ -17843,13 +17978,14 @@ function rewriteOmcCliInvocations(text, options = {}) {
|
|
|
17843
17978
|
return `${lineStart}${leader}${prefix} ${suffix}`;
|
|
17844
17979
|
});
|
|
17845
17980
|
}
|
|
17846
|
-
var import_child_process14, OMC_CLI_BINARY, OMC_PLUGIN_BRIDGE_PREFIX;
|
|
17981
|
+
var import_child_process14, OMC_CLI_BINARY, OMC_PLUGIN_BRIDGE_PREFIX, commandExistsCache;
|
|
17847
17982
|
var init_omc_cli_rendering = __esm({
|
|
17848
17983
|
"src/utils/omc-cli-rendering.ts"() {
|
|
17849
17984
|
"use strict";
|
|
17850
17985
|
import_child_process14 = require("child_process");
|
|
17851
17986
|
OMC_CLI_BINARY = "omcp";
|
|
17852
17987
|
OMC_PLUGIN_BRIDGE_PREFIX = 'node "$CLAUDE_PLUGIN_ROOT"/bridge/cli.cjs';
|
|
17988
|
+
commandExistsCache = /* @__PURE__ */ new Map();
|
|
17853
17989
|
}
|
|
17854
17990
|
});
|
|
17855
17991
|
|
package/bridge/runtime-cli.cjs
CHANGED
|
@@ -1255,7 +1255,7 @@ var TIER_ENV_KEYS = {
|
|
|
1255
1255
|
var COPILOT_FAMILY_DEFAULTS = {
|
|
1256
1256
|
HAIKU: "claude-haiku-4-5",
|
|
1257
1257
|
SONNET: "claude-sonnet-4-6",
|
|
1258
|
-
OPUS: "claude-opus-4-
|
|
1258
|
+
OPUS: "claude-opus-4-7"
|
|
1259
1259
|
};
|
|
1260
1260
|
var BUILTIN_TIER_MODEL_DEFAULTS = {
|
|
1261
1261
|
LOW: COPILOT_FAMILY_DEFAULTS.HAIKU,
|
|
@@ -1852,13 +1852,23 @@ function isClaudeSession(env) {
|
|
|
1852
1852
|
env.CLAUDECODE?.trim() || env.CLAUDE_SESSION_ID?.trim() || env.CLAUDECODE_SESSION_ID?.trim()
|
|
1853
1853
|
);
|
|
1854
1854
|
}
|
|
1855
|
+
var commandExistsCache = /* @__PURE__ */ new Map();
|
|
1855
1856
|
function commandExists(command, env) {
|
|
1857
|
+
const pathValue = env.PATH ?? env.Path ?? "";
|
|
1858
|
+
const pathExt = env.PATHEXT ?? "";
|
|
1859
|
+
const cacheKey = `${command}\0${pathValue}\0${pathExt}`;
|
|
1860
|
+
const cached = commandExistsCache.get(cacheKey);
|
|
1861
|
+
if (cached !== void 0) {
|
|
1862
|
+
return cached;
|
|
1863
|
+
}
|
|
1856
1864
|
const lookupCommand = process.platform === "win32" ? "where" : "which";
|
|
1857
1865
|
const result = (0, import_child_process3.spawnSync)(lookupCommand, [command], {
|
|
1858
1866
|
stdio: "ignore",
|
|
1859
1867
|
env
|
|
1860
1868
|
});
|
|
1861
|
-
|
|
1869
|
+
const found = result.status === 0;
|
|
1870
|
+
commandExistsCache.set(cacheKey, found);
|
|
1871
|
+
return found;
|
|
1862
1872
|
}
|
|
1863
1873
|
function resolveOmcCliPrefix(options = {}) {
|
|
1864
1874
|
const env = options.env ?? process.env;
|
package/bridge/team-bridge.cjs
CHANGED
|
@@ -1109,7 +1109,7 @@ function findPermissionViolations(changedPaths, permissions, cwd) {
|
|
|
1109
1109
|
var COPILOT_FAMILY_DEFAULTS = {
|
|
1110
1110
|
HAIKU: "claude-haiku-4-5",
|
|
1111
1111
|
SONNET: "claude-sonnet-4-6",
|
|
1112
|
-
OPUS: "claude-opus-4-
|
|
1112
|
+
OPUS: "claude-opus-4-7"
|
|
1113
1113
|
};
|
|
1114
1114
|
var BUILTIN_TIER_MODEL_DEFAULTS = {
|
|
1115
1115
|
LOW: COPILOT_FAMILY_DEFAULTS.HAIKU,
|
package/bridge/team.js
CHANGED
|
@@ -1668,12 +1668,21 @@ function isClaudeSession(env) {
|
|
|
1668
1668
|
);
|
|
1669
1669
|
}
|
|
1670
1670
|
function commandExists(command, env) {
|
|
1671
|
+
const pathValue = env.PATH ?? env.Path ?? "";
|
|
1672
|
+
const pathExt = env.PATHEXT ?? "";
|
|
1673
|
+
const cacheKey = `${command}\0${pathValue}\0${pathExt}`;
|
|
1674
|
+
const cached = commandExistsCache.get(cacheKey);
|
|
1675
|
+
if (cached !== void 0) {
|
|
1676
|
+
return cached;
|
|
1677
|
+
}
|
|
1671
1678
|
const lookupCommand = process.platform === "win32" ? "where" : "which";
|
|
1672
1679
|
const result = spawnSync2(lookupCommand, [command], {
|
|
1673
1680
|
stdio: "ignore",
|
|
1674
1681
|
env
|
|
1675
1682
|
});
|
|
1676
|
-
|
|
1683
|
+
const found = result.status === 0;
|
|
1684
|
+
commandExistsCache.set(cacheKey, found);
|
|
1685
|
+
return found;
|
|
1677
1686
|
}
|
|
1678
1687
|
function resolveOmcCliPrefix(options = {}) {
|
|
1679
1688
|
const env = options.env ?? process.env;
|
|
@@ -1699,12 +1708,13 @@ function formatOmcCliInvocation(commandSuffix, options = {}) {
|
|
|
1699
1708
|
const suffix = commandSuffix.trim().replace(/^omc\s+/, "");
|
|
1700
1709
|
return `${resolveInvocationPrefix(suffix, options)} ${suffix}`.trim();
|
|
1701
1710
|
}
|
|
1702
|
-
var OMC_CLI_BINARY, OMC_PLUGIN_BRIDGE_PREFIX;
|
|
1711
|
+
var OMC_CLI_BINARY, OMC_PLUGIN_BRIDGE_PREFIX, commandExistsCache;
|
|
1703
1712
|
var init_omc_cli_rendering = __esm({
|
|
1704
1713
|
"src/utils/omc-cli-rendering.ts"() {
|
|
1705
1714
|
"use strict";
|
|
1706
1715
|
OMC_CLI_BINARY = "omcp";
|
|
1707
1716
|
OMC_PLUGIN_BRIDGE_PREFIX = 'node "$CLAUDE_PLUGIN_ROOT"/bridge/cli.cjs';
|
|
1717
|
+
commandExistsCache = /* @__PURE__ */ new Map();
|
|
1708
1718
|
}
|
|
1709
1719
|
});
|
|
1710
1720
|
|
|
@@ -1905,7 +1915,7 @@ var init_models = __esm({
|
|
|
1905
1915
|
COPILOT_FAMILY_DEFAULTS = {
|
|
1906
1916
|
HAIKU: "claude-haiku-4-5",
|
|
1907
1917
|
SONNET: "claude-sonnet-4-6",
|
|
1908
|
-
OPUS: "claude-opus-4-
|
|
1918
|
+
OPUS: "claude-opus-4-7"
|
|
1909
1919
|
};
|
|
1910
1920
|
BUILTIN_TIER_MODEL_DEFAULTS = {
|
|
1911
1921
|
LOW: COPILOT_FAMILY_DEFAULTS.HAIKU,
|
|
@@ -161,7 +161,22 @@ function runHook(toolInput, env) {
|
|
|
161
161
|
const result = spawnSync('node', [HOOK_PATH], {
|
|
162
162
|
input: stdin,
|
|
163
163
|
encoding: 'utf8',
|
|
164
|
-
env: {
|
|
164
|
+
env: {
|
|
165
|
+
...process.env,
|
|
166
|
+
// Reset tier-resolution chain so host env doesn't leak into tests.
|
|
167
|
+
OMC_SUBAGENT_MODEL: '',
|
|
168
|
+
OMC_MODEL_LOW: '',
|
|
169
|
+
OMC_MODEL_MEDIUM: '',
|
|
170
|
+
OMC_MODEL_HIGH: '',
|
|
171
|
+
CLAUDE_CODE_BEDROCK_HAIKU_MODEL: '',
|
|
172
|
+
CLAUDE_CODE_BEDROCK_SONNET_MODEL: '',
|
|
173
|
+
CLAUDE_CODE_BEDROCK_OPUS_MODEL: '',
|
|
174
|
+
ANTHROPIC_DEFAULT_HAIKU_MODEL: '',
|
|
175
|
+
ANTHROPIC_DEFAULT_SONNET_MODEL: '',
|
|
176
|
+
ANTHROPIC_DEFAULT_OPUS_MODEL: '',
|
|
177
|
+
...env,
|
|
178
|
+
OMC_ROUTING_FORCE_INHERIT: 'true',
|
|
179
|
+
},
|
|
165
180
|
timeout: 10000,
|
|
166
181
|
});
|
|
167
182
|
const lines = (result.stdout || '').split('\n').filter(Boolean);
|
|
@@ -197,13 +212,21 @@ describe('hook integration — force-inherit + [1m] scenarios', () => {
|
|
|
197
212
|
expect(result.reason).toMatch(/model="sonnet"/);
|
|
198
213
|
expect(result.reason).toMatch(/global\.anthropic\.claude-sonnet-4-6\[1m\]/);
|
|
199
214
|
});
|
|
200
|
-
it('derives tier alias from
|
|
215
|
+
it('derives tier alias from session model when ANTHROPIC_DEFAULT_SONNET_MODEL is set', () => {
|
|
216
|
+
const result = runHook({}, {
|
|
217
|
+
ANTHROPIC_MODEL: 'global.anthropic.claude-sonnet-4-6[1m]',
|
|
218
|
+
ANTHROPIC_DEFAULT_SONNET_MODEL: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
219
|
+
});
|
|
220
|
+
expect(result.denied).toBe(true);
|
|
221
|
+
// normalizeToCcAlias(sessionModel) → 'sonnet'; resolvedSafe is truthy
|
|
222
|
+
expect(result.reason).toMatch(/model="sonnet"/);
|
|
223
|
+
});
|
|
224
|
+
it('derives tier alias from OMC_SUBAGENT_MODEL when set (backward compat)', () => {
|
|
201
225
|
const result = runHook({}, {
|
|
202
226
|
ANTHROPIC_MODEL: 'global.anthropic.claude-sonnet-4-6[1m]',
|
|
203
227
|
OMC_SUBAGENT_MODEL: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
204
228
|
});
|
|
205
229
|
expect(result.denied).toBe(true);
|
|
206
|
-
// normalizeToCcAlias('us.anthropic.claude-sonnet-4-5-...') → 'sonnet'
|
|
207
230
|
expect(result.reason).toMatch(/model="sonnet"/);
|
|
208
231
|
});
|
|
209
232
|
it('denies no-model call when only ANTHROPIC_MODEL has [1m] suffix (any [1m] triggers deny)', () => {
|
|
@@ -223,13 +246,13 @@ describe('hook integration — force-inherit + [1m] scenarios', () => {
|
|
|
223
246
|
expect(result.reason).toMatch(/model="sonnet"/);
|
|
224
247
|
expect(result.reason).toMatch(/claude-sonnet-4-6\[1m\]/);
|
|
225
248
|
});
|
|
226
|
-
it('derives tier alias from
|
|
227
|
-
// normalizeToCcAlias('us.anthropic.claude-sonnet-4-5-20250929-v1:0') → 'sonnet'
|
|
249
|
+
it('derives tier alias from ANTHROPIC_DEFAULT_SONNET_MODEL for guidance in [1m] deny', () => {
|
|
228
250
|
const result = runHook({}, {
|
|
229
251
|
ANTHROPIC_MODEL: 'claude-sonnet-4-6[1m]',
|
|
230
|
-
|
|
252
|
+
ANTHROPIC_DEFAULT_SONNET_MODEL: 'us.anthropic.claude-sonnet-4-5-20250929-v1:0',
|
|
231
253
|
});
|
|
232
254
|
expect(result.denied).toBe(true);
|
|
255
|
+
// normalizeToCcAlias('claude-sonnet-4-6[1m]') → 'sonnet'; resolvedSafe is truthy
|
|
233
256
|
expect(result.reason).toMatch(/model="sonnet"/);
|
|
234
257
|
});
|
|
235
258
|
it('denies no-model call when CLAUDE_MODEL is provider-specific[1m] but ANTHROPIC_MODEL is bare[1m]', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bedrock-lm-suffix-hook.test.js","sourceRoot":"","sources":["../../src/__tests__/bedrock-lm-suffix-hook.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"bedrock-lm-suffix-hook.test.js","sourceRoot":"","sources":["../../src/__tests__/bedrock-lm-suffix-hook.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -118,7 +118,7 @@ describe('Bedrock model routing repro', () => {
|
|
|
118
118
|
const defs = getAgentDefinitions({ config });
|
|
119
119
|
expect(defs['executor'].model).toBe('claude-sonnet-4-6');
|
|
120
120
|
expect(defs['explore'].model).toBe('claude-haiku-4-5');
|
|
121
|
-
expect(defs['architect'].model).toBe('claude-opus-4-
|
|
121
|
+
expect(defs['architect'].model).toBe('claude-opus-4-7');
|
|
122
122
|
// 4. enforceModel normalizes to bare CC-supported aliases (FIX)
|
|
123
123
|
const { enforceModel } = await import('../features/delegation-enforcer.js');
|
|
124
124
|
// 4a. executor → 'sonnet' (normalized from config's full model ID)
|
|
@@ -1,14 +1,32 @@
|
|
|
1
|
-
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { mkdtempSync, writeFileSync, readFileSync, mkdirSync } from 'fs';
|
|
1
|
+
import { describe, it, expect, beforeAll } from 'vitest';
|
|
2
|
+
import { mkdtempSync, writeFileSync, readFileSync, mkdirSync, existsSync } from 'fs';
|
|
3
3
|
import { join, dirname } from 'path';
|
|
4
4
|
import { tmpdir } from 'os';
|
|
5
5
|
import { spawnSync } from 'child_process';
|
|
6
6
|
import { fileURLToPath } from 'url';
|
|
7
7
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
8
8
|
const REPO_ROOT = join(__dirname, '..', '..');
|
|
9
|
-
const
|
|
9
|
+
const BUNDLED_CLI_ENTRY = join(REPO_ROOT, 'bridge', 'cli.cjs');
|
|
10
|
+
const DIST_CLI_ENTRY = join(REPO_ROOT, 'dist', 'cli', 'index.js');
|
|
11
|
+
const SRC_CLI_ENTRY = join(REPO_ROOT, 'src', 'cli', 'index.ts');
|
|
12
|
+
// Spawning `node --import tsx src/cli/index.ts` cold-compiles the full CLI
|
|
13
|
+
// module graph on every call (~10-15s each on Windows). Prefer the bundled
|
|
14
|
+
// single-file `bridge/cli.cjs` (~1s cold) when present, then the unbundled
|
|
15
|
+
// `dist/cli/index.js` (~2.8s cold), and finally fall back to tsx for dev.
|
|
16
|
+
let cliMode = 'tsx';
|
|
17
|
+
beforeAll(() => {
|
|
18
|
+
if (existsSync(BUNDLED_CLI_ENTRY))
|
|
19
|
+
cliMode = 'bundle';
|
|
20
|
+
else if (existsSync(DIST_CLI_ENTRY))
|
|
21
|
+
cliMode = 'dist';
|
|
22
|
+
});
|
|
10
23
|
function runCli(args, homeDir) {
|
|
11
|
-
const
|
|
24
|
+
const spawnArgs = cliMode === 'bundle'
|
|
25
|
+
? [BUNDLED_CLI_ENTRY, ...args]
|
|
26
|
+
: cliMode === 'dist'
|
|
27
|
+
? [DIST_CLI_ENTRY, ...args]
|
|
28
|
+
: ['--import', 'tsx', SRC_CLI_ENTRY, ...args];
|
|
29
|
+
const result = spawnSync(process.execPath, spawnArgs, {
|
|
12
30
|
cwd: REPO_ROOT,
|
|
13
31
|
env: {
|
|
14
32
|
...process.env,
|
|
@@ -26,7 +44,7 @@ function runCli(args, homeDir) {
|
|
|
26
44
|
function readConfig(configPath) {
|
|
27
45
|
return JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
28
46
|
}
|
|
29
|
-
describe('omc config-stop-callback tag options',
|
|
47
|
+
describe('omc config-stop-callback tag options', () => {
|
|
30
48
|
it('updates telegram tagList options and preserves existing config fields', () => {
|
|
31
49
|
const homeDir = mkdtempSync(join(tmpdir(), 'omc-cli-stop-callback-home-'));
|
|
32
50
|
const configPath = join(homeDir, '.copilot', '.omc-config.json');
|