@modelprofile.com/authswitch 6.4.0 → 7.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.
Files changed (98) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/authority-contract.d.ts +302 -6
  3. package/dist_ts/authority-contract.js +1 -1
  4. package/dist_ts/authority-runtime-contract.d.ts +15 -0
  5. package/dist_ts/authorityrehearsal.child.d.ts +1 -0
  6. package/dist_ts/authorityrehearsal.child.js +395 -0
  7. package/dist_ts/classes.accountlist.js +4 -3
  8. package/dist_ts/classes.authoritybackup.d.ts +134 -0
  9. package/dist_ts/classes.authoritybackup.js +769 -0
  10. package/dist_ts/classes.authoritybroker.d.ts +29 -6
  11. package/dist_ts/classes.authoritybroker.js +413 -122
  12. package/dist_ts/classes.authoritycli.d.ts +24 -0
  13. package/dist_ts/classes.authoritycli.js +675 -0
  14. package/dist_ts/classes.authorityclient.d.ts +34 -9
  15. package/dist_ts/classes.authorityclient.js +136 -38
  16. package/dist_ts/classes.authoritydaemon.d.ts +47 -0
  17. package/dist_ts/classes.authoritydaemon.js +705 -16
  18. package/dist_ts/classes.authoritydatabase.d.ts +182 -8
  19. package/dist_ts/classes.authoritydatabase.js +1188 -41
  20. package/dist_ts/classes.authoritymodels.d.ts +247 -1
  21. package/dist_ts/classes.authoritymodels.js +870 -6
  22. package/dist_ts/classes.authoritypreuse.d.ts +47 -0
  23. package/dist_ts/classes.authoritypreuse.js +278 -0
  24. package/dist_ts/classes.authorityregistry.d.ts +24 -0
  25. package/dist_ts/classes.authorityregistry.js +88 -0
  26. package/dist_ts/classes.authorityrehearsal.d.ts +127 -0
  27. package/dist_ts/classes.authorityrehearsal.js +632 -0
  28. package/dist_ts/classes.authorityusage.d.ts +160 -0
  29. package/dist_ts/classes.authorityusage.js +429 -0
  30. package/dist_ts/classes.claudeauthority.d.ts +66 -0
  31. package/dist_ts/classes.claudeauthority.js +532 -0
  32. package/dist_ts/classes.claudecodeharness.js +3 -2
  33. package/dist_ts/classes.claudecodelocks.d.ts +13 -0
  34. package/dist_ts/classes.claudecodelocks.js +75 -3
  35. package/dist_ts/classes.claudenative.d.ts +137 -0
  36. package/dist_ts/classes.claudenative.js +731 -0
  37. package/dist_ts/classes.claudestatus.d.ts +9 -0
  38. package/dist_ts/classes.claudestatus.js +26 -9
  39. package/dist_ts/classes.claudetokenrefresh.d.ts +15 -1
  40. package/dist_ts/classes.claudetokenrefresh.js +74 -21
  41. package/dist_ts/classes.codexharness.js +4 -2
  42. package/dist_ts/classes.codexmanaged.d.ts +91 -0
  43. package/dist_ts/classes.codexmanaged.js +404 -0
  44. package/dist_ts/classes.codexpreuse.d.ts +8 -0
  45. package/dist_ts/classes.codexpreuse.js +24 -6
  46. package/dist_ts/classes.fileharness.d.ts +2 -0
  47. package/dist_ts/classes.fileharness.js +6 -4
  48. package/dist_ts/classes.limits.js +12 -7
  49. package/dist_ts/classes.opencodeharness.js +2 -2
  50. package/dist_ts/claudehttp.d.ts +10 -0
  51. package/dist_ts/claudehttp.js +29 -3
  52. package/dist_ts/index.d.ts +2 -0
  53. package/dist_ts/index.js +8 -1
  54. package/dist_ts/interfaces.harness.d.ts +6 -0
  55. package/dist_ts/interfaces.list.d.ts +9 -3
  56. package/dist_ts/plugins.d.ts +7 -3
  57. package/dist_ts/plugins.js +9 -4
  58. package/dist_ts/ts_migration/0001_authority_meta.d.ts +3 -0
  59. package/dist_ts/ts_migration/0001_authority_meta.js +32 -0
  60. package/dist_ts/ts_migration/index.d.ts +3 -0
  61. package/dist_ts/ts_migration/index.js +6 -0
  62. package/package.json +12 -2
  63. package/readme.md +205 -13
  64. package/ts/00_commitinfo_data.ts +1 -1
  65. package/ts/authority-contract.ts +264 -9
  66. package/ts/authority-runtime-contract.ts +21 -1
  67. package/ts/authorityrehearsal.child.ts +330 -0
  68. package/ts/classes.accountlist.ts +3 -2
  69. package/ts/classes.authoritybackup.ts +780 -0
  70. package/ts/classes.authoritybroker.ts +410 -120
  71. package/ts/classes.authoritycli.ts +719 -0
  72. package/ts/classes.authorityclient.ts +164 -38
  73. package/ts/classes.authoritydaemon.ts +614 -17
  74. package/ts/classes.authoritydatabase.ts +1229 -44
  75. package/ts/classes.authoritymodels.ts +579 -4
  76. package/ts/classes.authoritypreuse.ts +297 -0
  77. package/ts/classes.authorityregistry.ts +118 -0
  78. package/ts/classes.authorityrehearsal.ts +625 -0
  79. package/ts/classes.authorityusage.ts +527 -0
  80. package/ts/classes.claudeauthority.ts +541 -0
  81. package/ts/classes.claudecodeharness.ts +2 -1
  82. package/ts/classes.claudecodelocks.ts +70 -1
  83. package/ts/classes.claudenative.ts +816 -0
  84. package/ts/classes.claudestatus.ts +38 -9
  85. package/ts/classes.claudetokenrefresh.ts +82 -19
  86. package/ts/classes.codexharness.ts +3 -1
  87. package/ts/classes.codexmanaged.ts +402 -0
  88. package/ts/classes.codexpreuse.ts +33 -5
  89. package/ts/classes.fileharness.ts +7 -3
  90. package/ts/classes.limits.ts +11 -6
  91. package/ts/classes.opencodeharness.ts +1 -1
  92. package/ts/claudehttp.ts +31 -2
  93. package/ts/index.ts +7 -0
  94. package/ts/interfaces.harness.ts +6 -0
  95. package/ts/interfaces.list.ts +9 -3
  96. package/ts/plugins.ts +9 -3
  97. package/ts/ts_migration/0001_authority_meta.ts +33 -0
  98. package/ts/ts_migration/index.ts +7 -0
