@getstackrun/cli 0.17.0 → 0.19.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 +11 -3
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +34 -4
- package/dist/agent.js.map +1 -1
- package/dist/audit.d.ts.map +1 -1
- package/dist/audit.js +34 -1
- package/dist/audit.js.map +1 -1
- package/dist/index.js +34 -1
- package/dist/index.js.map +1 -1
- package/dist/partner.js +28 -2
- package/dist/partner.js.map +1 -1
- package/dist/passports.d.ts.map +1 -1
- package/dist/passports.js +27 -1
- package/dist/passports.js.map +1 -1
- package/dist/proxy-serve.d.ts +2 -0
- package/dist/proxy-serve.d.ts.map +1 -0
- package/dist/proxy-serve.js +363 -0
- package/dist/proxy-serve.js.map +1 -0
- package/dist/quickstart.d.ts +2 -0
- package/dist/quickstart.d.ts.map +1 -0
- package/dist/quickstart.js +162 -0
- package/dist/quickstart.js.map +1 -0
- package/dist/scan.d.ts +2 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +53 -0
- package/dist/scan.js.map +1 -0
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +76 -0
- package/dist/skills.js.map +1 -1
- package/package.json +2 -1
package/dist/passports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passports.js","sourceRoot":"","sources":["../src/passports.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"passports.js","sourceRoot":"","sources":["../src/passports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-serve.d.ts","sourceRoot":"","sources":["../src/proxy-serve.ts"],"names":[],"mappings":"AA+IA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4Q5D"}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
// `stack proxy serve` — the localhost LLM-gateway shim (GET-242).
|
|
2
|
+
//
|
|
3
|
+
// The universal integration problem: every tool (LangChain, an SDK, a
|
|
4
|
+
// custom bot) expects an LLM API key in an env var and talks to the
|
|
5
|
+
// provider's native endpoint. STACK's pitch is "no key on the box." Those
|
|
6
|
+
// collide for EVERY integration. The only bridge used to be "rewrite your
|
|
7
|
+
// tool to use our SDK."
|
|
8
|
+
//
|
|
9
|
+
// This command removes that. It runs a localhost HTTP endpoint that speaks
|
|
10
|
+
// the provider's NATIVE shape (Anthropic Messages / OpenAI chat-
|
|
11
|
+
// completions). Point any tool's baseURL at it, give it any dummy key, and
|
|
12
|
+
// the shim:
|
|
13
|
+
// - ignores the dummy key the tool sends (that's the point — no real
|
|
14
|
+
// provider key ever lives on the box)
|
|
15
|
+
// - authenticates to STACK as an on-box agent identity: a fresh 60s
|
|
16
|
+
// EdDSA agent JWT minted from ~/.stack/agents/<id>.json, enrolled
|
|
17
|
+
// transparently on first run (the SDK's createAgentTokenProvider —
|
|
18
|
+
// no manual `agent enroll` step)
|
|
19
|
+
// - issues + auto-refreshes ONE passport for the agent
|
|
20
|
+
// - forwards to /v1/llm/<provider>/*, where STACK injects the real key
|
|
21
|
+
// from the vault, governs, logs, meters, and returns the provider's
|
|
22
|
+
// native response (JSON or SSE) verbatim
|
|
23
|
+
//
|
|
24
|
+
// Integration drops from "7 steps + rewrite your tool" to "change one URL."
|
|
25
|
+
//
|
|
26
|
+
// Auth posture / threat model (surfaced in --help + docs). The provider
|
|
27
|
+
// key ALWAYS stays in the vault; the dummy key the tool sends is discarded.
|
|
28
|
+
// Which STACK credential is on the box depends on the agent's key_mode:
|
|
29
|
+
// - stack_managed (default + the proxied-llm-bot preset): the agent has
|
|
30
|
+
// no on-box keypair (STACK signs server-side). The shim authenticates
|
|
31
|
+
// with the OPERATOR credential (STACK_API_KEY / the ~/.stack session)
|
|
32
|
+
// and issues agent-scoped passports. The operator credential sits on
|
|
33
|
+
// the box.
|
|
34
|
+
// - customer_managed: the agent owns an Ed25519 key on the box
|
|
35
|
+
// (~/.stack/agents/<id>.json, chmod 600), scoped to ONE agent and
|
|
36
|
+
// revocable in <60s. Agent-runtime mode signs each call with a 60s
|
|
37
|
+
// agent JWT; only the scoped agent key is on the box, no operator-wide
|
|
38
|
+
// credential. Strongest posture for an untrusted host.
|
|
39
|
+
// - Binds 127.0.0.1 by default. --host is honored but a non-loopback
|
|
40
|
+
// bind prints a loud warning — anyone who can reach the port can make
|
|
41
|
+
// governed calls as this agent (still bounded by the agent's grants +
|
|
42
|
+
// revocable, but no longer localhost-only).
|
|
43
|
+
import { env, stdout, stderr, argv } from 'node:process';
|
|
44
|
+
import { createServer } from 'node:http';
|
|
45
|
+
import { Stack, StackError } from '@getstackrun/sdk';
|
|
46
|
+
import { takeFlag } from './api.js';
|
|
47
|
+
import { invokeHint } from './auth.js';
|
|
48
|
+
const DEFAULT_PORT = 8788;
|
|
49
|
+
const DEFAULT_HOST = '127.0.0.1';
|
|
50
|
+
const ALL_PROVIDERS = ['anthropic', 'openai', 'openrouter'];
|
|
51
|
+
function matchRoute(pathname, providers) {
|
|
52
|
+
// Anthropic Messages — official SDK sends POST {baseURL}/v1/messages.
|
|
53
|
+
if (providers.has('anthropic') &&
|
|
54
|
+
(pathname === '/v1/messages' || pathname === '/messages')) {
|
|
55
|
+
return { provider: 'anthropic' };
|
|
56
|
+
}
|
|
57
|
+
// OpenAI / OpenRouter chat-completions — official SDKs send
|
|
58
|
+
// POST {baseURL}/chat/completions (baseURL usually already ends /v1).
|
|
59
|
+
if (pathname === '/v1/chat/completions' || pathname === '/chat/completions') {
|
|
60
|
+
if (providers.has('openai'))
|
|
61
|
+
return { provider: 'openai' };
|
|
62
|
+
if (providers.has('openrouter'))
|
|
63
|
+
return { provider: 'openrouter' };
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
async function readJsonBody(req) {
|
|
68
|
+
const chunks = [];
|
|
69
|
+
for await (const chunk of req)
|
|
70
|
+
chunks.push(chunk);
|
|
71
|
+
const raw = Buffer.concat(chunks).toString('utf8');
|
|
72
|
+
if (!raw)
|
|
73
|
+
return {};
|
|
74
|
+
return JSON.parse(raw);
|
|
75
|
+
}
|
|
76
|
+
// Dispatch a parsed body to the right SDK gateway call. Returns either the
|
|
77
|
+
// parsed JSON response (non-streaming) or an async iterable of provider SSE
|
|
78
|
+
// events (streaming). The SDK attaches the agent JWT (Bearer) + passport
|
|
79
|
+
// (X-Passport-Token) automatically.
|
|
80
|
+
async function callGateway(stack, provider, body, session) {
|
|
81
|
+
const opts = { passport: session };
|
|
82
|
+
if (provider === 'anthropic') {
|
|
83
|
+
return stack.llm.anthropic.messages.create(body, opts);
|
|
84
|
+
}
|
|
85
|
+
if (provider === 'openai') {
|
|
86
|
+
return stack.llm.openai.chat.completions.create(body, opts);
|
|
87
|
+
}
|
|
88
|
+
return stack.llm.openrouter.chat.completions.create(body, opts);
|
|
89
|
+
}
|
|
90
|
+
function sendJson(res, status, payload) {
|
|
91
|
+
const buf = Buffer.from(JSON.stringify(payload), 'utf8');
|
|
92
|
+
res.writeHead(status, {
|
|
93
|
+
'content-type': 'application/json',
|
|
94
|
+
'content-length': String(buf.byteLength),
|
|
95
|
+
});
|
|
96
|
+
res.end(buf);
|
|
97
|
+
}
|
|
98
|
+
// Map a STACK gateway failure to the provider's native error envelope so
|
|
99
|
+
// the tool's own error handling stays legible, and print a targeted hint
|
|
100
|
+
// to the shim's stderr (the operator watching the terminal).
|
|
101
|
+
function sendGatewayError(res, provider, err) {
|
|
102
|
+
const status = err instanceof StackError ? err.status : 502;
|
|
103
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
104
|
+
// Anthropic + OpenAI both use `{ error: { type, message } }`.
|
|
105
|
+
sendJson(res, status, { error: { type: 'stack_gateway_error', message } });
|
|
106
|
+
if (status === 403) {
|
|
107
|
+
if (/not in passport scope/i.test(message)) {
|
|
108
|
+
stderr.write(` ↳ ${provider} is not in this agent's grants. Grant it: ` +
|
|
109
|
+
`${invokeHint(`service grant <connection-id> --agent <agent>`)} ` +
|
|
110
|
+
`(or connect ${provider} at https://getstack.run/services first).\n`);
|
|
111
|
+
}
|
|
112
|
+
else if (/no .* connection|connect .* first/i.test(message)) {
|
|
113
|
+
stderr.write(` ↳ ${provider} is not connected on this operator. ` +
|
|
114
|
+
`Connect it at https://getstack.run/services, then retry.\n`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
export async function cmdProxy(args) {
|
|
119
|
+
const sub = args[0];
|
|
120
|
+
if (sub !== 'serve') {
|
|
121
|
+
stderr.write(`error: unknown proxy subcommand "${sub ?? ''}". Use: ${invokeHint('proxy serve --agent <name|id>')}\n`);
|
|
122
|
+
process.exit(2);
|
|
123
|
+
}
|
|
124
|
+
const rest = args.slice(1);
|
|
125
|
+
const agentRef = takeFlag(rest, '--agent');
|
|
126
|
+
if (typeof agentRef !== 'string' || !agentRef) {
|
|
127
|
+
stderr.write(`usage: ${invokeHint('proxy serve --agent <name|id> [--port 8788] [--provider anthropic|openai|openrouter] [--host 127.0.0.1]')}\n\n` +
|
|
128
|
+
`Runs a localhost endpoint speaking the provider's native API shape.\n` +
|
|
129
|
+
`Point any tool's baseURL at it (dummy key is fine); STACK injects the\n` +
|
|
130
|
+
`real key from the vault and governs + logs the call. No provider key on the box.\n`);
|
|
131
|
+
process.exit(2);
|
|
132
|
+
}
|
|
133
|
+
const portFlag = takeFlag(rest, '--port');
|
|
134
|
+
const port = typeof portFlag === 'string' ? Number.parseInt(portFlag, 10) : DEFAULT_PORT;
|
|
135
|
+
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
136
|
+
stderr.write(`error: --port must be an integer 1-65535 (got "${String(portFlag)}").\n`);
|
|
137
|
+
process.exit(2);
|
|
138
|
+
}
|
|
139
|
+
const hostFlag = takeFlag(rest, '--host');
|
|
140
|
+
const host = typeof hostFlag === 'string' ? hostFlag : DEFAULT_HOST;
|
|
141
|
+
// --provider may be repeated or comma-separated; defaults to anthropic +
|
|
142
|
+
// openai (openrouter shares openai's path, so it's opt-in to avoid an
|
|
143
|
+
// ambiguous /chat/completions route).
|
|
144
|
+
const providerFlags = [];
|
|
145
|
+
for (;;) {
|
|
146
|
+
const p = takeFlag(rest, '--provider');
|
|
147
|
+
if (typeof p !== 'string')
|
|
148
|
+
break;
|
|
149
|
+
providerFlags.push(...p.split(',').map((s) => s.trim()).filter(Boolean));
|
|
150
|
+
}
|
|
151
|
+
let providers;
|
|
152
|
+
if (providerFlags.length === 0) {
|
|
153
|
+
providers = new Set(['anthropic', 'openai']);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
for (const p of providerFlags) {
|
|
157
|
+
if (!ALL_PROVIDERS.includes(p)) {
|
|
158
|
+
stderr.write(`error: --provider must be one of: ${ALL_PROVIDERS.join(', ')} (got "${p}").\n`);
|
|
159
|
+
process.exit(2);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
providers = new Set(providerFlags);
|
|
163
|
+
if (providers.has('openai') && providers.has('openrouter')) {
|
|
164
|
+
stderr.write(`error: openai and openrouter both use the /chat/completions path and cannot be served together.\n` +
|
|
165
|
+
`Run one shim per provider on different ports.\n`);
|
|
166
|
+
process.exit(2);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const baseUrl = env['STACK_API_URL'] ?? 'https://api.getstack.run';
|
|
170
|
+
// Resolve --agent to an agt_* id + its key_mode via the operator-auth
|
|
171
|
+
// path (STACK_API_KEY or ~/.stack/credentials.json from `auth login`).
|
|
172
|
+
const opStack = new Stack({ baseUrl });
|
|
173
|
+
let agentId;
|
|
174
|
+
let keyMode;
|
|
175
|
+
try {
|
|
176
|
+
if (agentRef.startsWith('agt_')) {
|
|
177
|
+
const a = (await opStack.agents.get(agentRef));
|
|
178
|
+
agentId = a.id;
|
|
179
|
+
keyMode = a.key_mode ?? 'stack_managed';
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
const list = (await opStack.agents.list());
|
|
183
|
+
const match = list.find((a) => a.name === agentRef);
|
|
184
|
+
if (!match) {
|
|
185
|
+
stderr.write(`error: no agent named "${agentRef}" on this operator.\n` +
|
|
186
|
+
`Register one for a bot that just runs:\n` +
|
|
187
|
+
` ${invokeHint(`agent register ${agentRef} --profile proxied-llm-bot`)}\n`);
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
agentId = match.id;
|
|
191
|
+
keyMode = match.key_mode ?? 'stack_managed';
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
196
|
+
stderr.write(`error: could not resolve agent "${agentRef}" (${msg}).\n` +
|
|
197
|
+
`Sign in first: ${invokeHint('auth login')} (or set STACK_API_KEY).\n`);
|
|
198
|
+
process.exit(1);
|
|
199
|
+
}
|
|
200
|
+
// Pick the auth model by the agent's signing model:
|
|
201
|
+
//
|
|
202
|
+
// stack_managed (default + the proxied-llm-bot preset): the agent has
|
|
203
|
+
// NO on-box keypair — STACK signs its claims server-side. The shim
|
|
204
|
+
// authenticates as the OPERATOR (the same STACK_API_KEY / session
|
|
205
|
+
// that resolved the agent) and issues agent-scoped passports. The
|
|
206
|
+
// operator credential is what sits on the box. The PROVIDER key
|
|
207
|
+
// still never leaves the vault.
|
|
208
|
+
//
|
|
209
|
+
// customer_managed: the agent owns an on-box Ed25519 keypair (via
|
|
210
|
+
// `agent enroll`). Agent-runtime mode signs each call with a fresh
|
|
211
|
+
// 60s agent JWT; only the scoped agent key is on the box — no
|
|
212
|
+
// operator-wide credential. Strongest "no key on the box" posture.
|
|
213
|
+
//
|
|
214
|
+
// Both keep the provider key in the vault; they differ in WHICH STACK
|
|
215
|
+
// credential is on the box.
|
|
216
|
+
const stack = keyMode === 'customer_managed' ? new Stack({ agent_id: agentId, baseUrl }) : new Stack({ baseUrl });
|
|
217
|
+
if (keyMode === 'customer_managed') {
|
|
218
|
+
stdout.write(` auth: on-box agent keypair (customer_managed) — only a scoped agent key on this box\n`);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
stdout.write(` auth: operator credential (stack_managed agent). For a box that holds only a\n` +
|
|
222
|
+
` scoped agent key instead, use a customer_managed agent (agent enroll).\n`);
|
|
223
|
+
}
|
|
224
|
+
// One passport for the shim's lifetime, auto-refreshed ~60s before
|
|
225
|
+
// expiry. scopes omitted → all of the agent's granted scopes; the agent
|
|
226
|
+
// must be granted the provider(s) it will call. accountability comes
|
|
227
|
+
// from the AGENT record (a proxied-llm-bot agent is `logged`, so the
|
|
228
|
+
// approval gate is skipped and the first call just works — but a
|
|
229
|
+
// logged/enforced agent still requires an intent declaration at issue
|
|
230
|
+
// time, so we supply one naming the providers this shim serves).
|
|
231
|
+
const providerList = [...providers];
|
|
232
|
+
let session;
|
|
233
|
+
try {
|
|
234
|
+
session = await stack.issuePassport({
|
|
235
|
+
agent_id: agentId,
|
|
236
|
+
intent: {
|
|
237
|
+
summary: `proxy serve — governed LLM calls (${providerList.join(', ')})`,
|
|
238
|
+
services: providerList,
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
244
|
+
stderr.write(`error: could not issue a passport for ${agentId} (${msg}).\n` +
|
|
245
|
+
`If this is the agent's first run, ensure you're signed in (${invokeHint('auth login')}) so\n` +
|
|
246
|
+
`the shim can enroll its keypair. If the agent is blocked, unblock it in the dashboard.\n`);
|
|
247
|
+
process.exit(1);
|
|
248
|
+
}
|
|
249
|
+
const server = createServer((req, res) => {
|
|
250
|
+
void (async () => {
|
|
251
|
+
const url = new URL(req.url ?? '/', `http://${host}:${port}`);
|
|
252
|
+
if (req.method === 'GET' && url.pathname === '/healthz') {
|
|
253
|
+
sendJson(res, 200, {
|
|
254
|
+
ok: true,
|
|
255
|
+
agent_id: agentId,
|
|
256
|
+
providers: [...providers],
|
|
257
|
+
passport_expires_at: session.expiresAt.toISOString(),
|
|
258
|
+
});
|
|
259
|
+
return;
|
|
260
|
+
}
|
|
261
|
+
if (req.method !== 'POST') {
|
|
262
|
+
sendJson(res, 405, { error: { type: 'method_not_allowed', message: 'POST only' } });
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
const route = matchRoute(url.pathname, providers);
|
|
266
|
+
if (!route) {
|
|
267
|
+
sendJson(res, 404, {
|
|
268
|
+
error: {
|
|
269
|
+
type: 'not_found',
|
|
270
|
+
message: `No gateway route for ${url.pathname}. Served: ` +
|
|
271
|
+
[...providers]
|
|
272
|
+
.map((p) => (p === 'anthropic' ? '/v1/messages' : '/v1/chat/completions'))
|
|
273
|
+
.join(', '),
|
|
274
|
+
},
|
|
275
|
+
});
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
let body;
|
|
279
|
+
try {
|
|
280
|
+
body = await readJsonBody(req);
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
sendJson(res, 400, { error: { type: 'invalid_request', message: 'body must be JSON' } });
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
const isStreaming = body['stream'] === true;
|
|
287
|
+
try {
|
|
288
|
+
const result = await callGateway(stack, route.provider, body, session);
|
|
289
|
+
if (isStreaming) {
|
|
290
|
+
// Re-serialize the SDK's parsed provider events as SSE frames.
|
|
291
|
+
// Keeps the client stream byte-faithful to what the tool's SDK
|
|
292
|
+
// expects; the synthetic stack_leak_warning frame (if any) is
|
|
293
|
+
// NOT re-emitted — it's logged to stderr so the operator sees it
|
|
294
|
+
// without polluting the provider's native protocol.
|
|
295
|
+
res.writeHead(200, {
|
|
296
|
+
'content-type': 'text/event-stream',
|
|
297
|
+
'cache-control': 'no-cache',
|
|
298
|
+
connection: 'keep-alive',
|
|
299
|
+
});
|
|
300
|
+
const iterable = result;
|
|
301
|
+
for await (const evt of iterable) {
|
|
302
|
+
if (evt && evt['type'] === 'leak_detected') {
|
|
303
|
+
stderr.write(` ↳ STACK flagged a potential leak in a streamed response (agent ${agentId}).\n`);
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
res.write(`data: ${JSON.stringify(evt)}\n\n`);
|
|
307
|
+
}
|
|
308
|
+
res.end();
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
sendJson(res, 200, result);
|
|
312
|
+
}
|
|
313
|
+
catch (err) {
|
|
314
|
+
if (res.headersSent) {
|
|
315
|
+
// Mid-stream failure — best we can do is end the stream.
|
|
316
|
+
res.end();
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
sendGatewayError(res, route.provider, err);
|
|
320
|
+
}
|
|
321
|
+
})();
|
|
322
|
+
});
|
|
323
|
+
if (host !== '127.0.0.1' && host !== 'localhost') {
|
|
324
|
+
stderr.write(`\n ⚠ WARNING: binding ${host} (not loopback). Anyone who can reach ${host}:${port}\n` +
|
|
325
|
+
` can make governed LLM calls as agent ${agentId}. This is still bounded by the\n` +
|
|
326
|
+
` agent's grants and revocable in <60s, but it is no longer localhost-only.\n`);
|
|
327
|
+
}
|
|
328
|
+
server.listen(port, host, () => {
|
|
329
|
+
const providerLines = [...providers]
|
|
330
|
+
.map((p) => p === 'anthropic'
|
|
331
|
+
? ` anthropic → http://${host}:${port}/v1/messages`
|
|
332
|
+
: ` ${p} → http://${host}:${port}/v1/chat/completions`)
|
|
333
|
+
.join('\n');
|
|
334
|
+
stdout.write(`\n STACK proxy serve — governed LLM gateway on the box\n` +
|
|
335
|
+
` ───────────────────────────────────────────────────\n\n` +
|
|
336
|
+
` agent: ${agentId}\n` +
|
|
337
|
+
` listening: http://${host}:${port}\n` +
|
|
338
|
+
` providers:\n${providerLines}\n\n` +
|
|
339
|
+
` Point your tool at the base URL and use ANY dummy key — the real key\n` +
|
|
340
|
+
` stays in the STACK vault. Example (Anthropic SDK):\n\n` +
|
|
341
|
+
(providers.has('anthropic')
|
|
342
|
+
? ` ANTHROPIC_BASE_URL=http://${host}:${port} ANTHROPIC_API_KEY=dummy your-tool\n\n`
|
|
343
|
+
: ` OPENAI_BASE_URL=http://${host}:${port}/v1 OPENAI_API_KEY=dummy your-tool\n\n`) +
|
|
344
|
+
` health: curl http://${host}:${port}/healthz\n` +
|
|
345
|
+
` Ctrl-C to stop. Revoke the agent any time for a <60s global kill.\n\n`);
|
|
346
|
+
});
|
|
347
|
+
server.on('error', (err) => {
|
|
348
|
+
const e = err;
|
|
349
|
+
if (e.code === 'EADDRINUSE') {
|
|
350
|
+
stderr.write(`error: port ${port} is already in use. Pass --port <n> to pick another.\n`);
|
|
351
|
+
}
|
|
352
|
+
else {
|
|
353
|
+
stderr.write(`error: server failed: ${e.message}\n`);
|
|
354
|
+
}
|
|
355
|
+
process.exit(1);
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
// Allow `proxy-serve.ts` to be a standalone entry if ever spawned directly,
|
|
359
|
+
// though the canonical path is the `proxy` verb in index.ts.
|
|
360
|
+
if (import.meta.url === `file://${argv[1]}`) {
|
|
361
|
+
void cmdProxy(argv.slice(2));
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=proxy-serve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-serve.js","sourceRoot":"","sources":["../src/proxy-serve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickstart.d.ts","sourceRoot":"","sources":["../src/quickstart.ts"],"names":[],"mappings":"AA0EA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiIjE"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
// `stack quickstart` / `stack init` — the guided zero-to-first-governed-
|
|
2
|
+
// LLM-call flow (GET-242).
|
|
3
|
+
//
|
|
4
|
+
// Every primitive to make a governed LLM call already exists; nothing
|
|
5
|
+
// sequences them, and the register-agent defaults are the opposite of what
|
|
6
|
+
// a "just let it run" bot wants. This command sequences the paved road and
|
|
7
|
+
// ends in proof — an audit row from a real call:
|
|
8
|
+
//
|
|
9
|
+
// 1. confirm the operator is signed in (no account creation here — that
|
|
10
|
+
// is dashboard-only, magic-link)
|
|
11
|
+
// 2. confirm the LLM provider is connected (can't connect from the CLI —
|
|
12
|
+
// the vault credential is added via the dashboard); guide there if not
|
|
13
|
+
// 3. register an agent with profile: 'proxied-llm-bot' (proxy_only +
|
|
14
|
+
// logged + stack_managed) so the first call just works
|
|
15
|
+
// 4. issue a passport + make ONE real LLM call through the STACK gateway
|
|
16
|
+
// (the agent keypair enrolls transparently on this first call)
|
|
17
|
+
// 5. print the audit row that call produced — "it worked, here's proof"
|
|
18
|
+
//
|
|
19
|
+
// No footgun decisions: the only inputs are the provider and an agent name,
|
|
20
|
+
// both with sane defaults.
|
|
21
|
+
import { env, stdout, stderr } from 'node:process';
|
|
22
|
+
import { createInterface } from 'node:readline/promises';
|
|
23
|
+
import { Stack } from '@getstackrun/sdk';
|
|
24
|
+
import { takeFlag } from './api.js';
|
|
25
|
+
import { getAccessToken, invokeHint } from './auth.js';
|
|
26
|
+
const DASHBOARD_URL = 'https://getstack.run';
|
|
27
|
+
const PROVIDER_CALLS = {
|
|
28
|
+
anthropic: (stack, session) => stack.llm.anthropic.messages.create({
|
|
29
|
+
model: 'claude-haiku-4-5-20251001',
|
|
30
|
+
max_tokens: 32,
|
|
31
|
+
messages: [{ role: 'user', content: 'Reply with the single word: works' }],
|
|
32
|
+
}, { passport: session }),
|
|
33
|
+
openai: (stack, session) => stack.llm.openai.chat.completions.create({
|
|
34
|
+
model: 'gpt-4o-mini',
|
|
35
|
+
max_tokens: 32,
|
|
36
|
+
messages: [{ role: 'user', content: 'Reply with the single word: works' }],
|
|
37
|
+
}, { passport: session }),
|
|
38
|
+
openrouter: (stack, session) => stack.llm.openrouter.chat.completions.create({
|
|
39
|
+
model: 'openai/gpt-4o-mini',
|
|
40
|
+
max_tokens: 32,
|
|
41
|
+
messages: [{ role: 'user', content: 'Reply with the single word: works' }],
|
|
42
|
+
}, { passport: session }),
|
|
43
|
+
};
|
|
44
|
+
async function prompt(question, fallback) {
|
|
45
|
+
// Non-interactive (piped / CI): take the fallback silently.
|
|
46
|
+
if (!process.stdin.isTTY)
|
|
47
|
+
return fallback;
|
|
48
|
+
const rl = createInterface({ input: process.stdin, output: process.stderr });
|
|
49
|
+
try {
|
|
50
|
+
const answer = (await rl.question(`${question} [${fallback}]: `)).trim();
|
|
51
|
+
return answer || fallback;
|
|
52
|
+
}
|
|
53
|
+
finally {
|
|
54
|
+
rl.close();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export async function cmdQuickstart(args) {
|
|
58
|
+
const baseUrl = env['STACK_API_URL'] ?? 'https://api.getstack.run';
|
|
59
|
+
// Flags let a non-interactive caller skip the prompts entirely.
|
|
60
|
+
const providerFlag = takeFlag(args, '--provider');
|
|
61
|
+
const agentFlag = takeFlag(args, '--agent');
|
|
62
|
+
// 1. Signed in?
|
|
63
|
+
const token = await getAccessToken();
|
|
64
|
+
if (!token) {
|
|
65
|
+
stderr.write(`\n You're not signed in. Two one-time steps in the dashboard first:\n\n` +
|
|
66
|
+
` 1. Create your account (magic link): ${DASHBOARD_URL}\n` +
|
|
67
|
+
` 2. Connect an LLM provider (Anthropic/OpenAI): ${DASHBOARD_URL}/services\n\n` +
|
|
68
|
+
` Then sign this CLI in and re-run:\n` +
|
|
69
|
+
` ${invokeHint('auth login')}\n` +
|
|
70
|
+
` ${invokeHint('quickstart')}\n\n`);
|
|
71
|
+
process.exit(1);
|
|
72
|
+
}
|
|
73
|
+
const opStack = new Stack({ baseUrl });
|
|
74
|
+
// 2. Which provider — and is it connected?
|
|
75
|
+
const providerInput = (typeof providerFlag === 'string' && providerFlag
|
|
76
|
+
? providerFlag
|
|
77
|
+
: await prompt(' LLM provider (anthropic/openai/openrouter)', 'anthropic')).trim();
|
|
78
|
+
if (!['anthropic', 'openai', 'openrouter'].includes(providerInput)) {
|
|
79
|
+
stderr.write(`error: provider must be anthropic, openai, or openrouter (got "${providerInput}").\n`);
|
|
80
|
+
process.exit(2);
|
|
81
|
+
}
|
|
82
|
+
let connected;
|
|
83
|
+
try {
|
|
84
|
+
connected = (await opStack.services.listConnected());
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
stderr.write(`error: could not list connected services (${err.message}).\n`);
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
const hasProvider = connected.some((c) => c.provider === providerInput && c.status === 'active');
|
|
91
|
+
if (!hasProvider) {
|
|
92
|
+
stderr.write(`\n ${providerInput} is not connected on this operator yet.\n` +
|
|
93
|
+
` Connect it in the dashboard (the API key goes in the vault, not on this box):\n\n` +
|
|
94
|
+
` ${DASHBOARD_URL}/services\n\n` +
|
|
95
|
+
` Then re-run: ${invokeHint(`quickstart --provider ${providerInput}`)}\n\n`);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
// 3. Register the agent with the safe preset (idempotent-ish: reuse an
|
|
99
|
+
// existing same-named agent if present).
|
|
100
|
+
const agentName = (typeof agentFlag === 'string' && agentFlag ? agentFlag : await prompt(' Agent name', 'quickstart-bot')).trim();
|
|
101
|
+
let agentId;
|
|
102
|
+
const existing = (await opStack.agents.list()).find((a) => a.name === agentName);
|
|
103
|
+
if (existing) {
|
|
104
|
+
agentId = existing.id;
|
|
105
|
+
stdout.write(` ✓ using existing agent ${agentName} (${agentId})\n`);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
const agent = await opStack.agents.register({ name: agentName, profile: 'proxied-llm-bot' });
|
|
109
|
+
agentId = agent.id;
|
|
110
|
+
stdout.write(` ✓ registered ${agentName} (${agentId}) — proxy_only + logged + stack_managed\n`);
|
|
111
|
+
}
|
|
112
|
+
// 4. Issue a passport + make one real governed LLM call. The preset
|
|
113
|
+
// creates a stack_managed agent (no on-box keypair — STACK signs
|
|
114
|
+
// server-side), so we authenticate as the operator (opStack) and
|
|
115
|
+
// issue an agent-scoped passport. No agent-runtime enrollment.
|
|
116
|
+
stdout.write(` … issuing a passport and making one governed ${providerInput} call\n`);
|
|
117
|
+
let session;
|
|
118
|
+
try {
|
|
119
|
+
session = await opStack.issuePassport({
|
|
120
|
+
agent_id: agentId,
|
|
121
|
+
// logged-mode agents require an intent declaration at issue time.
|
|
122
|
+
intent: { summary: `quickstart — one governed ${providerInput} call`, services: [providerInput] },
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (err) {
|
|
126
|
+
stderr.write(`error: could not issue a passport (${err.message}).\n`);
|
|
127
|
+
process.exit(1);
|
|
128
|
+
}
|
|
129
|
+
try {
|
|
130
|
+
await PROVIDER_CALLS[providerInput](opStack, session);
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
stderr.write(`error: the governed ${providerInput} call failed (${err.message}).\n` +
|
|
134
|
+
`If this is a scope error, ensure the agent is granted ${providerInput}.\n`);
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
stdout.write(` ✓ call succeeded\n`);
|
|
138
|
+
// 5. Proof — the audit row that call produced.
|
|
139
|
+
try {
|
|
140
|
+
const { entries } = await opStack.audit.list({ agentId, limit: 1 });
|
|
141
|
+
const row = entries[0];
|
|
142
|
+
if (row) {
|
|
143
|
+
const ts = new Date(row.timestamp).toISOString();
|
|
144
|
+
stdout.write(`\n Here's your proof — the call landed in the tamper-evident audit chain:\n\n` +
|
|
145
|
+
` ${ts} ${row.action} → ${row.outcome} (agent ${agentId})\n` +
|
|
146
|
+
` entry_hash ${row.entry_hash.slice(0, 16)}…\n\n` +
|
|
147
|
+
` What just happened: a real ${providerInput} call went through STACK. The provider\n` +
|
|
148
|
+
` key never touched this box — it stayed in the vault and was injected at the gateway.\n\n` +
|
|
149
|
+
` Keep going:\n` +
|
|
150
|
+
` • Drop-in for any existing tool: ${invokeHint(`proxy serve --agent ${agentName}`)}\n` +
|
|
151
|
+
` • Watch calls live: ${invokeHint('monitor --follow')}\n` +
|
|
152
|
+
` • See spend: ${invokeHint('llm usage summary')}\n\n`);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
stdout.write(`\n Call succeeded. (Audit row not yet visible — it lands within a moment.)\n\n`);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
stdout.write(`\n Call succeeded. (Could not read the audit tail just now.)\n\n`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=quickstart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../src/quickstart.ts"],"names":[],"mappings":"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"}
|
package/dist/scan.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAWA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC3D"}
|