@honeybee-ai/waggle-cli 1.0.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 (121) hide show
  1. package/README.md +77 -0
  2. package/dist/cli.d.ts +1 -0
  3. package/dist/cli.js +4307 -0
  4. package/dist/cli.js.map +7 -0
  5. package/dist/commands/auth.d.ts +1 -0
  6. package/dist/commands/auth.js +155 -0
  7. package/dist/commands/auth.js.map +1 -0
  8. package/dist/commands/claim.d.ts +1 -0
  9. package/dist/commands/claim.js +36 -0
  10. package/dist/commands/claim.js.map +1 -0
  11. package/dist/commands/completion.d.ts +1 -0
  12. package/dist/commands/completion.js +191 -0
  13. package/dist/commands/completion.js.map +1 -0
  14. package/dist/commands/config-cmd.d.ts +1 -0
  15. package/dist/commands/config-cmd.js +61 -0
  16. package/dist/commands/config-cmd.js.map +1 -0
  17. package/dist/commands/events.d.ts +1 -0
  18. package/dist/commands/events.js +129 -0
  19. package/dist/commands/events.js.map +1 -0
  20. package/dist/commands/halt.d.ts +1 -0
  21. package/dist/commands/halt.js +25 -0
  22. package/dist/commands/halt.js.map +1 -0
  23. package/dist/commands/help-cmd.d.ts +1 -0
  24. package/dist/commands/help-cmd.js +125 -0
  25. package/dist/commands/help-cmd.js.map +1 -0
  26. package/dist/commands/hooks-cmd.d.ts +1 -0
  27. package/dist/commands/hooks-cmd.js +83 -0
  28. package/dist/commands/hooks-cmd.js.map +1 -0
  29. package/dist/commands/init.d.ts +1 -0
  30. package/dist/commands/init.js +78 -0
  31. package/dist/commands/init.js.map +1 -0
  32. package/dist/commands/integrations.d.ts +1 -0
  33. package/dist/commands/integrations.js +375 -0
  34. package/dist/commands/integrations.js.map +1 -0
  35. package/dist/commands/join.d.ts +1 -0
  36. package/dist/commands/join.js +81 -0
  37. package/dist/commands/join.js.map +1 -0
  38. package/dist/commands/leave.d.ts +1 -0
  39. package/dist/commands/leave.js +36 -0
  40. package/dist/commands/leave.js.map +1 -0
  41. package/dist/commands/marketplace.d.ts +1 -0
  42. package/dist/commands/marketplace.js +291 -0
  43. package/dist/commands/marketplace.js.map +1 -0
  44. package/dist/commands/msg.d.ts +1 -0
  45. package/dist/commands/msg.js +105 -0
  46. package/dist/commands/msg.js.map +1 -0
  47. package/dist/commands/namespace.d.ts +1 -0
  48. package/dist/commands/namespace.js +95 -0
  49. package/dist/commands/namespace.js.map +1 -0
  50. package/dist/commands/pause.d.ts +2 -0
  51. package/dist/commands/pause.js +45 -0
  52. package/dist/commands/pause.js.map +1 -0
  53. package/dist/commands/protocol.d.ts +1 -0
  54. package/dist/commands/protocol.js +341 -0
  55. package/dist/commands/protocol.js.map +1 -0
  56. package/dist/commands/release.d.ts +1 -0
  57. package/dist/commands/release.js +29 -0
  58. package/dist/commands/release.js.map +1 -0
  59. package/dist/commands/scan.d.ts +1 -0
  60. package/dist/commands/scan.js +157 -0
  61. package/dist/commands/scan.js.map +1 -0
  62. package/dist/commands/serve.d.ts +1 -0
  63. package/dist/commands/serve.js +78 -0
  64. package/dist/commands/serve.js.map +1 -0
  65. package/dist/commands/state.d.ts +1 -0
  66. package/dist/commands/state.js +119 -0
  67. package/dist/commands/state.js.map +1 -0
  68. package/dist/commands/status.d.ts +1 -0
  69. package/dist/commands/status.js +78 -0
  70. package/dist/commands/status.js.map +1 -0
  71. package/dist/commands/swarm.d.ts +1 -0
  72. package/dist/commands/swarm.js +404 -0
  73. package/dist/commands/swarm.js.map +1 -0
  74. package/dist/commands/team.d.ts +1 -0
  75. package/dist/commands/team.js +35 -0
  76. package/dist/commands/team.js.map +1 -0
  77. package/dist/commands/upgrade.d.ts +1 -0
  78. package/dist/commands/upgrade.js +99 -0
  79. package/dist/commands/upgrade.js.map +1 -0
  80. package/dist/hook.d.ts +1 -0
  81. package/dist/hook.js +531 -0
  82. package/dist/hook.js.map +7 -0
  83. package/dist/hooks/post-tool-use.d.ts +2 -0
  84. package/dist/hooks/post-tool-use.js +16 -0
  85. package/dist/hooks/post-tool-use.js.map +1 -0
  86. package/dist/hooks/pre-tool-use.d.ts +2 -0
  87. package/dist/hooks/pre-tool-use.js +49 -0
  88. package/dist/hooks/pre-tool-use.js.map +1 -0
  89. package/dist/hooks/prompt-submit.d.ts +2 -0
  90. package/dist/hooks/prompt-submit.js +64 -0
  91. package/dist/hooks/prompt-submit.js.map +1 -0
  92. package/dist/hooks/session-start.d.ts +2 -0
  93. package/dist/hooks/session-start.js +101 -0
  94. package/dist/hooks/session-start.js.map +1 -0
  95. package/dist/hooks/stop.d.ts +2 -0
  96. package/dist/hooks/stop.js +52 -0
  97. package/dist/hooks/stop.js.map +1 -0
  98. package/dist/lib/config.d.ts +6 -0
  99. package/dist/lib/config.js +53 -0
  100. package/dist/lib/config.js.map +1 -0
  101. package/dist/lib/format.d.ts +22 -0
  102. package/dist/lib/format.js +42 -0
  103. package/dist/lib/format.js.map +1 -0
  104. package/dist/lib/global-config.d.ts +13 -0
  105. package/dist/lib/global-config.js +52 -0
  106. package/dist/lib/global-config.js.map +1 -0
  107. package/dist/lib/hooks.d.ts +2 -0
  108. package/dist/lib/hooks.js +75 -0
  109. package/dist/lib/hooks.js.map +1 -0
  110. package/dist/lib/id.d.ts +1 -0
  111. package/dist/lib/id.js +5 -0
  112. package/dist/lib/id.js.map +1 -0
  113. package/dist/types.d.ts +26 -0
  114. package/dist/types.js +3 -0
  115. package/dist/types.js.map +1 -0
  116. package/hooks/post-tool-use.sh +13 -0
  117. package/hooks/pre-tool-use.sh +13 -0
  118. package/hooks/prompt-submit.sh +13 -0
  119. package/hooks/session-start.sh +13 -0
  120. package/hooks/stop.sh +13 -0
  121. package/package.json +68 -0
@@ -0,0 +1,375 @@
1
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { homedir } from 'node:os';
4
+ import { c, error, heading, label, success, table } from '../lib/format.js';
5
+ import { createPlatformClient } from '@honeybee-ai/sdk';
6
+ import { loadGlobalConfig } from '../lib/global-config.js';
7
+ function configDir() {
8
+ return join(homedir(), '.config', 'honeybee');
9
+ }
10
+ function configPath() {
11
+ return join(configDir(), 'integrations.json');
12
+ }
13
+ function loadLocalConfig() {
14
+ const path = configPath();
15
+ if (!existsSync(path))
16
+ return {};
17
+ try {
18
+ return JSON.parse(readFileSync(path, 'utf8'));
19
+ }
20
+ catch {
21
+ return {};
22
+ }
23
+ }
24
+ function saveLocalConfig(config) {
25
+ const dir = configDir();
26
+ if (!existsSync(dir)) {
27
+ mkdirSync(dir, { recursive: true });
28
+ }
29
+ writeFileSync(configPath(), JSON.stringify(config, null, 2) + '\n');
30
+ }
31
+ export async function integrations(args) {
32
+ const sub = args[0];
33
+ if (!sub || sub === '--help' || sub === '-h') {
34
+ console.log(`
35
+ ${c('bold', 'wgl integrations')} — integration marketplace
36
+
37
+ ${c('cyan', 'USAGE:')}
38
+ wgl integrations search [query] [--category C] [--sort popular|recent|rating]
39
+ wgl integrations info <name> Show integration details
40
+ wgl integrations install <name> Install from marketplace
41
+ wgl integrations remove <name> Remove an installed integration
42
+ wgl integrations list Show installed integrations
43
+ wgl integrations enable <name> Enable an installed integration
44
+ wgl integrations disable <name> Disable an integration
45
+ wgl integrations publish <dir> Publish an integration (auth required)
46
+ `);
47
+ return;
48
+ }
49
+ switch (sub) {
50
+ case 'search': {
51
+ await search(args.slice(1));
52
+ break;
53
+ }
54
+ case 'info': {
55
+ await info(args.slice(1));
56
+ break;
57
+ }
58
+ case 'install': {
59
+ await install(args.slice(1));
60
+ break;
61
+ }
62
+ case 'remove': {
63
+ await remove(args.slice(1));
64
+ break;
65
+ }
66
+ case 'list': {
67
+ await list();
68
+ break;
69
+ }
70
+ case 'enable': {
71
+ await enable(args.slice(1));
72
+ break;
73
+ }
74
+ case 'disable': {
75
+ await disable(args.slice(1));
76
+ break;
77
+ }
78
+ case 'publish': {
79
+ await publish(args.slice(1));
80
+ break;
81
+ }
82
+ default:
83
+ console.log(error(`Unknown subcommand: ${sub}`));
84
+ console.log('Run `wgl integrations --help` for usage');
85
+ process.exit(2);
86
+ }
87
+ }
88
+ function getPlatformClient() {
89
+ return createPlatformClient({ profileName: loadGlobalConfig().activeProfile || 'personal' });
90
+ }
91
+ async function search(args) {
92
+ const catIdx = args.indexOf('--category');
93
+ const category = catIdx !== -1 ? args[catIdx + 1] : undefined;
94
+ const sortIdx = args.indexOf('--sort');
95
+ const sort = sortIdx !== -1 ? args[sortIdx + 1] : undefined;
96
+ const queryParts = [];
97
+ for (let i = 0; i < args.length; i++) {
98
+ if (args[i] === '--category' || args[i] === '--sort') {
99
+ i++;
100
+ continue;
101
+ }
102
+ queryParts.push(args[i]);
103
+ }
104
+ const query = queryParts.join(' ') || undefined;
105
+ try {
106
+ const client = getPlatformClient();
107
+ const res = await client.searchIntegrations(query, { category, sort });
108
+ if (!res.ok) {
109
+ console.log(error(`Server returned ${res.status}`));
110
+ process.exit(1);
111
+ }
112
+ const { data: items, total } = res.data;
113
+ if (items.length === 0) {
114
+ console.log(` ${c('dim', 'No integrations found')}`);
115
+ return;
116
+ }
117
+ console.log(heading('Integrations'));
118
+ console.log(c('dim', ` ${total} integration${total === 1 ? '' : 's'} found\n`));
119
+ const rows = items.map((i) => {
120
+ const cat = c('cyan', `[${i.category}]`);
121
+ const stars = i.avg_rating > 0 ? ` ${c('yellow', `★${i.avg_rating.toFixed(1)}`)}` : '';
122
+ const dl = c('dim', `↓${i.downloads}`);
123
+ return [i.name, `${i.title} ${cat} ${dl}${stars}`];
124
+ });
125
+ console.log(table(rows));
126
+ console.log();
127
+ }
128
+ catch (err) {
129
+ console.log(error(err.message));
130
+ process.exit(1);
131
+ }
132
+ }
133
+ async function info(args) {
134
+ const name = args[0];
135
+ if (!name) {
136
+ console.log(error('Usage: wgl integrations info <name>'));
137
+ process.exit(2);
138
+ }
139
+ try {
140
+ const client = getPlatformClient();
141
+ const res = await client.getIntegration(name);
142
+ if (!res.ok) {
143
+ if (res.status === 404) {
144
+ console.log(error(`Integration not found: ${name}`));
145
+ }
146
+ else {
147
+ console.log(error(`Server returned ${res.status}`));
148
+ }
149
+ process.exit(1);
150
+ }
151
+ const i = res.data.data;
152
+ console.log(heading('Integration'));
153
+ console.log(label('Name', i.name));
154
+ console.log(label('Title', i.title));
155
+ console.log(label('Description', i.description));
156
+ console.log(label('Category', i.category));
157
+ console.log(label('Author', i.author.username));
158
+ console.log(label('Version', String(i.version)));
159
+ console.log(label('npm Package', i.npm_package));
160
+ console.log(label('Downloads', String(i.downloads)));
161
+ if (i.avg_rating > 0) {
162
+ console.log(label('Rating', `${i.avg_rating.toFixed(1)} (${i.rating_count} ratings)`));
163
+ }
164
+ if (i.tags.length) {
165
+ console.log(label('Tags', i.tags.join(', ')));
166
+ }
167
+ // Show manifest config keys
168
+ const manifest = i.manifest;
169
+ if (manifest?.config_keys && Array.isArray(manifest.config_keys)) {
170
+ console.log(heading('Config Keys'));
171
+ for (const k of manifest.config_keys) {
172
+ const key = k;
173
+ const req = key.required ? c('red', ' (required)') : '';
174
+ console.log(` ${c('bold', key.key)}${req} — ${key.description}`);
175
+ }
176
+ }
177
+ console.log(label('Created', i.created_at));
178
+ console.log(label('Updated', i.updated_at));
179
+ console.log();
180
+ }
181
+ catch (err) {
182
+ console.log(error(err.message));
183
+ process.exit(1);
184
+ }
185
+ }
186
+ async function install(args) {
187
+ const name = args[0];
188
+ if (!name) {
189
+ console.log(error('Usage: wgl integrations install <name>'));
190
+ process.exit(2);
191
+ }
192
+ try {
193
+ // Fetch from marketplace to get npm package name
194
+ const client = getPlatformClient();
195
+ const res = await client.downloadIntegration(name);
196
+ if (!res.ok) {
197
+ if (res.status === 404) {
198
+ console.log(error(`Integration not found: ${name}`));
199
+ }
200
+ else {
201
+ console.log(error(`Server returned ${res.status}`));
202
+ }
203
+ process.exit(1);
204
+ }
205
+ const manifest = res.data;
206
+ const npmPackage = manifest.npm_package || name;
207
+ // npm install the package globally
208
+ const { execSync } = await import('node:child_process');
209
+ console.log(c('dim', ` Installing ${npmPackage}...`));
210
+ execSync(`npm install -g ${npmPackage}`, { stdio: 'inherit' });
211
+ // Save to local config
212
+ const config = loadLocalConfig();
213
+ config[name] = {
214
+ package: npmPackage,
215
+ enabled: true,
216
+ config: {},
217
+ };
218
+ saveLocalConfig(config);
219
+ console.log(success(`Installed and enabled: ${name}`));
220
+ console.log(c('dim', ` npm package: ${npmPackage}`));
221
+ console.log(c('dim', ' Run incubator with --integrations or --integration=' + name + ' to activate'));
222
+ }
223
+ catch (err) {
224
+ console.log(error(err.message));
225
+ process.exit(1);
226
+ }
227
+ }
228
+ async function remove(args) {
229
+ const name = args[0];
230
+ if (!name) {
231
+ console.log(error('Usage: wgl integrations remove <name>'));
232
+ process.exit(2);
233
+ }
234
+ const config = loadLocalConfig();
235
+ if (!config[name]) {
236
+ console.log(error(`Integration not installed: ${name}`));
237
+ process.exit(1);
238
+ }
239
+ delete config[name];
240
+ saveLocalConfig(config);
241
+ console.log(success(`Removed: ${name}`));
242
+ }
243
+ async function list() {
244
+ const config = loadLocalConfig();
245
+ const entries = Object.entries(config);
246
+ if (entries.length === 0) {
247
+ console.log(` ${c('dim', 'No integrations installed')}`);
248
+ console.log(c('dim', ' Search marketplace: wgl integrations search'));
249
+ return;
250
+ }
251
+ console.log(heading('Installed Integrations'));
252
+ const rows = entries.map(([name, entry]) => {
253
+ const status = entry.enabled ? c('green', 'enabled') : c('dim', 'disabled');
254
+ return [name, `${entry.package} [${status}]`];
255
+ });
256
+ console.log(table(rows));
257
+ console.log();
258
+ }
259
+ async function enable(args) {
260
+ const name = args[0];
261
+ if (!name) {
262
+ console.log(error('Usage: wgl integrations enable <name>'));
263
+ process.exit(2);
264
+ }
265
+ const config = loadLocalConfig();
266
+ if (!config[name]) {
267
+ console.log(error(`Integration not installed: ${name}`));
268
+ process.exit(1);
269
+ }
270
+ config[name].enabled = true;
271
+ saveLocalConfig(config);
272
+ console.log(success(`Enabled: ${name}`));
273
+ }
274
+ async function disable(args) {
275
+ const name = args[0];
276
+ if (!name) {
277
+ console.log(error('Usage: wgl integrations disable <name>'));
278
+ process.exit(2);
279
+ }
280
+ const config = loadLocalConfig();
281
+ if (!config[name]) {
282
+ console.log(error(`Integration not installed: ${name}`));
283
+ process.exit(1);
284
+ }
285
+ config[name].enabled = false;
286
+ saveLocalConfig(config);
287
+ console.log(success(`Disabled: ${name}`));
288
+ }
289
+ async function publish(args) {
290
+ // Flags
291
+ const nameIdx = args.indexOf('--name');
292
+ const titleIdx = args.indexOf('--title');
293
+ const tagsIdx = args.indexOf('--tags');
294
+ // First non-flag arg is the directory/manifest file
295
+ let manifestPath;
296
+ for (let i = 0; i < args.length; i++) {
297
+ if (args[i] === '--name' || args[i] === '--title' || args[i] === '--tags') {
298
+ i++;
299
+ continue;
300
+ }
301
+ manifestPath = args[i];
302
+ break;
303
+ }
304
+ if (!manifestPath) {
305
+ console.log(error('Usage: wgl integrations publish <manifest.json|dir> [--name N] [--title T] [--tags t1,t2]'));
306
+ process.exit(2);
307
+ return;
308
+ }
309
+ // If dir given, look for package.json with honeybee manifest
310
+ let content;
311
+ try {
312
+ // Try reading as file first
313
+ content = readFileSync(manifestPath, 'utf8');
314
+ }
315
+ catch {
316
+ // Try as directory with manifest.json
317
+ try {
318
+ content = readFileSync(join(manifestPath, 'manifest.json'), 'utf8');
319
+ }
320
+ catch {
321
+ console.log(error(`Cannot read manifest: ${manifestPath}`));
322
+ process.exit(1);
323
+ return;
324
+ }
325
+ }
326
+ let manifest;
327
+ try {
328
+ manifest = JSON.parse(content);
329
+ }
330
+ catch {
331
+ console.log(error('Manifest must be valid JSON'));
332
+ process.exit(1);
333
+ return;
334
+ }
335
+ const intName = (nameIdx !== -1 ? args[nameIdx + 1] : manifest.name);
336
+ const intTitle = (titleIdx !== -1 ? args[titleIdx + 1] : manifest.title || manifest.name);
337
+ const tags = tagsIdx !== -1 ? args[tagsIdx + 1].split(',') : (manifest.tags || []);
338
+ if (!intName) {
339
+ console.log(error('Integration name is required (use --name or include "name" in manifest)'));
340
+ process.exit(2);
341
+ return;
342
+ }
343
+ if (!manifest.npm_package) {
344
+ console.log(error('Manifest must include "npm_package" field'));
345
+ process.exit(2);
346
+ return;
347
+ }
348
+ if (!manifest.category) {
349
+ console.log(error('Manifest must include "category" field (bridge, notification, backend, tool)'));
350
+ process.exit(2);
351
+ return;
352
+ }
353
+ try {
354
+ const client = getPlatformClient();
355
+ const res = await client.publishIntegration({
356
+ name: intName,
357
+ title: intTitle,
358
+ description: manifest.description || '',
359
+ tags,
360
+ npm_package: manifest.npm_package,
361
+ category: manifest.category,
362
+ manifest,
363
+ });
364
+ if (!res.ok) {
365
+ console.log(error(`Server returned ${res.status}`));
366
+ process.exit(1);
367
+ }
368
+ console.log(success(`Published: ${res.data.data.name} (v${res.data.data.version})`));
369
+ }
370
+ catch (err) {
371
+ console.log(error(err.message));
372
+ process.exit(1);
373
+ }
374
+ }
375
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/commands/integrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function join(args: string[]): Promise<void>;
@@ -0,0 +1,81 @@
1
+ import { generateAgentId } from '../lib/id.js';
2
+ import { defaultConfig, saveConfig, loadConfig } from '../lib/config.js';
3
+ import { installHooks } from '../lib/hooks.js';
4
+ import { createAcpClient } from '@agentcoordinationprotocol/sdk';
5
+ import { c, success, error, label, heading } from '../lib/format.js';
6
+ export async function join(args) {
7
+ const existing = loadConfig();
8
+ if (existing) {
9
+ console.log(error('Already joined. Run `wgl leave` first.'));
10
+ process.exit(1);
11
+ }
12
+ // Parse: wgl join <url> [--role <role>] [--namespace <ns>]
13
+ const url = args.find(a => a.startsWith('http'));
14
+ if (!url) {
15
+ console.log(error('Usage: wgl join <server-url> [--role <role>] [--namespace <ns>]'));
16
+ process.exit(1);
17
+ }
18
+ const roleIdx = args.findIndex(a => a === '--role' || a === '-r');
19
+ const nsIdx = args.findIndex(a => a === '--namespace' || a === '-n');
20
+ const role = roleIdx >= 0 ? args[roleIdx + 1] : 'developer';
21
+ const namespace = nsIdx >= 0 ? args[nsIdx + 1] : 'default';
22
+ const agentId = generateAgentId();
23
+ const config = defaultConfig(url, agentId, role, namespace);
24
+ // Test connection
25
+ const client = createAcpClient(config);
26
+ try {
27
+ const res = await client.health();
28
+ if (!res.ok) {
29
+ console.log(error(`Server returned ${res.status}`));
30
+ process.exit(1);
31
+ }
32
+ }
33
+ catch {
34
+ console.log(error(`Cannot reach ${url}`));
35
+ process.exit(1);
36
+ }
37
+ // Register role
38
+ try {
39
+ await client.requestRole(role);
40
+ }
41
+ catch {
42
+ // Non-fatal
43
+ }
44
+ saveConfig(config);
45
+ installHooks(config.hookTimeout);
46
+ console.log(success('Joined coordination server'));
47
+ console.log(label('Agent ID', agentId));
48
+ console.log(label('Server', url));
49
+ console.log(label('Role', role));
50
+ // Fetch and display protocol + team
51
+ try {
52
+ const [protocolRes, rolesRes] = await Promise.all([
53
+ client.getProtocol(),
54
+ client.getRoles(),
55
+ ]);
56
+ if (protocolRes.ok && protocolRes.data) {
57
+ const p = protocolRes.data;
58
+ if (p.name) {
59
+ console.log(heading('Protocol'));
60
+ console.log(label('Name', p.name));
61
+ if (p.description)
62
+ console.log(label('Description', p.description));
63
+ if (p.phases?.length) {
64
+ console.log(label('Phases', p.phases.map(ph => ph.name).join(' → ')));
65
+ }
66
+ }
67
+ }
68
+ if (rolesRes.ok && Array.isArray(rolesRes.data) && rolesRes.data.length > 0) {
69
+ console.log(heading('Team'));
70
+ for (const r of rolesRes.data) {
71
+ const you = r.agent === agentId ? c('green', ' (you)') : '';
72
+ console.log(` ${c('bold', r.role)}: ${r.agent}${you}`);
73
+ }
74
+ }
75
+ }
76
+ catch {
77
+ // Non-fatal — just skip display
78
+ }
79
+ console.log();
80
+ }
81
+ //# sourceMappingURL=join.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"join.js","sourceRoot":"","sources":["../../src/commands/join.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function leave(): Promise<void>;
@@ -0,0 +1,36 @@
1
+ import { loadConfig, deleteConfig } from '../lib/config.js';
2
+ import { uninstallHooks } from '../lib/hooks.js';
3
+ import { createAcpClient } from '@agentcoordinationprotocol/sdk';
4
+ import { success, error } from '../lib/format.js';
5
+ export async function leave() {
6
+ const config = loadConfig();
7
+ if (!config) {
8
+ console.log(error('Not initialized. Nothing to do.'));
9
+ process.exit(1);
10
+ }
11
+ const client = createAcpClient(config);
12
+ // Release all our claims
13
+ try {
14
+ const res = await client.getClaims();
15
+ if (res.ok && Array.isArray(res.data)) {
16
+ const mine = res.data.filter(c => c.owner === config.agentId && c.status === 'active');
17
+ for (const claim of mine) {
18
+ await client.releaseClaim(claim.resource);
19
+ }
20
+ }
21
+ }
22
+ catch {
23
+ // Non-fatal — server may be down
24
+ }
25
+ // Publish leave event
26
+ try {
27
+ await client.publishEvent('agent.session_complete', { agentId: config.agentId, role: config.role });
28
+ }
29
+ catch {
30
+ // Non-fatal
31
+ }
32
+ uninstallHooks();
33
+ deleteConfig();
34
+ console.log(success('Left coordination server. Hooks removed, config deleted.'));
35
+ }
36
+ //# sourceMappingURL=leave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leave.js","sourceRoot":"","sources":["../../src/commands/leave.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGlD,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEvC,yBAAyB;IACzB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,GAAG,CAAC,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,GAAI,GAAG,CAAC,IAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YACpG,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;gBACzB,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,YAAY,CAAC,wBAAwB,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACtG,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IAED,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IAEf,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC,CAAC;AACnF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function marketplace(args: string[]): Promise<void>;