@getstackrun/cli 0.4.1 → 0.5.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.
package/README.md CHANGED
@@ -1,41 +1,65 @@
1
1
  # @getstackrun/cli
2
2
 
3
- Tail STACK runtime activity in your terminal.
3
+ Tail STACK runtime activity in your terminal. Sign in via OAuth Device flow.
4
4
 
5
5
  ```sh
6
- # replay a real-shape demo (no auth needed)
7
- npx @getstackrun/cli monitor --demo --loop
6
+ # Sign in (browser opens, RFC 8628 Device flow)
7
+ npx @getstackrun/cli auth login
8
8
 
9
- # tail your own audit_log
10
- STACK_API_KEY=sk_live_… npx @getstackrun/cli monitor --follow
9
+ # Tail your audit_log — no env vars needed after auth login
10
+ npx @getstackrun/cli monitor --follow
11
+
12
+ # Replay a real-shape demo (no auth needed)
13
+ npx @getstackrun/cli monitor --demo --loop
11
14
  ```
12
15
 
13
- Both modes render rows of the same shape — straight from `audit_log` columns
14
- on STACK's API. What you see in `--demo` is the same shape `--follow` will
15
- produce against your own data.
16
+ Both monitor modes render rows of the same shape — straight from `audit_log` columns
17
+ on STACK's API. What you see in `--demo` is the same shape `--follow` produces against
18
+ your own data.
16
19
 
17
20
  ## Commands
18
21
 
22
+ ### `auth`
23
+
24
+ ```
25
+ auth login Sign in via the browser (Device flow, RFC 8628).
26
+ Stores a refresh token at ~/.stack/credentials.json
27
+ with mode 0600. SDKs read it automatically.
28
+ auth status Show the current sign-in state (operator email, scope, expiry).
29
+ auth logout Revoke the refresh token and clear the local file.
30
+ ```
31
+
19
32
  ### `monitor`
20
33
 
21
34
  ```
22
35
  --demo Replay a real-shape mission (no auth needed).
23
36
  Same row format as --follow, just scripted.
24
- --follow Tail your operator's actual audit_log.
25
- Requires STACK_API_KEY env var. Polls every 2s.
37
+ --follow Tail your operator's actual audit_log. Polls
38
+ every 2s. Auth picked in priority order:
39
+ 1. STACK_API_KEY env var (legacy CI path)
40
+ 2. ~/.stack/credentials.json (auth login)
26
41
  --loop Loop the demo until Ctrl-C (default is one run).
27
42
  --agent <agent_id> (--follow) Only show entries for this agent.
28
43
  --jti <passport_jti> (--follow) Only show entries for this passport.
44
+ --sandbox (--follow) Tail the public sandbox feed at
45
+ https://api.getstack.run/v1/public/events.
46
+ No auth needed.
29
47
  ```
30
48
 
31
49
  #### Examples
32
50
 
33
51
  ```sh
34
52
  # Tail one agent
35
- STACK_API_KEY=sk_live_… npx @getstackrun/cli monitor --follow --agent abc123
53
+ npx @getstackrun/cli monitor --follow --agent agt_abc123
36
54
 
37
- # Tail one passport (e.g. for debugging a specific revoke chain)
38
- STACK_API_KEY=sk_live_… npx @getstackrun/cli monitor --follow --jti pas_xyz789
55
+ # Tail one passport (e.g. debugging a specific revoke chain)
56
+ npx @getstackrun/cli monitor --follow --jti pas_xyz789
57
+
58
+ # Tail the public sandbox (no signup, no key)
59
+ npx @getstackrun/cli monitor --follow --sandbox
60
+
61
+ # CI mode (no browser)
62
+ STACK_API_KEY=sk_live_… npx @getstackrun/cli monitor --follow
39
63
  ```
40
64
 
41
65
  ### `register`
@@ -46,10 +70,26 @@ npx @getstackrun/cli register
46
70
 
47
71
  Prints signup + MCP-install instructions for connecting STACK to Claude Code.
48
72
 
49
- ## Get an API key
73
+ ## Authentication
74
+
75
+ `auth login` runs the OAuth 2.1 Device Authorization Grant against
76
+ `https://api.getstack.run`:
77
+
78
+ 1. CLI dynamically registers itself as a public PKCE client (one client_id per install).
79
+ 2. Server issues a `device_code` + a human-readable `user_code` (e.g. `WDJB-MJHT`).
80
+ 3. CLI prints the URL + opens your browser to `https://getstack.run/cli/auth?code=...`.
81
+ 4. You confirm the code and approve.
82
+ 5. CLI persists the refresh token to `~/.stack/credentials.json` (mode 0600).
83
+
84
+ Refresh tokens auto-rotate on every use. The same file is also read by both SDKs
85
+ (`@getstackrun/sdk` for TS/JS, `getstack` for Python), so signing in once gives all
86
+ three surfaces a working credential.
87
+
88
+ For CI environments without a browser: keep `STACK_API_KEY=sk_live_...` —
89
+ the CLI still accepts it as a fallback.
50
90
 
