expandai 0.0.2 → 0.0.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 +42 -5
- package/build/dts/ApiClient.d.ts +128 -194
- package/build/dts/ApiClient.d.ts.map +1 -1
- package/build/dts/Auth/Domain.d.ts +95 -0
- package/build/dts/Auth/Domain.d.ts.map +1 -0
- package/build/dts/Auth/ManualAuthorization.d.ts +107 -0
- package/build/dts/Auth/ManualAuthorization.d.ts.map +1 -0
- package/build/dts/Auth/PendingInit.d.ts +35 -0
- package/build/dts/Auth/PendingInit.d.ts.map +1 -0
- package/build/dts/Auth/Pkce.d.ts +10 -0
- package/build/dts/Auth/Pkce.d.ts.map +1 -0
- package/build/dts/Auth/SetupGrantAuthorization.d.ts +34 -0
- package/build/dts/Auth/SetupGrantAuthorization.d.ts.map +1 -0
- package/build/dts/Authentication.d.ts +10 -9
- package/build/dts/Authentication.d.ts.map +1 -1
- package/build/dts/BrowserOAuth.d.ts +7 -7
- package/build/dts/BrowserOAuth.d.ts.map +1 -1
- package/build/dts/CommandPath.d.ts +2 -0
- package/build/dts/CommandPath.d.ts.map +1 -0
- package/build/dts/Commands/Fetch.d.ts.map +1 -1
- package/build/dts/Commands/Hook.d.ts +5 -5
- package/build/dts/Commands/Init.d.ts +55 -0
- package/build/dts/Commands/Init.d.ts.map +1 -0
- package/build/dts/Commands/Mcp.d.ts +6 -6
- package/build/dts/Commands/Search.d.ts.map +1 -1
- package/build/dts/Commands/Skill.d.ts +4 -4
- package/build/dts/Commands/Status.d.ts +27 -0
- package/build/dts/Commands/Status.d.ts.map +1 -0
- package/build/dts/Commands/Telemetry.d.ts +7 -0
- package/build/dts/Commands/Telemetry.d.ts.map +1 -0
- package/build/dts/Commands/Uninstall.d.ts +4 -4
- package/build/dts/Config.d.ts +108 -17
- package/build/dts/Config.d.ts.map +1 -1
- package/build/dts/Hook/SnapshotNote.d.ts +8 -4
- package/build/dts/Hook/SnapshotNote.d.ts.map +1 -1
- package/build/dts/Init/ClaudeAdapter.d.ts +61 -0
- package/build/dts/Init/ClaudeAdapter.d.ts.map +1 -0
- package/build/dts/Init/ClaudeProfile.d.ts +77 -0
- package/build/dts/Init/ClaudeProfile.d.ts.map +1 -0
- package/build/dts/Init/Domain.d.ts +139 -0
- package/build/dts/Init/Domain.d.ts.map +1 -0
- package/build/dts/Init/HarnessAdapter.d.ts +33 -0
- package/build/dts/Init/HarnessAdapter.d.ts.map +1 -0
- package/build/dts/Init/HarnessDetector.d.ts +19 -0
- package/build/dts/Init/HarnessDetector.d.ts.map +1 -0
- package/build/dts/Init/HarnessRegistry.d.ts +50 -0
- package/build/dts/Init/HarnessRegistry.d.ts.map +1 -0
- package/build/dts/Init/MutationTransaction.d.ts +96 -0
- package/build/dts/Init/MutationTransaction.d.ts.map +1 -0
- package/build/dts/Init/Service.d.ts +72 -0
- package/build/dts/Init/Service.d.ts.map +1 -0
- package/build/dts/Init/StandardAdapters.d.ts +42 -0
- package/build/dts/Init/StandardAdapters.d.ts.map +1 -0
- package/build/dts/Init/Status.d.ts +149 -0
- package/build/dts/Init/Status.d.ts.map +1 -0
- package/build/dts/Install/Claude/Hook.d.ts +57 -29
- package/build/dts/Install/Claude/Hook.d.ts.map +1 -1
- package/build/dts/Install/Claude/Mcp.d.ts +21 -18
- package/build/dts/Install/Claude/Mcp.d.ts.map +1 -1
- package/build/dts/Install/Claude/Skill.d.ts +14 -15
- package/build/dts/Install/Claude/Skill.d.ts.map +1 -1
- package/build/dts/Install/Codex/Mcp.d.ts +14 -8
- package/build/dts/Install/Codex/Mcp.d.ts.map +1 -1
- package/build/dts/Install/Codex/Skill.d.ts +4 -2
- package/build/dts/Install/Codex/Skill.d.ts.map +1 -1
- package/build/dts/Install/Cursor/Mcp.d.ts +13 -13
- package/build/dts/Install/Cursor/Mcp.d.ts.map +1 -1
- package/build/dts/Install/Cursor/Skill.d.ts +4 -2
- package/build/dts/Install/Cursor/Skill.d.ts.map +1 -1
- package/build/dts/Install/Domain.d.ts +35 -5
- package/build/dts/Install/Domain.d.ts.map +1 -1
- package/build/dts/Install/Hook.d.ts +4 -4
- package/build/dts/Install/Hook.d.ts.map +1 -1
- package/build/dts/Install/Mcp.d.ts +5 -5
- package/build/dts/Install/Mcp.d.ts.map +1 -1
- package/build/dts/Install/Opencode/Hook.d.ts +4 -3
- package/build/dts/Install/Opencode/Hook.d.ts.map +1 -1
- package/build/dts/Install/Opencode/Mcp.d.ts +11 -11
- package/build/dts/Install/Opencode/Mcp.d.ts.map +1 -1
- package/build/dts/Install/Opencode/Skill.d.ts +4 -2
- package/build/dts/Install/Opencode/Skill.d.ts.map +1 -1
- package/build/dts/Install/Skill.d.ts +3 -3
- package/build/dts/Install/Uninstall.d.ts +6 -6
- package/build/dts/Install/Uninstall.d.ts.map +1 -1
- package/build/dts/MarkdownAnsi.d.ts +29 -0
- package/build/dts/MarkdownAnsi.d.ts.map +1 -0
- package/build/dts/Mcp/ExpandDocs.d.ts +17 -5
- package/build/dts/Mcp/ExpandDocs.d.ts.map +1 -1
- package/build/dts/Mcp/Server.d.ts +1 -1
- package/build/dts/Mcp/Server.d.ts.map +1 -1
- package/build/dts/Mcp/tools/Citations.d.ts +100 -71
- package/build/dts/Mcp/tools/Citations.d.ts.map +1 -1
- package/build/dts/Mcp/tools/Fetch.d.ts +16 -15
- package/build/dts/Mcp/tools/Fetch.d.ts.map +1 -1
- package/build/dts/SecureFile.d.ts +23 -0
- package/build/dts/SecureFile.d.ts.map +1 -0
- package/build/dts/Snippets.d.ts +11 -12
- package/build/dts/Snippets.d.ts.map +1 -1
- package/build/dts/Telemetry.d.ts +30 -0
- package/build/dts/Telemetry.d.ts.map +1 -0
- package/build/dts/Version.d.ts +2 -0
- package/build/dts/Version.d.ts.map +1 -0
- package/build/dts/Xdg.d.ts +11 -0
- package/build/dts/Xdg.d.ts.map +1 -0
- package/build/esm/ApiClient.js +133 -10
- package/build/esm/ApiClient.js.map +1 -1
- package/build/esm/Auth/Domain.js +56 -0
- package/build/esm/Auth/Domain.js.map +1 -0
- package/build/esm/Auth/ManualAuthorization.js +253 -0
- package/build/esm/Auth/ManualAuthorization.js.map +1 -0
- package/build/esm/Auth/PendingInit.js +267 -0
- package/build/esm/Auth/PendingInit.js.map +1 -0
- package/build/esm/Auth/Pkce.js +23 -0
- package/build/esm/Auth/Pkce.js.map +1 -0
- package/build/esm/Auth/SetupGrantAuthorization.js +91 -0
- package/build/esm/Auth/SetupGrantAuthorization.js.map +1 -0
- package/build/esm/Authentication.js +38 -7
- package/build/esm/Authentication.js.map +1 -1
- package/build/esm/BrowserOAuth.js +7 -10
- package/build/esm/BrowserOAuth.js.map +1 -1
- package/build/esm/CommandPath.js +31 -0
- package/build/esm/CommandPath.js.map +1 -0
- package/build/esm/Commands/Fetch.js +30 -6
- package/build/esm/Commands/Fetch.js.map +1 -1
- package/build/esm/Commands/Init.js +371 -0
- package/build/esm/Commands/Init.js.map +1 -0
- package/build/esm/Commands/Search.js +6 -3
- package/build/esm/Commands/Search.js.map +1 -1
- package/build/esm/Commands/Status.js +186 -0
- package/build/esm/Commands/Status.js.map +1 -0
- package/build/esm/Commands/Telemetry.js +23 -0
- package/build/esm/Commands/Telemetry.js.map +1 -0
- package/build/esm/Config.js +502 -28
- package/build/esm/Config.js.map +1 -1
- package/build/esm/Hook/Claude.js +1 -1
- package/build/esm/Hook/Claude.js.map +1 -1
- package/build/esm/Hook/SnapshotNote.js +54 -7
- package/build/esm/Hook/SnapshotNote.js.map +1 -1
- package/build/esm/Init/ClaudeAdapter.js +137 -0
- package/build/esm/Init/ClaudeAdapter.js.map +1 -0
- package/build/esm/Init/ClaudeProfile.js +344 -0
- package/build/esm/Init/ClaudeProfile.js.map +1 -0
- package/build/esm/Init/Domain.js +118 -0
- package/build/esm/Init/Domain.js.map +1 -0
- package/build/esm/Init/HarnessAdapter.js +21 -0
- package/build/esm/Init/HarnessAdapter.js.map +1 -0
- package/build/esm/Init/HarnessDetector.js +65 -0
- package/build/esm/Init/HarnessDetector.js.map +1 -0
- package/build/esm/Init/HarnessRegistry.js +58 -0
- package/build/esm/Init/HarnessRegistry.js.map +1 -0
- package/build/esm/Init/MutationTransaction.js +494 -0
- package/build/esm/Init/MutationTransaction.js.map +1 -0
- package/build/esm/Init/Service.js +319 -0
- package/build/esm/Init/Service.js.map +1 -0
- package/build/esm/Init/StandardAdapters.js +116 -0
- package/build/esm/Init/StandardAdapters.js.map +1 -0
- package/build/esm/Init/Status.js +215 -0
- package/build/esm/Init/Status.js.map +1 -0
- package/build/esm/Install/Claude/Hook.js +52 -64
- package/build/esm/Install/Claude/Hook.js.map +1 -1
- package/build/esm/Install/Claude/Mcp.js +56 -26
- package/build/esm/Install/Claude/Mcp.js.map +1 -1
- package/build/esm/Install/Claude/Skill.js +49 -27
- package/build/esm/Install/Claude/Skill.js.map +1 -1
- package/build/esm/Install/Codex/Mcp.js +9 -4
- package/build/esm/Install/Codex/Mcp.js.map +1 -1
- package/build/esm/Install/Codex/Skill.js +4 -1
- package/build/esm/Install/Codex/Skill.js.map +1 -1
- package/build/esm/Install/Cursor/Mcp.js +7 -4
- package/build/esm/Install/Cursor/Mcp.js.map +1 -1
- package/build/esm/Install/Cursor/Skill.js +4 -1
- package/build/esm/Install/Cursor/Skill.js.map +1 -1
- package/build/esm/Install/Domain.js +60 -3
- package/build/esm/Install/Domain.js.map +1 -1
- package/build/esm/Install/Hook.js.map +1 -1
- package/build/esm/Install/Mcp.js +1 -1
- package/build/esm/Install/Mcp.js.map +1 -1
- package/build/esm/Install/Opencode/Hook.js +1 -1
- package/build/esm/Install/Opencode/Hook.js.map +1 -1
- package/build/esm/Install/Opencode/Mcp.js +6 -3
- package/build/esm/Install/Opencode/Mcp.js.map +1 -1
- package/build/esm/Install/Opencode/Skill.js +4 -1
- package/build/esm/Install/Opencode/Skill.js.map +1 -1
- package/build/esm/Install/Opencode/expandai-webfetch.js +27 -9
- package/build/esm/Install/Skill.js.map +1 -1
- package/build/esm/Install/Uninstall.js +2 -2
- package/build/esm/Install/Uninstall.js.map +1 -1
- package/build/esm/MarkdownAnsi.js +142 -0
- package/build/esm/MarkdownAnsi.js.map +1 -0
- package/build/esm/Mcp/ExpandDocs.js +44 -52
- package/build/esm/Mcp/ExpandDocs.js.map +1 -1
- package/build/esm/Mcp/RequestHeaders.js.map +1 -1
- package/build/esm/Mcp/Server.js +2 -1
- package/build/esm/Mcp/Server.js.map +1 -1
- package/build/esm/Mcp/tools/Citations.js +109 -8
- package/build/esm/Mcp/tools/Citations.js.map +1 -1
- package/build/esm/Mcp/tools/Fetch.js +36 -12
- package/build/esm/Mcp/tools/Fetch.js.map +1 -1
- package/build/esm/SecureFile.js +36 -0
- package/build/esm/SecureFile.js.map +1 -0
- package/build/esm/Snippets.js +12 -1
- package/build/esm/Snippets.js.map +1 -1
- package/build/esm/Telemetry.js +157 -0
- package/build/esm/Telemetry.js.map +1 -0
- package/build/esm/Version.js +4 -0
- package/build/esm/Version.js.map +1 -0
- package/build/esm/Xdg.js +15 -0
- package/build/esm/Xdg.js.map +1 -0
- package/build/esm/main.js +122 -14
- package/build/esm/main.js.map +1 -1
- package/build/skills/expandai/SKILL.md +37 -8
- package/package.json +4 -4
- package/src/ApiClient.ts +206 -13
- package/src/Auth/Domain.ts +63 -0
- package/src/Auth/ManualAuthorization.ts +296 -0
- package/src/Auth/PendingInit.ts +338 -0
- package/src/Auth/Pkce.ts +26 -0
- package/src/Auth/SetupGrantAuthorization.ts +116 -0
- package/src/Authentication.ts +49 -11
- package/src/BrowserOAuth.ts +10 -12
- package/src/CommandPath.ts +30 -0
- package/src/Commands/Fetch.ts +42 -11
- package/src/Commands/Init.ts +489 -0
- package/src/Commands/Search.ts +8 -3
- package/src/Commands/Status.ts +228 -0
- package/src/Commands/Telemetry.ts +42 -0
- package/src/Config.ts +695 -50
- package/src/Hook/Claude.ts +1 -1
- package/src/Hook/SnapshotNote.ts +55 -7
- package/src/Init/ClaudeAdapter.ts +191 -0
- package/src/Init/ClaudeProfile.ts +453 -0
- package/src/Init/Domain.ts +153 -0
- package/src/Init/HarnessAdapter.ts +35 -0
- package/src/Init/HarnessDetector.ts +77 -0
- package/src/Init/HarnessRegistry.ts +87 -0
- package/src/Init/MutationTransaction.ts +747 -0
- package/src/Init/Service.ts +385 -0
- package/src/Init/StandardAdapters.ts +141 -0
- package/src/Init/Status.ts +253 -0
- package/src/Install/Claude/Hook.ts +81 -91
- package/src/Install/Claude/Mcp.ts +80 -33
- package/src/Install/Claude/Skill.ts +70 -37
- package/src/Install/Codex/Mcp.ts +14 -9
- package/src/Install/Codex/Skill.ts +9 -5
- package/src/Install/Cursor/Mcp.ts +12 -9
- package/src/Install/Cursor/Skill.ts +9 -5
- package/src/Install/Domain.ts +77 -4
- package/src/Install/Hook.ts +3 -3
- package/src/Install/Mcp.ts +6 -6
- package/src/Install/Opencode/Hook.ts +5 -5
- package/src/Install/Opencode/Mcp.ts +11 -8
- package/src/Install/Opencode/Skill.ts +9 -5
- package/src/Install/Opencode/expandai-webfetch.js +27 -9
- package/src/Install/Skill.ts +3 -3
- package/src/Install/Uninstall.ts +3 -3
- package/src/MarkdownAnsi.ts +162 -0
- package/src/Mcp/ExpandDocs.ts +46 -55
- package/src/Mcp/Server.ts +2 -1
- package/src/Mcp/tools/Citations.ts +117 -8
- package/src/Mcp/tools/Fetch.ts +40 -14
- package/src/SecureFile.ts +70 -0
- package/src/Snippets.ts +19 -12
- package/src/Telemetry.ts +186 -0
- package/src/Version.ts +3 -0
- package/src/Xdg.ts +18 -0
- package/src/main.ts +171 -12
- package/build/dts/DeviceAuth.d.ts +0 -87
- package/build/dts/DeviceAuth.d.ts.map +0 -1
- package/build/esm/DeviceAuth.js +0 -127
- package/build/esm/DeviceAuth.js.map +0 -1
- package/src/DeviceAuth.ts +0 -193
package/build/esm/ApiClient.js
CHANGED
|
@@ -4,9 +4,46 @@ import { fetchObjectModeJson, fetchSnapshotSearch } from '@expandai/sdk/FetchJso
|
|
|
4
4
|
import * as Generated from '@expandai/sdk/Generated';
|
|
5
5
|
import { decodeError, unexpectedStatus } from '@expandai/sdk/HttpClientHelpers';
|
|
6
6
|
import { Data, DateTime, Duration, Effect, flow, Match, Option, Redacted, Schema } from 'effect';
|
|
7
|
+
import { CLI_AUTHORIZATION_CLIENT_ID } from './Auth/Domain.js';
|
|
7
8
|
import { BrowserOAuthService } from './BrowserOAuth.js';
|
|
8
9
|
import { ConfigManager, OAuthConfig, OAuthTokenExpired } from './Config.js';
|
|
9
10
|
import { CurrentRequestHeaders } from './Mcp/RequestHeaders.js';
|
|
11
|
+
export class DeviceAuthorizationCreated extends Schema.Class('DeviceAuthorizationCreated')({
|
|
12
|
+
deviceCode: Schema.Redacted(Schema.NonEmptyString),
|
|
13
|
+
userCode: Schema.NonEmptyString,
|
|
14
|
+
// `Schema.URL` decodes to a `URL`; the wire form stays a string. The CLI
|
|
15
|
+
// hands this to the user to open, so a malformed `appUrls.app` should fail
|
|
16
|
+
// here rather than in a browser.
|
|
17
|
+
verificationUri: Schema.URL,
|
|
18
|
+
// Whole seconds. A zero or negative `expiresIn` is a window that has already
|
|
19
|
+
// closed, so it must be positive.
|
|
20
|
+
expiresIn: Schema.Int.pipe(Schema.positive()),
|
|
21
|
+
// `interval` is RFC 8628's *minimum* wait between polls, so zero is
|
|
22
|
+
// meaningful — poll without delay. Only negative is nonsense, and it would
|
|
23
|
+
// make `nextPollAt` drift backwards forever.
|
|
24
|
+
interval: Schema.Int.pipe(Schema.nonNegative()),
|
|
25
|
+
}) {
|
|
26
|
+
}
|
|
27
|
+
const ManualAuthorizationTokenResponse = Schema.Struct({
|
|
28
|
+
access_token: Schema.Redacted(Schema.NonEmptyString),
|
|
29
|
+
refresh_token: Schema.Redacted(Schema.NonEmptyString),
|
|
30
|
+
token_type: Schema.NonEmptyString,
|
|
31
|
+
expires_in: Schema.Number.pipe(Schema.positive()),
|
|
32
|
+
scope: Schema.optional(Schema.String),
|
|
33
|
+
});
|
|
34
|
+
const ManualAuthorizationOperation = Schema.Literal('create', 'poll');
|
|
35
|
+
export class ManualAuthorizationApiError extends Schema.TaggedError()('ManualAuthorizationApiError', {
|
|
36
|
+
operation: ManualAuthorizationOperation,
|
|
37
|
+
kind: Schema.Literal('request_failed', 'rejected', 'invalid_response'),
|
|
38
|
+
status: Schema.optional(Schema.Number),
|
|
39
|
+
recoverable: Schema.Boolean,
|
|
40
|
+
}) {
|
|
41
|
+
get message() {
|
|
42
|
+
return this.kind === 'rejected'
|
|
43
|
+
? `Manual authorization ${this.operation} was rejected. Restart authorization if the problem persists.`
|
|
44
|
+
: `Manual authorization ${this.operation} could not be completed safely. Try again.`;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
10
47
|
/**
|
|
11
48
|
* Single user-facing error for any failure crossing the API boundary. The
|
|
12
49
|
* generated client raises a half-dozen status-specific tagged classes plus
|
|
@@ -39,17 +76,17 @@ function getUnsupportedFields(value) {
|
|
|
39
76
|
const unsupportedFields = getField(value, 'unsupportedFields');
|
|
40
77
|
return Array.isArray(unsupportedFields) ? unsupportedFields.filter((field) => typeof field === 'string') : [];
|
|
41
78
|
}
|
|
42
|
-
|
|
79
|
+
function formatIssue({ path, message }) {
|
|
43
80
|
const prefix = path.map((segment) => (typeof segment === 'object' ? segment.key : String(segment))).join('.');
|
|
44
81
|
return prefix ? `${prefix}: ${message}` : message;
|
|
45
|
-
}
|
|
46
|
-
|
|
82
|
+
}
|
|
83
|
+
function formatApiFailure(error) {
|
|
47
84
|
switch (getStringField(error, '_tag')) {
|
|
48
85
|
case 'HttpApiDecodeError': {
|
|
49
86
|
const issues = getIssueList(error);
|
|
50
|
-
return
|
|
51
|
-
?
|
|
52
|
-
:
|
|
87
|
+
return issues.length === 0
|
|
88
|
+
? (getStringField(error, 'message') ?? 'Invalid request')
|
|
89
|
+
: issues.map(formatIssue).join('; ');
|
|
53
90
|
}
|
|
54
91
|
case 'AuthFailed':
|
|
55
92
|
return `Authentication failed (${getStringField(error, 'reason') ?? 'unknown'}). Run \`expandai login\` to re-authenticate.`;
|
|
@@ -70,8 +107,93 @@ const formatApiFailure = Effect.fn('ApiClient.formatApiFailure')(function* (erro
|
|
|
70
107
|
default:
|
|
71
108
|
return error instanceof Error ? error.message : (getStringField(error, 'message') ?? 'Expand API request failed.');
|
|
72
109
|
}
|
|
73
|
-
}
|
|
74
|
-
const liftApiError = (self) => self.pipe(Effect.catchAll((error) =>
|
|
110
|
+
}
|
|
111
|
+
const liftApiError = (self) => self.pipe(Effect.catchAll((error) => new ApiRequestFailed({ detail: formatApiFailure(error) })));
|
|
112
|
+
/** Public, unauthenticated HTTP boundary for device-flow CLI authorization. */
|
|
113
|
+
export class ManualAuthorizationApiClient extends Effect.Service()('@expandai/cli/ManualAuthorizationApiClient', {
|
|
114
|
+
dependencies: [NodeHttpClient.layer, ConfigManager.Default],
|
|
115
|
+
effect: Effect.gen(function* () {
|
|
116
|
+
const httpClient = yield* HttpClient.HttpClient;
|
|
117
|
+
const configManager = yield* ConfigManager;
|
|
118
|
+
const apiError = (operation, kind, status) => new ManualAuthorizationApiError({
|
|
119
|
+
operation,
|
|
120
|
+
kind,
|
|
121
|
+
status,
|
|
122
|
+
recoverable: kind !== 'invalid_response',
|
|
123
|
+
});
|
|
124
|
+
const create = Effect.fn('ManualAuthorizationApiClient.create')(function* (input) {
|
|
125
|
+
const apiUrl = yield* configManager.getApiUrl();
|
|
126
|
+
const request = yield* HttpClientRequest.post(new URL('/v1/cli-authorization/device', apiUrl)).pipe(HttpClientRequest.bodyJson(input), Effect.mapError(() => apiError('create', 'request_failed')));
|
|
127
|
+
return yield* httpClient.execute(request).pipe(Effect.flatMap((response) => response.status >= 200 && response.status < 300
|
|
128
|
+
? HttpClientResponse.schemaBodyJson(DeviceAuthorizationCreated)(response).pipe(Effect.mapError(() => apiError('create', 'invalid_response')))
|
|
129
|
+
: Effect.fail(apiError('create', 'rejected', response.status))), Effect.catchAll((error) => error instanceof ManualAuthorizationApiError
|
|
130
|
+
? Effect.fail(error)
|
|
131
|
+
: Effect.fail(apiError('create', 'request_failed'))));
|
|
132
|
+
});
|
|
133
|
+
const PollErrorBody = Schema.Struct({
|
|
134
|
+
error: Schema.String,
|
|
135
|
+
error_description: Schema.optional(Schema.String),
|
|
136
|
+
});
|
|
137
|
+
/**
|
|
138
|
+
* RFC 6749/8628 errors that describe the *request* rather than the state
|
|
139
|
+
* of this particular code. Re-minting produces a code that fails
|
|
140
|
+
* identically, so treating these as "expired" is what turns a
|
|
141
|
+
* misconfiguration into an endless approve loop.
|
|
142
|
+
*/
|
|
143
|
+
const PERMANENT_REFUSALS = new Set([
|
|
144
|
+
'invalid_target',
|
|
145
|
+
'invalid_client',
|
|
146
|
+
'invalid_scope',
|
|
147
|
+
'unsupported_grant_type',
|
|
148
|
+
'unauthorized_client',
|
|
149
|
+
'invalid_request',
|
|
150
|
+
]);
|
|
151
|
+
/**
|
|
152
|
+
* One poll of the OAuth token endpoint (RFC 8628). Form-encoded, and
|
|
153
|
+
* always against `/oauth2/token`: `/device/token` is the first-party
|
|
154
|
+
* session path and the server rejects our client there by design.
|
|
155
|
+
*/
|
|
156
|
+
const poll = Effect.fn('ManualAuthorizationApiClient.poll')(function* (deviceCode) {
|
|
157
|
+
const apiUrl = yield* configManager.getApiUrl();
|
|
158
|
+
const request = HttpClientRequest.post(new URL('/api/auth/oauth2/token', apiUrl)).pipe(HttpClientRequest.bodyUrlParams({
|
|
159
|
+
grant_type: 'urn:ietf:params:oauth:grant-type:device_code',
|
|
160
|
+
device_code: Redacted.value(deviceCode),
|
|
161
|
+
client_id: CLI_AUTHORIZATION_CLIENT_ID,
|
|
162
|
+
}));
|
|
163
|
+
return yield* httpClient.execute(request).pipe(Effect.flatMap(Effect.fnUntraced(function* (response) {
|
|
164
|
+
if (response.status >= 200 && response.status < 300) {
|
|
165
|
+
const token = yield* HttpClientResponse.schemaBodyJson(ManualAuthorizationTokenResponse)(response).pipe(Effect.mapError(() => apiError('poll', 'invalid_response')));
|
|
166
|
+
return { _tag: 'Tokens', token };
|
|
167
|
+
}
|
|
168
|
+
if (response.status >= 500)
|
|
169
|
+
return yield* apiError('poll', 'rejected', response.status);
|
|
170
|
+
const body = yield* HttpClientResponse.schemaBodyJson(PollErrorBody)(response).pipe(Effect.mapError(() => apiError('poll', 'invalid_response')));
|
|
171
|
+
switch (body.error) {
|
|
172
|
+
case 'authorization_pending':
|
|
173
|
+
return { _tag: 'Pending' };
|
|
174
|
+
case 'slow_down':
|
|
175
|
+
return { _tag: 'SlowDown' };
|
|
176
|
+
case 'access_denied':
|
|
177
|
+
return { _tag: 'Denied' };
|
|
178
|
+
case 'expired_token':
|
|
179
|
+
return { _tag: 'Expired' };
|
|
180
|
+
default:
|
|
181
|
+
return PERMANENT_REFUSALS.has(body.error)
|
|
182
|
+
? {
|
|
183
|
+
_tag: 'Refused',
|
|
184
|
+
error: body.error,
|
|
185
|
+
...(body.error_description === undefined ? {} : { description: body.error_description }),
|
|
186
|
+
}
|
|
187
|
+
: { _tag: 'Invalid' };
|
|
188
|
+
}
|
|
189
|
+
})), Effect.catchAll((error) => error instanceof ManualAuthorizationApiError
|
|
190
|
+
? Effect.fail(error)
|
|
191
|
+
: Effect.fail(apiError('poll', 'request_failed'))));
|
|
192
|
+
});
|
|
193
|
+
return { create, poll };
|
|
194
|
+
}),
|
|
195
|
+
}) {
|
|
196
|
+
}
|
|
75
197
|
/**
|
|
76
198
|
* Resolves outgoing API auth per call. When the current request scope carries
|
|
77
199
|
* an `Authorization` header (via `CurrentRequestHeaders`), that value is
|
|
@@ -92,12 +214,12 @@ export class ApiClient extends Effect.Service()('@expandai/cli/ApiClient', {
|
|
|
92
214
|
}
|
|
93
215
|
return Option.none();
|
|
94
216
|
});
|
|
95
|
-
const refreshOAuthToken = Effect.fn('ApiClient.refreshOAuthToken')(function* ({ refreshToken, expiresAt, }) {
|
|
217
|
+
const refreshOAuthToken = Effect.fn('ApiClient.refreshOAuthToken')(function* ({ refreshToken, expiresAt, clientId, }) {
|
|
96
218
|
if (refreshToken === undefined) {
|
|
97
219
|
return yield* new OAuthTokenExpired({ expiredAt: expiresAt });
|
|
98
220
|
}
|
|
99
221
|
const now = yield* DateTime.now;
|
|
100
|
-
const token = yield* browserOAuth.refreshToken(Redacted.value(refreshToken));
|
|
222
|
+
const token = yield* browserOAuth.refreshToken(Redacted.value(refreshToken), clientId);
|
|
101
223
|
if (token === undefined) {
|
|
102
224
|
return yield* new OAuthTokenExpired({ expiredAt: expiresAt });
|
|
103
225
|
}
|
|
@@ -108,6 +230,7 @@ export class ApiClient extends Effect.Service()('@expandai/cli/ApiClient', {
|
|
|
108
230
|
accessToken: Redacted.make(token.access_token),
|
|
109
231
|
refreshToken: nextRefreshToken,
|
|
110
232
|
expiresAt: refreshedExpiresAt,
|
|
233
|
+
clientId,
|
|
111
234
|
}),
|
|
112
235
|
});
|
|
113
236
|
return token.access_token;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiClient.js","sourceRoot":"","sources":["../../src/ApiClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ApiClient.js","sourceRoot":"","sources":["../../src/ApiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Schema } from 'effect';
|
|
2
|
+
/**
|
|
3
|
+
* The OAuth client for browser-approved CLI setup. Distinct from the
|
|
4
|
+
* `expandai-cli` client that `expandai login` uses: that one keeps loopback
|
|
5
|
+
* redirect URIs and must keep showing a consent screen, because Better Auth
|
|
6
|
+
* matches loopback URIs without comparing the port.
|
|
7
|
+
*/
|
|
8
|
+
export const CLI_AUTHORIZATION_CLIENT_ID = 'expandai-cli-browser';
|
|
9
|
+
export const PendingInitKey = Schema.Struct({
|
|
10
|
+
apiOrigin: Schema.String,
|
|
11
|
+
clientId: Schema.Literal(CLI_AUTHORIZATION_CLIENT_ID),
|
|
12
|
+
harness: Schema.Literal('agent-harnesses'),
|
|
13
|
+
scope: Schema.Literal('project', 'global'),
|
|
14
|
+
canonicalScopeRoot: Schema.String,
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* One pending RFC 8628 device authorization. The `deviceCode` is the whole
|
|
18
|
+
* credential — better-auth binds it to our client id server-side and it never
|
|
19
|
+
* leaves this machine — so the record keeps the same 0600/no-symlink storage
|
|
20
|
+
* discipline the PKCE verifier had.
|
|
21
|
+
*/
|
|
22
|
+
export class PendingInitRecord extends Schema.Class('PendingInitRecord')({
|
|
23
|
+
key: PendingInitKey,
|
|
24
|
+
deviceCode: Schema.Redacted(Schema.String),
|
|
25
|
+
userCode: Schema.String,
|
|
26
|
+
verificationUri: Schema.String,
|
|
27
|
+
// RFC 8628 §3.5: current polling interval in seconds. `slow_down` adds five,
|
|
28
|
+
// permanently, so the backoff has to be persisted — each `init` invocation
|
|
29
|
+
// polls at most once and exits.
|
|
30
|
+
intervalSeconds: Schema.Number,
|
|
31
|
+
// Earliest wall-clock time the next poll may hit the network. An agent
|
|
32
|
+
// re-running `init` faster than the interval gets a local "still pending"
|
|
33
|
+
// instead of a request the server would answer with `slow_down`.
|
|
34
|
+
nextPollAt: Schema.DateTimeUtc,
|
|
35
|
+
approvalExpiresAt: Schema.DateTimeUtc,
|
|
36
|
+
}) {
|
|
37
|
+
}
|
|
38
|
+
export class PendingInitCorrupt extends Schema.TaggedError()('PendingInitCorrupt', {
|
|
39
|
+
path: Schema.String,
|
|
40
|
+
error: Schema.Defect,
|
|
41
|
+
}) {
|
|
42
|
+
recoverable = true;
|
|
43
|
+
get message() {
|
|
44
|
+
return `Pending authorization state at ${this.path} is corrupt and was left unchanged.`;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class PendingInitStorageError extends Schema.TaggedError()('PendingInitStorageError', {
|
|
48
|
+
path: Schema.String,
|
|
49
|
+
error: Schema.Defect,
|
|
50
|
+
}) {
|
|
51
|
+
recoverable = true;
|
|
52
|
+
get message() {
|
|
53
|
+
return `Could not access pending authorization state at ${this.path}.`;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=Domain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Domain.js","sourceRoot":"","sources":["../../../src/Auth/Domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,sBAAsB,CAAA;AAEjE,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,2BAA2B,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC,MAAM;CACjC,CAAC,CAAA;AAIF;;;;;GAKG;AACH,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,KAAK,CAAoB,mBAAmB,CAAC,CAAC;IAC3F,GAAG,EAAE,cAAc;IACnB,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,6EAA6E;IAC7E,2EAA2E;IAC3E,gCAAgC;IAChC,eAAe,EAAE,MAAM,CAAC,MAAM;IAC9B,uEAAuE;IACvE,0EAA0E;IAC1E,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC,WAAW;IAC9B,iBAAiB,EAAE,MAAM,CAAC,WAAW;CACrC,CAAC;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,WAAW,EAAsB,CAAC,oBAAoB,EAAE;IACtG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM;CACpB,CAAC;IACQ,WAAW,GAAG,IAAI,CAAA;IAE3B,IAAI,OAAO;QACV,OAAO,kCAAkC,IAAI,CAAC,IAAI,qCAAqC,CAAA;IACxF,CAAC;CACD;AAED,MAAM,OAAO,uBAAwB,SAAQ,MAAM,CAAC,WAAW,EAA2B,CAAC,yBAAyB,EAAE;IACrH,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM;CACpB,CAAC;IACQ,WAAW,GAAG,IAAI,CAAA;IAE3B,IAAI,OAAO;QACV,OAAO,mDAAmD,IAAI,CAAC,IAAI,GAAG,CAAA;IACvE,CAAC;CACD"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { DateTime, Duration, Effect, Either, Option, Schema } from 'effect';
|
|
2
|
+
import { ManualAuthorizationApiClient, ManualAuthorizationApiError } from '../ApiClient.js';
|
|
3
|
+
import { ConfigManager, OAuthConfig } from '../Config.js';
|
|
4
|
+
import { InitScope } from '../Init/Domain.js';
|
|
5
|
+
import { CLI_VERSION } from '../Version.js';
|
|
6
|
+
import { CLI_AUTHORIZATION_CLIENT_ID, PendingInitRecord } from './Domain.js';
|
|
7
|
+
import { PendingInitStore } from './PendingInit.js';
|
|
8
|
+
export { ALREADY_AUTHENTICATED_MESSAGE, AUTHORIZATION_CONSUMED_MESSAGE, AUTHORIZATION_REQUIRED_MESSAGE, } from '../Init/Domain.js';
|
|
9
|
+
const CLIENT_ID = CLI_AUTHORIZATION_CLIENT_ID;
|
|
10
|
+
/** RFC 8628 §3.5: `slow_down` permanently adds five seconds to the interval. */
|
|
11
|
+
const SLOW_DOWN_INCREMENT_SECONDS = 5;
|
|
12
|
+
export class ManualAuthorizationInput extends Schema.Class('ManualAuthorizationInput')({
|
|
13
|
+
harness: Schema.Literal('agent-harnesses'),
|
|
14
|
+
scope: InitScope,
|
|
15
|
+
cwd: Schema.optional(Schema.String),
|
|
16
|
+
platform: Schema.optional(Schema.String),
|
|
17
|
+
}) {
|
|
18
|
+
}
|
|
19
|
+
/** What the agent relays: where to approve, and the code to type there. */
|
|
20
|
+
export class ManualAuthorizationRequired extends Schema.Class('ManualAuthorizationRequired')({
|
|
21
|
+
verificationUri: Schema.String,
|
|
22
|
+
userCode: Schema.NonEmptyString,
|
|
23
|
+
approvalExpiresAt: Schema.DateTimeUtc,
|
|
24
|
+
}) {
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* One `advance` call moves the flow as far as it can without blocking, then
|
|
28
|
+
* returns. RFC 8628's polling loop is inverted: the agent re-invokes the CLI,
|
|
29
|
+
* and each invocation polls the token endpoint at most once — or not at all,
|
|
30
|
+
* when the persisted interval says the server would answer `slow_down`.
|
|
31
|
+
*/
|
|
32
|
+
export class TokensSaved extends Schema.TaggedClass()('TokensSaved', {}) {
|
|
33
|
+
}
|
|
34
|
+
export class AuthorizationPending extends Schema.TaggedClass()('AuthorizationPending', {
|
|
35
|
+
pending: ManualAuthorizationRequired,
|
|
36
|
+
}) {
|
|
37
|
+
}
|
|
38
|
+
export const ManualAuthorizationOutcome = Schema.Union(TokensSaved, AuthorizationPending);
|
|
39
|
+
export class ManualAuthorizationDenied extends Schema.TaggedError()('ManualAuthorizationDenied', {
|
|
40
|
+
recoverable: Schema.Literal(true),
|
|
41
|
+
}) {
|
|
42
|
+
get message() {
|
|
43
|
+
return 'The authorization request was denied in the browser. Run the same command again to start a new one.';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The server refused redemption for a reason a fresh code cannot fix. Kept
|
|
48
|
+
* separate from every other failure because the correct response is the
|
|
49
|
+
* opposite of the usual one: do not start over, stop and report. Re-minting
|
|
50
|
+
* here is what produced an endless approve loop — each new code is approved by
|
|
51
|
+
* the user and then refused identically, with nothing surfaced.
|
|
52
|
+
*/
|
|
53
|
+
export class ManualAuthorizationRefused extends Schema.TaggedError()('ManualAuthorizationRefused', {
|
|
54
|
+
error: Schema.String,
|
|
55
|
+
description: Schema.optional(Schema.String),
|
|
56
|
+
recoverable: Schema.Literal(false),
|
|
57
|
+
}) {
|
|
58
|
+
get message() {
|
|
59
|
+
const detail = this.description === undefined ? '' : ` — ${this.description}`;
|
|
60
|
+
return `Expand refused to complete this authorization: ${this.error}${detail}. This is a server-side configuration problem, not something a new code can fix. Do not start setup again; report this error.`;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export class ManualAuthorizationCredentialSaveFailed extends Schema.TaggedError()('ManualAuthorizationCredentialSaveFailed', {
|
|
64
|
+
recoverable: Schema.Literal(false),
|
|
65
|
+
}) {
|
|
66
|
+
get message() {
|
|
67
|
+
return 'Authorization succeeded, but credentials could not be saved. Start authorization again.';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function platformName(input) {
|
|
71
|
+
return input.platform ?? process.platform;
|
|
72
|
+
}
|
|
73
|
+
function required(record) {
|
|
74
|
+
return new ManualAuthorizationRequired({
|
|
75
|
+
verificationUri: record.verificationUri,
|
|
76
|
+
userCode: record.userCode,
|
|
77
|
+
approvalExpiresAt: record.approvalExpiresAt,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
export class ManualAuthorization extends Effect.Service()('@expandai/cli/Auth/ManualAuthorization', {
|
|
81
|
+
dependencies: [ConfigManager.Default, PendingInitStore.Default, ManualAuthorizationApiClient.Default],
|
|
82
|
+
effect: Effect.gen(function* () {
|
|
83
|
+
const configManager = yield* ConfigManager;
|
|
84
|
+
const pendingStore = yield* PendingInitStore;
|
|
85
|
+
const apiClient = yield* ManualAuthorizationApiClient;
|
|
86
|
+
const preflight = Effect.fnUntraced(function* (input) {
|
|
87
|
+
yield* configManager.ensureSecureStorage();
|
|
88
|
+
yield* pendingStore.pruneExpired();
|
|
89
|
+
const apiUrl = yield* configManager.getApiUrl();
|
|
90
|
+
const canonicalScopeRoot = yield* pendingStore.canonicalScopeRoot(input.scope, input.cwd);
|
|
91
|
+
const key = {
|
|
92
|
+
apiOrigin: apiUrl.origin,
|
|
93
|
+
clientId: CLIENT_ID,
|
|
94
|
+
harness: input.harness,
|
|
95
|
+
scope: input.scope,
|
|
96
|
+
canonicalScopeRoot,
|
|
97
|
+
};
|
|
98
|
+
return key;
|
|
99
|
+
});
|
|
100
|
+
const create = Effect.fnUntraced(function* (input, key) {
|
|
101
|
+
const created = yield* apiClient.create({
|
|
102
|
+
harness: input.harness,
|
|
103
|
+
scope: input.scope,
|
|
104
|
+
platform: platformName(input),
|
|
105
|
+
machineLabel: `${platformName(input)}-${process.arch}`,
|
|
106
|
+
cliVersion: CLI_VERSION,
|
|
107
|
+
});
|
|
108
|
+
const now = yield* DateTime.now;
|
|
109
|
+
const record = new PendingInitRecord({
|
|
110
|
+
key,
|
|
111
|
+
deviceCode: created.deviceCode,
|
|
112
|
+
userCode: created.userCode,
|
|
113
|
+
// The stored record is JSON on disk, so the decoded `URL` goes back to
|
|
114
|
+
// its string form here rather than at the schema boundary.
|
|
115
|
+
verificationUri: created.verificationUri.toString(),
|
|
116
|
+
intervalSeconds: created.interval,
|
|
117
|
+
nextPollAt: DateTime.addDuration(now, Duration.seconds(created.interval)),
|
|
118
|
+
approvalExpiresAt: DateTime.addDuration(now, Duration.seconds(created.expiresIn)),
|
|
119
|
+
});
|
|
120
|
+
const stored = yield* Effect.either(pendingStore.putIfAbsent(record));
|
|
121
|
+
if (Either.isLeft(stored))
|
|
122
|
+
return yield* stored.left;
|
|
123
|
+
// A concurrent process may have won the write; its record is the live one.
|
|
124
|
+
return stored.right;
|
|
125
|
+
});
|
|
126
|
+
const saveTokens = Effect.fnUntraced(function* (token) {
|
|
127
|
+
const now = yield* DateTime.now;
|
|
128
|
+
const saved = yield* Effect.either(configManager.updateConfig({
|
|
129
|
+
authMethod: OAuthConfig.make({
|
|
130
|
+
accessToken: token.access_token,
|
|
131
|
+
refreshToken: token.refresh_token,
|
|
132
|
+
expiresAt: DateTime.addDuration(now, Duration.seconds(token.expires_in)),
|
|
133
|
+
clientId: CLIENT_ID,
|
|
134
|
+
}),
|
|
135
|
+
}));
|
|
136
|
+
if (Either.isLeft(saved)) {
|
|
137
|
+
return yield* new ManualAuthorizationCredentialSaveFailed({ recoverable: false });
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
const updateAfterPoll = Effect.fnUntraced(function* (record, slowDown) {
|
|
141
|
+
const now = yield* DateTime.now;
|
|
142
|
+
const intervalSeconds = record.intervalSeconds + (slowDown ? SLOW_DOWN_INCREMENT_SECONDS : 0);
|
|
143
|
+
const next = new PendingInitRecord({
|
|
144
|
+
...record,
|
|
145
|
+
intervalSeconds,
|
|
146
|
+
nextPollAt: DateTime.addDuration(now, Duration.seconds(intervalSeconds)),
|
|
147
|
+
});
|
|
148
|
+
// One atomic publish, not delete-then-create: an interrupt between those
|
|
149
|
+
// two lost the device code entirely, and this runs on every poll.
|
|
150
|
+
const replaced = yield* Effect.either(pendingStore.replaceIfMatch(record, next));
|
|
151
|
+
if (Either.isLeft(replaced))
|
|
152
|
+
return record;
|
|
153
|
+
return replaced.right ? next : record;
|
|
154
|
+
});
|
|
155
|
+
const advance = Effect.fn('ManualAuthorization.advance')(function* (input) {
|
|
156
|
+
const key = yield* preflight(input);
|
|
157
|
+
const existing = yield* pendingStore.get(key);
|
|
158
|
+
if (Option.isNone(existing)) {
|
|
159
|
+
const record = yield* create(input, key);
|
|
160
|
+
return new AuthorizationPending({ pending: required(record) });
|
|
161
|
+
}
|
|
162
|
+
const record = existing.value;
|
|
163
|
+
const now = yield* DateTime.now;
|
|
164
|
+
if (DateTime.greaterThan(now, record.approvalExpiresAt)) {
|
|
165
|
+
// Expired locally: start over transparently. The user sees a fresh
|
|
166
|
+
// code, not an error about a code they never got to use.
|
|
167
|
+
yield* pendingStore.removeIfMatch(record);
|
|
168
|
+
const fresh = yield* create(input, key);
|
|
169
|
+
return new AuthorizationPending({ pending: required(fresh) });
|
|
170
|
+
}
|
|
171
|
+
if (DateTime.lessThan(now, record.nextPollAt)) {
|
|
172
|
+
// Inside the polling interval — answering locally is what keeps an
|
|
173
|
+
// eagerly re-running agent from earning `slow_down` penalties.
|
|
174
|
+
return new AuthorizationPending({ pending: required(record) });
|
|
175
|
+
}
|
|
176
|
+
const outcome = yield* apiClient.poll(record.deviceCode);
|
|
177
|
+
switch (outcome._tag) {
|
|
178
|
+
case 'Tokens': {
|
|
179
|
+
yield* saveTokens(outcome.token);
|
|
180
|
+
yield* pendingStore.removeIfMatch(record);
|
|
181
|
+
return new TokensSaved();
|
|
182
|
+
}
|
|
183
|
+
case 'Pending': {
|
|
184
|
+
const next = yield* updateAfterPoll(record, false);
|
|
185
|
+
return new AuthorizationPending({ pending: required(next) });
|
|
186
|
+
}
|
|
187
|
+
case 'SlowDown': {
|
|
188
|
+
const next = yield* updateAfterPoll(record, true);
|
|
189
|
+
return new AuthorizationPending({ pending: required(next) });
|
|
190
|
+
}
|
|
191
|
+
case 'Denied': {
|
|
192
|
+
yield* pendingStore.removeIfMatch(record);
|
|
193
|
+
return yield* new ManualAuthorizationDenied({ recoverable: true });
|
|
194
|
+
}
|
|
195
|
+
case 'Refused': {
|
|
196
|
+
// Deliberately keeps the pending record. Discarding it would mint a
|
|
197
|
+
// fresh code on the next run, which the server refuses identically —
|
|
198
|
+
// so the user approves again, and again. Holding the record means a
|
|
199
|
+
// re-run reports the same error instead of asking for more approvals.
|
|
200
|
+
return yield* new ManualAuthorizationRefused({
|
|
201
|
+
error: outcome.error,
|
|
202
|
+
...(outcome.description === undefined ? {} : { description: outcome.description }),
|
|
203
|
+
recoverable: false,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
case 'Expired':
|
|
207
|
+
case 'Invalid': {
|
|
208
|
+
// The server no longer honours this code — expired, already consumed
|
|
209
|
+
// by a response we never received, or unknown. All three recover the
|
|
210
|
+
// same way: a fresh request and a fresh approval.
|
|
211
|
+
yield* pendingStore.removeIfMatch(record);
|
|
212
|
+
const fresh = yield* create(input, key);
|
|
213
|
+
return new AuthorizationPending({ pending: required(fresh) });
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
/**
|
|
218
|
+
* Redeems a device code that arrived out of band — the dashboard's
|
|
219
|
+
* pre-approved setup token. No pending record is kept: the code is
|
|
220
|
+
* single-use and either redeems on this first poll or never will.
|
|
221
|
+
*/
|
|
222
|
+
const redeemPreApproved = Effect.fn('ManualAuthorization.redeemPreApproved')(function* (deviceCode) {
|
|
223
|
+
const outcome = yield* apiClient.poll(deviceCode);
|
|
224
|
+
switch (outcome._tag) {
|
|
225
|
+
case 'Tokens':
|
|
226
|
+
return yield* saveTokens(outcome.token);
|
|
227
|
+
case 'Denied':
|
|
228
|
+
return yield* new ManualAuthorizationDenied({ recoverable: true });
|
|
229
|
+
case 'Refused':
|
|
230
|
+
return yield* new ManualAuthorizationRefused({
|
|
231
|
+
error: outcome.error,
|
|
232
|
+
...(outcome.description === undefined ? {} : { description: outcome.description }),
|
|
233
|
+
recoverable: false,
|
|
234
|
+
});
|
|
235
|
+
case 'Pending':
|
|
236
|
+
case 'SlowDown':
|
|
237
|
+
case 'Expired':
|
|
238
|
+
case 'Invalid':
|
|
239
|
+
// A dashboard token is minted approved; anything else means it was
|
|
240
|
+
// not produced by that flow, expired, or is already spent.
|
|
241
|
+
return yield* new ManualAuthorizationApiError({
|
|
242
|
+
operation: 'poll',
|
|
243
|
+
kind: 'rejected',
|
|
244
|
+
status: 400,
|
|
245
|
+
recoverable: false,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
return { advance, redeemPreApproved };
|
|
250
|
+
}),
|
|
251
|
+
}) {
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=ManualAuthorization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ManualAuthorization.js","sourceRoot":"","sources":["../../../src/Auth/ManualAuthorization.ts"],"names":[],"mappings":"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"}
|