@jitera/connect 2.1.4 → 2.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jitera-connect",
3
- "version": "2.1.4",
3
+ "version": "2.2.0",
4
4
  "description": "Connect this workspace to a Jitera project: read documentation and source, and keep project memory up to date.",
5
5
  "author": {
6
6
  "name": "Jitera"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jitera-connect",
3
- "version": "2.1.4",
3
+ "version": "2.2.0",
4
4
  "description": "Connect this workspace to a Jitera project: read documentation and source, and keep project memory up to date.",
5
5
  "skills": "./skills/"
6
6
  }
package/README.md CHANGED
@@ -88,6 +88,33 @@ you select, so a selection narrows the noise without hiding shared facts.
88
88
  it needs the repo bound to a project first, because that is what says which
89
89
  agents exist. run `init` if it is not.
90
90
 
91
+ ## replacing your key
92
+
93
+ ```
94
+ npx @jitera/connect new-key
95
+ ```
96
+
97
+ use this when the key you have is read-only and you need to write, or when you
98
+ just want a fresh one. it reuses the sign-in `login` already stored, so there is
99
+ no browser round trip: it mints a new account-wide key and points your
100
+ assistants at it.
101
+
102
+ new keys are read + write by default, which is what lets an assistant save
103
+ memory and write specs. pass `--access=read` if you want a read-only one.
104
+
105
+ ```
106
+ npx @jitera/connect new-key --access=read # read-only instead
107
+ npx @jitera/connect new-key --name=<name> # how it is labelled in the web app
108
+ npx @jitera/connect new-key --no-install # print the key, change no config
109
+ ```
110
+
111
+ restart your assistant afterwards so it picks the key up. the old key keeps
112
+ working until you revoke it in the web app — creating a new one does not retire
113
+ the old one.
114
+
115
+ if there is no stored sign-in it says so and points at `login`, which is the
116
+ command that does the browser step.
117
+
91
118
  ## what applies where
92
119
 
93
120
  the api key is global: one per user, per machine, stored by `login --install`.
