@getstackrun/cli 0.6.1 → 0.8.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 (58) hide show
  1. package/dist/agent.d.ts.map +1 -1
  2. package/dist/agent.js +113 -3
  3. package/dist/agent.js.map +1 -1
  4. package/dist/api.d.ts +26 -0
  5. package/dist/api.d.ts.map +1 -0
  6. package/dist/api.js +90 -0
  7. package/dist/api.js.map +1 -0
  8. package/dist/audit.d.ts +2 -0
  9. package/dist/audit.d.ts.map +1 -0
  10. package/dist/audit.js +69 -0
  11. package/dist/audit.js.map +1 -0
  12. package/dist/detectors.d.ts +2 -0
  13. package/dist/detectors.d.ts.map +1 -0
  14. package/dist/detectors.js +104 -0
  15. package/dist/detectors.js.map +1 -0
  16. package/dist/dropoffs.d.ts +2 -0
  17. package/dist/dropoffs.d.ts.map +1 -0
  18. package/dist/dropoffs.js +140 -0
  19. package/dist/dropoffs.js.map +1 -0
  20. package/dist/events.d.ts +2 -0
  21. package/dist/events.d.ts.map +1 -0
  22. package/dist/events.js +77 -0
  23. package/dist/events.js.map +1 -0
  24. package/dist/format.d.ts +16 -0
  25. package/dist/format.d.ts.map +1 -0
  26. package/dist/format.js +77 -0
  27. package/dist/format.js.map +1 -0
  28. package/dist/identity.d.ts +2 -0
  29. package/dist/identity.d.ts.map +1 -0
  30. package/dist/identity.js +102 -0
  31. package/dist/identity.js.map +1 -0
  32. package/dist/index.js +130 -4
  33. package/dist/index.js.map +1 -1
  34. package/dist/me.d.ts +2 -0
  35. package/dist/me.d.ts.map +1 -0
  36. package/dist/me.js +11 -0
  37. package/dist/me.js.map +1 -0
  38. package/dist/notifications.d.ts +2 -0
  39. package/dist/notifications.d.ts.map +1 -0
  40. package/dist/notifications.js +179 -0
  41. package/dist/notifications.js.map +1 -0
  42. package/dist/passports.d.ts +2 -0
  43. package/dist/passports.d.ts.map +1 -0
  44. package/dist/passports.js +205 -0
  45. package/dist/passports.js.map +1 -0
  46. package/dist/services.d.ts +2 -0
  47. package/dist/services.d.ts.map +1 -0
  48. package/dist/services.js +167 -0
  49. package/dist/services.js.map +1 -0
  50. package/dist/skills.d.ts +2 -0
  51. package/dist/skills.d.ts.map +1 -0
  52. package/dist/skills.js +240 -0
  53. package/dist/skills.js.map +1 -0
  54. package/dist/team.d.ts +2 -0
  55. package/dist/team.d.ts.map +1 -0
  56. package/dist/team.js +86 -0
  57. package/dist/team.js.map +1 -0
  58. package/package.json +1 -1
