@ai21/gateway 1.0.0 → 1.2.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 +23 -3
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +18 -3
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +3 -1
- package/dist/config.js +7 -3
- package/dist/config.js.map +1 -1
- package/dist/login/lock.d.ts +6 -0
- package/dist/login/lock.js +16 -1
- package/dist/login/lock.js.map +1 -1
- package/dist/precheck.d.ts +1 -0
- package/dist/precheck.js +1 -1
- package/dist/precheck.js.map +1 -1
- package/dist/report.d.ts +22 -1
- package/dist/report.js +65 -0
- package/dist/report.js.map +1 -1
- package/dist/result.d.ts +4 -0
- package/dist/result.js +4 -0
- package/dist/result.js.map +1 -1
- package/dist/router.d.ts +3 -0
- package/dist/router.js +154 -22
- package/dist/router.js.map +1 -1
- package/dist/snapshot.d.ts +27 -0
- package/dist/snapshot.js +55 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/telemetry/amplitudeHttp.d.ts +28 -0
- package/dist/telemetry/amplitudeHttp.js +53 -0
- package/dist/telemetry/amplitudeHttp.js.map +1 -0
- package/dist/telemetry/events.d.ts +46 -0
- package/dist/telemetry/events.js +10 -0
- package/dist/telemetry/events.js.map +1 -0
- package/dist/telemetry/telemetry.d.ts +27 -0
- package/dist/telemetry/telemetry.js +78 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- package/dist/telemetry/transport.d.ts +10 -0
- package/dist/telemetry/transport.js +2 -0
- package/dist/telemetry/transport.js.map +1 -0
- package/dist/verify.d.ts +23 -1
- package/dist/verify.js +74 -6
- package/dist/verify.js.map +1 -1
- package/package.json +1 -1
package/dist/router.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { DEFAULT_URLS, containsControlCharacters } from "./args.js";
|
|
6
6
|
import { resolvePaths, shadowingLocalConfig, writeConfig, } from "./config.js";
|
|
7
7
|
import { precheckKey } from "./precheck.js";
|
|
8
|
-
import { EXIT_FOR, collectWarnings, nothingWasWritten, report, reportRevert } from "./report.js";
|
|
8
|
+
import { EXIT_FOR, collectWarnings, nothingWasWritten, report, reportNoClaudeCli, reportNoClaudeCredential, reportRevert, } from "./report.js";
|
|
9
9
|
import { revertConfig } from "./revert.js";
|
|
10
10
|
import { keyName, mintApiKey } from "./login/apiKeys.js";
|
|
11
11
|
import { load as loadCredential, save as saveCredential } from "./login/credentials.js";
|
|
@@ -15,7 +15,8 @@ import { chooseWorkspace, fetchWorkspaces, workspaceOwningAgent } from "./login/
|
|
|
15
15
|
import { EXIT } from "./result.js";
|
|
16
16
|
import { AI21_KEY_PLACEHOLDER, ccSettings, ccSettingsEnv } from "./snippets.js";
|
|
17
17
|
import { readVersion } from "./cli.js";
|
|
18
|
-
import {
|
|
18
|
+
import { restoreConfig, snapshotConfig } from "./snapshot.js";
|
|
19
|
+
import { CLAUDE_COMMAND, checkClaudeLogin, findOnPath, resolveAnthropicKey, verify, } from "./verify.js";
|
|
19
20
|
/* Identifies traffic this tool configured, so the gateway can tell a CLI-configured
|
|
20
21
|
* agent from a hand-pasted one without the CLI reporting anything.
|
|
21
22
|
*
|
|
@@ -108,6 +109,10 @@ function detailFor(outcome) {
|
|
|
108
109
|
return undefined;
|
|
109
110
|
}
|
|
110
111
|
}
|
|
112
|
+
/** The directory `claude` must run in for the file we write to be the one it reads. */
|
|
113
|
+
function verifyCwd(args, ctx) {
|
|
114
|
+
return args.target === "user" ? ctx.paths.home : ctx.paths.cwd;
|
|
115
|
+
}
|
|
111
116
|
/**
|
|
112
117
|
* Verification runs only once the config is actually on disk — there is nothing to
|
|
113
118
|
* verify after a refusal, and a request fired anyway would report on whatever
|
|
@@ -128,18 +133,60 @@ async function verifyWrite(args, ctx, outcome, inputs) {
|
|
|
128
133
|
// Verify from wherever the file we just wrote is the authoritative one — see
|
|
129
134
|
// VerifyContext.cwd. A --user config verified from the project directory
|
|
130
135
|
// would be shadowed by any repo-local settings.json.
|
|
131
|
-
cwd: args
|
|
136
|
+
cwd: verifyCwd(args, ctx),
|
|
132
137
|
}, ctx.verify);
|
|
133
138
|
}
|
|
134
139
|
/**
|
|
135
140
|
* Write, verify, report. The one writer every credential path goes through, so
|
|
136
141
|
* however they were obtained they meet the same conflict, backup and idempotency
|
|
137
142
|
* rules.
|
|
143
|
+
*
|
|
144
|
+
* Without a Claude login the gateway can never answer, so a config left in place would
|
|
145
|
+
* route Claude Code at a gateway that rejects everything. That is caught before the
|
|
146
|
+
* write when `claude auth status` can tell, and undone after it when verification
|
|
147
|
+
* proves it. `--no-verify` skips both, for installs with no Claude login yet by design.
|
|
138
148
|
*/
|
|
139
149
|
async function writeAndReport(args, ctx, inputs, precheck) {
|
|
140
150
|
const paths = resolvePaths(args.target, ctx.paths, args.client);
|
|
151
|
+
if (!args.noVerify && (await checkClaudeLogin(verifyCwd(args, ctx), ctx.verify)) === "logged-out") {
|
|
152
|
+
const result = reportNoClaudeCredential({
|
|
153
|
+
path: paths.settings,
|
|
154
|
+
reason: "logged-out",
|
|
155
|
+
state: "not-written",
|
|
156
|
+
json: args.json,
|
|
157
|
+
urls: args.urls,
|
|
158
|
+
});
|
|
159
|
+
return { result, failure: { stage: "claudeLogin", errorMessage: NO_CLAUDE_CREDENTIAL_REASON["logged-out"] } };
|
|
160
|
+
}
|
|
161
|
+
let snapshot;
|
|
162
|
+
try {
|
|
163
|
+
snapshot = snapshotConfig(paths);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
// The writer reports an unreadable file itself; the write just goes unguarded.
|
|
167
|
+
snapshot = undefined;
|
|
168
|
+
}
|
|
141
169
|
const outcome = writeConfig(paths, ccSettingsEnv(inputs), { force: args.yes });
|
|
142
170
|
const verification = await verifyWrite(args, ctx, outcome, inputs);
|
|
171
|
+
if (verification?.kind === "no-claude-credential") {
|
|
172
|
+
const wrote = outcome.kind !== "unchanged";
|
|
173
|
+
const restore = wrote && snapshot !== undefined ? restoreConfig(snapshot) : undefined;
|
|
174
|
+
const result = reportNoClaudeCredential({
|
|
175
|
+
path: paths.settings,
|
|
176
|
+
reason: verification.reason,
|
|
177
|
+
state: !wrote
|
|
178
|
+
? "unchanged"
|
|
179
|
+
: restore?.kind === "restored"
|
|
180
|
+
? "restored"
|
|
181
|
+
: { failed: restore?.kind === "failed" ? restore.reason : "no snapshot of the previous file was taken" },
|
|
182
|
+
json: args.json,
|
|
183
|
+
urls: args.urls,
|
|
184
|
+
});
|
|
185
|
+
return {
|
|
186
|
+
result,
|
|
187
|
+
failure: { stage: "claudeLogin", errorMessage: NO_CLAUDE_CREDENTIAL_REASON[verification.reason] },
|
|
188
|
+
};
|
|
189
|
+
}
|
|
143
190
|
const result = report({
|
|
144
191
|
outcome,
|
|
145
192
|
warnings: collectWarnings({
|
|
@@ -153,7 +200,40 @@ async function writeAndReport(args, ctx, inputs, precheck) {
|
|
|
153
200
|
verification,
|
|
154
201
|
precheck,
|
|
155
202
|
});
|
|
156
|
-
return { result, verification };
|
|
203
|
+
return { result, failure: writeFailure(outcome) ?? verifyFailure(verification) };
|
|
204
|
+
}
|
|
205
|
+
/** Fixed reasons for the telemetry, so a path or a message never leaves the machine. */
|
|
206
|
+
const NO_CLAUDE_CREDENTIAL_REASON = {
|
|
207
|
+
"logged-out": "no Claude login",
|
|
208
|
+
"key-rejected": "Claude credential rejected",
|
|
209
|
+
};
|
|
210
|
+
function writeFailure(outcome) {
|
|
211
|
+
switch (outcome.kind) {
|
|
212
|
+
case "conflict":
|
|
213
|
+
return { stage: "configWrite", errorMessage: "existing settings conflict" };
|
|
214
|
+
case "malformed":
|
|
215
|
+
return { stage: "configWrite", errorMessage: "existing settings file is malformed" };
|
|
216
|
+
case "failed":
|
|
217
|
+
return { stage: "configWrite", errorMessage: "settings file could not be written" };
|
|
218
|
+
default:
|
|
219
|
+
return undefined;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
/** Only a passed verification completes the setup: a config nobody has seen route is not a success. */
|
|
223
|
+
function verifyFailure(verification) {
|
|
224
|
+
switch (verification?.kind) {
|
|
225
|
+
case "passed":
|
|
226
|
+
case undefined:
|
|
227
|
+
return undefined;
|
|
228
|
+
case "disabled":
|
|
229
|
+
return { stage: "verify", errorMessage: "verification disabled with --no-verify" };
|
|
230
|
+
case "skipped":
|
|
231
|
+
return { stage: "verify", errorMessage: "verification skipped: no claude and no Anthropic credential" };
|
|
232
|
+
case "failed":
|
|
233
|
+
return { stage: "verify", errorMessage: "verification request failed" };
|
|
234
|
+
case "no-claude-credential":
|
|
235
|
+
return { stage: "claudeLogin", errorMessage: NO_CLAUDE_CREDENTIAL_REASON[verification.reason] };
|
|
236
|
+
}
|
|
157
237
|
}
|
|
158
238
|
const MAX_AGENTS_LISTED = 5;
|
|
159
239
|
/** AI21 keys are per-environment, so a production key fails staging exactly like a typo. */
|
|
@@ -198,63 +278,109 @@ async function resolveKeyForInstall(args, ctx) {
|
|
|
198
278
|
/* Signing in needs a human to compare the verification code, so CI keeps the contract
|
|
199
279
|
* it had before this verb could sign in at all. */
|
|
200
280
|
if (!(ctx.prompt.isTTY ?? ctx.prompt.input.isTTY ?? false)) {
|
|
201
|
-
return {
|
|
281
|
+
return refuse("login", "no key and no terminal to sign in from", {
|
|
202
282
|
code: EXIT.USAGE,
|
|
203
283
|
out: "",
|
|
204
284
|
err: "--key is required when stdin is not a terminal. Pass --key <key>.\n",
|
|
205
|
-
};
|
|
285
|
+
});
|
|
206
286
|
}
|
|
207
287
|
const outcome = await runLogin(args.urls, ctx.login, { notify: ctx.notify });
|
|
208
288
|
switch (outcome.kind) {
|
|
209
289
|
case "timeout":
|
|
210
|
-
return {
|
|
290
|
+
return refuse("login", "sign-in timed out", {
|
|
211
291
|
code: EXIT.LOGIN_INCOMPLETE,
|
|
212
292
|
out: "",
|
|
213
293
|
err: "Timed out waiting for sign-in. Nothing was written.\nRun `ai21-gateway install` again.\n",
|
|
214
|
-
};
|
|
294
|
+
});
|
|
215
295
|
case "declined":
|
|
216
|
-
return {
|
|
296
|
+
return refuse("login", "sign-in declined", {
|
|
217
297
|
code: EXIT.LOGIN_INCOMPLETE,
|
|
218
298
|
out: "",
|
|
219
299
|
err: `Sign-in was not completed: ${outcome.reason}. Nothing was written.\n`,
|
|
220
|
-
};
|
|
300
|
+
});
|
|
221
301
|
case "failed":
|
|
222
|
-
return
|
|
302
|
+
return refuse("login", "sign-in could not start", {
|
|
303
|
+
code: EXIT.INTERNAL,
|
|
304
|
+
out: "",
|
|
305
|
+
err: `Sign-in could not start: ${outcome.reason}.\n`,
|
|
306
|
+
});
|
|
223
307
|
case "credential": {
|
|
224
308
|
const session = await storeSession(args, ctx, outcome.credential);
|
|
225
309
|
// Its own message already says what failed and that nothing was written.
|
|
226
310
|
if (session.code !== EXIT.OK)
|
|
227
|
-
return session;
|
|
311
|
+
return refuse("login", "signed in, but the session could not be stored", session);
|
|
228
312
|
ctx.notify(session.out.trimEnd());
|
|
229
313
|
const key = await ctx.login.secrets.read(args.urls.gateway, "ai21Key");
|
|
230
314
|
return key !== undefined
|
|
231
315
|
? { key }
|
|
232
|
-
: {
|
|
316
|
+
: refuse("login", "signed in, but the new key could not be read back", {
|
|
233
317
|
code: EXIT.INTERNAL,
|
|
234
318
|
out: "",
|
|
235
319
|
err: "Signed in, but the new key could not be read back. Run `ai21-gateway install` again.\n",
|
|
236
|
-
};
|
|
320
|
+
});
|
|
237
321
|
}
|
|
238
322
|
}
|
|
239
323
|
}
|
|
324
|
+
function refuse(stage, errorMessage, result, errorCode) {
|
|
325
|
+
return { ...result, failure: { stage, errorMessage, ...(errorCode === undefined ? {} : { errorCode }) } };
|
|
326
|
+
}
|
|
327
|
+
/** The tracking plan's name for each client this CLI configures. */
|
|
328
|
+
const AGENT_KIND = { "claude-code": "claude_code" };
|
|
329
|
+
/**
|
|
330
|
+
* `install`, reported as one setup: CliSetupStarted first, then exactly one of
|
|
331
|
+
* CliSetupCompleted or CliSetupFailed. Only a passed verification counts as completed.
|
|
332
|
+
*/
|
|
333
|
+
async function install(args, ctx) {
|
|
334
|
+
const setup = ctx.telemetry.startSetup("installAgent");
|
|
335
|
+
const { failure, ...result } = await installSteps(args, ctx);
|
|
336
|
+
// Read after the flow, because sign-in and re-homing can both change the workspace.
|
|
337
|
+
const context = { agentKind: AGENT_KIND[args.client], workspaceId: storedWorkspace(args, ctx) };
|
|
338
|
+
if (failure === undefined)
|
|
339
|
+
setup.completed(context);
|
|
340
|
+
else
|
|
341
|
+
setup.failed(failure, context);
|
|
342
|
+
return result;
|
|
343
|
+
}
|
|
344
|
+
/** The workspace of this gateway's stored session, when there is one. `--key` alone names none. */
|
|
345
|
+
function storedWorkspace(args, ctx) {
|
|
346
|
+
if (args.key !== undefined)
|
|
347
|
+
return undefined;
|
|
348
|
+
const stored = loadCredential(args.urls.gateway, credentialPaths(ctx));
|
|
349
|
+
return stored.kind === "credential" ? stored.credential.workspaceId : undefined;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Claude Code is the only client, so with neither its CLI nor an Anthropic key to reach
|
|
353
|
+
* the gateway through, a sign-in, a minted key and a written config would all be for
|
|
354
|
+
* nothing. Checked first, and even under --no-verify, which governs only the post-write
|
|
355
|
+
* check. An Anthropic key alone is enough: it serves any other client, and the direct
|
|
356
|
+
* ping verifies with it.
|
|
357
|
+
*/
|
|
358
|
+
function canReachAnthropic(args, ctx) {
|
|
359
|
+
if (findOnPath(CLAUDE_COMMAND, ctx.verify.lookup) !== undefined)
|
|
360
|
+
return true;
|
|
361
|
+
return resolveAnthropicKey({ anthropicKey: args.anthropicKey, processEnv: ctx.processEnv }) !== undefined;
|
|
362
|
+
}
|
|
240
363
|
/**
|
|
241
364
|
* The key is checked before `writeConfig`, and only a definite rejection stops it. Both
|
|
242
365
|
* ways in are gated: a `--key` the caller passed, and the key the sign-in minted — which
|
|
243
366
|
* should be good by construction, but can still fail on entitlement or workspace.
|
|
244
367
|
*/
|
|
245
|
-
async function
|
|
368
|
+
async function installSteps(args, ctx) {
|
|
369
|
+
if (!canReachAnthropic(args, ctx)) {
|
|
370
|
+
return refuse("detect", "claude code cli not installed", reportNoClaudeCli(args.json));
|
|
371
|
+
}
|
|
246
372
|
const resolved = await resolveKeyForInstall(args, ctx);
|
|
247
373
|
if (!("key" in resolved))
|
|
248
374
|
return resolved;
|
|
249
375
|
/* A stored key can predate the mint-time check. Refused here, not left to precheck,
|
|
250
376
|
* which reports such a key as "inconclusive" and writes the config anyway. */
|
|
251
377
|
if (containsControlCharacters(resolved.key)) {
|
|
252
|
-
return {
|
|
378
|
+
return refuse("keyCheck", "key contains control characters", {
|
|
253
379
|
code: EXIT.USAGE,
|
|
254
380
|
out: "",
|
|
255
381
|
err: "The AI21 key contains control characters, which would forge an extra request header.\n" +
|
|
256
382
|
`${nothingWasWritten()} Revoke that key in the dashboard and run \`ai21-gateway login\` again.\n`,
|
|
257
|
-
};
|
|
383
|
+
});
|
|
258
384
|
}
|
|
259
385
|
let key = resolved.key;
|
|
260
386
|
let outcome = await precheckKey({ agentsUrl: args.urls.agents, agentId: args.agentId ?? "", ai21Key: key }, ctx.precheck);
|
|
@@ -263,17 +389,23 @@ async function install(args, ctx) {
|
|
|
263
389
|
const moved = await rehomeStoredSession(args, ctx);
|
|
264
390
|
if (moved !== undefined) {
|
|
265
391
|
if (!("key" in moved))
|
|
266
|
-
return moved;
|
|
392
|
+
return refuse("keyCheck", "stored session could not be moved to the agent's workspace", moved);
|
|
267
393
|
key = moved.key;
|
|
268
394
|
outcome = await precheckKey({ agentsUrl: args.urls.agents, agentId: args.agentId ?? "", ai21Key: key }, ctx.precheck);
|
|
269
395
|
}
|
|
270
396
|
}
|
|
271
397
|
if (outcome.kind === "unknown-agent") {
|
|
272
|
-
return
|
|
398
|
+
return refuse("keyCheck", "agent not found for this key", {
|
|
399
|
+
code: EXIT.USAGE,
|
|
400
|
+
out: "",
|
|
401
|
+
err: `${unknownAgentMessage(args.agentId, outcome.known)}\n`,
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
if (outcome.kind === "rejected") {
|
|
405
|
+
return refuse("keyCheck", "key rejected", { code: EXIT.USAGE, out: "", err: rejectedKeyMessage(args) }, outcome.status);
|
|
273
406
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
return (await writeAndReport(args, ctx, { ...snippetInputs(args), ai21Key: key }, outcome)).result;
|
|
407
|
+
const { result, failure } = await writeAndReport(args, ctx, { ...snippetInputs(args), ai21Key: key }, outcome);
|
|
408
|
+
return failure === undefined ? result : { ...result, failure };
|
|
277
409
|
}
|
|
278
410
|
/**
|
|
279
411
|
* Re-runs the stored session through `storeSession`, which picks the agent's workspace
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ConfigPaths } from "./config.js";
|
|
2
|
+
/** One file as it was: its bytes and mode, or the fact that it did not exist. */
|
|
3
|
+
type FileState = {
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly present: true;
|
|
6
|
+
readonly contents: Buffer;
|
|
7
|
+
readonly mode: number;
|
|
8
|
+
} | {
|
|
9
|
+
readonly path: string;
|
|
10
|
+
readonly present: false;
|
|
11
|
+
};
|
|
12
|
+
export interface ConfigSnapshot {
|
|
13
|
+
readonly settings: FileState;
|
|
14
|
+
/** Absent when settings.json did not exist, since the writer backs up nothing then. */
|
|
15
|
+
readonly backup?: FileState | undefined;
|
|
16
|
+
}
|
|
17
|
+
export type RestoreOutcome = {
|
|
18
|
+
readonly kind: "restored";
|
|
19
|
+
} | {
|
|
20
|
+
readonly kind: "failed";
|
|
21
|
+
readonly reason: string;
|
|
22
|
+
};
|
|
23
|
+
/** Throws on an unreadable file; the caller refuses to write rather than write unguarded. */
|
|
24
|
+
export declare function snapshotConfig(paths: ConfigPaths): ConfigSnapshot;
|
|
25
|
+
/** Puts both files back. Directories the writer created are left: they hold nothing. */
|
|
26
|
+
export declare function restoreConfig(snapshot: ConfigSnapshot): RestoreOutcome;
|
|
27
|
+
export {};
|
package/dist/snapshot.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pre-run state of settings.json and its backup, held in memory so a write that
|
|
3
|
+
* turns out to be useless can be undone exactly. Deliberately not `uninstall`: that
|
|
4
|
+
* removes our keys, which on a re-run over an older AI21 config would delete a setup
|
|
5
|
+
* that was working before this run started.
|
|
6
|
+
*/
|
|
7
|
+
import { chmodSync, existsSync, lstatSync, readFileSync, readlinkSync, realpathSync, rmSync, statSync } from "node:fs";
|
|
8
|
+
import { dirname, resolve } from "node:path";
|
|
9
|
+
import { atomicWrite, backupPathFor, describeFsError } from "./config.js";
|
|
10
|
+
function capture(path) {
|
|
11
|
+
if (!existsSync(path))
|
|
12
|
+
return { path, present: false };
|
|
13
|
+
return { path, present: true, contents: readFileSync(path), mode: statSync(path).mode & 0o777 };
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Where the writer will actually write. Mirrors `writeConfig`: an existing file is
|
|
17
|
+
* written through its real path, and a dangling symlink through its one-level target,
|
|
18
|
+
* so a restore puts things back where they were read from and the link survives.
|
|
19
|
+
*/
|
|
20
|
+
function writeTarget(settings) {
|
|
21
|
+
if (existsSync(settings))
|
|
22
|
+
return realpathSync(settings);
|
|
23
|
+
if (lstatSync(settings, { throwIfNoEntry: false })?.isSymbolicLink() === true) {
|
|
24
|
+
return resolve(dirname(settings), readlinkSync(settings));
|
|
25
|
+
}
|
|
26
|
+
return settings;
|
|
27
|
+
}
|
|
28
|
+
/** Throws on an unreadable file; the caller refuses to write rather than write unguarded. */
|
|
29
|
+
export function snapshotConfig(paths) {
|
|
30
|
+
const target = writeTarget(paths.settings);
|
|
31
|
+
const settings = capture(target);
|
|
32
|
+
return settings.present ? { settings, backup: capture(backupPathFor(paths, target)) } : { settings };
|
|
33
|
+
}
|
|
34
|
+
function put(state) {
|
|
35
|
+
if (!state.present) {
|
|
36
|
+
rmSync(state.path, { force: true });
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
atomicWrite(state.path, state.contents);
|
|
40
|
+
// atomicWrite always lands 0600; the file goes back to the mode it had.
|
|
41
|
+
chmodSync(state.path, state.mode);
|
|
42
|
+
}
|
|
43
|
+
/** Puts both files back. Directories the writer created are left: they hold nothing. */
|
|
44
|
+
export function restoreConfig(snapshot) {
|
|
45
|
+
try {
|
|
46
|
+
put(snapshot.settings);
|
|
47
|
+
if (snapshot.backup !== undefined)
|
|
48
|
+
put(snapshot.backup);
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
return { kind: "failed", reason: describeFsError(err) };
|
|
52
|
+
}
|
|
53
|
+
return { kind: "restored" };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACvH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAoB,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAe5F,SAAS,OAAO,CAAC,IAAY;IAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAEvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;AAClG,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAExD,IAAI,SAAS,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,KAAK,IAAI,EAAE,CAAC;QAC9E,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,cAAc,CAAC,KAAkB;IAC/C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;AACvG,CAAC;AAED,SAAS,GAAG,CAAC,KAAgB;IAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxC,wEAAwE;IACxE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,QAAwB;IACpD,IAAI,CAAC;QACH,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvB,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;YAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Direct delivery to Amplitude's HTTP V2 API, and which project a gateway reports to.
|
|
3
|
+
*/
|
|
4
|
+
import type { CliEvent } from "./events.js";
|
|
5
|
+
import type { EventTransport } from "./transport.js";
|
|
6
|
+
export declare const AMPLITUDE_HTTP_V2_URL = "https://api2.amplitude.com/2/httpapi";
|
|
7
|
+
export declare const SEND_TIMEOUT_MS = 3000;
|
|
8
|
+
/**
|
|
9
|
+
* Amplitude project API keys, by gateway hostname. These are ingestion-only keys, made to
|
|
10
|
+
* ship in client code; the project's Secret key must never appear here. An empty key
|
|
11
|
+
* means that environment reports nothing.
|
|
12
|
+
*/
|
|
13
|
+
export declare const PROJECT_KEYS: Readonly<Record<string, string>>;
|
|
14
|
+
/** Undefined for any host that is not a known environment (localhost, VPC, custom). */
|
|
15
|
+
export declare function amplitudeKeyFor(gatewayUrl: string, keys?: Readonly<Record<string, string>>): string | undefined;
|
|
16
|
+
/** Just enough of `fetch` to POST with. */
|
|
17
|
+
export type PostLike = (url: string, init: {
|
|
18
|
+
method: "POST";
|
|
19
|
+
headers: Record<string, string>;
|
|
20
|
+
body: string;
|
|
21
|
+
signal: AbortSignal;
|
|
22
|
+
}) => Promise<{
|
|
23
|
+
ok: boolean;
|
|
24
|
+
status: number;
|
|
25
|
+
}>;
|
|
26
|
+
/** The HTTP V2 wire shape of one event. Unset optional properties are left out, not sent as null. */
|
|
27
|
+
export declare function toAmplitudeEvent(event: CliEvent): Record<string, unknown>;
|
|
28
|
+
export declare function amplitudeHttpTransport(apiKey: string, post: PostLike, timeoutMs?: number): EventTransport;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export const AMPLITUDE_HTTP_V2_URL = "https://api2.amplitude.com/2/httpapi";
|
|
2
|
+
export const SEND_TIMEOUT_MS = 3_000;
|
|
3
|
+
/**
|
|
4
|
+
* Amplitude project API keys, by gateway hostname. These are ingestion-only keys, made to
|
|
5
|
+
* ship in client code; the project's Secret key must never appear here. An empty key
|
|
6
|
+
* means that environment reports nothing.
|
|
7
|
+
*/
|
|
8
|
+
export const PROJECT_KEYS = {
|
|
9
|
+
"api.ai21.com": "be0223327acdb089744156d19857f1ac",
|
|
10
|
+
"api.ai21-stg.com": "8a79e0c614753d8f3787c537ecef49d0",
|
|
11
|
+
};
|
|
12
|
+
/** Undefined for any host that is not a known environment (localhost, VPC, custom). */
|
|
13
|
+
export function amplitudeKeyFor(gatewayUrl, keys = PROJECT_KEYS) {
|
|
14
|
+
let hostname;
|
|
15
|
+
try {
|
|
16
|
+
hostname = new URL(gatewayUrl).hostname;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
const key = Object.hasOwn(keys, hostname) ? keys[hostname] : undefined;
|
|
22
|
+
return key === undefined || key === "" ? undefined : key;
|
|
23
|
+
}
|
|
24
|
+
/** The HTTP V2 wire shape of one event. Unset optional properties are left out, not sent as null. */
|
|
25
|
+
export function toAmplitudeEvent(event) {
|
|
26
|
+
const properties = Object.fromEntries(Object.entries(event.properties).filter(([, value]) => value !== undefined));
|
|
27
|
+
return {
|
|
28
|
+
event_type: event.name,
|
|
29
|
+
device_id: event.deviceId,
|
|
30
|
+
time: event.time,
|
|
31
|
+
insert_id: event.insertId,
|
|
32
|
+
app_version: event.appVersion,
|
|
33
|
+
platform: "CLI",
|
|
34
|
+
os_name: event.osName,
|
|
35
|
+
os_version: event.osVersion,
|
|
36
|
+
event_properties: properties,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function amplitudeHttpTransport(apiKey, post, timeoutMs = SEND_TIMEOUT_MS) {
|
|
40
|
+
return {
|
|
41
|
+
async send(events) {
|
|
42
|
+
const response = await post(AMPLITUDE_HTTP_V2_URL, {
|
|
43
|
+
method: "POST",
|
|
44
|
+
headers: { "Content-Type": "application/json", Accept: "*/*" },
|
|
45
|
+
body: JSON.stringify({ api_key: apiKey, events: events.map(toAmplitudeEvent) }),
|
|
46
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
47
|
+
});
|
|
48
|
+
if (!response.ok)
|
|
49
|
+
throw new Error(`Amplitude responded ${response.status}`);
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=amplitudeHttp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"amplitudeHttp.js","sourceRoot":"","sources":["../../src/telemetry/amplitudeHttp.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,qBAAqB,GAAG,sCAAsC,CAAC;AAE5E,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAqC;IAC5D,cAAc,EAAE,kCAAkC;IAClD,kBAAkB,EAAE,kCAAkC;CACvD,CAAC;AAEF,uFAAuF;AACvF,MAAM,UAAU,eAAe,CAC7B,UAAkB,EAClB,OAAyC,YAAY;IAErD,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvE,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3D,CAAC;AAQD,qGAAqG;AACrG,MAAM,UAAU,gBAAgB,CAAC,KAAe;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC;IAEnH,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,IAAI;QACtB,SAAS,EAAE,KAAK,CAAC,QAAQ;QACzB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,QAAQ;QACzB,WAAW,EAAE,KAAK,CAAC,UAAU;QAC7B,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,KAAK,CAAC,MAAM;QACrB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,gBAAgB,EAAE,UAAU;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAc,EACd,IAAc,EACd,YAAoB,eAAe;IAEnC,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,MAAM;YACf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE;gBACjD,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE;gBAC9D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC/E,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;aACvC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9E,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI setup events from the tokenwise tracking plan, in a transport-neutral shape.
|
|
3
|
+
*
|
|
4
|
+
* Nothing here may carry a key, an email, a path, argv or prompt content, which is why
|
|
5
|
+
* `errorMessage` is a fixed reason chosen at the call site, never the text the user saw.
|
|
6
|
+
*/
|
|
7
|
+
export declare const CLI_SETUP_STARTED = "CliSetupStarted";
|
|
8
|
+
export declare const CLI_SETUP_COMPLETED = "CliSetupCompleted";
|
|
9
|
+
export declare const CLI_SETUP_FAILED = "CliSetupFailed";
|
|
10
|
+
export type CliEventName = typeof CLI_SETUP_STARTED | typeof CLI_SETUP_COMPLETED | typeof CLI_SETUP_FAILED;
|
|
11
|
+
export type SetupKind = "installAgent";
|
|
12
|
+
/** The plan's `login`, `detect`, `configWrite` and `verify`, plus two steps its examples do not name. */
|
|
13
|
+
export type FailureStage = "detect" | "login" | "keyCheck" | "claudeLogin" | "configWrite" | "verify";
|
|
14
|
+
export type AgentKind = "claude_code";
|
|
15
|
+
/** On all three events. `setupId` pairs a Started with its Completed or Failed. */
|
|
16
|
+
export interface SetupProps {
|
|
17
|
+
readonly app: "tokenwise";
|
|
18
|
+
readonly cliVersion: string;
|
|
19
|
+
readonly setupKind: SetupKind;
|
|
20
|
+
readonly setupId: string;
|
|
21
|
+
}
|
|
22
|
+
/** Known once the flow reaches them; omitted rather than guessed before that. */
|
|
23
|
+
export interface SetupContext {
|
|
24
|
+
readonly workspaceId?: string | undefined;
|
|
25
|
+
readonly agentKind?: AgentKind | undefined;
|
|
26
|
+
}
|
|
27
|
+
export interface SetupFailure {
|
|
28
|
+
readonly stage: FailureStage;
|
|
29
|
+
readonly errorMessage: string;
|
|
30
|
+
/** The HTTP status, when the failure was an API call that returned one. */
|
|
31
|
+
readonly errorCode?: number | undefined;
|
|
32
|
+
}
|
|
33
|
+
/** What is constant for one CLI run. `deviceId` is random per run until identity lands. */
|
|
34
|
+
export interface RunInfo {
|
|
35
|
+
readonly deviceId: string;
|
|
36
|
+
readonly appVersion: string;
|
|
37
|
+
readonly osName: string;
|
|
38
|
+
readonly osVersion: string;
|
|
39
|
+
}
|
|
40
|
+
export interface CliEvent extends RunInfo {
|
|
41
|
+
readonly name: CliEventName;
|
|
42
|
+
readonly time: number;
|
|
43
|
+
/** Lets the receiver drop a duplicate if a transport ever retries. */
|
|
44
|
+
readonly insertId: string;
|
|
45
|
+
readonly properties: SetupProps & SetupContext & Partial<SetupFailure>;
|
|
46
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI setup events from the tokenwise tracking plan, in a transport-neutral shape.
|
|
3
|
+
*
|
|
4
|
+
* Nothing here may carry a key, an email, a path, argv or prompt content, which is why
|
|
5
|
+
* `errorMessage` is a fixed reason chosen at the call site, never the text the user saw.
|
|
6
|
+
*/
|
|
7
|
+
export const CLI_SETUP_STARTED = "CliSetupStarted";
|
|
8
|
+
export const CLI_SETUP_COMPLETED = "CliSetupCompleted";
|
|
9
|
+
export const CLI_SETUP_FAILED = "CliSetupFailed";
|
|
10
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/telemetry/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type PostLike } from "./amplitudeHttp.js";
|
|
2
|
+
import { type RunInfo, type SetupContext, type SetupFailure, type SetupKind } from "./events.js";
|
|
3
|
+
import type { EventTransport } from "./transport.js";
|
|
4
|
+
/**
|
|
5
|
+
* One setup flow, from its Started event to its single terminal event. Only the first
|
|
6
|
+
* `completed` or `failed` is sent, so a flow can never report both.
|
|
7
|
+
*/
|
|
8
|
+
export interface SetupReporter {
|
|
9
|
+
completed(context: SetupContext): void;
|
|
10
|
+
failed(failure: SetupFailure, context: SetupContext): void;
|
|
11
|
+
}
|
|
12
|
+
export interface Telemetry {
|
|
13
|
+
/** Sends CliSetupStarted now, and returns the reporter for how the flow ends. */
|
|
14
|
+
startSetup(kind: SetupKind): SetupReporter;
|
|
15
|
+
/** Waits for sends in flight, but never longer than `maxMs`. Never rejects. */
|
|
16
|
+
flush(maxMs: number): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
/** How long a finishing command waits for sends still in flight. */
|
|
19
|
+
export declare const FLUSH_CAP_MS = 1500;
|
|
20
|
+
export declare const NO_TELEMETRY: Telemetry;
|
|
21
|
+
export interface TelemetryDeps {
|
|
22
|
+
readonly now: () => number;
|
|
23
|
+
readonly newId: () => string;
|
|
24
|
+
}
|
|
25
|
+
export declare function createTelemetry(transport: EventTransport, run: RunInfo, deps?: TelemetryDeps): Telemetry;
|
|
26
|
+
/** The real telemetry for a gateway: Amplitude for a known environment, nothing otherwise. */
|
|
27
|
+
export declare function nodeTelemetry(gatewayUrl: string, appVersion: string, post: PostLike): Telemetry;
|