agentinit 1.25.2 → 1.27.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 (42) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +26 -1
  3. package/dist/cli.js +710 -84
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/agentsMd.d.ts +3 -0
  6. package/dist/commands/agentsMd.d.ts.map +1 -0
  7. package/dist/commands/agentsMd.js +166 -0
  8. package/dist/commands/agentsMd.js.map +1 -0
  9. package/dist/commands/skills.d.ts.map +1 -1
  10. package/dist/commands/skills.js +34 -0
  11. package/dist/commands/skills.js.map +1 -1
  12. package/dist/commands/sync.d.ts +1 -0
  13. package/dist/commands/sync.d.ts.map +1 -1
  14. package/dist/commands/sync.js +11 -0
  15. package/dist/commands/sync.js.map +1 -1
  16. package/dist/core/agentSettings/adapters/codex.d.ts.map +1 -1
  17. package/dist/core/agentSettings/adapters/codex.js +1 -0
  18. package/dist/core/agentSettings/adapters/codex.js.map +1 -1
  19. package/dist/core/agentsMdManager.d.ts +61 -0
  20. package/dist/core/agentsMdManager.d.ts.map +1 -0
  21. package/dist/core/agentsMdManager.js +204 -0
  22. package/dist/core/agentsMdManager.js.map +1 -0
  23. package/dist/core/skillsManager.d.ts +1 -0
  24. package/dist/core/skillsManager.d.ts.map +1 -1
  25. package/dist/core/skillsManager.js +66 -0
  26. package/dist/core/skillsManager.js.map +1 -1
  27. package/dist/core/wellKnownDiscovery.d.ts +22 -0
  28. package/dist/core/wellKnownDiscovery.d.ts.map +1 -0
  29. package/dist/core/wellKnownDiscovery.js +89 -0
  30. package/dist/core/wellKnownDiscovery.js.map +1 -0
  31. package/dist/types/lockfile.d.ts +1 -1
  32. package/dist/types/lockfile.d.ts.map +1 -1
  33. package/dist/types/plugins.d.ts +1 -1
  34. package/dist/types/plugins.d.ts.map +1 -1
  35. package/dist/types/skills.d.ts +4 -1
  36. package/dist/types/skills.d.ts.map +1 -1
  37. package/dist/types/skills.js.map +1 -1
  38. package/dist/utils/http.d.ts +15 -0
  39. package/dist/utils/http.d.ts.map +1 -0
  40. package/dist/utils/http.js +31 -0
  41. package/dist/utils/http.js.map +1 -0
  42. package/package.json +1 -1
