@copado/agentia-cli 0.85.0-alpha.0 → 0.87.0-alpha.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.
Files changed (29) hide show
  1. package/README.md +315 -176
  2. package/dist/commands/cicd/notification/configure.d.ts +14 -0
  3. package/dist/commands/cicd/notification/configure.js +62 -0
  4. package/dist/commands/cicd/notification/configure.js.map +1 -0
  5. package/dist/commands/setup/skills/create.d.ts +15 -0
  6. package/dist/commands/setup/skills/create.js +64 -0
  7. package/dist/commands/setup/skills/create.js.map +1 -0
  8. package/dist/commands/setup/skills/update.d.ts +15 -0
  9. package/dist/commands/setup/skills/update.js +64 -0
  10. package/dist/commands/setup/skills/update.js.map +1 -0
  11. package/dist/lib/notifications-configure.d.ts +34 -0
  12. package/dist/lib/notifications-configure.js +101 -0
  13. package/dist/lib/notifications-configure.js.map +1 -0
  14. package/dist/lib/setup-skills.d.ts +67 -0
  15. package/dist/lib/setup-skills.js +251 -0
  16. package/dist/lib/setup-skills.js.map +1 -0
  17. package/oclif.manifest.json +367 -97
  18. package/package.json +11 -1
  19. package/templates/skills/agentia-ai/SKILL.md +34 -0
  20. package/templates/skills/agentia-ai/references/ai-agents.md +70 -0
  21. package/templates/skills/agentia-cicd/SKILL.md +41 -0
  22. package/templates/skills/agentia-cicd/references/data.md +65 -0
  23. package/templates/skills/agentia-cicd/references/environments-and-credentials.md +55 -0
  24. package/templates/skills/agentia-cicd/references/jobs.md +42 -0
  25. package/templates/skills/agentia-cicd/references/pipelines.md +63 -0
  26. package/templates/skills/agentia-cicd/references/promotions.md +58 -0
  27. package/templates/skills/agentia-cicd/references/work.md +84 -0
  28. package/templates/skills/agentia-testing/SKILL.md +34 -0
  29. package/templates/skills/agentia-testing/references/tests.md +65 -0
