dsh-coding-subscription-oauth 0.6.4 → 0.7.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 (151) hide show
  1. package/CHANGELOG.md +291 -255
  2. package/CONTRIBUTING.md +138 -129
  3. package/INSTALL.md +261 -256
  4. package/LICENSE +19 -19
  5. package/NOTICE +11 -11
  6. package/README.de.md +303 -303
  7. package/README.es.md +304 -304
  8. package/README.fr.md +304 -304
  9. package/README.ja.md +304 -304
  10. package/README.ko.md +304 -304
  11. package/README.md +321 -320
  12. package/README.pt-BR.md +304 -304
  13. package/README.ru.md +304 -304
  14. package/README.zh-CN.md +319 -318
  15. package/compatibility/dsh-bom.json +36 -30
  16. package/cordis.patch.yml +13 -13
  17. package/docs/00-project-rules.md +213 -212
  18. package/docs/02-architecture.md +142 -138
  19. package/docs/02-architecture.zh-CN.md +142 -138
  20. package/lib/auth-routes.d.ts +10 -1
  21. package/lib/auth-routes.d.ts.map +1 -1
  22. package/lib/bin.js +483 -50
  23. package/lib/bin.js.map +4 -4
  24. package/lib/client.js +5 -5
  25. package/lib/client.js.map +4 -4
  26. package/lib/compatibility.d.ts +0 -1
  27. package/lib/compatibility.d.ts.map +1 -1
  28. package/lib/gateway-protocol.d.ts +3 -46
  29. package/lib/gateway-protocol.d.ts.map +1 -1
  30. package/lib/gateway-routes.d.ts.map +1 -1
  31. package/lib/grok-errors.d.ts +2 -12
  32. package/lib/grok-errors.d.ts.map +1 -1
  33. package/lib/grok-imagine/client.d.ts +73 -0
  34. package/lib/grok-imagine/client.d.ts.map +1 -0
  35. package/lib/grok-imagine/index.d.ts +8 -0
  36. package/lib/grok-imagine/index.d.ts.map +1 -0
  37. package/lib/grok-imagine/net.d.ts +10 -0
  38. package/lib/grok-imagine/net.d.ts.map +1 -0
  39. package/lib/grok-imagine/parse.d.ts +20 -0
  40. package/lib/grok-imagine/parse.d.ts.map +1 -0
  41. package/lib/grok-imagine/types.d.ts +191 -0
  42. package/lib/grok-imagine/types.d.ts.map +1 -0
  43. package/lib/grok-imagine.d.ts +3 -263
  44. package/lib/grok-imagine.d.ts.map +1 -1
  45. package/lib/http-json.d.ts +2 -9
  46. package/lib/http-json.d.ts.map +1 -1
  47. package/lib/ids.d.ts +4 -0
  48. package/lib/ids.d.ts.map +1 -1
  49. package/lib/index.d.ts +2 -1
  50. package/lib/index.d.ts.map +1 -1
  51. package/lib/index.js +730 -196
  52. package/lib/index.js.map +4 -4
  53. package/lib/invariant.js.map +1 -1
  54. package/lib/kimi-errors.d.ts +2 -12
  55. package/lib/kimi-errors.d.ts.map +1 -1
  56. package/lib/oauth-session.d.ts +2 -0
  57. package/lib/oauth-session.d.ts.map +1 -1
  58. package/lib/session.d.ts +2 -0
  59. package/lib/session.d.ts.map +1 -1
  60. package/lib/store.d.ts +73 -1
  61. package/lib/store.d.ts.map +1 -1
  62. package/media/en/settings_accounts.png +0 -0
  63. package/media/en/settings_capabilities.png +0 -0
  64. package/media/en/settings_gateway.png +0 -0
  65. package/media/settings_accounts.png +0 -0
  66. package/media/settings_capabilities.png +0 -0
  67. package/media/settings_gateway.png +0 -0
  68. package/media/settings_overview.png +0 -0
  69. package/media/zh-CN/settings_accounts.png +0 -0
  70. package/media/zh-CN/settings_capabilities.png +0 -0
  71. package/media/zh-CN/settings_gateway.png +0 -0
  72. package/package.json +224 -221
  73. package/patches/dsh-agy@0.1.2.patch +25 -25
  74. package/scripts/release.mjs +187 -186
  75. package/scripts/smoke-deployed-routes.mjs +146 -146
  76. package/scripts/verify-deployed-catalog.mjs +87 -87
  77. package/src/adapter.ts +0 -348
  78. package/src/alias-adapter.ts +0 -147
  79. package/src/auth-routes.ts +0 -921
  80. package/src/auth.ts +0 -67
  81. package/src/bin.ts +0 -350
  82. package/src/capability-routes.ts +0 -279
  83. package/src/capability-runtime.ts +0 -314
  84. package/src/capability-settings.ts +0 -671
  85. package/src/capability-tools.ts +0 -685
  86. package/src/catalog.ts +0 -271
  87. package/src/client/GrokBuildSettings.tsx +0 -771
  88. package/src/client/api.ts +0 -88
  89. package/src/client/components/AboutTab.tsx +0 -30
  90. package/src/client/components/AccountsTab.tsx +0 -241
  91. package/src/client/components/Badge.tsx +0 -33
  92. package/src/client/components/CapabilitiesTab.tsx +0 -265
  93. package/src/client/components/CliPullPreview.tsx +0 -116
  94. package/src/client/components/CopyButton.tsx +0 -57
  95. package/src/client/components/GatewayTab.tsx +0 -469
  96. package/src/client/components/NoticeBanner.tsx +0 -46
  97. package/src/client/components/ProgressBar.tsx +0 -53
  98. package/src/client/components/ProviderCard.tsx +0 -606
  99. package/src/client/components/SettingsTabs.tsx +0 -75
  100. package/src/client/components/ToggleSwitch.tsx +0 -71
  101. package/src/client/constants.ts +0 -230
  102. package/src/client/display.ts +0 -61
  103. package/src/client/dshClientAdapter.ts +0 -127
  104. package/src/client/gatewaySnippets.ts +0 -37
  105. package/src/client/index.tsx +0 -156
  106. package/src/client/locales.ts +0 -540
  107. package/src/client/microStyles.ts +0 -52
  108. package/src/client/parsers.ts +0 -398
  109. package/src/client/styles.ts +0 -325
  110. package/src/client/types.ts +0 -199
  111. package/src/codex-http.ts +0 -447
  112. package/src/codex-images.ts +0 -503
  113. package/src/codex-model-capabilities.ts +0 -320
  114. package/src/codex-search.ts +0 -245
  115. package/src/codex-usage.ts +0 -263
  116. package/src/compatibility.ts +0 -55
  117. package/src/dsh-host-adapter.ts +0 -173
  118. package/src/gateway-anthropic-messages.ts +0 -84
  119. package/src/gateway-auth.ts +0 -102
  120. package/src/gateway-backend.ts +0 -274
  121. package/src/gateway-body.ts +0 -49
  122. package/src/gateway-config.ts +0 -76
  123. package/src/gateway-http.ts +0 -104
  124. package/src/gateway-openai-chat.ts +0 -124
  125. package/src/gateway-openai-responses.ts +0 -53
  126. package/src/gateway-parse.ts +0 -224
  127. package/src/gateway-protocol.ts +0 -52
  128. package/src/gateway-routes.ts +0 -158
  129. package/src/gateway.ts +0 -258
  130. package/src/grok-errors.ts +0 -24
  131. package/src/grok-imagine.ts +0 -1627
  132. package/src/grok-import.ts +0 -151
  133. package/src/http-json.ts +0 -82
  134. package/src/ids.ts +0 -59
  135. package/src/imagine-routes.ts +0 -463
  136. package/src/index.ts +0 -735
  137. package/src/invariant.ts +0 -17
  138. package/src/kimi-errors.ts +0 -26
  139. package/src/media-store.ts +0 -927
  140. package/src/oauth-import-routes.ts +0 -324
  141. package/src/oauth-providers.ts +0 -152
  142. package/src/oauth-session.ts +0 -183
  143. package/src/oauth-sources.ts +0 -1104
  144. package/src/oauth.ts +0 -620
  145. package/src/provider.ts +0 -128
  146. package/src/proxy.ts +0 -11
  147. package/src/redact.ts +0 -72
  148. package/src/session.ts +0 -218
  149. package/src/store.ts +0 -217
  150. package/src/web-origin.ts +0 -296
  151. package/src/web-routes.ts +0 -38
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/invariant.ts"],
4
- "sourcesContent": ["/**\r\n * Package-owned invariant companion for `dsh-coding-subscription-oauth`.\r\n * @module dsh-coding-subscription-oauth/invariant\r\n */\r\n\r\nimport type { Context } from \"@deepseek-ai/cordis\";\r\nimport type { InvariantInstaller } from \"@deepseek-ai/dsh-invariants\";\r\n\r\nconst PACKAGE_NAME = \"dsh-coding-subscription-oauth\";\r\n\r\nexport const name = \"grok-build-invariant\";\r\nexport const inject = [\"invariants\"];\r\n\r\nconst install: InvariantInstaller = () => {};\r\n\r\nexport const apply = (ctx: Context): Promise<() => void> =>\r\n\tPromise.resolve(ctx.invariants.register(PACKAGE_NAME, install));\r\n"],
4
+ "sourcesContent": ["/**\n * Package-owned invariant companion for `dsh-coding-subscription-oauth`.\n * @module dsh-coding-subscription-oauth/invariant\n */\n\nimport type { Context } from \"@deepseek-ai/cordis\";\nimport type { InvariantInstaller } from \"@deepseek-ai/dsh-invariants\";\n\nconst PACKAGE_NAME = \"dsh-coding-subscription-oauth\";\n\nexport const name = \"grok-build-invariant\";\nexport const inject = [\"invariants\"];\n\nconst install: InvariantInstaller = () => {};\n\nexport const apply = (ctx: Context): Promise<() => void> =>\n\tPromise.resolve(ctx.invariants.register(PACKAGE_NAME, install));\n"],
5
5
  "mappings": ";;;AAQA,IAAM,eAAe;AAEd,IAAM,OAAO;AACb,IAAM,SAAS,CAAC,YAAY;AAEnC,IAAM,UAA8B,MAAM;AAAC;AAEpC,IAAM,QAAQ,CAAC,QACrB,QAAQ,QAAQ,IAAI,WAAW,SAAS,cAAc,OAAO,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,13 +1,3 @@
