@modelprofile.com/authswitch 6.5.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 +13 -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 +25 -5
  11. package/dist_ts/classes.authoritybroker.js +392 -123
  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 +19 -7
  15. package/dist_ts/classes.authorityclient.js +51 -14
  16. package/dist_ts/classes.authoritydaemon.d.ts +28 -1
  17. package/dist_ts/classes.authoritydaemon.js +482 -36
  18. package/dist_ts/classes.authoritydatabase.d.ts +175 -10
  19. package/dist_ts/classes.authoritydatabase.js +1100 -52
  20. package/dist_ts/classes.authoritymodels.d.ts +223 -1
  21. package/dist_ts/classes.authoritymodels.js +798 -9
  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 +11 -0
  43. package/dist_ts/classes.codexmanaged.js +75 -14
  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 +1 -0
  53. package/dist_ts/index.js +7 -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 +5 -2
  57. package/dist_ts/plugins.js +7 -3
  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 +4 -1
  63. package/readme.md +181 -14
  64. package/ts/00_commitinfo_data.ts +1 -1
  65. package/ts/authority-contract.ts +264 -9
  66. package/ts/authority-runtime-contract.ts +14 -0
  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 +389 -121
  71. package/ts/classes.authoritycli.ts +719 -0
  72. package/ts/classes.authorityclient.ts +75 -18
  73. package/ts/classes.authoritydaemon.ts +449 -36
  74. package/ts/classes.authoritydatabase.ts +1147 -55
  75. package/ts/classes.authoritymodels.ts +541 -6
  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 +75 -12
  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 +6 -0
  94. package/ts/interfaces.harness.ts +6 -0
  95. package/ts/interfaces.list.ts +9 -3
  96. package/ts/plugins.ts +7 -2
  97. package/ts/ts_migration/0001_authority_meta.ts +33 -0
  98. package/ts/ts_migration/index.ts +7 -0
@@ -1,6 +1,10 @@
1
1
  import * as plugins from './plugins.js';
