@solaqua/skul 0.1.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/LICENSE +15 -0
- package/README.md +282 -0
- package/bin/skul.js +13 -0
- package/dist/bundle-discovery.d.ts +30 -0
- package/dist/bundle-discovery.js +284 -0
- package/dist/bundle-discovery.js.map +1 -0
- package/dist/bundle-fetch.d.ts +67 -0
- package/dist/bundle-fetch.js +378 -0
- package/dist/bundle-fetch.js.map +1 -0
- package/dist/bundle-items.d.ts +34 -0
- package/dist/bundle-items.js +149 -0
- package/dist/bundle-items.js.map +1 -0
- package/dist/bundle-manifest.d.ts +26 -0
- package/dist/bundle-manifest.js +196 -0
- package/dist/bundle-manifest.js.map +1 -0
- package/dist/bundle-materialization.d.ts +52 -0
- package/dist/bundle-materialization.js +587 -0
- package/dist/bundle-materialization.js.map +1 -0
- package/dist/bundle-translation.d.ts +38 -0
- package/dist/bundle-translation.js +502 -0
- package/dist/bundle-translation.js.map +1 -0
- package/dist/cli.d.ts +126 -0
- package/dist/cli.js +648 -0
- package/dist/cli.js.map +1 -0
- package/dist/fs-utils.d.ts +7 -0
- package/dist/fs-utils.js +27 -0
- package/dist/fs-utils.js.map +1 -0
- package/dist/git-context.d.ts +14 -0
- package/dist/git-context.js +53 -0
- package/dist/git-context.js.map +1 -0
- package/dist/git-exclude.d.ts +13 -0
- package/dist/git-exclude.js +76 -0
- package/dist/git-exclude.js.map +1 -0
- package/dist/git-index.d.ts +106 -0
- package/dist/git-index.js +224 -0
- package/dist/git-index.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +4190 -0
- package/dist/index.js.map +1 -0
- package/dist/registry.d.ts +91 -0
- package/dist/registry.js +551 -0
- package/dist/registry.js.map +1 -0
- package/dist/root-instruction-content.d.ts +11 -0
- package/dist/root-instruction-content.js +61 -0
- package/dist/root-instruction-content.js.map +1 -0
- package/dist/root-instruction-render.d.ts +31 -0
- package/dist/root-instruction-render.js +121 -0
- package/dist/root-instruction-render.js.map +1 -0
- package/dist/root-instruction-state.d.ts +41 -0
- package/dist/root-instruction-state.js +273 -0
- package/dist/root-instruction-state.js.map +1 -0
- package/dist/state-layout.d.ts +11 -0
- package/dist/state-layout.js +26 -0
- package/dist/state-layout.js.map +1 -0
- package/dist/tool-mapping.d.ts +35 -0
- package/dist/tool-mapping.js +227 -0
- package/dist/tool-mapping.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,502 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.translateSkill = translateSkill;
|
|
4
|
+
exports.translateCommand = translateCommand;
|
|
5
|
+
exports.translateAgent = translateAgent;
|
|
6
|
+
exports.translateRootInstruction = translateRootInstruction;
|
|
7
|
+
exports.toTranslationToolName = toTranslationToolName;
|
|
8
|
+
const fs_utils_1 = require("./fs-utils");
|
|
9
|
+
const tool_mapping_1 = require("./tool-mapping");
|
|
10
|
+
/** Translates a canonical skill bundle into one target tool's skill file layout. */
|
|
11
|
+
function translateSkill(options) {
|
|
12
|
+
const model = parseSkill(options.sourceTool, options.files);
|
|
13
|
+
const effectiveModel = options.options?.disableModelInvocation && !model.manualOnly
|
|
14
|
+
? { ...model, manualOnly: true }
|
|
15
|
+
: model;
|
|
16
|
+
return renderSkill(options.targetTool, effectiveModel, options.options, options.files);
|
|
17
|
+
}
|
|
18
|
+
/** Translates a canonical command document into one target tool's command layout. */
|
|
19
|
+
function translateCommand(options) {
|
|
20
|
+
const model = parseCommand(options.sourceTool, options.source);
|
|
21
|
+
return renderCommand(options.targetTool, model, options.options);
|
|
22
|
+
}
|
|
23
|
+
/** Translates a canonical agent document into one target tool's agent layout. */
|
|
24
|
+
function translateAgent(options) {
|
|
25
|
+
const model = parseAgent(options.sourceTool, options.source);
|
|
26
|
+
return renderAgent(options.targetTool, model);
|
|
27
|
+
}
|
|
28
|
+
/** Translates one root-instruction source into target-tool root files such as `AGENTS.md`. */
|
|
29
|
+
function translateRootInstruction(options) {
|
|
30
|
+
return {
|
|
31
|
+
[rootInstructionFilePath(options.targetTool)]: options.source,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function parseSkill(sourceTool, files) {
|
|
35
|
+
const skillSource = findFileBySuffix(files, "SKILL.md");
|
|
36
|
+
if (!skillSource) {
|
|
37
|
+
throw new Error("SKILL.md is required");
|
|
38
|
+
}
|
|
39
|
+
const document = parseMarkdownDocument(skillSource);
|
|
40
|
+
const name = coerceRequiredString(document.metadata.name, "name");
|
|
41
|
+
const description = coerceRequiredString(document.metadata.description, "description");
|
|
42
|
+
if (sourceTool === "codex") {
|
|
43
|
+
return {
|
|
44
|
+
name,
|
|
45
|
+
description,
|
|
46
|
+
body: document.body,
|
|
47
|
+
manualOnly: parseCodexSkillPolicy(findFileBySuffix(files, "agents/openai.yaml")) ===
|
|
48
|
+
false,
|
|
49
|
+
openCodeCompatibility: false,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
if (sourceTool === "opencode") {
|
|
53
|
+
return {
|
|
54
|
+
name,
|
|
55
|
+
description,
|
|
56
|
+
body: document.body,
|
|
57
|
+
manualOnly: false,
|
|
58
|
+
openCodeCompatibility: document.metadata.compatibility === "opencode",
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// claude, cursor, copilot, kiro, antigravity — all use the same SKILL.md format
|
|
62
|
+
return {
|
|
63
|
+
name,
|
|
64
|
+
description,
|
|
65
|
+
body: document.body,
|
|
66
|
+
manualOnly: document.metadata["disable-model-invocation"] === true,
|
|
67
|
+
openCodeCompatibility: false,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
// Tool-specific sidecar files that must not be passed through verbatim to other
|
|
71
|
+
// tools. SKILL.md is handled separately (it is translated, not copied). The
|
|
72
|
+
// agents/openai.yaml file is a Codex-specific policy file that renderSkill
|
|
73
|
+
// re-synthesises from model.manualOnly; copying it to non-Codex targets would
|
|
74
|
+
// be wrong. Add entries here when a new tool introduces its own sidecar format.
|
|
75
|
+
const SKILL_TOOL_SIDECARS = ["SKILL.md", "agents/openai.yaml"];
|
|
76
|
+
function isSkillSidecar(filePath, sidecar) {
|
|
77
|
+
return filePath === sidecar || filePath.endsWith(`/${sidecar}`);
|
|
78
|
+
}
|
|
79
|
+
function renderSkill(targetTool, model, options = {}, files = {}) {
|
|
80
|
+
const name = options.name ?? model.name;
|
|
81
|
+
const description = options.description ?? model.description;
|
|
82
|
+
if (targetTool === "codex") {
|
|
83
|
+
const skillBasePath = skillDirectoryPath("codex", name);
|
|
84
|
+
const result = {
|
|
85
|
+
[`${skillBasePath}/SKILL.md`]: renderMarkdownDocument({
|
|
86
|
+
metadata: { name, description },
|
|
87
|
+
body: model.body,
|
|
88
|
+
}),
|
|
89
|
+
};
|
|
90
|
+
if (model.manualOnly) {
|
|
91
|
+
result[`${skillBasePath}/agents/openai.yaml`] =
|
|
92
|
+
renderCodexSkillPolicy(false);
|
|
93
|
+
}
|
|
94
|
+
return { ...result, ...passthroughSkillFiles(files, skillBasePath) };
|
|
95
|
+
}
|
|
96
|
+
if (targetTool === "opencode") {
|
|
97
|
+
if (model.manualOnly) {
|
|
98
|
+
return {
|
|
99
|
+
[commandFilePath("opencode", name)]: renderMarkdownDocument({
|
|
100
|
+
metadata: { description },
|
|
101
|
+
body: model.body,
|
|
102
|
+
}),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const skillBasePath = skillDirectoryPath("opencode", name);
|
|
106
|
+
return {
|
|
107
|
+
[skillFilePath("opencode", name)]: renderMarkdownDocument({
|
|
108
|
+
metadata: { name, description, compatibility: "opencode" },
|
|
109
|
+
body: model.body,
|
|
110
|
+
}),
|
|
111
|
+
...passthroughSkillFiles(files, skillBasePath),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
// claude, cursor, copilot, kiro, antigravity — all use the same SKILL.md format
|
|
115
|
+
const metadata = { name, description };
|
|
116
|
+
if (model.manualOnly) {
|
|
117
|
+
metadata["disable-model-invocation"] = true;
|
|
118
|
+
}
|
|
119
|
+
const skillBasePath = skillDirectoryPath(targetTool, name);
|
|
120
|
+
return {
|
|
121
|
+
[skillFilePath(targetTool, name)]: renderMarkdownDocument({
|
|
122
|
+
metadata,
|
|
123
|
+
body: model.body,
|
|
124
|
+
}),
|
|
125
|
+
...passthroughSkillFiles(files, skillBasePath),
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function passthroughSkillFiles(files, targetSkillBasePath) {
|
|
129
|
+
const entries = Object.entries(files);
|
|
130
|
+
// Derive the installed-path prefix from the SKILL.md entry in one pass.
|
|
131
|
+
const prefix = "SKILL.md" in files
|
|
132
|
+
? ""
|
|
133
|
+
: (entries
|
|
134
|
+
.find(([k]) => k.endsWith("/SKILL.md"))?.[0]
|
|
135
|
+
.slice(0, -"SKILL.md".length) ?? "");
|
|
136
|
+
const result = {};
|
|
137
|
+
for (const [filePath, content] of entries) {
|
|
138
|
+
if (SKILL_TOOL_SIDECARS.some((s) => isSkillSidecar(filePath, s)))
|
|
139
|
+
continue;
|
|
140
|
+
const relPath = prefix ? filePath.slice(prefix.length) : filePath;
|
|
141
|
+
result[`${targetSkillBasePath}/${relPath}`] = content;
|
|
142
|
+
}
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
function parseCommand(sourceTool, source) {
|
|
146
|
+
if (sourceTool === "cursor") {
|
|
147
|
+
return {
|
|
148
|
+
body: source,
|
|
149
|
+
manualOnly: true,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const document = parseMarkdownDocument(source);
|
|
153
|
+
return {
|
|
154
|
+
body: document.body,
|
|
155
|
+
description: coerceOptionalString(document.metadata.description),
|
|
156
|
+
agent: coerceOptionalString(document.metadata.agent),
|
|
157
|
+
model: coerceOptionalString(document.metadata.model),
|
|
158
|
+
manualOnly: true,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function renderCommand(targetTool, model, options = {}) {
|
|
162
|
+
const commandName = requireOption(options.name, "name");
|
|
163
|
+
if (targetTool === "cursor") {
|
|
164
|
+
return { [commandFilePath("cursor", commandName)]: model.body };
|
|
165
|
+
}
|
|
166
|
+
if (targetTool === "claude") {
|
|
167
|
+
const metadata = {};
|
|
168
|
+
if (options.description ?? model.description) {
|
|
169
|
+
metadata.description = options.description ?? model.description;
|
|
170
|
+
}
|
|
171
|
+
if (model.manualOnly) {
|
|
172
|
+
metadata["disable-model-invocation"] = true;
|
|
173
|
+
}
|
|
174
|
+
return {
|
|
175
|
+
[commandFilePath("claude", commandName)]: renderMarkdownDocument({
|
|
176
|
+
metadata,
|
|
177
|
+
body: model.body,
|
|
178
|
+
}),
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
if (targetTool === "opencode" || targetTool === "antigravity") {
|
|
182
|
+
const metadata = {};
|
|
183
|
+
if (options.description ?? model.description) {
|
|
184
|
+
metadata.description = options.description ?? model.description;
|
|
185
|
+
}
|
|
186
|
+
if (targetTool === "opencode") {
|
|
187
|
+
if (model.agent) {
|
|
188
|
+
metadata.agent = model.agent;
|
|
189
|
+
}
|
|
190
|
+
if (model.model) {
|
|
191
|
+
metadata.model = model.model;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
[commandFilePath(targetTool, commandName)]: Object.keys(metadata).length === 0
|
|
196
|
+
? model.body
|
|
197
|
+
: renderMarkdownDocument({
|
|
198
|
+
metadata,
|
|
199
|
+
body: model.body,
|
|
200
|
+
}),
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
[`${skillDirectoryPath("codex", commandName)}/SKILL.md`]: renderMarkdownDocument({
|
|
205
|
+
metadata: {
|
|
206
|
+
name: commandName,
|
|
207
|
+
description: options.description ?? model.description ?? "Translated command",
|
|
208
|
+
},
|
|
209
|
+
body: model.body,
|
|
210
|
+
}),
|
|
211
|
+
[`${skillDirectoryPath("codex", commandName)}/agents/openai.yaml`]: renderCodexSkillPolicy(false),
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
function parseAgent(sourceTool, source) {
|
|
215
|
+
if (sourceTool === "codex") {
|
|
216
|
+
const agent = parseCodexAgent(source);
|
|
217
|
+
return {
|
|
218
|
+
name: agent.name,
|
|
219
|
+
description: agent.description,
|
|
220
|
+
body: agent.developerInstructions,
|
|
221
|
+
model: agent.model,
|
|
222
|
+
sandboxMode: agent.sandboxMode,
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
const document = parseMarkdownDocument(source);
|
|
226
|
+
return {
|
|
227
|
+
name: coerceRequiredString(document.metadata.name, "name"),
|
|
228
|
+
description: coerceRequiredString(document.metadata.description, "description"),
|
|
229
|
+
body: document.body,
|
|
230
|
+
model: coerceOptionalString(document.metadata.model),
|
|
231
|
+
mode: coerceOptionalString(document.metadata.mode),
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
function renderAgent(targetTool, model) {
|
|
235
|
+
if (targetTool === "codex") {
|
|
236
|
+
return {
|
|
237
|
+
[agentFilePath("codex", model.name)]: renderCodexAgent({
|
|
238
|
+
name: model.name,
|
|
239
|
+
description: model.description,
|
|
240
|
+
developerInstructions: model.body,
|
|
241
|
+
model: model.model,
|
|
242
|
+
sandboxMode: model.sandboxMode,
|
|
243
|
+
}),
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
const metadata = {
|
|
247
|
+
name: model.name,
|
|
248
|
+
description: model.description,
|
|
249
|
+
};
|
|
250
|
+
if (model.model) {
|
|
251
|
+
metadata.model = model.model;
|
|
252
|
+
}
|
|
253
|
+
if (targetTool === "opencode") {
|
|
254
|
+
metadata.mode = "subagent";
|
|
255
|
+
}
|
|
256
|
+
return {
|
|
257
|
+
[agentFilePath(targetTool, model.name)]: renderMarkdownDocument({
|
|
258
|
+
metadata,
|
|
259
|
+
body: model.body,
|
|
260
|
+
}),
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
function parseMarkdownDocument(source) {
|
|
264
|
+
if (!source.startsWith("---\n")) {
|
|
265
|
+
return { metadata: {}, body: source };
|
|
266
|
+
}
|
|
267
|
+
const endMarkerIndex = source.indexOf("\n---\n", 4);
|
|
268
|
+
if (endMarkerIndex === -1) {
|
|
269
|
+
throw new Error("Document must contain a closing YAML frontmatter marker");
|
|
270
|
+
}
|
|
271
|
+
const frontmatter = source.slice(4, endMarkerIndex);
|
|
272
|
+
const body = source.slice(endMarkerIndex + "\n---\n".length);
|
|
273
|
+
return {
|
|
274
|
+
metadata: parseYamlMap(frontmatter),
|
|
275
|
+
body: body.replace(/^\n/, ""),
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
function renderMarkdownDocument(document) {
|
|
279
|
+
if (Object.keys(document.metadata).length === 0) {
|
|
280
|
+
return document.body;
|
|
281
|
+
}
|
|
282
|
+
return `---\n${renderYamlMap(document.metadata)}\n---\n${document.body}`;
|
|
283
|
+
}
|
|
284
|
+
function parseYamlMap(source) {
|
|
285
|
+
const root = {};
|
|
286
|
+
const stack = [{ indent: -1, map: root }];
|
|
287
|
+
for (const rawLine of source.split("\n")) {
|
|
288
|
+
if (rawLine.trim() === "") {
|
|
289
|
+
continue;
|
|
290
|
+
}
|
|
291
|
+
const listMatch = rawLine.match(/^(\s*)- (.+)$/);
|
|
292
|
+
if (listMatch) {
|
|
293
|
+
const listIndent = listMatch[1].length;
|
|
294
|
+
const item = String(parseScalarValue(listMatch[2].trim()));
|
|
295
|
+
// Walk back to the deepest frame whose key was set at a lesser indent
|
|
296
|
+
// than the list item (so a bare `- item` at column 0 never attaches to
|
|
297
|
+
// a key that also lives at column 0).
|
|
298
|
+
for (let i = stack.length - 1; i >= 0; i--) {
|
|
299
|
+
const frame = stack[i];
|
|
300
|
+
if (frame.lastKey !== undefined &&
|
|
301
|
+
frame.lastKeyIndent !== undefined &&
|
|
302
|
+
frame.lastKeyIndent < listIndent) {
|
|
303
|
+
const existing = frame.map[frame.lastKey];
|
|
304
|
+
if (Array.isArray(existing)) {
|
|
305
|
+
existing.push(item);
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
frame.map[frame.lastKey] = [item];
|
|
309
|
+
// Drop the MetadataMap placeholder pushed for this key.
|
|
310
|
+
while (stack.length > i + 1)
|
|
311
|
+
stack.pop();
|
|
312
|
+
}
|
|
313
|
+
break;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
const match = rawLine.match(/^(\s*)([^:]+):(.*)$/);
|
|
319
|
+
if (!match) {
|
|
320
|
+
throw new Error(`Invalid frontmatter line: ${rawLine}`);
|
|
321
|
+
}
|
|
322
|
+
const indent = match[1].length;
|
|
323
|
+
const key = match[2].trim();
|
|
324
|
+
const rawValue = match[3].trim();
|
|
325
|
+
while (stack.at(-1).indent >= indent) {
|
|
326
|
+
stack.pop();
|
|
327
|
+
}
|
|
328
|
+
const frame = stack.at(-1);
|
|
329
|
+
frame.lastKey = key;
|
|
330
|
+
frame.lastKeyIndent = indent;
|
|
331
|
+
if (rawValue === "") {
|
|
332
|
+
const child = {};
|
|
333
|
+
frame.map[key] = child;
|
|
334
|
+
stack.push({ indent, map: child });
|
|
335
|
+
continue;
|
|
336
|
+
}
|
|
337
|
+
frame.map[key] = parseScalarValue(rawValue);
|
|
338
|
+
}
|
|
339
|
+
return root;
|
|
340
|
+
}
|
|
341
|
+
function renderYamlMap(map, indent = 0) {
|
|
342
|
+
return Object.entries(map)
|
|
343
|
+
.map(([key, value]) => {
|
|
344
|
+
const prefix = `${" ".repeat(indent)}${key}:`;
|
|
345
|
+
if (isMetadataMap(value)) {
|
|
346
|
+
return `${prefix}\n${renderYamlMap(value, indent + 2)}`;
|
|
347
|
+
}
|
|
348
|
+
if (Array.isArray(value)) {
|
|
349
|
+
const items = value
|
|
350
|
+
.map((item) => `${" ".repeat(indent + 2)}- ${item}`)
|
|
351
|
+
.join("\n");
|
|
352
|
+
return `${prefix}\n${items}`;
|
|
353
|
+
}
|
|
354
|
+
return `${prefix} ${String(value)}`;
|
|
355
|
+
})
|
|
356
|
+
.join("\n");
|
|
357
|
+
}
|
|
358
|
+
function parseScalarValue(value) {
|
|
359
|
+
if (value === "true") {
|
|
360
|
+
return true;
|
|
361
|
+
}
|
|
362
|
+
if (value === "false") {
|
|
363
|
+
return false;
|
|
364
|
+
}
|
|
365
|
+
if (value.length >= 2 &&
|
|
366
|
+
((value.startsWith('"') && value.endsWith('"')) ||
|
|
367
|
+
(value.startsWith("'") && value.endsWith("'")))) {
|
|
368
|
+
return value.slice(1, -1);
|
|
369
|
+
}
|
|
370
|
+
return value;
|
|
371
|
+
}
|
|
372
|
+
function parseCodexSkillPolicy(source) {
|
|
373
|
+
if (!source) {
|
|
374
|
+
return undefined;
|
|
375
|
+
}
|
|
376
|
+
const match = source.match(/allow_implicit_invocation:\s*(true|false)/);
|
|
377
|
+
return match ? match[1] === "true" : undefined;
|
|
378
|
+
}
|
|
379
|
+
function findFileBySuffix(files, suffix) {
|
|
380
|
+
if (suffix in files) {
|
|
381
|
+
return files[suffix];
|
|
382
|
+
}
|
|
383
|
+
const matches = Object.entries(files).filter(([filePath]) => filePath.endsWith(`/${suffix}`));
|
|
384
|
+
if (matches.length === 0) {
|
|
385
|
+
return undefined;
|
|
386
|
+
}
|
|
387
|
+
if (matches.length > 1) {
|
|
388
|
+
throw new Error(`Expected exactly one ${suffix} file`);
|
|
389
|
+
}
|
|
390
|
+
return matches[0][1];
|
|
391
|
+
}
|
|
392
|
+
function renderCodexSkillPolicy(allowImplicitInvocation) {
|
|
393
|
+
return `policy:\n allow_implicit_invocation: ${allowImplicitInvocation}\n`;
|
|
394
|
+
}
|
|
395
|
+
function skillDirectoryPath(tool, name) {
|
|
396
|
+
return `${targetBasePath(tool, "skills")}/${name}`;
|
|
397
|
+
}
|
|
398
|
+
function skillFilePath(tool, name) {
|
|
399
|
+
return `${skillDirectoryPath(tool, name)}/SKILL.md`;
|
|
400
|
+
}
|
|
401
|
+
function commandFilePath(tool, name) {
|
|
402
|
+
return `${targetBasePath(tool, "commands")}/${name}.md`;
|
|
403
|
+
}
|
|
404
|
+
function agentFilePath(tool, name) {
|
|
405
|
+
if (tool === "codex")
|
|
406
|
+
return `${targetBasePath(tool, "agents")}/${name}.toml`;
|
|
407
|
+
if (tool === "copilot")
|
|
408
|
+
return `${targetBasePath(tool, "agents")}/${name}.agent.md`;
|
|
409
|
+
return `${targetBasePath(tool, "agents")}/${name}.md`;
|
|
410
|
+
}
|
|
411
|
+
function rootInstructionFilePath(tool) {
|
|
412
|
+
return targetBasePath(tool, "root_instruction");
|
|
413
|
+
}
|
|
414
|
+
function targetBasePath(tool, target) {
|
|
415
|
+
const path = (0, tool_mapping_1.getToolDefinition)(toToolMappingName(tool))?.targets[target]
|
|
416
|
+
?.path;
|
|
417
|
+
if (!path) {
|
|
418
|
+
return unsupportedTargetPath(tool, target);
|
|
419
|
+
}
|
|
420
|
+
return path;
|
|
421
|
+
}
|
|
422
|
+
function unsupportedTargetPath(tool, target) {
|
|
423
|
+
throw new Error(`Unsupported ${target} target for ${tool}`);
|
|
424
|
+
}
|
|
425
|
+
/** Maps a ToolName (e.g. "claude-code") to the internal translation name (e.g. "claude"). */
|
|
426
|
+
function toTranslationToolName(toolName) {
|
|
427
|
+
if (toolName === "claude-code")
|
|
428
|
+
return "claude";
|
|
429
|
+
return toolName;
|
|
430
|
+
}
|
|
431
|
+
function toToolMappingName(tool) {
|
|
432
|
+
if (tool === "claude") {
|
|
433
|
+
return "claude-code";
|
|
434
|
+
}
|
|
435
|
+
return tool;
|
|
436
|
+
}
|
|
437
|
+
function parseCodexAgent(source) {
|
|
438
|
+
return {
|
|
439
|
+
name: parseTomlString(source, "name"),
|
|
440
|
+
description: parseTomlString(source, "description"),
|
|
441
|
+
developerInstructions: parseTomlMultilineString(source, "developer_instructions"),
|
|
442
|
+
model: parseTomlOptionalString(source, "model"),
|
|
443
|
+
sandboxMode: parseTomlOptionalString(source, "sandbox_mode"),
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
function renderCodexAgent(document) {
|
|
447
|
+
const lines = [
|
|
448
|
+
`name = ${renderTomlString(document.name)}`,
|
|
449
|
+
`description = ${renderTomlString(document.description)}`,
|
|
450
|
+
];
|
|
451
|
+
if (document.model) {
|
|
452
|
+
lines.push(`model = ${renderTomlString(document.model)}`);
|
|
453
|
+
}
|
|
454
|
+
if (document.sandboxMode) {
|
|
455
|
+
lines.push(`sandbox_mode = ${renderTomlString(document.sandboxMode)}`);
|
|
456
|
+
}
|
|
457
|
+
lines.push(`developer_instructions = ${renderTomlMultilineString(document.developerInstructions)}`, "");
|
|
458
|
+
return lines.join("\n");
|
|
459
|
+
}
|
|
460
|
+
function parseTomlOptionalString(source, key) {
|
|
461
|
+
const match = source.match(new RegExp(`^${(0, fs_utils_1.escapeRegExp)(key)}\\s*=\\s*"([^"]*)"`, "m"));
|
|
462
|
+
return match?.[1];
|
|
463
|
+
}
|
|
464
|
+
function parseTomlString(source, key) {
|
|
465
|
+
const value = parseTomlOptionalString(source, key);
|
|
466
|
+
if (!value) {
|
|
467
|
+
throw new Error(`${key} is required`);
|
|
468
|
+
}
|
|
469
|
+
return value;
|
|
470
|
+
}
|
|
471
|
+
function parseTomlMultilineString(source, key) {
|
|
472
|
+
const match = source.match(new RegExp(`^${(0, fs_utils_1.escapeRegExp)(key)}\\s*=\\s*"""\\n([\\s\\S]*?)"""`, "m"));
|
|
473
|
+
if (!match) {
|
|
474
|
+
throw new Error(`${key} is required`);
|
|
475
|
+
}
|
|
476
|
+
return match[1];
|
|
477
|
+
}
|
|
478
|
+
function renderTomlString(value) {
|
|
479
|
+
return JSON.stringify(value);
|
|
480
|
+
}
|
|
481
|
+
function renderTomlMultilineString(value) {
|
|
482
|
+
return `"""\n${value.replaceAll('"""', '\\"\\"\\"')}"""`;
|
|
483
|
+
}
|
|
484
|
+
function coerceRequiredString(value, label) {
|
|
485
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
486
|
+
throw new Error(`${label} is required`);
|
|
487
|
+
}
|
|
488
|
+
return value;
|
|
489
|
+
}
|
|
490
|
+
function coerceOptionalString(value) {
|
|
491
|
+
return typeof value === "string" && value.trim() !== "" ? value : undefined;
|
|
492
|
+
}
|
|
493
|
+
function requireOption(value, label) {
|
|
494
|
+
if (!value || value.trim() === "") {
|
|
495
|
+
throw new Error(`${label} is required`);
|
|
496
|
+
}
|
|
497
|
+
return value;
|
|
498
|
+
}
|
|
499
|
+
function isMetadataMap(value) {
|
|
500
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
501
|
+
}
|
|
502
|
+
//# sourceMappingURL=bundle-translation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-translation.js","sourceRoot":"","sources":["../src/bundle-translation.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { type BundleItemSelector } from "./bundle-items";
|
|
2
|
+
import { type ToolName } from "./tool-mapping";
|
|
3
|
+
export type CommandName = "add" | "list" | "status" | "check" | "update" | "shadow" | "sync" | "reset" | "remove" | "apply";
|
|
4
|
+
export type CliParseResult = {
|
|
5
|
+
kind: "help";
|
|
6
|
+
command?: CommandName;
|
|
7
|
+
} | {
|
|
8
|
+
kind: "command";
|
|
9
|
+
command: "list";
|
|
10
|
+
options: {
|
|
11
|
+
json: boolean;
|
|
12
|
+
source?: string;
|
|
13
|
+
};
|
|
14
|
+
} | {
|
|
15
|
+
kind: "command";
|
|
16
|
+
command: "status";
|
|
17
|
+
options: {
|
|
18
|
+
json: boolean;
|
|
19
|
+
global: boolean;
|
|
20
|
+
};
|
|
21
|
+
} | {
|
|
22
|
+
kind: "command";
|
|
23
|
+
command: "check";
|
|
24
|
+
options: {
|
|
25
|
+
bundle?: string;
|
|
26
|
+
json: boolean;
|
|
27
|
+
};
|
|
28
|
+
} | {
|
|
29
|
+
kind: "command";
|
|
30
|
+
command: "update";
|
|
31
|
+
options: {
|
|
32
|
+
bundle?: string;
|
|
33
|
+
dryRun: boolean;
|
|
34
|
+
};
|
|
35
|
+
} | {
|
|
36
|
+
kind: "command";
|
|
37
|
+
command: "shadow";
|
|
38
|
+
options: {
|
|
39
|
+
action: "suspend" | "refresh";
|
|
40
|
+
};
|
|
41
|
+
} | {
|
|
42
|
+
kind: "command";
|
|
43
|
+
command: "sync";
|
|
44
|
+
options: Record<string, never>;
|
|
45
|
+
} | {
|
|
46
|
+
kind: "command";
|
|
47
|
+
command: "apply";
|
|
48
|
+
options: {
|
|
49
|
+
dryRun: boolean;
|
|
50
|
+
global: boolean;
|
|
51
|
+
};
|
|
52
|
+
} | {
|
|
53
|
+
kind: "command";
|
|
54
|
+
command: "reset";
|
|
55
|
+
options: {
|
|
56
|
+
dryRun: boolean;
|
|
57
|
+
global: boolean;
|
|
58
|
+
};
|
|
59
|
+
} | {
|
|
60
|
+
kind: "command";
|
|
61
|
+
command: "add";
|
|
62
|
+
options: {
|
|
63
|
+
bundle: string;
|
|
64
|
+
source?: string;
|
|
65
|
+
protocol: "https" | "ssh";
|
|
66
|
+
agents: ToolName[];
|
|
67
|
+
includeItems?: BundleItemSelector[];
|
|
68
|
+
selectItems?: boolean;
|
|
69
|
+
dryRun: boolean;
|
|
70
|
+
ref?: string;
|
|
71
|
+
inferredBundleFromSource?: true;
|
|
72
|
+
global: boolean;
|
|
73
|
+
disableModelInvocation?: boolean;
|
|
74
|
+
};
|
|
75
|
+
} | {
|
|
76
|
+
kind: "command";
|
|
77
|
+
command: "remove";
|
|
78
|
+
options: {
|
|
79
|
+
bundle?: string;
|
|
80
|
+
source?: string;
|
|
81
|
+
includeItems?: BundleItemSelector[];
|
|
82
|
+
selectItems?: boolean;
|
|
83
|
+
dryRun: boolean;
|
|
84
|
+
inferredBundleFromSource?: true;
|
|
85
|
+
global: boolean;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
export type FileConflictResolution = {
|
|
89
|
+
action: "overwrite";
|
|
90
|
+
};
|
|
91
|
+
export interface BundleSelection {
|
|
92
|
+
bundle: string;
|
|
93
|
+
source?: string;
|
|
94
|
+
protocol?: "https" | "ssh";
|
|
95
|
+
}
|
|
96
|
+
export interface BundleItemChoice {
|
|
97
|
+
value: string;
|
|
98
|
+
label: string;
|
|
99
|
+
}
|
|
100
|
+
export interface PromptClient {
|
|
101
|
+
selectBundle(source?: string, requestedTools?: ToolName[]): Promise<BundleSelection>;
|
|
102
|
+
selectBundleFromSelections(availableBundles: BundleSelection[], source?: string): Promise<BundleSelection>;
|
|
103
|
+
selectBundleItems(availableItems: BundleItemSelector[], selectedItems: BundleItemSelector[], purpose?: "install" | "remove"): Promise<BundleItemSelector[]>;
|
|
104
|
+
selectBundleItemChoices(availableItems: BundleItemChoice[], selectedItems: string[], purpose?: "install" | "remove"): Promise<string[]>;
|
|
105
|
+
selectAgents(availableAgents: ToolName[]): Promise<ToolName[]>;
|
|
106
|
+
resolveFileConflict(conflictPath: string): Promise<FileConflictResolution>;
|
|
107
|
+
confirmManagedFileRemoval(conflictPath: string, operation: "reset" | "replace" | "remove"): Promise<boolean>;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Returns true if the CLI should run in headless (non-interactive) mode.
|
|
111
|
+
* Detected via the SKUL_NO_TUI environment variable.
|
|
112
|
+
*/
|
|
113
|
+
export declare function isHeadlessMode(): boolean;
|
|
114
|
+
/**
|
|
115
|
+
* Creates a prompt client that throws immediately instead of opening interactive
|
|
116
|
+
* prompts. Use this when SKUL_NO_TUI is set so agents never block waiting for input.
|
|
117
|
+
*/
|
|
118
|
+
export declare function createHeadlessPromptClient(): PromptClient;
|
|
119
|
+
/** Creates the interactive prompt client used by the terminal UI. */
|
|
120
|
+
export declare function createPromptClient(availableBundles?: string[]): PromptClient;
|
|
121
|
+
/** Creates an interactive prompt client from richer bundle selection metadata. */
|
|
122
|
+
export declare function createPromptClientForSelections(availableBundles: BundleSelection[], loadPrompts?: () => Promise<typeof import("@clack/prompts")>): PromptClient;
|
|
123
|
+
/** Renders CLI help text for either the full program or one subcommand. */
|
|
124
|
+
export declare function createHelpText(command?: CommandName): string;
|
|
125
|
+
/** Parses CLI arguments into a normalized command payload. */
|
|
126
|
+
export declare function parseCliArgs(argv: string[], prompts?: PromptClient): Promise<CliParseResult>;
|