@@ -9,6 +9,9 @@ else if (subcommand === "init") {
9
9
  else if (subcommand === "set-agent") {
10
10
  await import("./set-agent.js");
11
11
  }
12
+ else if (subcommand === "new-key") {
13
+ await import("./new-key.js");
14
+ }
12
15
  else if (subcommand === "statusline") {
13
16
  await import("./statusline.js");
14
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/bin/connect.ts"],"names":[],"mappings":";AACA,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3C,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;IAC3B,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC;KAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;IACjC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;AAC5B,CAAC;KAAM,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;IACtC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACjC,CAAC;KAAM,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;IACvC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAClC,CAAC;KAAM,CAAC;IACN,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/bin/connect.ts"],"names":[],"mappings":";AACA,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3C,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;IAC3B,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;AAC7B,CAAC;KAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;IACjC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;AAC5B,CAAC;KAAM,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;IACtC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;AACjC,CAAC;KAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;IACpC,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/B,CAAC;KAAM,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;IACvC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAClC,CAAC;KAAM,CAAC;IACN,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=new-key.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-key.d.ts","sourceRoot":"","sources":["../../src/bin/new-key.ts"],"names":[],"mappings":""}
@@ -0,0 +1,183 @@
1
+ #!/usr/bin/env node
2
+ import { homedir } from "node:os";
3
+ import { dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { DiscoveryError, discoverDeployment } from "../discovery.js";
6
+ import { UnknownEnvironmentError } from "../environments.js";
7
+ import { loadCliSession, transportFor } from "../cli-session.js";
8
+ import { DeviceFlowError, refreshAccessToken } from "../device-flow.js";
9
+ import { GraphqlError, createUserApiKey } from "../graphql.js";
10
+ import { createTheme, heading } from "../theme.js";
11
+ import { installClaudeCodePlugin } from "../install/claude-code.js";
12
+ import { installStatusLine } from "../install/statusline.js";
13
+ import { installSkills } from "../install/skills.js";
14
+ import { DEFAULT_BRAND } from "../install/render.js";
15
+ import { codex } from "../adapters/codex.js";
16
+ import { cursor } from "../adapters/cursor.js";
17
+ import { endWith, runCommand } from "../exit.js";
18
+ const PACKAGE_ROOT = join(dirname(fileURLToPath(import.meta.url)), "..", "..");
19
+ const USAGE = [
20
+ "usage: npx @jitera/connect new-key [--access=read|read_write] [options]",
21
+ "",
22
+ "Creates a fresh account-wide key and configures your assistants with it.",
23
+ "Use it when the key you have is read-only, or you simply want a new one.",
24
+ "",
25
+ "Signing in again is not required: this reuses the session login stored.",
26
+ "",
27
+ " --access=read_write read + write, the default; --access=read for read-only",
28
+ " --name=<name> how the key is labelled in the web app",
29
+ " --env=studio-06 target a pilot; omit for production",
30
+ " --no-install print the key without touching any configuration",
31
+ " --json print the result as json",
32
+ ].join("\n");
33
+ function parseArgs(argv) {
34
+ const args = {
35
+ access: "read_write",
36
+ keyName: "Jitera connect",
37
+ json: false,
38
+ install: true,
39
+ help: false,
40
+ };
41
+ for (const arg of argv) {
42
+ if (arg === "new-key")
43
+ continue;
44
+ else if (arg.startsWith("--env="))
45
+ args.environment = arg.slice("--env=".length);
46
+ else if (arg.startsWith("--access=")) {
47
+ const value = arg.slice("--access=".length);
48
+ if (value === "read" || value === "read_write")
49
+ args.access = value;
50
+ else
51
+ args.badAccess = value;
52
+ }
53
+ else if (arg.startsWith("--name="))
54
+ args.keyName = arg.slice("--name=".length);
55
+ else if (arg === "--no-install")
56
+ args.install = false;
57
+ else if (arg === "--json")
58
+ args.json = true;
59
+ else if (arg === "--help" || arg === "-h")
60
+ args.help = true;
61
+ else
62
+ args.unknown = arg;
63
+ }
64
+ return args;
65
+ }
66
+ const theme = createTheme({ env: process.env, isTty: Boolean(process.stdout.isTTY) });
67
+ function fail(message, code = 1) {
68
+ process.stderr.write(`\n ${theme.err("error")} ${message}\n`);
69
+ endWith(code);
70
+ }
71
+ await runCommand(async () => {
72
+ const args = parseArgs(process.argv.slice(2));
73
+ if (args.help) {
74
+ process.stdout.write(`${USAGE}\n`);
75
+ return;
76
+ }
77
+ if (args.unknown) {
78
+ process.stderr.write(`error: unrecognised argument "${args.unknown}"\n${USAGE}\n`);
79
+ endWith(2);
80
+ }
81
+ if (args.badAccess !== undefined) {
82
+ process.stderr.write(`error: unknown access "${args.badAccess}". Use --access=read or --access=read_write.\n`);
83
+ endWith(2);
84
+ }
85
+ const session = loadCliSession();
86
+ if (!session) {
87
+ fail("no stored sign-in, so there is no account to create a key for. Run " +
88
+ `${theme.accent("npx @jitera/connect login")} first.`);
89
+ }
90
+ // The deployment this key is for is the one the session was created against.
91
+ // Defaulting to production instead would quietly move a pilot user's
92
+ // assistants to a different deployment as a side effect of getting a key.
93
+ const environment = args.environment ?? session.environment;
94
+ let brand = DEFAULT_BRAND;
95
+ let mcpUrl = "";
96
+ try {
97
+ const deployment = await discoverDeployment({
98
+ environment,
99
+ studioUrl: process.env["JITERA_STUDIO_URL"],
100
+ });
101
+ brand = deployment.brand;
102
+ mcpUrl = deployment.mcpUrl;
103
+ }
104
+ catch (error) {
105
+ if (error instanceof UnknownEnvironmentError)
106
+ fail(error.message, 2);
107
+ if (!(error instanceof DiscoveryError))
108
+ throw error;
109
+ // Only the assistant configuration needs the endpoint. Creating the key
110
+ // does not, so an unreachable studio should not stop the useful half.
111
+ if (args.install)
112
+ fail(error.message);
113
+ }
114
+ let created;
115
+ try {
116
+ const transport = await transportFor(session, refreshAccessToken);
117
+ created = await createUserApiKey({ name: args.keyName, mcpAccess: args.access }, transport);
118
+ }
119
+ catch (error) {
120
+ if (error instanceof DeviceFlowError) {
121
+ fail(`${error.message} Run ${theme.accent("npx @jitera/connect login")} to sign in again.`);
122
+ }
123
+ if (error instanceof GraphqlError)
124
+ fail(error.message);
125
+ throw error;
126
+ }
127
+ if (args.json) {
128
+ process.stdout.write(`${JSON.stringify({
129
+ apiKey: created.rawKey,
130
+ maskedKey: created.maskedKey,
131
+ scope: "user",
132
+ mcpAccess: args.access,
133
+ }, undefined, 2)}\n`);
134
+ }
135
+ if (!args.json)
136
+ process.stdout.write(heading(theme, brand, "new key"));
137
+ const access = args.access === "read" ? "read-only" : "read + write";
138
+ if (args.install) {
139
+ const claude = installClaudeCodePlugin({
140
+ apiKey: created.rawKey,
141
+ environment: environment ?? "studio",
142
+ });
143
+ if (!args.json) {
144
+ process.stdout.write(claude.installed
145
+ ? ` ${theme.ok("✓")} ${theme.bold("Claude Code")} ${theme.dim("now uses the new key")}\n`
146
+ : ` ${theme.dim("–")} ${theme.bold("Claude Code")} ${theme.dim(`skipped (${claude.reason})`)}\n`);
147
+ if (claude.installed) {
148
+ const status = installStatusLine({ home: homedir() });
149
+ if (status.installed) {
150
+ process.stdout.write(` ${theme.ok("✓")} ${theme.bold("Status line")} ${theme.dim("connection state shows in Claude Code")}\n`);
151
+ }
152
+ }
153
+ }
154
+ const context = {
155
+ scope: "user",
156
+ home: homedir(),
157
+ cwd: process.cwd(),
158
+ mcpUrl,
159
+ apiKey: created.rawKey,
160
+ };
161
+ const local = [cursor, codex].filter((adapter) => adapter.detect(context));
162
+ for (const adapter of local) {
163
+ const result = adapter.install(context);
164
+ if (!args.json) {
165
+ process.stdout.write(` ${theme.ok("✓")} ${theme.bold(adapter.label)} ${theme.dim(result.path)}\n`);
166
+ }
167
+ }
168
+ if (local.length) {
169
+ const targetDirs = [...new Set(local.flatMap((adapter) => adapter.skillsDirs(context)))];
170
+ installSkills({ packageRoot: PACKAGE_ROOT, targetDirs, values: { BRAND: brand } });
171
+ }
172
+ }
173
+ if (args.json)
174
+ return;
175
+ process.stdout.write(`\n ${theme.ok("✓")} ${theme.dim(`Created an account-wide ${access} key`)} ${theme.bold(created.maskedKey)}\n`);
176
+ if (!args.install) {
177
+ // Shown once and never again, so it has to be printed in full here.
178
+ process.stdout.write(`\n ${created.rawKey}\n`);
179
+ }
180
+ process.stdout.write(`\n ${theme.dim("Restart your assistant to pick it up. The old key keeps working until you")}\n` +
181
+ ` ${theme.dim("revoke it in the web app.")}\n`);
182
+ });
183
+ //# sourceMappingURL=new-key.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new-key.js","sourceRoot":"","sources":["../../src/bin/new-key.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jitera/connect",
3
- "version": "2.1.4",
3
+ "version": "2.2.0",
4
4
  "type": "module",
5
5
  "description": "Connect AI coding assistants to Jitera projects: documentation, source, and shared project memory",
6
6
  "license": "Apache-2.0",