agentloom 0.1.0 → 0.1.1

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 (51) hide show
  1. package/README.md +91 -72
  2. package/bin/cli.mjs +3 -2
  3. package/dist/cli.d.ts +1 -0
  4. package/dist/cli.js +149 -17
  5. package/dist/commands/add.d.ts +7 -0
  6. package/dist/commands/add.js +122 -31
  7. package/dist/commands/agent.d.ts +2 -0
  8. package/dist/commands/agent.js +85 -0
  9. package/dist/commands/command.d.ts +2 -0
  10. package/dist/commands/command.js +98 -0
  11. package/dist/commands/delete.d.ts +9 -0
  12. package/dist/commands/delete.js +444 -0
  13. package/dist/commands/entity-utils.d.ts +13 -0
  14. package/dist/commands/entity-utils.js +58 -0
  15. package/dist/commands/find.d.ts +21 -0
  16. package/dist/commands/find.js +944 -0
  17. package/dist/commands/mcp.js +133 -55
  18. package/dist/commands/skills.d.ts +2 -1
  19. package/dist/commands/skills.js +105 -9
  20. package/dist/commands/sync.d.ts +6 -0
  21. package/dist/commands/sync.js +12 -10
  22. package/dist/commands/update.d.ts +7 -0
  23. package/dist/commands/update.js +286 -21
  24. package/dist/core/argv.d.ts +2 -1
  25. package/dist/core/argv.js +42 -2
  26. package/dist/core/commands.d.ts +13 -0
  27. package/dist/core/commands.js +65 -0
  28. package/dist/core/copy.d.ts +6 -0
  29. package/dist/core/copy.js +126 -65
  30. package/dist/core/importer.d.ts +28 -1
  31. package/dist/core/importer.js +1104 -41
  32. package/dist/core/lockfile.js +86 -3
  33. package/dist/core/manage-agents-bootstrap.d.ts +10 -0
  34. package/dist/core/manage-agents-bootstrap.js +40 -0
  35. package/dist/core/manifest.js +7 -1
  36. package/dist/core/router.d.ts +16 -0
  37. package/dist/core/router.js +66 -0
  38. package/dist/core/scope.d.ts +1 -1
  39. package/dist/core/scope.js +12 -8
  40. package/dist/core/settings.d.ts +4 -3
  41. package/dist/core/settings.js +10 -8
  42. package/dist/core/skills.d.ts +23 -0
  43. package/dist/core/skills.js +328 -0
  44. package/dist/core/sources.d.ts +3 -1
  45. package/dist/core/sources.js +31 -1
  46. package/dist/core/telemetry.d.ts +26 -0
  47. package/dist/core/telemetry.js +124 -0
  48. package/dist/sync/index.d.ts +7 -1
  49. package/dist/sync/index.js +395 -131
  50. package/dist/types.d.ts +16 -1
  51. package/package.json +5 -4
package/dist/core/copy.js CHANGED
@@ -1,17 +1,26 @@
1
1
  const PROVIDERS_CSV = "cursor,claude,codex,opencode,gemini,copilot";
