@agentuity/cli 0.1.34 → 0.1.35

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.
Files changed (114) hide show
  1. package/bin/cli.ts +107 -6
  2. package/dist/cmd/ai/index.d.ts.map +1 -1
  3. package/dist/cmd/ai/index.js +0 -6
  4. package/dist/cmd/ai/index.js.map +1 -1
  5. package/dist/cmd/ai/opencode/uninstall.js +1 -1
  6. package/dist/cmd/ai/opencode/uninstall.js.map +1 -1
  7. package/dist/cmd/build/vite/bun-dev-server.d.ts +6 -0
  8. package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
  9. package/dist/cmd/build/vite/bun-dev-server.js +100 -33
  10. package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
  11. package/dist/cmd/cloud/apikey/create.d.ts.map +1 -1
  12. package/dist/cmd/cloud/apikey/create.js +1 -1
  13. package/dist/cmd/cloud/apikey/create.js.map +1 -1
  14. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  15. package/dist/cmd/cloud/deploy.js +4 -1
  16. package/dist/cmd/cloud/deploy.js.map +1 -1
  17. package/dist/cmd/cloud/env/delete.d.ts.map +1 -1
  18. package/dist/cmd/cloud/env/delete.js +100 -45
  19. package/dist/cmd/cloud/env/delete.js.map +1 -1
  20. package/dist/cmd/cloud/env/pull.d.ts.map +1 -1
  21. package/dist/cmd/cloud/env/pull.js +1 -1
  22. package/dist/cmd/cloud/env/pull.js.map +1 -1
  23. package/dist/cmd/cloud/machine/delete.js +1 -1
  24. package/dist/cmd/cloud/machine/delete.js.map +1 -1
  25. package/dist/cmd/dev/index.d.ts.map +1 -1
  26. package/dist/cmd/dev/index.js +58 -10
  27. package/dist/cmd/dev/index.js.map +1 -1
  28. package/dist/cmd/index.d.ts.map +1 -1
  29. package/dist/cmd/index.js +1 -0
  30. package/dist/cmd/index.js.map +1 -1
  31. package/dist/cmd/support/index.d.ts +2 -0
  32. package/dist/cmd/support/index.d.ts.map +1 -0
  33. package/dist/cmd/support/index.js +11 -0
  34. package/dist/cmd/support/index.js.map +1 -0
  35. package/dist/cmd/support/logs/index.d.ts +3 -0
  36. package/dist/cmd/support/logs/index.d.ts.map +1 -0
  37. package/dist/cmd/support/logs/index.js +9 -0
  38. package/dist/cmd/support/logs/index.js.map +1 -0
  39. package/dist/cmd/support/logs/path.d.ts +3 -0
  40. package/dist/cmd/support/logs/path.d.ts.map +1 -0
  41. package/dist/cmd/support/logs/path.js +52 -0
  42. package/dist/cmd/support/logs/path.js.map +1 -0
  43. package/dist/cmd/support/logs/show.d.ts +3 -0
  44. package/dist/cmd/support/logs/show.d.ts.map +1 -0
  45. package/dist/cmd/support/logs/show.js +121 -0
  46. package/dist/cmd/support/logs/show.js.map +1 -0
  47. package/dist/cmd/support/report.d.ts +3 -0
  48. package/dist/cmd/support/report.d.ts.map +1 -0
  49. package/dist/cmd/support/report.js +299 -0
  50. package/dist/cmd/support/report.js.map +1 -0
  51. package/dist/cmd/support/system.d.ts +3 -0
  52. package/dist/cmd/support/system.d.ts.map +1 -0
  53. package/dist/cmd/support/system.js +120 -0
  54. package/dist/cmd/support/system.js.map +1 -0
  55. package/dist/cmd/version/index.d.ts.map +1 -1
  56. package/dist/cmd/version/index.js +1 -0
  57. package/dist/cmd/version/index.js.map +1 -1
  58. package/dist/composite-logger.d.ts +35 -0
  59. package/dist/composite-logger.d.ts.map +1 -0
  60. package/dist/composite-logger.js +78 -0
  61. package/dist/composite-logger.js.map +1 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +2 -0
  65. package/dist/index.js.map +1 -1
  66. package/dist/internal-logger.d.ts +77 -0
  67. package/dist/internal-logger.d.ts.map +1 -0
  68. package/dist/internal-logger.js +340 -0
  69. package/dist/internal-logger.js.map +1 -0
  70. package/dist/types.d.ts +6 -0
  71. package/dist/types.d.ts.map +1 -1
  72. package/dist/types.js.map +1 -1
  73. package/package.json +6 -6
  74. package/src/cmd/ai/index.ts +0 -6
  75. package/src/cmd/ai/opencode/uninstall.ts +1 -1
  76. package/src/cmd/build/vite/bun-dev-server.ts +113 -36
  77. package/src/cmd/cloud/apikey/create.ts +3 -1
  78. package/src/cmd/cloud/deploy.ts +4 -1
  79. package/src/cmd/cloud/env/delete.ts +100 -45
  80. package/src/cmd/cloud/env/pull.ts +1 -6
  81. package/src/cmd/cloud/machine/delete.ts +1 -1
  82. package/src/cmd/dev/index.ts +59 -11
  83. package/src/cmd/index.ts +1 -0
  84. package/src/cmd/support/index.ts +11 -0
  85. package/src/cmd/support/logs/index.ts +9 -0
  86. package/src/cmd/support/logs/path.ts +56 -0
  87. package/src/cmd/support/logs/show.ts +144 -0
  88. package/src/cmd/support/report.ts +364 -0
  89. package/src/cmd/support/system.ts +130 -0
  90. package/src/cmd/version/index.ts +1 -0
  91. package/src/composite-logger.ts +86 -0
  92. package/src/index.ts +7 -0
  93. package/src/internal-logger.ts +411 -0
  94. package/src/types.ts +6 -0
  95. package/dist/cmd/ai/skills/generate.d.ts +0 -3
  96. package/dist/cmd/ai/skills/generate.d.ts.map +0 -1
  97. package/dist/cmd/ai/skills/generate.js +0 -65
  98. package/dist/cmd/ai/skills/generate.js.map +0 -1
  99. package/dist/cmd/ai/skills/generator.d.ts +0 -4
  100. package/dist/cmd/ai/skills/generator.d.ts.map +0 -1
  101. package/dist/cmd/ai/skills/generator.js +0 -410
  102. package/dist/cmd/ai/skills/generator.js.map +0 -1
  103. package/dist/cmd/ai/skills/index.d.ts +0 -4
  104. package/dist/cmd/ai/skills/index.d.ts.map +0 -1
  105. package/dist/cmd/ai/skills/index.js +0 -21
  106. package/dist/cmd/ai/skills/index.js.map +0 -1
  107. package/dist/cmd/dev/skills.d.ts +0 -10
  108. package/dist/cmd/dev/skills.d.ts.map +0 -1
  109. package/dist/cmd/dev/skills.js +0 -57
  110. package/dist/cmd/dev/skills.js.map +0 -1
  111. package/src/cmd/ai/skills/generate.ts +0 -75
  112. package/src/cmd/ai/skills/generator.ts +0 -527
  113. package/src/cmd/ai/skills/index.ts +0 -23
  114. package/src/cmd/dev/skills.ts +0 -82