@@ -0,0 +1,251 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { resolveProjectContext } from './project-setup.js';
6
+ export const SETUP_SKILL_MANAGED_MARKER = '<!-- Agentia managed skill file: agentia setup skills -->';
7
+ export const SETUP_SKILL_PACKS = ['cicd', 'testing', 'ai'];
8
+ export const SETUP_SKILL_TARGETS = ['agents', 'cursor', 'claude'];
9
+ const DEFAULT_TARGET = 'agents';
10
+ const TARGET_DIRS = {
11
+ agents: '.agents/skills',
12
+ claude: '.claude/skills',
13
+ cursor: '.cursor/skills',
14
+ };
15
+ const PACK_SKILL_DIRS = {
16
+ ai: 'agentia-ai',
17
+ cicd: 'agentia-cicd',
18
+ testing: 'agentia-testing',
19
+ };
20
+ const TEMPLATE_MANIFEST = [
21
+ { pack: 'cicd', path: 'agentia-cicd/SKILL.md' },
22
+ { pack: 'cicd', path: 'agentia-cicd/references/work.md' },
23
+ { pack: 'cicd', path: 'agentia-cicd/references/promotions.md' },
24
+ { pack: 'cicd', path: 'agentia-cicd/references/jobs.md' },
25
+ { pack: 'cicd', path: 'agentia-cicd/references/environments-and-credentials.md' },
26
+ { pack: 'cicd', path: 'agentia-cicd/references/pipelines.md' },
27
+ { pack: 'cicd', path: 'agentia-cicd/references/data.md' },
28
+ { pack: 'testing', path: 'agentia-testing/SKILL.md' },
29
+ { pack: 'testing', path: 'agentia-testing/references/tests.md' },
30
+ { pack: 'ai', path: 'agentia-ai/SKILL.md' },
31
+ { pack: 'ai', path: 'agentia-ai/references/ai-agents.md' },
32
+ ];
33
+ let testDeps;
34
+ export function setSetupSkillsDepsForTests(deps) {
35
+ testDeps = deps;
36
+ }
37
+ export function resetSetupSkillsDepsForTests() {
38
+ testDeps = undefined;
39
+ }
40
+ function templatesRoot() {
41
+ return path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../templates/skills');
42
+ }
43
+ function resolveDeps(overrides = {}) {
44
+ const merged = { ...testDeps, ...overrides };
45
+ return {
46
+ existsSync: merged.existsSync ?? existsSync,
47
+ getCurrentBranch: merged.getCurrentBranch,
48
+ getGitRepoRoot: merged.getGitRepoRoot,
49
+ getRemoteUrl: merged.getRemoteUrl,
50
+ isInsideGitWorkTree: merged.isInsideGitWorkTree,
51
+ mkdir: merged.mkdir ?? ((dirPath, options) => mkdir(dirPath, options)),
52
+ prompts: merged.prompts,
53
+ readFile: merged.readFile ?? ((filePath, encoding) => readFile(filePath, encoding)),
54
+ readTemplateFile: merged.readTemplateFile ??
55
+ ((relativePath) => readFile(path.join(templatesRoot(), relativePath), 'utf8')),
56
+ templates: merged.templates,
57
+ writeFile: merged.writeFile ?? ((filePath, contents, encoding) => writeFile(filePath, contents, encoding)),
58
+ };
59
+ }
60
+ export function formatSetupSkillPack(pack) {
61
+ if (pack === 'cicd') {
62
+ return 'CICD';
63
+ }
64
+ if (pack === 'ai') {
65
+ return 'AI';
66
+ }
67
+ return 'Testing';
68
+ }
69
+ export function isSetupSkillPack(value) {
70
+ return SETUP_SKILL_PACKS.includes(value);
71
+ }
72
+ export function isSetupSkillTarget(value) {
73
+ return SETUP_SKILL_TARGETS.includes(value);
74
+ }
75
+ export function resolveSelectedSkillPacks(flags) {
76
+ const selected = SETUP_SKILL_PACKS.filter((pack) => flags[pack] === true);
77
+ return selected.length > 0 ? selected : [...SETUP_SKILL_PACKS];
78
+ }
79
+ export function skillRootDirectory(target) {
80
+ return TARGET_DIRS[target];
81
+ }
82
+ export function skillDirectoryForPack(pack) {
83
+ return PACK_SKILL_DIRS[pack];
84
+ }
85
+ export async function resolveSetupSkillTarget(options) {
86
+ const { noPrompt = false, prompts, target } = options;
87
+ if (target !== undefined) {
88
+ return target;
89
+ }
90
+ if (noPrompt || prompts === undefined) {
91
+ return DEFAULT_TARGET;
92
+ }
93
+ return prompts.select({
94
+ choices: [
95
+ { name: '.agents/skills (portable Agent Skills)', value: 'agents' },
96
+ { name: '.cursor/skills (Cursor project skills)', value: 'cursor' },
97
+ { name: '.claude/skills (Claude compatibility)', value: 'claude' },
98
+ ],
99
+ default: DEFAULT_TARGET,
100
+ message: 'Where should Agentia skills be created?',
101
+ });
102
+ }
103
+ async function loadTemplates(deps) {
104
+ if (deps.templates !== undefined) {
105
+ return deps.templates;
106
+ }
107
+ return Promise.all(TEMPLATE_MANIFEST.map(async (entry) => ({
108
+ content: await deps.readTemplateFile(entry.path),
109
+ pack: entry.pack,
110
+ relativePath: entry.path,
111
+ })));
112
+ }
113
+ function containsManagedMarker(content) {
114
+ return content.includes(SETUP_SKILL_MANAGED_MARKER);
115
+ }
116
+ function summarizeStatus(files) {
117
+ if (files.some((file) => file.status === 'updated')) {
118
+ return 'updated';
119
+ }
120
+ if (files.some((file) => file.status === 'created')) {
121
+ return 'created';
122
+ }
123
+ if (files.some((file) => file.status === 'failed')) {
124
+ return 'failed';
125
+ }
126
+ if (files.some((file) => file.status === 'skipped')) {
127
+ return 'skipped';
128
+ }
129
+ return 'unchanged';
130
+ }
131
+ function relativeTo(cwd, filePath) {
132
+ return path.relative(cwd, filePath) || path.basename(filePath);
133
+ }
134
+ async function planWrites(params) {
135
+ const { deps, force, mode, projectRoot, selectedPacks, skillRoot, templates } = params;
136
+ const selected = new Set(selectedPacks);
137
+ const planned = await Promise.all(templates
138
+ .filter((entry) => selected.has(entry.pack))
139
+ .map(async (template) => {
140
+ const fullPath = path.join(projectRoot, skillRoot, template.relativePath);
141
+ const exists = deps.existsSync(fullPath);
142
+ const skill = template.relativePath.split('/')[0] ?? skillDirectoryForPack(template.pack);
143
+ if (!exists) {
144
+ return {
145
+ planned: {
146
+ content: template.content,
147
+ fullPath,
148
+ pack: template.pack,
149
+ relativePath: template.relativePath,
150
+ skill,
151
+ status: 'created',
152
+ },
153
+ };
154
+ }
155
+ const current = await deps.readFile(fullPath, 'utf8');
156
+ const managed = containsManagedMarker(current);
157
+ if (!managed && !force) {
158
+ return { conflict: fullPath };
159
+ }
160
+ if (mode === 'create' && managed) {
161
+ return {
162
+ planned: {
163
+ content: template.content,
164
+ fullPath,
165
+ pack: template.pack,
166
+ relativePath: template.relativePath,
167
+ skill,
168
+ status: 'unchanged',
169
+ },
170
+ };
171
+ }
172
+ return {
173
+ planned: {
174
+ content: template.content,
175
+ fullPath,
176
+ pack: template.pack,
177
+ relativePath: template.relativePath,
178
+ skill,
179
+ status: 'updated',
180
+ },
181
+ };
182
+ }));
183
+ const conflicts = planned.flatMap((item) => (item.conflict === undefined ? [] : [item.conflict]));
184
+ if (conflicts.length > 0) {
185
+ throw new Error([
186
+ 'Refusing to overwrite existing skill files that are not managed by Agentia.',
187
+ 'Re-run with --force to replace these files:',
188
+ ...conflicts.map((filePath) => `- ${filePath}`),
189
+ ].join('\n'));
190
+ }
191
+ return planned.flatMap((item) => (item.planned === undefined ? [] : [item.planned]));
192
+ }
193
+ export async function runSetupSkills(options, depsOverrides = {}) {
194
+ const deps = resolveDeps(depsOverrides);
195
+ const cwd = options.cwd ?? process.cwd();
196
+ const selectedPacks = options.packs ?? [...SETUP_SKILL_PACKS];
197
+ const target = await resolveSetupSkillTarget({
198
+ noPrompt: options.noPrompt,
199
+ prompts: deps.prompts,
200
+ target: options.target,
201
+ });
202
+ const context = await resolveProjectContext(cwd, deps);
203
+ const skillRoot = skillRootDirectory(target);
204
+ const templates = await loadTemplates(deps);
205
+ const planned = await planWrites({
206
+ deps,
207
+ force: options.force === true,
208
+ mode: options.mode,
209
+ projectRoot: context.projectRoot,
210
+ selectedPacks,
211
+ skillRoot,
212
+ templates,
213
+ });
214
+ await Promise.all(planned
215
+ .filter((item) => item.status !== 'unchanged')
216
+ .map(async (item) => {
217
+ await deps.mkdir(path.dirname(item.fullPath), { recursive: true });
218
+ const content = item.content.endsWith('\n') ? item.content : `${item.content}\n`;
219
+ await deps.writeFile(item.fullPath, content, 'utf8');
220
+ }));
221
+ const skills = selectedPacks.map((pack) => {
222
+ const skill = skillDirectoryForPack(pack);
223
+ const files = planned
224
+ .filter((item) => item.pack === pack)
225
+ .map((item) => ({
226
+ path: relativeTo(cwd, item.fullPath),
227
+ status: item.status,
228
+ }));
229
+ return {
230
+ files,
231
+ pack,
232
+ path: relativeTo(cwd, path.join(context.projectRoot, skillRoot, skill)),
233
+ skill,
234
+ status: summarizeStatus(files),
235
+ };
236
+ });
237
+ options.log?.(`Agentia skills ${options.mode === 'create' ? 'created' : 'updated'} in ${relativeTo(cwd, path.join(context.projectRoot, skillRoot))}.`);
238
+ for (const entry of skills) {
239
+ options.log?.(`${formatSetupSkillPack(entry.pack)} skill ${entry.status}: ${entry.path}`);
240
+ }
241
+ return {
242
+ cwd,
243
+ git: context.git,
244
+ mode: options.mode,
245
+ projectRoot: context.projectRoot,
246
+ skillRoot: relativeTo(cwd, path.join(context.projectRoot, skillRoot)),
247
+ skills,
248
+ target,
249
+ };
250
+ }
251
+ //# sourceMappingURL=setup-skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-skills.js","sourceRoot":"","sources":["../../src/lib/setup-skills.ts"],"names":[],"mappings":"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"}