@@ -0,0 +1,167 @@
1
+ // services subcommands — thin wrappers over /v1/services/* + /v1/credentials/*.
2
+ import { stdout, stderr, exit } from 'node:process';
3
+ import { api, takeFlag } from './api.js';
4
+ import { invokeHint } from './auth.js';
5
+ import { printJson, printTable, printRecord, fmt } from './format.js';
6
+ async function cmdCatalog(json) {
7
+ const list = await api('GET', '/v1/services');
8
+ if (json)
9
+ return printJson(list);
10
+ const rows = list.map((s) => [s.provider, s.name, s.available === false ? fmt.dim('soon') : fmt.ok('yes')]);
11
+ printTable(['PROVIDER', 'NAME', 'AVAILABLE'], rows);
12
+ }
13
+ async function cmdConnections(json) {
14
+ // /v1/services returns the catalog (services + connections). Dashboard
15
+ // route returns `{connections: [...]}` envelope after auth filter.
16
+ // Re-use that path so a CLI user sees the same authoritative list.
17
+ const out = await api('GET', '/v1/services');
18
+ const list = Array.isArray(out) ? out : (out?.connections ?? []);
19
+ if (json)
20
+ return printJson(list);
21
+ if (list.length === 0) {
22
+ stdout.write('(no service connections)\n');
23
+ return;
24
+ }
25
+ const rows = list.map((c) => [c.id, c.provider, c.status, (c.scopes ?? []).join(', ')]);
26
+ printTable(['ID', 'PROVIDER', 'STATUS', 'SCOPES'], rows);
27
+ }
28
+ async function cmdShow(connectionId, json) {
29
+ const out = await api('GET', `/v1/services/${encodeURIComponent(connectionId)}`);
30
+ if (json)
31
+ return printJson(out);
32
+ printRecord(out);
33
+ }
34
+ async function cmdVerify(connectionId, json) {
35
+ const out = await api('POST', `/v1/services/${encodeURIComponent(connectionId)}/verify`);
36
+ if (json)
37
+ return printJson(out);
38
+ printRecord(out);
39
+ }
40
+ async function cmdDisconnect(connectionId, json) {
41
+ const out = await api('DELETE', `/v1/services/${encodeURIComponent(connectionId)}/disconnect`);
42
+ if (json)
43
+ return printJson(out);
44
+ stdout.write(`disconnected ${connectionId}\n`);
45
+ }
46
+ async function cmdCredential(provider, json) {
47
+ // Returns the raw credential — operator-only path. WARNING for the
48
+ // human: shouldn't be in shell history; we don't suppress that here
49
+ // because pipeline use cases (e.g. `cred = $(stack-cli services
50
+ // credential stripe --json | jq .access_token)`) are legitimate.
51
+ const out = await api('GET', `/v1/credentials/${encodeURIComponent(provider)}`);
52
+ if (json)
53
+ return printJson(out);
54
+ printRecord(out);
55
+ }
56
+ async function cmdTemplates(json) {
57
+ const out = await api('GET', '/v1/services/templates');
58
+ const list = Array.isArray(out) ? out : (out?.templates ?? []);
59
+ if (json)
60
+ return printJson(list);
61
+ printJson(list);
62
+ }
63
+ async function cmdConnectCustom(args, json) {
64
+ const fromFile = takeFlag(args, '--from-file');
65
+ if (typeof fromFile !== 'string') {
66
+ stderr.write(`usage: ${invokeHint('service connect-custom --from-file <config.json>')}\n` +
67
+ `The JSON should include provider, name, credentials, etc. — see the dashboard custom-service form.\n`);
68
+ exit(2);
69
+ }
70
+ const { readFile } = await import('node:fs/promises');
71
+ const body = JSON.parse(await readFile(fromFile, 'utf8'));
72
+ const out = await api('POST', '/v1/services/custom', { body });
73
+ if (json)
74
+ return printJson(out);
75
+ printRecord(out);
76
+ }
77
+ async function cmdGrantAgent(args, json) {
78
+ const agentId = takeFlag(args, '--agent');
79
+ const connectionId = takeFlag(args, '--connection');
80
+ const scopesRaw = takeFlag(args, '--scopes');
81
+ if (typeof agentId !== 'string' || typeof connectionId !== 'string') {
82
+ stderr.write(`usage: ${invokeHint('service grant --agent <id> --connection <connection-id> [--scopes scope1,scope2]')}\n`);
83
+ exit(2);
84
+ }
85
+ const scopes = typeof scopesRaw === 'string' ? scopesRaw.split(',').map((s) => s.trim()).filter(Boolean) : undefined;
86
+ const body = { agent_id: agentId, service_connection_id: connectionId };
87
+ if (scopes)
88
+ body.scopes = scopes;
89
+ const out = await api('POST', '/v1/services/grant', { body });
90
+ if (json)
91
+ return printJson(out);
92
+ printRecord(out);
93
+ }
94
+ async function cmdRevokeAgent(agentId, json) {
95
+ const out = await api('DELETE', `/v1/services/agents/${encodeURIComponent(agentId)}/revoke`);
96
+ if (json)
97
+ return printJson(out);
98
+ stdout.write(`revoked all service access for ${agentId}\n`);
99
+ }
100
+ async function cmdAgentPermissions(agentId, json) {
101
+ const out = await api('GET', `/v1/agents/${encodeURIComponent(agentId)}/permissions`);
102
+ if (json)
103
+ return printJson(out);
104
+ printJson(out);
105
+ }
106
+ export async function cmdService(args) {
107
+ const json = !!takeFlag(args, '--json');
108
+ const sub = args[0];
109
+ const arg1 = args[1];
110
+ if (sub === 'catalog' || sub === 'available' || sub === 'list')
111
+ return cmdCatalog(json);
112
+ if (sub === 'connections' || sub === 'connected')
113
+ return cmdConnections(json);
114
+ if (sub === 'show') {
115
+ if (!arg1) {
116
+ stderr.write(`usage: ${invokeHint('service show <connection-id>')}\n`);
117
+ exit(2);
118
+ }
119
+ return cmdShow(arg1, json);
120
+ }
121
+ if (sub === 'verify') {
122
+ if (!arg1) {
123
+ stderr.write(`usage: ${invokeHint('service verify <connection-id>')}\n`);
124
+ exit(2);
125
+ }
126
+ return cmdVerify(arg1, json);
127
+ }
128
+ if (sub === 'disconnect') {
129
+ if (!arg1) {
130
+ stderr.write(`usage: ${invokeHint('service disconnect <connection-id>')}\n`);
131
+ exit(2);
132
+ }
133
+ return cmdDisconnect(arg1, json);
134
+ }
135
+ if (sub === 'credential') {
136
+ if (!arg1) {
137
+ stderr.write(`usage: ${invokeHint('service credential <provider>')}\n`);
138
+ exit(2);
139
+ }
140
+ return cmdCredential(arg1, json);
141
+ }
142
+ if (sub === 'templates')
143
+ return cmdTemplates(json);
144
+ if (sub === 'connect-custom' || sub === 'custom')
145
+ return cmdConnectCustom(args.slice(1), json);
146
+ if (sub === 'grant')
147
+ return cmdGrantAgent(args.slice(1), json);
148
+ if (sub === 'revoke-agent') {
149
+ if (!arg1) {
150
+ stderr.write(`usage: ${invokeHint('service revoke-agent <agent-id>')}\n`);
151
+ exit(2);
152
+ }
153
+ return cmdRevokeAgent(arg1, json);
154
+ }
155
+ if (sub === 'permissions') {
156
+ if (!arg1) {
157
+ stderr.write(`usage: ${invokeHint('service permissions <agent-id>')}\n`);
158
+ exit(2);
159
+ }
160
+ return cmdAgentPermissions(arg1, json);
161
+ }
162
+ stderr.write(`error: unknown service subcommand "${sub ?? ''}".\n` +
163
+ `Use catalog | connections | show | verify | disconnect | credential | templates | connect-custom | grant | revoke-agent | permissions\n` +
164
+ `Note: connecting an OAuth service is browser-driven via the dashboard.\n`);
165
+ exit(2);
166
+ }
167
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../src/services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function cmdSkill(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AA+KA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0D5D"}
package/dist/skills.js ADDED
@@ -0,0 +1,240 @@
1
+ // skills subcommands.
2
+ import { stdout, stderr, exit } from 'node:process';
3
+ import { api, takeFlag } from './api.js';
4
+ import { invokeHint } from './auth.js';
5
+ import { printJson, printTable, printRecord, fmt } from './format.js';
6
+ async function cmdBrowse(args, json) {
7
+ const query = takeFlag(args, '--q');
8
+ const list = await api('GET', '/v1/skills', {
9
+ query: { q: typeof query === 'string' ? query : undefined },
10
+ });
11
+ if (json)
12
+ return printJson(list);
13
+ if (list.length === 0) {
14
+ stdout.write('(no skills match)\n');
15
+ return;
16
+ }
17
+ const rows = list.map((s) => [
18
+ s.id,
19
+ s.name,
20
+ s.trust_required ?? '—',
21
+ s.price_cents != null ? `$${(s.price_cents / 100).toFixed(2)}` : fmt.dim('free'),
22
+ ]);
23
+ printTable(['ID', 'NAME', 'TRUST', 'PRICE'], rows);
24
+ }
25
+ async function cmdMine(json) {
26
+ const list = await api('GET', '/v1/skills/mine');
27
+ if (json)
28
+ return printJson(list);
29
+ if (list.length === 0) {
30
+ stdout.write('(you have no published skills)\n');
31
+ return;
32
+ }
33
+ const rows = list.map((s) => [s.id, s.name, s.status ?? '—']);
34
+ printTable(['ID', 'NAME', 'STATUS'], rows);
35
+ }
36
+ async function cmdShow(id, json) {
37
+ const out = await api('GET', `/v1/skills/${encodeURIComponent(id)}`);
38
+ if (json)
39
+ return printJson(out);
40
+ printRecord(out);
41
+ }
42
+ async function cmdSuspend(id, state, json) {
43
+ const out = await api('POST', `/v1/skills/${encodeURIComponent(id)}/${state}`);
44
+ if (json)
45
+ return printJson(out);
46
+ stdout.write(`${state}d ${id}\n`);
47
+ }
48
+ async function cmdFavorites(json) {
49
+ const out = await api('GET', '/v1/skills/favorites');
50
+ if (json)
51
+ return printJson(out);
52
+ if (!Array.isArray(out) || out.length === 0) {
53
+ stdout.write('(no favorites)\n');
54
+ return;
55
+ }
56
+ const rows = out.map((s) => [s.id, s.name, s.trust_required ?? '—']);
57
+ printTable(['ID', 'NAME', 'TRUST'], rows);
58
+ }
59
+ async function cmdInvocations(args, json) {
60
+ const out = await api('GET', '/v1/skills/invocations/pending');
61
+ const list = Array.isArray(out) ? out : (out.invocations ?? []);
62
+ if (json)
63
+ return printJson(list);
64
+ printJson(list);
65
+ void args;
66
+ }
67
+ async function cmdInvocationCheck(invocationId, json) {
68
+ const out = await api('GET', `/v1/skills/invocations/${encodeURIComponent(invocationId)}`);
69
+ if (json)
70
+ return printJson(out);
71
+ printRecord(out);
72
+ }
73
+ async function cmdInvocationComplete(invocationId, args, json) {
74
+ const status = takeFlag(args, '--status');
75
+ const fromFile = takeFlag(args, '--result-file');
76
+ const body = {};
77
+ if (typeof status === 'string')
78
+ body.status = status;
79
+ if (typeof fromFile === 'string') {
80
+ const { readFile } = await import('node:fs/promises');
81
+ body.result = JSON.parse(await readFile(fromFile, 'utf8'));
82
+ }
83
+ const out = await api('POST', `/v1/skills/invocations/${encodeURIComponent(invocationId)}/complete`, { body });
84
+ if (json)
85
+ return printJson(out);
86
+ printRecord(out);
87
+ }
88
+ async function cmdCheckTrust(skillId, json) {
89
+ const out = await api('POST', `/v1/skills/${encodeURIComponent(skillId)}/check-trust`, { body: {} });
90
+ if (json)
91
+ return printJson(out);
92
+ printRecord(out);
93
+ }
94
+ async function cmdFindMatching(args, json) {
95
+ const desc = takeFlag(args, '--description');
96
+ if (typeof desc !== 'string') {
97
+ stderr.write(`usage: ${invokeHint('skill find --description "<what you want to do>"')}\n`);
98
+ exit(2);
99
+ }
100
+ const out = await api('POST', '/v1/skills/find-matching', { body: { description: desc } });
101
+ if (json)
102
+ return printJson(out);
103
+ printJson(out);
104
+ }
105
+ async function cmdSuggestComposition(args, json) {
106
+ const desc = takeFlag(args, '--description');
107
+ if (typeof desc !== 'string') {
108
+ stderr.write(`usage: ${invokeHint('skill suggest-composition --description "<what you want to do>"')}\n`);
109
+ exit(2);
110
+ }
111
+ const out = await api('POST', '/v1/skills/suggest-composition', { body: { description: desc } });
112
+ if (json)
113
+ return printJson(out);
114
+ printJson(out);
115
+ }
116
+ async function cmdAgentAllow(args, allow, json) {
117
+ const agentId = takeFlag(args, '--agent');
118
+ const skillId = args[0];
119
+ if (!skillId || typeof agentId !== 'string') {
120
+ stderr.write(`usage: ${invokeHint(`skill ${allow ? 'allow' : 'disallow'} <skill-id> --agent <agent-id>`)}\n`);
121
+ exit(2);
122
+ }
123
+ const out = await api('POST', `/v1/agents/${encodeURIComponent(agentId)}/allowed-skills/${allow ? 'add' : 'remove'}`, { body: { skill_id: skillId } });
124
+ if (json)
125
+ return printJson(out);
126
+ stdout.write(`${allow ? 'allowed' : 'disallowed'} ${skillId} for ${agentId}\n`);
127
+ }
128
+ async function cmdPendingReviews(json) {
129
+ const out = await api('GET', '/v1/skills/reviews/pending');
130
+ const list = Array.isArray(out) ? out : (out.reviews ?? []);
131
+ if (json)
132
+ return printJson(list);
133
+ printJson(list);
134
+ }
135
+ async function cmdDecideReview(reviewId, args, json) {
136
+ const decision = takeFlag(args, '--decision');
137
+ const note = takeFlag(args, '--note');
138
+ if (typeof decision !== 'string') {
139
+ stderr.write(`usage: ${invokeHint('skill decide-review <review-id> --decision approve|reject [--note "..."]')}\n`);
140
+ exit(2);
141
+ }
142
+ const body = { decision };
143
+ if (typeof note === 'string')
144
+ body.note = note;
145
+ const out = await api('POST', `/v1/skills/reviews/${encodeURIComponent(reviewId)}/decide`, { body });
146
+ if (json)
147
+ return printJson(out);
148
+ printRecord(out);
149
+ }
150
+ async function cmdRequestsList(json) {
151
+ const out = await api('GET', '/v1/skill-requests');
152
+ const list = Array.isArray(out) ? out : (out?.requests ?? []);
153
+ if (json)
154
+ return printJson(list);
155
+ printJson(list);
156
+ }
157
+ async function cmdRequestPost(description, json) {
158
+ const out = await api('POST', '/v1/skill-requests', { body: { description } });
159
+ if (json)
160
+ return printJson(out);
161
+ printRecord(out);
162
+ }
163
+ export async function cmdSkill(args) {
164
+ const json = !!takeFlag(args, '--json');
165
+ const sub = args[0];
166
+ const arg1 = args[1];
167
+ if (sub === 'list' || sub === 'browse')
168
+ return cmdBrowse(args.slice(1), json);
169
+ if (sub === 'mine' || sub === 'published')
170
+ return cmdMine(json);
171
+ if (sub === 'show' || sub === 'get') {
172
+ if (!arg1) {
173
+ stderr.write(`usage: ${invokeHint('skill show <id>')}\n`);
174
+ exit(2);
175
+ }
176
+ return cmdShow(arg1, json);
177
+ }
178
+ if (sub === 'suspend' || sub === 'activate') {
179
+ if (!arg1) {
180
+ stderr.write(`usage: ${invokeHint(`skill ${sub} <id>`)}\n`);
181
+ exit(2);
182
+ }
183
+ return cmdSuspend(arg1, sub, json);
184
+ }
185
+ if (sub === 'requests')
186
+ return cmdRequestsList(json);
187
+ if (sub === 'post-request') {
188
+ if (!arg1) {
189
+ stderr.write(`usage: ${invokeHint('skill post-request "<description>"')}\n`);
190
+ exit(2);
191
+ }
192
+ return cmdRequestPost(arg1, json);
193
+ }
194
+ if (sub === 'favorites')
195
+ return cmdFavorites(json);
196
+ if (sub === 'invocations')
197
+ return cmdInvocations(args.slice(1), json);
198
+ if (sub === 'check-invocation') {
199
+ if (!arg1) {
200
+ stderr.write(`usage: ${invokeHint('skill check-invocation <invocation-id>')}\n`);
201
+ exit(2);
202
+ }
203
+ return cmdInvocationCheck(arg1, json);
204
+ }
205
+ if (sub === 'complete') {
206
+ if (!arg1) {
207
+ stderr.write(`usage: ${invokeHint('skill complete <invocation-id> [--status ...] [--result-file <f.json>]')}\n`);
208
+ exit(2);
209
+ }
210
+ return cmdInvocationComplete(arg1, args.slice(2), json);
211
+ }
212
+ if (sub === 'check-trust') {
213
+ if (!arg1) {
214
+ stderr.write(`usage: ${invokeHint('skill check-trust <skill-id>')}\n`);
215
+ exit(2);
216
+ }
217
+ return cmdCheckTrust(arg1, json);
218
+ }
219
+ if (sub === 'find')
220
+ return cmdFindMatching(args.slice(1), json);
221
+ if (sub === 'suggest-composition')
222
+ return cmdSuggestComposition(args.slice(1), json);
223
+ if (sub === 'allow')
224
+ return cmdAgentAllow(args.slice(1), true, json);
225
+ if (sub === 'disallow')
226
+ return cmdAgentAllow(args.slice(1), false, json);
227
+ if (sub === 'pending-reviews')
228
+ return cmdPendingReviews(json);
229
+ if (sub === 'decide-review') {
230
+ if (!arg1) {
231
+ stderr.write(`usage: ${invokeHint('skill decide-review <review-id> --decision approve|reject [--note "..."]')}\n`);
232
+ exit(2);
233
+ }
234
+ return cmdDecideReview(arg1, args.slice(2), json);
235
+ }
236
+ stderr.write(`error: unknown skill subcommand "${sub ?? ''}".\n` +
237
+ `Use list | mine | show | suspend | activate | requests | post-request | favorites | invocations | check-invocation | complete | check-trust | find | suggest-composition | allow | disallow | pending-reviews | decide-review\n`);
238
+ exit(2);
239
+ }
240
+ //# sourceMappingURL=skills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
package/dist/team.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export declare function cmdTeam(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=team.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.d.ts","sourceRoot":"","sources":["../src/team.ts"],"names":[],"mappings":"AAmEA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyB3D"}
package/dist/team.js ADDED
@@ -0,0 +1,86 @@
1
+ // team / members subcommands.
2
+ import { stdout, stderr, exit } from 'node:process';
3
+ import { api, takeFlag } from './api.js';
4
+ import { invokeHint } from './auth.js';
5
+ import { printJson, printTable, printRecord, fmt, fmtTs } from './format.js';
6
+ async function cmdList(json) {
7
+ const list = await api('GET', '/v1/team/members');
8
+ if (json)
9
+ return printJson(list);
10
+ if (list.length === 0) {
11
+ stdout.write('(no team members)\n');
12
+ return;
13
+ }
14
+ const rows = list.map((m) => [
15
+ m.id,
16
+ m.email,
17
+ m.role,
18
+ m.status === 'active' ? fmt.ok(m.status) : m.status === 'pending' ? fmt.warn(m.status) : fmt.dim(m.status),
19
+ fmtTs(m.created_at ?? null),
20
+ ]);
21
+ printTable(['ID', 'EMAIL', 'ROLE', 'STATUS', 'JOINED'], rows);
22
+ }
23
+ async function cmdInvite(args, json) {
24
+ const email = args[0];
25
+ const role = takeFlag(args, '--role');
26
+ if (!email) {
27
+ stderr.write(`usage: ${invokeHint('team invite <email> [--role admin|standard|readonly]')}\n`);
28
+ exit(2);
29
+ }
30
+ const body = { email };
31
+ if (typeof role === 'string')
32
+ body.role = role;
33
+ const out = await api('POST', '/v1/team/members', { body });
34
+ if (json)
35
+ return printJson(out);
36
+ stdout.write(`invited ${out.email} (${out.id}) — role=${out.role}\n`);
37
+ }
38
+ async function cmdUpdate(id, args, json) {
39
+ const role = takeFlag(args, '--role');
40
+ const status = takeFlag(args, '--status');
41
+ const body = {};
42
+ if (typeof role === 'string')
43
+ body.role = role;
44
+ if (typeof status === 'string')
45
+ body.status = status;
46
+ if (Object.keys(body).length === 0) {
47
+ stderr.write(`usage: ${invokeHint('team update <id> [--role ...] [--status ...]')}\n`);
48
+ exit(2);
49
+ }
50
+ const out = await api('PATCH', `/v1/team/members/${encodeURIComponent(id)}`, { body });
51
+ if (json)
52
+ return printJson(out);
53
+ printRecord(out);
54
+ }
55
+ async function cmdRevoke(id, json) {
56
+ const out = await api('DELETE', `/v1/team/members/${encodeURIComponent(id)}`);
57
+ if (json)
58
+ return printJson(out);
59
+ stdout.write(`revoked ${id}\n`);
60
+ }
61
+ export async function cmdTeam(args) {
62
+ const json = !!takeFlag(args, '--json');
63
+ const sub = args[0];
64
+ const arg1 = args[1];
65
+ if (sub === 'list' || sub === 'ls')
66
+ return cmdList(json);
67
+ if (sub === 'invite')
68
+ return cmdInvite(args.slice(1), json);
69
+ if (sub === 'update') {
70
+ if (!arg1) {
71
+ stderr.write(`usage: ${invokeHint('team update <id> [--role ...] [--status ...]')}\n`);
72
+ exit(2);
73
+ }
74
+ return cmdUpdate(arg1, args.slice(2), json);
75
+ }
76
+ if (sub === 'revoke' || sub === 'remove') {
77
+ if (!arg1) {
78
+ stderr.write(`usage: ${invokeHint('team revoke <id>')}\n`);
79
+ exit(2);
80
+ }
81
+ return cmdRevoke(arg1, json);
82
+ }
83
+ stderr.write(`error: unknown team subcommand "${sub ?? ''}".\nUse list | invite | update | revoke\n`);
84
+ exit(2);
85
+ }
86
+ //# sourceMappingURL=team.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.js","sourceRoot":"","sources":["../src/team.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstackrun/cli",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "description": "Tail STACK runtime activity in your terminal — replay a real-shape demo or stream your own audit_log.",
5
5
  "type": "module",
6
6
  "bin": {