2
2
  export function getRootHelpText() {
3
- return `agentloom - unified agent and MCP sync CLI
3
+ return `agentloom - unified canonical agent package manager
4
4
 
5
5
  Usage:
6
- agentloom <command> [options]
6
+ agentloom <aggregate-command> [options]
7
+ agentloom <entity> <verb> [options]
7
8
 
8
- Commands:
9
- skills ... Pass through to "npx skills ..." (vercel-labs/skills)
10
- add <source> Import agents and MCP from a repo source
11
- update Refresh lockfile-managed imports
9
+ Aggregate commands:
10
+ add <source> Import agents/commands/mcp/skills from a source
11
+ find <query> Search remote + local entities
12
+ update [source] Refresh lockfile-managed imports
12
13
  sync Generate provider-specific outputs
13
- mcp <add|list|delete> Manage canonical MCP servers
14
- help Show this help text
14
+ delete <source|name> Delete imported entities by source or name
15
+
16
+ Entity commands:
17
+ agent <add|list|delete|find|update|sync>
18
+ command <add|list|delete|find|update|sync>
19
+ mcp <add|list|delete|find|update|sync>
20
+ skill <add|list|delete|find|update|sync>
21
+
22
+ MCP manual server commands:
23
+ mcp server <add|list|delete>
15
24
 
16
25
  Common options:
17
26
  --local Use .agents from current workspace
@@ -20,18 +29,46 @@ Common options:
20
29
  --no-sync Skip post-change sync (mutating commands)
21
30
  --providers <csv> Limit sync providers (${PROVIDERS_CSV})
22
31
  --dry-run Print planned sync changes without writing files
32
+ --agents <csv> Agent selectors for add/delete
33
+ --commands <csv> Command selectors for add/delete
34
+ --mcps <csv> MCP selectors for add/delete
35
+ --skills <csv> Skill selectors for add/delete
36
+ --selection-mode <mode> Add mode: all (default) or custom
37
+ --source <value> Explicit source filter for update/delete
38
+ --name <value> Explicit name filter for delete
39
+ --entity <type> Delete disambiguation for aggregate delete
23
40
 
24
41
  Examples:
25
- agentloom add vercel-labs/skills
26
- agentloom add /repo --subdir packages/agents
27
- agentloom update --local
28
- agentloom sync --providers codex,claude,cursor
29
- agentloom mcp add browser-tools --command npx --arg browser-tools-mcp
30
- agentloom skills add vercel-labs/skills
42
+ agentloom add farnoodma/agents
43
+ agentloom agent add farnoodma/agents --agents issue-creator
44
+ agentloom command add farnoodma/agents --commands review
45
+ agentloom mcp add farnoodma/agents --mcps browser
46
+ agentloom skill add farnoodma/agents --skills pr-review
47
+ agentloom update
48
+ agentloom command update farnoodma/agents
49
+ agentloom delete farnoodma/agents
50
+ agentloom mcp server add browser --command npx --arg browser-tools-mcp
51
+ `;
52
+ }
53
+ export function getFindHelpText() {
54
+ return `Search remote repositories and local .agents entities.
55
+
56
+ Usage:
57
+ agentloom find <query>
58
+ agentloom <agent|command|mcp|skill> find <query>
59
+
60
+ Examples:
61
+ agentloom find reviewer
62
+ agentloom command find release
31
63
  `;
32
64
  }
33
65
  export function getAddHelpText() {
34
- return `Import canonical agents and MCP from a source repository.
66
+ return `Import canonical entities from a source repository.
67
+
68
+ Source discovery:
69
+ agents: .agents/agents -> agents
70
+ commands: .agents/commands -> commands -> prompts
71
+ skills: .agents/skills -> skills -> root SKILL.md
35
72
 
36
73
  Usage:
37
74
  agentloom add <source> [options]
@@ -39,116 +76,133 @@ Usage:
39
76
  Options:
40
77
  --ref <ref> Git ref (branch/tag/commit) for remote sources
41
78
  --subdir <path> Subdirectory inside source repo
42
- --rename <name> Rename imported agent (single-agent import only)
43
- --local | --global Choose destination scope
44
- --yes Skip conflict prompts (overwrite/merge defaults)
79
+ --agents <name> Import selected agents (repeatable/csv)
80
+ --commands <name> Import selected commands (repeatable/csv)
81
+ --mcps <name> Import selected MCP servers (repeatable/csv)
82
+ --skills <name> Import selected skills (repeatable/csv)
83
+ --selection-mode <mode> all|sync-all (include future items) or custom (pin selection)
84
+ --rename <name> Rename imported item for single-item add flows
85
+ --local | --global Choose destination scope (interactive prompts when omitted)
86
+ --yes Skip conflict prompts
45
87
  --no-sync Do not run sync after import
46
88
  --providers <csv> Providers for post-import sync (${PROVIDERS_CSV})
47
89
  --dry-run Show sync plan without writing provider files
48
90
 
49
91
  Example:
50
- agentloom add vercel-labs/skills --subdir skills --providers codex,claude
92
+ agentloom add farnoodma/agents --providers codex,claude
51
93
  `;
52
94
  }