1
- /**
2
- * Kimi Code error remapping.
3
- * @module dsh-coding-subscription-oauth/kimi-errors
4
- */
5
- export declare function isMisclassifiedContextWindowError(detail: string): boolean;
6
- export declare function remapAuthFailureIfContextOverflow(failure: {
7
- message: string;
8
- code: string;
9
- }): {
10
- message: string;
11
- code: string;
12
- };
1
+ /** Compatibility facade — implementation lives in published `dsh-coding-oauth-core`. */
2
+ export { isMisclassifiedContextWindowError, remapAuthFailureIfContextOverflow, } from "dsh-coding-oauth-core/kimi-errors";
13
3
  //# sourceMappingURL=kimi-errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kimi-errors.d.ts","sourceRoot":"","sources":["../../src/kimi-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED,wBAAgB,iCAAiC,CAAC,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAC9F,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACb,CAGA"}
1
+ {"version":3,"file":"kimi-errors.d.ts","sourceRoot":"","sources":["../../src/kimi-errors.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAExF,OAAO,EACN,iCAAiC,EACjC,iCAAiC,GACjC,MAAM,mCAAmC,CAAC"}
@@ -33,6 +33,8 @@ export declare class OAuthProviderSession {
33
33
  * Called after an upstream 401 rejected a locally-valid token.
34
34
  */
35
35
  invalidateAccessToken(): Promise<void>;
36
+ /** Refresh host discovery after an account switch/remove without a full logout. */
37
+ notifyCredentialChange(): void;
36
38
  storedCredential(): Promise<OAuthCredential | undefined>;
37
39
  logout(): Promise<void>;
38
40
  private writeCache;
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-session.d.ts","sourceRoot":"","sources":["../../src/oauth-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EACX,GAAG,EACH,eAAe,EACf,UAAU,EACV,KAAK,EACL,aAAa,EACb,eAAe,EACf,QAAQ,EACR,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAuB,MAAM,YAAY,CAAC;AAgC3E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED,MAAM,WAAW,mBAAmB;IACnC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,oBAAoB;IAQ/B,QAAQ,CAAC,UAAU,EAAE,uBAAuB;IAP7C,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAuB;gBAGhC,UAAU,EAAE,uBAAuB,EAC5C,eAAe,CAAC,EAAE,MAAM,IAAI,EAC5B,KAAK,GAAE,wBAIN,EACD,SAAS,GAAE,MAA6D;IAWzE,OAAO,CAAC,eAAe,CAA2B;IAElD,eAAe,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAI/B,gBAAgB,IAAI,MAAM,EAAE,GAAG,SAAS;IAIxC,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAS7B,QAAQ,IAAI,QAAQ;IAId,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC,iBAAiB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxD,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMtC,KAAK,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAMxD,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOvD;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,gBAAgB,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAKxD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAaf,UAAU;CAWxB"}
1
+ {"version":3,"file":"oauth-session.d.ts","sourceRoot":"","sources":["../../src/oauth-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EACX,GAAG,EACH,eAAe,EACf,UAAU,EACV,KAAK,EACL,aAAa,EACb,eAAe,EACf,QAAQ,EACR,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAuB,MAAM,YAAY,CAAC;AAgC3E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED,MAAM,WAAW,mBAAmB;IACnC,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,oBAAoB;IAQ/B,QAAQ,CAAC,UAAU,EAAE,uBAAuB;IAP7C,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,WAAW,CAAuB;gBAGhC,UAAU,EAAE,uBAAuB,EAC5C,eAAe,CAAC,EAAE,MAAM,IAAI,EAC5B,KAAK,GAAE,wBAIN,EACD,SAAS,GAAE,MAA6D;IAWzE,OAAO,CAAC,eAAe,CAA2B;IAElD,eAAe,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAI/B,gBAAgB,IAAI,MAAM,EAAE,GAAG,SAAS;IAIxC,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAS7B,QAAQ,IAAI,QAAQ;IAId,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQjC,iBAAiB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQxD,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAMtC,KAAK,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IAMxD,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAOvD;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C,mFAAmF;IACnF,sBAAsB,IAAI,IAAI;IAIxB,gBAAgB,IAAI,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAKxD,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAaf,UAAU;CAWxB"}
package/lib/session.d.ts CHANGED
@@ -34,6 +34,8 @@ export declare class GrokBuildSession {
34
34
  * Called after an upstream 401 rejected a locally-valid token.
35
35
  */
36
36
  invalidateAccessToken(): Promise<void>;
37
+ /** Refresh host discovery after an account switch/remove without a full logout. */
38
+ notifyCredentialChange(): void;
37
39
  logout(): Promise<void>;
38
40
  private writeCache;
39
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjF,OAAO,EACN,KAAK,aAAa,EAKlB,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAsDtD,4EAA4E;AAC5E,qBAAa,gBAAgB;IAC5B,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,eAAe,CAA2B;gBAEtC,KAAK,GAAE,wBAAyD,EAAE,eAAe,CAAC,EAAE,MAAM,IAAI;IAW1G,4DAA4D;IAC5D,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED,eAAe,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAI/B,gBAAgB,IAAI,MAAM,EAAE,GAAG,SAAS;IAIxC,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAO7B,kFAAkF;IAClF,QAAQ,IAAI,QAAQ;IASd,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAelC,kBAAkB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvD,iBAAiB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBf,UAAU;CAaxB"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjF,OAAO,EACN,KAAK,aAAa,EAKlB,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAsDtD,4EAA4E;AAC5E,qBAAa,gBAAgB;IAC5B,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,UAAU,CAA6C;IAC/D,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,eAAe,CAA2B;gBAEtC,KAAK,GAAE,wBAAyD,EAAE,eAAe,CAAC,EAAE,MAAM,IAAI;IAW1G,4DAA4D;IAC5D,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAErC;IAED,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED,eAAe,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAI/B,gBAAgB,IAAI,MAAM,EAAE,GAAG,SAAS;IAIxC,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;IAO7B,kFAAkF;IAClF,QAAQ,IAAI,QAAQ;IASd,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAelC,kBAAkB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvD,iBAAiB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9D;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5C,mFAAmF;IACnF,sBAAsB,IAAI,IAAI;IAIxB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBf,UAAU;CAaxB"}
package/lib/store.d.ts CHANGED
@@ -2,7 +2,43 @@
2
2
  * Owner-only persistent OAuth credential storage for coding-subscription routes.
3
3
  * @module dsh-coding-subscription-oauth/store
4
4
  */
5
- import type { Credential, CredentialInfo, CredentialStore } from "@earendil-works/pi-ai";
5
+ import type { Credential, CredentialInfo, CredentialStore, OAuthCredential } from "@earendil-works/pi-ai";
6
+ /** On-disk multi-account format. Readers still accept v1 and migrate under lock. */
7
+ declare const AUTH_FORMAT_VERSION: 2;
8
+ /** Operator-owned account hard cap (Settings + store). Aligned with Hub. */
9
+ export declare const OAUTH_MAX_ACCOUNTS = 8;
10
+ /** How a login or import writes into the multi-account document. */
11
+ export type LoginPersistMode = "add" | "overwrite-active";
12
+ export interface LoginPersistOptions {
13
+ mode: LoginPersistMode;
14
+ confirmOverwrite?: boolean;
15
+ }
16
+ /** Non-empty account id; max 128; restricted charset for path-safe operator labels. */
17
+ export type AccountId = string;
18
+ export interface AccountRecord {
19
+ id: AccountId;
20
+ label?: string;
21
+ credential: OAuthCredential;
22
+ createdAt: number;
23
+ }
24
+ export interface AuthDocumentV2 {
25
+ version: typeof AUTH_FORMAT_VERSION;
26
+ activeAccountId: AccountId;
27
+ accounts: AccountRecord[];
28
+ }
29
+ /** Non-secret row for Settings account lists. Never includes tokens. */
30
+ export interface AccountSummary {
31
+ id: AccountId;
32
+ label?: string;
33
+ expires: number;
34
+ accountId?: string;
35
+ }
36
+ export declare function isValidAccountId(value: unknown): value is AccountId;
37
+ /**
38
+ * Prefer provider `credential.accountId` when path-safe; otherwise mint a unique
39
+ * operator id so multiple anonymous logins do not collide on `legacy`.
40
+ */
41
+ export declare function resolveAccountIdForCredential(credential: OAuthCredential): AccountId;
6
42
  /** Resolve one private OAuth document path beneath DSH_HOME. */
7
43
  export declare function oauthCredentialPath(basename: string, dshHome?: string): string;
8
44
  /** Resolve the legacy Grok Build OAuth document path. */
@@ -10,11 +46,14 @@ export declare function grokBuildAuthPath(dshHome?: string): string;
10
46
  /**
11
47
  * File-backed pi-ai store scoped to exactly one provider id. Separate provider
12
48
  * files prevent one corrupted or rotated credential from affecting another.
49
+ * On disk the file may hold up to eight operator-owned accounts; CredentialStore
50
+ * methods always project the active account only.
13
51
  */
14
52
  export declare class OAuthCredentialFileStore implements CredentialStore {
15
53
  readonly providerId: string;
16
54
  private readonly label;
17
55
  readonly filename: string;
56
+ private loginPersist;
18
57
  constructor(providerId: string, filename: string, label: string);
19
58
  private readCurrent;
20
59
  /**
@@ -23,11 +62,22 @@ export declare class OAuthCredentialFileStore implements CredentialStore {
23
62
  * Unsafe/symlink/wrong-owner/too-large files still throw.
24
63
  */
25
64
  private loadCurrent;
65
+ private loadDocument;
26
66
  /** Refuse a dest that became unsafe after the lock was taken and before rename. */
27
67
  private assertDestinationReplaceable;
68
+ private writeDocument;
69
+ private nextDocumentAfterLogin;
70
+ private mutateDocument;
28
71
  read(providerId: string): Promise<Credential | undefined>;
29
72
  list(): Promise<readonly CredentialInfo[]>;
30
73
  modify(providerId: string, fn: (current: Credential | undefined) => Promise<Credential | undefined>): Promise<Credential | undefined>;
74
+ /**
75
+ * Redirect `modify` writes (pi-ai `models.login`) through multi-account upsert
76
+ * semantics for the duration of `fn`.
77
+ */
78
+ runLoginPersist<T>(options: LoginPersistOptions, fn: () => Promise<T>): Promise<T>;
79
+ /** Persist a login/import credential without going through pi-ai `modify`. */
80
+ persistLoginCredential(credential: OAuthCredential, options: LoginPersistOptions): Promise<void>;
31
81
  /**
32
82
  * Force the next `getAuth()` to refresh by backdating `expires` into the past.
33
83
  * Used after an upstream 401: the stored access token was rejected even though
@@ -38,9 +88,31 @@ export declare class OAuthCredentialFileStore implements CredentialStore {
38
88
  */
39
89
  invalidate(providerId: string): Promise<boolean>;
40
90
  delete(providerId: string): Promise<void>;
91
+ /** Read-only account list for Settings / API. Never includes tokens. */
92
+ listAccounts(): Promise<readonly AccountSummary[]>;
93
+ getActiveAccountId(): Promise<string | undefined>;
94
+ /**
95
+ * Read one account's credential without changing activeAccountId.
96
+ * Used by the optional quota-aware pool proxy for sticky per-request routing.
97
+ */
98
+ readAccount(id: string): Promise<OAuthCredential | undefined>;
99
+ /**
100
+ * Serialized refresh/write for one account id. Does not move activeAccountId.
101
+ * Returns undefined when the account is absent (caller treats as missing credential).
102
+ */
103
+ modifyAccount(id: string, fn: (current: Credential | undefined) => Promise<Credential | undefined>): Promise<Credential | undefined>;
104
+ setActiveAccount(id: string): Promise<void>;
105
+ upsertAccount(input: {
106
+ id: string;
107
+ label?: string;
108
+ credential: OAuthCredential;
109
+ makeActive?: boolean;
110
+ }): Promise<void>;
111
+ removeAccount(id: string): Promise<void>;
41
112
  }
42
113
  /** Legacy-named store retained for existing imports and credential migration. */
43
114
  export declare class GrokBuildCredentialStore extends OAuthCredentialFileStore {
44
115
  constructor(filename?: string);
45
116
  }
117
+ export {};
46
118
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAmB,MAAM,uBAAuB,CAAC;AAgE1G,gEAAgE;AAChE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAW9E;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,eAAe;IAI9D,QAAQ,CAAC,UAAU,EAAE,MAAM;IAE3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IALvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAGhB,UAAU,EAAE,MAAM,EAC3B,QAAQ,EAAE,MAAM,EACC,KAAK,EAAE,MAAM;YAKjB,WAAW;IAIzB;;;;OAIG;YACW,WAAW;IAmBzB,mFAAmF;YACrE,4BAA4B;IAYpC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IAIzD,IAAI,IAAI,OAAO,CAAC,SAAS,cAAc,EAAE,CAAC;IAI1C,MAAM,CACX,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,KAAK,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,GACtE,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IA0BlC;;;;;;;OAOG;IACG,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhD,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK/C;AAED,iFAAiF;AACjF,qBAAa,wBAAyB,SAAQ,wBAAwB;gBACzD,QAAQ,GAAE,MAA4B;CAGlD"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store.ts"],"names":[],"mappings":"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"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes