@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,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;
@@ -63,6 +74,63 @@ export interface IStoredAuthorityEnrollment {
63
74
  revision: number;
64
75
  updateId: string;
65
76
  }
77
+ /** An immutable assignment of one private native Codex state home to one account and runtime scope. */
78
+ export interface IStoredAuthorityCodexHome {
79
+ id: string;
80
+ accountId: string;
81
+ grantId: string;
82
+ scopeId: string;
83
+ activeRun: {
84
+ id: string;
85
+ socketPath: string;
86
+ pid: number | null;
87
+ startedAt: string | null;
88
+ } | null;
89
+ createdAt: string;
90
+ updateId: string;
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
+ }
66
134
  /** Journal for a native-home handoff. A prepared grant is never usable. */
67
135
  export interface IStoredAuthorityHandoff {
68
136
  id: string;
@@ -101,17 +169,110 @@ export interface IStoredAuthorityEvent {
101
169
  kind: 'account' | 'binding';
102
170
  accountId: string;
103
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;
104
250
  export declare const assertStoredAuthorityMeta: (value: unknown) => asserts value is IStoredAuthorityMeta;
105
251
  export declare const assertStoredAuthorityAccount: (value: unknown) => asserts value is IStoredAuthorityAccount;
106
252
  export declare const assertStoredAuthorityGrant: (value: unknown) => asserts value is IStoredAuthorityGrant;
107
253
  export declare const assertStoredAuthorityBinding: (value: unknown) => asserts value is IStoredAuthorityBinding;
108
254
  export declare const assertStoredAuthorityEnrollment: (value: unknown) => asserts value is IStoredAuthorityEnrollment;
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;
109
258
  export declare const assertStoredAuthorityHandoff: (value: unknown) => asserts value is IStoredAuthorityHandoff;
110
259
  export declare const assertStoredAuthorityMigrationLedger: (value: unknown) => asserts value is IStoredAuthorityMigrationLedger;
111
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;
112
271
  export declare class AuthSwitchAuthorityMetaModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityMetaModel, IStoredAuthorityMeta> {
113
272
  static exact: plugins.smartdata.TExact<AuthSwitchAuthorityMetaModel>;
114
273
  id: 'authswitch-authority';
274
+ schemaVersion: 2;
275
+ admission: IStoredAuthorityMeta['admission'];
115
276
  epoch: string;
116
277
  revision: number;
117
278
  updateId: string;
@@ -153,6 +314,22 @@ export declare class AuthSwitchAuthorityGrantModel extends plugins.smartdata.Sma
153
314
  statusObservedAt: string;
154
315
  updateId: string;
155
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
+ }
156
333
  export declare class AuthSwitchAuthorityBindingModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityBindingModel, IStoredAuthorityBinding> {
157
334
  static exact: plugins.smartdata.TExact<AuthSwitchAuthorityBindingModel>;
158
335
  id: string;
@@ -174,6 +351,50 @@ export declare class AuthSwitchAuthorityEnrollmentModel extends plugins.smartdat
174
351
  revision: number;
175
352
  updateId: string;
176
353
  }
354
+ export declare class AuthSwitchAuthorityCodexHomeModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityCodexHomeModel, IStoredAuthorityCodexHome> {
355
+ static exact: plugins.smartdata.TExact<AuthSwitchAuthorityCodexHomeModel>;
356
+ id: string;
357
+ accountId: string;
358
+ grantId: string;
359
+ scopeId: string;
360
+ activeRun: IStoredAuthorityCodexHome['activeRun'];
361
+ createdAt: string;
362
+ updateId: string;
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
+ }
177
398
  export declare class AuthSwitchAuthorityHandoffModel extends plugins.smartdata.SmartDataDbDoc<AuthSwitchAuthorityHandoffModel, IStoredAuthorityHandoff> {
178
399
  static exact: plugins.smartdata.TExact<AuthSwitchAuthorityHandoffModel>;
179
400
  id: string;
@@ -213,3 +434,28 @@ export declare class AuthSwitchAuthorityEventModel extends plugins.smartdata.Sma
213
434
  kind: IStoredAuthorityEvent['kind'];
214
435
  accountId: string;
215
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
+ }