@ai21/gateway 0.5.3 → 0.5.4
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 +21 -7
- package/dist/args.d.ts +13 -4
- package/dist/args.js +40 -13
- package/dist/args.js.map +1 -1
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/login/contract.d.ts +34 -34
- package/dist/login/contract.js +56 -43
- package/dist/login/contract.js.map +1 -1
- package/dist/login/credentials.d.ts +34 -0
- package/dist/login/credentials.js +98 -0
- package/dist/login/credentials.js.map +1 -0
- package/dist/login/loopback.d.ts +8 -10
- package/dist/login/loopback.js +78 -63
- package/dist/login/loopback.js.map +1 -1
- package/dist/login/session.d.ts +16 -17
- package/dist/login/session.js +34 -48
- package/dist/login/session.js.map +1 -1
- package/dist/login/tokens.d.ts +16 -0
- package/dist/login/tokens.js +78 -0
- package/dist/login/tokens.js.map +1 -0
- package/dist/login/workspaces.d.ts +17 -0
- package/dist/login/workspaces.js +65 -0
- package/dist/login/workspaces.js.map +1 -0
- package/dist/router.js +76 -41
- package/dist/router.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
const WORKSPACES_PATH = "/identity/workspaces";
|
|
2
|
+
const TIMEOUT_MS = 20_000;
|
|
3
|
+
/* A legacy per-user default given to every account at signup; offering it would make the
|
|
4
|
+
* real workspace the second choice. */
|
|
5
|
+
const LEGACY_PERSONAL_TYPE = "personal";
|
|
6
|
+
/** `https://api.example.com/gateway` → `https://api.example.com`. */
|
|
7
|
+
export function identityBase(gatewayUrl) {
|
|
8
|
+
try {
|
|
9
|
+
return new URL(gatewayUrl).origin;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
/** Empty rather than throwing on anything unexpected: a completed login must not be lost
|
|
16
|
+
* to a failed listing. */
|
|
17
|
+
export async function fetchWorkspaces(gatewayUrl, idToken, fetchImpl = fetch) {
|
|
18
|
+
const base = identityBase(gatewayUrl);
|
|
19
|
+
if (base === undefined)
|
|
20
|
+
return [];
|
|
21
|
+
let response;
|
|
22
|
+
try {
|
|
23
|
+
response = await fetchImpl(`${base}${WORKSPACES_PATH}`, {
|
|
24
|
+
method: "GET",
|
|
25
|
+
headers: { "firebase-token": idToken },
|
|
26
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
if (!response.ok)
|
|
33
|
+
return [];
|
|
34
|
+
try {
|
|
35
|
+
return parse(JSON.parse(await response.text()));
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
/* A 200 that is not JSON — an IAP interstitial, say. */
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function parse(payload) {
|
|
43
|
+
// Identity answers `{ workspaces: [...] }`; a bare array is tolerated.
|
|
44
|
+
const list = Array.isArray(payload) ? payload : (payload.workspaces ?? []);
|
|
45
|
+
if (!Array.isArray(list))
|
|
46
|
+
return [];
|
|
47
|
+
const found = [];
|
|
48
|
+
for (const entry of list) {
|
|
49
|
+
if (typeof entry !== "object" || entry === null)
|
|
50
|
+
continue;
|
|
51
|
+
const row = entry;
|
|
52
|
+
const id = row["id"] ?? row["workspace_id"] ?? row["pid"];
|
|
53
|
+
const name = row["name"];
|
|
54
|
+
if (typeof id !== "string" || id === "")
|
|
55
|
+
continue;
|
|
56
|
+
if (typeof row["type"] === "string" && row["type"].toLowerCase() === LEGACY_PERSONAL_TYPE)
|
|
57
|
+
continue;
|
|
58
|
+
// Stripped for the same reason as the callback's strings: this gets printed.
|
|
59
|
+
// eslint-disable-next-line no-control-regex
|
|
60
|
+
const label = typeof name === "string" ? name.replace(/[\u0000-\u001F\u007F]/g, "") : "";
|
|
61
|
+
found.push({ id, name: label === "" ? id : label });
|
|
62
|
+
}
|
|
63
|
+
return found;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=workspaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaces.js","sourceRoot":"","sources":["../../src/login/workspaces.ts"],"names":[],"mappings":"AASA,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAC/C,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B;uCACuC;AACvC,MAAM,oBAAoB,GAAG,UAAU,CAAC;AAOxC,qEAAqE;AACrE,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;2BAC2B;AAC3B,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,OAAe,EACf,YAAuB,KAAK;IAE5B,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAElC,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,GAAG,eAAe,EAAE,EAAE;YACtD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,gBAAgB,EAAE,OAAO,EAAE;YACtC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;SACxC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,wDAAwD;QACxD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,KAAK,CAAC,OAAgB;IAC7B,uEAAuE;IACvE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAoC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IAEzG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAE1D,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAElD,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,KAAK,oBAAoB;YAAE,SAAS;QAEpG,6EAA6E;QAC7E,4CAA4C;QAC5C,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/router.js
CHANGED
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
* Verb dispatch. Handlers return streams and an exit code rather than writing or
|
|
3
3
|
* exiting, so a command can be asserted end to end without spawning a process.
|
|
4
4
|
*/
|
|
5
|
-
import { containsControlCharacters
|
|
5
|
+
import { containsControlCharacters } from "./args.js";
|
|
6
6
|
import { resolvePaths, writeConfig } from "./config.js";
|
|
7
7
|
import { promptForKey } from "./prompt.js";
|
|
8
8
|
import { EXIT_FOR, collectWarnings, report, reportRevert } from "./report.js";
|
|
9
9
|
import { revertConfig } from "./revert.js";
|
|
10
|
+
import { save as saveCredential } from "./login/credentials.js";
|
|
10
11
|
import { runLogin } from "./login/session.js";
|
|
12
|
+
import { DeadCredentialError, exchangeRefreshToken } from "./login/tokens.js";
|
|
13
|
+
import { fetchWorkspaces } from "./login/workspaces.js";
|
|
11
14
|
import { EXIT } from "./result.js";
|
|
12
15
|
import { AI21_KEY_PLACEHOLDER, ccSettings, ccSettingsEnv } from "./snippets.js";
|
|
13
16
|
import { readVersion } from "./cli.js";
|
|
@@ -192,61 +195,93 @@ async function install(args, ctx) {
|
|
|
192
195
|
return (await writeAndReport(args, ctx, { ...snippetInputs(args), ai21Key: resolved.key })).result;
|
|
193
196
|
}
|
|
194
197
|
/**
|
|
195
|
-
* `login`: the browser
|
|
196
|
-
*
|
|
198
|
+
* `login`: sign in through the browser and store the session. Writes no repo config —
|
|
199
|
+
* that is `install`'s job. Agent creation from the stored session lands next.
|
|
197
200
|
*/
|
|
198
201
|
async function login(args, ctx) {
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
202
|
+
if (!(ctx.prompt.isTTY ?? ctx.prompt.input.isTTY ?? false)) {
|
|
203
|
+
/* Needs a human to compare the code, and a personal credential does not belong in CI. */
|
|
204
|
+
return {
|
|
205
|
+
code: EXIT.USAGE,
|
|
206
|
+
out: "",
|
|
207
|
+
err: "`login` needs an interactive terminal. In CI, pass --key with an AI21 API key instead.\n",
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
const outcome = await runLogin(args.urls, ctx.login, { notify: ctx.notify });
|
|
203
211
|
switch (outcome.kind) {
|
|
204
|
-
case "credentials": {
|
|
205
|
-
/* Overwrites without asking, unlike a hand-typed `install`.
|
|
206
|
-
*
|
|
207
|
-
* The conflict guard exists to catch someone clobbering a config they had
|
|
208
|
-
* forgotten about. That premise does not hold here: the reader asked the
|
|
209
|
-
* dashboard to connect this repo and ran the command it printed, so replacing
|
|
210
|
-
* whatever is there IS the request. The previous file is still backed up, and
|
|
211
|
-
* `uninstall --from-backup` still restores it.
|
|
212
|
-
*
|
|
213
|
-
* Refusing was also a dead end. Every handoff mints a fresh key, so
|
|
214
|
-
* ANTHROPIC_CUSTOM_HEADERS always differs from what is on disk and the guard
|
|
215
|
-
* always fired — and its advice, "re-run with --yes", cannot be followed: the
|
|
216
|
-
* page latches after one delivery, so the same code will never be sent again.
|
|
217
|
-
* The reader had to go back and spend another one-time key to get past it. */
|
|
218
|
-
const { result, verification } = await writeAndReport({ ...args, yes: true }, ctx, {
|
|
219
|
-
gatewayUrl: args.urls.gateway,
|
|
220
|
-
agentId: outcome.agentId,
|
|
221
|
-
ai21Key: outcome.ai21Key,
|
|
222
|
-
userId: args.userId,
|
|
223
|
-
});
|
|
224
|
-
// Only once the gateway has actually answered: sending someone to the dashboard
|
|
225
|
-
// to admire a setup that does not work would be worse than not sending them.
|
|
226
|
-
if (result.code === EXIT.OK && verification?.kind === "passed" && outcome.workspaceId !== undefined) {
|
|
227
|
-
const dashboard = dashboardUrl(args.urls, outcome.workspaceId);
|
|
228
|
-
ctx.login.openBrowser(dashboard);
|
|
229
|
-
ctx.notify(`Verified. Opening the dashboard: ${dashboard}`);
|
|
230
|
-
}
|
|
231
|
-
return result;
|
|
232
|
-
}
|
|
233
212
|
case "timeout":
|
|
234
213
|
return {
|
|
235
214
|
code: EXIT.LOGIN_INCOMPLETE,
|
|
236
215
|
out: "",
|
|
237
|
-
err:
|
|
216
|
+
err: "Timed out waiting for the sign-in to complete. Nothing was stored.\nRun `ai21-gateway login` again.\n",
|
|
238
217
|
};
|
|
239
|
-
case "
|
|
240
|
-
// Refusing beats writing: this is remote input that failed validation, and
|
|
241
|
-
// the reason is never the value itself.
|
|
218
|
+
case "declined":
|
|
242
219
|
return {
|
|
243
220
|
code: EXIT.LOGIN_INCOMPLETE,
|
|
244
221
|
out: "",
|
|
245
|
-
err: `
|
|
222
|
+
err: `Sign-in was not completed: ${outcome.reason}. Nothing was stored.\n`,
|
|
246
223
|
};
|
|
247
224
|
case "failed":
|
|
248
225
|
return { code: EXIT.INTERNAL, out: "", err: `Login could not start: ${outcome.reason}.\n` };
|
|
226
|
+
case "credential":
|
|
227
|
+
return storeSession(args, ctx, outcome.credential);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Spends the credential once before storing it, so a session that cannot mint a token is
|
|
232
|
+
* reported now rather than at the start of someone's next command. That exchange is a
|
|
233
|
+
* real refresh, so it can rotate the token — and what gets stored has to be what the
|
|
234
|
+
* exchange ended with.
|
|
235
|
+
*/
|
|
236
|
+
async function storeSession(args, ctx, credential) {
|
|
237
|
+
let exchanged;
|
|
238
|
+
try {
|
|
239
|
+
exchanged = await exchangeRefreshToken(credential.refreshToken, credential.firebaseApiKey, ctx.login.fetchImpl);
|
|
240
|
+
}
|
|
241
|
+
catch (err) {
|
|
242
|
+
return {
|
|
243
|
+
code: EXIT.LOGIN_INCOMPLETE,
|
|
244
|
+
out: "",
|
|
245
|
+
/* `DeadCredentialError`'s own advice is "run login again", which is what the reader
|
|
246
|
+
* is already doing — so the caller words this one, not the thrower. */
|
|
247
|
+
err: `The credential the browser returned could not be exchanged: ${err instanceof DeadCredentialError
|
|
248
|
+
? "the token service rejected it"
|
|
249
|
+
: err instanceof Error
|
|
250
|
+
? err.message
|
|
251
|
+
: String(err)}\nNothing was stored. Try signing in again.\n`,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
// Best effort: a login that succeeded must not be lost to a listing.
|
|
255
|
+
const available = await fetchWorkspaces(args.urls.gateway, exchanged.idToken, ctx.login.fetchImpl);
|
|
256
|
+
const chosen = credential.workspaceId ?? (available.length === 1 ? available[0]?.id : undefined);
|
|
257
|
+
const named = available.find((w) => w.id === chosen);
|
|
258
|
+
try {
|
|
259
|
+
saveCredential(args.urls.gateway, {
|
|
260
|
+
refreshToken: exchanged.refreshToken,
|
|
261
|
+
firebaseApiKey: credential.firebaseApiKey,
|
|
262
|
+
projectId: credential.projectId,
|
|
263
|
+
userId: credential.userId,
|
|
264
|
+
userEmail: credential.userEmail,
|
|
265
|
+
obtainedAt: new Date().toISOString(),
|
|
266
|
+
...(chosen === undefined ? {} : { workspaceId: chosen }),
|
|
267
|
+
}, ctx.paths);
|
|
249
268
|
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
return {
|
|
271
|
+
code: EXIT.INTERNAL,
|
|
272
|
+
out: "",
|
|
273
|
+
err: `Signed in, but the session could not be stored: ${err instanceof Error ? err.message : String(err)}\n`,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/* Only named when the listing corroborates it: printing a bare id — which is what an
|
|
277
|
+
* unlisted workspace leaves, e.g. a legacy `personal` one that workspaces.ts filters —
|
|
278
|
+
* reads as a glitch rather than as information. */
|
|
279
|
+
const where = named === undefined ? "" : `\n workspace: ${named.name}`;
|
|
280
|
+
return {
|
|
281
|
+
code: EXIT.OK,
|
|
282
|
+
out: `Signed in as ${credential.userEmail}.${where}\n`,
|
|
283
|
+
err: "",
|
|
284
|
+
};
|
|
250
285
|
}
|
|
251
286
|
/** `uninstall`: hand the resolved paths to the reverter and report what it did. */
|
|
252
287
|
function uninstall(args, ctx) {
|
package/dist/router.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAmB,yBAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai21/gateway",
|
|
3
3
|
"//version": "Placeholder. The source of truth is the Artifact Registry — CI sets this from NODE_PACKAGE_VERSION at publish time (see the Semantic Release user guide).",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.4",
|
|
5
5
|
"description": "One command to point a local coding agent at the AI21 Intelligent Gateway",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|