agent-switchboard 0.2.3 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -28
- package/dist/agents/registry.d.ts +0 -6
- package/dist/agents/registry.js +0 -13
- package/dist/agents/registry.js.map +1 -1
- package/dist/commands/distribution.d.ts +3 -4
- package/dist/commands/distribution.js +18 -116
- package/dist/commands/distribution.js.map +1 -1
- package/dist/config/application-config.d.ts +1 -1
- package/dist/config/application-config.js +2 -10
- package/dist/config/application-config.js.map +1 -1
- package/dist/config/mcp-config.js +1 -3
- package/dist/config/mcp-config.js.map +1 -1
- package/dist/config/paths.d.ts +11 -7
- package/dist/config/paths.js +29 -9
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schemas.d.ts +331 -43
- package/dist/config/schemas.js +109 -15
- package/dist/config/schemas.js.map +1 -1
- package/dist/config/switchboard-config.js +0 -1
- package/dist/config/switchboard-config.js.map +1 -1
- package/dist/extensions/api.d.ts +49 -0
- package/dist/extensions/api.js +41 -0
- package/dist/extensions/api.js.map +1 -0
- package/dist/extensions/loader.d.ts +17 -0
- package/dist/extensions/loader.js +73 -0
- package/dist/extensions/loader.js.map +1 -0
- package/dist/hooks/distribution.js +1 -16
- package/dist/hooks/distribution.js.map +1 -1
- package/dist/index.js +77 -123
- package/dist/index.js.map +1 -1
- package/dist/library/distribute-bundle.js +1 -19
- package/dist/library/distribute-bundle.js.map +1 -1
- package/dist/library/fs.d.ts +12 -0
- package/dist/library/fs.js +81 -0
- package/dist/library/fs.js.map +1 -1
- package/dist/library/sources.d.ts +6 -1
- package/dist/library/sources.js +73 -16
- package/dist/library/sources.js.map +1 -1
- package/dist/rules/agents.d.ts +0 -4
- package/dist/rules/agents.js +0 -10
- package/dist/rules/agents.js.map +1 -1
- package/dist/rules/distribution.d.ts +1 -2
- package/dist/rules/distribution.js +20 -79
- package/dist/rules/distribution.js.map +1 -1
- package/dist/skills/distribution.d.ts +0 -22
- package/dist/skills/distribution.js +70 -185
- package/dist/skills/distribution.js.map +1 -1
- package/dist/skills/importer.js +2 -33
- package/dist/skills/importer.js.map +1 -1
- package/dist/subagents/codex-distribute.d.ts +13 -0
- package/dist/subagents/codex-distribute.js +273 -0
- package/dist/subagents/codex-distribute.js.map +1 -0
- package/dist/subagents/distribution.d.ts +3 -4
- package/dist/subagents/distribution.js +30 -410
- package/dist/subagents/distribution.js.map +1 -1
- package/dist/targets/builtin/claude-code.d.ts +2 -0
- package/dist/targets/builtin/claude-code.js +73 -0
- package/dist/targets/builtin/claude-code.js.map +1 -0
- package/dist/targets/builtin/claude-desktop.d.ts +2 -0
- package/dist/targets/builtin/claude-desktop.js +14 -0
- package/dist/targets/builtin/claude-desktop.js.map +1 -0
- package/dist/targets/builtin/codex.d.ts +3 -0
- package/dist/targets/builtin/codex.js +57 -0
- package/dist/targets/builtin/codex.js.map +1 -0
- package/dist/targets/builtin/common.d.ts +22 -0
- package/dist/targets/builtin/common.js +55 -0
- package/dist/targets/builtin/common.js.map +1 -0
- package/dist/targets/builtin/cursor.d.ts +2 -0
- package/dist/targets/builtin/cursor.js +95 -0
- package/dist/targets/builtin/cursor.js.map +1 -0
- package/dist/targets/builtin/gemini.d.ts +2 -0
- package/dist/targets/builtin/gemini.js +62 -0
- package/dist/targets/builtin/gemini.js.map +1 -0
- package/dist/targets/builtin/index.d.ts +10 -0
- package/dist/targets/builtin/index.js +19 -0
- package/dist/targets/builtin/index.js.map +1 -0
- package/dist/targets/builtin/opencode.d.ts +2 -0
- package/dist/targets/builtin/opencode.js +67 -0
- package/dist/targets/builtin/opencode.js.map +1 -0
- package/dist/targets/builtin/trae.d.ts +3 -0
- package/dist/targets/builtin/trae.js +56 -0
- package/dist/targets/builtin/trae.js.map +1 -0
- package/dist/targets/dsl/compiler.d.ts +13 -0
- package/dist/targets/dsl/compiler.js +215 -0
- package/dist/targets/dsl/compiler.js.map +1 -0
- package/dist/targets/dsl/index.d.ts +2 -0
- package/dist/targets/dsl/index.js +3 -0
- package/dist/targets/dsl/index.js.map +1 -0
- package/dist/targets/dsl/transforms.d.ts +77 -0
- package/dist/targets/dsl/transforms.js +159 -0
- package/dist/targets/dsl/transforms.js.map +1 -0
- package/dist/targets/init.d.ts +14 -0
- package/dist/targets/init.js +28 -0
- package/dist/targets/init.js.map +1 -0
- package/dist/targets/registry.d.ts +38 -0
- package/dist/targets/registry.js +101 -0
- package/dist/targets/registry.js.map +1 -0
- package/dist/targets/types.d.ts +93 -0
- package/dist/targets/types.js +28 -0
- package/dist/targets/types.js.map +1 -0
- package/dist/ui/plugin-ui.d.ts +1 -1
- package/dist/ui/plugin-ui.js +5 -12
- package/dist/ui/plugin-ui.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,124 +1,85 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { getCodexSkillsDir, getGeminiDir, getOpencodeRoot, getProjectCodexSkillsDir, getProjectGeminiDir, getProjectOpencodeRoot, } from '../config/paths.js';
|
|
4
4
|
import { distributeBundle, } from '../library/distribute-bundle.js';
|
|
5
|
+
import { isDir } from '../library/fs.js';
|
|
5
6
|
import { loadLibraryStateSectionForApplication } from '../library/state.js';
|
|
7
|
+
import { filterInstalled, getTargetsForSection } from '../targets/registry.js';
|
|
6
8
|
import { listSkillFiles, loadSkillLibrary } from './library.js';
|
|
7
|
-
export const SKILL_PLATFORMS = [
|
|
8
|
-
'claude-code',
|
|
9
|
-
'codex',
|
|
10
|
-
'gemini',
|
|
11
|
-
'opencode',
|
|
12
|
-
'cursor',
|
|
13
|
-
'trae',
|
|
14
|
-
'trae-cn',
|
|
15
|
-
];
|
|
16
|
-
export const SKILL_TARGETS = ['claude-code', 'agents'];
|
|
17
9
|
const AGENTS_TARGET_PLATFORMS = ['codex', 'gemini', 'opencode'];
|
|
18
|
-
const CODEX_RESERVED_DIRS = new Set(['.system']);
|
|
19
|
-
function isCodexReservedDir(id, platform) {
|
|
20
|
-
return (platform === 'codex' || platform === 'agents') && CODEX_RESERVED_DIRS.has(id);
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Check whether cursor skills should be deduped because claude-code already
|
|
24
|
-
* has non-empty active skills for the same scope. Cursor natively scans
|
|
25
|
-
* `.claude/skills/`, so distributing to `.cursor/skills/` as well would
|
|
26
|
-
* create duplicates. Returning `true` means the caller should return an
|
|
27
|
-
* empty selection for cursor (but keep cursor in the platforms array so
|
|
28
|
-
* cleanup of orphan `.cursor/skills/` directories still executes).
|
|
29
|
-
*/
|
|
30
10
|
function shouldDedupCursorSkills(scope) {
|
|
31
11
|
const claudeState = loadLibraryStateSectionForApplication('skills', 'claude-code', scope);
|
|
32
12
|
return claudeState.enabled.length > 0;
|
|
33
13
|
}
|
|
34
14
|
/**
|
|
35
15
|
* Resolve parent directory containing all skills for a target/platform.
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* - `'claude-code'` -> `~/.claude/skills/`
|
|
39
|
-
* - `'codex'` -> `~/.codex/skills/`
|
|
40
|
-
* - `'gemini'` -> `~/.gemini/skills/`
|
|
41
|
-
* - `'opencode'` -> `~/.config/opencode/skill/`
|
|
42
|
-
* - `'cursor'` -> `~/.cursor/skills/`
|
|
43
|
-
* - `'trae'` -> `~/.trae/skills/`
|
|
44
|
-
* - `'trae-cn'` -> `~/.trae-cn/skills/`
|
|
45
|
-
* - `'agents'` -> `~/.agents/skills/`
|
|
16
|
+
* For registered targets, delegates to the target's skills handler.
|
|
17
|
+
* The 'agents' virtual target is handled specially.
|
|
46
18
|
*/
|
|
47
19
|
function resolveSkillsParentDir(target, scope) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
return path.join(getClaudeDir(), 'skills');
|
|
54
|
-
case 'codex':
|
|
55
|
-
if (scope?.project) {
|
|
56
|
-
return path.join(getProjectCodexSkillsDir(scope.project));
|
|
57
|
-
}
|
|
58
|
-
return path.join(getCodexDir(), 'skills');
|
|
59
|
-
case 'gemini':
|
|
60
|
-
if (scope?.project) {
|
|
61
|
-
return path.join(getProjectGeminiDir(scope.project), 'skills');
|
|
62
|
-
}
|
|
63
|
-
return path.join(getGeminiDir(), 'skills');
|
|
64
|
-
case 'opencode':
|
|
65
|
-
if (scope?.project) {
|
|
66
|
-
return path.join(getProjectOpencodeRoot(scope.project), 'skill');
|
|
67
|
-
}
|
|
68
|
-
return path.join(getOpencodeRoot(), 'skill');
|
|
69
|
-
case 'cursor':
|
|
70
|
-
if (scope?.project) {
|
|
71
|
-
return path.join(getProjectCursorDir(scope.project), 'skills');
|
|
72
|
-
}
|
|
73
|
-
return path.join(getCursorDir(), 'skills');
|
|
74
|
-
case 'trae':
|
|
75
|
-
case 'trae-cn':
|
|
76
|
-
if (scope?.project) {
|
|
77
|
-
return path.join(getProjectTraeDir(scope.project), 'skills');
|
|
78
|
-
}
|
|
79
|
-
return path.join(getTraeDataDir(target), 'skills');
|
|
80
|
-
case 'agents':
|
|
81
|
-
if (scope?.project) {
|
|
82
|
-
return getProjectCodexSkillsDir(scope.project);
|
|
83
|
-
}
|
|
84
|
-
return getCodexSkillsDir();
|
|
85
|
-
default:
|
|
86
|
-
throw new Error(`Unknown skill target: ${target}`);
|
|
20
|
+
if (target === 'agents') {
|
|
21
|
+
if (scope?.project)
|
|
22
|
+
return getProjectCodexSkillsDir(scope.project);
|
|
23
|
+
return getCodexSkillsDir();
|
|
87
24
|
}
|
|
25
|
+
const t = getTargetsForSection('skills').find((x) => x.id === target);
|
|
26
|
+
if (t?.skills)
|
|
27
|
+
return t.skills.resolveParentDir(scope);
|
|
28
|
+
throw new Error(`Unknown skill target: ${target}`);
|
|
88
29
|
}
|
|
89
|
-
/**
|
|
90
|
-
* Resolve target directory for a skill on a specific target.
|
|
91
|
-
*/
|
|
92
30
|
export function resolveSkillTargetDir(target, id, scope) {
|
|
93
31
|
return path.join(resolveSkillsParentDir(target, scope), id);
|
|
94
32
|
}
|
|
95
|
-
/**
|
|
96
|
-
* Distribute active skills to supported targets.
|
|
97
|
-
*
|
|
98
|
-
* When `useAgentsDir` is true (2-target mode):
|
|
99
|
-
* - `claude-code`: uses Claude Code's per-agent active skills
|
|
100
|
-
* - `agents`: uses the union of active skills across Codex, Gemini, and OpenCode
|
|
101
|
-
* - Legacy platform-specific paths (gemini, opencode) are cleaned up
|
|
102
|
-
*
|
|
103
|
-
* When `useAgentsDir` is false (default, 4-target mode):
|
|
104
|
-
* - Distributes to each platform individually: claude-code, codex, gemini, opencode
|
|
105
|
-
* - Only cleans up OpenCode's legacy plural `skills/` path
|
|
106
|
-
*/
|
|
107
33
|
export function distributeSkills(scope, options) {
|
|
108
|
-
const useAgentsDir = options?.useAgentsDir ?? false;
|
|
109
34
|
const entries = loadSkillLibrary();
|
|
110
|
-
|
|
111
|
-
|
|
35
|
+
const skillTargets = filterInstalled(getTargetsForSection('skills'));
|
|
36
|
+
if (options?.useAgentsDir ?? false) {
|
|
37
|
+
const traePlatforms = skillTargets
|
|
38
|
+
.filter((t) => t.id === 'trae' || t.id === 'trae-cn')
|
|
39
|
+
.map((t) => t.id);
|
|
40
|
+
const cursorPlatform = skillTargets.find((t) => t.id === 'cursor') ? ['cursor'] : [];
|
|
41
|
+
return distributeSkillsInternal(entries, scope, {
|
|
42
|
+
platforms: ['claude-code', 'agents', ...cursorPlatform, ...traePlatforms],
|
|
43
|
+
legacyDirs: [
|
|
44
|
+
{ path: path.join(getGeminiDir(), 'skills'), platform: 'agents' },
|
|
45
|
+
{ path: path.join(getOpencodeRoot(), 'skill'), platform: 'agents' },
|
|
46
|
+
{ path: path.join(getOpencodeRoot(), 'skills'), platform: 'agents' },
|
|
47
|
+
...(scope?.project
|
|
48
|
+
? [
|
|
49
|
+
{ path: path.join(getProjectGeminiDir(scope.project), 'skills'), platform: 'agents' },
|
|
50
|
+
{
|
|
51
|
+
path: path.join(getProjectOpencodeRoot(scope.project), 'skill'),
|
|
52
|
+
platform: 'agents',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
path: path.join(getProjectOpencodeRoot(scope.project), 'skills'),
|
|
56
|
+
platform: 'agents',
|
|
57
|
+
},
|
|
58
|
+
]
|
|
59
|
+
: []),
|
|
60
|
+
],
|
|
61
|
+
});
|
|
112
62
|
}
|
|
113
|
-
return
|
|
63
|
+
return distributeSkillsInternal(entries, scope, {
|
|
64
|
+
platforms: skillTargets.map((t) => t.id),
|
|
65
|
+
legacyDirs: [
|
|
66
|
+
{ path: path.join(getOpencodeRoot(), 'skills'), platform: 'opencode' },
|
|
67
|
+
...(scope?.project
|
|
68
|
+
? [
|
|
69
|
+
{
|
|
70
|
+
path: path.join(getProjectOpencodeRoot(scope.project), 'skills'),
|
|
71
|
+
platform: 'opencode',
|
|
72
|
+
},
|
|
73
|
+
]
|
|
74
|
+
: []),
|
|
75
|
+
],
|
|
76
|
+
});
|
|
114
77
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
// Pre-compute each variant's active IDs so orphan cleanup can protect
|
|
121
|
-
// the other variant's skills from deletion.
|
|
78
|
+
function isReservedDir(id, platform) {
|
|
79
|
+
const t = getTargetsForSection('skills').find((x) => x.id === platform);
|
|
80
|
+
return t?.skills?.isReservedDir?.(id) ?? false;
|
|
81
|
+
}
|
|
82
|
+
function distributeSkillsInternal(entries, scope, options) {
|
|
122
83
|
const traeActiveIds = scope?.project
|
|
123
84
|
? new Map(['trae', 'trae-cn'].map((v) => [
|
|
124
85
|
v,
|
|
@@ -128,7 +89,9 @@ function distributeAgentsMode(entries, scope) {
|
|
|
128
89
|
const cleanup = {
|
|
129
90
|
resolveParentDir: (target) => resolveSkillsParentDir(target, scope),
|
|
130
91
|
isReservedDir: (id, platform) => {
|
|
131
|
-
if (
|
|
92
|
+
if (isReservedDir(id, platform))
|
|
93
|
+
return true;
|
|
94
|
+
if (platform === 'agents' && id === '.system')
|
|
132
95
|
return true;
|
|
133
96
|
if (traeActiveIds && (platform === 'trae' || platform === 'trae-cn')) {
|
|
134
97
|
const other = platform === 'trae' ? 'trae-cn' : 'trae';
|
|
@@ -142,97 +105,24 @@ function distributeAgentsMode(entries, scope) {
|
|
|
142
105
|
if (shouldDedupCursorSkills(scope))
|
|
143
106
|
return [];
|
|
144
107
|
const state = loadLibraryStateSectionForApplication('skills', target, scope);
|
|
145
|
-
|
|
146
|
-
return allEntries.filter((e) => activeIds.has(e.id));
|
|
108
|
+
return allEntries.filter((e) => new Set(state.enabled).has(e.id));
|
|
147
109
|
}
|
|
148
110
|
if (target === 'agents') {
|
|
149
111
|
const unionIds = new Set();
|
|
150
112
|
for (const agentId of AGENTS_TARGET_PLATFORMS) {
|
|
151
|
-
const
|
|
152
|
-
for (const id of state.enabled) {
|
|
113
|
+
for (const id of loadLibraryStateSectionForApplication('skills', agentId, scope).enabled) {
|
|
153
114
|
unionIds.add(id);
|
|
154
115
|
}
|
|
155
116
|
}
|
|
156
117
|
return allEntries.filter((e) => unionIds.has(e.id));
|
|
157
118
|
}
|
|
158
119
|
const state = loadLibraryStateSectionForApplication('skills', target, scope);
|
|
159
|
-
|
|
160
|
-
return allEntries.filter((e) => activeIds.has(e.id));
|
|
161
|
-
};
|
|
162
|
-
const outcome = distributeBundle({
|
|
163
|
-
section: 'skills',
|
|
164
|
-
selected: entries,
|
|
165
|
-
platforms: [...SKILL_TARGETS, 'cursor', 'trae', 'trae-cn'],
|
|
166
|
-
resolveTargetDir: (target, entry) => resolveSkillTargetDir(target, entry.id, scope),
|
|
167
|
-
listFiles: listSkillFiles,
|
|
168
|
-
getId: (entry) => entry.id,
|
|
169
|
-
cleanup,
|
|
170
|
-
scope,
|
|
171
|
-
filterSelected,
|
|
172
|
-
});
|
|
173
|
-
// Legacy cleanup: remove platform-specific paths that are no longer needed
|
|
174
|
-
// in agents mode (gemini, opencode wrote their own paths in older versions).
|
|
175
|
-
const legacyDirs = [
|
|
176
|
-
path.join(getGeminiDir(), 'skills'),
|
|
177
|
-
path.join(getOpencodeRoot(), 'skill'),
|
|
178
|
-
path.join(getOpencodeRoot(), 'skills'),
|
|
179
|
-
...(scope?.project
|
|
180
|
-
? [
|
|
181
|
-
path.join(getProjectGeminiDir(scope.project), 'skills'),
|
|
182
|
-
path.join(getProjectOpencodeRoot(scope.project), 'skill'),
|
|
183
|
-
path.join(getProjectOpencodeRoot(scope.project), 'skills'),
|
|
184
|
-
]
|
|
185
|
-
: []),
|
|
186
|
-
];
|
|
187
|
-
for (const legacyDir of legacyDirs) {
|
|
188
|
-
if (fs.existsSync(legacyDir) && fs.statSync(legacyDir).isDirectory()) {
|
|
189
|
-
fs.rmSync(legacyDir, { recursive: true });
|
|
190
|
-
outcome.results.push({
|
|
191
|
-
platform: 'agents',
|
|
192
|
-
targetDir: legacyDir,
|
|
193
|
-
status: 'deleted',
|
|
194
|
-
reason: 'legacy platform-specific path',
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
return summarize(outcome);
|
|
199
|
-
}
|
|
200
|
-
/**
|
|
201
|
-
* Per-platform mode: claude-code, codex, gemini, opencode, cursor, trae, trae-cn
|
|
202
|
-
*/
|
|
203
|
-
function distributeLegacyMode(entries, scope) {
|
|
204
|
-
// Same shared-dir protection as distributeAgentsMode (see comment there).
|
|
205
|
-
const traeActiveIds = scope?.project
|
|
206
|
-
? new Map(['trae', 'trae-cn'].map((v) => [
|
|
207
|
-
v,
|
|
208
|
-
new Set(loadLibraryStateSectionForApplication('skills', v, scope).enabled),
|
|
209
|
-
]))
|
|
210
|
-
: null;
|
|
211
|
-
const cleanup = {
|
|
212
|
-
resolveParentDir: (target) => resolveSkillsParentDir(target, scope),
|
|
213
|
-
isReservedDir: (id, platform) => {
|
|
214
|
-
if (isCodexReservedDir(id, platform))
|
|
215
|
-
return true;
|
|
216
|
-
if (traeActiveIds && (platform === 'trae' || platform === 'trae-cn')) {
|
|
217
|
-
const other = platform === 'trae' ? 'trae-cn' : 'trae';
|
|
218
|
-
return traeActiveIds.get(other)?.has(id) ?? false;
|
|
219
|
-
}
|
|
220
|
-
return false;
|
|
221
|
-
},
|
|
222
|
-
};
|
|
223
|
-
const filterSelected = (target, allEntries) => {
|
|
224
|
-
if (target === 'cursor') {
|
|
225
|
-
if (shouldDedupCursorSkills(scope))
|
|
226
|
-
return [];
|
|
227
|
-
}
|
|
228
|
-
const state = loadLibraryStateSectionForApplication('skills', target, scope);
|
|
229
|
-
const activeIds = new Set(state.enabled);
|
|
230
|
-
return allEntries.filter((e) => activeIds.has(e.id));
|
|
120
|
+
return allEntries.filter((e) => new Set(state.enabled).has(e.id));
|
|
231
121
|
};
|
|
232
122
|
const outcome = distributeBundle({
|
|
233
123
|
section: 'skills',
|
|
234
124
|
selected: entries,
|
|
235
|
-
platforms:
|
|
125
|
+
platforms: options.platforms,
|
|
236
126
|
resolveTargetDir: (target, entry) => resolveSkillTargetDir(target, entry.id, scope),
|
|
237
127
|
listFiles: listSkillFiles,
|
|
238
128
|
getId: (entry) => entry.id,
|
|
@@ -240,19 +130,14 @@ function distributeLegacyMode(entries, scope) {
|
|
|
240
130
|
scope,
|
|
241
131
|
filterSelected,
|
|
242
132
|
});
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
path.join(getOpencodeRoot(), 'skills'),
|
|
246
|
-
...(scope?.project ? [path.join(getProjectOpencodeRoot(scope.project), 'skills')] : []),
|
|
247
|
-
];
|
|
248
|
-
for (const legacyDir of legacyDirs) {
|
|
249
|
-
if (fs.existsSync(legacyDir) && fs.statSync(legacyDir).isDirectory()) {
|
|
133
|
+
for (const { path: legacyDir, platform } of options.legacyDirs) {
|
|
134
|
+
if (isDir(legacyDir)) {
|
|
250
135
|
fs.rmSync(legacyDir, { recursive: true });
|
|
251
136
|
outcome.results.push({
|
|
252
|
-
platform
|
|
137
|
+
platform,
|
|
253
138
|
targetDir: legacyDir,
|
|
254
139
|
status: 'deleted',
|
|
255
|
-
reason: 'legacy plural path',
|
|
140
|
+
reason: platform === 'agents' ? 'legacy platform-specific path' : 'legacy plural path',
|
|
256
141
|
});
|
|
257
142
|
}
|
|
258
143
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/skills/distribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"distribution.js","sourceRoot":"","sources":["../../src/skills/distribution.ts"],"names":[],"mappings":"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"}
|
package/dist/skills/importer.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { getSkillsDir } from '../config/paths.js';
|
|
4
|
+
import { copyDirRecursive } from '../library/fs.js';
|
|
4
5
|
import { parseSkillMarkdown } from './parser.js';
|
|
5
6
|
const SKILL_FILE = 'SKILL.md';
|
|
6
7
|
/**
|
|
@@ -45,38 +46,6 @@ function countFilesRecursive(dir) {
|
|
|
45
46
|
}
|
|
46
47
|
return count;
|
|
47
48
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Copy a directory recursively.
|
|
50
|
-
*/
|
|
51
|
-
function copyDirRecursive(src, dest) {
|
|
52
|
-
if (!fs.existsSync(dest)) {
|
|
53
|
-
fs.mkdirSync(dest, { recursive: true });
|
|
54
|
-
}
|
|
55
|
-
const entries = fs.readdirSync(src, { withFileTypes: true });
|
|
56
|
-
for (const entry of entries) {
|
|
57
|
-
// Skip hidden files/directories (like .git)
|
|
58
|
-
if (entry.name.startsWith('.'))
|
|
59
|
-
continue;
|
|
60
|
-
const srcPath = path.join(src, entry.name);
|
|
61
|
-
const destPath = path.join(dest, entry.name);
|
|
62
|
-
if (entry.isDirectory()) {
|
|
63
|
-
copyDirRecursive(srcPath, destPath);
|
|
64
|
-
}
|
|
65
|
-
else if (entry.isFile()) {
|
|
66
|
-
fs.copyFileSync(srcPath, destPath);
|
|
67
|
-
// Preserve executable permission
|
|
68
|
-
try {
|
|
69
|
-
const srcMode = fs.statSync(srcPath).mode;
|
|
70
|
-
if (srcMode & 0o111) {
|
|
71
|
-
fs.chmodSync(destPath, srcMode & 0o777);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
catch {
|
|
75
|
-
// Ignore permission errors
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
49
|
/**
|
|
81
50
|
* Prepare skill import info without actually copying.
|
|
82
51
|
*/
|
|
@@ -118,7 +87,7 @@ export function importSkill(platform, sourceDir, skillId, options) {
|
|
|
118
87
|
fs.rmSync(skill.targetPath, { recursive: true });
|
|
119
88
|
}
|
|
120
89
|
// Copy skill directory
|
|
121
|
-
copyDirRecursive(skill.sourcePath, skill.targetPath);
|
|
90
|
+
copyDirRecursive(skill.sourcePath, skill.targetPath, { skipHidden: true });
|
|
122
91
|
return {
|
|
123
92
|
skill,
|
|
124
93
|
status: 'success',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"importer.js","sourceRoot":"","sources":["../../src/skills/importer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIjD,MAAM,UAAU,GAAG,UAAU,CAAC;AAsB9B;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,0BAA0B;QAC1B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,KAAK,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"importer.js","sourceRoot":"","sources":["../../src/skills/importer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex subagent distribution logic (standalone, no target-registry imports).
|
|
3
|
+
*
|
|
4
|
+
* Extracted from distribution.ts to break circular dependencies:
|
|
5
|
+
* targets/builtin/codex.ts can import this; distribution.ts can import targets/registry.
|
|
6
|
+
*/
|
|
7
|
+
import type { ConfigScope } from '../config/scope.js';
|
|
8
|
+
import type { DistributionResult } from '../library/distribute.js';
|
|
9
|
+
import type { GenericLibraryEntry } from '../targets/types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Distribute subagents to Codex as TOML role config files + config.toml injection.
|
|
12
|
+
*/
|
|
13
|
+
export declare function distributeCodexSubagents(_allEntries: GenericLibraryEntry[], byId: Map<string, GenericLibraryEntry>, scope?: ConfigScope): DistributionResult<string>[];
|