agent-switchboard 0.2.2 → 0.3.0
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 +68 -42
- package/dist/agents/registry.d.ts +0 -6
- package/dist/agents/registry.js +3 -13
- package/dist/agents/registry.js.map +1 -1
- package/dist/agents/trae.d.ts +16 -0
- package/dist/agents/trae.js +36 -0
- package/dist/agents/trae.js.map +1 -0
- 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 +24 -3
- package/dist/config/paths.js +63 -5
- 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 +59 -113
- 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 -8
- package/dist/rules/agents.js.map +1 -1
- package/dist/rules/distribution.d.ts +1 -2
- package/dist/rules/distribution.js +20 -71
- package/dist/rules/distribution.js.map +1 -1
- package/dist/skills/distribution.d.ts +0 -22
- package/dist/skills/distribution.js +84 -157
- 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 +10 -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 +54 -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 +36 -0
- package/dist/targets/registry.js +97 -0
- package/dist/targets/registry.js.map +1 -0
- package/dist/targets/types.d.ts +91 -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,196 +1,128 @@
|
|
|
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 { 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
|
-
];
|
|
14
|
-
export const SKILL_TARGETS = ['claude-code', 'agents'];
|
|
15
9
|
const AGENTS_TARGET_PLATFORMS = ['codex', 'gemini', 'opencode'];
|
|
16
|
-
const CODEX_RESERVED_DIRS = new Set(['.system']);
|
|
17
|
-
function isCodexReservedDir(id, platform) {
|
|
18
|
-
return (platform === 'codex' || platform === 'agents') && CODEX_RESERVED_DIRS.has(id);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Check whether cursor skills should be deduped because claude-code already
|
|
22
|
-
* has non-empty active skills for the same scope. Cursor natively scans
|
|
23
|
-
* `.claude/skills/`, so distributing to `.cursor/skills/` as well would
|
|
24
|
-
* create duplicates. Returning `true` means the caller should return an
|
|
25
|
-
* empty selection for cursor (but keep cursor in the platforms array so
|
|
26
|
-
* cleanup of orphan `.cursor/skills/` directories still executes).
|
|
27
|
-
*/
|
|
28
10
|
function shouldDedupCursorSkills(scope) {
|
|
29
11
|
const claudeState = loadLibraryStateSectionForApplication('skills', 'claude-code', scope);
|
|
30
12
|
return claudeState.enabled.length > 0;
|
|
31
13
|
}
|
|
32
14
|
/**
|
|
33
15
|
* Resolve parent directory containing all skills for a target/platform.
|
|
34
|
-
*
|
|
35
|
-
*
|
|
36
|
-
* - `'claude-code'` -> `~/.claude/skills/`
|
|
37
|
-
* - `'codex'` -> `~/.codex/skills/`
|
|
38
|
-
* - `'gemini'` -> `~/.gemini/skills/`
|
|
39
|
-
* - `'opencode'` -> `~/.config/opencode/skill/`
|
|
40
|
-
* - `'cursor'` -> `~/.cursor/skills/`
|
|
41
|
-
* - `'agents'` -> `~/.agents/skills/`
|
|
16
|
+
* For registered targets, delegates to the target's skills handler.
|
|
17
|
+
* The 'agents' virtual target is handled specially.
|
|
42
18
|
*/
|
|
43
19
|
function resolveSkillsParentDir(target, scope) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
}
|
|
49
|
-
return path.join(getClaudeDir(), 'skills');
|
|
50
|
-
case 'codex':
|
|
51
|
-
if (scope?.project) {
|
|
52
|
-
return path.join(getProjectCodexSkillsDir(scope.project));
|
|
53
|
-
}
|
|
54
|
-
return path.join(getCodexDir(), 'skills');
|
|
55
|
-
case 'gemini':
|
|
56
|
-
if (scope?.project) {
|
|
57
|
-
return path.join(getProjectGeminiDir(scope.project), 'skills');
|
|
58
|
-
}
|
|
59
|
-
return path.join(getGeminiDir(), 'skills');
|
|
60
|
-
case 'opencode':
|
|
61
|
-
if (scope?.project) {
|
|
62
|
-
return path.join(getProjectOpencodeRoot(scope.project), 'skill');
|
|
63
|
-
}
|
|
64
|
-
return path.join(getOpencodeRoot(), 'skill');
|
|
65
|
-
case 'cursor':
|
|
66
|
-
if (scope?.project) {
|
|
67
|
-
return path.join(getProjectCursorDir(scope.project), 'skills');
|
|
68
|
-
}
|
|
69
|
-
return path.join(getCursorDir(), 'skills');
|
|
70
|
-
case 'agents':
|
|
71
|
-
if (scope?.project) {
|
|
72
|
-
return getProjectCodexSkillsDir(scope.project);
|
|
73
|
-
}
|
|
74
|
-
return getCodexSkillsDir();
|
|
75
|
-
default:
|
|
76
|
-
throw new Error(`Unknown skill target: ${target}`);
|
|
20
|
+
if (target === 'agents') {
|
|
21
|
+
if (scope?.project)
|
|
22
|
+
return getProjectCodexSkillsDir(scope.project);
|
|
23
|
+
return getCodexSkillsDir();
|
|
77
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}`);
|
|
78
29
|
}
|
|
79
|
-
/**
|
|
80
|
-
* Resolve target directory for a skill on a specific target.
|
|
81
|
-
*/
|
|
82
30
|
export function resolveSkillTargetDir(target, id, scope) {
|
|
83
31
|
return path.join(resolveSkillsParentDir(target, scope), id);
|
|
84
32
|
}
|
|
85
|
-
/**
|
|
86
|
-
* Distribute active skills to supported targets.
|
|
87
|
-
*
|
|
88
|
-
* When `useAgentsDir` is true (2-target mode):
|
|
89
|
-
* - `claude-code`: uses Claude Code's per-agent active skills
|
|
90
|
-
* - `agents`: uses the union of active skills across Codex, Gemini, and OpenCode
|
|
91
|
-
* - Legacy platform-specific paths (gemini, opencode) are cleaned up
|
|
92
|
-
*
|
|
93
|
-
* When `useAgentsDir` is false (default, 4-target mode):
|
|
94
|
-
* - Distributes to each platform individually: claude-code, codex, gemini, opencode
|
|
95
|
-
* - Only cleans up OpenCode's legacy plural `skills/` path
|
|
96
|
-
*/
|
|
97
33
|
export function distributeSkills(scope, options) {
|
|
98
|
-
const useAgentsDir = options?.useAgentsDir ?? false;
|
|
99
34
|
const entries = loadSkillLibrary();
|
|
100
|
-
|
|
101
|
-
|
|
35
|
+
const skillTargets = 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
|
+
});
|
|
102
62
|
}
|
|
103
|
-
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
|
+
});
|
|
104
77
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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) {
|
|
83
|
+
const traeActiveIds = scope?.project
|
|
84
|
+
? new Map(['trae', 'trae-cn'].map((v) => [
|
|
85
|
+
v,
|
|
86
|
+
new Set(loadLibraryStateSectionForApplication('skills', v, scope).enabled),
|
|
87
|
+
]))
|
|
88
|
+
: null;
|
|
109
89
|
const cleanup = {
|
|
110
90
|
resolveParentDir: (target) => resolveSkillsParentDir(target, scope),
|
|
111
|
-
isReservedDir:
|
|
91
|
+
isReservedDir: (id, platform) => {
|
|
92
|
+
if (isReservedDir(id, platform))
|
|
93
|
+
return true;
|
|
94
|
+
if (platform === 'agents' && id === '.system')
|
|
95
|
+
return true;
|
|
96
|
+
if (traeActiveIds && (platform === 'trae' || platform === 'trae-cn')) {
|
|
97
|
+
const other = platform === 'trae' ? 'trae-cn' : 'trae';
|
|
98
|
+
return traeActiveIds.get(other)?.has(id) ?? false;
|
|
99
|
+
}
|
|
100
|
+
return false;
|
|
101
|
+
},
|
|
112
102
|
};
|
|
113
103
|
const filterSelected = (target, allEntries) => {
|
|
114
104
|
if (target === 'cursor') {
|
|
115
105
|
if (shouldDedupCursorSkills(scope))
|
|
116
106
|
return [];
|
|
117
107
|
const state = loadLibraryStateSectionForApplication('skills', target, scope);
|
|
118
|
-
|
|
119
|
-
return allEntries.filter((e) => activeIds.has(e.id));
|
|
108
|
+
return allEntries.filter((e) => new Set(state.enabled).has(e.id));
|
|
120
109
|
}
|
|
121
110
|
if (target === 'agents') {
|
|
122
111
|
const unionIds = new Set();
|
|
123
112
|
for (const agentId of AGENTS_TARGET_PLATFORMS) {
|
|
124
|
-
const
|
|
125
|
-
for (const id of state.enabled) {
|
|
113
|
+
for (const id of loadLibraryStateSectionForApplication('skills', agentId, scope).enabled) {
|
|
126
114
|
unionIds.add(id);
|
|
127
115
|
}
|
|
128
116
|
}
|
|
129
117
|
return allEntries.filter((e) => unionIds.has(e.id));
|
|
130
118
|
}
|
|
131
119
|
const state = loadLibraryStateSectionForApplication('skills', target, scope);
|
|
132
|
-
|
|
133
|
-
return allEntries.filter((e) => activeIds.has(e.id));
|
|
134
|
-
};
|
|
135
|
-
const outcome = distributeBundle({
|
|
136
|
-
section: 'skills',
|
|
137
|
-
selected: entries,
|
|
138
|
-
platforms: [...SKILL_TARGETS, 'cursor'],
|
|
139
|
-
resolveTargetDir: (target, entry) => resolveSkillTargetDir(target, entry.id, scope),
|
|
140
|
-
listFiles: listSkillFiles,
|
|
141
|
-
getId: (entry) => entry.id,
|
|
142
|
-
cleanup,
|
|
143
|
-
scope,
|
|
144
|
-
filterSelected,
|
|
145
|
-
});
|
|
146
|
-
// Legacy cleanup: remove platform-specific paths that are no longer needed
|
|
147
|
-
// in agents mode (gemini, opencode wrote their own paths in older versions).
|
|
148
|
-
const legacyDirs = [
|
|
149
|
-
path.join(getGeminiDir(), 'skills'),
|
|
150
|
-
path.join(getOpencodeRoot(), 'skill'),
|
|
151
|
-
path.join(getOpencodeRoot(), 'skills'),
|
|
152
|
-
...(scope?.project
|
|
153
|
-
? [
|
|
154
|
-
path.join(getProjectGeminiDir(scope.project), 'skills'),
|
|
155
|
-
path.join(getProjectOpencodeRoot(scope.project), 'skill'),
|
|
156
|
-
path.join(getProjectOpencodeRoot(scope.project), 'skills'),
|
|
157
|
-
]
|
|
158
|
-
: []),
|
|
159
|
-
];
|
|
160
|
-
for (const legacyDir of legacyDirs) {
|
|
161
|
-
if (fs.existsSync(legacyDir) && fs.statSync(legacyDir).isDirectory()) {
|
|
162
|
-
fs.rmSync(legacyDir, { recursive: true });
|
|
163
|
-
outcome.results.push({
|
|
164
|
-
platform: 'agents',
|
|
165
|
-
targetDir: legacyDir,
|
|
166
|
-
status: 'deleted',
|
|
167
|
-
reason: 'legacy platform-specific path',
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
return summarize(outcome);
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* 5-target mode: claude-code, codex, gemini, opencode, cursor (legacy compatible)
|
|
175
|
-
*/
|
|
176
|
-
function distributeLegacyMode(entries, scope) {
|
|
177
|
-
const cleanup = {
|
|
178
|
-
resolveParentDir: (target) => resolveSkillsParentDir(target, scope),
|
|
179
|
-
isReservedDir: isCodexReservedDir,
|
|
180
|
-
};
|
|
181
|
-
const filterSelected = (target, allEntries) => {
|
|
182
|
-
if (target === 'cursor') {
|
|
183
|
-
if (shouldDedupCursorSkills(scope))
|
|
184
|
-
return [];
|
|
185
|
-
}
|
|
186
|
-
const state = loadLibraryStateSectionForApplication('skills', target, scope);
|
|
187
|
-
const activeIds = new Set(state.enabled);
|
|
188
|
-
return allEntries.filter((e) => activeIds.has(e.id));
|
|
120
|
+
return allEntries.filter((e) => new Set(state.enabled).has(e.id));
|
|
189
121
|
};
|
|
190
122
|
const outcome = distributeBundle({
|
|
191
123
|
section: 'skills',
|
|
192
124
|
selected: entries,
|
|
193
|
-
platforms:
|
|
125
|
+
platforms: options.platforms,
|
|
194
126
|
resolveTargetDir: (target, entry) => resolveSkillTargetDir(target, entry.id, scope),
|
|
195
127
|
listFiles: listSkillFiles,
|
|
196
128
|
getId: (entry) => entry.id,
|
|
@@ -198,19 +130,14 @@ function distributeLegacyMode(entries, scope) {
|
|
|
198
130
|
scope,
|
|
199
131
|
filterSelected,
|
|
200
132
|
});
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
path.join(getOpencodeRoot(), 'skills'),
|
|
204
|
-
...(scope?.project ? [path.join(getProjectOpencodeRoot(scope.project), 'skills')] : []),
|
|
205
|
-
];
|
|
206
|
-
for (const legacyDir of legacyDirs) {
|
|
207
|
-
if (fs.existsSync(legacyDir) && fs.statSync(legacyDir).isDirectory()) {
|
|
133
|
+
for (const { path: legacyDir, platform } of options.legacyDirs) {
|
|
134
|
+
if (isDir(legacyDir)) {
|
|
208
135
|
fs.rmSync(legacyDir, { recursive: true });
|
|
209
136
|
outcome.results.push({
|
|
210
|
-
platform
|
|
137
|
+
platform,
|
|
211
138
|
targetDir: legacyDir,
|
|
212
139
|
status: 'deleted',
|
|
213
|
-
reason: 'legacy plural path',
|
|
140
|
+
reason: platform === 'agents' ? 'legacy platform-specific path' : 'legacy plural path',
|
|
214
141
|
});
|
|
215
142
|
}
|
|
216
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>[];
|