@@ -1,410 +0,0 @@
1
- import * as path from 'node:path';
2
- const EXCLUDED_COMMANDS = new Set([
3
- 'ai',
4
- 'help',
5
- 'version',
6
- 'canary',
7
- 'setup',
8
- 'profile',
9
- 'upgrade',
10
- ]);
11
- function isValidSkillName(name) {
12
- if (name.length < 1 || name.length > 64)
13
- return false;
14
- if (!/^[a-z0-9-]+$/.test(name))
15
- return false;
16
- if (name.startsWith('-') || name.endsWith('-'))
17
- return false;
18
- if (name.includes('--'))
19
- return false;
20
- return true;
21
- }
22
- function toSkillName(parts) {
23
- return parts.join('-').toLowerCase();
24
- }
25
- function enhanceDescription(command, fullPath) {
26
- let description = command.description;
27
- const context = getCommandContext(command, fullPath);
28
- if (context) {
29
- description = `${description}. ${context}`;
30
- }
31
- if (description.length > 1024) {
32
- description = description.substring(0, 1021) + '...';
33
- }
34
- return description;
35
- }
36
- function getCommandContext(command, fullPath) {
37
- const parts = [];
38
- if (command.requires?.auth) {
39
- parts.push('Requires authentication');
40
- }
41
- if (fullPath.includes('cloud')) {
42
- parts.push('Use for Agentuity cloud platform operations');
43
- }
44
- else if (fullPath.includes('auth')) {
45
- parts.push('Use for managing authentication credentials');
46
- }
47
- else if (fullPath.includes('project')) {
48
- parts.push('Use for project management operations');
49
- }
50
- return parts.join('. ');
51
- }
52
- function collectLeafCommands(command, parentPath, baseDir, _isHidden) {
53
- const skills = [];
54
- const currentPath = [...parentPath, command.name];
55
- // Skip commands marked with skipSkill
56
- if (command.skipSkill) {
57
- return skills;
58
- }
59
- // Skip toplevel aliases (subcommands that have toplevel: true create duplicates)
60
- if (command.toplevel && parentPath.length === 0) {
61
- return skills;
62
- }
63
- if (command.subcommands && command.subcommands.length > 0) {
64
- for (const sub of command.subcommands) {
65
- skills.push(...collectLeafCommands(sub, currentPath, baseDir, _isHidden));
66
- }
67
- }
68
- else {
69
- const skillName = `agentuity-cli-${toSkillName(currentPath)}`;
70
- if (!isValidSkillName(skillName)) {
71
- return skills;
72
- }
73
- const skillPath = path.join(baseDir, skillName, 'SKILL.md');
74
- skills.push({
75
- skillPath,
76
- skillName,
77
- command,
78
- fullCommandPath: currentPath,
79
- });
80
- }
81
- return skills;
82
- }
83
- function formatPrerequisites(command) {
84
- const prereqs = [];
85
- if (command.requires?.auth) {
86
- prereqs.push('Authenticated with `agentuity auth login`');
87
- }
88
- if (command.requires?.project) {
89
- prereqs.push('Project context required (run from project directory or use `--project-id`)');
90
- }
91
- if (command.requires?.org) {
92
- prereqs.push('Organization context required (`--org-id` or default org)');
93
- }
94
- if (command.prerequisites) {
95
- prereqs.push(...command.prerequisites);
96
- }
97
- return prereqs;
98
- }
99
- function formatOptionsTable(options) {
100
- if (options.length === 0)
101
- return '';
102
- const lines = [
103
- '| Option | Type | Required | Default | Description |',
104
- '|--------|------|----------|---------|-------------|',
105
- ];
106
- for (const opt of options) {
107
- const optName = `\`--${opt.name}\``;
108
- const optType = opt.enum ? opt.enum.join(' \\| ') : opt.type;
109
- const required = opt.required ? 'Yes' : 'No';
110
- const defaultVal = opt.default !== undefined ? `\`${JSON.stringify(opt.default)}\`` : '-';
111
- const desc = opt.description ?? '-';
112
- lines.push(`| ${optName} | ${optType} | ${required} | ${defaultVal} | ${desc} |`);
113
- }
114
- return lines.join('\n');
115
- }
116
- function formatArgumentsTable(args) {
117
- if (args.length === 0)
118
- return '';
119
- const lines = [
120
- '| Argument | Type | Required | Description |',
121
- '|----------|------|----------|-------------|',
122
- ];
123
- for (const arg of args) {
124
- const argName = `\`<${arg.name}${arg.variadic ? '...' : ''}>\``;
125
- const argType = arg.variadic ? 'array' : arg.type;
126
- const required = arg.required ? 'Yes' : 'No';
127
- const desc = arg.description ?? '-';
128
- lines.push(`| ${argName} | ${argType} | ${required} | ${desc} |`);
129
- }
130
- return lines.join('\n');
131
- }
132
- function formatExamples(command) {
133
- if (!command.examples || command.examples.length === 0) {
134
- return '';
135
- }
136
- const lines = [];
137
- for (const example of command.examples) {
138
- lines.push(`${example.description}:`);
139
- lines.push('');
140
- lines.push('```bash');
141
- lines.push(example.command);
142
- lines.push('```');
143
- lines.push('');
144
- }
145
- return lines.join('\n').trim();
146
- }
147
- function formatResponse(command) {
148
- if (!command.response) {
149
- return '';
150
- }
151
- const response = command.response;
152
- const lines = [];
153
- if (response.type === 'object' && response.properties) {
154
- const props = response.properties;
155
- lines.push('Returns JSON object:');
156
- lines.push('');
157
- lines.push('```json');
158
- const sample = {};
159
- for (const [key, val] of Object.entries(props)) {
160
- sample[key] = val.type ?? 'unknown';
161
- }
162
- lines.push(JSON.stringify(sample, null, 2));
163
- lines.push('```');
164
- lines.push('');
165
- lines.push('| Field | Type | Description |');
166
- lines.push('|-------|------|-------------|');
167
- for (const [key, val] of Object.entries(props)) {
168
- lines.push(`| \`${key}\` | ${val.type ?? 'unknown'} | ${val.description ?? '-'} |`);
169
- }
170
- }
171
- else if (response.type) {
172
- lines.push(`Returns: \`${response.type}\``);
173
- }
174
- return lines.join('\n');
175
- }
176
- function buildUsageString(command, fullPath) {
177
- const parts = ['agentuity', ...fullPath];
178
- if (command.arguments) {
179
- for (const arg of command.arguments) {
180
- const argStr = arg.required
181
- ? `<${arg.name}${arg.variadic ? '...' : ''}>`
182
- : `[${arg.name}${arg.variadic ? '...' : ''}]`;
183
- parts.push(argStr);
184
- }
185
- }
186
- if (command.options && command.options.length > 0) {
187
- parts.push('[options]');
188
- }
189
- return parts.join(' ');
190
- }
191
- function escapeYamlString(str) {
192
- // Check if string needs quoting:
193
- // - Contains YAML special characters
194
- // - Has leading/trailing whitespace
195
- // - Looks like a boolean, null, or number
196
- // - Contains control characters
197
- const specialCharsRegex = /[:[\]{}#&*!|>'"%@`,?<>=~-]/;
198
- // eslint-disable-next-line no-control-regex
199
- const controlCharsRegex = new RegExp('[\\x00-\\x1f\\x7f]');
200
- const needsQuoting = specialCharsRegex.test(str) ||
201
- controlCharsRegex.test(str) ||
202
- str !== str.trim() ||
203
- /^(true|false|yes|no|on|off|null|~)$/i.test(str) ||
204
- /^-?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?$/i.test(str) ||
205
- str === '';
206
- if (!needsQuoting) {
207
- return str;
208
- }
209
- // Escape special characters for double-quoted YAML string
210
- // eslint-disable-next-line no-control-regex
211
- const nonPrintableRegex = new RegExp('[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]', 'g');
212
- const escaped = str
213
- .replace(/\\/g, '\\\\')
214
- .replace(/"/g, '\\"')
215
- .replace(/\n/g, '\\n')
216
- .replace(/\r/g, '\\r')
217
- .replace(/\t/g, '\\t')
218
- .replace(nonPrintableRegex, (char) => {
219
- const code = char.charCodeAt(0);
220
- return `\\x${code.toString(16).padStart(2, '0')}`;
221
- });
222
- return `"${escaped}"`;
223
- }
224
- function buildArgumentHint(command) {
225
- if (!command.arguments || command.arguments.length === 0) {
226
- return null;
227
- }
228
- const hints = command.arguments.map((arg) => {
229
- const name = arg.variadic ? `${arg.name}...` : arg.name;
230
- return arg.required ? `<${name}>` : `[${name}]`;
231
- });
232
- return hints.join(' ');
233
- }
234
- function generateSkillContent(skill, version) {
235
- const { command, skillName, fullCommandPath } = skill;
236
- const fullCommand = ['agentuity', ...fullCommandPath].join(' ');
237
- const enhancedDescription = enhanceDescription(command, fullCommandPath);
238
- const tags = command.tags?.join(' ') ?? '';
239
- const argumentHint = buildArgumentHint(command);
240
- const lines = [
241
- '---',
242
- `name: ${skillName}`,
243
- `description: ${escapeYamlString(enhancedDescription)}`,
244
- `version: "${version}"`,
245
- 'license: Apache-2.0',
246
- `allowed-tools: "Bash(agentuity:*)"`,
247
- ];
248
- if (argumentHint) {
249
- lines.push(`argument-hint: "${argumentHint}"`);
250
- }
251
- lines.push('metadata:');
252
- lines.push(` command: "${fullCommand}"`);
253
- if (tags) {
254
- lines.push(` tags: "${tags}"`);
255
- }
256
- lines.push('---');
257
- lines.push('');
258
- const title = fullCommandPath.map((p) => p.charAt(0).toUpperCase() + p.slice(1)).join(' ');
259
- lines.push(`# ${title}`);
260
- lines.push('');
261
- lines.push(command.description);
262
- lines.push('');
263
- const prerequisites = formatPrerequisites(command);
264
- if (prerequisites.length > 0) {
265
- lines.push('## Prerequisites');
266
- lines.push('');
267
- for (const prereq of prerequisites) {
268
- lines.push(`- ${prereq}`);
269
- }
270
- lines.push('');
271
- }
272
- lines.push('## Usage');
273
- lines.push('');
274
- lines.push('```bash');
275
- lines.push(buildUsageString(command, fullCommandPath));
276
- lines.push('```');
277
- lines.push('');
278
- if (command.arguments && command.arguments.length > 0) {
279
- lines.push('## Arguments');
280
- lines.push('');
281
- lines.push(formatArgumentsTable(command.arguments));
282
- lines.push('');
283
- }
284
- if (command.options && command.options.length > 0) {
285
- lines.push('## Options');
286
- lines.push('');
287
- lines.push(formatOptionsTable(command.options));
288
- lines.push('');
289
- }
290
- const examples = formatExamples(command);
291
- if (examples) {
292
- lines.push('## Examples');
293
- lines.push('');
294
- lines.push(examples);
295
- lines.push('');
296
- }
297
- const response = formatResponse(command);
298
- if (response) {
299
- lines.push('## Output');
300
- lines.push('');
301
- lines.push(response);
302
- lines.push('');
303
- }
304
- return lines.join('\n');
305
- }
306
- function collectAllSkills(schema, outputDir, includeHidden) {
307
- const baseDir = path.join(outputDir, 'skills');
308
- const allSkills = [];
309
- for (const command of schema.commands) {
310
- if (EXCLUDED_COMMANDS.has(command.name)) {
311
- continue;
312
- }
313
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
314
- const isHidden = command.hidden === true;
315
- if (isHidden && !includeHidden) {
316
- continue;
317
- }
318
- const skills = collectLeafCommands(command, [], baseDir, isHidden);
319
- allSkills.push(...skills);
320
- }
321
- return allSkills;
322
- }
323
- function generateReadme(version, skills) {
324
- const groups = new Map();
325
- for (const skill of skills) {
326
- const group = skill.fullCommandPath[0];
327
- if (!groups.has(group)) {
328
- groups.set(group, []);
329
- }
330
- groups.get(group).push(skill);
331
- }
332
- const lines = [
333
- '# Agentuity CLI Skills',
334
- '',
335
- 'This directory contains auto-generated [Agent Skills](https://agentskills.io) for the Agentuity CLI.',
336
- '',
337
- '## What are Agent Skills?',
338
- '',
339
- 'Agent Skills are modular capabilities that extend AI coding agents. Each skill is a directory',
340
- 'containing a `SKILL.md` file with instructions that agents read when performing relevant tasks.',
341
- '',
342
- 'Learn more at the [Agent Skills Specification](https://agentskills.io/specification).',
343
- '',
344
- '## Generated From',
345
- '',
346
- `- **CLI Version**: ${version}`,
347
- `- **Generated**: ${new Date().toISOString().split('T')[0]}`,
348
- `- **Total Skills**: ${skills.length}`,
349
- '',
350
- '## Available Skills',
351
- '',
352
- ];
353
- for (const [group, groupSkills] of [...groups.entries()].sort()) {
354
- lines.push(`### ${group}`);
355
- lines.push('');
356
- lines.push('| Skill | Command | Description |');
357
- lines.push('|-------|---------|-------------|');
358
- for (const skill of groupSkills.sort((a, b) => a.skillName.localeCompare(b.skillName))) {
359
- const cmd = `\`agentuity ${skill.fullCommandPath.join(' ')}\``;
360
- const desc = skill.command.description.substring(0, 60) +
361
- (skill.command.description.length > 60 ? '...' : '');
362
- lines.push(`| [${skill.skillName}](./${skill.skillName}) | ${cmd} | ${desc} |`);
363
- }
364
- lines.push('');
365
- }
366
- lines.push('## Usage');
367
- lines.push('');
368
- lines.push('These skills are designed for AI coding agents that support the Agent Skills format.');
369
- lines.push('Place this directory in your project or install globally for your agent to discover.');
370
- lines.push('');
371
- lines.push('## Regenerating');
372
- lines.push('');
373
- lines.push('To regenerate these skills with the latest CLI schema:');
374
- lines.push('');
375
- lines.push('```bash');
376
- lines.push('agentuity ai skills generate --output ./skills');
377
- lines.push('```');
378
- lines.push('');
379
- lines.push('---');
380
- lines.push('');
381
- lines.push('*This file was auto-generated by the Agentuity CLI. Do not edit manually.*');
382
- lines.push('');
383
- return lines.join('\n');
384
- }
385
- export function collectSkillsForPreview(schema, outputDir, includeHidden) {
386
- const allSkills = collectAllSkills(schema, outputDir, includeHidden);
387
- return allSkills.map((s) => s.skillPath);
388
- }
389
- export async function generateSkills(schema, outputDir, includeHidden) {
390
- const allSkills = collectAllSkills(schema, outputDir, includeHidden);
391
- if (allSkills.length === 0) {
392
- return 0;
393
- }
394
- const baseDir = path.join(outputDir, 'skills');
395
- let created = 0;
396
- for (const skill of allSkills) {
397
- const content = generateSkillContent(skill, schema.version);
398
- const skillDir = path.dirname(skill.skillPath);
399
- await Bun.$ `mkdir -p ${skillDir}`.quiet();
400
- await Bun.write(Bun.file(skill.skillPath), content);
401
- created++;
402
- }
403
- const readmePath = path.join(baseDir, 'README.md');
404
- const readmeContent = generateReadme(schema.version, allSkills);
405
- await Bun.write(Bun.file(readmePath), readmeContent);
406
- const versionPath = path.join(baseDir, 'agentuity-version.txt');
407
- await Bun.write(Bun.file(versionPath), schema.version);
408
- return created;
409
- }
410
- //# sourceMappingURL=generator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/cmd/ai/skills/generator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type { CommandDefinition } from '../../../types';
2
- export declare const skillsCommand: CommandDefinition;
3
- export default skillsCommand;
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cmd/ai/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKxD,eAAO,MAAM,aAAa,EAAE,iBAe1B,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -1,21 +0,0 @@
1
- import { createCommand } from '../../../types';
2
- import { generateSubcommand } from './generate';
3
- import { getCommand } from '../../../command-prefix';
4
- export const skillsCommand = createCommand({
5
- name: 'skills',
6
- description: 'Generate Agent Skills from CLI schema',
7
- tags: ['read-only', 'fast'],
8
- examples: [
9
- {
10
- command: getCommand('ai skills generate --output ./skills'),
11
- description: 'Generate skills to a directory',
12
- },
13
- {
14
- command: getCommand('--dry-run ai skills generate --output ./skills'),
15
- description: 'Preview without writing files',
16
- },
17
- ],
18
- subcommands: [generateSubcommand],
19
- });
20
- export default skillsCommand;
21
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cmd/ai/skills/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,CAAC,MAAM,aAAa,GAAsB,aAAa,CAAC;IAC7D,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,uCAAuC;IACpD,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE;QACT;YACC,OAAO,EAAE,UAAU,CAAC,sCAAsC,CAAC;YAC3D,WAAW,EAAE,gCAAgC;SAC7C;QACD;YACC,OAAO,EAAE,UAAU,CAAC,gDAAgD,CAAC;YACrE,WAAW,EAAE,+BAA+B;SAC5C;KACD;IACD,WAAW,EAAE,CAAC,kBAAkB,CAAC;CACjC,CAAC,CAAC;AAEH,eAAe,aAAa,CAAC"}
@@ -1,10 +0,0 @@
1
- import type { Logger } from '@agentuity/core';
2
- interface SkillsCheckResult {
3
- needsRegeneration: boolean;
4
- reason?: 'missing' | 'outdated' | 'version-missing';
5
- currentVersion?: string;
6
- }
7
- export declare function checkSkillsVersion(projectDir: string, cliVersion: string): Promise<SkillsCheckResult>;
8
- export declare function regenerateSkillsAsync(projectDir: string, cliVersion: string, logger: Logger): Promise<void>;
9
- export {};
10
- //# sourceMappingURL=skills.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/cmd/dev/skills.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAK9C,UAAU,iBAAiB;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,iBAAiB,CAAC;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,kBAAkB,CACvC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED,wBAAsB,qBAAqB,CAC1C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CA+Bf"}
@@ -1,57 +0,0 @@
1
- import { join } from 'node:path';
2
- import { existsSync } from 'node:fs';
3
- import { semver } from 'bun';
4
- const SKILLS_DIR = '.agents/skills/agentuity/cli';
5
- const VERSION_FILE = 'version.txt';
6
- export async function checkSkillsVersion(projectDir, cliVersion) {
7
- const skillsDir = join(projectDir, SKILLS_DIR);
8
- const versionFile = join(skillsDir, VERSION_FILE);
9
- if (!existsSync(skillsDir)) {
10
- return { needsRegeneration: true, reason: 'missing' };
11
- }
12
- if (!existsSync(versionFile)) {
13
- return { needsRegeneration: true, reason: 'version-missing' };
14
- }
15
- const currentVersion = (await Bun.file(versionFile).text()).trim();
16
- if (!currentVersion) {
17
- return { needsRegeneration: true, reason: 'version-missing' };
18
- }
19
- try {
20
- const order = semver.order(currentVersion, cliVersion);
21
- if (order < 0) {
22
- return { needsRegeneration: true, reason: 'outdated', currentVersion };
23
- }
24
- }
25
- catch {
26
- return { needsRegeneration: true, reason: 'outdated', currentVersion };
27
- }
28
- return { needsRegeneration: false, currentVersion };
29
- }
30
- export async function regenerateSkillsAsync(projectDir, cliVersion, logger) {
31
- const result = await checkSkillsVersion(projectDir, cliVersion);
32
- if (!result.needsRegeneration) {
33
- return;
34
- }
35
- const reasonMsg = result.reason === 'missing'
36
- ? 'Skills not found'
37
- : result.reason === 'version-missing'
38
- ? 'Skills version unknown'
39
- : `Skills outdated (${result.currentVersion} < ${cliVersion})`;
40
- logger.debug(`${reasonMsg}, regenerating...`);
41
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
42
- const schema = global.__CLI_SCHEMA__;
43
- if (!schema) {
44
- logger.debug('CLI schema not available, skipping skill regeneration');
45
- return;
46
- }
47
- try {
48
- const outputDir = join(projectDir, '.agents');
49
- const { generateSkills } = await import('../ai/skills/generator');
50
- await generateSkills(schema, outputDir, false);
51
- logger.debug(`Skills regenerated to ${outputDir}/skills/agentuity/cli`);
52
- }
53
- catch (error) {
54
- logger.debug(`Failed to regenerate skills: ${error}`);
55
- }
56
- }
57
- //# sourceMappingURL=skills.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/cmd/dev/skills.ts"],"names":[],"mappings":"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"}
@@ -1,75 +0,0 @@
1
- import { z } from 'zod';
2
- import { createSubcommand, type CommandContext } from '../../../types';
3
- import { getCommand } from '../../../command-prefix';
4
- import { ErrorCode } from '../../../errors';
5
- import type { CLISchema } from '../../../schema-generator';
6
- import * as tui from '../../../tui';
7
- import * as path from 'node:path';
8
- import { generateSkills, collectSkillsForPreview } from './generator';
9
-
10
- const OptionsSchema = z.object({
11
- output: z.string().describe('Output directory for generated skills'),
12
- includeHidden: z.boolean().default(false).describe('Include hidden commands'),
13
- });
14
-
15
- export const generateSubcommand = createSubcommand({
16
- name: 'generate',
17
- description: 'Generate Agent Skills from CLI schema',
18
- tags: ['fast'],
19
- idempotent: true,
20
- examples: [
21
- {
22
- command: getCommand('ai skills generate --output ./skills'),
23
- description: 'Generate skills to a directory',
24
- },
25
- {
26
- command: getCommand('--dry-run ai skills generate --output ./skills'),
27
- description: 'Preview without writing files',
28
- },
29
- {
30
- command: getCommand('ai skills generate --output ./skills --include-hidden'),
31
- description: 'Include hidden commands',
32
- },
33
- ],
34
- schema: {
35
- options: OptionsSchema,
36
- },
37
- async handler(ctx: CommandContext<undefined, undefined, undefined, typeof OptionsSchema>) {
38
- const { logger, opts, options } = ctx;
39
- const { output, includeHidden } = opts;
40
- const dryRun = options.dryRun === true;
41
-
42
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
- const schema = (global as any).__CLI_SCHEMA__ as CLISchema | undefined;
44
-
45
- if (!schema) {
46
- return logger.fatal('Schema not available. This is a CLI bug.', ErrorCode.INTERNAL_ERROR);
47
- }
48
-
49
- const baseDir = path.join(output, 'skills', 'agentuity', 'cli');
50
-
51
- if (dryRun) {
52
- const skills = collectSkillsForPreview(schema, output, includeHidden);
53
- if (skills.length === 0) {
54
- logger.warn('No skills to generate');
55
- return;
56
- }
57
- tui.info(`Would generate ${skills.length} skills:`);
58
- for (const skillPath of skills) {
59
- console.log(tui.muted(` ${skillPath}`));
60
- }
61
- return;
62
- }
63
-
64
- const created = await generateSkills(schema, output, includeHidden);
65
-
66
- if (created === 0) {
67
- logger.warn('No skills to generate');
68
- return;
69
- }
70
-
71
- tui.success(`Generated ${created} skills to ${baseDir}`);
72
- },
73
- });
74
-
75
- export default generateSubcommand;