dsh-coding-subscription-oauth 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/CHANGELOG.md +136 -0
  2. package/CONTRIBUTING.md +109 -0
  3. package/INSTALL.md +220 -0
  4. package/LICENSE +19 -0
  5. package/NOTICE +11 -0
  6. package/README.de.md +254 -0
  7. package/README.es.md +254 -0
  8. package/README.fr.md +254 -0
  9. package/README.ja.md +254 -0
  10. package/README.ko.md +254 -0
  11. package/README.md +286 -0
  12. package/README.pt-BR.md +254 -0
  13. package/README.ru.md +254 -0
  14. package/README.zh-CN.md +271 -0
  15. package/cordis.patch.yml +13 -0
  16. package/docs/00-project-rules.md +195 -0
  17. package/docs/02-architecture.md +132 -0
  18. package/docs/02-architecture.zh-CN.md +128 -0
  19. package/lib/adapter.d.ts +24 -0
  20. package/lib/adapter.d.ts.map +1 -0
  21. package/lib/alias-adapter.d.ts +43 -0
  22. package/lib/alias-adapter.d.ts.map +1 -0
  23. package/lib/auth-routes.d.ts +155 -0
  24. package/lib/auth-routes.d.ts.map +1 -0
  25. package/lib/auth.d.ts +29 -0
  26. package/lib/auth.d.ts.map +1 -0
  27. package/lib/bin.d.ts +6 -0
  28. package/lib/bin.d.ts.map +1 -0
  29. package/lib/bin.js +27591 -0
  30. package/lib/bin.js.map +7 -0
  31. package/lib/capability-routes.d.ts +43 -0
  32. package/lib/capability-routes.d.ts.map +1 -0
  33. package/lib/capability-runtime.d.ts +56 -0
  34. package/lib/capability-runtime.d.ts.map +1 -0
  35. package/lib/capability-settings.d.ts +263 -0
  36. package/lib/capability-settings.d.ts.map +1 -0
  37. package/lib/capability-tools.d.ts +50 -0
  38. package/lib/capability-tools.d.ts.map +1 -0
  39. package/lib/catalog.d.ts +53 -0
  40. package/lib/catalog.d.ts.map +1 -0
  41. package/lib/client.js +3 -0
  42. package/lib/client.js.map +7 -0
  43. package/lib/codex-http.d.ts +77 -0
  44. package/lib/codex-http.d.ts.map +1 -0
  45. package/lib/codex-images.d.ts +109 -0
  46. package/lib/codex-images.d.ts.map +1 -0
  47. package/lib/codex-model-capabilities.d.ts +112 -0
  48. package/lib/codex-model-capabilities.d.ts.map +1 -0
  49. package/lib/codex-search.d.ts +96 -0
  50. package/lib/codex-search.d.ts.map +1 -0
  51. package/lib/codex-usage.d.ts +79 -0
  52. package/lib/codex-usage.d.ts.map +1 -0
  53. package/lib/gateway-anthropic-messages.d.ts +8 -0
  54. package/lib/gateway-anthropic-messages.d.ts.map +1 -0
  55. package/lib/gateway-auth.d.ts +22 -0
  56. package/lib/gateway-auth.d.ts.map +1 -0
  57. package/lib/gateway-backend.d.ts +62 -0
  58. package/lib/gateway-backend.d.ts.map +1 -0
  59. package/lib/gateway-body.d.ts +9 -0
  60. package/lib/gateway-body.d.ts.map +1 -0
  61. package/lib/gateway-config.d.ts +24 -0
  62. package/lib/gateway-config.d.ts.map +1 -0
  63. package/lib/gateway-http.d.ts +16 -0
  64. package/lib/gateway-http.d.ts.map +1 -0
  65. package/lib/gateway-openai-chat.d.ts +8 -0
  66. package/lib/gateway-openai-chat.d.ts.map +1 -0
  67. package/lib/gateway-openai-responses.d.ts +8 -0
  68. package/lib/gateway-openai-responses.d.ts.map +1 -0
  69. package/lib/gateway-parse.d.ts +10 -0
  70. package/lib/gateway-parse.d.ts.map +1 -0
  71. package/lib/gateway-protocol.d.ts +47 -0
  72. package/lib/gateway-protocol.d.ts.map +1 -0
  73. package/lib/gateway-routes.d.ts +21 -0
  74. package/lib/gateway-routes.d.ts.map +1 -0
  75. package/lib/gateway.d.ts +48 -0
  76. package/lib/gateway.d.ts.map +1 -0
  77. package/lib/grok-imagine.d.ts +271 -0
  78. package/lib/grok-imagine.d.ts.map +1 -0
  79. package/lib/grok-import.d.ts +21 -0
  80. package/lib/grok-import.d.ts.map +1 -0
  81. package/lib/http-json.d.ts +10 -0
  82. package/lib/http-json.d.ts.map +1 -0
  83. package/lib/ids.d.ts +33 -0
  84. package/lib/ids.d.ts.map +1 -0
  85. package/lib/imagine-routes.d.ts +59 -0
  86. package/lib/imagine-routes.d.ts.map +1 -0
  87. package/lib/index.d.ts +69 -0
  88. package/lib/index.d.ts.map +1 -0
  89. package/lib/index.js +35355 -0
  90. package/lib/index.js.map +7 -0
  91. package/lib/invariant.d.ts +9 -0
  92. package/lib/invariant.d.ts.map +1 -0
  93. package/lib/invariant.js +14 -0
  94. package/lib/invariant.js.map +7 -0
  95. package/lib/kimi-errors.d.ts +13 -0
  96. package/lib/kimi-errors.d.ts.map +1 -0
  97. package/lib/media-store.d.ts +130 -0
  98. package/lib/media-store.d.ts.map +1 -0
  99. package/lib/oauth-import-routes.d.ts +52 -0
  100. package/lib/oauth-import-routes.d.ts.map +1 -0
  101. package/lib/oauth-providers.d.ts +26 -0
  102. package/lib/oauth-providers.d.ts.map +1 -0
  103. package/lib/oauth-session.d.ts +40 -0
  104. package/lib/oauth-session.d.ts.map +1 -0
  105. package/lib/oauth-sources.d.ts +205 -0
  106. package/lib/oauth-sources.d.ts.map +1 -0
  107. package/lib/oauth.d.ts +79 -0
  108. package/lib/oauth.d.ts.map +1 -0
  109. package/lib/provider.d.ts +38 -0
  110. package/lib/provider.d.ts.map +1 -0
  111. package/lib/proxy.d.ts +17 -0
  112. package/lib/proxy.d.ts.map +1 -0
  113. package/lib/redact.d.ts +5 -0
  114. package/lib/redact.d.ts.map +1 -0
  115. package/lib/session.d.ts +40 -0
  116. package/lib/session.d.ts.map +1 -0
  117. package/lib/store.d.ts +46 -0
  118. package/lib/store.d.ts.map +1 -0
  119. package/lib/web-origin.d.ts +10 -0
  120. package/lib/web-origin.d.ts.map +1 -0
  121. package/lib/web-routes.d.ts +20 -0
  122. package/lib/web-routes.d.ts.map +1 -0
  123. package/package.json +185 -0
  124. package/patches/dsh-agy@0.1.2.patch +25 -0
  125. package/scripts/release.mjs +166 -0
  126. package/scripts/smoke-deployed-routes.mjs +146 -0
  127. package/scripts/verify-deployed-catalog.mjs +87 -0
  128. package/src/adapter.ts +282 -0
  129. package/src/alias-adapter.ts +152 -0
  130. package/src/auth-routes.ts +871 -0
  131. package/src/auth.ts +67 -0
  132. package/src/bin.ts +350 -0
  133. package/src/capability-routes.ts +275 -0
  134. package/src/capability-runtime.ts +313 -0
  135. package/src/capability-settings.ts +657 -0
  136. package/src/capability-tools.ts +666 -0
  137. package/src/catalog.ts +271 -0
  138. package/src/client/GrokBuildSettings.tsx +2221 -0
  139. package/src/client/index.tsx +37 -0
  140. package/src/client/locales.ts +421 -0
  141. package/src/codex-http.ts +447 -0
  142. package/src/codex-images.ts +485 -0
  143. package/src/codex-model-capabilities.ts +320 -0
  144. package/src/codex-search.ts +245 -0
  145. package/src/codex-usage.ts +263 -0
  146. package/src/gateway-anthropic-messages.ts +84 -0
  147. package/src/gateway-auth.ts +100 -0
  148. package/src/gateway-backend.ts +274 -0
  149. package/src/gateway-body.ts +49 -0
  150. package/src/gateway-config.ts +76 -0
  151. package/src/gateway-http.ts +104 -0
  152. package/src/gateway-openai-chat.ts +124 -0
  153. package/src/gateway-openai-responses.ts +53 -0
  154. package/src/gateway-parse.ts +224 -0
  155. package/src/gateway-protocol.ts +52 -0
  156. package/src/gateway-routes.ts +152 -0
  157. package/src/gateway.ts +242 -0
  158. package/src/grok-imagine.ts +1627 -0
  159. package/src/grok-import.ts +151 -0
  160. package/src/http-json.ts +82 -0
  161. package/src/ids.ts +45 -0
  162. package/src/imagine-routes.ts +461 -0
  163. package/src/index.ts +598 -0
  164. package/src/invariant.ts +17 -0
  165. package/src/kimi-errors.ts +26 -0
  166. package/src/media-store.ts +927 -0
  167. package/src/oauth-import-routes.ts +314 -0
  168. package/src/oauth-providers.ts +152 -0
  169. package/src/oauth-session.ts +183 -0
  170. package/src/oauth-sources.ts +1104 -0
  171. package/src/oauth.ts +620 -0
  172. package/src/provider.ts +128 -0
  173. package/src/proxy.ts +99 -0
  174. package/src/redact.ts +72 -0
  175. package/src/session.ts +218 -0
  176. package/src/store.ts +217 -0
  177. package/src/web-origin.ts +60 -0
  178. package/src/web-routes.ts +75 -0
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Parse OpenAI / Anthropic request bodies into the gateway completion shape.
3
+ * @module dsh-coding-subscription-oauth/gateway-parse
4
+ */
5
+ import type { GatewayCompletionRequest } from "./gateway-protocol.js";
6
+ export declare function parseOpenAiChatRequest(payload: Record<string, unknown>): GatewayCompletionRequest;
7
+ export declare function parseOpenAiResponsesRequest(payload: Record<string, unknown>): GatewayCompletionRequest;
8
+ export declare function parseAnthropicMessagesRequest(payload: Record<string, unknown>): GatewayCompletionRequest;
9
+ export declare function anthropicMaxTokens(payload: Record<string, unknown>): number;
10
+ //# sourceMappingURL=gateway-parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-parse.d.ts","sourceRoot":"","sources":["../../src/gateway-parse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAsB,wBAAwB,EAAgC,MAAM,uBAAuB,CAAC;AAExH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,wBAAwB,CAUjG;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,wBAAwB,CAiBtG;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,wBAAwB,CAexG;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAI3E"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Shared request/stream types for the local coding-subscription gateway.
3
+ * @module dsh-coding-subscription-oauth/gateway-protocol
4
+ */
5
+ export interface GatewayToolCall {
6
+ id: string;
7
+ name: string;
8
+ arguments: string;
9
+ }
10
+ export interface GatewayTool {
11
+ name: string;
12
+ description: string;
13
+ parameters: Record<string, unknown>;
14
+ }
15
+ export interface GatewayChatMessage {
16
+ role: string;
17
+ content: string;
18
+ tool_calls?: readonly GatewayToolCall[];
19
+ reasoning_content?: string;
20
+ tool_call_id?: string;
21
+ tool_name?: string;
22
+ }
23
+ export interface GatewayCompletionRequest {
24
+ model: string;
25
+ messages: readonly GatewayChatMessage[];
26
+ tools?: readonly GatewayTool[];
27
+ reasoning?: string;
28
+ }
29
+ export type GatewayStreamPart = {
30
+ type: "text";
31
+ text: string;
32
+ } | {
33
+ type: "thinking";
34
+ text: string;
35
+ } | {
36
+ type: "tool_call";
37
+ index: number;
38
+ id: string;
39
+ name: string;
40
+ arguments: string;
41
+ } | {
42
+ type: "done";
43
+ finish: "stop" | "tool_calls" | "length";
44
+ };
45
+ export type GatewayThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
46
+ export declare function isThinkingLevel(value: string): value is GatewayThinkingLevel;
47
+ //# sourceMappingURL=gateway-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-protocol.d.ts","sourceRoot":"","sources":["../../src/gateway-protocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxC,KAAK,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAC1B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAEnG,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,oBAAoB,CAU5E"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Settings-facing routes for the opt-in local API gateway.
3
+ * @module dsh-coding-subscription-oauth/gateway-routes
4
+ */
5
+ import type { IncomingMessage, ServerResponse } from "node:http";
6
+ import type { CodingOAuthGatewayController } from "./gateway.js";
7
+ export declare const GATEWAY_SETTINGS_PATH = "/plugins/dsh-grok-build/gateway";
8
+ export declare const GATEWAY_REVEAL_PATH = "/plugins/dsh-grok-build/gateway/reveal";
9
+ export declare const GATEWAY_ROTATE_PATH = "/plugins/dsh-grok-build/gateway/rotate";
10
+ export interface GatewayRouteContext {
11
+ readonly webServer: {
12
+ register(route: {
13
+ kind: "exact" | "prefix";
14
+ path: string;
15
+ handler: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
16
+ }): () => void;
17
+ };
18
+ effect(callback: () => () => void | Promise<void>, label?: string): unknown;
19
+ }
20
+ export declare function registerGatewayRoutes(ctx: GatewayRouteContext, controller: CodingOAuthGatewayController): () => void;
21
+ //# sourceMappingURL=gateway-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-routes.d.ts","sourceRoot":"","sources":["../../src/gateway-routes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AAOjE,eAAO,MAAM,qBAAqB,oCAAoC,CAAC;AACvE,eAAO,MAAM,mBAAmB,2CAA2C,CAAC;AAC5E,eAAO,MAAM,mBAAmB,2CAA2C,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,SAAS,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE;YACf,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;YACzB,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;SAC7E,GAAG,MAAM,IAAI,CAAC;KACf,CAAC;IACF,MAAM,CAAC,QAAQ,EAAE,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5E;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,EAAE,UAAU,EAAE,4BAA4B,GAAG,MAAM,IAAI,CAuBpH"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Start, stop, and rotate the opt-in local coding-subscription API gateway.
3
+ * @module dsh-coding-subscription-oauth/gateway
4
+ */
5
+ import { type GatewayBackend } from "./gateway-backend.js";
6
+ import { type GatewayConfig } from "./gateway-config.js";
7
+ import type { OAuthProviderSession } from "./oauth-session.js";
8
+ import type { GrokBuildSession } from "./session.js";
9
+ export declare const GATEWAY_TOS_WARNING = "local API gateway is enabled; exposing a subscription as a local API can violate provider ToS and consumes your quota";
10
+ export interface StartGatewayOptions {
11
+ config?: Partial<GatewayConfig>;
12
+ dshHome?: string;
13
+ backend?: GatewayBackend;
14
+ grok?: GrokBuildSession;
15
+ subscriptions?: readonly OAuthProviderSession[];
16
+ onError?: (error: unknown) => void;
17
+ }
18
+ export interface StartedGateway {
19
+ close(): Promise<void>;
20
+ readonly bind: string;
21
+ readonly port: number;
22
+ }
23
+ export interface GatewayPublicStatus {
24
+ enabled: boolean;
25
+ running: boolean;
26
+ bind: string;
27
+ port: number;
28
+ keyHint: string;
29
+ warning: string;
30
+ }
31
+ export interface CodingOAuthGatewayController {
32
+ status(): Promise<GatewayPublicStatus>;
33
+ startIfEnabled(): Promise<StartedGateway | undefined>;
34
+ setEnabled(enabled: boolean): Promise<GatewayPublicStatus>;
35
+ setPort(port: number): Promise<GatewayPublicStatus>;
36
+ revealKey(): Promise<{
37
+ apiKey: string;
38
+ keyHint: string;
39
+ }>;
40
+ rotateKey(): Promise<{
41
+ apiKey: string;
42
+ keyHint: string;
43
+ }>;
44
+ stop(): Promise<void>;
45
+ }
46
+ export declare function startCodingOAuthGateway(options: StartGatewayOptions): Promise<StartedGateway | undefined>;
47
+ export declare function createCodingOAuthGatewayController(options: StartGatewayOptions): CodingOAuthGatewayController;
48
+ //# sourceMappingURL=gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/gateway.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAqB,KAAK,aAAa,EAAwB,MAAM,qBAAqB,CAAC;AAElG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,eAAO,MAAM,mBAAmB,0HACwF,CAAC;AAEzH,MAAM,WAAW,mBAAmB;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,4BAA4B;IAC5C,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvC,cAAc,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACtD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpD,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,SAAS,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACtB;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAG/G;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,mBAAmB,GAAG,4BAA4B,CAmL7G"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Official xAI Imagine client. Talks only to https://api.x.ai with a
3
+ * per-operation API-key resolver. Generated remote media is fetched under a
4
+ * pinned HTTPS/host/DNS allowlist and persisted locally; results never include
5
+ * a signed upstream URL.
6
+ * @module dsh-coding-subscription-oauth/grok-imagine
7
+ */
8
+ import { IMAGINE_MEDIA_ROUTE_PREFIX, imagineMediaPath, isTrustedImaginePeer, type MediaArtifactMeta, type MediaStore, type MediaStoreVideoType, type TrustedImagineAuthz } from "./media-store.js";
9
+ export declare const XAI_API_ORIGIN = "https://api.x.ai";
10
+ export declare const GROK_IMAGINE_IMAGE_PATH = "/v1/images/generations";
11
+ export declare const GROK_IMAGINE_VIDEO_START_PATH = "/v1/videos/generations";
12
+ export declare const GROK_IMAGINE_IMAGE_MODEL = "grok-imagine-image-2.0";
13
+ export declare const GROK_IMAGINE_VIDEO_MODEL = "grok-imagine-video-1.5";
14
+ export declare const GROK_IMAGINE_IMAGE_TOOL = "grok_imagine_image";
15
+ export declare const GROK_IMAGINE_VIDEO_TOOL = "grok_imagine_video";
16
+ export declare const GROK_IMAGINE_VIDEO_STATUS_TOOL = "grok_imagine_video_status";
17
+ export declare const IMAGINE_IMAGE_ROUTE_PREFIX = "/plugins/dsh-grok-build/imagine/images/";
18
+ /** Frozen xAI output hosts. Callers cannot widen this list. */
19
+ export declare const XAI_OUTPUT_HOSTS: readonly ["imgen.x.ai", "videogen.x.ai", "vidgen.x.ai"];
20
+ export declare const IMAGINE_IMAGE_RESOLUTIONS: readonly ["1k", "2k"];
21
+ export declare const IMAGINE_VIDEO_RESOLUTIONS: readonly ["480p", "720p", "1080p"];
22
+ export declare const IMAGINE_IMAGE_ASPECT_RATIOS: readonly ["1:1", "3:4", "4:3", "9:16", "16:9", "2:3", "3:2", "9:19.5", "19.5:9", "9:20", "20:9", "1:2", "2:1", "auto"];
23
+ export declare const IMAGINE_VIDEO_ASPECT_RATIOS: readonly ["1:1", "16:9", "9:16", "4:3", "3:4", "3:2", "2:3"];
24
+ export declare const IMAGINE_VIDEO_MIN_DURATION_SECONDS = 1;
25
+ export declare const IMAGINE_VIDEO_MAX_DURATION_SECONDS = 15;
26
+ export declare const IMAGINE_IMAGE_MAX_N = 10;
27
+ /**
28
+ * Hard ceilings enforced both at the tool boundary (consumer guard) and inside
29
+ * the Imagine client (defence-in-depth). The prompt ceiling uses UTF-16 code
30
+ * units because that is what the JSON wire format bounds; the image-id arrays
31
+ * are bounded so a runaway caller cannot exhaust the bounded body reader.
32
+ */
33
+ export declare const IMAGINE_PROMPT_MAX_LENGTH = 4000;
34
+ export declare const IMAGINE_IMAGE_IDS_MIN = 1;
35
+ export declare const IMAGINE_IMAGE_IDS_MAX = 5;
36
+ export declare const DEFAULT_IMAGE_DOWNLOAD_MAX_BYTES: number;
37
+ export declare const DEFAULT_API_TIMEOUT_MS = 30000;
38
+ export declare const DEFAULT_IMAGE_DOWNLOAD_TIMEOUT_MS = 15000;
39
+ export declare const DEFAULT_VIDEO_DOWNLOAD_TIMEOUT_MS = 60000;
40
+ export declare const DEFAULT_MAX_REDIRECTS = 3;
41
+ export declare const DEFAULT_API_JSON_MAX_BYTES: number;
42
+ export declare const MAX_CACHED_VIDEO_JOBS = 256;
43
+ export type ImagineOperation = "image.generate" | "video.start" | "video.status";
44
+ export type ImagineImageResolution = (typeof IMAGINE_IMAGE_RESOLUTIONS)[number];
45
+ export type ImagineVideoResolution = (typeof IMAGINE_VIDEO_RESOLUTIONS)[number];
46
+ export type ImagineImageAspectRatio = (typeof IMAGINE_IMAGE_ASPECT_RATIOS)[number];
47
+ export type ImagineVideoAspectRatio = (typeof IMAGINE_VIDEO_ASPECT_RATIOS)[number];
48
+ export type ImagineApiKeyResolver = (operation: ImagineOperation) => Promise<string>;
49
+ export type ImagineFetch = (input: string | URL, init?: RequestInit) => Promise<Response>;
50
+ export type ImagineDnsLookup = (hostname: string) => Promise<readonly string[]>;
51
+ export type ImagineImageMediaType = "image/png" | "image/jpeg" | "image/webp" | "image/gif";
52
+ export interface ImagineMediaHopRequest {
53
+ timeoutMs: number;
54
+ maxBytes: number;
55
+ accept: string;
56
+ signal?: AbortSignal;
57
+ }
58
+ export interface ImagineMediaHop {
59
+ status: number;
60
+ location?: string;
61
+ contentType?: string;
62
+ data?: Uint8Array;
63
+ }
64
+ /** Single-hop GET. Must not follow redirects or attach credentials. */
65
+ export interface ImagineMediaTransport {
66
+ get(url: URL, request: ImagineMediaHopRequest): Promise<ImagineMediaHop>;
67
+ }
68
+ export interface ImagineDownloadRequest {
69
+ url: string;
70
+ timeoutMs: number;
71
+ maxBytes: number;
72
+ accept: string;
73
+ signal?: AbortSignal;
74
+ }
75
+ export interface ImagineDownloadResult {
76
+ data: Uint8Array;
77
+ contentType?: string;
78
+ }
79
+ /** Full download including redirect revalidation. Production default is pinned. */
80
+ export interface ImagineDownloader {
81
+ download(request: ImagineDownloadRequest): Promise<ImagineDownloadResult>;
82
+ }
83
+ export type GrokImagineErrorCode = "MISSING_CREDENTIAL" | "AUTH" | "QUOTA" | "RATE_LIMIT" | "SSRF" | "INVALID_INPUT" | "UPSTREAM" | "TIMEOUT" | "MEDIA";
84
+ export declare class GrokImagineError extends Error {
85
+ readonly code: GrokImagineErrorCode;
86
+ readonly status?: number;
87
+ constructor(code: GrokImagineErrorCode, message: string, options?: {
88
+ cause?: unknown;
89
+ status?: number;
90
+ });
91
+ }
92
+ export interface ImagineImageAttachmentRef {
93
+ attachmentId: string;
94
+ mediaType: ImagineImageMediaType;
95
+ bytes: number;
96
+ width: number;
97
+ height: number;
98
+ name?: string;
99
+ }
100
+ export interface ImagineImageLimits {
101
+ maxImageBytes?: number;
102
+ mediaTypes?: readonly string[];
103
+ }
104
+ /** Structural AttachmentStore surface used by Imagine. */
105
+ export interface ImagineAttachmentStore {
106
+ imageLimits?: ImagineImageLimits;
107
+ saveImage(input: {
108
+ data: Uint8Array;
109
+ mediaType: ImagineImageMediaType;
110
+ name?: string;
111
+ }): Promise<ImagineImageAttachmentRef>;
112
+ readImage?(ref: ImagineImageAttachmentRef, signal?: AbortSignal): Promise<{
113
+ ref: ImagineImageAttachmentRef;
114
+ data: Uint8Array;
115
+ }>;
116
+ }
117
+ export interface GenerateImagineImageInput {
118
+ prompt: string;
119
+ model?: string;
120
+ n?: number;
121
+ aspectRatio?: string;
122
+ resolution?: string;
123
+ name?: string;
124
+ }
125
+ export interface ImagineImageResult {
126
+ model: string;
127
+ images: readonly ImaginePersistedImage[];
128
+ attachment: ImagineImageAttachmentRef;
129
+ path: string;
130
+ }
131
+ export interface ImaginePersistedImage {
132
+ attachment: ImagineImageAttachmentRef;
133
+ path: string;
134
+ }
135
+ export interface StartImagineVideoInput {
136
+ prompt: string;
137
+ model?: string;
138
+ duration?: number;
139
+ aspectRatio?: string;
140
+ resolution?: string;
141
+ name?: string;
142
+ }
143
+ export interface ImagineVideoStartResult {
144
+ model: string;
145
+ requestId: string;
146
+ status: "pending";
147
+ }
148
+ export type ImagineVideoJobStatus = "pending" | "completed" | "failed";
149
+ export interface ImagineVideoStatusResult {
150
+ requestId: string;
151
+ status: ImagineVideoJobStatus;
152
+ artifact?: MediaArtifactMeta;
153
+ path?: string;
154
+ error?: string;
155
+ }
156
+ export interface GrokImagineClientOptions {
157
+ resolveApiKey: ImagineApiKeyResolver;
158
+ attachments: ImagineAttachmentStore;
159
+ media: MediaStore;
160
+ /** API-only test seam. Never used for media and never a production default. */
161
+ fetch?: ImagineFetch;
162
+ /** Media downloads. Production default pins DNS at connect time via undici. */
163
+ downloader?: ImagineDownloader;
164
+ now?: () => number;
165
+ imageDownloadTimeoutMs?: number;
166
+ videoDownloadTimeoutMs?: number;
167
+ apiTimeoutMs?: number;
168
+ maxRedirects?: number;
169
+ imageMaxBytes?: number;
170
+ apiJsonMaxBytes?: number;
171
+ }
172
+ export interface ImagineImageDownloadHeaders {
173
+ "Content-Type": string;
174
+ "Content-Length": string;
175
+ "Content-Disposition": string;
176
+ "Cache-Control": string;
177
+ "X-Content-Type-Options": "nosniff";
178
+ }
179
+ export interface ImagineImageDownloadView {
180
+ ref: ImagineImageAttachmentRef;
181
+ body: Uint8Array;
182
+ headers: ImagineImageDownloadHeaders;
183
+ }
184
+ export declare function redactImagineMessage(error: unknown): string;
185
+ /** True when an address is loopback, private, reserved, documentation, or an embedded special form. */
186
+ export declare function isBlockedIp(address: string): boolean;
187
+ export declare function isAllowlistedImagineHost(hostname: string): boolean;
188
+ export declare function grokImagineVideoStatusPath(requestId: string): string;
189
+ export declare function isSafeImagineAttachmentId(attachmentId: string): boolean;
190
+ export declare function imagineImagePath(attachmentId: string): string;
191
+ export declare function parseImagineImagePath(pathname: string): string | undefined;
192
+ export declare function imagineImageDownloadHeaders(ref: ImagineImageAttachmentRef): ImagineImageDownloadHeaders;
193
+ export { IMAGINE_MEDIA_ROUTE_PREFIX, imagineMediaPath, isTrustedImaginePeer };
194
+ export declare function detectImageMediaType(data: Uint8Array): ImagineImageMediaType | undefined;
195
+ export declare function detectVideoMediaType(data: Uint8Array): MediaStoreVideoType | undefined;
196
+ export declare function defaultImagineLookup(hostname: string): Promise<readonly string[]>;
197
+ export declare function assertSafeRemoteMediaUrl(raw: string, lookup: ImagineDnsLookup): Promise<URL>;
198
+ export declare function createPinnedMediaTransport(lookup?: ImagineDnsLookup): ImagineMediaTransport;
199
+ export declare function createPinnedApiFetch(lookup?: ImagineDnsLookup, maxBytes?: number): ImagineFetch;
200
+ export declare function downloadRemoteImagineMedia(initialUrl: string, transport: ImagineMediaTransport, options: {
201
+ lookup: ImagineDnsLookup;
202
+ timeoutMs: number;
203
+ maxBytes: number;
204
+ accept: string;
205
+ maxRedirects: number;
206
+ signal?: AbortSignal;
207
+ }): Promise<ImagineDownloadResult>;
208
+ export declare function createPinnedImagineDownloader(options?: {
209
+ lookup?: ImagineDnsLookup;
210
+ maxRedirects?: number;
211
+ }): ImagineDownloader;
212
+ /**
213
+ * Test-only adapter around an injected fetch. Ordinary mock fetch is not
214
+ * production-safe: it cannot pin DNS at connect time.
215
+ */
216
+ export declare function createImagineDownloaderFromFetch(fetchImpl: ImagineFetch, options: {
217
+ trustedTestTransport: true;
218
+ lookup?: ImagineDnsLookup;
219
+ maxRedirects?: number;
220
+ }): ImagineDownloader;
221
+ /**
222
+ * Validate a tool-supplied Imagine video `requestId`. Returns the id unchanged
223
+ * on success or throws an `INVALID_INPUT` error. Exposed so capability tools
224
+ * fail closed at the boundary instead of dispatching a malformed id to the
225
+ * internal client.
226
+ */
227
+ export declare function parseVideoRequestId(value: unknown): string;
228
+ /** Enforce min/max bounds on a candidate image-id array. */
229
+ export declare function clampImagineImageIds(ids: readonly unknown[]): readonly string[];
230
+ export declare class GrokImagineClient {
231
+ private readonly resolveApiKey;
232
+ private readonly attachments;
233
+ private readonly media;
234
+ private readonly apiFetch;
235
+ private readonly downloader;
236
+ private readonly imageDownloadTimeoutMs;
237
+ private readonly videoDownloadTimeoutMs;
238
+ private readonly apiTimeoutMs;
239
+ private readonly maxRedirects;
240
+ private readonly imageMaxBytes;
241
+ private readonly apiJsonMaxBytes;
242
+ private readonly videoResults;
243
+ private readonly videoInflight;
244
+ private readonly disposeController;
245
+ private disposed;
246
+ constructor(options: GrokImagineClientOptions);
247
+ /**
248
+ * Permanently retire this client. In-flight API calls, downloads, and
249
+ * media persistence operations are aborted; subsequent operations fail
250
+ * closed with an `INVALID_INPUT` error until callers construct a new client.
251
+ */
252
+ dispose(): void;
253
+ /** @returns true once {@link dispose} has been called. */
254
+ get isDisposed(): boolean;
255
+ private assertWritable;
256
+ generateImage(input: GenerateImagineImageInput, signal?: AbortSignal): Promise<ImagineImageResult>;
257
+ startVideo(input: StartImagineVideoInput, signal?: AbortSignal): Promise<ImagineVideoStartResult>;
258
+ videoStatus(requestId: string, options?: {
259
+ name?: string;
260
+ signal?: AbortSignal;
261
+ }): Promise<ImagineVideoStatusResult>;
262
+ private pollVideo;
263
+ private rememberVideo;
264
+ private persistGeneratedImage;
265
+ private resolveCredential;
266
+ private apiJson;
267
+ }
268
+ export declare function createGrokImagineClient(options: GrokImagineClientOptions): GrokImagineClient;
269
+ /** Gate a same-origin image download. Requires an explicit trusted/authz token. */
270
+ export declare function openTrustedImagineImageDownload(attachments: ImagineAttachmentStore, ref: ImagineImageAttachmentRef, authz: TrustedImagineAuthz): Promise<ImagineImageDownloadView>;
271
+ //# sourceMappingURL=grok-imagine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok-imagine.d.ts","sourceRoot":"","sources":["../../src/grok-imagine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * One-shot import of Grok CLI credentials into the dsh-owned store.
3
+ * The source file is never written. Refresh tokens rotate, so later dsh
4
+ * refresh may invalidate ~/.grok/auth.json — that is documented, not a bug.
5
+ * @module dsh-coding-subscription-oauth/grok-import
6
+ */
7
+ import type { OAuthCredential } from "@earendil-works/pi-ai";
8
+ import type { GrokBuildCredentialStore } from "./store.js";
9
+ export interface GrokImportProbe {
10
+ available: boolean;
11
+ path: string;
12
+ }
13
+ /** Resolve the Grok CLI auth document. */
14
+ export declare function grokAuthPath(home?: string): string;
15
+ /** Parse a Grok CLI / generic OAuth document into a pi-ai credential. */
16
+ export declare function parseGrokAuthDocument(text: string, filename: string): OAuthCredential;
17
+ /** Whether ~/.grok/auth.json exists and looks importable. Never returns secrets. */
18
+ export declare function probeGrokAuth(filename?: string): Promise<GrokImportProbe>;
19
+ /** Copy Grok CLI tokens into the dsh store. Does not write the Grok file. */
20
+ export declare function importGrokAuth(store: GrokBuildCredentialStore, filename?: string): Promise<OAuthCredential>;
21
+ //# sourceMappingURL=grok-import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grok-import.d.ts","sourceRoot":"","sources":["../../src/grok-import.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAI3D,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb;AA4ED,0CAA0C;AAC1C,wBAAgB,YAAY,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE7D;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAgBrF;AAED,oFAAoF;AACpF,wBAAsB,aAAa,CAAC,QAAQ,GAAE,MAAuB,GAAG,OAAO,CAAC,eAAe,CAAC,CAU/F;AAED,6EAA6E;AAC7E,wBAAsB,cAAc,CACnC,KAAK,EAAE,wBAAwB,EAC/B,QAAQ,GAAE,MAAuB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAc1B"}
@@ -0,0 +1,10 @@
1
+ import type { IncomingMessage } from "node:http";
2
+ export declare const JSON_BODY_LIMIT_BYTES: number;
3
+ export declare class JsonRequestError extends Error {
4
+ readonly statusCode: 400 | 413;
5
+ constructor(statusCode: 400 | 413, message: string);
6
+ }
7
+ /** Read one JSON request body with a strict in-memory ceiling. */
8
+ export declare function readJsonRequest(request: IncomingMessage, limit?: number): Promise<unknown>;
9
+ export declare function requestErrorStatus(error: unknown, fallback: number): number;
10
+ //# sourceMappingURL=http-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-json.d.ts","sourceRoot":"","sources":["../../src/http-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAEjD,eAAO,MAAM,qBAAqB,QAAY,CAAC;AAE/C,qBAAa,gBAAiB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,CAAC;gBAEnB,UAAU,EAAE,GAAG,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM;CAKlD;AASD,kEAAkE;AAClE,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,SAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuDzG;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E"}
package/lib/ids.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ /** pi-ai provider ids used by login, refresh, and credential storage. */
2
+ export declare const XAI_PI_PROVIDER = "xai";
3
+ export declare const CODEX_PI_PROVIDER = "openai-codex";
4
+ export declare const KIMI_PI_PROVIDER = "kimi-coding";
5
+ export declare const CLAUDE_PI_PROVIDER = "anthropic";
6
+ /** Harness LLM routes. OAuth aliases avoid the user's API-key route ids. */
7
+ export declare const GROK_BUILD_ROUTE = "grok-build";
8
+ export declare const CODEX_OAUTH_ROUTE = "codex-oauth";
9
+ export declare const CODEX_OAUTH_FAST_ROUTE = "codex-oauth-fast";
10
+ export declare const KIMI_CODE_OAUTH_ROUTE = "kimi-code-oauth";
11
+ export declare const CLAUDE_CODE_OAUTH_ROUTE = "claude-code-oauth";
12
+ export declare const ANTIGRAVITY_ROUTE = "agy";
13
+ export declare const CODING_OAUTH_ROUTES: readonly ["grok-build", "codex-oauth", "kimi-code-oauth", "claude-code-oauth"];
14
+ /** Opt-in routes the adapter can expose; not registered by the default plugin apply(). */
15
+ export declare const CODING_OAUTH_OPTIONAL_ROUTES: readonly ["codex-oauth-fast"];
16
+ export type CodingOAuthRoute = (typeof CODING_OAUTH_ROUTES)[number];
17
+ export type CodingOAuthOptionalRoute = (typeof CODING_OAUTH_OPTIONAL_ROUTES)[number];
18
+ export type CodingOAuthProviderSlug = "grok" | "codex" | "kimi" | "claude";
19
+ /** Basenames of private OAuth documents inside the Harness home. */
20
+ export declare const GROK_BUILD_AUTH_FILENAME = ".grok-build-auth.json";
21
+ export declare const CODEX_OAUTH_AUTH_FILENAME = ".codex-oauth-auth.json";
22
+ export declare const KIMI_CODE_OAUTH_AUTH_FILENAME = ".kimi-code-oauth-auth.json";
23
+ export declare const CLAUDE_CODE_OAUTH_AUTH_FILENAME = ".claude-code-oauth-auth.json";
24
+ /** Basenames of model selection/catalog caches inside the Harness home. */
25
+ export declare const GROK_BUILD_MODELS_CACHE_FILENAME = ".grok-build-models.json";
26
+ export declare const CODEX_OAUTH_MODELS_CACHE_FILENAME = ".codex-oauth-models.json";
27
+ export declare const KIMI_CODE_OAUTH_MODELS_CACHE_FILENAME = ".kimi-code-oauth-models.json";
28
+ export declare const CLAUDE_CODE_OAUTH_MODELS_CACHE_FILENAME = ".claude-code-oauth-models.json";
29
+ /** Fallback model when no live Grok catalog listing is available. */
30
+ export declare const DEFAULT_GROK_BUILD_MODEL = "grok-4.6";
31
+ /** Provider idle ceiling used by every composite route. */
32
+ export declare const GROK_BUILD_STREAM_IDLE_TIMEOUT_MS = 300000;
33
+ //# sourceMappingURL=ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/ids.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,iBAAiB,iBAAiB,CAAC;AAChD,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,iBAAiB,gBAAgB,CAAC;AAC/C,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AACzD,eAAO,MAAM,qBAAqB,oBAAoB,CAAC;AACvD,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAC3D,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAEvC,eAAO,MAAM,mBAAmB,gFAKtB,CAAC;AAEX,0FAA0F;AAC1F,eAAO,MAAM,4BAA4B,+BAAoC,CAAC;AAE9E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AACrF,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE3E,oEAAoE;AACpE,eAAO,MAAM,wBAAwB,0BAA0B,CAAC;AAChE,eAAO,MAAM,yBAAyB,2BAA2B,CAAC;AAClE,eAAO,MAAM,6BAA6B,+BAA+B,CAAC;AAC1E,eAAO,MAAM,+BAA+B,iCAAiC,CAAC;AAE9E,2EAA2E;AAC3E,eAAO,MAAM,gCAAgC,4BAA4B,CAAC;AAC1E,eAAO,MAAM,iCAAiC,6BAA6B,CAAC;AAC5E,eAAO,MAAM,qCAAqC,iCAAiC,CAAC;AACpF,eAAO,MAAM,uCAAuC,mCAAmC,CAAC;AAExF,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,aAAa,CAAC;AAEnD,2DAA2D;AAC3D,eAAO,MAAM,iCAAiC,SAAU,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Same-origin GET routes for generated Imagine images and video artifacts.
3
+ * The Host webServer only accepts exact paths, so this registrar keeps a
4
+ * bounded table of opaque ids and registers one exact disposer per remembered
5
+ * image ref or media artifact.
6
+ * @module dsh-coding-subscription-oauth/imagine-routes
7
+ */
8
+ import type { IncomingMessage, ServerResponse } from "node:http";
9
+ import type { ImageAttachmentRef } from "@deepseek-ai/dsh-attachment";
10
+ import { type ImagineImageAttachmentRef } from "./grok-imagine.js";
11
+ import { type MediaArtifactMeta, type MediaDownloadView, type TrustedImagineAuthz } from "./media-store.js";
12
+ /** Hard ceiling for live exact download routes. Callers cannot raise this. */
13
+ export declare const IMAGINE_ROUTE_MAX_ENTRIES = 64;
14
+ /** Hard ceiling for remembered image routes. Callers cannot raise this. */
15
+ export declare const IMAGINE_IMAGE_ROUTE_TTL_MS: number;
16
+ /** Structural `ctx.webServer` + optional `ctx.effect` surface used by the registrar. */
17
+ export interface ImagineRouteContext {
18
+ readonly webServer: {
19
+ register(route: {
20
+ kind: "exact";
21
+ path: string;
22
+ handler: (req: IncomingMessage, res: ServerResponse) => void | Promise<void>;
23
+ }): () => void;
24
+ };
25
+ effect?(setup: () => () => void | Promise<void>, label?: string): unknown;
26
+ }
27
+ /** Attachment seam used at GET time. Only metadata is retained in the registry. */
28
+ export interface ImagineRouteAttachmentStore {
29
+ readonly imageLimits?: {
30
+ readonly maxImageBytes?: number;
31
+ };
32
+ readImage(ref: ImagineImageAttachmentRef, signal?: AbortSignal): Promise<{
33
+ ref: ImagineImageAttachmentRef;
34
+ data: Uint8Array;
35
+ }>;
36
+ }
37
+ /** Structural media download seam. Production adapts `MediaStore.openDownload`. */
38
+ export interface ImagineMediaDownloadStore {
39
+ readForDownload(artifactId: string, authz: TrustedImagineAuthz): Promise<MediaDownloadView>;
40
+ }
41
+ export interface ImagineRouteOptions {
42
+ readonly attachments: ImagineRouteAttachmentStore;
43
+ readonly media: ImagineMediaDownloadStore;
44
+ readonly now?: () => number;
45
+ /** Capped at {@link IMAGINE_ROUTE_MAX_ENTRIES}. */
46
+ readonly maxEntries?: number;
47
+ /** Capped at {@link IMAGINE_IMAGE_ROUTE_TTL_MS}. */
48
+ readonly imageTtlMs?: number;
49
+ }
50
+ export interface ImagineRouteRegistry {
51
+ rememberImages(refs: readonly ImageAttachmentRef[] | readonly ImagineImageAttachmentRef[]): void;
52
+ rememberArtifact(meta: MediaArtifactMeta): void;
53
+ revokeImages(): void;
54
+ revokeArtifacts(): void;
55
+ dispose(): void;
56
+ }
57
+ /** Register the bounded exact-path Imagine download registry. */
58
+ export declare function registerImagineRoutes(ctx: ImagineRouteContext, options: ImagineRouteOptions): ImagineRouteRegistry;
59
+ //# sourceMappingURL=imagine-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imagine-routes.d.ts","sourceRoot":"","sources":["../../src/imagine-routes.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAEN,KAAK,yBAAyB,EAM9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAKN,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAKtB,KAAK,mBAAmB,EACxB,MAAM,kBAAkB,CAAC;AAG1B,8EAA8E;AAC9E,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,2EAA2E;AAC3E,eAAO,MAAM,0BAA0B,QAAiB,CAAC;AAKzD,wFAAwF;AACxF,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,SAAS,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE;YACf,IAAI,EAAE,OAAO,CAAC;YACd,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;SAC7E,GAAG,MAAM,IAAI,CAAC;KACf,CAAC;IACF,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1E;AAED,mFAAmF;AACnF,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE;QAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,SAAS,CACR,GAAG,EAAE,yBAAyB,EAC9B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC;QAAE,GAAG,EAAE,yBAAyB,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAC;CACjE;AAED,mFAAmF;AACnF,MAAM,WAAW,yBAAyB;IACzC,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC5F;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,mDAAmD;IACnD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACpC,cAAc,CAAC,IAAI,EAAE,SAAS,kBAAkB,EAAE,GAAG,SAAS,yBAAyB,EAAE,GAAG,IAAI,CAAC;IACjG,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAChD,YAAY,IAAI,IAAI,CAAC;IACrB,eAAe,IAAI,IAAI,CAAC;IACxB,OAAO,IAAI,IAAI,CAAC;CAChB;AA0BD,iEAAiE;AACjE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,mBAAmB,GAAG,oBAAoB,CAuMlH"}