@agentteams/cli 0.1.95 → 0.1.96
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/.eslintcache +1 -1
- package/README.md +61 -1
- package/dist/auth/deviceAuthClient.d.ts +63 -0
- package/dist/auth/deviceAuthClient.d.ts.map +1 -0
- package/dist/auth/deviceAuthClient.js +131 -0
- package/dist/auth/deviceAuthClient.js.map +1 -0
- package/dist/auth/personalTokenClient.d.ts +44 -0
- package/dist/auth/personalTokenClient.d.ts.map +1 -1
- package/dist/auth/personalTokenClient.js +116 -0
- package/dist/auth/personalTokenClient.js.map +1 -1
- package/dist/commands/auth.d.ts +69 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +127 -4
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/init.d.ts +9 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +80 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/authFormat.d.ts.map +1 -1
- package/dist/utils/authFormat.js +15 -0
- package/dist/utils/authFormat.js.map +1 -1
- package/dist/utils/config.d.ts +18 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +56 -0
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -28,7 +28,67 @@ The `init` command:
|
|
|
28
28
|
- Saves the convention template to `.agentteams/convention.md`
|
|
29
29
|
- Syncs convention files into `.agentteams/<category>/*.md`
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
### Choosing a login method
|
|
32
|
+
|
|
33
|
+
The browser callback is always the default. Nothing is auto-detected — you pick a
|
|
34
|
+
method by what you type.
|
|
35
|
+
|
|
36
|
+
| Situation | What to run | How it authenticates |
|
|
37
|
+
| ------------------------------------------------------------ | ----------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
|
|
38
|
+
| Local machine with a browser (default) | `agentteams init` / `agentteams auth login` | The browser calls back to a temporary port on **this** machine |
|
|
39
|
+
| Remote or headless shell (SSH, container, WSL, no `DISPLAY`) | `agentteams init --device-auth` / `agentteams auth login --device-auth` | A short code you approve in a browser on **any other** device — no local port |
|
|
40
|
+
| CI and unattended automation | `AGENTTEAMS_API_KEY`, or a project service token | No human approval step at all |
|
|
41
|
+
|
|
42
|
+
> The default path opens a local port and waits for the browser to call back. Over
|
|
43
|
+
> SSH the browser runs on your laptop, so the callback reaches your laptop's
|
|
44
|
+
> `localhost` and never the remote shell — that is the case `--device-auth` exists
|
|
45
|
+
> for. Device authorization is **not** a CI mechanism: it always requires a person
|
|
46
|
+
> to approve the request.
|
|
47
|
+
|
|
48
|
+
#### `--device-auth`
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
# Log in only
|
|
52
|
+
agentteams auth login --device-auth
|
|
53
|
+
|
|
54
|
+
# Initialize a project (team/project/agent are chosen on the approval screen)
|
|
55
|
+
agentteams init --device-auth
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
The terminal prints a verification URL and an 8-character code. Open the URL on any
|
|
59
|
+
device, sign in, check that the code on screen matches the one in your terminal, and
|
|
60
|
+
approve. The CLI stores the login and continues.
|
|
61
|
+
|
|
62
|
+
To avoid typing the flag on every command on a remote machine, declare it once for
|
|
63
|
+
that machine:
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Persist it in ~/.agentteams/config.json (never in a project config)
|
|
67
|
+
agentteams auth login --device-auth --set-default
|
|
68
|
+
|
|
69
|
+
# Or per shell / per service unit
|
|
70
|
+
export AGENTTEAMS_DEVICE_AUTH=1
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
`agentteams auth status` reports whether this machine defaults to device
|
|
74
|
+
authorization. To turn it back off, remove `"deviceAuth"` from
|
|
75
|
+
`~/.agentteams/config.json` and unset `AGENTTEAMS_DEVICE_AUTH`.
|
|
76
|
+
|
|
77
|
+
Before starting, the CLI checks that this machine has a usable OS credential store
|
|
78
|
+
(macOS Keychain, Windows Credential Manager, or libsecret on Linux). On a minimal
|
|
79
|
+
Linux server install `libsecret` and unlock a keyring, e.g.
|
|
80
|
+
`sudo apt install libsecret-tools` — otherwise use `AGENTTEAMS_API_KEY` instead.
|
|
81
|
+
|
|
82
|
+
#### Troubleshooting
|
|
83
|
+
|
|
84
|
+
| Message | Cause | What to do |
|
|
85
|
+
| ------------------------------------------------------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------------------- |
|
|
86
|
+
| `OAuth callback timed out after 60 seconds.` | The default flow was used from a shell the browser cannot call back to | Re-run with `--device-auth` |
|
|
87
|
+
| `does not support device authorization` | The server is an older AgentTeams API | Re-run **without** `--device-auth`, or upgrade the server |
|
|
88
|
+
| `device authorization turned off because the server has no APP_URL` | Server configuration | Ask the operator to set `APP_URL`; use the default flow meanwhile |
|
|
89
|
+
| `The device code expired before it was approved` | The code is valid for 15 minutes | Run the command again for a new code |
|
|
90
|
+
| `The sign-in request was denied in the browser` | Deny was clicked | Run the command again if that was a mistake |
|
|
91
|
+
| `Cannot start device authorization: ... credential store` | No usable OS credential store | Install/unlock libsecret, or use `AGENTTEAMS_API_KEY` |
|
|
32
92
|
|
|
33
93
|
### Service URLs (Defaults and Overrides)
|
|
34
94
|
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 8628 device authorization for the CLI.
|
|
3
|
+
*
|
|
4
|
+
* The point of this flow is that **no local port is opened**. The terminal shows a
|
|
5
|
+
* short code, the user approves it in a browser on any other machine, and this
|
|
6
|
+
* module polls the server until that happens. It is only ever entered through the
|
|
7
|
+
* explicit `--device-auth` flag (or the machine-wide default the user declared);
|
|
8
|
+
* nothing here inspects SSH/container/WSL state to choose a flow.
|
|
9
|
+
*/
|
|
10
|
+
import { type DeviceSetupResult, type PersonalTokenIdentity } from './personalTokenClient.js';
|
|
11
|
+
export type DeviceAuthFlow = 'login' | 'setup';
|
|
12
|
+
export interface DeviceAuthorizationStart {
|
|
13
|
+
deviceCode: string;
|
|
14
|
+
/** Display form (`XXXX-XXXX`). Shown to the user; never used as a credential. */
|
|
15
|
+
userCode: string;
|
|
16
|
+
/** Server-owned. Never rebuilt from the CLI's own web URL — dev/prod must not cross. */
|
|
17
|
+
verificationUri: string;
|
|
18
|
+
verificationUriComplete: string;
|
|
19
|
+
expiresIn: number;
|
|
20
|
+
interval: number;
|
|
21
|
+
}
|
|
22
|
+
export interface DeviceAuthStartInput {
|
|
23
|
+
apiUrl: string;
|
|
24
|
+
flow: DeviceAuthFlow;
|
|
25
|
+
projectName?: string;
|
|
26
|
+
osType?: string;
|
|
27
|
+
machineId?: string;
|
|
28
|
+
/** Encrypted working directory; `init` sends it so path-based runner binding matches loopback. */
|
|
29
|
+
authPathEnc?: string;
|
|
30
|
+
fetchImpl?: typeof fetch;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Ask the server to open a device session.
|
|
34
|
+
*
|
|
35
|
+
* The two failure shapes are kept distinct on purpose. A 404 means the server is
|
|
36
|
+
* too old to know this endpoint — the fix is to re-run *without* the flag. A 503
|
|
37
|
+
* means the server knows it but is not configured for it — re-running without the
|
|
38
|
+
* flag also works, but the operator has something to fix. Collapsing them into one
|
|
39
|
+
* message sends half the users after the wrong problem.
|
|
40
|
+
*/
|
|
41
|
+
export declare function startDeviceAuthorization(input: DeviceAuthStartInput): Promise<DeviceAuthorizationStart>;
|
|
42
|
+
export interface DeviceAuthPollInput {
|
|
43
|
+
apiUrl: string;
|
|
44
|
+
start: DeviceAuthorizationStart;
|
|
45
|
+
/** Ctrl+C. Aborting stops the loop immediately rather than after the current sleep. */
|
|
46
|
+
signal?: AbortSignal;
|
|
47
|
+
/** Injected in tests so fake timers drive the interval instead of real waiting. */
|
|
48
|
+
sleep?: (ms: number) => Promise<void>;
|
|
49
|
+
now?: () => number;
|
|
50
|
+
}
|
|
51
|
+
export interface DeviceAuthResult {
|
|
52
|
+
identity: PersonalTokenIdentity;
|
|
53
|
+
setup: DeviceSetupResult | null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Poll until the session is approved, denied, or expires.
|
|
57
|
+
*
|
|
58
|
+
* Interval discipline is the whole job: the server's `interval` is honoured as
|
|
59
|
+
* given, `slow_down` raises it, and the loop also stops locally at `expiresIn` so
|
|
60
|
+
* a server that never answers cannot turn into an unbounded poll.
|
|
61
|
+
*/
|
|
62
|
+
export declare function pollDeviceAuthorization(input: DeviceAuthPollInput): Promise<DeviceAuthResult>;
|
|
63
|
+
//# sourceMappingURL=deviceAuthClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceAuthClient.d.ts","sourceRoot":"","sources":["../../src/auth/deviceAuthClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAKL,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC3B,MAAM,0BAA0B,CAAC;AAalC,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/C,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kGAAkG;IAClG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAsE7G;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,wBAAwB,CAAC;IAChC,uFAAuF;IACvF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mFAAmF;IACnF,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACjC;AAID;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAgEnG"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 8628 device authorization for the CLI.
|
|
3
|
+
*
|
|
4
|
+
* The point of this flow is that **no local port is opened**. The terminal shows a
|
|
5
|
+
* short code, the user approves it in a browser on any other machine, and this
|
|
6
|
+
* module polls the server until that happens. It is only ever entered through the
|
|
7
|
+
* explicit `--device-auth` flag (or the machine-wide default the user declared);
|
|
8
|
+
* nothing here inspects SSH/container/WSL state to choose a flow.
|
|
9
|
+
*/
|
|
10
|
+
import { CLI_OAUTH_CLIENT_ID, getPersonalTokenClient, PersonalTokenError, } from './personalTokenClient.js';
|
|
11
|
+
/** Fallback poll interval when the server does not send one. The server value always wins. */
|
|
12
|
+
const FALLBACK_INTERVAL_SECONDS = 5;
|
|
13
|
+
/** RFC 8628 `slow_down` step, used only when the server does not name the new interval. */
|
|
14
|
+
const SLOW_DOWN_STEP_SECONDS = 5;
|
|
15
|
+
/** Consecutive network failures tolerated before giving up. */
|
|
16
|
+
const MAX_TRANSIENT_FAILURES = 5;
|
|
17
|
+
const START_REQUEST_TIMEOUT_MS = 15_000;
|
|
18
|
+
/**
|
|
19
|
+
* Ask the server to open a device session.
|
|
20
|
+
*
|
|
21
|
+
* The two failure shapes are kept distinct on purpose. A 404 means the server is
|
|
22
|
+
* too old to know this endpoint — the fix is to re-run *without* the flag. A 503
|
|
23
|
+
* means the server knows it but is not configured for it — re-running without the
|
|
24
|
+
* flag also works, but the operator has something to fix. Collapsing them into one
|
|
25
|
+
* message sends half the users after the wrong problem.
|
|
26
|
+
*/
|
|
27
|
+
export async function startDeviceAuthorization(input) {
|
|
28
|
+
const doFetch = input.fetchImpl ?? globalThis.fetch;
|
|
29
|
+
const baseUrl = input.apiUrl.replace(/\/+$/, '');
|
|
30
|
+
let response;
|
|
31
|
+
try {
|
|
32
|
+
response = await doFetch(`${baseUrl}/api/auth/desktop/device/start`, {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
headers: { 'Content-Type': 'application/json' },
|
|
35
|
+
body: JSON.stringify({
|
|
36
|
+
clientId: CLI_OAUTH_CLIENT_ID,
|
|
37
|
+
flow: input.flow,
|
|
38
|
+
...(input.projectName ? { projectName: input.projectName } : {}),
|
|
39
|
+
...(input.osType ? { osType: input.osType } : {}),
|
|
40
|
+
...(input.machineId ? { machineId: input.machineId } : {}),
|
|
41
|
+
...(input.authPathEnc ? { authPathEnc: input.authPathEnc } : {}),
|
|
42
|
+
}),
|
|
43
|
+
signal: AbortSignal.timeout(START_REQUEST_TIMEOUT_MS),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
throw new PersonalTokenError('TRANSIENT', `Could not reach ${baseUrl} to start device authorization: ${error instanceof Error ? error.message : String(error)}.`);
|
|
48
|
+
}
|
|
49
|
+
if (response.status === 404) {
|
|
50
|
+
throw new PersonalTokenError('TRANSIENT', `${baseUrl} does not support device authorization (it is running an older AgentTeams API). ` +
|
|
51
|
+
'Run the same command without --device-auth to use the browser callback login.');
|
|
52
|
+
}
|
|
53
|
+
if (response.status === 503) {
|
|
54
|
+
throw new PersonalTokenError('TRANSIENT', `${baseUrl} has device authorization turned off because the server has no APP_URL configured. ` +
|
|
55
|
+
'Ask the server operator to set APP_URL, or run the same command without --device-auth for now.');
|
|
56
|
+
}
|
|
57
|
+
if (!response.ok) {
|
|
58
|
+
throw new PersonalTokenError('TRANSIENT', `Device authorization could not be started (HTTP ${response.status}).`);
|
|
59
|
+
}
|
|
60
|
+
const body = (await response.json().catch(() => null));
|
|
61
|
+
const data = body?.data;
|
|
62
|
+
if (!data ||
|
|
63
|
+
typeof data.deviceCode !== 'string' ||
|
|
64
|
+
typeof data.userCode !== 'string' ||
|
|
65
|
+
typeof data.verificationUri !== 'string') {
|
|
66
|
+
throw new PersonalTokenError('MALFORMED_RESPONSE', 'The server returned an unexpected device authorization payload.');
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
deviceCode: data.deviceCode,
|
|
70
|
+
userCode: data.userCode,
|
|
71
|
+
verificationUri: data.verificationUri,
|
|
72
|
+
verificationUriComplete: typeof data.verificationUriComplete === 'string' ? data.verificationUriComplete : data.verificationUri,
|
|
73
|
+
expiresIn: typeof data.expiresIn === 'number' ? data.expiresIn : 900,
|
|
74
|
+
interval: typeof data.interval === 'number' && data.interval > 0 ? data.interval : FALLBACK_INTERVAL_SECONDS,
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
const defaultSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
78
|
+
/**
|
|
79
|
+
* Poll until the session is approved, denied, or expires.
|
|
80
|
+
*
|
|
81
|
+
* Interval discipline is the whole job: the server's `interval` is honoured as
|
|
82
|
+
* given, `slow_down` raises it, and the loop also stops locally at `expiresIn` so
|
|
83
|
+
* a server that never answers cannot turn into an unbounded poll.
|
|
84
|
+
*/
|
|
85
|
+
export async function pollDeviceAuthorization(input) {
|
|
86
|
+
const client = getPersonalTokenClient(input.apiUrl);
|
|
87
|
+
const sleep = input.sleep ?? defaultSleep;
|
|
88
|
+
const now = input.now ?? Date.now;
|
|
89
|
+
const deadline = now() + input.start.expiresIn * 1000;
|
|
90
|
+
let intervalSeconds = input.start.interval;
|
|
91
|
+
let transientFailures = 0;
|
|
92
|
+
while (true) {
|
|
93
|
+
if (input.signal?.aborted) {
|
|
94
|
+
throw new PersonalTokenError('TRANSIENT', 'Device authorization was cancelled.');
|
|
95
|
+
}
|
|
96
|
+
await sleep(intervalSeconds * 1000);
|
|
97
|
+
if (input.signal?.aborted) {
|
|
98
|
+
throw new PersonalTokenError('TRANSIENT', 'Device authorization was cancelled.');
|
|
99
|
+
}
|
|
100
|
+
if (now() >= deadline) {
|
|
101
|
+
throw new PersonalTokenError('INVALID_GRANT', 'The device code expired before it was approved. Run the command again to get a new code.');
|
|
102
|
+
}
|
|
103
|
+
const outcome = await client.pollDeviceToken(input.start.deviceCode);
|
|
104
|
+
switch (outcome.kind) {
|
|
105
|
+
case 'approved':
|
|
106
|
+
return { identity: outcome.session.identity, setup: outcome.setup };
|
|
107
|
+
case 'pending':
|
|
108
|
+
transientFailures = 0;
|
|
109
|
+
break;
|
|
110
|
+
case 'slowDown':
|
|
111
|
+
transientFailures = 0;
|
|
112
|
+
intervalSeconds = outcome.intervalSeconds ?? intervalSeconds + SLOW_DOWN_STEP_SECONDS;
|
|
113
|
+
break;
|
|
114
|
+
case 'denied':
|
|
115
|
+
throw new PersonalTokenError('INVALID_GRANT', 'The sign-in request was denied in the browser.');
|
|
116
|
+
case 'expired':
|
|
117
|
+
throw new PersonalTokenError('INVALID_GRANT', 'The device code expired before it was approved. Run the command again to get a new code.');
|
|
118
|
+
case 'invalid':
|
|
119
|
+
throw new PersonalTokenError('INVALID_GRANT', 'The device code is no longer valid. Run the command again to get a new code.');
|
|
120
|
+
case 'transient':
|
|
121
|
+
// Back off but keep going: the user may still be finishing the approval.
|
|
122
|
+
transientFailures += 1;
|
|
123
|
+
if (transientFailures >= MAX_TRANSIENT_FAILURES) {
|
|
124
|
+
throw new PersonalTokenError('TRANSIENT', `Lost contact with ${input.apiUrl} while waiting for approval: ${outcome.detail}.`);
|
|
125
|
+
}
|
|
126
|
+
intervalSeconds += SLOW_DOWN_STEP_SECONDS;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=deviceAuthClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deviceAuthClient.js","sourceRoot":"","sources":["../../src/auth/deviceAuthClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,6 +115,40 @@ type ParsedTokenResponse = {
|
|
|
115
115
|
* a truncated body). Only the first justifies destroying local credentials.
|
|
116
116
|
*/
|
|
117
117
|
export declare function parseTokenResponse(response: Response): Promise<ParsedTokenResponse>;
|
|
118
|
+
/** `flow: 'setup'` result the approval screen chose; `init` writes these into the project config. */
|
|
119
|
+
export interface DeviceSetupResult {
|
|
120
|
+
teamId: string;
|
|
121
|
+
projectId: string;
|
|
122
|
+
agentConfigId: string;
|
|
123
|
+
agentName: string;
|
|
124
|
+
seedPlanId: string | null;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* One poll's outcome, in the server's own vocabulary (RFC 8628 error codes).
|
|
128
|
+
*
|
|
129
|
+
* `transient` is deliberately separate from `denied`/`expired`: only the latter
|
|
130
|
+
* two are decisions, and treating a dropped connection as a decision would end a
|
|
131
|
+
* login the user is still completing.
|
|
132
|
+
*/
|
|
133
|
+
export type DevicePollOutcome = {
|
|
134
|
+
kind: 'approved';
|
|
135
|
+
session: PersonalTokenSession;
|
|
136
|
+
setup: DeviceSetupResult | null;
|
|
137
|
+
} | {
|
|
138
|
+
kind: 'pending';
|
|
139
|
+
} | {
|
|
140
|
+
kind: 'slowDown';
|
|
141
|
+
intervalSeconds: number | null;
|
|
142
|
+
} | {
|
|
143
|
+
kind: 'denied';
|
|
144
|
+
} | {
|
|
145
|
+
kind: 'expired';
|
|
146
|
+
} | {
|
|
147
|
+
kind: 'invalid';
|
|
148
|
+
} | {
|
|
149
|
+
kind: 'transient';
|
|
150
|
+
detail: string;
|
|
151
|
+
};
|
|
118
152
|
export declare class PersonalTokenClient {
|
|
119
153
|
private readonly deps;
|
|
120
154
|
private accessToken;
|
|
@@ -126,6 +160,16 @@ export declare class PersonalTokenClient {
|
|
|
126
160
|
constructor(deps: PersonalTokenClientDeps);
|
|
127
161
|
state(): PersonalTokenState;
|
|
128
162
|
hasCredential(): boolean;
|
|
163
|
+
/**
|
|
164
|
+
* One poll of the RFC 8628 device token endpoint.
|
|
165
|
+
*
|
|
166
|
+
* Lives here rather than in the polling loop because the *storage* invariants
|
|
167
|
+
* are the same as a PKCE exchange: a credential the next process cannot find
|
|
168
|
+
* is not a login, so an unstorable token pair is revoked instead of orphaned.
|
|
169
|
+
* The loop only decides *when* to call this; the outcome vocabulary below is
|
|
170
|
+
* the server's error contract verbatim.
|
|
171
|
+
*/
|
|
172
|
+
pollDeviceToken(deviceCode: string): Promise<DevicePollOutcome>;
|
|
129
173
|
/**
|
|
130
174
|
* Trade a PKCE authorization code for the first token pair.
|
|
131
175
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personalTokenClient.d.ts","sourceRoot":"","sources":["../../src/auth/personalTokenClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"personalTokenClient.d.ts","sourceRoot":"","sources":["../../src/auth/personalTokenClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -88,6 +88,24 @@ export async function parseTokenResponse(response) {
|
|
|
88
88
|
},
|
|
89
89
|
};
|
|
90
90
|
}
|
|
91
|
+
const parseDeviceSetupResult = (value) => {
|
|
92
|
+
if (!value || typeof value !== 'object')
|
|
93
|
+
return null;
|
|
94
|
+
const setup = value;
|
|
95
|
+
if (typeof setup.teamId !== 'string' ||
|
|
96
|
+
typeof setup.projectId !== 'string' ||
|
|
97
|
+
typeof setup.agentConfigId !== 'string' ||
|
|
98
|
+
typeof setup.agentName !== 'string') {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
teamId: setup.teamId,
|
|
103
|
+
projectId: setup.projectId,
|
|
104
|
+
agentConfigId: setup.agentConfigId,
|
|
105
|
+
agentName: setup.agentName,
|
|
106
|
+
seedPlanId: typeof setup.seedPlanId === 'string' ? setup.seedPlanId : null,
|
|
107
|
+
};
|
|
108
|
+
};
|
|
91
109
|
export class PersonalTokenClient {
|
|
92
110
|
deps;
|
|
93
111
|
accessToken = null;
|
|
@@ -115,6 +133,104 @@ export class PersonalTokenClient {
|
|
|
115
133
|
hasCredential() {
|
|
116
134
|
return this.deps.store.read() !== null;
|
|
117
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* One poll of the RFC 8628 device token endpoint.
|
|
138
|
+
*
|
|
139
|
+
* Lives here rather than in the polling loop because the *storage* invariants
|
|
140
|
+
* are the same as a PKCE exchange: a credential the next process cannot find
|
|
141
|
+
* is not a login, so an unstorable token pair is revoked instead of orphaned.
|
|
142
|
+
* The loop only decides *when* to call this; the outcome vocabulary below is
|
|
143
|
+
* the server's error contract verbatim.
|
|
144
|
+
*/
|
|
145
|
+
async pollDeviceToken(deviceCode) {
|
|
146
|
+
const doFetch = this.deps.fetch ?? globalThis.fetch;
|
|
147
|
+
let response;
|
|
148
|
+
try {
|
|
149
|
+
response = await doFetch(`${this.baseUrl()}/api/auth/desktop/device/token`, {
|
|
150
|
+
method: 'POST',
|
|
151
|
+
headers: { 'Content-Type': 'application/json' },
|
|
152
|
+
body: JSON.stringify({ clientId: CLI_OAUTH_CLIENT_ID, deviceCode }),
|
|
153
|
+
signal: AbortSignal.timeout(TOKEN_REQUEST_TIMEOUT_MS),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
// A flaky network is not a denial. Reporting it as one would abort a login
|
|
158
|
+
// the user is still in the middle of completing in their browser.
|
|
159
|
+
return { kind: 'transient', detail: error instanceof Error ? error.message : String(error) };
|
|
160
|
+
}
|
|
161
|
+
if (!response.ok) {
|
|
162
|
+
let body;
|
|
163
|
+
try {
|
|
164
|
+
body = await response.json();
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return { kind: 'transient', detail: `HTTP ${response.status} with an unreadable body` };
|
|
168
|
+
}
|
|
169
|
+
const payload = (body ?? {});
|
|
170
|
+
switch (payload.error) {
|
|
171
|
+
case 'authorization_pending':
|
|
172
|
+
return { kind: 'pending' };
|
|
173
|
+
case 'slow_down':
|
|
174
|
+
return {
|
|
175
|
+
kind: 'slowDown',
|
|
176
|
+
intervalSeconds: typeof payload.interval === 'number' ? payload.interval : null,
|
|
177
|
+
};
|
|
178
|
+
case 'access_denied':
|
|
179
|
+
return { kind: 'denied' };
|
|
180
|
+
case 'expired_token':
|
|
181
|
+
return { kind: 'expired' };
|
|
182
|
+
case 'invalid_grant':
|
|
183
|
+
case 'invalid_client':
|
|
184
|
+
return { kind: 'invalid' };
|
|
185
|
+
default:
|
|
186
|
+
return { kind: 'transient', detail: `HTTP ${response.status}` };
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
let body;
|
|
190
|
+
try {
|
|
191
|
+
body = await response.json();
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
return { kind: 'transient', detail: 'the server returned an unreadable token payload' };
|
|
195
|
+
}
|
|
196
|
+
const data = body && typeof body === 'object' && 'data' in body
|
|
197
|
+
? body.data
|
|
198
|
+
: undefined;
|
|
199
|
+
const identity = data?.identity && typeof data.identity === 'object' ? data.identity : undefined;
|
|
200
|
+
if (typeof data?.accessToken !== 'string' ||
|
|
201
|
+
typeof data.refreshToken !== 'string' ||
|
|
202
|
+
typeof data.expiresIn !== 'number' ||
|
|
203
|
+
!identity ||
|
|
204
|
+
typeof identity.memberId !== 'string' ||
|
|
205
|
+
typeof identity.email !== 'string' ||
|
|
206
|
+
typeof identity.nickname !== 'string') {
|
|
207
|
+
return { kind: 'transient', detail: 'the server returned an unexpected token payload' };
|
|
208
|
+
}
|
|
209
|
+
const tokens = {
|
|
210
|
+
accessToken: data.accessToken,
|
|
211
|
+
refreshToken: data.refreshToken,
|
|
212
|
+
expiresIn: data.expiresIn,
|
|
213
|
+
identity: {
|
|
214
|
+
memberId: identity.memberId,
|
|
215
|
+
email: identity.email,
|
|
216
|
+
nickname: identity.nickname,
|
|
217
|
+
},
|
|
218
|
+
};
|
|
219
|
+
const stored = this.acceptTokens(tokens);
|
|
220
|
+
this.reconnectRequired = false;
|
|
221
|
+
if (!stored.persisted) {
|
|
222
|
+
await this.discardUnstorableTokens(stored);
|
|
223
|
+
}
|
|
224
|
+
return {
|
|
225
|
+
kind: 'approved',
|
|
226
|
+
session: {
|
|
227
|
+
accessToken: tokens.accessToken,
|
|
228
|
+
expiresAt: this.accessExpiresAt,
|
|
229
|
+
identity: tokens.identity,
|
|
230
|
+
},
|
|
231
|
+
setup: parseDeviceSetupResult(data.setup),
|
|
232
|
+
};
|
|
233
|
+
}
|
|
118
234
|
/**
|
|
119
235
|
* Trade a PKCE authorization code for the first token pair.
|
|
120
236
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personalTokenClient.js","sourceRoot":"","sources":["../../src/auth/personalTokenClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"personalTokenClient.js","sourceRoot":"","sources":["../../src/auth/personalTokenClient.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/auth.d.ts
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
* when the config has no `key_`, or when a migrated legacy project carries
|
|
7
7
|
* `authMode: 'personal-token'`.
|
|
8
8
|
*/
|
|
9
|
-
import type
|
|
9
|
+
import { type CredentialBackendId, type CredentialStoreReason } from '../auth/credentialStore.js';
|
|
10
|
+
import { pollDeviceAuthorization } from '../auth/deviceAuthClient.js';
|
|
10
11
|
import type { Config } from '../types/index.js';
|
|
11
12
|
import { type CredentialSource } from '../utils/config.js';
|
|
12
13
|
export type AuthLoginResult = {
|
|
@@ -29,6 +30,10 @@ export type AuthLoginResult = {
|
|
|
29
30
|
storeReason: CredentialStoreReason;
|
|
30
31
|
configPath: string | null;
|
|
31
32
|
authMode: 'personal-token';
|
|
33
|
+
/** true when this login used the device-code flow instead of the browser callback. */
|
|
34
|
+
deviceAuth: boolean;
|
|
35
|
+
/** Set only when `--set-default` wrote the machine-wide device-auth preference. */
|
|
36
|
+
deviceAuthDefaultPath?: string;
|
|
32
37
|
warning?: string;
|
|
33
38
|
};
|
|
34
39
|
export type AuthStatusResult = {
|
|
@@ -38,6 +43,17 @@ export type AuthStatusResult = {
|
|
|
38
43
|
credentialSource: CredentialSource | null;
|
|
39
44
|
authMode: Config['authMode'] | null;
|
|
40
45
|
hasProjectApiKey: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Machine-wide device-auth default (`--set-default` or AGENTTEAMS_DEVICE_AUTH).
|
|
48
|
+
* Reported here because otherwise there is no way to discover that this machine
|
|
49
|
+
* is on the device flow, nor how to turn it back off.
|
|
50
|
+
*/
|
|
51
|
+
deviceAuthDefault: {
|
|
52
|
+
enabled: boolean;
|
|
53
|
+
/** Where the preference lives, and therefore where to remove it. */
|
|
54
|
+
configPath: string;
|
|
55
|
+
disableHint: string;
|
|
56
|
+
};
|
|
41
57
|
personalToken: {
|
|
42
58
|
connected: boolean;
|
|
43
59
|
persisted: boolean;
|
|
@@ -77,6 +93,48 @@ export declare function buildPersonalTokenAuthorizeUrl(input: {
|
|
|
77
93
|
codeChallenge: string;
|
|
78
94
|
projectName?: string;
|
|
79
95
|
}): string;
|
|
96
|
+
/**
|
|
97
|
+
* Discoverability line for the device flow.
|
|
98
|
+
*
|
|
99
|
+
* This is the *only* thing `isSshEnvironment()` is allowed to influence. It never
|
|
100
|
+
* selects a flow: a false positive here costs one extra line of text, whereas a
|
|
101
|
+
* false positive in flow selection would downgrade a working one-click login on a
|
|
102
|
+
* local machine into copying a code by hand.
|
|
103
|
+
*/
|
|
104
|
+
export declare const DEVICE_AUTH_HINT = "If you cannot open that URL here, run 'agentteams auth login --device-auth' to authorize with a short code on another device instead.";
|
|
105
|
+
export declare const DEVICE_AUTH_INIT_HINT = "If you cannot open that URL here, run 'agentteams init --device-auth' to authorize with a short code on another device instead.";
|
|
106
|
+
/**
|
|
107
|
+
* Whether this invocation should take the device-code path.
|
|
108
|
+
*
|
|
109
|
+
* Three inputs, all of them **explicit user declarations**: the flag, the env var,
|
|
110
|
+
* and the machine-wide default written by `--set-default`. Nothing detects the
|
|
111
|
+
* environment. Adding detection here is the one change this feature must not take:
|
|
112
|
+
* a false positive strands a local user on code entry, and a false negative opens
|
|
113
|
+
* a loopback port on a remote box, which is the original bug.
|
|
114
|
+
*/
|
|
115
|
+
export declare function shouldUseDeviceAuth(options: Record<string, unknown>, userHomeDir?: string): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Run the device-code round trip.
|
|
118
|
+
*
|
|
119
|
+
* Exported so `init --device-auth` reuses the identical handshake instead of
|
|
120
|
+
* growing a second copy of the polling state machine.
|
|
121
|
+
*/
|
|
122
|
+
export declare function performDeviceAuthLogin(input: {
|
|
123
|
+
apiUrl: string;
|
|
124
|
+
flow?: 'login' | 'setup';
|
|
125
|
+
projectName?: string;
|
|
126
|
+
osType?: string;
|
|
127
|
+
machineId?: string;
|
|
128
|
+
authPathEnc?: string;
|
|
129
|
+
signal?: AbortSignal;
|
|
130
|
+
}): Promise<{
|
|
131
|
+
verificationUri: string;
|
|
132
|
+
identity: AuthLoginResult['identity'];
|
|
133
|
+
setup: Awaited<ReturnType<typeof pollDeviceAuthorization>>['setup'];
|
|
134
|
+
persisted: boolean;
|
|
135
|
+
storeBackend: CredentialBackendId;
|
|
136
|
+
storeReason: CredentialStoreReason;
|
|
137
|
+
}>;
|
|
80
138
|
/**
|
|
81
139
|
* Run the browser round trip and exchange the resulting code for tokens.
|
|
82
140
|
*
|
|
@@ -93,5 +151,15 @@ export declare function performPersonalTokenLogin(input: {
|
|
|
93
151
|
storeBackend: CredentialBackendId;
|
|
94
152
|
storeReason: CredentialStoreReason;
|
|
95
153
|
}>;
|
|
154
|
+
/**
|
|
155
|
+
* Attach the device-code hint to the loopback timeout.
|
|
156
|
+
*
|
|
157
|
+
* That timeout is exactly the failure this feature exists for: the browser
|
|
158
|
+
* called back to *its own* localhost, so a login started over SSH waits 60
|
|
159
|
+
* seconds and dies with no idea what to do next. The hint is added where the
|
|
160
|
+
* user-facing message is built rather than inside `authServer`, so the local
|
|
161
|
+
* (working) path keeps its message unchanged.
|
|
162
|
+
*/
|
|
163
|
+
export declare function decorateLoopbackTimeout(error: unknown, hint: string): unknown;
|
|
96
164
|
export declare function executeAuthCommand(action: string, options?: Record<string, unknown>): Promise<unknown>;
|
|
97
165
|
//# sourceMappingURL=auth.d.ts.map
|