carrick 0.3.91 → 0.3.92
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 +5 -2
- package/bin/carrick.mjs +2 -2
- package/dist/auth/credentials.d.ts +1 -1
- package/dist/auth/credentials.js +1 -1
- package/dist/auth/credentials.js.map +1 -1
- package/dist/auth/run.d.ts +19 -1
- package/dist/auth/run.js +52 -9
- package/dist/auth/run.js.map +1 -1
- package/package.json +6 -6
package/README.md
CHANGED
|
@@ -99,8 +99,11 @@ repo in the folder attaches to the one repo there that has no identity.
|
|
|
99
99
|
|
|
100
100
|
Credentials live in `$XDG_CONFIG_HOME/carrick/credentials.json`, falling back
|
|
101
101
|
to `~/.config/carrick/` on macOS and Linux or `%APPDATA%\carrick\` on Windows.
|
|
102
|
-
The file is written with mode 0600. `carrick logout`
|
|
103
|
-
|
|
102
|
+
The file is written with mode 0600. `carrick logout` revokes that file's key
|
|
103
|
+
on the server, then removes the file; other machines and editor connections
|
|
104
|
+
stay signed in. If Carrick cannot be reached, the file is still removed and
|
|
105
|
+
the command says the key is still live. Unset `CARRICK_TOKEN` separately if
|
|
106
|
+
you set that override. Every issued key is listed, and can be revoked, at
|
|
104
107
|
[your account](https://app.carrick.tools/account).
|
|
105
108
|
|
|
106
109
|
Rust derives the same services for CI, local indexing and `init`. An existing
|
package/bin/carrick.mjs
CHANGED
|
@@ -279,7 +279,7 @@ function extraHelp() {
|
|
|
279
279
|
"",
|
|
280
280
|
"ACCOUNT:",
|
|
281
281
|
" login sign in to a Carrick workspace",
|
|
282
|
-
" logout
|
|
282
|
+
" logout sign this machine out and revoke its key",
|
|
283
283
|
"",
|
|
284
284
|
"INTEGRATION:",
|
|
285
285
|
" lsp --stdio the language server, for an editor or an agent",
|
|
@@ -316,7 +316,7 @@ switch (command) {
|
|
|
316
316
|
}
|
|
317
317
|
case "logout": {
|
|
318
318
|
const { logout } = await import("../dist/auth/run.js");
|
|
319
|
-
process.exit(logout(rest));
|
|
319
|
+
process.exit(await logout(rest));
|
|
320
320
|
}
|
|
321
321
|
case "lsp": {
|
|
322
322
|
await pointAtNativeBinary();
|
|
@@ -44,5 +44,5 @@ export declare function configDir(env?: NodeJS.ProcessEnv): string;
|
|
|
44
44
|
export declare function credentialPath(env?: NodeJS.ProcessEnv): string;
|
|
45
45
|
export declare function readCredential(env?: NodeJS.ProcessEnv): Credential | null;
|
|
46
46
|
export declare function saveCredential(token: string, workspace: string | null, env?: NodeJS.ProcessEnv, scope?: string): void;
|
|
47
|
-
/** Removes the local credential only;
|
|
47
|
+
/** Removes the local credential only; `carrick logout` revokes the key first (`auth/run.ts`, `revokeKey`). */
|
|
48
48
|
export declare function removeCredential(env?: NodeJS.ProcessEnv): boolean;
|
package/dist/auth/credentials.js
CHANGED
|
@@ -97,7 +97,7 @@ export function saveCredential(token, workspace, env = process.env, scope = SCOP
|
|
|
97
97
|
fs.rmSync(temporary, { recursive: true, force: true });
|
|
98
98
|
}
|
|
99
99
|
}
|
|
100
|
-
/** Removes the local credential only;
|
|
100
|
+
/** Removes the local credential only; `carrick logout` revokes the key first (`auth/run.ts`, `revokeKey`). */
|
|
101
101
|
export function removeCredential(env = process.env) {
|
|
102
102
|
try {
|
|
103
103
|
fs.unlinkSync(credentialPath(env));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/auth/credentials.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/run.d.ts
CHANGED
|
@@ -9,4 +9,22 @@ import { type Credential } from "./credentials.ts";
|
|
|
9
9
|
*/
|
|
10
10
|
export declare function signIn(say?: (message: string) => void, signal?: AbortSignal): Promise<Credential>;
|
|
11
11
|
export declare function login(argv: string[]): Promise<number>;
|
|
12
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Ask Carrick to revoke the key that makes the request (carrick#1487).
|
|
14
|
+
*
|
|
15
|
+
* The key is its own authority: `POST <app>/oauth/revoke` hashes the bearer
|
|
16
|
+
* and revokes that one row, so the user's other machines and editor keys
|
|
17
|
+
* survive. Only a 204 means the key is no longer live (an unknown or
|
|
18
|
+
* already-revoked key is a 204 too). Every other outcome is "not revoked":
|
|
19
|
+
* a 200, which the endpoint never sends; the 404 an older cloud gives for a
|
|
20
|
+
* route it does not have; and a network failure. The caller signs out
|
|
21
|
+
* locally either way.
|
|
22
|
+
*/
|
|
23
|
+
export declare function revokeKey(token: string, request?: typeof fetch): Promise<boolean>;
|
|
24
|
+
export type LogoutOptions = {
|
|
25
|
+
env?: NodeJS.ProcessEnv;
|
|
26
|
+
fetch?: typeof fetch;
|
|
27
|
+
out?: (text: string) => void;
|
|
28
|
+
err?: (text: string) => void;
|
|
29
|
+
};
|
|
30
|
+
export declare function logout(argv: string[], options?: LogoutOptions): Promise<number>;
|
package/dist/auth/run.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { API_BASE, readCredential, saveCredential, removeCredential } from "./credentials.js";
|
|
1
|
+
import { API_BASE, APP_BASE, readCredential, saveCredential, removeCredential } from "./credentials.js";
|
|
2
2
|
import { authorize } from "./oauth.js";
|
|
3
3
|
import { resolveRepos } from "./read.js";
|
|
4
4
|
/**
|
|
@@ -47,21 +47,64 @@ export async function login(argv) {
|
|
|
47
47
|
process.removeListener("SIGINT", cancel);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Ask Carrick to revoke the key that makes the request (carrick#1487).
|
|
52
|
+
*
|
|
53
|
+
* The key is its own authority: `POST <app>/oauth/revoke` hashes the bearer
|
|
54
|
+
* and revokes that one row, so the user's other machines and editor keys
|
|
55
|
+
* survive. Only a 204 means the key is no longer live (an unknown or
|
|
56
|
+
* already-revoked key is a 204 too). Every other outcome is "not revoked":
|
|
57
|
+
* a 200, which the endpoint never sends; the 404 an older cloud gives for a
|
|
58
|
+
* route it does not have; and a network failure. The caller signs out
|
|
59
|
+
* locally either way.
|
|
60
|
+
*/
|
|
61
|
+
export async function revokeKey(token, request = fetch) {
|
|
62
|
+
try {
|
|
63
|
+
const result = await request(`${APP_BASE}/oauth/revoke`, {
|
|
64
|
+
method: "POST", redirect: "error", signal: AbortSignal.timeout(10_000),
|
|
65
|
+
headers: { Authorization: `Bearer ${token}` },
|
|
66
|
+
});
|
|
67
|
+
return result.status === 204;
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export async function logout(argv, options = {}) {
|
|
74
|
+
const out = options.out ?? ((text) => process.stdout.write(text));
|
|
75
|
+
const err = options.err ?? ((text) => process.stderr.write(text));
|
|
51
76
|
if (argv.length) {
|
|
52
|
-
|
|
77
|
+
out("carrick logout\n\nSign this machine out: revoke its Carrick key on the server and remove the saved credential.\n");
|
|
53
78
|
return argv.length === 1 && ["--help", "-h"].includes(argv[0]) ? 0 : 2;
|
|
54
79
|
}
|
|
80
|
+
const env = options.env ?? process.env;
|
|
81
|
+
// The saved credential, never CARRICK_TOKEN: logout signs this machine's
|
|
82
|
+
// login out, and an override is a key the user manages somewhere else.
|
|
83
|
+
const { CARRICK_TOKEN: _override, ...fileEnv } = env;
|
|
84
|
+
let saved = null;
|
|
85
|
+
// An unreadable file still gets removed below; there is just no key to revoke.
|
|
55
86
|
try {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
87
|
+
saved = readCredential(fileEnv);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
saved = null;
|
|
91
|
+
}
|
|
92
|
+
try {
|
|
93
|
+
const revoked = saved ? await revokeKey(saved.token, options.fetch) : false;
|
|
94
|
+
const removed = removeCredential(env);
|
|
95
|
+
const where = saved?.workspace_slug ?? "Carrick";
|
|
96
|
+
if (!removed)
|
|
97
|
+
out("No saved Carrick credential.\n");
|
|
98
|
+
else if (revoked)
|
|
99
|
+
out(`Signed out of ${where}.\n`);
|
|
100
|
+
else
|
|
101
|
+
out(`Signed out of ${where} on this machine, but Carrick could not revoke the key on the server. Revoke it at ${APP_BASE}/account.\n`);
|
|
102
|
+
if (env["CARRICK_TOKEN"] !== undefined)
|
|
103
|
+
out("CARRICK_TOKEN still overrides login; unset it in your shell to sign out.\n");
|
|
61
104
|
return 0;
|
|
62
105
|
}
|
|
63
106
|
catch (error) {
|
|
64
|
-
|
|
107
|
+
err(`${error.message}\n`);
|
|
65
108
|
return 1;
|
|
66
109
|
}
|
|
67
110
|
}
|
package/dist/auth/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/auth/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/auth/run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "carrick",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.92",
|
|
4
4
|
"description": "The API contract index for a TypeScript workspace: what the other services do with the routes and calls in the file you are editing, in your editor and in your agent's context",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"typescript",
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
"zod": "^3.23.0"
|
|
59
59
|
},
|
|
60
60
|
"optionalDependencies": {
|
|
61
|
-
"@carrick-tools/cli-darwin-arm64": "0.3.
|
|
62
|
-
"@carrick-tools/cli-darwin-x64": "0.3.
|
|
63
|
-
"@carrick-tools/cli-linux-arm64": "0.3.
|
|
64
|
-
"@carrick-tools/cli-linux-x64": "0.3.
|
|
65
|
-
"@carrick-tools/cli-win32-x64": "0.3.
|
|
61
|
+
"@carrick-tools/cli-darwin-arm64": "0.3.92",
|
|
62
|
+
"@carrick-tools/cli-darwin-x64": "0.3.92",
|
|
63
|
+
"@carrick-tools/cli-linux-arm64": "0.3.92",
|
|
64
|
+
"@carrick-tools/cli-linux-x64": "0.3.92",
|
|
65
|
+
"@carrick-tools/cli-win32-x64": "0.3.92"
|
|
66
66
|
},
|
|
67
67
|
"devDependencies": {
|
|
68
68
|
"@types/node": "^24.13.3",
|