agl 40.4.0 → 40.5.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/changelog.md +27 -0
- package/dist_serve/bundle.js +2228 -2177
- package/dist_serve/bundle.js.map +2 -2
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/aglapi/aglapisurface.document.js +2 -2
- package/dist_ts/classes.accountsactions.d.ts +11 -1
- package/dist_ts/classes.accountsactions.js +59 -2
- package/dist_ts/classes.controller.js +5 -5
- package/dist_ts/classes.flexaccountaccess.js +3 -2
- package/dist_ts/classes.harnessreleases.d.ts +14 -4
- package/dist_ts/classes.harnessreleases.js +28 -4
- package/dist_ts/classes.inferencegateway.d.ts +28 -3
- package/dist_ts/classes.inferencegateway.js +177 -61
- package/dist_ts/classes.inferenceplacement.d.ts +5 -3
- package/dist_ts/classes.inferenceplacement.js +2 -2
- package/dist_ts/classes.inferencerouter.d.ts +349 -91
- package/dist_ts/classes.inferencerouter.js +804 -297
- package/dist_ts/classes.inferenceservice.d.ts +14 -2
- package/dist_ts/classes.inferenceservice.js +53 -14
- package/dist_ts/classes.inferencespend.d.ts +339 -0
- package/dist_ts/classes.inferencespend.js +815 -0
- package/dist_ts/classes.inferenceusagecache.d.ts +8 -0
- package/dist_ts/classes.inferenceusagecache.js +9 -5
- package/dist_ts/classes.inferenceusagetap.d.ts +50 -9
- package/dist_ts/classes.inferenceusagetap.js +185 -31
- package/dist_ts/classes.proxycontrol.d.ts +3 -2
- package/dist_ts/classes.proxycontrol.js +1 -2
- package/dist_ts/classes.proxydaemon.js +3 -2
- package/dist_ts/classes.proxystore.d.ts +6 -0
- package/dist_ts/classes.proxystore.js +11 -2
- package/dist_ts/fleet/classes.claudeworkers.d.ts +5 -4
- package/dist_ts/fleet/classes.claudeworkers.js +10 -9
- package/dist_ts/functions.claudecoderelease.d.ts +12 -6
- package/dist_ts/functions.claudecoderelease.js +13 -7
- package/dist_ts/functions.inferencecli.js +12 -8
- package/dist_ts/interfaces.auth.d.ts +1 -1
- package/dist_ts/interfaces.auth.js +3 -1
- package/dist_ts/plugins.d.ts +3 -1
- package/dist_ts/plugins.js +7 -2
- package/dist_ts_authswitch/authority-apikeys.d.ts +32 -0
- package/dist_ts_authswitch/authority-apikeys.js +65 -0
- package/dist_ts_authswitch/authority-contract.d.ts +142 -28
- package/dist_ts_authswitch/authority-contract.js +48 -1
- package/dist_ts_authswitch/authority-overview.js +8 -1
- package/dist_ts_authswitch/authority-placement.d.ts +7 -2
- package/dist_ts_authswitch/authority-placement.js +10 -3
- package/dist_ts_authswitch/authority-runtime-contract.d.ts +2 -2
- package/dist_ts_authswitch/authority-spend.d.ts +103 -0
- package/dist_ts_authswitch/authority-spend.js +110 -0
- package/dist_ts_authswitch/authority-subscription.d.ts +12 -1
- package/dist_ts_authswitch/authority-subscription.js +24 -1
- package/dist_ts_authswitch/authority-usagelimit.d.ts +7 -4
- package/dist_ts_authswitch/authority-usagelimit.js +89 -39
- package/dist_ts_authswitch/authority-usagewindows.d.ts +4 -1
- package/dist_ts_authswitch/authority-usagewindows.js +41 -16
- package/dist_ts_authswitch/classes.authoritybroker.d.ts +30 -19
- package/dist_ts_authswitch/classes.authoritybroker.js +152 -61
- package/dist_ts_authswitch/classes.authoritycli.d.ts +9 -4
- package/dist_ts_authswitch/classes.authoritycli.js +94 -29
- package/dist_ts_authswitch/classes.authorityclient.d.ts +24 -7
- package/dist_ts_authswitch/classes.authorityclient.js +31 -11
- package/dist_ts_authswitch/classes.authoritydaemon.js +39 -12
- package/dist_ts_authswitch/classes.authoritydatabase.d.ts +28 -5
- package/dist_ts_authswitch/classes.authoritydatabase.js +171 -9
- package/dist_ts_authswitch/classes.authorityimport.js +2 -2
- package/dist_ts_authswitch/classes.authoritymodels.d.ts +71 -3
- package/dist_ts_authswitch/classes.authoritymodels.js +249 -20
- package/dist_ts_authswitch/classes.authorityregistry.js +4 -2
- package/dist_ts_authswitch/classes.authorityusage.d.ts +69 -7
- package/dist_ts_authswitch/classes.authorityusage.js +118 -4
- package/dist_ts_authswitch/classes.claudenative.d.ts +16 -7
- package/dist_ts_authswitch/classes.claudenative.js +29 -16
- package/dist_ts_authswitch/classes.claudesignin.js +5 -2
- package/dist_ts_authswitch/testsupport.d.ts +24 -5
- package/dist_ts_authswitch/testsupport.js +56 -12
- package/dist_ts_authswitch/ts_migration/0011_account_api_key_fields.d.ts +12 -0
- package/dist_ts_authswitch/ts_migration/0011_account_api_key_fields.js +21 -0
- package/dist_ts_authswitch/ts_migration/index.js +3 -1
- package/dist_ts_interfaces/functions.authorityscope.d.ts +18 -7
- package/dist_ts_interfaces/functions.authorityscope.js +35 -8
- package/dist_ts_interfaces/interfaces.d.ts +1 -1
- package/dist_ts_interfaces/interfaces.js +1 -1
- package/dist_ts_interfaces/plugins.d.ts +2 -1
- package/dist_ts_interfaces/plugins.js +7 -4
- package/dist_ts_interfaces/requests.accounts.d.ts +56 -0
- package/dist_ts_interfaces/requests.accounts.js +11 -1
- package/dist_ts_interfaces/requests.d.ts +2 -2
- package/dist_ts_interfaces/requests.js +1 -1
- package/docs/authswitch.md +75 -12
- package/package.json +5 -5
- package/readme.md +198 -21
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/aglapi/aglapisurface.document.ts +2 -2
- package/ts/classes.accountsactions.ts +75 -1
- package/ts/classes.controller.ts +4 -4
- package/ts/classes.flexaccountaccess.ts +2 -1
- package/ts/classes.harnessreleases.ts +25 -4
- package/ts/classes.inferencegateway.ts +184 -64
- package/ts/classes.inferenceplacement.ts +6 -4
- package/ts/classes.inferencerouter.ts +1026 -314
- package/ts/classes.inferenceservice.ts +56 -13
- package/ts/classes.inferencespend.ts +870 -0
- package/ts/classes.inferenceusagecache.ts +16 -4
- package/ts/classes.inferenceusagetap.ts +159 -34
- package/ts/classes.proxycontrol.ts +3 -3
- package/ts/classes.proxydaemon.ts +2 -1
- package/ts/classes.proxystore.ts +11 -1
- package/ts/fleet/classes.claudeworkers.ts +9 -8
- package/ts/functions.claudecoderelease.ts +13 -6
- package/ts/functions.inferencecli.ts +11 -7
- package/ts/interfaces.auth.ts +2 -0
- package/ts/plugins.ts +7 -0
- package/ts_authswitch/authority-apikeys.ts +85 -0
- package/ts_authswitch/authority-contract.ts +167 -29
- package/ts_authswitch/authority-overview.ts +7 -0
- package/ts_authswitch/authority-placement.ts +12 -4
- package/ts_authswitch/authority-runtime-contract.ts +2 -2
- package/ts_authswitch/authority-spend.ts +168 -0
- package/ts_authswitch/authority-subscription.ts +28 -1
- package/ts_authswitch/authority-usagelimit.ts +95 -40
- package/ts_authswitch/authority-usagewindows.ts +42 -17
- package/ts_authswitch/classes.authoritybroker.ts +161 -68
- package/ts_authswitch/classes.authoritycli.ts +108 -32
- package/ts_authswitch/classes.authorityclient.ts +41 -10
- package/ts_authswitch/classes.authoritydaemon.ts +43 -13
- package/ts_authswitch/classes.authoritydatabase.ts +178 -8
- package/ts_authswitch/classes.authorityimport.ts +1 -1
- package/ts_authswitch/classes.authoritymodels.ts +165 -19
- package/ts_authswitch/classes.authorityregistry.ts +3 -0
- package/ts_authswitch/classes.authorityusage.ts +171 -10
- package/ts_authswitch/classes.claudenative.ts +28 -15
- package/ts_authswitch/classes.claudesignin.ts +4 -1
- package/ts_authswitch/native-contracts.md +81 -20
- package/ts_authswitch/readme.md +1 -1
- package/ts_authswitch/testsupport.ts +58 -11
- package/ts_authswitch/ts_migration/0011_account_api_key_fields.ts +20 -0
- package/ts_authswitch/ts_migration/index.ts +2 -0
- package/ts_interfaces/functions.authorityscope.ts +43 -8
- package/ts_interfaces/interfaces.ts +1 -1
- package/ts_interfaces/plugins.ts +6 -3
- package/ts_interfaces/requests.accounts.ts +48 -0
- package/ts_interfaces/requests.ts +4 -0
- package/ts_web/00_commitinfo_data.ts +1 -1
- package/ts_web/accounts.plugins.ts +3 -1
- package/ts_web/accounts.templates.ts +20 -11
- package/ts_web/classes.accountsreadmodel.ts +322 -70
- package/ts_web/elements.accounts.ts +219 -20
- package/ts_web/elements.codexconnections.ts +3 -1
- package/ts_web/plugins.ts +4 -2
|
@@ -30,8 +30,8 @@ const placementText = (accountArg) => {
|
|
|
30
30
|
* Where an account's usage comes from: as of when the provider stated it, `est.` when a window is the account service's
|
|
31
31
|
* estimate between its reads, and a note when the service's last read was refused for too many requests.
|
|
32
32
|
*/
|
|
33
|
-
const readingText = (accountArg) => accountArg.readingObservedAt === null ?
|
|
34
|
-
:
|
|
33
|
+
const readingText = (accountArg) => accountArg.readingObservedAt === null ? `no ${accountArg.credential === 'api_key' ? 'spend' : 'usage'} reading`
|
|
34
|
+
: `${accountArg.credential === 'api_key' ? 'spend' : 'usage'} as of ${accountArg.readingObservedAt} `
|
|
35
35
|
+ `(${accountArg.readingSource === 'headers' ? 'from provider answers' : 'read by the account service'}`
|
|
36
36
|
+ `${accountArg.readingReadAt === null || accountArg.readingSource !== 'headers' ? ''
|
|
37
37
|
: `, last read ${accountArg.readingReadAt}`})`
|
|
@@ -59,12 +59,16 @@ export const formatProxyStatus = (unitArg, statusArg) => {
|
|
|
59
59
|
return lines.join('\n') + '\n';
|
|
60
60
|
}
|
|
61
61
|
for (const account of statusArg.accounts) {
|
|
62
|
-
lines.push(`Account ${account.label} (${account.
|
|
63
|
-
|
|
62
|
+
lines.push(`Account ${account.label} (${account.credential === 'api_key'
|
|
63
|
+
? `${account.provider === 'openai' ? 'OpenAI' : 'Anthropic'} API key` : account.provider === 'openai' ? 'ChatGPT' : 'Claude'}`
|
|
64
64
|
+ `${account.plan === null ? '' : `, ${account.plan}`}): ${account.stateText}`
|
|
65
|
-
+ `${account.resetAt === null ? '' : `, until ${account.resetAt}`};
|
|
66
|
-
|
|
67
|
-
+ `${account.
|
|
65
|
+
+ `${account.resetAt === null ? '' : `, until ${account.resetAt}`}; `
|
|
66
|
+
// A key has no maximum usage: its headroom is what is left of its monthly spend limit.
|
|
67
|
+
+ `${account.credential === 'api_key'
|
|
68
|
+
? `${account.headroom === null ? '' : `${Math.round(account.headroom)}% of its spend limit left, `}`
|
|
69
|
+
: `max usage ${account.maxUsagePercent === null ? 'not set' : `${account.maxUsagePercent}%`}`
|
|
70
|
+
+ `${account.headroom === null ? '' : `, ${Math.round(account.headroom)}% headroom`}, `}`
|
|
71
|
+
+ `${account.inFlight} in flight`
|
|
68
72
|
+ `${placementText(account)}; ${readingText(account)}`);
|
|
69
73
|
}
|
|
70
74
|
const accountLabel = (idArg) => idArg === null ? 'none'
|
|
@@ -257,4 +261,4 @@ export const runInferenceCli = async (argvArg) => {
|
|
|
257
261
|
}
|
|
258
262
|
process.stdout.write(`${aglProxyUnitName}: ${await unitState(service)}\n`);
|
|
259
263
|
};
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmluZmVyZW5jZWNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2Z1bmN0aW9ucy5pbmZlcmVuY2VjbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDBCQUEwQixFQUErQixNQUFNLHNDQUFzQyxDQUFDO0FBQ2pJLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBZWhILG9IQUFvSDtBQUNwSCxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQXVCLEVBQVUsRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFD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
|
|
264
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmluZmVyZW5jZWNsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL2Z1bmN0aW9ucy5pbmZlcmVuY2VjbGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLDBCQUEwQixFQUErQixNQUFNLHNDQUFzQyxDQUFDO0FBQ2pJLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBZWhILG9IQUFvSDtBQUNwSCxNQUFNLFNBQVMsR0FBRyxDQUFDLFFBQXVCLEVBQVUsRUFBRSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFD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
|
|
@@ -10,7 +10,7 @@ export type TWebAuthnCeremonyState = 'pending' | 'consumed';
|
|
|
10
10
|
* assertion consumes this list at runtime, so a type added here is
|
|
11
11
|
* automatically storable — the two can no longer drift apart.
|
|
12
12
|
*/
|
|
13
|
-
export declare const controllerAuditEventTypes: readonly ['controller.started', 'controller.stopped', 'setup.finish', 'authentication.finish', 'authentication.logout', 'temppassword.create', 'temppassword.login', 'auth.resume', 'auth.handoff', 'auth.signout', 'session.list', 'conversation.list', 'conversation.search', 'conversation.open', 'conversation.archive', 'conversation.reopen', 'session.read', 'session.auxiliary.read', 'session.model.update', 'session.mode.update', 'session.scratchpad.save', 'session.intelligence.ask', 'session.messages.page', 'session.message.read', 'session.create', 'session.delete', 'session.discard-empty', 'session.send', 'session.message', 'session.abort', 'session.harness.restart', 'opencode.restart', 'controller.restart', 'session.compaction.update', 'session.limitresume.update', 'session.promptqueue.release', 'session.heldprompt.release', 'session.pendingprompt.edit', 'session.pendingprompt.retract', 'session.rename', 'session.archive', 'session.yolo', 'session.builtin', 'slash.list', 'slash.execute', 'permission.reply', 'question.reply', 'project.list', 'project.create', 'project.remove', 'project.removal.retry', 'project.agentmessages.update', 'model.list', 'provider.list', 'provider.connection.list', 'provider.login.begin', 'authswitch.request', 'accounts.rename', 'accounts.maxusage', 'accounts.reserve.lift', 'accounts.remove', 'accounts.add', 'accounts.reauth', 'accounts.operation.cancel', 'accounts.preuse.start', 'accounts.preuse.cancel', 'accounts.claude.signin.start', 'accounts.claude.signin.cancel', 'accounts.claude.adopt', 'accounts.claude.release', 'accounts.claude.repair', 'accounts.codex.adopt', 'accounts.codex.release', 'provider.login.read', 'provider.login.cancel', 'provider.connection.logout', 'provider.connection.activate-opencode', 'provider.connection.ratelimits.read', 'provider.model.refresh.begin', 'provider.model.refresh.read', 'command.list', 'session.command', 'settings.read', 'settings.update', 'sessiongroups.read', 'sessiongroups.update', 'terminal.list', 'terminal.create', 'terminal.rename', 'terminal.remove', 'terminal.attach', 'resource.list', 'resource.create', 'resource.rename', 'resource.attach', 'resource.detach', 'resource.start', 'resource.stop', 'resource.retire', 'resource.workspace.base', 'resource.workspace.write', 'resource.workspace.mkdir', 'resource.workspace.remove', 'resource.workspace.rename', 'resource.workspace.copy', 'resource.workspace.reveal', 'configuration.target.bind', 'configuration.owner.issue', 'configuration.owner.revoke', 'configuration.state', 'configuration.master.get', 'configuration.master.save', 'configuration.project', 'configuration.review', 'configuration.apply', 'configuration.restore.review', 'configuration.restore', 'configuration.operation.retry', 'configuration.operation.recover', 'configuration.operation.abandon', 'resource.browser.operation', 'resource.browser.view.open', 'resource.browser.view.close', 'resource.browser.view.operate', 'resource.browser.paint.rearm'];
|
|
13
|
+
export declare const controllerAuditEventTypes: readonly ['controller.started', 'controller.stopped', 'setup.finish', 'authentication.finish', 'authentication.logout', 'temppassword.create', 'temppassword.login', 'auth.resume', 'auth.handoff', 'auth.signout', 'session.list', 'conversation.list', 'conversation.search', 'conversation.open', 'conversation.archive', 'conversation.reopen', 'session.read', 'session.auxiliary.read', 'session.model.update', 'session.mode.update', 'session.scratchpad.save', 'session.intelligence.ask', 'session.messages.page', 'session.message.read', 'session.create', 'session.delete', 'session.discard-empty', 'session.send', 'session.message', 'session.abort', 'session.harness.restart', 'opencode.restart', 'controller.restart', 'session.compaction.update', 'session.limitresume.update', 'session.promptqueue.release', 'session.heldprompt.release', 'session.pendingprompt.edit', 'session.pendingprompt.retract', 'session.rename', 'session.archive', 'session.yolo', 'session.builtin', 'slash.list', 'slash.execute', 'permission.reply', 'question.reply', 'project.list', 'project.create', 'project.remove', 'project.removal.retry', 'project.agentmessages.update', 'model.list', 'provider.list', 'provider.connection.list', 'provider.login.begin', 'authswitch.request', 'accounts.rename', 'accounts.maxusage', 'accounts.reserve.lift', 'accounts.apikey.add', 'accounts.spendlimit', 'accounts.remove', 'accounts.add', 'accounts.reauth', 'accounts.operation.cancel', 'accounts.preuse.start', 'accounts.preuse.cancel', 'accounts.claude.signin.start', 'accounts.claude.signin.cancel', 'accounts.claude.adopt', 'accounts.claude.release', 'accounts.claude.repair', 'accounts.codex.adopt', 'accounts.codex.release', 'provider.login.read', 'provider.login.cancel', 'provider.connection.logout', 'provider.connection.activate-opencode', 'provider.connection.ratelimits.read', 'provider.model.refresh.begin', 'provider.model.refresh.read', 'command.list', 'session.command', 'settings.read', 'settings.update', 'sessiongroups.read', 'sessiongroups.update', 'terminal.list', 'terminal.create', 'terminal.rename', 'terminal.remove', 'terminal.attach', 'resource.list', 'resource.create', 'resource.rename', 'resource.attach', 'resource.detach', 'resource.start', 'resource.stop', 'resource.retire', 'resource.workspace.base', 'resource.workspace.write', 'resource.workspace.mkdir', 'resource.workspace.remove', 'resource.workspace.rename', 'resource.workspace.copy', 'resource.workspace.reveal', 'configuration.target.bind', 'configuration.owner.issue', 'configuration.owner.revoke', 'configuration.state', 'configuration.master.get', 'configuration.master.save', 'configuration.project', 'configuration.review', 'configuration.apply', 'configuration.restore.review', 'configuration.restore', 'configuration.operation.retry', 'configuration.operation.recover', 'configuration.operation.abandon', 'resource.browser.operation', 'resource.browser.view.open', 'resource.browser.view.close', 'resource.browser.view.operate', 'resource.browser.paint.rearm'];
|
|
14
14
|
export type TControllerAuditEventType = (typeof controllerAuditEventTypes)[number];
|
|
15
15
|
export type TControllerAuditOutcome = 'attempted' | 'succeeded' | 'denied' | 'failed';
|
|
16
16
|
export type TAuthErrorCode = 'not_initialized' | 'config_mismatch' | 'setup_unavailable' | 'setup_invalid' | 'setup_expired' | 'rate_limited' | 'ceremony_limit' | 'ceremony_invalid' | 'ceremony_replayed' | 'ceremony_expired' | 'origin_mismatch' | 'peer_mismatch' | 'verification_failed' | 'credential_not_found' | 'concurrent_change' | 'ambiguous_write' | 'counter_conflict' | 'invalid_project' | 'invalid_resource' | 'invalid_settings' | 'temp_password_invalid' | 'temp_password_limit';
|
|
@@ -64,6 +64,8 @@ export const controllerAuditEventTypes = [
|
|
|
64
64
|
'accounts.rename',
|
|
65
65
|
'accounts.maxusage',
|
|
66
66
|
'accounts.reserve.lift',
|
|
67
|
+
'accounts.apikey.add',
|
|
68
|
+
'accounts.spendlimit',
|
|
67
69
|
'accounts.remove',
|
|
68
70
|
'accounts.add',
|
|
69
71
|
'accounts.reauth',
|
|
@@ -139,4 +141,4 @@ export class AuthError extends Error {
|
|
|
139
141
|
this.code = codeArg;
|
|
140
142
|
}
|
|
141
143
|
}
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvaW50ZXJmYWNlcy5hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRztJQUN2QyxvQkFBb0I7SUFDcEIsb0JBQW9CO0lBQ3BCLGNBQWM7SUFDZCx1QkFBdUI7SUFDdkIsdUJBQXVCO0lBQ3ZCLHFCQUFxQjtJQUNyQixvQkFBb0I7SUFDcEIsYUFBYTtJQUNiLGNBQWM7SUFDZCxjQUFjO0lBQ2QsY0FBYztJQUNkLG1CQUFtQjtJQUNuQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsY0FBYztJQUNkLHdCQUF3QjtJQUN4QixzQkFBc0I7SUFDdEIscUJBQXFCO0lBQ3JCLHlCQUF5QjtJQUN6QiwwQkFBMEI7SUFDMUIsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2QixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLGVBQWU7SUFDZix5QkFBeUI7SUFDekIsa0JBQWtCO0lBQ2xCLG9CQUFvQjtJQUNwQiwyQkFBMkI7SUFDM0IsNEJBQTRCO0lBQzVCLDZCQUE2QjtJQUM3Qiw0QkFBNEI7SUFDNUIsNEJBQTRCO0lBQzVCLCtCQUErQjtJQUMvQixnQkFBZ0I7SUFDaEIsaUJBQWlCO0lBQ2pCLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIsWUFBWTtJQUNaLGVBQWU7SUFDZixrQkFBa0I7SUFDbEIsZ0JBQWdCO0lBQ2hCLGNBQWM7SUFDZCxnQkFBZ0I7SUFDaEIsZ0JBQWdCO0lBQ2hCLHVCQUF1QjtJQUN2Qiw4QkFBOEI7SUFDOUIsWUFBWTtJQUNaLGVBQWU7SUFDZiwwQkFBMEI7SUFDMUIsc0JBQXNCO0lBQ3RCLG9CQUFvQjtJQUNwQixpQkFBaUI7SUFDakIsbUJBQW1CO0lBQ25CLHVCQUF1QjtJQUN2QixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGlCQUFpQjtJQUNqQixjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLDJCQUEyQjtJQUMzQix1QkFBdUI7SUFDdkIsd0JBQXdCO0lBQ3hCLDhCQUE4QjtJQUM5QiwrQkFBK0I7SUFDL0Isb0hBQW9IO0lBQ3BILHVCQUF1QjtJQUN2Qix5QkFBeUI7SUFDekIsd0JBQXdCO0lBQ3hCLHNCQUFzQjtJQUN0Qix3QkFBd0I7SUFDeEIscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2Qiw0QkFBNEI7SUFDNUIsdUNBQXVDO0lBQ3ZDLHFDQUFxQztJQUNyQyw4QkFBOEI7SUFDOUIsNkJBQTZCO0lBQzdCLGNBQWM7SUFDZCxpQkFBaUI7SUFDakIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixvQkFBb0I7SUFDcEIsc0JBQXNCO0lBQ3RCLGVBQWU7SUFDZixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQixpQkFBaUI7SUFDakIsaUJBQWlCO0lBQ2pCLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLGlCQUFpQjtJQUNqQix5QkFBeUI7SUFDekIsMEJBQTBCO0lBQzFCLDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBQzNCLHlCQUF5QjtJQUN6QiwyQkFBMkI7SUFDM0IsMkJBQTJCO0lBQzNCLDJCQUEyQjtJQUMzQiw0QkFBNEI7SUFDNUIscUJBQXFCO0lBQ3JCLDBCQUEwQjtJQUMxQiwyQkFBMkI7SUFDM0IsdUJBQXVCO0lBQ3ZCLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIsOEJBQThCO0lBQzlCLHVCQUF1QjtJQUN2QiwrQkFBK0I7SUFDL0IsaUNBQWlDO0lBQ2pDLGlDQUFpQztJQUNqQyw0QkFBNEI7SUFDNUIsNEJBQTRCO0lBQzVCLDZCQUE2QjtJQUM3QiwrQkFBK0I7SUFDL0IsOEJBQThCO0NBQ3RCLENBQUM7QUE0QlgsTUFBTSxPQUFPLFNBQVUsU0FBUSxLQUFLO0lBQ2xCLElBQUksQ0FBaUI7SUFFckMsWUFBWSxPQUF1QixFQUFFLFVBQWtCLEVBQUUsVUFBeUI7UUFDaEYsS0FBSyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztRQUN4QixJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztJQUN0QixDQUFDO0NBQ0YifQ==
|
package/dist_ts/plugins.d.ts
CHANGED
|
@@ -47,6 +47,8 @@ import * as authswitchUsageWindows from '../dist_ts_authswitch/authority-usagewi
|
|
|
47
47
|
import * as authswitchUsageHeaders from '../dist_ts_authswitch/authority-usageheaders.js';
|
|
48
48
|
import * as authswitchUsageTokens from '../dist_ts_authswitch/authority-usagetokens.js';
|
|
49
49
|
import * as authswitchClaudeNative from '../dist_ts_authswitch/classes.claudenative.js';
|
|
50
|
+
import * as authswitchSpend from '../dist_ts_authswitch/authority-spend.js';
|
|
51
|
+
import * as authswitchSubscription from '../dist_ts_authswitch/authority-subscription.js';
|
|
50
52
|
import * as crossharness from '@modelprofile.com/mcp-crossharness';
|
|
51
53
|
import * as mcpSystem from '@modelprofile.com/mcp-system';
|
|
52
54
|
import * as flexharnessMigration from '@modelprofile.com/flexharness/migration';
|
|
@@ -55,7 +57,7 @@ import * as typedrequestInterfaces from '@api.global/typedrequest-interfaces';
|
|
|
55
57
|
import * as typedserver from '@api.global/typedserver';
|
|
56
58
|
import * as smartserve from '@push.rocks/smartserve';
|
|
57
59
|
import * as typedsocket from '@api.global/typedsocket';
|
|
58
|
-
export { docker, authswitch, authswitchAuthority, authswitchUsageLimit, authswitchPlacement, authswitchUsageWindows, authswitchUsageHeaders, authswitchUsageTokens, authswitchClaudeNative, flexharness, browserRuntime, smartbrowser, crossharness, mcpSystem, flexharnessMigration, flexAgent, flexModels, flexCompaction, flexMcp, flexTypedRequest, flexTools, flexToolsNode, flexBrowser, openAiProvider, anthropicProvider, openAiAuth, openAiAccount, anthropicMessages, anthropicMessagesNode, losslessNosql, smartconsole, smartfs, smartsecret, smartdaemon, smartserve, smartshell, smartstring, smartsystem, typedrequest, typedrequestInterfaces, typedserver, typedsocket, };
|
|
60
|
+
export { docker, authswitch, authswitchAuthority, authswitchUsageLimit, authswitchPlacement, authswitchUsageWindows, authswitchUsageHeaders, authswitchUsageTokens, authswitchClaudeNative, authswitchSpend, authswitchSubscription, flexharness, browserRuntime, smartbrowser, crossharness, mcpSystem, flexharnessMigration, flexAgent, flexModels, flexCompaction, flexMcp, flexTypedRequest, flexTools, flexToolsNode, flexBrowser, openAiProvider, anthropicProvider, openAiAuth, openAiAccount, anthropicMessages, anthropicMessagesNode, losslessNosql, smartconsole, smartfs, smartsecret, smartdaemon, smartserve, smartshell, smartstring, smartsystem, typedrequest, typedrequestInterfaces, typedserver, typedsocket, };
|
|
59
61
|
import * as nosqldb from '@lossless.org/client/nosqldb';
|
|
60
62
|
import * as nosqldbEngine from '@lossless.org/nosqldb';
|
|
61
63
|
import * as objectstorage from '@lossless.org/client/objectstorage';
|
package/dist_ts/plugins.js
CHANGED
|
@@ -59,6 +59,11 @@ import * as authswitchUsageTokens from '../dist_ts_authswitch/authority-usagetok
|
|
|
59
59
|
// Claude Code's native contract: which releases' credential custody was read, for the mention of a new release. The
|
|
60
60
|
// package root already loads this module through the authority service, so the value import adds none.
|
|
61
61
|
import * as authswitchClaudeNative from '../dist_ts_authswitch/classes.claudenative.js';
|
|
62
|
+
// An API key's monthly spend: its calendar month in UTC, the spend limit rule and dollar amounts, which the proxy, the
|
|
63
|
+
// controller and the screens share.
|
|
64
|
+
import * as authswitchSpend from '../dist_ts_authswitch/authority-spend.js';
|
|
65
|
+
// Whether a held payment problem still holds an account, the one rule the authority and the proxy share.
|
|
66
|
+
import * as authswitchSubscription from '../dist_ts_authswitch/authority-subscription.js';
|
|
62
67
|
import * as crossharness from '@modelprofile.com/mcp-crossharness';
|
|
63
68
|
import * as mcpSystem from '@modelprofile.com/mcp-system';
|
|
64
69
|
import * as flexharnessMigration from '@modelprofile.com/flexharness/migration';
|
|
@@ -67,7 +72,7 @@ import * as typedrequestInterfaces from '@api.global/typedrequest-interfaces';
|
|
|
67
72
|
import * as typedserver from '@api.global/typedserver';
|
|
68
73
|
import * as smartserve from '@push.rocks/smartserve';
|
|
69
74
|
import * as typedsocket from '@api.global/typedsocket';
|
|
70
|
-
export { docker, authswitch, authswitchAuthority, authswitchUsageLimit, authswitchPlacement, authswitchUsageWindows, authswitchUsageHeaders, authswitchUsageTokens, authswitchClaudeNative, flexharness, browserRuntime, smartbrowser, crossharness, mcpSystem, flexharnessMigration, flexAgent, flexModels, flexCompaction, flexMcp, flexTypedRequest, flexTools, flexToolsNode, flexBrowser, openAiProvider, anthropicProvider, openAiAuth, openAiAccount, anthropicMessages, anthropicMessagesNode, losslessNosql, smartconsole, smartfs, smartsecret, smartdaemon, smartserve, smartshell, smartstring, smartsystem, typedrequest, typedrequestInterfaces, typedserver, typedsocket, };
|
|
75
|
+
export { docker, authswitch, authswitchAuthority, authswitchUsageLimit, authswitchPlacement, authswitchUsageWindows, authswitchUsageHeaders, authswitchUsageTokens, authswitchClaudeNative, authswitchSpend, authswitchSubscription, flexharness, browserRuntime, smartbrowser, crossharness, mcpSystem, flexharnessMigration, flexAgent, flexModels, flexCompaction, flexMcp, flexTypedRequest, flexTools, flexToolsNode, flexBrowser, openAiProvider, anthropicProvider, openAiAuth, openAiAccount, anthropicMessages, anthropicMessagesNode, losslessNosql, smartconsole, smartfs, smartsecret, smartdaemon, smartserve, smartshell, smartstring, smartsystem, typedrequest, typedrequestInterfaces, typedserver, typedsocket, };
|
|
71
76
|
// @lossless.org modules
|
|
72
77
|
import * as nosqldb from '@lossless.org/client/nosqldb';
|
|
73
78
|
import * as nosqldbEngine from '@lossless.org/nosqldb';
|
|
@@ -98,4 +103,4 @@ export { claudeAgentSdk, jsoncParser, opencodeSdk, simplewebauthnServer, smolTom
|
|
|
98
103
|
// module alone loads no global state, so only it is loaded.
|
|
99
104
|
const undiciPool = createRequire(import.meta.url)('undici/lib/dispatcher/pool.js');
|
|
100
105
|
export { undiciPool };
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzL3BsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsc0JBQXNCO0FBQ3RCLE9BQU8sS0FBSyxVQUFVLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEtBQUssV0FBVyxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUM5QixPQUFPLEtBQUssSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLE1BQU0sYUFBYSxDQUFDO0FBQ3RDLE9BQU8sS0FBSyxHQUFHLE1BQU0sVUFBVSxDQUFDO0FBQ2hDLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQ2xDLE9BQU8sS0FBSyxjQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUVwSSxzQkFBc0I7QUFDdEIsT0FBTyxLQUFLLE1BQU0sTUFBTSx1QkFBdUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssU0FBUyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2pFLE9BQU8sS0FBSyxV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
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { TAuthSwitchApiKeyProvider } from './authority-contract.js';
|
|
2
|
+
/**
|
|
3
|
+
* What the authority asks of a provider before it holds an API key, and how it tells the two providers' keys apart.
|
|
4
|
+
*
|
|
5
|
+
* Nothing here keeps, logs or returns a key, and no answer repeats a provider's error text, which could quote it.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* What a provider answered when asked for the models a key may use: `accepted`; `rejected`, the provider does not
|
|
9
|
+
* accept the key (HTTP 401); `forbidden`, the key is accepted but may not read the model list (HTTP 403, a restricted
|
|
10
|
+
* key). A verifier throws when the question could not be answered: the provider was not reached, timed out or answered
|
|
11
|
+
* anything else.
|
|
12
|
+
*/
|
|
13
|
+
export type TAuthSwitchApiKeyVerdict = 'accepted' | 'rejected' | 'forbidden';
|
|
14
|
+
/** Asks `providerId` whether it accepts `apiKey`, within `signal` (`TAuthSwitchApiKeyVerdict`). */
|
|
15
|
+
export type TAuthSwitchApiKeyVerifier = (providerId: TAuthSwitchApiKeyProvider, apiKey: string, signal: AbortSignal) => Promise<TAuthSwitchApiKeyVerdict>;
|
|
16
|
+
/**
|
|
17
|
+
* The verifier the authority runs: a read of the models the key may use, from Anthropic's `GET /v1/models` or
|
|
18
|
+
* OpenAI's, over `fetchArg` (the global fetch when unset), which nothing else reaches. Both reads come from
|
|
19
|
+
* `@modelprofile.com/flexharness-providers`, which sends the key only to its provider's API, follows no redirect, and
|
|
20
|
+
* throws fixed words that never carry the key or the provider's answer.
|
|
21
|
+
*/
|
|
22
|
+
export declare const authSwitchApiKeyVerifier: (fetchArg?: typeof fetch) => TAuthSwitchApiKeyVerifier;
|
|
23
|
+
/** How each provider names itself and where its keys are made, as an instruction states it. */
|
|
24
|
+
export declare const authSwitchApiKeyProviderNames: Readonly<Record<TAuthSwitchApiKeyProvider, {
|
|
25
|
+
name: string;
|
|
26
|
+
console: string;
|
|
27
|
+
}>>;
|
|
28
|
+
/**
|
|
29
|
+
* The provider whose keys begin the way `apiKey` does, when it is not `providerIdArg`: a key offered as the other
|
|
30
|
+
* provider's. The authority refuses it before any request, so a key is never sent to the provider it is not for.
|
|
31
|
+
*/
|
|
32
|
+
export declare const authSwitchApiKeyOtherProvider: (providerIdArg: TAuthSwitchApiKeyProvider, apiKey: string) => TAuthSwitchApiKeyProvider | null;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as plugins from './plugins.js';
|
|
2
|
+
/**
|
|
3
|
+
* The verifier the authority runs: a read of the models the key may use, from Anthropic's `GET /v1/models` or
|
|
4
|
+
* OpenAI's, over `fetchArg` (the global fetch when unset), which nothing else reaches. Both reads come from
|
|
5
|
+
* `@modelprofile.com/flexharness-providers`, which sends the key only to its provider's API, follows no redirect, and
|
|
6
|
+
* throws fixed words that never carry the key or the provider's answer.
|
|
7
|
+
*/
|
|
8
|
+
export const authSwitchApiKeyVerifier = (fetchArg) => async (providerId, apiKey, signal) => {
|
|
9
|
+
switch (providerId) {
|
|
10
|
+
case 'anthropic':
|
|
11
|
+
try {
|
|
12
|
+
await plugins.flexAnthropic.listAnthropicApiKeyModels({ apiKey }, { signal, ...(fetchArg ? { fetch: fetchArg } : {}) });
|
|
13
|
+
return 'accepted';
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
// Anthropic's model list refuses a key it does not accept with 401 and states no other key refusal.
|
|
17
|
+
if (error instanceof plugins.flexAnthropic.AnthropicApiKeyAuthError && error.status === 401)
|
|
18
|
+
return 'rejected';
|
|
19
|
+
throw error;
|
|
20
|
+
}
|
|
21
|
+
case 'openai':
|
|
22
|
+
try {
|
|
23
|
+
await plugins.flexOpenAi.listOpenAiApiKeyModels({ apiKey }, { signal, ...(fetchArg ? { fetch: fetchArg } : {}) });
|
|
24
|
+
return 'accepted';
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
// OpenAI refuses a key it does not accept with 401, and a key that may not read models with 403.
|
|
28
|
+
if (error instanceof plugins.flexOpenAi.OpenAiApiKeyAuthError) {
|
|
29
|
+
if (error.status === 401)
|
|
30
|
+
return 'rejected';
|
|
31
|
+
if (error.status === 403)
|
|
32
|
+
return 'forbidden';
|
|
33
|
+
}
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
default: {
|
|
37
|
+
const unhandledProvider = providerId;
|
|
38
|
+
return unhandledProvider;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
/** How each provider names itself and where its keys are made, as an instruction states it. */
|
|
43
|
+
export const authSwitchApiKeyProviderNames = Object.freeze({
|
|
44
|
+
anthropic: { name: 'Anthropic', console: 'the Claude Console' },
|
|
45
|
+
openai: { name: 'OpenAI', console: 'the OpenAI platform' },
|
|
46
|
+
});
|
|
47
|
+
/**
|
|
48
|
+
* How the providers' keys begin, as each documents them: Anthropic's API and Admin API keys begin `sk-ant-`
|
|
49
|
+
* (`sk-ant-api03`, `sk-ant-admin`; the Claude API reference, read 2026-10-21); OpenAI's project, service account and
|
|
50
|
+
* admin keys `sk-proj-`, `sk-svcacct-` and `sk-admin-` (OpenAI's own Codex, `OPENAI_API_KEY_PREFIXES`, and its API
|
|
51
|
+
* specification). OpenAI's older keys begin with a bare `sk-`, which Anthropic's share, so it tells nothing apart.
|
|
52
|
+
*/
|
|
53
|
+
const keyPrefixes = Object.freeze({
|
|
54
|
+
anthropic: ['sk-ant-'],
|
|
55
|
+
openai: ['sk-proj-', 'sk-svcacct-', 'sk-admin-'],
|
|
56
|
+
});
|
|
57
|
+
/**
|
|
58
|
+
* The provider whose keys begin the way `apiKey` does, when it is not `providerIdArg`: a key offered as the other
|
|
59
|
+
* provider's. The authority refuses it before any request, so a key is never sent to the provider it is not for.
|
|
60
|
+
*/
|
|
61
|
+
export const authSwitchApiKeyOtherProvider = (providerIdArg, apiKey) => {
|
|
62
|
+
const other = providerIdArg === 'anthropic' ? 'openai' : 'anthropic';
|
|
63
|
+
return keyPrefixes[other].some((prefix) => apiKey.startsWith(prefix)) ? other : null;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXR5LWFwaWtleXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c19hdXRoc3dpdGNoL2F1dGhvcml0eS1hcGlrZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBcUJ4Qzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsUUFBdUIsRUFBNkIsRUFBRSxDQUM3RixLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRTtJQUNuQyxRQUFRLFVBQVUsRUFBRSxDQUFDO1FBQ25CLEtBQUssV0FBVztZQUNkLElBQUksQ0FBQztnQkFDSCxNQUFNLE9BQU8sQ0FBQyxhQUFhLENBQUMseUJBQXlCLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN4SCxPQUFPLFVBQVUsQ0FBQztZQUNwQixDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDZixvR0FBb0c7Z0JBQ3BHLElBQUksS0FBSyxZQUFZLE9BQU8sQ0FBQyxhQUFhLENBQUMsd0JBQXdCLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHO29CQUFFLE9BQU8sVUFBVSxDQUFDO2dCQUMvRyxNQUFNLEtBQUssQ0FBQztZQUNkLENBQUM7UUFDSCxLQUFLLFFBQVE7WUFDWCxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxPQUFPLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbEgsT0FBTyxVQUFVLENBQUM7WUFDcEIsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsaUdBQWlHO2dCQUNqRyxJQUFJLEtBQUssWUFBWSxPQUFPLENBQUMsVUFBVSxDQUFDLHFCQUFxQixFQUFFLENBQUM7b0JBQzlELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxHQUFHO3dCQUFFLE9BQU8sVUFBVSxDQUFDO29CQUM1QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssR0FBRzt3QkFBRSxPQUFPLFdBQVcsQ0FBQztnQkFDL0MsQ0FBQztnQkFDRCxNQUFNLEtBQUssQ0FBQztZQUNkLENBQUM7UUFDSCxTQUFTLENBQUM7WUFDUixNQUFNLGlCQUFpQixHQUFVLFVBQVUsQ0FBQztZQUM1QyxPQUFPLGlCQUFpQixDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUosK0ZBQStGO0FBQy9GLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUN4QyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ1osU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUU7SUFDL0QsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUU7Q0FDM0QsQ0FBQyxDQUFDO0FBRUw7Ozs7O0dBS0c7QUFDSCxNQUFNLFdBQVcsR0FBbUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNoRyxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUM7SUFDdEIsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUM7Q0FDakQsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsQ0FBQyxhQUF3QyxFQUNwRixNQUFjLEVBQW9DLEVBQUU7SUFDcEQsTUFBTSxLQUFLLEdBQThCLGFBQWEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQ2hHLE9BQU8sV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN2RixDQUFDLENBQUMifQ==
|