@@ -1,5 +1,18 @@
1
- import type { IAuthSwitchAccountEvent, IAuthSwitchSnapshot, IReq_AuthSwitchBeginAdd, IReq_AuthSwitchBeginReauth, IReq_AuthSwitchCancelOperation, IReq_AuthSwitchEvents, IReq_AuthSwitchGetOperation, IReq_AuthSwitchRemoveAccount, IReq_AuthSwitchRenameAccount, IReq_AuthSwitchSnapshot } from './authority-contract.js';
2
- import type { IReq_AuthSwitchBindAccount, IReq_AuthSwitchResolveAccess } from './authority-runtime-contract.js';
1
+ import type { IAuthSwitchAccountEvent, IAuthSwitchSnapshot, IReq_AuthSwitchBeginAdd, IReq_AuthSwitchDoctor, IReq_AuthSwitchBeginReauth, IReq_AuthSwitchCancelOperation, IReq_AuthSwitchClaudeNativeHandoff, IReq_AuthSwitchClaudeNativeHandoffs, IReq_AuthSwitchSwitchClaudeNative, IReq_AuthSwitchEvents, IReq_AuthSwitchGetOperation, IReq_AuthSwitchListOperations, IReq_AuthSwitchRemoveAccount, IReq_AuthSwitchRenameAccount, IReq_AuthSwitchCancelPreuse, IReq_AuthSwitchGetPreuse, IReq_AuthSwitchSnapshot, IReq_AuthSwitchStartPreuse, IReq_AuthSwitchUsage } from './authority-contract.js';
2
+ import type { IReq_AuthSwitchBindAccount, IReq_AuthSwitchReleaseBinding, IReq_AuthSwitchResolveAccess } from './authority-runtime-contract.js';
3
+ /** A snapshot is usable only while state is current; lastVerifiedAt is the last successful daemon proof. */
4
+ export interface IAuthSwitchSubscriptionStatus {
5
+ state: 'current' | 'unavailable' | 'closed';
6
+ reason: 'initial' | 'snapshot' | 'event' | 'heartbeat' | 'disconnect' | 'resync' | 'abort' | 'consumer_error';
7
+ epoch: string | null;
8
+ revision: number | null;
9
+ lastVerifiedAt: string | null;
10
+ }
11
+ export interface IAuthSwitchSubscriptionOptions {
12
+ onStatus?: (status: IAuthSwitchSubscriptionStatus) => void | Promise<void>;
13
+ /** Bounded long-poll interval; defaults to 30 seconds. */
14
+ heartbeatMs?: number;
15
+ }
3
16
  /** Node-only client for the per-user daemon. Each request has its own bounded Unix connection. */