@@ -0,0 +1,61 @@
1
+ export interface AgentsMdSection {
2
+ heading: string;
3
+ body: string;
4
+ level: number;
5
+ }
6
+ export interface SetSectionOptions {
7
+ heading: string;
8
+ body: string;
9
+ placement?: 'append' | 'prepend' | `after ${string}`;
10
+ }
11
+ export interface RemoveSectionOptions {
12
+ heading: string;
13
+ }
14
+ export declare class AgentsMdManager {
15
+ private projectPath;
16
+ constructor(projectPath: string);
17
+ private getAgentsMdPath;
18
+ private getClaudeMdPath;
19
+ /**
20
+ * Read AGENTS.md content, or null if it doesn't exist.
21
+ */
22
+ read(): Promise<string | null>;
23
+ /**
24
+ * Read per-agent variant (CLAUDE.md, .cursorrules, etc.), or null.
25
+ */
26
+ readAgentFile(agentFileName: string): Promise<string | null>;
27
+ /**
28
+ * Parse sections from markdown content.
29
+ * Returns array of sections with heading level, heading text, and body.
30
+ */
31
+ parseSections(content: string): AgentsMdSection[];
32
+ /**
33
+ * Find a section by heading (case-insensitive).
34
+ */
35
+ findSection(sections: AgentsMdSection[], heading: string): AgentsMdSection | undefined;
36
+ /**
37
+ * Set (upsert) a section in AGENTS.md.
38
+ * If section exists, replaces body. If not, appends (or prepends).
39
+ */
40
+ setSection(options: SetSectionOptions): Promise<void>;
41
+ /**
42
+ * Remove a section from AGENTS.md by heading.
43
+ * Returns true if section was found and removed.
44
+ */
45
+ removeSection(options: RemoveSectionOptions): Promise<boolean>;
46
+ /**
47
+ * Create a symlink CLAUDE.md -> AGENTS.md.
48
+ * Refuses to overwrite a real CLAUDE.md because it may contain user-authored rules.
49
+ */
50
+ symlinkClaude(): Promise<void>;
51
+ private parseSectionRanges;
52
+ private findSectionRange;
53
+ private normalizeHeadingInput;
54
+ private normalizeHeading;
55
+ private parsePlacement;
56
+ private renderSection;
57
+ private insertSection;
58
+ private ensureTrailingNewline;
59
+ private isMissingPathError;
60
+ }
61
+ //# sourceMappingURL=agentsMdManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentsMdManager.d.ts","sourceRoot":"","sources":["../../src/core/agentsMdManager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAI/B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIpC;;OAEG;IACG,aAAa,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIlE;;;OAGG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE;IAQjD;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAKtF;;;OAGG;IACG,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC3D;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBpE;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAyBpC,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,gBAAgB;IAQxB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,kBAAkB;CAM3B"}
@@ -0,0 +1,204 @@
1
+ import { promises as fs } from 'fs';
2
+ import { resolve } from 'path';
3
+ import { fileExists, readFileIfExists, writeFile, createRelativeSymlink } from '../utils/fs.js';
4
+ export class AgentsMdManager {
5
+ projectPath;
6
+ constructor(projectPath) {
7
+ this.projectPath = projectPath;
8
+ }
9
+ getAgentsMdPath() {
10
+ return resolve(this.projectPath, 'AGENTS.md');
11
+ }
12
+ getClaudeMdPath() {
13
+ return resolve(this.projectPath, 'CLAUDE.md');
14
+ }
15
+ /**
16
+ * Read AGENTS.md content, or null if it doesn't exist.
17
+ */
18
+ async read() {
19
+ return readFileIfExists(this.getAgentsMdPath());
20
+ }
21
+ /**
22
+ * Read per-agent variant (CLAUDE.md, .cursorrules, etc.), or null.
23
+ */
24
+ async readAgentFile(agentFileName) {
25
+ return readFileIfExists(resolve(this.projectPath, agentFileName));
26
+ }
27
+ /**
28
+ * Parse sections from markdown content.
29
+ * Returns array of sections with heading level, heading text, and body.
30
+ */
31
+ parseSections(content) {
32
+ return this.parseSectionRanges(content).map(({ heading, body, level }) => ({
33
+ heading,
34
+ body,
35
+ level,
36
+ }));
37
+ }
38
+ /**
39
+ * Find a section by heading (case-insensitive).
40
+ */
41
+ findSection(sections, heading) {
42
+ const normalized = heading.trim().toLowerCase();
43
+ return sections.find(s => s.heading.trim().toLowerCase() === normalized);
44
+ }
45
+ /**
46
+ * Set (upsert) a section in AGENTS.md.
47
+ * If section exists, replaces body. If not, appends (or prepends).
48
+ */
49
+ async setSection(options) {
50
+ const agentsMdPath = this.getAgentsMdPath();
51
+ const heading = this.normalizeHeadingInput(options.heading);
52
+ const content = ((await readFileIfExists(agentsMdPath)) || '').replace(/\r\n/g, '\n');
53
+ const sections = this.parseSectionRanges(content);
54
+ const placement = this.parsePlacement(options.placement);
55
+ const existing = this.findSectionRange(sections, heading);
56
+ let newContent;
57
+ if (existing) {
58
+ newContent = `${content.slice(0, existing.start)}${this.renderSection(existing.level, existing.heading, options.body)}${content.slice(existing.end)}`;
59
+ }
60
+ else {
61
+ const newSection = this.renderSection(2, heading, options.body);
62
+ if (placement.type === 'after') {
63
+ const after = this.findSectionRange(sections, placement.heading);
64
+ newContent = after
65
+ ? this.insertSection(content, after.end, newSection)
66
+ : this.insertSection(content, content.length, newSection);
67
+ }
68
+ else if (placement.type === 'prepend') {
69
+ newContent = this.insertSection(content, 0, newSection);
70
+ }
71
+ else {
72
+ newContent = this.insertSection(content, content.length, newSection);
73
+ }
74
+ }
75
+ await writeFile(agentsMdPath, this.ensureTrailingNewline(newContent));
76
+ }
77
+ /**
78
+ * Remove a section from AGENTS.md by heading.
79
+ * Returns true if section was found and removed.
80
+ */
81
+ async removeSection(options) {
82
+ const agentsMdPath = this.getAgentsMdPath();
83
+ const content = await readFileIfExists(agentsMdPath);
84
+ if (!content)
85
+ return false;
86
+ const normalizedContent = content.replace(/\r\n/g, '\n');
87
+ const section = this.findSectionRange(this.parseSectionRanges(normalizedContent), this.normalizeHeadingInput(options.heading));
88
+ if (!section)
89
+ return false;
90
+ const before = normalizedContent.slice(0, section.start).trimEnd();
91
+ const after = normalizedContent.slice(section.end).trimStart();
92
+ const newContent = [before, after].filter(Boolean).join('\n');
93
+ await writeFile(agentsMdPath, this.ensureTrailingNewline(newContent));
94
+ return true;
95
+ }
96
+ /**
97
+ * Create a symlink CLAUDE.md -> AGENTS.md.
98
+ * Refuses to overwrite a real CLAUDE.md because it may contain user-authored rules.
99
+ */
100
+ async symlinkClaude() {
101
+ const agentsMdPath = this.getAgentsMdPath();
102
+ const claudeMdPath = this.getClaudeMdPath();
103
+ if (!(await fileExists(agentsMdPath))) {
104
+ throw new Error('AGENTS.md does not exist. Create AGENTS.md first.');
105
+ }
106
+ try {
107
+ const stats = await fs.lstat(claudeMdPath);
108
+ if (!stats.isSymbolicLink()) {
109
+ throw new Error('CLAUDE.md already exists and is not a symlink. Move or remove it before creating the alias.');
110
+ }
111
+ }
112
+ catch (error) {
113
+ if (!this.isMissingPathError(error)) {
114
+ throw error;
115
+ }
116
+ }
117
+ const created = await createRelativeSymlink(agentsMdPath, claudeMdPath);
118
+ if (!created) {
119
+ throw new Error('Failed to create symlink from CLAUDE.md to AGENTS.md');
120
+ }
121
+ }
122
+ parseSectionRanges(content) {
123
+ const sections = [];
124
+ const headingPattern = /^(#{1,6})[ \t]+(.+?)\s*$/gm;
125
+ let match;
126
+ while ((match = headingPattern.exec(content)) !== null) {
127
+ const lineEndIndex = content.indexOf('\n', match.index);
128
+ sections.push({
129
+ heading: match[2].trim(),
130
+ level: match[1].length,
131
+ start: match.index,
132
+ headingEnd: lineEndIndex === -1 ? content.length : lineEndIndex + 1,
133
+ });
134
+ }
135
+ return sections.map((section, index) => {
136
+ const nextPeerOrParent = sections.slice(index + 1).find(next => next.level <= section.level);
137
+ const end = nextPeerOrParent?.start ?? content.length;
138
+ return {
139
+ ...section,
140
+ end,
141
+ body: content.slice(section.headingEnd, end).trimEnd(),
142
+ };
143
+ });
144
+ }
145
+ findSectionRange(sections, heading) {
146
+ const normalized = this.normalizeHeading(heading);
147
+ return sections.find(s => this.normalizeHeading(s.heading) === normalized);
148
+ }
149
+ normalizeHeadingInput(heading) {
150
+ const normalized = heading.trim();
151
+ if (!normalized || normalized.includes('\n') || normalized.includes('\r')) {
152
+ throw new Error('Section heading must be a single non-empty line');
153
+ }
154
+ return normalized;
155
+ }
156
+ normalizeHeading(heading) {
157
+ return heading.trim().toLowerCase();
158
+ }
159
+ parsePlacement(placement) {
160
+ if (!placement || placement === 'append') {
161
+ return { type: 'append' };
162
+ }
163
+ if (placement === 'prepend') {
164
+ return { type: 'prepend' };
165
+ }
166
+ if (placement.startsWith('after ')) {
167
+ return { type: 'after', heading: this.normalizeHeadingInput(placement.slice(6)) };
168
+ }
169
+ throw new Error('Placement must be "append", "prepend", or "after <heading>"');
170
+ }
171
+ renderSection(level, heading, body) {
172
+ const normalizedBody = body.replace(/\r\n/g, '\n').trimEnd();
173
+ return normalizedBody
174
+ ? `${'#'.repeat(level)} ${heading}\n${normalizedBody}\n`
175
+ : `${'#'.repeat(level)} ${heading}\n`;
176
+ }
177
+ insertSection(content, index, renderedSection) {
178
+ const before = content.slice(0, index).trimEnd();
179
+ const after = content.slice(index).trimStart();
180
+ if (!before && !after) {
181
+ return renderedSection;
182
+ }
183
+ if (!before) {
184
+ return `${renderedSection}\n${after}`;
185
+ }
186
+ if (!after) {
187
+ return `${before}\n\n${renderedSection}`;
188
+ }
189
+ return `${before}\n\n${renderedSection}\n${after}`;
190
+ }
191
+ ensureTrailingNewline(content) {
192
+ if (!content.trim()) {
193
+ return '';
194
+ }
195
+ return content.endsWith('\n') ? content : `${content}\n`;
196
+ }
197
+ isMissingPathError(error) {
198
+ return !!error
199
+ && typeof error === 'object'
200
+ && 'code' in error
201
+ && error.code === 'ENOENT';
202
+ }
203
+ }
204
+ //# sourceMappingURL=agentsMdManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentsMdManager.js","sourceRoot":"","sources":["../../src/core/agentsMdManager.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,7 @@ export declare class SkillsManager {
44
44
  private cleanupTempDir;
45
45
  private resolveDiscoveryRoot;
46
46
  private loadDiscoveredSkillsContext;
47
+ private loadWellKnownSkillsContext;
47
48
  discoverFromSource(source: string, projectPath: string, options?: {
48
49
  from?: string;
49
50
  pluginName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"skillsManager.d.ts","sourceRoot":"","sources":["../../src/core/skillsManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skillsManager.d.ts","sourceRoot":"","sources":["../../src/core/skillsManager.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,10 @@ export class SkillsManager {
51
51
  if (httpSource) {
52
52
  return httpSource;
53
53
  }
54
+ // Well-known endpoint or direct URL (not a git host)
55
+ if (source.startsWith('http://') || source.startsWith('https://')) {
56
+ return { type: 'well-known', url: source };
57
+ }
54
58
  // Full git URL
55
59
  const sshSource = this.parseSshRepositorySource(source);
56
60
  if (sshSource) {
@@ -538,6 +542,20 @@ export class SkillsManager {
538
542
  cleanup,
539
543
  };
540
544
  }
545
+ if (resolved.type === 'well-known') {
546
+ if (!resolved.url) {
547
+ throw new Error(`Invalid well-known source: ${source}`);
548
+ }
549
+ const discovered = await this.loadWellKnownSkillsContext(resolved.url, projectPath);
550
+ return {
551
+ skills: discovered.skills,
552
+ warnings: discovered.warnings,
553
+ cleanup: async () => {
554
+ await discovered.cleanup();
555
+ await cleanup();
556
+ },
557
+ };
558
+ }
541
559
  let repoPath;
542
560
  if (resolved.type === 'github' || resolved.type === 'gitlab' || resolved.type === 'bitbucket') {
543
561
  if (!resolved.url) {
@@ -579,6 +597,54 @@ export class SkillsManager {
579
597
  throw error;
580
598
  }
581
599
  }
600
+ async loadWellKnownSkillsContext(source, projectPath) {
601
+ const { WellKnownDiscovery } = await import('./wellKnownDiscovery.js');
602
+ const discovery = new WellKnownDiscovery();
603
+ const indexSkills = await discovery.discover(source);
604
+ const contexts = [];
605
+ const skills = [];
606
+ const warnings = [];
607
+ const cleanup = async () => {
608
+ await Promise.all(contexts.map(context => context.cleanup().catch(() => { })));
609
+ contexts.length = 0;
610
+ };
611
+ try {
612
+ for (const indexSkill of indexSkills) {
613
+ const nestedSource = this.resolveSource(indexSkill.source);
614
+ if (nestedSource.type === 'well-known') {
615
+ warnings.push(`Skipped "${indexSkill.name}": well-known indexes cannot reference another well-known index`);
616
+ continue;
617
+ }
618
+ const context = await this.loadDiscoveredSkillsContext(indexSkill.source, projectPath);
619
+ contexts.push(context);
620
+ const exactMatches = context.skills.filter(skill => skill.name.trim().toLowerCase() === indexSkill.name.trim().toLowerCase());
621
+ const selectedSkills = exactMatches.length > 0
622
+ ? exactMatches
623
+ : context.skills.length === 1
624
+ ? context.skills
625
+ : [];
626
+ if (selectedSkills.length === 0) {
627
+ warnings.push(`Skipped "${indexSkill.name}": no matching skill found at ${indexSkill.source}`);
628
+ continue;
629
+ }
630
+ for (const skill of selectedSkills) {
631
+ skills.push({
632
+ ...skill,
633
+ name: indexSkill.name || skill.name,
634
+ description: indexSkill.description || skill.description,
635
+ source: 'well-known',
636
+ ...(indexSkill.author ? { author: indexSkill.author } : {}),
637
+ ...(indexSkill.version ? { version: indexSkill.version } : {}),
638
+ });
639
+ }
640
+ }
641
+ return { skills, warnings, cleanup };
642
+ }
643
+ catch (error) {
644
+ await cleanup();
645
+ throw error;
646
+ }
647
+ }
582
648
  async discoverFromSource(source, projectPath, options = {}) {
583
649
  const context = await this.loadDiscoveredSkillsContext(source, projectPath, options);
584
650
  try {