@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,155 @@
1
+ import { c, error, heading, label, success, warn } from '../lib/format.js';
2
+ import { loadGlobalConfig, setGlobalConfigValue } from '../lib/global-config.js';
3
+ import { startDeviceFlow, pollDeviceFlow, exchangeGitHubToken, verifyPat, setProfile, removeProfile, listProfiles, getActiveProfile, isTokenExpired, } from '@honeybee-ai/sdk';
4
+ export async function auth(args) {
5
+ const sub = args[0];
6
+ if (!sub || sub === '--help' || sub === '-h') {
7
+ console.log(`
8
+ ${c('bold', 'wgl auth')} — platform authentication
9
+
10
+ ${c('cyan', 'USAGE:')}
11
+ wgl auth login [--platform URL] Log in via device flow
12
+ wgl auth login --token <PAT> Log in with personal access token
13
+ wgl auth logout Clear stored credentials
14
+ wgl auth status Show current auth state
15
+ wgl auth switch <profile> Switch between saved profiles
16
+ `);
17
+ return;
18
+ }
19
+ switch (sub) {
20
+ case 'login': {
21
+ const platformIdx = args.indexOf('--platform');
22
+ const tokenIdx = args.indexOf('--token');
23
+ const globalConfig = loadGlobalConfig();
24
+ const platform = platformIdx !== -1 ? args[platformIdx + 1] : globalConfig.defaultPlatform;
25
+ const profileName = globalConfig.activeProfile || 'personal';
26
+ // PAT login
27
+ if (tokenIdx !== -1) {
28
+ const pat = args[tokenIdx + 1];
29
+ if (!pat) {
30
+ console.log(error('Usage: wgl auth login --token <PAT>'));
31
+ process.exit(2);
32
+ return;
33
+ }
34
+ console.log(c('dim', `Authenticating with PAT on ${platform}...\n`));
35
+ try {
36
+ const userInfo = await verifyPat(platform, pat);
37
+ setProfile(profileName, {
38
+ platform,
39
+ accessToken: pat,
40
+ refreshToken: '',
41
+ expiresAt: Math.floor(Date.now() / 1000) + 365 * 24 * 60 * 60, // 1 year
42
+ email: userInfo.email,
43
+ org: userInfo.org || 'personal',
44
+ });
45
+ console.log(success(`Logged in as ${userInfo.email} (PAT)`));
46
+ console.log(label('Profile', profileName));
47
+ }
48
+ catch (err) {
49
+ console.log(error(`PAT login failed: ${err.message}`));
50
+ process.exit(1);
51
+ }
52
+ break;
53
+ }
54
+ // Device flow login (GitHub native, RFC 8628)
55
+ console.log(c('dim', `Authenticating via GitHub...\n`));
56
+ try {
57
+ const device = await startDeviceFlow();
58
+ console.log(` Visit: ${c('cyan', device.verification_uri)}`);
59
+ console.log(` Enter code: ${c('bold', device.user_code)}\n`);
60
+ console.log(c('dim', 'Waiting for authorization...'));
61
+ const githubToken = await pollDeviceFlow(device.device_code, device.interval || 5, device.expires_in || 300);
62
+ console.log(c('dim', 'Exchanging token with platform...'));
63
+ const token = await exchangeGitHubToken(platform, githubToken);
64
+ setProfile(profileName, {
65
+ platform,
66
+ accessToken: token.access_token,
67
+ refreshToken: token.refresh_token,
68
+ expiresAt: Math.floor(Date.now() / 1000) + token.expires_in,
69
+ email: token.email,
70
+ org: token.org,
71
+ });
72
+ console.log(success(`Logged in as ${token.email} (${token.org})`));
73
+ console.log(label('Profile', profileName));
74
+ }
75
+ catch (err) {
76
+ console.log(error(`Login failed: ${err.message}`));
77
+ process.exit(1);
78
+ }
79
+ break;
80
+ }
81
+ case 'logout': {
82
+ const globalConfig = loadGlobalConfig();
83
+ const profileName = globalConfig.activeProfile || 'personal';
84
+ if (removeProfile(profileName)) {
85
+ console.log(success(`Logged out (profile: ${profileName})`));
86
+ }
87
+ else {
88
+ console.log(c('dim', 'Not logged in'));
89
+ }
90
+ break;
91
+ }
92
+ case 'status': {
93
+ const globalConfig = loadGlobalConfig();
94
+ const profileName = globalConfig.activeProfile || 'personal';
95
+ const profile = getActiveProfile(profileName);
96
+ console.log(heading('Auth Status'));
97
+ console.log(label('Profile', profileName));
98
+ if (!profile) {
99
+ console.log(` ${c('dim', 'Not logged in')}`);
100
+ console.log(`\n Run ${c('cyan', 'wgl auth login')} to authenticate`);
101
+ }
102
+ else {
103
+ console.log(label('Platform', profile.platform));
104
+ console.log(label('Email', profile.email));
105
+ console.log(label('Org', profile.org));
106
+ if (isTokenExpired(profile)) {
107
+ console.log(` ${warn('Token expired — run `wgl auth login` to refresh')}`);
108
+ }
109
+ else {
110
+ const remaining = profile.expiresAt - Math.floor(Date.now() / 1000);
111
+ const hours = Math.floor(remaining / 3600);
112
+ const mins = Math.floor((remaining % 3600) / 60);
113
+ console.log(label('Token', c('green', `valid (${hours}h ${mins}m remaining)`)));
114
+ }
115
+ }
116
+ const allProfiles = listProfiles();
117
+ if (allProfiles.length > 1) {
118
+ console.log(heading('Available Profiles'));
119
+ for (const name of allProfiles) {
120
+ const active = name === profileName ? c('green', ' (active)') : '';
121
+ const p = getActiveProfile(name);
122
+ console.log(` ${c('bold', name)}${active} — ${p.email} (${p.org})`);
123
+ }
124
+ }
125
+ console.log();
126
+ break;
127
+ }
128
+ case 'switch': {
129
+ const profileName = args[1];
130
+ if (!profileName) {
131
+ console.log(error('Usage: wgl auth switch <profile>'));
132
+ process.exit(2);
133
+ return;
134
+ }
135
+ const profile = getActiveProfile(profileName);
136
+ if (!profile) {
137
+ console.log(error(`Profile not found: ${profileName}`));
138
+ const available = listProfiles();
139
+ if (available.length > 0) {
140
+ console.log(c('dim', ` Available: ${available.join(', ')}`));
141
+ }
142
+ process.exit(1);
143
+ return;
144
+ }
145
+ setGlobalConfigValue('activeProfile', profileName);
146
+ console.log(success(`Switched to profile: ${profileName} (${profile.email})`));
147
+ break;
148
+ }
149
+ default:
150
+ console.log(error(`Unknown subcommand: ${sub}`));
151
+ console.log('Run `wgl auth --help` for usage');
152
+ process.exit(2);
153
+ }
154
+ }
155
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function claim(args: string[]): Promise<void>;
@@ -0,0 +1,36 @@
1
+ import { loadConfig } from '../lib/config.js';
2
+ import { createAcpClient } from '@agentcoordinationprotocol/sdk';
3
+ import { success, error } from '../lib/format.js';
4
+ export async function claim(args) {
5
+ const config = loadConfig();
6
+ if (!config) {
7
+ console.log(error('Not initialized. Run `wgl init` or `wgl join` first.'));
8
+ process.exit(1);
9
+ }
10
+ const resource = args[0];
11
+ if (!resource) {
12
+ console.log(error('Usage: wgl claim <resource>'));
13
+ process.exit(1);
14
+ }
15
+ const client = createAcpClient(config);
16
+ try {
17
+ const res = await client.claim(resource);
18
+ if (!res.ok) {
19
+ console.log(error(`Server returned ${res.status}`));
20
+ process.exit(1);
21
+ }
22
+ const result = res.data;
23
+ if (result.status === 'approved') {
24
+ console.log(success(`Claimed: ${resource}`));
25
+ }
26
+ else {
27
+ console.log(error(`Rejected: ${resource} — already claimed by ${result.claim?.owner || 'another agent'}`));
28
+ process.exit(1);
29
+ }
30
+ }
31
+ catch {
32
+ console.log(error('Cannot reach server'));
33
+ process.exit(1);
34
+ }
35
+ }
36
+ //# sourceMappingURL=claim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim.js","sourceRoot":"","sources":["../../src/commands/claim.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAK,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAc;IACxC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,GAAG,CAAC,IAAmB,CAAC;QACvC,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,QAAQ,yBAAyB,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC;YAC3G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function completion(args: string[]): Promise<void>;
@@ -0,0 +1,191 @@
1
+ import { c, error } from '../lib/format.js';
2
+ // Full command tree for completions
3
+ const COMMANDS = {
4
+ init: [],
5
+ join: [],
6
+ status: [],
7
+ leave: [],
8
+ protocol: ['show', 'validate', 'load', 'init'],
9
+ team: [],
10
+ claim: [],
11
+ release: [],
12
+ halt: [],
13
+ pause: [],
14
+ resume: [],
15
+ events: ['list', 'tail', 'publish'],
16
+ state: ['get', 'set', 'delete'],
17
+ msg: ['send', 'list', 'broadcast'],
18
+ help: ['ask', 'list', 'claim', 'resolve'],
19
+ namespace: ['list', 'create', 'delete'],
20
+ hooks: ['install', 'uninstall', 'list'],
21
+ serve: [],
22
+ auth: ['login', 'logout', 'status', 'switch'],
23
+ config: ['set', 'get', 'list'],
24
+ marketplace: ['search', 'info', 'install', 'publish', 'list'],
25
+ integrations: ['search', 'info', 'install', 'remove', 'list', 'enable', 'disable', 'publish'],
26
+ swarm: ['create', 'list', 'info', 'delete', 'pause', 'resume', 'keys', 'logs'],
27
+ scan: [],
28
+ completion: ['bash', 'zsh', 'fish'],
29
+ upgrade: [],
30
+ };
31
+ const TOP_LEVEL = Object.keys(COMMANDS).join(' ');
32
+ export async function completion(args) {
33
+ const shell = args[0];
34
+ if (!shell || shell === '--help' || shell === '-h') {
35
+ console.log(`
36
+ ${c('bold', 'wgl completion')} — generate shell completion scripts
37
+
38
+ ${c('cyan', 'USAGE:')}
39
+ wgl completion bash Output bash completion script
40
+ wgl completion zsh Output zsh completion script
41
+ wgl completion fish Output fish completion script
42
+
43
+ ${c('cyan', 'SETUP:')}
44
+ eval "$(wgl completion bash)" # add to .bashrc
45
+ eval "$(wgl completion zsh)" # add to .zshrc
46
+ wgl completion fish | source # add to config.fish
47
+ `);
48
+ return;
49
+ }
50
+ switch (shell) {
51
+ case 'bash':
52
+ console.log(bashCompletion());
53
+ break;
54
+ case 'zsh':
55
+ console.log(zshCompletion());
56
+ break;
57
+ case 'fish':
58
+ console.log(fishCompletion());
59
+ break;
60
+ default:
61
+ console.log(error(`Unknown shell: ${shell}. Supported: bash, zsh, fish`));
62
+ process.exit(2);
63
+ }
64
+ }
65
+ function bashCompletion() {
66
+ const subcmds = Object.entries(COMMANDS)
67
+ .filter(([, subs]) => subs.length > 0)
68
+ .map(([cmd, subs]) => ` ${cmd}) COMPREPLY=( $(compgen -W "${subs.join(' ')}" -- "$cur") ) ;;`)
69
+ .join('\n');
70
+ return `# wgl bash completion — generated by wgl completion bash
71
+ _wgl_completions() {
72
+ local cur prev
73
+ COMPREPLY=()
74
+ cur="\${COMP_WORDS[COMP_CWORD]}"
75
+ prev="\${COMP_WORDS[COMP_CWORD-1]}"
76
+
77
+ if [ "$COMP_CWORD" -eq 1 ]; then
78
+ COMPREPLY=( $(compgen -W "${TOP_LEVEL} --help --version" -- "$cur") )
79
+ return
80
+ fi
81
+
82
+ case "$prev" in
83
+ ${subcmds}
84
+ keys) COMPREPLY=( $(compgen -W "create list revoke" -- "$cur") ) ;;
85
+ esac
86
+ }
87
+ complete -F _wgl_completions wgl`;
88
+ }
89
+ function zshCompletion() {
90
+ const subcmdCases = Object.entries(COMMANDS)
91
+ .filter(([, subs]) => subs.length > 0)
92
+ .map(([cmd, subs]) => {
93
+ const opts = subs.map(s => `'${s}[${s}]'`).join(' ');
94
+ return ` ${cmd}) _arguments '1:subcommand:(${subs.join(' ')})' ;;`;
95
+ })
96
+ .join('\n');
97
+ return `#compdef wgl
98
+ # wgl zsh completion — generated by wgl completion zsh
99
+ _wgl() {
100
+ local -a commands
101
+ commands=(
102
+ 'init:Interactive setup'
103
+ 'join:Quick join a server'
104
+ 'status:Show current status'
105
+ 'leave:Leave coordination'
106
+ 'protocol:Protocol management'
107
+ 'team:Show agents'
108
+ 'claim:Claim a resource'
109
+ 'release:Release a resource'
110
+ 'halt:Emergency stop'
111
+ 'pause:Pause coordination'
112
+ 'resume:Resume coordination'
113
+ 'events:Event management'
114
+ 'state:Shared state'
115
+ 'msg:Messaging'
116
+ 'help:Help requests'
117
+ 'namespace:Namespace management'
118
+ 'hooks:Hook management'
119
+ 'serve:Start local server'
120
+ 'auth:Authentication'
121
+ 'config:Global configuration'
122
+ 'marketplace:Protocol marketplace'
123
+ 'integrations:Integration marketplace'
124
+ 'swarm:Managed swarms'
125
+ 'scan:Security scanning'
126
+ 'completion:Shell completions'
127
+ 'upgrade:Self-update'
128
+ )
129
+
130
+ if (( CURRENT == 2 )); then
131
+ _describe 'command' commands
132
+ return
133
+ fi
134
+
135
+ case "\${words[2]}" in
136
+ ${subcmdCases}
137
+ esac
138
+ }
139
+ _wgl "$@"`;
140
+ }
141
+ function fishCompletion() {
142
+ const lines = ['# wgl fish completion — generated by wgl completion fish'];
143
+ lines.push('# Disable file completion by default');
144
+ lines.push('complete -c wgl -f');
145
+ lines.push('');
146
+ // Top-level commands
147
+ const descriptions = {
148
+ init: 'Interactive setup',
149
+ join: 'Quick join a server',
150
+ status: 'Show current status',
151
+ leave: 'Leave coordination',
152
+ protocol: 'Protocol management',
153
+ team: 'Show agents',
154
+ claim: 'Claim a resource',
155
+ release: 'Release a resource',
156
+ halt: 'Emergency stop',
157
+ pause: 'Pause coordination',
158
+ resume: 'Resume coordination',
159
+ events: 'Event management',
160
+ state: 'Shared state',
161
+ msg: 'Messaging',
162
+ help: 'Help requests',
163
+ namespace: 'Namespace management',
164
+ hooks: 'Hook management',
165
+ serve: 'Start local server',
166
+ auth: 'Authentication',
167
+ config: 'Global configuration',
168
+ marketplace: 'Protocol marketplace',
169
+ integrations: 'Integration marketplace',
170
+ swarm: 'Managed swarms',
171
+ scan: 'Security scanning',
172
+ completion: 'Shell completions',
173
+ upgrade: 'Self-update',
174
+ };
175
+ for (const [cmd, desc] of Object.entries(descriptions)) {
176
+ lines.push(`complete -c wgl -n '__fish_use_subcommand' -a '${cmd}' -d '${desc}'`);
177
+ }
178
+ lines.push('');
179
+ // Subcommands
180
+ for (const [cmd, subs] of Object.entries(COMMANDS)) {
181
+ if (subs.length === 0)
182
+ continue;
183
+ for (const sub of subs) {
184
+ lines.push(`complete -c wgl -n '__fish_seen_subcommand_from ${cmd}' -a '${sub}'`);
185
+ }
186
+ }
187
+ // Keys sub-subcommands
188
+ lines.push(`complete -c wgl -n '__fish_seen_subcommand_from keys' -a 'create list revoke'`);
189
+ return lines.join('\n');
190
+ }
191
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../src/commands/completion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function configCmd(args: string[]): Promise<void>;
@@ -0,0 +1,61 @@
1
+ import { c, error, heading, label, success } from '../lib/format.js';
2
+ import { loadGlobalConfig, setGlobalConfigValue } from '../lib/global-config.js';
3
+ export async function configCmd(args) {
4
+ const sub = args[0];
5
+ if (!sub || sub === '--help' || sub === '-h') {
6
+ console.log(`
7
+ ${c('bold', 'wgl config')} — global preferences
8
+
9
+ ${c('cyan', 'USAGE:')}
10
+ wgl config set <key> <value> Set a preference
11
+ wgl config get <key> Get a preference
12
+ wgl config list Show all preferences
13
+ `);
14
+ return;
15
+ }
16
+ switch (sub) {
17
+ case 'set': {
18
+ const key = args[1];
19
+ const value = args.slice(2).join(' ');
20
+ if (!key || !value) {
21
+ console.log(error('Usage: wgl config set <key> <value>'));
22
+ process.exit(2);
23
+ return;
24
+ }
25
+ setGlobalConfigValue(key, value);
26
+ console.log(success(`Set ${key} = ${value}`));
27
+ break;
28
+ }
29
+ case 'get': {
30
+ const key = args[1];
31
+ if (!key) {
32
+ console.log(error('Usage: wgl config get <key>'));
33
+ process.exit(2);
34
+ return;
35
+ }
36
+ const config = loadGlobalConfig();
37
+ if (key in config) {
38
+ console.log(config[key]);
39
+ }
40
+ else {
41
+ console.log(error(`Key not found: ${key}`));
42
+ process.exit(1);
43
+ }
44
+ break;
45
+ }
46
+ case 'list': {
47
+ const config = loadGlobalConfig();
48
+ console.log(heading('Global Config'));
49
+ for (const [k, v] of Object.entries(config)) {
50
+ console.log(label(k, String(v)));
51
+ }
52
+ console.log();
53
+ break;
54
+ }
55
+ default:
56
+ console.log(error(`Unknown subcommand: ${sub}`));
57
+ console.log('Run `wgl config --help` for usage');
58
+ process.exit(2);
59
+ }
60
+ }
61
+ //# sourceMappingURL=config-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-cmd.js","sourceRoot":"","sources":["../../src/commands/config-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEjF,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc;IAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAEpB,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC;EACd,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC;;EAEvB,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC;;;;CAIpB,CAAC,CAAC;QACC,OAAO;IACT,CAAC;IAED,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9C,MAAM;QACR,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAClC,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;YACtC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,MAAM;QACR,CAAC;QAED;YACE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function events(args: string[]): Promise<void>;
@@ -0,0 +1,129 @@
1
+ import { loadConfig } from '../lib/config.js';
2
+ import { createAcpClient } from '@agentcoordinationprotocol/sdk';
3
+ import { c, error, heading, success } from '../lib/format.js';
4
+ function formatEvent(e) {
5
+ const time = new Date(e.publishedAt).toLocaleTimeString();
6
+ return ` ${c('dim', `#${e.id}`)} ${c('bold', e.type)} by ${e.publishedBy} ${c('dim', time)}`;
7
+ }
8
+ export async function events(args) {
9
+ const sub = args[0];
10
+ if (!sub || sub === '--help' || sub === '-h') {
11
+ console.log(`
12
+ ${c('bold', 'wgl events')} — event management
13
+
14
+ ${c('cyan', 'USAGE:')}
15
+ wgl events list [--since N] [--type T] List events
16
+ wgl events tail Live-stream events (polling)
17
+ wgl events publish <type> [json-data] Publish an event
18
+ `);
19
+ return;
20
+ }
21
+ const config = loadConfig();
22
+ if (!config) {
23
+ console.log(error('Not initialized. Run `wgl init` or `wgl join` first.'));
24
+ process.exit(1);
25
+ }
26
+ const client = createAcpClient(config);
27
+ switch (sub) {
28
+ case 'list': {
29
+ const sinceIdx = args.indexOf('--since');
30
+ const since = sinceIdx !== -1 ? parseInt(args[sinceIdx + 1], 10) : undefined;
31
+ const typeIdx = args.indexOf('--type');
32
+ const typeFilter = typeIdx !== -1 ? args[typeIdx + 1] : undefined;
33
+ try {
34
+ const res = await client.getEvents(since);
35
+ if (!res.ok) {
36
+ console.log(error(`Server returned ${res.status}`));
37
+ process.exit(1);
38
+ }
39
+ let list = res.data;
40
+ if (typeFilter) {
41
+ list = list.filter(e => e.type.includes(typeFilter));
42
+ }
43
+ if (list.length === 0) {
44
+ console.log(` ${c('dim', 'No events')}`);
45
+ return;
46
+ }
47
+ console.log(heading('Events'));
48
+ for (const e of list) {
49
+ console.log(formatEvent(e));
50
+ }
51
+ console.log();
52
+ }
53
+ catch {
54
+ console.log(error('Cannot reach server'));
55
+ process.exit(1);
56
+ }
57
+ break;
58
+ }
59
+ case 'tail': {
60
+ let cursor = config.lastEventCursor || 0;
61
+ console.log(c('dim', `Tailing events (since #${cursor})... Ctrl+C to stop\n`));
62
+ const poll = async () => {
63
+ try {
64
+ const res = await client.getEvents(cursor);
65
+ if (res.ok) {
66
+ const list = res.data;
67
+ for (const e of list) {
68
+ console.log(formatEvent(e));
69
+ if (e.id > cursor)
70
+ cursor = e.id;
71
+ }
72
+ }
73
+ }
74
+ catch {
75
+ // Server unreachable, keep trying
76
+ }
77
+ };
78
+ // Initial fetch
79
+ await poll();
80
+ // Poll every 2 seconds
81
+ const interval = setInterval(poll, 2000);
82
+ process.on('SIGINT', () => {
83
+ clearInterval(interval);
84
+ console.log(c('dim', '\nStopped tailing.'));
85
+ process.exit(0);
86
+ });
87
+ // Keep alive
88
+ await new Promise(() => { });
89
+ break;
90
+ }
91
+ case 'publish': {
92
+ const type = args[1];
93
+ if (!type) {
94
+ console.log(error('Usage: wgl events publish <type> [json-data]'));
95
+ process.exit(2);
96
+ }
97
+ let data = {};
98
+ const jsonStr = args.slice(2).join(' ');
99
+ if (jsonStr) {
100
+ try {
101
+ data = JSON.parse(jsonStr);
102
+ }
103
+ catch {
104
+ console.log(error('Invalid JSON data'));
105
+ process.exit(2);
106
+ }
107
+ }
108
+ try {
109
+ const res = await client.publishEvent(type, data);
110
+ if (!res.ok) {
111
+ console.log(error(`Server returned ${res.status}`));
112
+ process.exit(1);
113
+ }
114
+ const evt = res.data;
115
+ console.log(success(`Published event #${evt.id} (${type})`));
116
+ }
117
+ catch {
118
+ console.log(error('Cannot reach server'));
119
+ process.exit(1);
120
+ }
121
+ break;
122
+ }
123
+ default:
124
+ console.log(error(`Unknown subcommand: ${sub}`));
125
+ console.log('Run `wgl events --help` for usage');
126
+ process.exit(2);
127
+ }
128
+ }
129
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/commands/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function halt(args: string[]): Promise<void>;
@@ -0,0 +1,25 @@
1
+ import { loadConfig } from '../lib/config.js';
2
+ import { createAcpClient } from '@agentcoordinationprotocol/sdk';
3
+ import { success, error } from '../lib/format.js';
4
+ export async function halt(args) {
5
+ const config = loadConfig();
6
+ if (!config) {
7
+ console.log(error('Not initialized. Run `wgl init` or `wgl join` first.'));
8
+ process.exit(1);
9
+ }
10
+ const reason = args.join(' ') || undefined;
11
+ const client = createAcpClient(config);
12
+ try {
13
+ const res = await client.halt(reason);
14
+ if (!res.ok) {
15
+ console.log(error(`Server returned ${res.status}`));
16
+ process.exit(1);
17
+ }
18
+ console.log(success(`Halted${reason ? `: ${reason}` : ''}`));
19
+ }
20
+ catch {
21
+ console.log(error('Cannot reach server'));
22
+ process.exit(1);
23
+ }
24
+ }
25
+ //# sourceMappingURL=halt.js.map