4
17
  export declare class AuthSwitchClient {
5
18
  readonly socketPath: string;
@@ -9,26 +22,38 @@ export declare class AuthSwitchClient {
9
22
  constructor(socketPath: string, runtimeSocketPath: string);
10
23
  private request;
11
24
  snapshot(options?: IReq_AuthSwitchSnapshot['request'], signal?: AbortSignal): Promise<IAuthSwitchSnapshot>;
25
+ /** One independently stamped diagnostic page; callers may continue with its independent cursors. */
26
+ doctorPage(options?: IReq_AuthSwitchDoctor['request'], signal?: AbortSignal): Promise<IReq_AuthSwitchDoctor['response']['page']>;
27
+ getUsage(accountId: string, loginId: string, force?: boolean): Promise<IReq_AuthSwitchUsage['response']['usage']>;
12
28
  /** Assemble a consistent view from bounded database pages; restart if a writer changes the revision. */
13
29
  snapshotAll(options?: {
14
30
  limit?: number;
15
31
  signal?: AbortSignal;
16
32
  }): Promise<IAuthSwitchSnapshot>;
17
33
  events(epoch: string, afterRevision: number, waitMs?: number, signal?: AbortSignal): Promise<IReq_AuthSwitchEvents['response']>;
18
- /** Always obtains a fresh snapshot after reconnect or an event-log gap. */
19
- subscribe(onSnapshot: (snapshot: IAuthSwitchSnapshot) => void | Promise<void>, onEvent: (event: IAuthSwitchAccountEvent) => void | Promise<void>, signal: AbortSignal): Promise<void>;
20
- beginAddOpenAi(): Promise<IReq_AuthSwitchBeginAdd['response']['operation']>;
21
- beginReauthOpenAi(accountId: string): Promise<IReq_AuthSwitchBeginReauth['response']['operation']>;
22
- getOperation(operationId: string): Promise<IReq_AuthSwitchGetOperation['response']['operation']>;
23
- cancelOperation(operationId: string): Promise<IReq_AuthSwitchCancelOperation['response']['operation']>;
34
+ /** Snapshot callback runs after every known change; onStatus invalidates it on disconnect, resync or abort. */
35
+ subscribe(onSnapshot: (snapshot: IAuthSwitchSnapshot) => void | Promise<void>, onEvent: (event: IAuthSwitchAccountEvent) => void | Promise<void>, signal: AbortSignal, options?: IAuthSwitchSubscriptionOptions): Promise<void>;
36
+ beginAddOpenAi(operationId: string, signal?: AbortSignal): Promise<IReq_AuthSwitchBeginAdd['response']['operation']>;
37
+ beginReauthOpenAi(operationId: string, accountId: string, loginId: string, purpose: 'openai_managed', signal?: AbortSignal): Promise<IReq_AuthSwitchBeginReauth['response']['operation']>;
38
+ listOperations(after?: string, limit?: number): Promise<IReq_AuthSwitchListOperations['response']>;
39
+ getOperation(operationId: string, signal?: AbortSignal): Promise<IReq_AuthSwitchGetOperation['response']['operation']>;
40
+ cancelOperation(operationId: string, signal?: AbortSignal): Promise<IReq_AuthSwitchCancelOperation['response']['operation']>;
41
+ startPreuse(input: IReq_AuthSwitchStartPreuse['request'], signal?: AbortSignal): Promise<IReq_AuthSwitchStartPreuse['response']['operation']>;
42
+ getPreuse(operationId: string, signal?: AbortSignal): Promise<IReq_AuthSwitchGetPreuse['response']['operation']>;
43
+ cancelPreuse(operationId: string, signal?: AbortSignal): Promise<IReq_AuthSwitchCancelPreuse['response']['operation']>;
24
44
  renameAccount(accountId: string, expectedRevision: number, label: string): Promise<IReq_AuthSwitchRenameAccount['response']['account']>;
25
45
  removeAccount(accountId: string, expectedRevision: number): Promise<IReq_AuthSwitchRemoveAccount['response']['account']>;
46
+ switchClaudeNative(accountId: string, loginId: string): Promise<IReq_AuthSwitchSwitchClaudeNative['response']['handoff']>;
47
+ getClaudeNativeHandoff(operationId: string): Promise<IReq_AuthSwitchClaudeNativeHandoff['response']['handoff']>;
48
+ listClaudeNativeHandoffs(after?: string, limit?: number): Promise<IReq_AuthSwitchClaudeNativeHandoffs['response']>;
26
49
  bindAccount(input: IReq_AuthSwitchBindAccount['request']): Promise<IReq_AuthSwitchBindAccount['response']>;
27
50
  resolveAccess(input: IReq_AuthSwitchResolveAccess['request']): Promise<IReq_AuthSwitchResolveAccess['response']>;
51
+ releaseBinding(input: IReq_AuthSwitchReleaseBinding['request'], signal?: AbortSignal): Promise<IReq_AuthSwitchReleaseBinding['response']>;
28
52
  }
29
- /** Container-facing client. It can only resolve a previously issued binding capability. */
53
+ /** Container-facing client. It can only resolve or release a previously issued binding capability. */
30
54
  export declare class AuthSwitchRuntimeClient {
31
55
  private readonly target;
32
56
  constructor(runtimeSocketPath: string);
33
57
  resolveAccess(input: IReq_AuthSwitchResolveAccess['request']): Promise<IReq_AuthSwitchResolveAccess['response']>;
58
+ releaseBinding(input: IReq_AuthSwitchReleaseBinding['request'], signal?: AbortSignal): Promise<IReq_AuthSwitchReleaseBinding['response']>;
34
59
  }
@@ -84,31 +84,41 @@ export class AuthSwitchClient {
84
84
  async snapshot(options = {}, signal) {
85
85
  return (await this.request('authswitch.authority.snapshot', options, 35_000, false, signal)).snapshot;
86
86
  }
87
+ /** One independently stamped diagnostic page; callers may continue with its independent cursors. */
88
+ async doctorPage(options = {}, signal) {
89
+ return (await this.request('authswitch.authority.doctor', options, 35_000, false, signal)).page;
90
+ }
91
+ async getUsage(accountId, loginId, force = false) {
92
+ return (await this.request('authswitch.authority.usage', { accountId, loginId, force })).usage;
93
+ }
87
94
  /** Assemble a consistent view from bounded database pages; restart if a writer changes the revision. */
88
95
  async snapshotAll(options = {}) {
89
96
  while (true) {
90
97
  if (options.signal?.aborted)
91
98
  throw options.signal.reason ?? new Error('Account snapshot cancelled.');
92
99
  let accountAfter;
100
+ let loginAfter;
93
101
  let bindingAfter;
94
102
  let aggregate;
95
103
  let changed = false;
96
104
  while (true) {
97
- const page = await this.snapshot({ accountAfter, bindingAfter, limit: options.limit }, options.signal);
105
+ const page = await this.snapshot({ accountAfter, loginAfter, bindingAfter, limit: options.limit }, options.signal);
98
106
  if (!aggregate)
99
- aggregate = { ...page, accounts: [...page.accounts], bindings: [...page.bindings] };
107
+ aggregate = { ...page, accounts: [...page.accounts], logins: [...page.logins], bindings: [...page.bindings] };
100
108
  else if (aggregate.epoch !== page.epoch || aggregate.revision !== page.revision) {
101
109
  changed = true;
102
110
  break;
103
111
  }
104
112
  else {
105
113
  aggregate.accounts.push(...page.accounts);
114
+ aggregate.logins.push(...page.logins);
106
115
  aggregate.bindings.push(...page.bindings);
107
116
  }
108
117
  accountAfter = page.nextAccountCursor ?? accountAfter ?? page.accounts.at(-1)?.id;
118
+ loginAfter = page.nextLoginCursor ?? loginAfter ?? page.logins.at(-1)?.id;
109
119
  bindingAfter = page.nextBindingCursor ?? bindingAfter ?? page.bindings.at(-1)?.id;
110
- if (!page.nextAccountCursor && !page.nextBindingCursor) {
111
- return { ...aggregate, nextAccountCursor: null, nextBindingCursor: null };
120
+ if (!page.nextAccountCursor && !page.nextLoginCursor && !page.nextBindingCursor) {
121
+ return { ...aggregate, nextAccountCursor: null, nextLoginCursor: null, nextBindingCursor: null };
112
122
  }
113
123
  }
114
124
  if (!changed)
@@ -118,58 +128,131 @@ export class AuthSwitchClient {
118
128
  events(epoch, afterRevision, waitMs = 30_000, signal) {
119
129
  return this.request('authswitch.authority.events', { epoch, afterRevision, waitMs }, waitMs + 5_000, false, signal);
120
130
  }
121
- /** Always obtains a fresh snapshot after reconnect or an event-log gap. */
122
- async subscribe(onSnapshot, onEvent, signal) {
131
+ /** Snapshot callback runs after every known change; onStatus invalidates it on disconnect, resync or abort. */
132
+ async subscribe(onSnapshot, onEvent, signal, options = {}) {
133
+ const heartbeatMs = options.heartbeatMs ?? 30_000;
134
+ if (!Number.isSafeInteger(heartbeatMs) || heartbeatMs < 50 || heartbeatMs > 30_000) {
135
+ throw new Error('Authswitch subscription heartbeat must be 50–30000 ms.');
136
+ }
123
137
  const retry = () => new Promise(resolve => {
124
138
  const timer = setTimeout(() => { signal.removeEventListener('abort', aborted); resolve(); }, 250);
125
139
  const aborted = () => { clearTimeout(timer); resolve(); };
126
140
  signal.addEventListener('abort', aborted, { once: true });
127
141
  });
128
142
  let snapshot;
129
- while (!signal.aborted) {
130
- if (!snapshot) {
143
+ let available = false;
144
+ let lastVerifiedAt = null;
145
+ let lastEpoch = null;
146
+ let lastRevision = null;
147
+ const status = async (state, reason) => {
148
+ await options.onStatus?.({ state, reason, epoch: lastEpoch, revision: lastRevision, lastVerifiedAt });
149
+ };
150
+ const invalidate = async (reason) => {
151
+ snapshot = undefined;
152
+ if (available) {
153
+ available = false;
154
+ await status('unavailable', reason);
155
+ }
156
+ };
157
+ try {
158
+ if (!signal.aborted)
159
+ await status('unavailable', 'initial');
160
+ while (!signal.aborted) {
161
+ if (!snapshot) {
162
+ let fresh;
163
+ try {
164
+ fresh = await this.snapshotAll({ signal });
165
+ }
166
+ catch {
167
+ if (signal.aborted)
168
+ break;
169
+ await invalidate('disconnect');
170
+ await retry();
171
+ continue;
172
+ }
173
+ snapshot = fresh;
174
+ await onSnapshot(fresh);
175
+ available = true;
176
+ lastEpoch = fresh.epoch;
177
+ lastRevision = fresh.revision;
178
+ lastVerifiedAt = new Date().toISOString();
179
+ await status('current', 'snapshot');
180
+ }
181
+ let result;
131
182
  try {
132
- snapshot = await this.snapshotAll({ signal });
183
+ result = await this.events(snapshot.epoch, snapshot.revision, heartbeatMs, signal);
133
184
  }
134
185
  catch {
135
186
  if (signal.aborted)
136
187
  break;
188
+ await invalidate('disconnect');
137
189
  await retry();
138
190
  continue;
139
191
  }
140
- await onSnapshot(snapshot);
141
- }
142
- let result;
143
- try {
144
- result = await this.events(snapshot.epoch, snapshot.revision, 30_000, signal);
145
- }
146
- catch {
147
- if (signal.aborted)
148
- break;
149
- snapshot = undefined;
150
- await retry();
151
- continue;
152
- }
153
- if (result.resyncRequired || result.epoch !== snapshot.epoch) {
154
- snapshot = undefined;
155
- continue;
192
+ if (result.resyncRequired || result.epoch !== snapshot.epoch
193
+ || (result.events.length === 0 && result.revision !== snapshot.revision)) {
194
+ await invalidate('resync');
195
+ continue;
196
+ }
197
+ if (result.events.length) {
198
+ let fresh;
199
+ try {
200
+ fresh = await this.snapshotAll({ signal });
201
+ }
202
+ catch {
203
+ if (signal.aborted)
204
+ break;
205
+ await invalidate('disconnect');
206
+ await retry();
207
+ continue;
208
+ }
209
+ if (fresh.epoch !== result.epoch || fresh.revision < result.revision) {
210
+ await invalidate('resync');
211
+ continue;
212
+ }
213
+ snapshot = fresh;
214
+ await onSnapshot(fresh);
215
+ for (const event of result.events)
216
+ await onEvent(event);
217
+ lastEpoch = fresh.epoch;
218
+ lastRevision = fresh.revision;
219
+ lastVerifiedAt = new Date().toISOString();
220
+ await status('current', 'event');
221
+ }
222
+ else {
223
+ lastVerifiedAt = new Date().toISOString();
224
+ await status('current', 'heartbeat');
225
+ }
156
226
  }
157
- for (const event of result.events)
158
- await onEvent(event);
159
- snapshot = { ...snapshot, revision: result.revision };
160
227
  }
228
+ finally {
229
+ available = false;
230
+ await status('closed', signal.aborted ? 'abort' : 'consumer_error');
231
+ }
232
+ }
233
+ async beginAddOpenAi(operationId, signal) {
234
+ return (await this.request('authswitch.authority.add', { operationId, providerId: 'openai', flow: 'device' }, 35_000, false, signal)).operation;
235
+ }
236
+ async beginReauthOpenAi(operationId, accountId, loginId, purpose, signal) {
237
+ return (await this.request('authswitch.authority.reauth', { operationId, accountId, loginId, purpose, flow: 'device' }, 35_000, false, signal)).operation;
161
238
  }
162
- async beginAddOpenAi() {
163
- return (await this.request('authswitch.authority.add', { providerId: 'openai', flow: 'device' })).operation;
239
+ listOperations(after, limit) {
240
+ return this.request('authswitch.authority.operations', { after, limit });
164
241
  }
165
- async beginReauthOpenAi(accountId) {
166
- return (await this.request('authswitch.authority.reauth', { accountId, flow: 'device' })).operation;
242
+ async getOperation(operationId, signal) {
243
+ return (await this.request('authswitch.authority.operation', { operationId }, 35_000, false, signal)).operation;
167
244
  }
168
- async getOperation(operationId) {
169
- return (await this.request('authswitch.authority.operation', { operationId })).operation;
245
+ async cancelOperation(operationId, signal) {
246
+ return (await this.request('authswitch.authority.cancel', { operationId }, 35_000, false, signal)).operation;
170
247
  }
171
- async cancelOperation(operationId) {
172
- return (await this.request('authswitch.authority.cancel', { operationId })).operation;
248
+ async startPreuse(input, signal) {
249
+ return (await this.request('authswitch.authority.preuse.start', input, 35_000, false, signal)).operation;
250
+ }
251
+ async getPreuse(operationId, signal) {
252
+ return (await this.request('authswitch.authority.preuse.operation', { operationId }, 35_000, false, signal)).operation;
253
+ }
254
+ async cancelPreuse(operationId, signal) {
255
+ return (await this.request('authswitch.authority.preuse.cancel', { operationId }, 35_000, false, signal)).operation;
173
256
  }
174
257
  async renameAccount(accountId, expectedRevision, label) {
175
258
  return (await this.request('authswitch.authority.rename', { accountId, expectedRevision, label })).account;
@@ -177,14 +260,26 @@ export class AuthSwitchClient {
177
260
  async removeAccount(accountId, expectedRevision) {
178
261
  return (await this.request('authswitch.authority.remove', { accountId, expectedRevision })).account;
179
262
  }
263
+ async switchClaudeNative(accountId, loginId) {
264
+ return (await this.request('authswitch.authority.claude.switch', { accountId, loginId, purpose: 'claude_host_native' })).handoff;
265
+ }
266
+ async getClaudeNativeHandoff(operationId) {
267
+ return (await this.request('authswitch.authority.claude.handoff', { operationId })).handoff;
268
+ }
269
+ listClaudeNativeHandoffs(after, limit) {
270
+ return this.request('authswitch.authority.claude.handoffs', { after, limit });
271
+ }
180
272
  bindAccount(input) {
181
273
  return this.request('authswitch.authority.bind', input);
182
274
  }
183
275
  resolveAccess(input) {
184
276
  return this.request('authswitch.authority.resolveAccess', input, 35_000, true);
185
277
  }
278
+ releaseBinding(input, signal) {
279
+ return this.request('authswitch.authority.release', input, 35_000, true, signal);
280
+ }
186
281
  }
187
- /** Container-facing client. It can only resolve a previously issued binding capability. */
282
+ /** Container-facing client. It can only resolve or release a previously issued binding capability. */
188
283
  export class AuthSwitchRuntimeClient {
189
284
  target;
190
285
  constructor(runtimeSocketPath) {
@@ -196,5 +291,8 @@ export class AuthSwitchRuntimeClient {
196
291
  resolveAccess(input) {
197
292
  return new plugins.typedrequest.TypedRequest(this.target, 'authswitch.authority.resolveAccess').fire(input, { timeoutMs: 35_000, maxRetries: 0 });
198
293
  }
294
+ releaseBinding(input, signal) {
295
+ return new plugins.typedrequest.TypedRequest(this.target, 'authswitch.authority.release').fire(input, { timeoutMs: 35_000, maxRetries: 0, abortSignal: signal });
296
+ }
199
297
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdXRob3JpdHljbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmF1dGhvcml0eWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQVF4QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsNkJBQTZCLEVBQ3BFLGdDQUFnQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFMUUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBc0IsRUFBRSxNQUFvQixFQUEwQixFQUFFO0lBQ2hHLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsSUFBSSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDdkQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBZSxFQUFFLFFBQXdCLEVBQVEsRUFBRTtZQUNqRSxJQUFJLE9BQU87Z0JBQUUsT0FBTztZQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxLQUFLO2dCQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDcEIsSUFBSSxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzs7Z0JBQ2hDLE1BQU0sQ0FBQyxJ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
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5hdXRob3JpdHljbGllbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9jbGFzc2VzLmF1dGhvcml0eWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEtBQUssT0FBTyxNQUFNLGNBQWMsQ0FBQztBQVl4QyxPQUFPLEVBQUUsOEJBQThCLEVBQUUsNkJBQTZCLEVBQ3BFLGdDQUFnQyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFMUUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFZLEVBQUUsT0FBc0IsRUFBRSxNQUFvQixFQUEwQixFQUFFO0lBQ2hHLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7UUFDckMsSUFBSSxNQUFNLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDdkQsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDcEIsTUFBTSxLQUFLLEdBQUcsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1FBQ25ELE1BQU0sTUFBTSxHQUFHLENBQUMsS0FBZSxFQUFFLFFBQXdCLEVBQVEsRUFBRTtZQUNqRSxJQUFJLE9BQU87Z0JBQUUsT0FBTztZQUNwQixPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ2YsTUFBTSxFQUFFLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1QyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxLQUFLO2dCQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDcEIsSUFBSSxRQUFRO2dCQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQzs7Z0JBQ2hDLE1BQU0sQ0FBQyxJ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
@@ -1,23 +1,70 @@
1
1
  import { AuthSwitchAuthorityBroker, type IAuthSwitchAuthorityBrokerOptions } from './classes.authoritybroker.js';
2
2
  import { AuthSwitchAuthorityDatabase, type IAuthSwitchAuthorityDatabaseOptions } from './classes.authoritydatabase.js';
3
+ import { ClaudeNativeAuthority, type IClaudeNativeAuthorityOptions } from './classes.claudeauthority.js';
4
+ import { ClaudeAccountStatus } from './classes.claudestatus.js';
5
+ import { AuthSwitchAuthorityUsage, type IAuthSwitchAuthorityUsageOptions } from './classes.authorityusage.js';
6
+ import { AuthSwitchAuthorityPreuse, type IAuthSwitchAuthorityPreuseOptions } from './classes.authoritypreuse.js';
7
+ import { AuthSwitchManagedCodex, type IAuthSwitchManagedCodexOptions } from './classes.codexmanaged.js';
3
8
  export interface IAuthSwitchAuthorityDaemonOptions extends IAuthSwitchAuthorityDatabaseOptions {
4
9
  authoritySocketPath: string;
5
10
  runtimeSocketPath: string;
6
11
  broker?: IAuthSwitchAuthorityBrokerOptions;
12
+ usage?: Partial<Pick<IAuthSwitchAuthorityUsageOptions, 'now' | 'currentMaxAgeMs' | 'maxStaleAgeMs' | 'minAttemptIntervalMs' | 'retryBaseMs' | 'retryMaxMs' | 'providerTimeoutMs' | 'minAccessValidityMs'>>;
13
+ preuse?: IAuthSwitchAuthorityPreuseOptions;
14
+ claudeStatus?: ClaudeAccountStatus;
15
+ /** Activated only after a verified backend source receipt has registered the native home. */
16
+ claudeNative?: IClaudeNativeAuthorityOptions;
7
17
  }
8
18
  /** TypedRequest handlers over a private one-request-per-connection Unix socket. */
9
19
  export declare class AuthSwitchAuthorityDaemon {
10
20
  private readonly options;
11
21
  readonly database: AuthSwitchAuthorityDatabase;
12
22
  readonly broker: AuthSwitchAuthorityBroker;
23
+ readonly usage: AuthSwitchAuthorityUsage;
24
+ readonly preuse: AuthSwitchAuthorityPreuse;
25
+ readonly claudeNative?: ClaudeNativeAuthority;
13
26
  private readonly managementRouter;
14
27
  private readonly runtimeRouter;
15
28
  private managementServer?;
16
29
  private runtimeServer?;
17
30
  private readonly sockets;
31
+ private readonly managedCodex;
32
+ private readonly managedCodexHomes;
33
+ private readonly managedCodexAccountIds;
34
+ private readonly managedCodexStates;
35
+ private readonly drainingAccounts;
36
+ private readonly deviceDrainOwners;
37
+ private readonly preuseAccounts;
38
+ private readonly managedCodexStops;
39
+ private readonly managedCodexFailures;
40
+ private readonly runtimeBindingActivity;
41
+ private readonly runtimeBindingReleaseFences;
42
+ private readonly runtimeBindingReleases;
43
+ private closing;
18
44
  constructor(options: IAuthSwitchAuthorityDaemonOptions);
45
+ private runtimeBindingKey;
46
+ private beginRuntimeBindingAccess;
47
+ private waitForRuntimeBindingAccess;
48
+ private releaseRuntimeBinding;
49
+ private releaseDeviceDrain;
50
+ private beginReauthOpenAi;
19
51
  private register;
52
+ private doctorPage;
20
53
  start(): Promise<void>;
54
+ /** The account fence excludes new admissions while durable detached runs are checked. */
55
+ private drainManagedCodexAccount;
56
+ startManagedCodex(input: {
57
+ accountId: string;
58
+ loginId: string;
59
+ purpose: 'openai_managed';
60
+ scopeId: string;
61
+ workspaceDirectory: string;
62
+ codexHomeDirectory: string;
63
+ executable?: string;
64
+ onNotification?: IAuthSwitchManagedCodexOptions['onNotification'];
65
+ onServerRequest?: IAuthSwitchManagedCodexOptions['onServerRequest'];
66
+ }): Promise<AuthSwitchManagedCodex>;
67
+ stopManagedCodex(scopeId: string): Promise<void>;
21
68
  private listen;
22
69
  /** A killed daemon leaves a pathname behind; only remove an unchanged, owned, refused Unix socket. */
23
70
  private clearStaleSocket;