2
+ import type { TAuthSwitchLoginPrompt } from './authority-contract.js';
3
+ import type { IAuthSwitchStoredUsage } from './classes.authorityusage.js';
2
4
  export interface IStoredAuthorityMeta {
3
5
  id: 'authswitch-authority';
6
+ schemaVersion: 2;
7
+ admission: 'open' | 'closed_restored';
4
8
  epoch: string;
5
9
  revision: number;
6
10
  updateId: string;
@@ -29,7 +33,7 @@ export interface IStoredAuthorityGrant {
29
33
  providerId: string;
30
34
  purpose: TStoredGrantPurpose;
31
35
  audience: string;
32
- state: 'ready' | 'exchange_may_have_been_sent' | 'retry_wait' | 'needs_reauth' | 'native' | 'legacy_native_pending' | 'removed';
36
+ state: 'ready' | 'exchange_may_have_been_sent' | 'retry_wait' | 'needs_reauth' | 'native' | 'legacy_native_pending' | 'handoff_pending' | 'handoff_quarantined' | 'removed';
33
37
  owner: 'daemon' | 'claude_native' | 'legacy_native' | 'none';
34
38
  grantGeneration: number;
35
39
  authorizationGeneration: number;
@@ -43,6 +47,13 @@ export interface IStoredAuthorityGrant {
43
47
  statusObservedAt: string;
44
48
  updateId: string;
45
49
  }
50
+ /** Credential-free provider usage cached for one exact account/login pair. */
51
+ export interface IStoredAuthorityUsage extends IAuthSwitchStoredUsage {
52
+ id: string;
53
+ accountId: string;
54
+ loginId: string;
55
+ }
56
+ export declare const authorityUsageId: (accountId: string, loginId: string) => string;
46
57
  export interface IStoredAuthorityBinding {
47
58
  id: string;
48
59
  accountId: string;
@@ -67,6 +78,7 @@ export interface IStoredAuthorityEnrollment {
67
78
  export interface IStoredAuthorityCodexHome {
68
79
  id: string;
69
80
  accountId: string;
81
+ grantId: string;
70
82
  scopeId: string;
71
83
  activeRun: {
72
84
  id: string;
@@ -77,6 +89,48 @@ export interface IStoredAuthorityCodexHome {
77
89
  createdAt: string;
78
90
  updateId: string;
79
91
  }
92
+ /** One vendor home owns at most one active Claude grant; activeGrantId has a unique index. */
93
+ export interface IStoredAuthorityClaudeHome {
94
+ id: string;
95
+ activeAccountId: string;
96
+ activeGrantId: string;
97
+ pendingOperationId: string | null;
98
+ status: 'ready' | 'quarantined';
99
+ revision: number;
100
+ createdAt: string;
101
+ updateId: string;
102
+ }
103
+ export interface IStoredAuthorityNativePair {
104
+ credentialDigest: string | null;
105
+ configDigest: string | null;
106
+ }
107
+ export interface IStoredAuthorityNativeIdentity {
108
+ accountUuid: string;
109
+ organizationUuid: string;
110
+ }
111
+ /** Backend-only proof for one exact two-grant native transfer. */
112
+ export interface IStoredAuthorityClaudeHandoff {
113
+ id: string;
114
+ homeId: string;
115
+ outgoingAccountId: string;
116
+ outgoingGrantId: string;
117
+ incomingAccountId: string;
118
+ incomingGrantId: string;
119
+ phase: 'reserved' | 'prepared' | 'committed' | 'aborted' | 'quarantined';
120
+ before: IStoredAuthorityNativePair | null;
121
+ after: IStoredAuthorityNativePair | null;
122
+ sourceIdentity: IStoredAuthorityNativeIdentity;
123
+ targetIdentity: IStoredAuthorityNativeIdentity;
124
+ sourceAccessDigest: string | null;
125
+ targetAccessDigest: string | null;
126
+ sealedOutgoing: string | null;
127
+ runningEffectiveAuth: 'no_scoped_sessions' | 'unsupported_effective_auth' | null;
128
+ problem: 'none' | 'native_uncertain' | 'foreign_or_torn' | 'unsupported_effective_auth' | 'database_uncertain';
129
+ startedAt: string;
130
+ updatedAt: string;
131
+ revision: number;
132
+ updateId: string;
133
+ }
80
134
  /** Journal for a native-home handoff. A prepared grant is never usable. */
81
135
  export interface IStoredAuthorityHandoff {
82
136
  id: string;
@@ -115,18 +169,110 @@ export interface IStoredAuthorityEvent {
115
169
  kind: 'account' | 'binding';
116
170
  accountId: string;
117
171
  }
172
+ /** A device flow and its immutable result receipt. Provider work is never resumed from this record. */
173
+ export interface IStoredAuthorityDeviceOperation {
174
+ id: string;
175
+ kind: 'add_openai' | 'reauth_openai';
176
+ purpose: 'openai_managed';
177
+ accountId: string | null;
178
+ grantId: string | null;
179
+ expectedGrantGeneration: number | null;
180
+ state: 'starting' | 'pending' | 'committing' | 'complete' | 'failed' | 'cancelled' | 'interrupted' | 'outcome_unknown';
181
+ prompt: TAuthSwitchLoginPrompt | null;
182
+ result: {
183
+ accountId: string;
184
+ grantId: string;
185
+ accountRevision: number;
186
+ grantGeneration: number;
187
+ } | null;
188
+ error: string | null;
189
+ commitId: string | null;
190
+ createdAt: string;
191
+ updatedAt: string;
192
+ finishedAt: string | null;
193
+ revision: number;
194
+ updateId: string;
195
+ }
196
+ export type TStoredAuthorityPreuseProblem = 'none' | 'target_unavailable' | 'access_unavailable' | 'catalog_unavailable' | 'account_busy' | 'cancelled' | 'authority_closing' | 'interrupted' | 'request_uncertain' | 'restored_history_uncertain';
197
+ /** One quota-consuming request. The prompt and generated prose never enter persistence. */
198
+ export interface IStoredAuthorityPreuseOperation {
199
+ id: string;
200
+ kind: 'preuse_openai';
201
+ purpose: 'openai_managed';
202
+ accountId: string;
203
+ grantId: string;
204
+ /** Hash of the exact target, prompt and requested model; used only for idempotent admission. */
205
+ requestHash: string;
206
+ requestedModel: string | null;
207
+ model: string | null;
208
+ authorizationGeneration: number;
209
+ grantGeneration: number | null;
210
+ state: 'preparing' | 'request_may_have_started' | 'complete' | 'not_sent' | 'outcome_unknown';
211
+ result: {
212
+ inputTokens: number | null;
213
+ outputTokens: number | null;
214
+ totalTokens: number | null;
215
+ } | null;
216
+ problem: TStoredAuthorityPreuseProblem;
217
+ createdAt: string;
218
+ updatedAt: string;
219
+ finishedAt: string | null;
220
+ revision: number;
221
+ updateId: string;
222
+ }
223
+ export type IStoredAuthorityOperation = IStoredAuthorityDeviceOperation | IStoredAuthorityPreuseOperation;
224
+ /** Decorated storage fields shared by the two exact discriminated operation variants. */
225
+ export interface IStoredAuthorityOperationDocument {
226
+ id: string;
227
+ kind: IStoredAuthorityOperation['kind'];
228
+ purpose: 'openai_managed';
229
+ accountId: string | null;
230
+ grantId: string | null;
231
+ expectedGrantGeneration?: number | null;
232
+ state: IStoredAuthorityOperation['state'];
233
+ prompt?: TAuthSwitchLoginPrompt | null;
234
+ result: IStoredAuthorityOperation['result'];
235
+ error?: string | null;
236
+ commitId?: string | null;
237
+ requestHash?: string;
238
+ requestedModel?: string | null;
239
+ model?: string | null;
240
+ authorizationGeneration?: number;
241
+ grantGeneration?: number | null;
242
+ problem?: TStoredAuthorityPreuseProblem;
243
+ createdAt: string;
244
+ updatedAt: string;
245
+ finishedAt: string | null;
246
+ revision: number;
247
+ updateId: string;
248
+ }
249
+ export declare const assertStoredAuthorityUsage: (value: unknown) => asserts value is IStoredAuthorityUsage;
118
250
  export declare const assertStoredAuthorityMeta: (value: unknown) => asserts value is IStoredAuthorityMeta;
119
251
  export declare const assertStoredAuthorityAccount: (value: unknown) => asserts value is IStoredAuthorityAccount;
120
252
  export declare const assertStoredAuthorityGrant: (value: unknown) => asserts value is IStoredAuthorityGrant;
121
253
  export declare const assertStoredAuthorityBinding: (value: unknown) => asserts value is IStoredAuthorityBinding;
122
254
  export declare const assertStoredAuthorityEnrollment: (value: unknown) => asserts value is IStoredAuthorityEnrollment;
123
255
  export declare const assertStoredAuthorityCodexHome: (value: unknown) => asserts value is IStoredAuthorityCodexHome;
256
+ export declare const assertStoredAuthorityClaudeHome: (value: unknown) => asserts value is IStoredAuthorityClaudeHome;
257
+ export declare const assertStoredAuthorityClaudeHandoff: (value: unknown) => asserts value is IStoredAuthorityClaudeHandoff;
124
258
  export declare const assertStoredAuthorityHandoff: (value: unknown) => asserts value is IStoredAuthorityHandoff;
125
259
  export declare const assertStoredAuthorityMigrationLedger: (value: unknown) => asserts value is IStoredAuthorityMigrationLedger;
126
260
  export declare const assertStoredAuthorityEvent: (value: unknown) => asserts value is IStoredAuthorityEvent;
261
+ export declare const assertStoredAuthorityOperation: (value: unknown) => asserts value is IStoredAuthorityOperation;
262
+ export declare const assertStoredAuthorityOperationDocument: (value: unknown) => asserts value is IStoredAuthorityOperationDocument;
263
+ /**
264
+ * Converts unresolved snapshot history into an immutable restored receipt. A live restart has stronger
265
+ * evidence and is handled separately: a snapshot captured in `preparing` may have sent after capture.
266
+ */
267
+ export declare const restoreStoredAuthorityOperation: (operation: IStoredAuthorityOperation, options: {
268
+ restoredAt: string;
269
+ updateId: string;
270
+ }) => IStoredAuthorityOperation;
127
271
  export declare class AuthSwitchAuthorityMetaModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityMetaModel, IStoredAuthorityMeta> {
128
272
  static exact: plugins.smartdata.TExact<AuthSwitchAuthorityMetaModel>;
129
273
  id: 'authswitch-authority';
274
+ schemaVersion: 2;
275
+ admission: IStoredAuthorityMeta['admission'];
130
276
  epoch: string;
131
277
  revision: number;
132
278
  updateId: string;
@@ -168,6 +314,22 @@ export declare class AuthSwitchAuthorityGrantModel extends plugins.smartdata.Sma
168
314
  statusObservedAt: string;
169
315
  updateId: string;
170
316
  }
317
+ export declare class AuthSwitchAuthorityUsageModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityUsageModel, IStoredAuthorityUsage> {
318
+ static exact: plugins.smartdata.TExact<AuthSwitchAuthorityUsageModel>;
319
+ id: string;
320
+ accountId: string;
321
+ loginId: string;
322
+ context: IAuthSwitchStoredUsage['context'];
323
+ updateId: string;
324
+ reading: IAuthSwitchStoredUsage['reading'];
325
+ observedAt: string | null;
326
+ currentUntil: string | null;
327
+ staleUntil: string | null;
328
+ lastAttemptAt: string;
329
+ nextAttemptAt: string;
330
+ failures: number;
331
+ problem: IAuthSwitchStoredUsage['problem'];
332
+ }
171
333
  export declare class AuthSwitchAuthorityBindingModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityBindingModel, IStoredAuthorityBinding> {
172
334
  static exact: plugins.smartdata.TExact<AuthSwitchAuthorityBindingModel>;
173
335
  id: string;
@@ -193,11 +355,46 @@ export declare class AuthSwitchAuthorityCodexHomeModel extends plugins.smartdata
193
355
  static exact: plugins.smartdata.TExact<AuthSwitchAuthorityCodexHomeModel>;
194
356
  id: string;
195
357
  accountId: string;
358
+ grantId: string;
196
359
  scopeId: string;
197
360
  activeRun: IStoredAuthorityCodexHome['activeRun'];
198
361
  createdAt: string;
199
362
  updateId: string;
200
363
  }
364
+ export declare class AuthSwitchAuthorityClaudeHomeModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityClaudeHomeModel, IStoredAuthorityClaudeHome> {
365
+ static exact: plugins.smartdata.TExact<AuthSwitchAuthorityClaudeHomeModel>;
366
+ id: string;
367
+ activeAccountId: string;
368
+ activeGrantId: string;
369
+ pendingOperationId: string | null;
370
+ status: IStoredAuthorityClaudeHome['status'];
371
+ revision: number;
372
+ createdAt: string;
373
+ updateId: string;
374
+ }
375
+ export declare class AuthSwitchAuthorityClaudeHandoffModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityClaudeHandoffModel, IStoredAuthorityClaudeHandoff> {
376
+ static exact: plugins.smartdata.TExact<AuthSwitchAuthorityClaudeHandoffModel>;
377
+ id: string;
378
+ homeId: string;
379
+ outgoingAccountId: string;
380
+ outgoingGrantId: string;
381
+ incomingAccountId: string;
382
+ incomingGrantId: string;
383
+ phase: IStoredAuthorityClaudeHandoff['phase'];
384
+ before: IStoredAuthorityNativePair | null;
385
+ after: IStoredAuthorityNativePair | null;
386
+ sourceIdentity: IStoredAuthorityNativeIdentity;
387
+ targetIdentity: IStoredAuthorityNativeIdentity;
388
+ sourceAccessDigest: string | null;
389
+ targetAccessDigest: string | null;
390
+ sealedOutgoing: string | null;
391
+ runningEffectiveAuth: IStoredAuthorityClaudeHandoff['runningEffectiveAuth'];
392
+ problem: IStoredAuthorityClaudeHandoff['problem'];
393
+ startedAt: string;
394
+ updatedAt: string;
395
+ revision: number;
396
+ updateId: string;
397
+ }
201
398
  export declare class AuthSwitchAuthorityHandoffModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityHandoffModel, IStoredAuthorityHandoff> {
202
399
  static exact: plugins.smartdata.TExact<AuthSwitchAuthorityHandoffModel>;
203
400
  id: string;
@@ -237,3 +434,28 @@ export declare class AuthSwitchAuthorityEventModel extends plugins.smartdata.Sma
237
434
  kind: IStoredAuthorityEvent['kind'];
238
435
  accountId: string;
239
436
  }
437
+ export declare class AuthSwitchAuthorityOperationModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityOperationModel, IStoredAuthorityOperationDocument> {
438
+ static exact: plugins.smartdata.TExact<AuthSwitchAuthorityOperationModel>;
439
+ id: string;
440
+ kind: IStoredAuthorityOperationDocument['kind'];
441
+ purpose: IStoredAuthorityOperation['purpose'];
442
+ accountId: string | null;
443
+ grantId: string | null;
444
+ expectedGrantGeneration?: number | null;
445
+ state: IStoredAuthorityOperationDocument['state'];
446
+ prompt?: TAuthSwitchLoginPrompt | null;
447
+ result: IStoredAuthorityOperationDocument['result'];
448
+ error?: string | null;
449
+ commitId?: string | null;
450
+ requestHash?: string;
451
+ requestedModel?: string | null;
452
+ model?: string | null;
453
+ authorizationGeneration?: number;
454
+ grantGeneration?: number | null;
455
+ problem?: TStoredAuthorityPreuseProblem;
456
+ createdAt: string;
457
+ updatedAt: string;
458
+ finishedAt: string | null;
459
+ revision: number;
460
+ updateId: string;
461
+ }