53
95
  export function getUpdateHelpText() {
54
96
  return `Refresh lockfile-managed sources and re-import updated revisions.
55
97
 
56
98
  Usage:
57
- agentloom update [options]
99
+ agentloom update [source] [options]
100
+ agentloom <agent|command|mcp|skill> update [source] [options]
58
101
 
59
102
  Options:
60
- --local | --global Choose lockfile scope
103
+ --source <value> Explicit source filter
104
+ --local | --global Choose lockfile scope (interactive prompts when omitted)
61
105
  --yes Skip conflict prompts during re-import
62
106
  --no-sync Do not run sync after updates
63
107
  --providers <csv> Providers for post-update sync (${PROVIDERS_CSV})
64
108
  --dry-run Show sync plan without writing provider files
65
109
 
66
110
  Example:
67
- agentloom update --local --providers codex,cursor
111
+ agentloom update farnoodma/agents --providers codex,cursor
68
112
  `;
69
113
  }
70
114
  export function getSyncHelpText() {
71
- return `Generate provider-specific agent and MCP files from canonical .agents data.
115
+ return `Generate provider-specific files from canonical .agents data.
72
116
 
73
117
  Usage:
74
118
  agentloom sync [options]
119
+ agentloom <agent|command|mcp|skill> sync [options]
75
120
 
76
121
  Options:
77
- --local | --global Choose canonical scope
122
+ --local | --global Choose canonical scope (interactive prompts when omitted)
78
123
  --providers <csv> Limit providers (${PROVIDERS_CSV})
79
124
  --yes Auto-delete stale generated files
80
125
  --dry-run Show file changes without writing
126
+ `;
127
+ }
128
+ export function getCommandHelpText() {
129
+ return `Manage canonical command entities.
81
130
 
82
- Example:
83
- agentloom sync --local --providers codex,claude,cursor --dry-run
131
+ Usage:
132
+ agentloom command <add|list|delete|find|update|sync> [options]
84
133
  `;
85
134
  }
86
- export function getMcpHelpText() {
87
- return `Manage canonical MCP servers in .agents/mcp.json.
135
+ export function getCommandAddHelpText() {
136
+ return `Import canonical command files from a source repository.
137
+
138
+ Usage:
139
+ agentloom command add <source> [options]
140
+
141
+ Options:
142
+ --commands <name> Repeatable command selector (name or filename)
143
+ --ref <ref> Git ref (branch/tag/commit) for remote sources
144
+ --subdir <path> Subdirectory inside source repo
145
+ --rename <name> Rename imported command (single-command import only)
146
+ `;
147
+ }
148
+ export function getCommandListHelpText() {
149
+ return `List canonical command files.
88
150
 
89
151
  Usage:
90
- agentloom mcp <command> [options]
152
+ agentloom command list [--json] [--local|--global]
153
+ `;
154
+ }
155
+ export function getCommandDeleteHelpText() {
156
+ return `Delete command imports by source or name.
91
157
 
92
- Commands:
93
- add <name> Add or update an MCP server
94
- list List configured MCP servers
95
- delete <name> Remove an MCP server
158
+ Usage:
159
+ agentloom command delete <source|name> [options]
160
+ `;
161
+ }
162
+ export function getMcpHelpText() {
163
+ return `Manage MCP entities imported from sources.
96
164
 
97
- Shared options:
98
- --local | --global Choose canonical scope
99
- --no-sync Skip post-change sync (add/delete only)
100
- --providers <csv> Providers for post-change sync (${PROVIDERS_CSV})
165
+ Usage:
166
+ agentloom mcp <add|list|delete|find|update|sync> [options]
167
+ agentloom mcp server <add|list|delete> [options]
168
+ `;
169
+ }
170
+ export function getMcpServerHelpText() {
171
+ return `Manage manual MCP servers in canonical .agents/mcp.json.
172
+
173
+ Usage:
174
+ agentloom mcp server <add|list|delete> [options]
101
175
 
102
176
  Examples:
103
- agentloom mcp add browser --command npx --arg browser-tools-mcp
104
- agentloom mcp list --json
105
- agentloom mcp delete browser
177
+ agentloom mcp server add browser --command npx --arg browser-tools-mcp
178
+ agentloom mcp server list --json
179
+ agentloom mcp server delete browser
106
180
  `;
107
181
  }
108
182
  export function getMcpAddHelpText() {
109
- return `Add or update an MCP server in canonical .agents/mcp.json.
183
+ return `Add or update a manual MCP server in canonical .agents/mcp.json.
110
184
 
111
185
  Usage:
112
- agentloom mcp add <name> (--url <url> | --command <cmd>) [options]
186
+ agentloom mcp server add <name> (--url <url> | --command <cmd>) [options]
113
187
 
114
188
  Options:
115
189
  --arg <value> Repeatable command argument
116
190
  --env KEY=VALUE Repeatable environment variable
117
191
  --providers <csv> Provider-specific server assignment (${PROVIDERS_CSV})
118
- --local | --global Choose canonical scope
119
- --no-sync Skip post-change sync
120
-
121
- Examples:
122
- agentloom mcp add browser --command npx --arg browser-tools-mcp
123
- agentloom mcp add docs --url https://example.com/mcp --providers codex,claude
124
192
  `;
125
193
  }
126
194
  export function getMcpListHelpText() {
127
195
  return `List canonical MCP servers.
128
196
 
129
197
  Usage:
130
- agentloom mcp list [options]
131
-
132
- Options:
133
- --json Print raw JSON
134
- --local | --global Choose canonical scope
135
-
136
- Example:
137
- agentloom mcp list --json
198
+ agentloom mcp server list [--json] [--local|--global]
138
199
  `;
139
200
  }
140
201
  export function getMcpDeleteHelpText() {
141
- return `Delete an MCP server from canonical .agents/mcp.json.
202
+ return `Delete a manual MCP server from canonical .agents/mcp.json.
142
203
 
143
204
  Usage:
144
- agentloom mcp delete <name> [options]
145
-
146
- Options:
147
- --local | --global Choose canonical scope
148
- --no-sync Skip post-change sync
149
-
150
- Example:
151
- agentloom mcp delete browser
205
+ agentloom mcp server delete <name> [options]
152
206
  `;
153
207
  }
154
208
  export function formatUsageError(input) {
@@ -159,6 +213,13 @@ export function formatUsageError(input) {
159
213
  return lines.join("\n");
160
214
  }
161
215
  export function formatUnknownCommandError(command) {
216
+ if (command === "skills") {
217
+ return formatUsageError({
218
+ issue: 'Command "skills" was removed.',
219
+ usage: "agentloom skill <add|list|delete|find|update|sync> [options]",
220
+ example: "agentloom skill find typescript",
221
+ });
222
+ }
162
223
  return formatUsageError({
163
224
  issue: `Unknown command "${command}".`,
164
225
  usage: "agentloom --help",
@@ -1,4 +1,4 @@
1
- import type { ScopePaths } from "../types.js";
1
+ import type { Provider, SelectionMode, ScopePaths } from "../types.js";
2
2
  export declare class NonInteractiveConflictError extends Error {
3
3
  constructor(message: string);
4
4
  }
@@ -7,15 +7,42 @@ export interface ImportOptions {
7
7
  ref?: string;
8
8
  subdir?: string;
9
9
  rename?: string;
10
+ agents?: string[];
11
+ promptForAgentSelection?: boolean;
10
12
  yes?: boolean;
11
13
  nonInteractive?: boolean;
12
14
  paths: ScopePaths;
15
+ importAgents?: boolean;
16
+ requireAgents?: boolean;
17
+ importCommands?: boolean;
18
+ requireCommands?: boolean;
19
+ importMcp?: boolean;
20
+ requireMcp?: boolean;
21
+ mcpSelectors?: string[];
22
+ promptForMcp?: boolean;
23
+ importSkills?: boolean;
24
+ requireSkills?: boolean;
25
+ skillSelectors?: string[];
26
+ promptForSkills?: boolean;
27
+ skillsProviders?: Provider[];
28
+ resolveSkillsProviders?: () => Promise<Provider[] | undefined>;
29
+ skillRenameMap?: Record<string, string>;
30
+ selectionMode?: SelectionMode;
31
+ commandSelectors?: string[];
32
+ commandRenameMap?: Record<string, string>;
33
+ promptForCommands?: boolean;
13
34
  }
14
35
  export interface ImportSummary {
15
36
  source: string;
16
37
  sourceType: "local" | "github" | "git";
17
38
  importedAgents: string[];
39
+ importedCommands: string[];
18
40
  importedMcpServers: string[];
41
+ importedSkills: string[];
42
+ telemetrySkills?: Array<{
43
+ name: string;
44
+ filePath: string;
45
+ }>;
19
46
  resolvedCommit: string;
20
47
  }
21
48
  export declare function importSource(options: ImportOptions): Promise<ImportSummary>;