51
- Sign up at [getstack.run](https://getstack.run) (magic link, no password).
52
- Copy your key from the dashboard. Set as `STACK_API_KEY` to use `monitor --follow`.
91
+ See [/docs/security/stack-auth](https://getstack.run/docs/security/stack-auth) for
92
+ the full auth model.
53
93
 
54
94
  ## License
55
95
 
package/dist/auth.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export declare function cmdLogin(): Promise<void>;
2
+ export declare function cmdStatus(): Promise<void>;
3
+ export declare function cmdLogout(): Promise<void>;
4
+ /**
5
+ * Used by `monitor --follow` and any future authenticated command.
6
+ * Returns a fresh access token by exchanging the stored refresh token.
7
+ * Falls back to STACK_API_KEY env var for back-compat with existing
8
+ * users who haven't migrated. Returns null when no auth source exists.
9
+ */
10
+ export declare function getAccessToken(): Promise<string | null>;
11
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AA+IA,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA0E9C;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAkB/C;AAED,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAmB/C;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiC7D"}
package/dist/auth.js ADDED
@@ -0,0 +1,283 @@
1
+ // CLI auth — Device Authorization Grant (RFC 8628).
2
+ //
3
+ // stack-cli auth login → DCR-register a client (first run only), kick off
4
+ // the device flow, print user_code + URL, open the browser, poll the
5
+ // token endpoint, persist refresh_token to ~/.stack/credentials.json.
6
+ // stack-cli auth status → read credentials, exchange refresh → access,
7
+ // call /v1/operators/me, print operator + scope.
8
+ // stack-cli auth logout → revoke refresh, delete credentials file.
9
+ //
10
+ // No native deps. Refresh tokens live in a file with mode 0600. macOS
11
+ // Keychain / Windows Credential Manager / libsecret integration is a
12
+ // follow-up — Phase 3 closes the file-on-disk threat with passkey-rooted
13
+ // retrieval. Until then this matches the storage model of `aws cli`,
14
+ // `gcloud`, etc.
15
+ import { stdout, stderr, env, exit, platform } from 'node:process';
16
+ import { homedir } from 'node:os';
17
+ import { join } from 'node:path';
18
+ import { mkdir, writeFile, readFile, chmod, unlink } from 'node:fs/promises';
19
+ import { spawn } from 'node:child_process';
20
+ import { createHash, randomBytes } from 'node:crypto';
21
+ const API_URL = env['STACK_API_URL'] ?? 'https://api.getstack.run';
22
+ const RESOURCE = env['STACK_OAUTH_RESOURCE'] ?? `${API_URL}`;
23
+ const SCOPE = env['STACK_OAUTH_SCOPE'] ?? 'passports:read agents:read services:read audit:read';
24
+ const useColor = stdout.isTTY === true && !env['NO_COLOR'];
25
+ const color = (n) => (useColor ? `\x1b[${n}m` : '');
26
+ const C = {
27
+ reset: color('0'), bold: color('1'), dim: color('2'),
28
+ red: color('31'), green: color('32'), yellow: color('33'), cyan: color('36'), gray: color('90'), white: color('37'),
29
+ };
30
+ const CREDS_DIR = join(homedir(), '.stack');
31
+ const CREDS_PATH = join(CREDS_DIR, 'credentials.json');
32
+ async function readCreds() {
33
+ try {
34
+ const raw = await readFile(CREDS_PATH, 'utf8');
35
+ return JSON.parse(raw);
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ async function writeCreds(creds) {
42
+ await mkdir(CREDS_DIR, { recursive: true });
43
+ await writeFile(CREDS_PATH, JSON.stringify(creds, null, 2), 'utf8');
44
+ // Restrict to owner — best-effort on Windows where chmod is a no-op,
45
+ // but the default ACL on %USERPROFILE%\.stack is already user-scoped.
46
+ try {
47
+ await chmod(CREDS_PATH, 0o600);
48
+ }
49
+ catch {
50
+ /* Windows / unsupported FS — ignore */
51
+ }
52
+ }
53
+ async function deleteCreds() {
54
+ try {
55
+ await unlink(CREDS_PATH);
56
+ }
57
+ catch {
58
+ /* already gone */
59
+ }
60
+ }
61
+ function openBrowser(url) {
62
+ // Best-effort. Failure is silent — the URL is also printed.
63
+ try {
64
+ if (platform === 'darwin')
65
+ spawn('open', [url], { stdio: 'ignore', detached: true }).unref();
66
+ else if (platform === 'win32')
67
+ spawn('cmd', ['/c', 'start', '', url], { stdio: 'ignore', detached: true }).unref();
68
+ else
69
+ spawn('xdg-open', [url], { stdio: 'ignore', detached: true }).unref();
70
+ }
71
+ catch {
72
+ /* user opens manually */
73
+ }
74
+ }
75
+ async function ensureClientId(creds) {
76
+ if (creds?.client_id)
77
+ return creds.client_id;
78
+ // Dynamic Client Registration (RFC 7591). Public PKCE client; one
79
+ // client_id per CLI install — better blast radius than a single
80
+ // shared client_id.
81
+ const res = await fetch(`${API_URL}/oauth/register`, {
82
+ method: 'POST',
83
+ headers: { 'Content-Type': 'application/json' },
84
+ body: JSON.stringify({
85
+ client_name: 'STACK CLI',
86
+ redirect_uris: ['http://127.0.0.1/callback'], // unused for device flow but required by spec
87
+ grant_types: ['urn:ietf:params:oauth:grant-type:device_code', 'refresh_token'],
88
+ software_id: 'getstack.cli',
89
+ scope: SCOPE,
90
+ }),
91
+ });
92
+ if (!res.ok) {
93
+ const data = await res.json().catch(() => ({}));
94
+ throw new Error(`client registration failed: ${data.error_description ?? data.error ?? res.statusText}`);
95
+ }
96
+ const data = (await res.json());
97
+ return data.client_id;
98
+ }
99
+ async function pollToken(deviceCode, clientId, intervalSeconds) {
100
+ let interval = intervalSeconds * 1000;
101
+ // Cap total wait at the device code TTL (15 min) — the API will return
102
+ // expired_token once it lapses, but bail explicitly so the CLI doesn't
103
+ // loop indefinitely if the API is unreachable.
104
+ const deadline = Date.now() + 15 * 60 * 1000;
105
+ while (Date.now() < deadline) {
106
+ await new Promise((r) => setTimeout(r, interval));
107
+ const res = await fetch(`${API_URL}/oauth/token`, {
108
+ method: 'POST',
109
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
110
+ body: new URLSearchParams({
111
+ grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
112
+ device_code: deviceCode,
113
+ client_id: clientId,
114
+ }),
115
+ });
116
+ const data = (await res.json().catch(() => ({})));
117
+ if (res.ok && data.access_token && data.refresh_token) {
118
+ return { access_token: data.access_token, refresh_token: data.refresh_token, scope: data.scope ?? SCOPE };
119
+ }
120
+ if (data.error === 'authorization_pending')
121
+ continue;
122
+ if (data.error === 'slow_down') {
123
+ interval = Math.min(interval * 2, 60_000);
124
+ continue;
125
+ }
126
+ if (data.error === 'access_denied')
127
+ throw new Error('user denied the request');
128
+ if (data.error === 'expired_token')
129
+ throw new Error('device code expired — run `stack-cli auth login` again');
130
+ if (data.error)
131
+ throw new Error(`token endpoint: ${data.error}`);
132
+ }
133
+ throw new Error('device code expired (CLI timeout)');
134
+ }
135
+ export async function cmdLogin() {
136
+ const existing = await readCreds();
137
+ const clientId = await ensureClientId(existing);
138
+ // Kick off the device flow.
139
+ const deviceRes = await fetch(`${API_URL}/oauth/device/authorize`, {
140
+ method: 'POST',
141
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
142
+ body: new URLSearchParams({ client_id: clientId, scope: SCOPE, resource: RESOURCE }),
143
+ });
144
+ if (!deviceRes.ok) {
145
+ const data = (await deviceRes.json().catch(() => ({})));
146
+ stderr.write(`${C.red}error:${C.reset} ${data.error_description ?? data.error ?? `HTTP ${deviceRes.status}`}\n`);
147
+ exit(1);
148
+ }
149
+ const device = (await deviceRes.json());
150
+ stdout.write(`
151
+ ${C.bold}STACK CLI sign-in${C.reset}
152
+ ${C.gray}─────────────────${C.reset}
153
+
154
+ ${C.dim}1.${C.reset} Open this URL in your browser:
155
+ ${C.cyan}${device.verification_uri_complete}${C.reset}
156
+
157
+ ${C.dim}2.${C.reset} Confirm this code matches what your browser shows:
158
+ ${C.bold}${C.green}${device.user_code}${C.reset}
159
+
160
+ ${C.gray}Waiting for approval...${C.reset}
161
+
162
+ `);
163
+ openBrowser(device.verification_uri_complete);
164
+ let tokens;
165
+ try {
166
+ tokens = await pollToken(device.device_code, clientId, device.interval);
167
+ }
168
+ catch (err) {
169
+ stderr.write(`${C.red}error:${C.reset} ${err.message}\n`);
170
+ exit(1);
171
+ }
172
+ // Fetch operator email for friendly status display. Best-effort.
173
+ let operatorEmail;
174
+ try {
175
+ const meRes = await fetch(`${API_URL}/v1/operators/me`, {
176
+ headers: { Authorization: `Bearer ${tokens.access_token}` },
177
+ });
178
+ if (meRes.ok) {
179
+ const me = (await meRes.json());
180
+ operatorEmail = me.email;
181
+ }
182
+ }
183
+ catch {
184
+ /* non-fatal */
185
+ }
186
+ await writeCreds({
187
+ client_id: clientId,
188
+ refresh_token: tokens.refresh_token,
189
+ issued_at: Math.floor(Date.now() / 1000),
190
+ refresh_expires_at: Math.floor(Date.now() / 1000) + 30 * 24 * 60 * 60,
191
+ operator_email: operatorEmail,
192
+ scope: tokens.scope,
193
+ });
194
+ stdout.write(` ${C.green}✓${C.reset} Signed in${operatorEmail ? ` as ${C.bold}${operatorEmail}${C.reset}` : ''}
195
+ ${C.gray}Credentials saved to ${CREDS_PATH}${C.reset}
196
+
197
+ `);
198
+ }
199
+ export async function cmdStatus() {
200
+ const creds = await readCreds();
201
+ if (!creds) {
202
+ stdout.write(`${C.gray}Not signed in.${C.reset} Run ${C.cyan}stack-cli auth login${C.reset}.\n`);
203
+ exit(1);
204
+ }
205
+ const refreshExpiresIn = creds.refresh_expires_at - Math.floor(Date.now() / 1000);
206
+ if (refreshExpiresIn <= 0) {
207
+ stdout.write(`${C.yellow}Session expired.${C.reset} Run ${C.cyan}stack-cli auth login${C.reset} again.\n`);
208
+ exit(1);
209
+ }
210
+ const days = Math.floor(refreshExpiresIn / 86400);
211
+ stdout.write(` ${C.green}✓${C.reset} Signed in${creds.operator_email ? ` as ${C.bold}${creds.operator_email}${C.reset}` : ''}
212
+ ${C.gray}Scope:${C.reset} ${creds.scope}
213
+ ${C.gray}Client:${C.reset} ${creds.client_id}
214
+ ${C.gray}Expires:${C.reset} in ${days} day${days === 1 ? '' : 's'}
215
+ ${C.gray}File:${C.reset} ${CREDS_PATH}
216
+ `);
217
+ }
218
+ export async function cmdLogout() {
219
+ const creds = await readCreds();
220
+ if (!creds) {
221
+ stdout.write(`${C.gray}Not signed in.${C.reset}\n`);
222
+ return;
223
+ }
224
+ // Best-effort revoke. Failure on the network doesn't stop us deleting
225
+ // the local file — that's the user's intent here.
226
+ try {
227
+ await fetch(`${API_URL}/oauth/revoke`, {
228
+ method: 'POST',
229
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
230
+ body: new URLSearchParams({ token: creds.refresh_token, client_id: creds.client_id }),
231
+ });
232
+ }
233
+ catch {
234
+ /* network error — local file removal still succeeds */
235
+ }
236
+ await deleteCreds();
237
+ stdout.write(` ${C.green}✓${C.reset} Signed out\n`);
238
+ }
239
+ /**
240
+ * Used by `monitor --follow` and any future authenticated command.
241
+ * Returns a fresh access token by exchanging the stored refresh token.
242
+ * Falls back to STACK_API_KEY env var for back-compat with existing
243
+ * users who haven't migrated. Returns null when no auth source exists.
244
+ */
245
+ export async function getAccessToken() {
246
+ const apiKey = env['STACK_API_KEY'];
247
+ if (apiKey)
248
+ return apiKey; // legacy path
249
+ const creds = await readCreds();
250
+ if (!creds)
251
+ return null;
252
+ const res = await fetch(`${API_URL}/oauth/token`, {
253
+ method: 'POST',
254
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
255
+ body: new URLSearchParams({
256
+ grant_type: 'refresh_token',
257
+ refresh_token: creds.refresh_token,
258
+ client_id: creds.client_id,
259
+ }),
260
+ });
261
+ if (!res.ok) {
262
+ const data = (await res.json().catch(() => ({})));
263
+ if (data.error === 'invalid_grant') {
264
+ // Refresh revoked or family broken — wipe and force re-login.
265
+ await deleteCreds();
266
+ }
267
+ return null;
268
+ }
269
+ const data = (await res.json());
270
+ // Rotate stored refresh.
271
+ await writeCreds({
272
+ ...creds,
273
+ refresh_token: data.refresh_token,
274
+ issued_at: Math.floor(Date.now() / 1000),
275
+ refresh_expires_at: Math.floor(Date.now() / 1000) + 30 * 24 * 60 * 60,
276
+ });
277
+ return data.access_token;
278
+ }
279
+ // Suppress unused-import warnings for crypto helpers we may need in
280
+ // future Phase-2 SDK-keypair-style additions; safe no-op today.
281
+ void createHash;
282
+ void randomBytes;
283
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { argv, env, stdout, stderr } from 'node:process';
3
+ import { cmdLogin, cmdLogout, cmdStatus, getAccessToken } from './auth.js';
3
4
  const DASHBOARD_URL = 'https://getstack.run';
4
5
  const API_URL = env['STACK_API_URL'] ?? 'https://api.getstack.run';
5
6
  // ── ANSI helpers ────────────────────────────────────────────────────
@@ -70,18 +71,21 @@ function formatTs(t = new Date()) {
70
71
  function sleep(ms) {
71
72
  return new Promise((res) => setTimeout(res, ms));
72
73
  }
74
+ // Layers below match what `displayLayerForAction` derives from the
75
+ // action prefix at runtime. Hardcoded here so the demo reads identically
76
+ // when piped through normalizeAuditEntry vs printed straight.
73
77
  const DEMO = [
74
- { layer: 'vault', action: 'identity.verify.complete', outcome: 'success', duration_ms: 142, error_message: null, delayMs: 600 },
75
- { layer: 'vault', action: 'passport.issue', outcome: 'success', duration_ms: 47, error_message: null, delayMs: 800 },
76
- { layer: 'vault', action: 'passport.delegate', outcome: 'success', duration_ms: 38, error_message: null, delayMs: 1100 },
77
- { layer: 'vault', action: 'credential.proxy', outcome: 'success', duration_ms: 287, error_message: null, delayMs: 1100 },
78
- { layer: 'vault', action: 'credential.proxy', outcome: 'success', duration_ms: 412, error_message: null, delayMs: 1100 },
79
- { layer: 'vault', action: 'passport.checkpoint', outcome: 'success', duration_ms: 22, error_message: null, delayMs: 1100 },
80
- { layer: 'vault', action: 'credential.proxy', outcome: 'success', duration_ms: 311, error_message: null, delayMs: 1700 },
81
- { layer: 'vault', action: 'credential.proxy', outcome: 'failure', duration_ms: 18, error_message: 'stripe.charges.create · scope=slack,github · SCOPE_VIOLATION', delayMs: 250 },
82
- { layer: 'vault', action: 'passport.revoke', outcome: 'success', duration_ms: 31, error_message: null, delayMs: 700 },
83
- { layer: 'vault', action: 'passport.revoke_cascade', outcome: 'success', duration_ms: 18, error_message: null, delayMs: 220 },
84
- { layer: 'vault', action: 'passport.checkout', outcome: 'success', duration_ms: 12, error_message: null, delayMs: 1500 },
78
+ { layer: 'identity', action: 'identity.verify.complete', outcome: 'success', duration_ms: 142, error_message: null, delayMs: 600 },
79
+ { layer: 'passport', action: 'passport.issue', outcome: 'success', duration_ms: 47, error_message: null, delayMs: 800 },
80
+ { layer: 'passport', action: 'passport.delegate', outcome: 'success', duration_ms: 38, error_message: null, delayMs: 1100 },
81
+ { layer: 'proxy', action: 'credential.proxy', outcome: 'success', duration_ms: 287, error_message: null, delayMs: 1100 },
82
+ { layer: 'proxy', action: 'credential.proxy', outcome: 'success', duration_ms: 412, error_message: null, delayMs: 1100 },
83
+ { layer: 'passport', action: 'passport.checkpoint', outcome: 'success', duration_ms: 22, error_message: null, delayMs: 1100 },
84
+ { layer: 'proxy', action: 'credential.proxy', outcome: 'success', duration_ms: 311, error_message: null, delayMs: 1700 },
85
+ { layer: 'proxy', action: 'credential.proxy', outcome: 'failure', duration_ms: 18, error_message: 'stripe.charges.create · scope=slack,github · SCOPE_VIOLATION', delayMs: 250 },
86
+ { layer: 'passport', action: 'passport.revoke', outcome: 'success', duration_ms: 31, error_message: null, delayMs: 700 },
87
+ { layer: 'passport', action: 'passport.revoke_cascade', outcome: 'success', duration_ms: 18, error_message: null, delayMs: 220 },
88
+ { layer: 'passport', action: 'passport.checkout', outcome: 'success', duration_ms: 12, error_message: null, delayMs: 1500 },
85
89
  ];
86
90
  async function runDemo(loop) {
87
91
  do {
@@ -98,14 +102,46 @@ async function runDemo(loop) {
98
102
  }
99
103
  } while (loop);
100
104
  }
101
- function authToken() {
102
- const key = env['STACK_API_KEY'] ?? '';
103
- if (!key) {
104
- stderr.write(`${C.red}error:${C.reset} STACK_API_KEY not set.\n` +
105
- `Run ${C.cyan}npx @getstackrun/cli register${C.reset} or grab your key from ${DASHBOARD_URL}/account.\n`);
106
- process.exit(2);
107
- }
108
- return key;
105
+ async function authToken() {
106
+ // Three sources, in priority order:
107
+ // 1. STACK_API_KEY env var (legacy sk_live_* path, preserved for CI)
108
+ // 2. ~/.stack/credentials.json refresh_token → exchange for access
109
+ // 3. Nothing — point user at `stack-cli auth login`
110
+ const token = await getAccessToken();
111
+ if (token)
112
+ return token;
113
+ stderr.write(`${C.red}error:${C.reset} not signed in.\n` +
114
+ `Run ${C.cyan}stack-cli auth login${C.reset} (recommended) ` +
115
+ `or set ${C.cyan}STACK_API_KEY${C.reset} for the legacy path.\n`);
116
+ process.exit(2);
117
+ }
118
+ /**
119
+ * Map an audit row (wire layer + action) to its display layer.
120
+ * Mirrors the dashboard landing-page mapping so the CLI and the website
121
+ * terminal show the same layer column for the same audit row.
122
+ */
123
+ function displayLayerForAction(wireLayer, action) {
124
+ if (!action)
125
+ return wireLayer;
126
+ if (action.startsWith('passport.'))
127
+ return 'passport';
128
+ if (action === 'credential.proxy')
129
+ return 'proxy';
130
+ if (action.startsWith('credential.'))
131
+ return 'credential';
132
+ if (action.startsWith('dropoff.'))
133
+ return 'dropoff';
134
+ if (action.startsWith('skill.') || action.startsWith('invocation.'))
135
+ return 'skills';
136
+ if (action.startsWith('identity.'))
137
+ return 'identity';
138
+ if (action.startsWith('detector.'))
139
+ return 'detector';
140
+ if (action.startsWith('agent.') || action.startsWith('service.') || action.startsWith('member.') || action.startsWith('oauth_app.'))
141
+ return 'system';
142
+ if (action.startsWith('billing.') || action.startsWith('payout.'))
143
+ return 'billing';
144
+ return wireLayer;
109
145
  }
110
146
  function normalizeAuditEntry(e) {
111
147
  if (e.entry_type === 'security_event') {
@@ -126,9 +162,10 @@ function normalizeAuditEntry(e) {
126
162
  timestamp_ms: typeof e.timestamp === 'number' ? e.timestamp : null,
127
163
  };
128
164
  }
129
- const layer = ['vault', 'dropoff', 'skills', 'hire', 'system', 'billing'].includes(e.layer)
165
+ const wireLayer = ['vault', 'dropoff', 'skills', 'hire', 'system', 'billing'].includes(e.layer)
130
166
  ? e.layer
131
167
  : 'system';
168
+ const layer = displayLayerForAction(wireLayer, e.action);
132
169
  const outcome = e.outcome === 'success' ? 'success'
133
170
  : e.outcome === 'blocked' ? 'blocked'
134
171
  : e.outcome === 'pending' ? 'pending'
@@ -147,7 +184,7 @@ async function runFollow(filters) {
147
184
  // API key needed; same shape as /v1/audit. Used by the landing
148
185
  // demo + anyone who wants to watch the shared sandbox stream.
149
186
  const sandbox = filters.sandbox === true;
150
- const key = sandbox ? null : authToken();
187
+ const key = sandbox ? null : await authToken();
151
188
  let watermark = null;
152
189
  let firstTick = true;
153
190
  const filterDesc = sandbox ? ' · public sandbox'
@@ -214,6 +251,9 @@ ${C.white}Usage${C.reset}
214
251
  npx @getstackrun/cli ${C.cyan}<command>${C.reset} [options]
215
252
 
216
253
  ${C.white}Commands${C.reset}
254
+ ${C.cyan}auth login${C.reset} Sign in via browser (Device flow, RFC 8628)
255
+ ${C.cyan}auth status${C.reset} Show current sign-in state
256
+ ${C.cyan}auth logout${C.reset} Revoke session and clear local credentials
217
257
  ${C.cyan}register${C.reset} Print signup + MCP install instructions
218
258
  ${C.cyan}monitor${C.reset} [--demo|--follow] Tail STACK activity in your terminal
219
259
 
@@ -245,6 +285,23 @@ ${C.white}Examples${C.reset}
245
285
  }
246
286
  async function main() {
247
287
  const command = argv[2];
288
+ if (command === 'auth') {
289
+ const sub = argv[3];
290
+ if (sub === 'login') {
291
+ await cmdLogin();
292
+ return;
293
+ }
294
+ if (sub === 'logout') {
295
+ await cmdLogout();
296
+ return;
297
+ }
298
+ if (sub === 'status') {
299
+ await cmdStatus();
300
+ return;
301
+ }
302
+ stderr.write(`error: unknown auth subcommand "${sub ?? ''}". Use login | logout | status.\n`);
303
+ process.exit(2);
304
+ }
248
305
  if (command === 'register') {
249
306
  stdout.write(`
250
307
  STACK — Infrastructure for agents
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3E,MAAM,aAAa,GAAG,sBAAsB,CAAC;AAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,0BAA0B,CAAC;AAEnE,uEAAuE;AAEvE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;AACpC,MAAM,QAAQ,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC3C,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACzC,CAAC;AACD,MAAM,CAAC,GAAG;IACR,KAAK,EAAG,IAAI,CAAC,GAAG,CAAC;IACjB,GAAG,EAAK,IAAI,CAAC,GAAG,CAAC;IACjB,IAAI,EAAI,IAAI,CAAC,GAAG,CAAC;IACjB,GAAG,EAAK,IAAI,CAAC,IAAI,CAAC;IAClB,KAAK,EAAG,IAAI,CAAC,IAAI,CAAC;IAClB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;IAClB,IAAI,EAAI,IAAI,CAAC,IAAI,CAAC;IAClB,KAAK,EAAG,IAAI,CAAC,IAAI,CAAC;IAClB,IAAI,EAAI,IAAI,CAAC,IAAI,CAAC;CACnB,CAAC;AAiCF,SAAS,WAAW,CAAC,GAAa;IAChC,sEAAsE;IACtE,oEAAoE;IACpE,2DAA2D;IAC3D,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC;IAC7C,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC9C,IAAI,GAAG,CAAC,OAAO,KAAK,UAAU;QAAE,OAAO,OAAO,CAAC;IAC/C,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,aAAa;QAAE,OAAO,OAAO,CAAC;IACnE,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO,OAAO,CAAC;IAC7D,IAAI,GAAG,CAAC,MAAM,KAAK,mBAAmB;QAAE,OAAO,UAAU,CAAC;IAC1D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,GAAa,EAAE,QAAe,WAAW,CAAC,GAAG,CAAC;IAC/D,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxF,MAAM,MAAM,GACV,KAAK,KAAK,OAAO,CAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9C,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACzB,GAAG,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7D,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACjE,MAAM,YAAY,GAChB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACrC,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACpC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACtC,GAAG,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACjC,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;wBAC1D,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BACP,CAAC,CAAC,MAAM,CAAC;IACvC,MAAM,UAAU,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,IAAI,IAAI;QACpC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE;QAC9D,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa;QAC9B,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,EAAE;QAC7C,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,QAAQ,KAAK,SAAS,KAAK,UAAU,KAAK,MAAM,GAAG,MAAM,EAAE,CAAC;AAC5G,CAAC;AAED,SAAS,QAAQ,CAAC,IAAU,IAAI,IAAI,EAAE;IACpC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;AAmBD,mEAAmE;AACnE,yEAAyE;AACzE,8DAA8D;AAC9D,MAAM,IAAI,GAAgB;IACxB,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,0BAA0B,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;IAClI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAY,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAG,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;IAClI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAS,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAG,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACnI,EAAE,KAAK,EAAE,OAAO,EAAK,MAAM,EAAE,kBAAkB,EAAU,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACnI,EAAE,KAAK,EAAE,OAAO,EAAK,MAAM,EAAE,kBAAkB,EAAU,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACnI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAO,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAG,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACnI,EAAE,KAAK,EAAE,OAAO,EAAK,MAAM,EAAE,kBAAkB,EAAU,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IACnI,EAAE,KAAK,EAAE,OAAO,EAAK,MAAM,EAAE,kBAAkB,EAAU,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAG,aAAa,EAAE,8DAA8D,EAAE,OAAO,EAAE,GAAG,EAAE;IAC5L,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAW,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAG,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;IAClI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,yBAAyB,EAAG,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAG,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;IAClI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAS,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAG,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;CACpI,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAa;IAClC,GAAG,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,6BAA6B,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAChE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,6FAA6F,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QAClI,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,EAAE,CAAC,UAAU,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;YACtD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,QAAQ,IAAI,EAAE;AACjB,CAAC;AA+BD,KAAK,UAAU,SAAS;IACtB,oCAAoC;IACpC,uEAAuE;IACvE,qEAAqE;IACrE,sDAAsD;IACtD,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC;IACrC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,CAAC,KAAK,CACV,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,mBAAmB;QAC3C,OAAO,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,KAAK,iBAAiB;QAC5D,UAAU,CAAC,CAAC,IAAI,gBAAgB,CAAC,CAAC,KAAK,yBAAyB,CACjE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,SAAgB,EAAE,MAA0B;IACzE,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAC;IACtD,IAAI,MAAM,KAAK,kBAAkB;QAAE,OAAO,OAAO,CAAC;IAClD,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,YAAY,CAAC;IAC1D,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrF,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAC;IACtD,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAC;IACtD,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,QAAQ,CAAC;IACrJ,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACpF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,CAAa;IACxC,IAAI,CAAC,CAAC,UAAU,KAAK,gBAAgB,EAAE,CAAC;QACtC,kEAAkE;QAClE,oEAAoE;QACpE,kEAAkE;QAClE,oEAAoE;QACpE,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,UAAU,CAAC;QACrC,MAAM,OAAO,GAAY,GAAG,KAAK,UAAU,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,MAAM;YAChF,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,UAAU,CAAC;QACf,OAAO;YACL,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS;YAClC,OAAO;YACP,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;YAChC,YAAY,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;SACnE,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAc,CAAC;QACnH,CAAC,CAAE,CAAC,CAAC,KAAe;QACpB,CAAC,CAAC,QAAQ,CAAC;IACb,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,OAAO,GAAY,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;QAC1D,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;YACrC,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS;gBACrC,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,KAAK;QACL,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE;QACtB,OAAO;QACP,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,IAAI;QAClC,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,YAAY,EAAE,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI;KACnE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,OAA8D;IACrF,mEAAmE;IACnE,+DAA+D;IAC/D,8DAA8D;IAC9D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC;IACzC,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC;IAC/C,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB;QAC9C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,OAAO,EAAE;YACjD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAK,CAAC,CAAC,UAAU,OAAO,CAAC,GAAG,EAAE;gBAC3C,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7D,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,+BAA+B,UAAU,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC/E,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,aAAa,OAAO,GAAG,QAAQ,8BAA8B,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;IAElG,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,IAAI,SAAS,IAAI,IAAI;gBAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;gBAAE,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACzE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG;gBAAM,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YACzE,MAAM,OAAO,GAA2B,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;YACvE,IAAI,GAAG;gBAAE,OAAO,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE,CAAC;YACjD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,GAAG,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,4BAA4B,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;oBACjF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA+B,CAAC;gBAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAG,OAAO;qBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;qBACzE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC7D,0DAA0D;gBAC1D,yDAAyD;gBACzD,iDAAiD;gBACjD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;oBACtB,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;oBACvD,IAAI,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,SAAS,EAAE,CAAC;wBACzD,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;oBAClC,CAAC;oBACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;wBAAE,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;gBACxC,CAAC;gBACD,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAK,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;gBACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,uEAAuE;AAEvE,SAAS,SAAS;IAChB,MAAM,CAAC,KAAK,CAAC;EACb,CAAC,CAAC,IAAI,uBAAuB,CAAC,CAAC,KAAK;;EAEpC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,KAAK;yBACC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,KAAK;;EAEhD,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,KAAK;IACvB,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,KAAK;IAC1B,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,KAAK;IAC3B,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,KAAK;IAC3B,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,KAAK;IACxB,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK;;EAEzB,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,KAAK;;;;;;;;;6BASH,OAAO;;;EAGlC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,KAAK;IACvB,CAAC,CAAC,IAAI,mEAAmE,CAAC,CAAC,KAAK;;;IAGhF,CAAC,CAAC,IAAI,gDAAgD,CAAC,CAAC,KAAK;;;IAG7D,CAAC,CAAC,IAAI,0CAA0C,CAAC,CAAC,KAAK;;;IAGvD,CAAC,CAAC,IAAI,wBAAwB,CAAC,CAAC,KAAK;;CAExC,CAAC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,OAAO,EAAI,CAAC;YAAC,MAAM,QAAQ,EAAE,CAAC;YAAE,OAAO;QAAC,CAAC;QACrD,IAAI,GAAG,KAAK,QAAQ,EAAG,CAAC;YAAC,MAAM,SAAS,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACrD,IAAI,GAAG,KAAK,QAAQ,EAAG,CAAC;YAAC,MAAM,SAAS,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,IAAI,EAAE,mCAAmC,CAAC,CAAC;QAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC;;;;4BAIW,aAAa;;;;;OAKlC,CAAC,CAAC,IAAI,mHAAmH,CAAC,CAAC,KAAK;;CAEtI,CAAC,CAAC;QACC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,SAAS,SAAS,CAAC,IAAY;YAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,SAAS,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,SAAS,CAAC;YACrD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,IAAI,GAAG,EAAE,CAAC;YACnB,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,SAAS,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO;IACT,CAAC;IAED,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,KAAK,IAAK,GAAa,CAAC,OAAO,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@getstackrun/cli",
3
- "version": "0.4.1",
3
+ "version": "0.5.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": {