@namzu/cli 12.1.0 → 14.0.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.
- package/README.md +35 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +119 -60
- package/dist/cli.js.map +1 -1
- package/dist/commands/acp.d.ts +24 -8
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/acp.js +221 -80
- package/dist/commands/acp.js.map +1 -1
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +45 -9
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +79 -21
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/prior-messages.d.ts +11 -0
- package/dist/commands/prior-messages.d.ts.map +1 -0
- package/dist/commands/prior-messages.js +280 -0
- package/dist/commands/prior-messages.js.map +1 -0
- package/dist/commands/resume.d.ts.map +1 -1
- package/dist/commands/resume.js +21 -19
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run-stream.d.ts +5 -3
- package/dist/commands/run-stream.d.ts.map +1 -1
- package/dist/commands/run-stream.js +66 -62
- package/dist/commands/run-stream.js.map +1 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +50 -37
- package/dist/commands/run.js.map +1 -1
- package/dist/config/debug.d.ts +55 -0
- package/dist/config/debug.d.ts.map +1 -0
- package/dist/config/debug.js +126 -0
- package/dist/config/debug.js.map +1 -0
- package/dist/config/load.d.ts +88 -4
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +386 -56
- package/dist/config/load.js.map +1 -1
- package/dist/config/schema.d.ts +87 -5
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +5 -5
- package/dist/config/schema.js.map +1 -1
- package/dist/config/trusted-project-context.d.ts +11 -0
- package/dist/config/trusted-project-context.d.ts.map +1 -0
- package/dist/config/trusted-project-context.js +28 -0
- package/dist/config/trusted-project-context.js.map +1 -0
- package/dist/context/project-path.d.ts +3 -0
- package/dist/context/project-path.d.ts.map +1 -0
- package/dist/context/project-path.js +16 -0
- package/dist/context/project-path.js.map +1 -0
- package/dist/context/project-tracker.d.ts +30 -0
- package/dist/context/project-tracker.d.ts.map +1 -0
- package/dist/context/project-tracker.js +217 -0
- package/dist/context/project-tracker.js.map +1 -0
- package/dist/context/sandbox.d.ts +29 -9
- package/dist/context/sandbox.d.ts.map +1 -1
- package/dist/context/sandbox.js +8 -0
- package/dist/context/sandbox.js.map +1 -1
- package/dist/doctor/checks/credentials.d.ts.map +1 -1
- package/dist/doctor/checks/credentials.js +7 -1
- package/dist/doctor/checks/credentials.js.map +1 -1
- package/dist/exit-codes.d.ts +5 -4
- package/dist/exit-codes.d.ts.map +1 -1
- package/dist/exit-codes.js +5 -4
- package/dist/exit-codes.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/integrations/clipboard/text.d.ts +43 -0
- package/dist/integrations/clipboard/text.d.ts.map +1 -0
- package/dist/integrations/clipboard/text.js +43 -0
- package/dist/integrations/clipboard/text.js.map +1 -0
- package/dist/integrations/mcp/servers.d.ts +9 -0
- package/dist/integrations/mcp/servers.d.ts.map +1 -1
- package/dist/integrations/mcp/servers.js +11 -4
- package/dist/integrations/mcp/servers.js.map +1 -1
- package/dist/integrations/notifications/terminal.d.ts +32 -0
- package/dist/integrations/notifications/terminal.d.ts.map +1 -0
- package/dist/integrations/notifications/terminal.js +46 -0
- package/dist/integrations/notifications/terminal.js.map +1 -0
- package/dist/integrations/plugins/runtime.d.ts +17 -0
- package/dist/integrations/plugins/runtime.d.ts.map +1 -0
- package/dist/integrations/plugins/runtime.js +100 -0
- package/dist/integrations/plugins/runtime.js.map +1 -0
- package/dist/integrations/providers/codex-device-login.d.ts +27 -0
- package/dist/integrations/providers/codex-device-login.d.ts.map +1 -0
- package/dist/integrations/providers/codex-device-login.js +195 -0
- package/dist/integrations/providers/codex-device-login.js.map +1 -0
- package/dist/integrations/providers/codex-oauth.d.ts +10 -0
- package/dist/integrations/providers/codex-oauth.d.ts.map +1 -0
- package/dist/integrations/providers/codex-oauth.js +95 -0
- package/dist/integrations/providers/codex-oauth.js.map +1 -0
- package/dist/integrations/providers/credential-store.d.ts +40 -4
- package/dist/integrations/providers/credential-store.d.ts.map +1 -1
- package/dist/integrations/providers/credential-store.js +236 -18
- package/dist/integrations/providers/credential-store.js.map +1 -1
- package/dist/integrations/providers/discover.d.ts +25 -13
- package/dist/integrations/providers/discover.d.ts.map +1 -1
- package/dist/integrations/providers/discover.js +98 -44
- package/dist/integrations/providers/discover.js.map +1 -1
- package/dist/integrations/providers/harness-credentials.d.ts +36 -0
- package/dist/integrations/providers/harness-credentials.d.ts.map +1 -0
- package/dist/integrations/providers/harness-credentials.js +146 -0
- package/dist/integrations/providers/harness-credentials.js.map +1 -0
- package/dist/integrations/providers/identity.d.ts +8 -15
- package/dist/integrations/providers/identity.d.ts.map +1 -1
- package/dist/integrations/providers/identity.js +8 -15
- package/dist/integrations/providers/identity.js.map +1 -1
- package/dist/integrations/providers/index.d.ts +7 -4
- package/dist/integrations/providers/index.d.ts.map +1 -1
- package/dist/integrations/providers/index.js +6 -3
- package/dist/integrations/providers/index.js.map +1 -1
- package/dist/integrations/providers/keychain.d.ts +0 -13
- package/dist/integrations/providers/keychain.d.ts.map +1 -1
- package/dist/integrations/providers/keychain.js +0 -76
- package/dist/integrations/providers/keychain.js.map +1 -1
- package/dist/integrations/providers/oauth.d.ts +46 -17
- package/dist/integrations/providers/oauth.d.ts.map +1 -1
- package/dist/integrations/providers/oauth.js +175 -45
- package/dist/integrations/providers/oauth.js.map +1 -1
- package/dist/integrations/providers/register.d.ts.map +1 -1
- package/dist/integrations/providers/register.js +9 -1
- package/dist/integrations/providers/register.js.map +1 -1
- package/dist/integrations/providers/registry.d.ts +8 -1
- package/dist/integrations/providers/registry.d.ts.map +1 -1
- package/dist/integrations/providers/registry.js +29 -0
- package/dist/integrations/providers/registry.js.map +1 -1
- package/dist/integrations/providers/subscription-login.d.ts +2 -0
- package/dist/integrations/providers/subscription-login.d.ts.map +1 -1
- package/dist/integrations/providers/subscription-login.js +117 -14
- package/dist/integrations/providers/subscription-login.js.map +1 -1
- package/dist/integrations/sessions/store.d.ts +111 -1
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/sessions/store.js +400 -7
- package/dist/integrations/sessions/store.js.map +1 -1
- package/dist/integrations/sessions/transcript-export.d.ts +25 -0
- package/dist/integrations/sessions/transcript-export.d.ts.map +1 -0
- package/dist/integrations/sessions/transcript-export.js +441 -0
- package/dist/integrations/sessions/transcript-export.js.map +1 -0
- package/dist/integrations/sessions/turn-evidence.d.ts +138 -0
- package/dist/integrations/sessions/turn-evidence.d.ts.map +1 -0
- package/dist/integrations/sessions/turn-evidence.js +506 -0
- package/dist/integrations/sessions/turn-evidence.js.map +1 -0
- package/dist/integrations/subagents/runtime.d.ts +7 -12
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +19 -10
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/integrations/trust/store.d.ts.map +1 -1
- package/dist/integrations/trust/store.js +27 -13
- package/dist/integrations/trust/store.js.map +1 -1
- package/dist/permissions/canonical-project.d.ts +9 -0
- package/dist/permissions/canonical-project.d.ts.map +1 -0
- package/dist/permissions/canonical-project.js +13 -0
- package/dist/permissions/canonical-project.js.map +1 -0
- package/dist/permissions/checks.d.ts +65 -0
- package/dist/permissions/checks.d.ts.map +1 -0
- package/dist/permissions/checks.js +122 -0
- package/dist/permissions/checks.js.map +1 -0
- package/dist/permissions/headless-trust.d.ts +9 -5
- package/dist/permissions/headless-trust.d.ts.map +1 -1
- package/dist/permissions/headless-trust.js +18 -4
- package/dist/permissions/headless-trust.js.map +1 -1
- package/dist/permissions/rules.d.ts +16 -7
- package/dist/permissions/rules.d.ts.map +1 -1
- package/dist/permissions/rules.js +78 -13
- package/dist/permissions/rules.js.map +1 -1
- package/dist/tui/App.d.ts +5 -2
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +1621 -196
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Composer.d.ts +14 -3
- package/dist/tui/Composer.d.ts.map +1 -1
- package/dist/tui/Composer.js +53 -15
- package/dist/tui/Composer.js.map +1 -1
- package/dist/tui/EditPromptPicker.d.ts +8 -0
- package/dist/tui/EditPromptPicker.d.ts.map +1 -0
- package/dist/tui/EditPromptPicker.js +18 -0
- package/dist/tui/EditPromptPicker.js.map +1 -0
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/LiveActivity.js +2 -1
- package/dist/tui/LiveActivity.js.map +1 -1
- package/dist/tui/Markdown.d.ts.map +1 -1
- package/dist/tui/Markdown.js +2 -1
- package/dist/tui/Markdown.js.map +1 -1
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.js +7 -1
- package/dist/tui/PermissionOverlay.js.map +1 -1
- package/dist/tui/Picker.d.ts +8 -6
- package/dist/tui/Picker.d.ts.map +1 -1
- package/dist/tui/Picker.js +145 -18
- package/dist/tui/Picker.js.map +1 -1
- package/dist/tui/ResumePicker.d.ts.map +1 -1
- package/dist/tui/ResumePicker.js +1 -1
- package/dist/tui/ResumePicker.js.map +1 -1
- package/dist/tui/Transcript.d.ts +4 -2
- package/dist/tui/Transcript.d.ts.map +1 -1
- package/dist/tui/Transcript.js +31 -5
- package/dist/tui/Transcript.js.map +1 -1
- package/dist/tui/agent.d.ts +123 -19
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +757 -144
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/compact-transcript.d.ts +24 -0
- package/dist/tui/compact-transcript.d.ts.map +1 -0
- package/dist/tui/compact-transcript.js +46 -0
- package/dist/tui/compact-transcript.js.map +1 -0
- package/dist/tui/conversation-history.d.ts +33 -0
- package/dist/tui/conversation-history.d.ts.map +1 -0
- package/dist/tui/conversation-history.js +42 -0
- package/dist/tui/conversation-history.js.map +1 -0
- package/dist/tui/edit-prompts.d.ts +23 -0
- package/dist/tui/edit-prompts.d.ts.map +1 -0
- package/dist/tui/edit-prompts.js +35 -0
- package/dist/tui/edit-prompts.js.map +1 -0
- package/dist/tui/live-window.d.ts +3 -1
- package/dist/tui/live-window.d.ts.map +1 -1
- package/dist/tui/live-window.js +20 -8
- package/dist/tui/live-window.js.map +1 -1
- package/dist/tui/login-prompt.d.ts +5 -0
- package/dist/tui/login-prompt.d.ts.map +1 -1
- package/dist/tui/login-prompt.js +14 -0
- package/dist/tui/login-prompt.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +178 -9
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +340 -16
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/terminal-display.d.ts +12 -0
- package/dist/tui/terminal-display.d.ts.map +1 -0
- package/dist/tui/terminal-display.js +65 -0
- package/dist/tui/terminal-display.js.map +1 -0
- package/dist/tui/types.d.ts +14 -2
- package/dist/tui/types.d.ts.map +1 -1
- package/dist/tui/workspace-diff.d.ts +40 -0
- package/dist/tui/workspace-diff.d.ts.map +1 -0
- package/dist/tui/workspace-diff.js +101 -0
- package/dist/tui/workspace-diff.js.map +1 -0
- package/package.json +8 -8
|
@@ -7,35 +7,70 @@
|
|
|
7
7
|
* stale token before the session starts instead of surfacing it as an
|
|
8
8
|
* authentication error.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Best-effort for transient refresh failures: no refresh token, a network
|
|
11
|
+
* failure, an ordinary endpoint refusal or the private deadline all return the
|
|
12
|
+
* existing token. `invalid_grant` is different: the authorization grant is no
|
|
13
|
+
* longer usable, so sending the expired access token or retrying the same
|
|
14
|
+
* refresh on every turn cannot recover. It is a typed refusal. Caller
|
|
15
|
+
* cancellation also escapes with its exact cause.
|
|
13
16
|
*
|
|
14
17
|
* ## Where a refreshed token is written back
|
|
15
18
|
*
|
|
16
19
|
* There are two places a subscription credential can live and they are not
|
|
17
20
|
* interchangeable, so `origin` says which one this credential came from and
|
|
18
|
-
*
|
|
21
|
+
* therefore which publication rule applies:
|
|
19
22
|
*
|
|
20
23
|
* - `'stored'` — namzu's own store, written by the login flow, present on
|
|
21
|
-
* every platform.
|
|
24
|
+
* every platform. A refresh replaces only the exact credential it used.
|
|
22
25
|
* - `'keychain'` — a co-installed tool's macOS entry, which namzu reads but
|
|
23
|
-
* does not own.
|
|
26
|
+
* does not own. A refresh is session-local and never writes that entry.
|
|
24
27
|
*
|
|
25
28
|
* `origin` is optional and defaults to `'keychain'` because that is the only
|
|
26
|
-
* source that existed when this file was written
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* real store holding a token that is refreshed again on every launch.
|
|
29
|
+
* source that existed when this file was written. Every namzu-owned caller
|
|
30
|
+
* passes it explicitly; a credential from the login flow misclassified as
|
|
31
|
+
* Keychain-origin would remain stale on disk and refresh again on every
|
|
32
|
+
* launch.
|
|
31
33
|
*/
|
|
32
34
|
import { buildProbeContext, probe } from '@namzu/sdk';
|
|
33
35
|
import { SUBSCRIPTION_CREDENTIAL_REF } from './credential-provider.js';
|
|
34
|
-
import { credentialsPath, readStoredSubscriptionCredential,
|
|
36
|
+
import { credentialsPath, readStoredSubscriptionCredential, replaceStoredSubscriptionCredential, } from './credential-store.js';
|
|
37
|
+
import { readClaudeFileCredential } from './harness-credentials.js';
|
|
35
38
|
import { OAUTH_CLIENT_ID, OAUTH_TOKEN_URL } from './identity.js';
|
|
36
|
-
import { readAgentKeychainCredential
|
|
39
|
+
import { readAgentKeychainCredential } from './keychain.js';
|
|
37
40
|
/** Refresh a few seconds early so an about-to-expire token isn't used. */
|
|
38
41
|
const EXPIRY_SKEW_MS = 60_000;
|
|
42
|
+
/** One refresh request, including its response body, may hold a caller this long. */
|
|
43
|
+
const REFRESH_DEADLINE_MS = 30_000;
|
|
44
|
+
class RefreshDeadlineError extends Error {
|
|
45
|
+
constructor() {
|
|
46
|
+
super(`The token endpoint did not answer within ${REFRESH_DEADLINE_MS}ms.`);
|
|
47
|
+
this.name = 'RefreshDeadlineError';
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Settle independently of a foreign promise that may ignore its signal.
|
|
52
|
+
*
|
|
53
|
+
* Passing `signal` to fetch is cooperative. This race is the host-owned
|
|
54
|
+
* boundary that makes cancellation and the refresh deadline true even for a
|
|
55
|
+
* custom transport or response body that never settles.
|
|
56
|
+
*/
|
|
57
|
+
async function awaitWithSignal(operation, signal) {
|
|
58
|
+
signal.throwIfAborted();
|
|
59
|
+
let rejectAbort = () => { };
|
|
60
|
+
const aborted = new Promise((_resolve, reject) => {
|
|
61
|
+
rejectAbort = reject;
|
|
62
|
+
});
|
|
63
|
+
const onAbort = () => rejectAbort(signal.reason);
|
|
64
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
65
|
+
if (signal.aborted)
|
|
66
|
+
onAbort();
|
|
67
|
+
try {
|
|
68
|
+
return await Promise.race([operation, aborted]);
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
signal.removeEventListener('abort', onAbort);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
39
74
|
/**
|
|
40
75
|
* Re-read the current credential from the store it lives in.
|
|
41
76
|
*
|
|
@@ -55,32 +90,60 @@ const EXPIRY_SKEW_MS = 60_000;
|
|
|
55
90
|
* at detection; everything after that is told, not asked.
|
|
56
91
|
*/
|
|
57
92
|
export function readSubscriptionCredential(origin) {
|
|
58
|
-
|
|
93
|
+
if (origin === 'stored')
|
|
94
|
+
return readStoredSubscriptionCredential();
|
|
95
|
+
return origin === 'claude-file' ? readClaudeFileCredential() : readAgentKeychainCredential();
|
|
96
|
+
}
|
|
97
|
+
/** The credential that authorized a refresh was removed before publication. */
|
|
98
|
+
export class CredentialWithdrawnError extends Error {
|
|
99
|
+
name = 'CredentialWithdrawnError';
|
|
100
|
+
constructor(message = 'The subscription credential was removed while it was being refreshed.') {
|
|
101
|
+
super(message);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/** The store could not prove whether the refresh still owned publication. */
|
|
105
|
+
export class CredentialPublicationError extends Error {
|
|
106
|
+
name = 'CredentialPublicationError';
|
|
107
|
+
constructor(options) {
|
|
108
|
+
super('The refreshed subscription credential could not be published safely.', options);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** The authorization server says this exact refresh grant cannot be used again. */
|
|
112
|
+
export class CredentialRefreshRejectedError extends Error {
|
|
113
|
+
name = 'CredentialRefreshRejectedError';
|
|
114
|
+
code = 'invalid_grant';
|
|
115
|
+
constructor() {
|
|
116
|
+
super('The subscription refresh token is no longer usable. Sign in again with /login.');
|
|
117
|
+
}
|
|
59
118
|
}
|
|
60
119
|
/**
|
|
61
120
|
* Return a non-expired access token, refreshing first if the current one is
|
|
62
121
|
* lapsed/about-to-lapse and a refresh token is available. On a successful
|
|
63
|
-
* refresh
|
|
122
|
+
* refresh a Namzu-owned credential is conditionally persisted. A borrowed
|
|
123
|
+
* Keychain credential is used only in memory because its owner cannot
|
|
124
|
+
* participate in our conditional-write boundary.
|
|
64
125
|
*/
|
|
65
|
-
export async function ensureFreshAnthropicToken(accessToken, oauth) {
|
|
126
|
+
export async function ensureFreshAnthropicToken(accessToken, oauth, signal) {
|
|
127
|
+
signal?.throwIfAborted();
|
|
66
128
|
const fresh = oauth.expiresAt === undefined || oauth.expiresAt - Date.now() > EXPIRY_SKEW_MS;
|
|
67
129
|
if (fresh)
|
|
68
130
|
return accessToken;
|
|
69
131
|
if (!oauth.refreshToken)
|
|
70
132
|
return accessToken;
|
|
71
|
-
const refreshed = await refreshAgentOAuthToken(oauth.refreshToken);
|
|
133
|
+
const refreshed = await refreshAgentOAuthToken(oauth.refreshToken, signal);
|
|
72
134
|
if (!refreshed)
|
|
73
135
|
return accessToken;
|
|
74
|
-
|
|
75
|
-
|
|
136
|
+
// The response body was the final foreign await. Re-check immediately at
|
|
137
|
+
// the durable boundary so a stopped run cannot rotate a credential later.
|
|
138
|
+
signal?.throwIfAborted();
|
|
139
|
+
const expected = {
|
|
140
|
+
accessToken,
|
|
141
|
+
refreshToken: oauth.refreshToken,
|
|
142
|
+
expiresAt: oauth.expiresAt,
|
|
143
|
+
scopes: oauth.scopes,
|
|
144
|
+
};
|
|
145
|
+
return publishRefreshed(expected, refreshed, oauth.origin ?? 'keychain').accessToken;
|
|
76
146
|
}
|
|
77
|
-
/**
|
|
78
|
-
* Write a refreshed credential back to the store it came from.
|
|
79
|
-
*
|
|
80
|
-
* Best-effort in both arms, and for the same reason the refresh itself is:
|
|
81
|
-
* the token is already in hand and usable for this session, so a store that
|
|
82
|
-
* will not take it costs a re-refresh next launch, not the session.
|
|
83
|
-
*/
|
|
84
147
|
/**
|
|
85
148
|
* Say that a credential turned over, without saying what it turned into.
|
|
86
149
|
*
|
|
@@ -98,28 +161,73 @@ function announceRotation(replaced) {
|
|
|
98
161
|
ref: SUBSCRIPTION_CREDENTIAL_REF,
|
|
99
162
|
}, buildProbeContext());
|
|
100
163
|
}
|
|
101
|
-
function
|
|
102
|
-
if (origin
|
|
103
|
-
|
|
104
|
-
|
|
164
|
+
function publishRefreshed(expected, refreshed, origin) {
|
|
165
|
+
if (origin !== 'stored') {
|
|
166
|
+
// This entry belongs to another product, whose writer cannot participate
|
|
167
|
+
// in a Namzu lock or conditional update. Never overwrite it. A rotation
|
|
168
|
+
// that landed while the request was pending wins for this session; when it
|
|
169
|
+
// is unchanged, the refreshed token remains session-local.
|
|
170
|
+
const current = origin === 'claude-file' ? readClaudeFileCredential() : readAgentKeychainCredential();
|
|
171
|
+
if (!current)
|
|
172
|
+
throw new CredentialWithdrawnError();
|
|
173
|
+
return !sameOAuthCredential(current, expected) ? current : refreshed;
|
|
174
|
+
}
|
|
175
|
+
let result;
|
|
176
|
+
try {
|
|
177
|
+
result = replaceStoredSubscriptionCredential(expected, refreshed);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
// A busy lock may be an external rotation in progress. Falling back to
|
|
181
|
+
// A' here would turn a failed CAS into permission to ignore its winner.
|
|
182
|
+
throw new CredentialPublicationError({ cause: error });
|
|
183
|
+
}
|
|
184
|
+
if (!result.replaced) {
|
|
185
|
+
if (!result.current)
|
|
186
|
+
throw new CredentialWithdrawnError();
|
|
187
|
+
return result.current;
|
|
105
188
|
}
|
|
189
|
+
// Announced only after the store proved the file private. A rotation event
|
|
190
|
+
// for a write that refused would have a reader chasing a turn-over that
|
|
191
|
+
// never happened. Probe failure is observability failure, not permission to
|
|
192
|
+
// undo a credential that is already durably committed.
|
|
106
193
|
try {
|
|
107
|
-
|
|
108
|
-
// Announced only after the store proved the file private. A rotation
|
|
109
|
-
// event for a write that refused would have a reader chasing a
|
|
110
|
-
// credential turn-over that never happened.
|
|
111
|
-
announceRotation(cred.accessToken !== undefined);
|
|
194
|
+
announceRotation(refreshed.accessToken !== undefined);
|
|
112
195
|
}
|
|
113
196
|
catch {
|
|
114
|
-
// The
|
|
115
|
-
// nothing. Deliberately silent: the message would be about a file, on
|
|
116
|
-
// a path the operator did not ask about, in the middle of a turn.
|
|
197
|
+
// The credential is already committed. Telemetry cannot roll it back.
|
|
117
198
|
}
|
|
199
|
+
return refreshed;
|
|
118
200
|
}
|
|
119
|
-
/**
|
|
120
|
-
export
|
|
201
|
+
/** Exact credential identity used by refresh publication and the live-session refusal cache. */
|
|
202
|
+
export function sameOAuthCredential(left, right) {
|
|
203
|
+
if (left.accessToken !== right.accessToken ||
|
|
204
|
+
left.refreshToken !== right.refreshToken ||
|
|
205
|
+
left.expiresAt !== right.expiresAt) {
|
|
206
|
+
return false;
|
|
207
|
+
}
|
|
208
|
+
const leftScopes = left.scopes ?? [];
|
|
209
|
+
const rightScopes = right.scopes ?? [];
|
|
210
|
+
return (leftScopes.length === rightScopes.length &&
|
|
211
|
+
leftScopes.every((scope, index) => scope === rightScopes[index]));
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Exchange a refresh token for a new credential.
|
|
215
|
+
*
|
|
216
|
+
* Transient/unclassified failures return `null`. A standards-defined
|
|
217
|
+
* `400 invalid_grant` throws {@link CredentialRefreshRejectedError}; retrying
|
|
218
|
+
* the same grant is not recovery.
|
|
219
|
+
*/
|
|
220
|
+
export async function refreshAgentOAuthToken(refreshToken, signal) {
|
|
221
|
+
signal?.throwIfAborted();
|
|
222
|
+
const requestController = new AbortController();
|
|
223
|
+
const timeoutCause = new RefreshDeadlineError();
|
|
224
|
+
const onCallerAbort = () => requestController.abort(signal?.reason);
|
|
225
|
+
signal?.addEventListener('abort', onCallerAbort, { once: true });
|
|
226
|
+
if (signal?.aborted)
|
|
227
|
+
onCallerAbort();
|
|
228
|
+
const timer = setTimeout(() => requestController.abort(timeoutCause), REFRESH_DEADLINE_MS);
|
|
121
229
|
try {
|
|
122
|
-
const res = await fetch(OAUTH_TOKEN_URL, {
|
|
230
|
+
const res = await awaitWithSignal(fetch(OAUTH_TOKEN_URL, {
|
|
123
231
|
method: 'POST',
|
|
124
232
|
headers: { 'content-type': 'application/json' },
|
|
125
233
|
body: JSON.stringify({
|
|
@@ -127,10 +235,19 @@ export async function refreshAgentOAuthToken(refreshToken) {
|
|
|
127
235
|
refresh_token: refreshToken,
|
|
128
236
|
client_id: OAUTH_CLIENT_ID,
|
|
129
237
|
}),
|
|
130
|
-
|
|
131
|
-
|
|
238
|
+
signal: requestController.signal,
|
|
239
|
+
}), requestController.signal);
|
|
240
|
+
signal?.throwIfAborted();
|
|
241
|
+
if (!res.ok) {
|
|
242
|
+
if (res.status === 400) {
|
|
243
|
+
const failure = (await awaitWithSignal(res.json(), requestController.signal));
|
|
244
|
+
if (typeof failure?.error === 'string' && failure.error.toLowerCase() === 'invalid_grant') {
|
|
245
|
+
throw new CredentialRefreshRejectedError();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
132
248
|
return null;
|
|
133
|
-
|
|
249
|
+
}
|
|
250
|
+
const data = (await awaitWithSignal(res.json(), requestController.signal));
|
|
134
251
|
if (typeof data.access_token !== 'string' || data.access_token.length === 0)
|
|
135
252
|
return null;
|
|
136
253
|
return {
|
|
@@ -139,8 +256,21 @@ export async function refreshAgentOAuthToken(refreshToken) {
|
|
|
139
256
|
expiresAt: typeof data.expires_in === 'number' ? Date.now() + data.expires_in * 1_000 : undefined,
|
|
140
257
|
};
|
|
141
258
|
}
|
|
142
|
-
catch {
|
|
259
|
+
catch (error) {
|
|
260
|
+
if (error instanceof CredentialRefreshRejectedError)
|
|
261
|
+
throw error;
|
|
262
|
+
// A cooperative transport may replace the request cause with a generic
|
|
263
|
+
// AbortError. The fused controller is the first-cause latch: only a caller
|
|
264
|
+
// reason that actually won is allowed to escape as cancellation. A later
|
|
265
|
+
// caller abort cannot relabel the private deadline.
|
|
266
|
+
if (signal?.aborted && requestController.signal.reason === signal.reason) {
|
|
267
|
+
throw signal.reason;
|
|
268
|
+
}
|
|
143
269
|
return null;
|
|
144
270
|
}
|
|
271
|
+
finally {
|
|
272
|
+
clearTimeout(timer);
|
|
273
|
+
signal?.removeEventListener('abort', onCallerAbort);
|
|
274
|
+
}
|
|
145
275
|
}
|
|
146
276
|
//# sourceMappingURL=oauth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/integrations/providers/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAqB,KAAK,UAAU,EAA8B,MAAM,eAAe,CAAA;AAI9F;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAqB,KAAK,UAAU,EAA8B,MAAM,eAAe,CAAA;AAI9F;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCpE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO,CAEpD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,SAAS,cAAc,EAAE,GAChC,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CA0BxC"}
|
|
@@ -61,6 +61,11 @@ export async function ensureRegistered(id) {
|
|
|
61
61
|
mod.registerOpenAI();
|
|
62
62
|
break;
|
|
63
63
|
}
|
|
64
|
+
case 'codex': {
|
|
65
|
+
const mod = await import('@namzu/openai');
|
|
66
|
+
mod.registerCodex();
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
64
69
|
case 'deepseek': {
|
|
65
70
|
const mod = await import('@namzu/deepseek');
|
|
66
71
|
mod.registerDeepSeek();
|
|
@@ -107,7 +112,10 @@ export async function resolveChainCapabilities(members) {
|
|
|
107
112
|
const out = [];
|
|
108
113
|
for (const member of members) {
|
|
109
114
|
if (!(member.id in PROVIDER_REGISTRY)) {
|
|
110
|
-
out.push({
|
|
115
|
+
out.push({
|
|
116
|
+
kind: 'unresolved',
|
|
117
|
+
reason: `"${member.id}" is not a provider namzu knows`,
|
|
118
|
+
});
|
|
111
119
|
continue;
|
|
112
120
|
}
|
|
113
121
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/integrations/providers/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7C,OAAO,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAIxD,OAAO,EAAE,iBAAiB,EAAmB,0BAA0B,EAAE,MAAM,eAAe,CAAA;AAE9F,MAAM,UAAU,GAAG,IAAI,GAAG,EAAc,CAAA;AAExC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EAAc;IACpD,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAAE,OAAM;IAC9B,QAAQ,EAAE,EAAE,CAAC;QACZ,KAAK,WAAW,CAAC,CAAC,CAAC;YAClB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;YAC5C,GAAG,CAAC,iBAAiB,EAAE,CAAA;YACvB,MAAK;QACN,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACzC,GAAG,CAAC,cAAc,EAAE,CAAA;YACpB,MAAK;QACN,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACjB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAA;YAC3C,GAAG,CAAC,gBAAgB,EAAE,CAAA;YACtB,MAAK;QACN,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YACnB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAC7C,GAAG,CAAC,kBAAkB,EAAE,CAAA;YACxB,MAAK;QACN,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACf,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACzC,GAAG,CAAC,cAAc,EAAE,CAAA;YACpB,MAAK;QACN,CAAC;QACD;YACC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAA;IACjD,CAAC;IACD,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,EAAc;IAC1C,OAAO,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AAC1B,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC7C,OAAkC;IAElC,MAAM,GAAG,GAAyB,EAAE,CAAA;IACpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,iBAAiB,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/integrations/providers/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
* Adding a provider means adding one entry here; nothing else in this
|
|
6
6
|
* layer needs to change.
|
|
7
7
|
*/
|
|
8
|
-
export type ProviderId = 'anthropic' | 'openai' | 'openrouter' | 'deepseek' | 'ollama' | 'lmstudio' | 'bedrock' | 'http';
|
|
8
|
+
export type ProviderId = 'anthropic' | 'codex' | 'openai' | 'openrouter' | 'deepseek' | 'ollama' | 'lmstudio' | 'bedrock' | 'http';
|
|
9
9
|
/** SDK type passed to `ProviderRegistry.create({type, ...})`. */
|
|
10
10
|
export type SdkProviderType = ProviderId;
|
|
11
|
+
export type SubscriptionProviderId = 'anthropic' | 'codex';
|
|
11
12
|
export interface ProviderRegistryEntry {
|
|
12
13
|
readonly id: ProviderId;
|
|
13
14
|
readonly label: string;
|
|
@@ -39,6 +40,10 @@ export interface ProviderRegistryEntry {
|
|
|
39
40
|
readonly defaultModel: string;
|
|
40
41
|
/** Does this provider require an apiKey? `false` for purely local. */
|
|
41
42
|
readonly requiresApiKey: boolean;
|
|
43
|
+
/** Whether the picker may accept an opaque credential typed by the operator. */
|
|
44
|
+
readonly acceptsTypedCredential: boolean;
|
|
45
|
+
/** Namzu-owned login protocol, when this provider has one. */
|
|
46
|
+
readonly subscriptionLogin?: 'browser' | 'device';
|
|
42
47
|
/**
|
|
43
48
|
* Can THIS BUILD of the CLI construct one?
|
|
44
49
|
*
|
|
@@ -59,6 +64,8 @@ export interface ProviderRegistryEntry {
|
|
|
59
64
|
* arm with no flag would refuse a provider that works.
|
|
60
65
|
*/
|
|
61
66
|
readonly constructible: boolean;
|
|
67
|
+
/** Package this CLI imports for the driver. Multiple transports may share one. */
|
|
68
|
+
readonly driverPackage?: `@namzu/${string}`;
|
|
62
69
|
}
|
|
63
70
|
export declare const PROVIDER_REGISTRY: Readonly<Record<ProviderId, ProviderRegistryEntry>>;
|
|
64
71
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,UAAU,GACnB,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,MAAM,CAAA;AAET,iEAAiE;AACjE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAA;AAExC,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,UAAU,GACnB,WAAW,GACX,OAAO,GACP,QAAQ,GACR,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,UAAU,GACV,SAAS,GACT,MAAM,CAAA;AAET,iEAAiE;AACjE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAA;AAExC,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,OAAO,CAAA;AAE1D,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,mEAAmE;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;IAChC,gFAAgF;IAChF,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAA;IACxC,8DAA8D;IAC9D,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;IACjD;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAA;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,aAAa,CAAC,EAAE,UAAU,MAAM,EAAE,CAAA;CAC3C;AAED,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAuHjF,CAAA;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,UAAU,EAEjD,CAAA;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAI7E"}
|
|
@@ -15,7 +15,25 @@ export const PROVIDER_REGISTRY = Object.freeze({
|
|
|
15
15
|
envVars: ['ANTHROPIC_API_KEY', 'ANTHROPIC_TOKEN', 'CLAUDE_CODE_OAUTH_TOKEN'],
|
|
16
16
|
defaultModel: 'claude-opus-5',
|
|
17
17
|
requiresApiKey: true,
|
|
18
|
+
acceptsTypedCredential: true,
|
|
19
|
+
subscriptionLogin: 'browser',
|
|
18
20
|
constructible: true,
|
|
21
|
+
driverPackage: '@namzu/anthropic',
|
|
22
|
+
},
|
|
23
|
+
codex: {
|
|
24
|
+
id: 'codex',
|
|
25
|
+
label: 'OpenAI (Codex subscription)',
|
|
26
|
+
// A Codex subscription token is never accepted through an environment
|
|
27
|
+
// variable here. It is a Responses credential with account routing, not
|
|
28
|
+
// an OpenAI API key; discovery reads its complete owned envelope instead.
|
|
29
|
+
envVars: [],
|
|
30
|
+
defaultBaseUrl: 'https://chatgpt.com/backend-api/codex',
|
|
31
|
+
defaultModel: 'gpt-5.6-sol',
|
|
32
|
+
requiresApiKey: true,
|
|
33
|
+
acceptsTypedCredential: false,
|
|
34
|
+
subscriptionLogin: 'device',
|
|
35
|
+
constructible: true,
|
|
36
|
+
driverPackage: '@namzu/openai',
|
|
19
37
|
},
|
|
20
38
|
openai: {
|
|
21
39
|
id: 'openai',
|
|
@@ -23,7 +41,9 @@ export const PROVIDER_REGISTRY = Object.freeze({
|
|
|
23
41
|
envVars: ['OPENAI_API_KEY'],
|
|
24
42
|
defaultModel: 'gpt-4o',
|
|
25
43
|
requiresApiKey: true,
|
|
44
|
+
acceptsTypedCredential: true,
|
|
26
45
|
constructible: true,
|
|
46
|
+
driverPackage: '@namzu/openai',
|
|
27
47
|
},
|
|
28
48
|
deepseek: {
|
|
29
49
|
id: 'deepseek',
|
|
@@ -35,7 +55,9 @@ export const PROVIDER_REGISTRY = Object.freeze({
|
|
|
35
55
|
// were discontinued on 2026-07-24 and resolve to nothing.
|
|
36
56
|
defaultModel: 'deepseek-v4-flash',
|
|
37
57
|
requiresApiKey: true,
|
|
58
|
+
acceptsTypedCredential: true,
|
|
38
59
|
constructible: true,
|
|
60
|
+
driverPackage: '@namzu/deepseek',
|
|
39
61
|
},
|
|
40
62
|
openrouter: {
|
|
41
63
|
id: 'openrouter',
|
|
@@ -44,7 +66,9 @@ export const PROVIDER_REGISTRY = Object.freeze({
|
|
|
44
66
|
defaultBaseUrl: 'https://openrouter.ai/api/v1',
|
|
45
67
|
defaultModel: 'anthropic/claude-opus-5',
|
|
46
68
|
requiresApiKey: true,
|
|
69
|
+
acceptsTypedCredential: true,
|
|
47
70
|
constructible: true,
|
|
71
|
+
driverPackage: '@namzu/openrouter',
|
|
48
72
|
},
|
|
49
73
|
ollama: {
|
|
50
74
|
id: 'ollama',
|
|
@@ -54,7 +78,9 @@ export const PROVIDER_REGISTRY = Object.freeze({
|
|
|
54
78
|
probeUrl: 'http://localhost:11434/api/tags',
|
|
55
79
|
defaultModel: 'llama3.2',
|
|
56
80
|
requiresApiKey: false,
|
|
81
|
+
acceptsTypedCredential: false,
|
|
57
82
|
constructible: true,
|
|
83
|
+
driverPackage: '@namzu/ollama',
|
|
58
84
|
},
|
|
59
85
|
lmstudio: {
|
|
60
86
|
id: 'lmstudio',
|
|
@@ -64,6 +90,7 @@ export const PROVIDER_REGISTRY = Object.freeze({
|
|
|
64
90
|
probeUrl: 'http://localhost:1234/v1/models',
|
|
65
91
|
defaultModel: 'auto',
|
|
66
92
|
requiresApiKey: false,
|
|
93
|
+
acceptsTypedCredential: false,
|
|
67
94
|
constructible: false,
|
|
68
95
|
},
|
|
69
96
|
bedrock: {
|
|
@@ -81,6 +108,7 @@ export const PROVIDER_REGISTRY = Object.freeze({
|
|
|
81
108
|
// means this build cannot construct the driver at all.
|
|
82
109
|
defaultModel: 'anthropic.claude-opus-4-7-v1:0',
|
|
83
110
|
requiresApiKey: true,
|
|
111
|
+
acceptsTypedCredential: true,
|
|
84
112
|
constructible: false,
|
|
85
113
|
},
|
|
86
114
|
http: {
|
|
@@ -91,6 +119,7 @@ export const PROVIDER_REGISTRY = Object.freeze({
|
|
|
91
119
|
envVars: [],
|
|
92
120
|
defaultModel: 'gpt-4o',
|
|
93
121
|
requiresApiKey: true,
|
|
122
|
+
acceptsTypedCredential: true,
|
|
94
123
|
constructible: false,
|
|
95
124
|
},
|
|
96
125
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/integrations/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/integrations/providers/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,6 +85,8 @@ export interface SubscriptionLoginOptions {
|
|
|
85
85
|
* container — passes false and skips a bind that would only ever time out.
|
|
86
86
|
*/
|
|
87
87
|
readonly loopback?: boolean;
|
|
88
|
+
/** Authority of the surface that started this attempt. */
|
|
89
|
+
readonly signal?: AbortSignal;
|
|
88
90
|
}
|
|
89
91
|
/**
|
|
90
92
|
* Begin a login. Returns the page to open plus the two ways to finish it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription-login.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/subscription-login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AASrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGzD,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GACrB;IACA,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAA;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACxB,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAElD,MAAM,WAAW,iBAAiB;IACjC,gFAAgF;IAChF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;;;;;;OAOG;IACH,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAA;IAC/C,uEAAuE;IACvE,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5D,gFAAgF;IAChF,MAAM,IAAI,IAAI,CAAA;CACd;AAED,MAAM,WAAW,wBAAwB;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"subscription-login.d.ts","sourceRoot":"","sources":["../../../src/integrations/providers/subscription-login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAMH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AASrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAGzD,6EAA6E;AAC7E,MAAM,MAAM,YAAY,GACrB;IACA,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAA;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CACxB,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAElD,MAAM,WAAW,iBAAiB;IACjC,gFAAgF;IAChF,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B;;;;;;;OAOG;IACH,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAA;IAC/C,uEAAuE;IACvE,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5D,gFAAgF;IAChF,MAAM,IAAI,IAAI,CAAA;CACd;AAED,MAAM,WAAW,wBAAwB;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,GAAE,wBAA6B,GACpC,OAAO,CAAC,iBAAiB,CAAC,CAuE5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAC3C,UAAU,EAAE,oBAAoB,EAChC,QAAQ,EAAE,MAAM,GACd,gBAAgB,CAYlB;AA6PD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA+BjF"}
|