@getstackrun/cli 0.1.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 ADDED
@@ -0,0 +1,44 @@
1
+ # @getstackrun/cli
2
+
3
+ Tail STACK runtime activity in your terminal.
4
+
5
+ ```sh
6
+ # replay a real-shape demo (no auth needed)
7
+ npx @getstackrun/cli monitor --demo --loop
8
+
9
+ # tail your own audit_log
10
+ STACK_API_KEY=sk_live_… npx @getstackrun/cli monitor --follow
11
+ ```
12
+
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
+
17
+ ## Commands
18
+
19
+ ### `monitor`
20
+
21
+ ```
22
+ --demo Replay a real-shape mission (no auth needed). Same row
23
+ format as --follow, just scripted data.
24
+ --follow Tail your operator's actual audit_log. Requires
25
+ STACK_API_KEY env var. Polls every 2s.
26
+ --loop Loop the demo until Ctrl-C (default is one run).
27
+ ```
28
+
29
+ ### `register`
30
+
31
+ ```
32
+ npx @getstackrun/cli register
33
+ ```
34
+
35
+ Prints signup + MCP-install instructions for connecting STACK to Claude Code.
36
+
37
+ ## Get an API key
38
+
39
+ Sign up at [getstack.run](https://getstack.run) (magic link, no password).
40
+ Copy your key from the dashboard. Set as `STACK_API_KEY` to use `monitor --follow`.
41
+
42
+ ## License
43
+
44
+ Apache-2.0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,222 @@
1
+ #!/usr/bin/env node
2
+ import { argv, env, stdout, stderr } from 'node:process';
3
+ const DASHBOARD_URL = 'https://getstack.run';
4
+ const API_URL = env['STACK_API_URL'] ?? 'https://api.getstack.run';
5
+ // ── ANSI helpers ────────────────────────────────────────────────────
6
+ const isTTY = stdout.isTTY === true;
7
+ const useColor = isTTY && !env['NO_COLOR'];
8
+ function ansi(code) {
9
+ return useColor ? `\x1b[${code}m` : '';
10
+ }
11
+ const C = {
12
+ reset: ansi('0'),
13
+ dim: ansi('2'),
14
+ bold: ansi('1'),
15
+ red: ansi('31'),
16
+ green: ansi('32'),
17
+ yellow: ansi('33'),
18
+ cyan: ansi('36'),
19
+ white: ansi('37'),
20
+ gray: ansi('90'),
21
+ };
22
+ function deriveLevel(row) {
23
+ if (row.outcome === 'denied' || row.outcome === 'failure')
24
+ return 'alert';
25
+ if (row.action.startsWith('passport.revoke'))
26
+ return 'alert';
27
+ if (row.action === 'passport.checkout')
28
+ return 'resolved';
29
+ return 'normal';
30
+ }
31
+ function formatRow(row, level = deriveLevel(row)) {
32
+ const ts = formatTs();
33
+ const marker = level === 'alert' ? `${C.red}┃${C.reset}` :
34
+ level === 'resolved' ? `${C.green}┃${C.reset}` :
35
+ ` `;
36
+ const layerCol = `${C.cyan}${row.layer.padEnd(8)}${C.reset}`;
37
+ const actionCol = `${C.white}${row.action.padEnd(28)}${C.reset}`;
38
+ const outcomeColor = row.outcome === 'success' ? C.green :
39
+ row.outcome === 'denied' ? C.red :
40
+ C.yellow;
41
+ const outcomeCol = `${outcomeColor}${row.outcome.padEnd(7)}${C.reset}`;
42
+ const durCol = row.duration_ms != null
43
+ ? `${C.dim}${String(row.duration_ms).padStart(4)}ms${C.reset}`
44
+ : `${C.dim} -${C.reset}`;
45
+ const detail = row.error_message
46
+ ? ` ${C.red}· ${row.error_message}${C.reset}`
47
+ : '';
48
+ return `${marker} ${C.gray}${ts}${C.reset} ${layerCol} ${actionCol} ${outcomeCol} ${durCol}${detail}`;
49
+ }
50
+ function formatTs() {
51
+ const t = new Date();
52
+ const hh = String(t.getHours()).padStart(2, '0');
53
+ const mm = String(t.getMinutes()).padStart(2, '0');
54
+ const ss = String(t.getSeconds()).padStart(2, '0');
55
+ const mmm = String(t.getMilliseconds()).padStart(3, '0');
56
+ return `${hh}:${mm}:${ss}.${mmm}`;
57
+ }
58
+ function sleep(ms) {
59
+ return new Promise((res) => setTimeout(res, ms));
60
+ }
61
+ const DEMO = [
62
+ { layer: 'vault', action: 'identity.verify.complete', outcome: 'success', duration_ms: 142, error_message: null, delayMs: 600 },
63
+ { layer: 'vault', action: 'passport.issue', outcome: 'success', duration_ms: 47, error_message: null, delayMs: 800 },
64
+ { layer: 'vault', action: 'passport.delegate', outcome: 'success', duration_ms: 38, error_message: null, delayMs: 1100 },
65
+ { layer: 'vault', action: 'credential.proxy', outcome: 'success', duration_ms: 287, error_message: null, delayMs: 1100 },
66
+ { layer: 'vault', action: 'credential.proxy', outcome: 'success', duration_ms: 412, error_message: null, delayMs: 1100 },
67
+ { layer: 'vault', action: 'passport.checkpoint', outcome: 'success', duration_ms: 22, error_message: null, delayMs: 1100 },
68
+ { layer: 'vault', action: 'credential.proxy', outcome: 'success', duration_ms: 311, error_message: null, delayMs: 1700 },
69
+ { layer: 'vault', action: 'credential.proxy', outcome: 'denied', duration_ms: 18, error_message: 'stripe.charges.create · scope=slack,github · SCOPE_VIOLATION', delayMs: 250 },
70
+ { layer: 'vault', action: 'passport.revoke', outcome: 'success', duration_ms: 31, error_message: null, delayMs: 700 },
71
+ { layer: 'vault', action: 'passport.revoke_cascade', outcome: 'success', duration_ms: 18, error_message: null, delayMs: 220 },
72
+ { layer: 'vault', action: 'passport.checkout', outcome: 'success', duration_ms: 12, error_message: null, delayMs: 1500 },
73
+ ];
74
+ async function runDemo(loop) {
75
+ do {
76
+ stdout.write(`${C.gray}# stack-cli monitor --demo${C.reset}\n`);
77
+ stdout.write(`${C.gray}# replay of a real-shape STACK mission · same row format as --follow on your own audit_log${C.reset}\n\n`);
78
+ for (const ev of DEMO) {
79
+ await sleep(ev.delayMs);
80
+ const level = ev.forceLevel ?? deriveLevel(ev);
81
+ stdout.write(formatRow(ev, level) + '\n');
82
+ }
83
+ if (loop) {
84
+ stdout.write(`\n${C.gray}# loop reset${C.reset}\n\n`);
85
+ await sleep(1500);
86
+ }
87
+ } while (loop);
88
+ }
89
+ function authToken() {
90
+ const key = env['STACK_API_KEY'] ?? '';
91
+ if (!key) {
92
+ stderr.write(`${C.red}error:${C.reset} STACK_API_KEY not set.\n` +
93
+ `Run ${C.cyan}npx @getstackrun/cli register${C.reset} or grab your key from ${DASHBOARD_URL}/account.\n`);
94
+ process.exit(2);
95
+ }
96
+ return key;
97
+ }
98
+ function normalizeAuditEntry(e) {
99
+ const layer = ['vault', 'dropoff', 'skills', 'hire', 'system', 'billing'].includes(e.layer)
100
+ ? e.layer
101
+ : 'system';
102
+ const outcome = e.outcome === 'success' ? 'success'
103
+ : e.outcome === 'denied' ? 'denied'
104
+ : 'failure';
105
+ return {
106
+ layer,
107
+ action: e.action,
108
+ outcome,
109
+ duration_ms: e.duration_ms,
110
+ error_message: e.error_message ?? (e.error_code ? e.error_code : null),
111
+ };
112
+ }
113
+ async function runFollow() {
114
+ const key = authToken();
115
+ let watermark = null;
116
+ let firstTick = true;
117
+ stdout.write(`${C.gray}# stack-cli monitor --follow${C.reset}\n`);
118
+ stdout.write(`${C.gray}# tailing your audit_log via ${API_URL}/v1/audit · poll 2s · Ctrl-C to stop${C.reset}\n\n`);
119
+ while (true) {
120
+ try {
121
+ const params = new URLSearchParams({ limit: '20' });
122
+ const res = await fetch(`${API_URL}/v1/audit?${params.toString()}`, {
123
+ headers: { Authorization: `Bearer ${key}`, Accept: 'application/json' },
124
+ });
125
+ if (!res.ok) {
126
+ if (firstTick) {
127
+ stderr.write(`${C.red}error:${C.reset} audit endpoint returned ${res.status}\n`);
128
+ process.exit(1);
129
+ }
130
+ }
131
+ else {
132
+ const data = (await res.json());
133
+ const entries = data.entries ?? [];
134
+ const fresh = entries
135
+ .filter((e) => watermark == null ? true : Number(e.timestamp) > watermark)
136
+ .sort((a, b) => Number(a.timestamp) - Number(b.timestamp));
137
+ for (const e of fresh) {
138
+ stdout.write(formatRow(normalizeAuditEntry(e)) + '\n');
139
+ if (watermark == null || Number(e.timestamp) > watermark) {
140
+ watermark = Number(e.timestamp);
141
+ }
142
+ }
143
+ firstTick = false;
144
+ }
145
+ }
146
+ catch (err) {
147
+ if (firstTick) {
148
+ stderr.write(`${C.red}error:${C.reset} ${err.message}\n`);
149
+ process.exit(1);
150
+ }
151
+ }
152
+ await sleep(2000);
153
+ }
154
+ }
155
+ // ── Help ────────────────────────────────────────────────────────────
156
+ function printHelp() {
157
+ stdout.write(`STACK — runtime control plane for AI agents
158
+ ${C.gray}https://getstack.run${C.reset}
159
+
160
+ ${C.white}Usage${C.reset}
161
+ npx @getstackrun/cli ${C.cyan}<command>${C.reset} [options]
162
+
163
+ ${C.white}Commands${C.reset}
164
+ ${C.cyan}register${C.reset} Print signup + MCP install instructions
165
+ ${C.cyan}monitor${C.reset} [--demo|--follow] Tail STACK activity in your terminal
166
+
167
+ ${C.white}monitor flags${C.reset}
168
+ --demo Replay a real-shape mission (no auth needed). Same row
169
+ format as --follow, just scripted data.
170
+ --follow Tail your operator's actual audit_log. Requires
171
+ STACK_API_KEY env var. Polls every 2s.
172
+ --loop Loop the demo until Ctrl-C (default is one run).
173
+
174
+ ${C.white}Examples${C.reset}
175
+ ${C.gray}# replay a credential-exfiltration-caught-by-scope_drift mission${C.reset}
176
+ npx @getstackrun/cli monitor --demo --loop
177
+
178
+ ${C.gray}# tail your real audit log${C.reset}
179
+ STACK_API_KEY=sk_live_… npx @getstackrun/cli monitor --follow
180
+ `);
181
+ }
182
+ async function main() {
183
+ const command = argv[2];
184
+ const flags = new Set(argv.slice(3));
185
+ if (command === 'register') {
186
+ stdout.write(`
187
+ STACK — Infrastructure for agents
188
+ ─────────────────────────────────
189
+
190
+ Create your account at: ${DASHBOARD_URL}
191
+
192
+ 1. Sign up with your email (magic link, no password)
193
+ 2. Copy your API key from the dashboard
194
+ 3. Add STACK to Claude Code:
195
+ ${C.cyan}claude mcp add stack --transport http https://mcp.getstack.run/mcp --header "Authorization: Bearer YOUR_API_KEY"${C.reset}
196
+
197
+ `);
198
+ return;
199
+ }
200
+ if (command === 'monitor') {
201
+ const isDemo = flags.has('--demo');
202
+ const isFollow = flags.has('--follow');
203
+ const isLoop = flags.has('--loop');
204
+ if (isDemo && isFollow) {
205
+ stderr.write('error: --demo and --follow are mutually exclusive\n');
206
+ process.exit(2);
207
+ }
208
+ if (isFollow) {
209
+ await runFollow();
210
+ return;
211
+ }
212
+ await runDemo(isLoop);
213
+ return;
214
+ }
215
+ printHelp();
216
+ process.exit(command ? 1 : 0);
217
+ }
218
+ main().catch((err) => {
219
+ stderr.write(`${C.red}error:${C.reset} ${err.message}\n`);
220
+ process.exit(1);
221
+ });
222
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@getstackrun/cli",
3
+ "version": "0.1.0",
4
+ "description": "Tail STACK runtime activity in your terminal — replay a real-shape demo or stream your own audit_log.",
5
+ "type": "module",
6
+ "bin": {
7
+ "stack-cli": "./dist/index.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "LICENSE"
13
+ ],
14
+ "keywords": [
15
+ "stack",
16
+ "agents",
17
+ "ai-agents",
18
+ "mcp",
19
+ "audit",
20
+ "monitoring",
21
+ "cli"
22
+ ],
23
+ "homepage": "https://getstack.run",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/getstack-run/stack.git",
27
+ "directory": "packages/cli"
28
+ },
29
+ "license": "Apache-2.0",
30
+ "publishConfig": {
31
+ "access": "public"
32
+ },
33
+ "scripts": {
34
+ "build": "tsc",
35
+ "dev": "tsc --watch",
36
+ "typecheck": "tsc --noEmit",
37
+ "clean": "rm -rf dist .turbo",
38
+ "prepublishOnly": "npm run build"
39
+ },
40
+ "devDependencies": {
41
+ "typescript": "^5.8.0"
42
+ }
43
+ }