expandai 0.0.0 → 0.0.2

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 (209) hide show
  1. package/README.md +241 -6
  2. package/build/dts/ApiClient.d.ts +231 -0
  3. package/build/dts/ApiClient.d.ts.map +1 -0
  4. package/build/dts/Authentication.d.ts +23 -0
  5. package/build/dts/Authentication.d.ts.map +1 -0
  6. package/build/dts/BrowserOAuth.d.ts +99 -0
  7. package/build/dts/BrowserOAuth.d.ts.map +1 -0
  8. package/build/dts/Commands/Fetch.d.ts +30 -0
  9. package/build/dts/Commands/Fetch.d.ts.map +1 -0
  10. package/build/dts/Commands/Hook.d.ts +17 -0
  11. package/build/dts/Commands/Hook.d.ts.map +1 -0
  12. package/build/dts/Commands/Mcp.d.ts +11 -0
  13. package/build/dts/Commands/Mcp.d.ts.map +1 -0
  14. package/build/dts/Commands/McpRun.d.ts +5 -0
  15. package/build/dts/Commands/McpRun.d.ts.map +1 -0
  16. package/build/dts/Commands/Search.d.ts +21 -0
  17. package/build/dts/Commands/Search.d.ts.map +1 -0
  18. package/build/dts/Commands/Skill.d.ts +12 -0
  19. package/build/dts/Commands/Skill.d.ts.map +1 -0
  20. package/build/dts/Commands/Uninstall.d.ts +9 -0
  21. package/build/dts/Commands/Uninstall.d.ts.map +1 -0
  22. package/build/dts/Config.d.ts +105 -0
  23. package/build/dts/Config.d.ts.map +1 -0
  24. package/build/dts/DeviceAuth.d.ts +87 -0
  25. package/build/dts/DeviceAuth.d.ts.map +1 -0
  26. package/build/dts/Hook/Claude.d.ts +13 -0
  27. package/build/dts/Hook/Claude.d.ts.map +1 -0
  28. package/build/dts/Hook/Errors.d.ts +20 -0
  29. package/build/dts/Hook/Errors.d.ts.map +1 -0
  30. package/build/dts/Hook/Opencode.d.ts +13 -0
  31. package/build/dts/Hook/Opencode.d.ts.map +1 -0
  32. package/build/dts/Hook/SnapshotNote.d.ts +8 -0
  33. package/build/dts/Hook/SnapshotNote.d.ts.map +1 -0
  34. package/build/dts/Install/Claude/Hook.d.ts +60 -0
  35. package/build/dts/Install/Claude/Hook.d.ts.map +1 -0
  36. package/build/dts/Install/Claude/Mcp.d.ts +45 -0
  37. package/build/dts/Install/Claude/Mcp.d.ts.map +1 -0
  38. package/build/dts/Install/Claude/Skill.d.ts +24 -0
  39. package/build/dts/Install/Claude/Skill.d.ts.map +1 -0
  40. package/build/dts/Install/Codex/Mcp.d.ts +39 -0
  41. package/build/dts/Install/Codex/Mcp.d.ts.map +1 -0
  42. package/build/dts/Install/Codex/Skill.d.ts +20 -0
  43. package/build/dts/Install/Codex/Skill.d.ts.map +1 -0
  44. package/build/dts/Install/Cursor/Mcp.d.ts +45 -0
  45. package/build/dts/Install/Cursor/Mcp.d.ts.map +1 -0
  46. package/build/dts/Install/Cursor/Skill.d.ts +27 -0
  47. package/build/dts/Install/Cursor/Skill.d.ts.map +1 -0
  48. package/build/dts/Install/Domain.d.ts +73 -0
  49. package/build/dts/Install/Domain.d.ts.map +1 -0
  50. package/build/dts/Install/Hook.d.ts +30 -0
  51. package/build/dts/Install/Hook.d.ts.map +1 -0
  52. package/build/dts/Install/Mcp.d.ts +28 -0
  53. package/build/dts/Install/Mcp.d.ts.map +1 -0
  54. package/build/dts/Install/Opencode/Hook.d.ts +23 -0
  55. package/build/dts/Install/Opencode/Hook.d.ts.map +1 -0
  56. package/build/dts/Install/Opencode/Mcp.d.ts +47 -0
  57. package/build/dts/Install/Opencode/Mcp.d.ts.map +1 -0
  58. package/build/dts/Install/Opencode/Skill.d.ts +24 -0
  59. package/build/dts/Install/Opencode/Skill.d.ts.map +1 -0
  60. package/build/dts/Install/Skill.d.ts +32 -0
  61. package/build/dts/Install/Skill.d.ts.map +1 -0
  62. package/build/dts/Install/Uninstall.d.ts +32 -0
  63. package/build/dts/Install/Uninstall.d.ts.map +1 -0
  64. package/build/dts/Mcp/ExpandDocs.d.ts +7 -0
  65. package/build/dts/Mcp/ExpandDocs.d.ts.map +1 -0
  66. package/build/dts/Mcp/RequestHeaders.d.ts +15 -0
  67. package/build/dts/Mcp/RequestHeaders.d.ts.map +1 -0
  68. package/build/dts/Mcp/Server.d.ts +10 -0
  69. package/build/dts/Mcp/Server.d.ts.map +1 -0
  70. package/build/dts/Mcp/Toolkit.d.ts +3 -0
  71. package/build/dts/Mcp/Toolkit.d.ts.map +1 -0
  72. package/build/dts/Mcp/tools/Citations.d.ts +237 -0
  73. package/build/dts/Mcp/tools/Citations.d.ts.map +1 -0
  74. package/build/dts/Mcp/tools/Fetch.d.ts +167 -0
  75. package/build/dts/Mcp/tools/Fetch.d.ts.map +1 -0
  76. package/build/dts/Snippets.d.ts +19 -0
  77. package/build/dts/Snippets.d.ts.map +1 -0
  78. package/build/dts/index.d.ts +2 -0
  79. package/build/dts/index.d.ts.map +1 -0
  80. package/build/dts/main.d.ts +3 -0
  81. package/build/dts/main.d.ts.map +1 -0
  82. package/build/esm/ApiClient.js +182 -0
  83. package/build/esm/ApiClient.js.map +1 -0
  84. package/build/esm/Authentication.js +112 -0
  85. package/build/esm/Authentication.js.map +1 -0
  86. package/build/esm/BrowserOAuth.js +254 -0
  87. package/build/esm/BrowserOAuth.js.map +1 -0
  88. package/build/esm/Commands/Fetch.js +95 -0
  89. package/build/esm/Commands/Fetch.js.map +1 -0
  90. package/build/esm/Commands/Hook.js +20 -0
  91. package/build/esm/Commands/Hook.js.map +1 -0
  92. package/build/esm/Commands/Mcp.js +19 -0
  93. package/build/esm/Commands/Mcp.js.map +1 -0
  94. package/build/esm/Commands/McpRun.js +15 -0
  95. package/build/esm/Commands/McpRun.js.map +1 -0
  96. package/build/esm/Commands/Search.js +43 -0
  97. package/build/esm/Commands/Search.js.map +1 -0
  98. package/build/esm/Commands/Skill.js +17 -0
  99. package/build/esm/Commands/Skill.js.map +1 -0
  100. package/build/esm/Commands/Uninstall.js +28 -0
  101. package/build/esm/Commands/Uninstall.js.map +1 -0
  102. package/build/esm/Config.js +145 -0
  103. package/build/esm/Config.js.map +1 -0
  104. package/build/esm/DeviceAuth.js +127 -0
  105. package/build/esm/DeviceAuth.js.map +1 -0
  106. package/build/esm/Hook/Claude.js +74 -0
  107. package/build/esm/Hook/Claude.js.map +1 -0
  108. package/build/esm/Hook/Errors.js +18 -0
  109. package/build/esm/Hook/Errors.js.map +1 -0
  110. package/build/esm/Hook/Opencode.js +50 -0
  111. package/build/esm/Hook/Opencode.js.map +1 -0
  112. package/build/esm/Hook/SnapshotNote.js +18 -0
  113. package/build/esm/Hook/SnapshotNote.js.map +1 -0
  114. package/build/esm/Install/Claude/Hook.js +89 -0
  115. package/build/esm/Install/Claude/Hook.js.map +1 -0
  116. package/build/esm/Install/Claude/Mcp.js +71 -0
  117. package/build/esm/Install/Claude/Mcp.js.map +1 -0
  118. package/build/esm/Install/Claude/Skill.js +34 -0
  119. package/build/esm/Install/Claude/Skill.js.map +1 -0
  120. package/build/esm/Install/Codex/Mcp.js +92 -0
  121. package/build/esm/Install/Codex/Mcp.js.map +1 -0
  122. package/build/esm/Install/Codex/Skill.js +30 -0
  123. package/build/esm/Install/Codex/Skill.js.map +1 -0
  124. package/build/esm/Install/Cursor/Mcp.js +71 -0
  125. package/build/esm/Install/Cursor/Mcp.js.map +1 -0
  126. package/build/esm/Install/Cursor/Skill.js +37 -0
  127. package/build/esm/Install/Cursor/Skill.js.map +1 -0
  128. package/build/esm/Install/Domain.js +105 -0
  129. package/build/esm/Install/Domain.js.map +1 -0
  130. package/build/esm/Install/Hook.js +38 -0
  131. package/build/esm/Install/Hook.js.map +1 -0
  132. package/build/esm/Install/Mcp.js +40 -0
  133. package/build/esm/Install/Mcp.js.map +1 -0
  134. package/build/esm/Install/Opencode/Hook.js +44 -0
  135. package/build/esm/Install/Opencode/Hook.js.map +1 -0
  136. package/build/esm/Install/Opencode/Mcp.js +73 -0
  137. package/build/esm/Install/Opencode/Mcp.js.map +1 -0
  138. package/build/esm/Install/Opencode/Skill.js +34 -0
  139. package/build/esm/Install/Opencode/Skill.js.map +1 -0
  140. package/build/esm/Install/Opencode/expandai-webfetch.js +38 -0
  141. package/build/esm/Install/Skill.js +41 -0
  142. package/build/esm/Install/Skill.js.map +1 -0
  143. package/build/esm/Install/Uninstall.js +49 -0
  144. package/build/esm/Install/Uninstall.js.map +1 -0
  145. package/build/esm/Mcp/ExpandDocs.js +64 -0
  146. package/build/esm/Mcp/ExpandDocs.js.map +1 -0
  147. package/build/esm/Mcp/RequestHeaders.js +13 -0
  148. package/build/esm/Mcp/RequestHeaders.js.map +1 -0
  149. package/build/esm/Mcp/Server.js +11 -0
  150. package/build/esm/Mcp/Server.js.map +1 -0
  151. package/build/esm/Mcp/Toolkit.js +16 -0
  152. package/build/esm/Mcp/Toolkit.js.map +1 -0
  153. package/build/esm/Mcp/tools/Citations.js +92 -0
  154. package/build/esm/Mcp/tools/Citations.js.map +1 -0
  155. package/build/esm/Mcp/tools/Fetch.js +141 -0
  156. package/build/esm/Mcp/tools/Fetch.js.map +1 -0
  157. package/build/esm/Snippets.js +18 -0
  158. package/build/esm/Snippets.js.map +1 -0
  159. package/build/esm/index.js +2 -0
  160. package/build/esm/index.js.map +1 -0
  161. package/build/esm/main.js +97 -0
  162. package/build/esm/main.js.map +1 -0
  163. package/build/skills/expandai/SKILL.md +72 -0
  164. package/package.json +72 -10
  165. package/src/ApiClient.ts +257 -0
  166. package/src/Authentication.ts +164 -0
  167. package/src/BrowserOAuth.ts +361 -0
  168. package/src/Commands/Fetch.ts +157 -0
  169. package/src/Commands/Hook.ts +48 -0
  170. package/src/Commands/Mcp.ts +30 -0
  171. package/src/Commands/McpRun.ts +25 -0
  172. package/src/Commands/Search.ts +92 -0
  173. package/src/Commands/Skill.ts +30 -0
  174. package/src/Commands/Uninstall.ts +38 -0
  175. package/src/Config.ts +195 -0
  176. package/src/DeviceAuth.ts +193 -0
  177. package/src/Hook/Claude.ts +81 -0
  178. package/src/Hook/Errors.ts +19 -0
  179. package/src/Hook/Opencode.ts +58 -0
  180. package/src/Hook/SnapshotNote.ts +18 -0
  181. package/src/Install/Claude/Hook.ts +133 -0
  182. package/src/Install/Claude/Mcp.ts +82 -0
  183. package/src/Install/Claude/Skill.ts +44 -0
  184. package/src/Install/Codex/Mcp.ts +109 -0
  185. package/src/Install/Codex/Skill.ts +40 -0
  186. package/src/Install/Cursor/Mcp.ts +82 -0
  187. package/src/Install/Cursor/Skill.ts +47 -0
  188. package/src/Install/Domain.ts +148 -0
  189. package/src/Install/Hook.ts +50 -0
  190. package/src/Install/Mcp.ts +71 -0
  191. package/src/Install/Opencode/Hook.ts +55 -0
  192. package/src/Install/Opencode/Mcp.ts +84 -0
  193. package/src/Install/Opencode/Skill.ts +44 -0
  194. package/src/Install/Opencode/expandai-webfetch.d.ts +23 -0
  195. package/src/Install/Opencode/expandai-webfetch.js +38 -0
  196. package/src/Install/Skill.ts +57 -0
  197. package/src/Install/Uninstall.ts +82 -0
  198. package/src/Mcp/ExpandDocs.ts +71 -0
  199. package/src/Mcp/RequestHeaders.ts +16 -0
  200. package/src/Mcp/Server.ts +14 -0
  201. package/src/Mcp/Toolkit.ts +21 -0
  202. package/src/Mcp/tools/Citations.ts +110 -0
  203. package/src/Mcp/tools/Fetch.ts +177 -0
  204. package/src/Snippets.ts +32 -0
  205. package/src/index.ts +1 -0
  206. package/src/main.ts +146 -0
  207. package/bun.lockb +0 -0
  208. package/index.ts +0 -1
  209. package/tsconfig.json +0 -27
@@ -0,0 +1,237 @@
1
+ import type { FetchObjectModeResultWithJson, FetchSnapshotSearchResultWithJson } from '@expandai/sdk/FetchJson';
2
+ import * as Generated from '@expandai/sdk/Generated';
3
+ import { Schema as S } from 'effect';
4
+ declare const CitedSnippet_base: S.Class<CitedSnippet, {
5
+ type: S.optionalWith<S.Literal<["text"]>, {
6
+ nullable: true;
7
+ default: () => "text";
8
+ }>;
9
+ source: S.Literal<["markdown", "appendix", "statejson"]>;
10
+ text: typeof S.String;
11
+ json: S.optionalWith<typeof S.Unknown, {
12
+ nullable: true;
13
+ }>;
14
+ score: S.filter<S.filter<typeof S.Number>>;
15
+ location: S.optionalWith<typeof Generated.FetchSearchSnippetLocation, {
16
+ nullable: true;
17
+ }>;
18
+ citationUrl: S.SchemaClass<string, string, never>;
19
+ }, S.Struct.Encoded<{
20
+ type: S.optionalWith<S.Literal<["text"]>, {
21
+ nullable: true;
22
+ default: () => "text";
23
+ }>;
24
+ source: S.Literal<["markdown", "appendix", "statejson"]>;
25
+ text: typeof S.String;
26
+ json: S.optionalWith<typeof S.Unknown, {
27
+ nullable: true;
28
+ }>;
29
+ score: S.filter<S.filter<typeof S.Number>>;
30
+ location: S.optionalWith<typeof Generated.FetchSearchSnippetLocation, {
31
+ nullable: true;
32
+ }>;
33
+ citationUrl: S.SchemaClass<string, string, never>;
34
+ }>, never, {
35
+ readonly json?: unknown;
36
+ } & {
37
+ readonly score: number;
38
+ } & {
39
+ readonly source: "markdown" | "appendix" | "statejson";
40
+ } & {
41
+ readonly type?: "text" | undefined;
42
+ } & {
43
+ readonly text: string;
44
+ } & {
45
+ readonly location?: {
46
+ readonly markdownBlockId?: string | undefined;
47
+ readonly nodeIds?: readonly number[] | undefined;
48
+ readonly stateJsonSourceId?: number | undefined;
49
+ readonly jsonPath?: string | undefined;
50
+ } | undefined;
51
+ } & {
52
+ readonly citationUrl: string;
53
+ }, {}, {}>;
54
+ export declare class CitedSnippet extends CitedSnippet_base {
55
+ }
56
+ declare const CitedSearchResult_base: S.Class<CitedSearchResult, {
57
+ query: typeof S.String;
58
+ snippets: S.Array$<typeof CitedSnippet>;
59
+ meta: S.optionalWith<typeof Generated.FetchSearchMeta, {
60
+ nullable: true;
61
+ }>;
62
+ }, S.Struct.Encoded<{
63
+ query: typeof S.String;
64
+ snippets: S.Array$<typeof CitedSnippet>;
65
+ meta: S.optionalWith<typeof Generated.FetchSearchMeta, {
66
+ nullable: true;
67
+ }>;
68
+ }>, never, {
69
+ readonly meta?: {
70
+ readonly durationMs: number;
71
+ readonly sources: readonly {
72
+ readonly durationMs: number;
73
+ readonly source: "markdown" | "appendix" | "statejson";
74
+ readonly chunkCount: number;
75
+ readonly batchCount: number;
76
+ readonly ranker: "zeroentropy" | "local_lexical";
77
+ readonly fallback: boolean;
78
+ readonly fallbackReason?: "error" | "timeout" | undefined;
79
+ }[];
80
+ } | undefined;
81
+ } & {
82
+ readonly query: string;
83
+ } & {
84
+ readonly snippets: readonly CitedSnippet[];
85
+ }, {}, {}>;
86
+ export declare class CitedSearchResult extends CitedSearchResult_base {
87
+ }
88
+ declare const CitedObjectModeResult_base: S.Class<CitedObjectModeResult, {
89
+ meta: typeof Generated.FetchObjectModeMeta;
90
+ markdown: typeof S.String;
91
+ json: S.Array$<typeof Generated.FetchObjectModeEvidence>;
92
+ data: S.optionalWith<S.Struct<{
93
+ assets: S.optionalWith<S.Array$<typeof Generated.FetchAssetReference>, {
94
+ nullable: true;
95
+ }>;
96
+ captureTelemetry: S.optionalWith<typeof Generated.CaptureTelemetryInfo, {
97
+ nullable: true;
98
+ }>;
99
+ search: S.optionalWith<typeof CitedSearchResult, {
100
+ nullable: true;
101
+ }>;
102
+ }>, {
103
+ nullable: true;
104
+ }>;
105
+ }, S.Struct.Encoded<{
106
+ meta: typeof Generated.FetchObjectModeMeta;
107
+ markdown: typeof S.String;
108
+ json: S.Array$<typeof Generated.FetchObjectModeEvidence>;
109
+ data: S.optionalWith<S.Struct<{
110
+ assets: S.optionalWith<S.Array$<typeof Generated.FetchAssetReference>, {
111
+ nullable: true;
112
+ }>;
113
+ captureTelemetry: S.optionalWith<typeof Generated.CaptureTelemetryInfo, {
114
+ nullable: true;
115
+ }>;
116
+ search: S.optionalWith<typeof CitedSearchResult, {
117
+ nullable: true;
118
+ }>;
119
+ }>, {
120
+ nullable: true;
121
+ }>;
122
+ }>, never, {
123
+ readonly meta: {
124
+ readonly description?: string | undefined;
125
+ readonly url: string;
126
+ readonly markdown?: {
127
+ readonly url: string;
128
+ readonly moreTokens: number;
129
+ } | undefined;
130
+ readonly version: 1;
131
+ readonly capturedAt: string;
132
+ readonly snapshotId: string;
133
+ readonly lang: string;
134
+ readonly pageType: string;
135
+ readonly playground: string;
136
+ readonly title?: string | undefined;
137
+ readonly finalUrl?: string | undefined;
138
+ readonly canonical?: string | undefined;
139
+ readonly author?: string | undefined;
140
+ readonly createdAt?: string | undefined;
141
+ readonly updatedAt?: string | undefined;
142
+ readonly image?: string | undefined;
143
+ readonly paginationNext?: string | undefined;
144
+ readonly appendix?: {
145
+ readonly url: string;
146
+ readonly links: {
147
+ readonly sameDomain: number;
148
+ readonly external: number;
149
+ };
150
+ } | undefined;
151
+ readonly stateJson?: {
152
+ readonly moreTokens: number;
153
+ } | undefined;
154
+ readonly blocked?: string | undefined;
155
+ readonly loadingStatus?: string | undefined;
156
+ };
157
+ } & {
158
+ readonly markdown: string;
159
+ } & {
160
+ readonly json: readonly {
161
+ readonly keys?: readonly string[] | undefined;
162
+ readonly method?: string | undefined;
163
+ readonly url?: string | undefined;
164
+ readonly moreTokens?: number | undefined;
165
+ readonly id: number;
166
+ readonly kind: "inline" | "network";
167
+ readonly role: "ld+json" | "next-data" | "nuxt" | "apollo-state" | "initial-state" | "application-json" | "script-tag" | "data-attribute" | "network-json" | "network-response" | "other";
168
+ readonly score: number;
169
+ }[];
170
+ } & {
171
+ readonly data?: {
172
+ readonly search?: CitedSearchResult | undefined;
173
+ readonly assets?: readonly {
174
+ readonly sha256: string;
175
+ readonly id: string;
176
+ readonly kind: "data-url";
177
+ readonly placeholder: string;
178
+ readonly archiveKey: string;
179
+ readonly mimeType: string;
180
+ readonly bytes: number;
181
+ }[] | undefined;
182
+ readonly captureTelemetry?: {
183
+ readonly requestedStyleMode?: "compat_full" | "native_default" | undefined;
184
+ readonly selected: "rust";
185
+ readonly actual: "rust";
186
+ readonly actualStyleMode?: "compat_full" | "native_default" | undefined;
187
+ readonly rolloutApplied: boolean;
188
+ readonly preparedSessionHit?: boolean | undefined;
189
+ readonly nativePoolHit?: boolean | undefined;
190
+ readonly nativePoolCapacity?: number | undefined;
191
+ readonly nativePoolProfile?: string | undefined;
192
+ readonly poolHit?: boolean | undefined;
193
+ readonly connectMs?: number | undefined;
194
+ readonly warmConnectionAgeMs?: number | undefined;
195
+ readonly iconBackendDecision?: "cpu" | "remote_gpu" | undefined;
196
+ } | undefined;
197
+ } | undefined;
198
+ }, {}, {}>;
199
+ export declare class CitedObjectModeResult extends CitedObjectModeResult_base {
200
+ }
201
+ declare const CitedSnapshotSearchResult_base: S.Class<CitedSnapshotSearchResult, {
202
+ snapshotId: S.filter<typeof S.String>;
203
+ response: typeof Generated.ResponseInfo;
204
+ search: typeof CitedSearchResult;
205
+ durationMs: S.filter<typeof S.Number>;
206
+ playground: S.SchemaClass<string, string, never>;
207
+ }, S.Struct.Encoded<{
208
+ snapshotId: S.filter<typeof S.String>;
209
+ response: typeof Generated.ResponseInfo;
210
+ search: typeof CitedSearchResult;
211
+ durationMs: S.filter<typeof S.Number>;
212
+ playground: S.SchemaClass<string, string, never>;
213
+ }>, never, {
214
+ readonly search: CitedSearchResult;
215
+ } & {
216
+ readonly response: {
217
+ readonly url: string;
218
+ readonly requestedUrl?: string | undefined;
219
+ readonly originStatusCode?: number | undefined;
220
+ readonly redirectStatusCode?: number | undefined;
221
+ readonly headers?: {} | undefined;
222
+ };
223
+ } & {
224
+ readonly snapshotId: string;
225
+ } & {
226
+ readonly playground: string;
227
+ } & {
228
+ readonly durationMs: number;
229
+ }, {}, {}>;
230
+ export declare class CitedSnapshotSearchResult extends CitedSnapshotSearchResult_base {
231
+ }
232
+ /** Add `citationUrl` to each snippet of an object-mode fetch result. */
233
+ export declare function enrichObjectModeResult(result: FetchObjectModeResultWithJson, fallbackHost: string): CitedObjectModeResult;
234
+ /** Add `citationUrl` to each snippet of a snapshot-search result (no server `meta.playground`). */
235
+ export declare function enrichSnapshotSearchResult(result: FetchSnapshotSearchResultWithJson, host: string): CitedSnapshotSearchResult;
236
+ export {};
237
+ //# sourceMappingURL=Citations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Citations.d.ts","sourceRoot":"","sources":["../../../../src/Mcp/tools/Citations.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,6BAA6B,EAAE,iCAAiC,EAAE,MAAM,yBAAyB,CAAA;AAC/G,OAAO,KAAK,SAAS,MAAM,yBAAyB,CAAA;AAEpD,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEpC,qBAAa,YAAa,SAAQ,iBAUhC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAIrC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAYzC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,yBAA0B,SAAQ,8BAM7C;CAAG;AAyBL,wEAAwE;AACxE,wBAAgB,sBAAsB,CACrC,MAAM,EAAE,6BAA6B,EACrC,YAAY,EAAE,MAAM,GAClB,qBAAqB,CAkBvB;AAED,mGAAmG;AACnG,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,iCAAiC,EACzC,IAAI,EAAE,MAAM,GACV,yBAAyB,CAQ3B"}
@@ -0,0 +1,167 @@
1
+ import { Tool } from '@effect/ai';
2
+ import { Effect, Schema } from 'effect';
3
+ import { ApiClient } from '../../ApiClient.js';
4
+ import { ConfigManager } from '../../Config.js';
5
+ import { CitedObjectModeResult, CitedSnapshotSearchResult } from './Citations.js';
6
+ declare const FetchSearchParams_base: Schema.Class<FetchSearchParams, {
7
+ query: Schema.refine<string, typeof Schema.Trimmed>;
8
+ maxResults: Schema.optionalWith<Schema.filter<typeof Schema.Int>, {
9
+ default: () => number;
10
+ }>;
11
+ minScore: Schema.optionalWith<Schema.filter<typeof Schema.Number>, {
12
+ default: () => number;
13
+ }>;
14
+ }, Schema.Struct.Encoded<{
15
+ query: Schema.refine<string, typeof Schema.Trimmed>;
16
+ maxResults: Schema.optionalWith<Schema.filter<typeof Schema.Int>, {
17
+ default: () => number;
18
+ }>;
19
+ minScore: Schema.optionalWith<Schema.filter<typeof Schema.Number>, {
20
+ default: () => number;
21
+ }>;
22
+ }>, never, {
23
+ readonly query: string;
24
+ } & {
25
+ readonly maxResults?: number | undefined;
26
+ } & {
27
+ readonly minScore?: number | undefined;
28
+ }, {}, {}>;
29
+ export declare class FetchSearchParams extends FetchSearchParams_base {
30
+ }
31
+ declare const FetchParams_base: Schema.Class<FetchParams, {
32
+ url: Schema.SchemaClass<string, string, never>;
33
+ search: Schema.optional<typeof FetchSearchParams>;
34
+ includeMeta: Schema.optionalWith<typeof Schema.Boolean, {
35
+ default: () => false;
36
+ }>;
37
+ includeAppendix: Schema.optionalWith<typeof Schema.Boolean, {
38
+ default: () => false;
39
+ }>;
40
+ includeJson: Schema.optionalWith<typeof Schema.Boolean, {
41
+ default: () => true;
42
+ }>;
43
+ }, Schema.Struct.Encoded<{
44
+ url: Schema.SchemaClass<string, string, never>;
45
+ search: Schema.optional<typeof FetchSearchParams>;
46
+ includeMeta: Schema.optionalWith<typeof Schema.Boolean, {
47
+ default: () => false;
48
+ }>;
49
+ includeAppendix: Schema.optionalWith<typeof Schema.Boolean, {
50
+ default: () => false;
51
+ }>;
52
+ includeJson: Schema.optionalWith<typeof Schema.Boolean, {
53
+ default: () => true;
54
+ }>;
55
+ }>, never, {
56
+ readonly search?: FetchSearchParams | undefined;
57
+ } & {
58
+ readonly url: string;
59
+ } & {
60
+ readonly includeMeta?: boolean | undefined;
61
+ } & {
62
+ readonly includeAppendix?: boolean | undefined;
63
+ } & {
64
+ readonly includeJson?: boolean | undefined;
65
+ }, {}, {}>;
66
+ export declare class FetchParams extends FetchParams_base {
67
+ }
68
+ declare const FetchSnapshotSearchParams_base: Schema.Class<FetchSnapshotSearchParams, {
69
+ snapshotId: Schema.refine<string, typeof Schema.String>;
70
+ search: Schema.SchemaClass<FetchSearchParams, {
71
+ readonly query: string;
72
+ readonly maxResults?: number | undefined;
73
+ readonly minScore?: number | undefined;
74
+ }, never>;
75
+ includeMarkdown: Schema.optionalWith<typeof Schema.Boolean, {
76
+ default: () => true;
77
+ }>;
78
+ includeAppendix: Schema.optionalWith<typeof Schema.Boolean, {
79
+ default: () => false;
80
+ }>;
81
+ includeJson: Schema.optionalWith<typeof Schema.Boolean, {
82
+ default: () => true;
83
+ }>;
84
+ }, Schema.Struct.Encoded<{
85
+ snapshotId: Schema.refine<string, typeof Schema.String>;
86
+ search: Schema.SchemaClass<FetchSearchParams, {
87
+ readonly query: string;
88
+ readonly maxResults?: number | undefined;
89
+ readonly minScore?: number | undefined;
90
+ }, never>;
91
+ includeMarkdown: Schema.optionalWith<typeof Schema.Boolean, {
92
+ default: () => true;
93
+ }>;
94
+ includeAppendix: Schema.optionalWith<typeof Schema.Boolean, {
95
+ default: () => false;
96
+ }>;
97
+ includeJson: Schema.optionalWith<typeof Schema.Boolean, {
98
+ default: () => true;
99
+ }>;
100
+ }>, never, {
101
+ readonly search: FetchSearchParams;
102
+ } & {
103
+ readonly snapshotId: string;
104
+ } & {
105
+ readonly includeAppendix?: boolean | undefined;
106
+ } & {
107
+ readonly includeJson?: boolean | undefined;
108
+ } & {
109
+ readonly includeMarkdown?: boolean | undefined;
110
+ }, {}, {}>;
111
+ export declare class FetchSnapshotSearchParams extends FetchSnapshotSearchParams_base {
112
+ }
113
+ export declare const FetchTool: Tool.Tool<"fetch", {
114
+ readonly parameters: Schema.Struct<{
115
+ readonly url: Schema.SchemaClass<string, string, never>;
116
+ readonly search: Schema.optional<typeof FetchSearchParams>;
117
+ readonly includeMeta: Schema.optionalWith<typeof Schema.Boolean, {
118
+ default: () => false;
119
+ }>;
120
+ readonly includeAppendix: Schema.optionalWith<typeof Schema.Boolean, {
121
+ default: () => false;
122
+ }>;
123
+ readonly includeJson: Schema.optionalWith<typeof Schema.Boolean, {
124
+ default: () => true;
125
+ }>;
126
+ }>;
127
+ readonly success: typeof CitedObjectModeResult;
128
+ readonly failure: typeof Schema.Defect;
129
+ readonly failureMode: "return";
130
+ }, never>;
131
+ export declare const FetchSearchTool: Tool.Tool<"fetch_search", {
132
+ readonly parameters: Schema.Struct<{
133
+ readonly snapshotId: Schema.refine<string, typeof Schema.String>;
134
+ readonly search: Schema.SchemaClass<FetchSearchParams, {
135
+ readonly query: string;
136
+ readonly maxResults?: number | undefined;
137
+ readonly minScore?: number | undefined;
138
+ }, never>;
139
+ readonly includeMarkdown: Schema.optionalWith<typeof Schema.Boolean, {
140
+ default: () => true;
141
+ }>;
142
+ readonly includeAppendix: Schema.optionalWith<typeof Schema.Boolean, {
143
+ default: () => false;
144
+ }>;
145
+ readonly includeJson: Schema.optionalWith<typeof Schema.Boolean, {
146
+ default: () => true;
147
+ }>;
148
+ }>;
149
+ readonly success: typeof CitedSnapshotSearchResult;
150
+ readonly failure: typeof Schema.Defect;
151
+ readonly failureMode: "return";
152
+ }, never>;
153
+ export interface FetchService {
154
+ readonly fetch: (params: FetchParams) => Effect.Effect<CitedObjectModeResult, unknown>;
155
+ readonly fetchSearch: (params: FetchSnapshotSearchParams) => Effect.Effect<CitedSnapshotSearchResult, unknown>;
156
+ }
157
+ declare const Fetch_base: Effect.Service.Class<Fetch, "@expandai/cli/Mcp/Fetch", {
158
+ readonly dependencies: readonly [import("effect/Layer").Layer<ApiClient, import("effect/ConfigError").ConfigError, never>, import("effect/Layer").Layer<ConfigManager, import("effect/ConfigError").ConfigError, never>];
159
+ readonly scoped: Effect.Effect<{
160
+ fetch: (params: FetchParams) => Effect.Effect<CitedObjectModeResult, unknown>;
161
+ fetchSearch: (params: FetchSnapshotSearchParams) => Effect.Effect<CitedSnapshotSearchResult, unknown>;
162
+ }, import("effect/ConfigError").ConfigError, ConfigManager | ApiClient>;
163
+ }>;
164
+ export declare class Fetch extends Fetch_base {
165
+ }
166
+ export {};
167
+ //# sourceMappingURL=Fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Fetch.d.ts","sourceRoot":"","sources":["../../../../src/Mcp/tools/Fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EACN,qBAAqB,EACrB,yBAAyB,EAGzB,MAAM,gBAAgB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAEvB,qBAAa,iBAAkB,SAAQ,sBAYrC;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,WAAY,SAAQ,gBAmB/B;CAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEL,qBAAa,yBAA0B,SAAQ,8BAmB7C;CAAG;AAEL,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;SAea,CAAA;AAEnC,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;SAcO,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAA;IACtF,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAA;CAC9G;;;;wBAFyB,WAAW,KAAK,MAAM,CAAC,MAAM,CAAC,qBAAqB,EAAE,OAAO,CAAC;8BACvD,yBAAyB,KAAK,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE,OAAO,CAAC;;;AAG/G,qBAAa,KAAM,SAAQ,UAuEzB;CAAG"}
@@ -0,0 +1,19 @@
1
+ import { type CitationSource } from '@expandai/sdk/Playground';
2
+ interface RenderableSnippetLocation {
3
+ readonly nodeIds?: ReadonlyArray<number> | null;
4
+ readonly stateJsonSourceId?: number | null;
5
+ }
6
+ interface RenderableSnippet {
7
+ readonly source: CitationSource;
8
+ readonly text: string;
9
+ readonly score: number;
10
+ readonly location?: RenderableSnippetLocation | null;
11
+ readonly json?: unknown;
12
+ }
13
+ /**
14
+ * Render search snippets as auditable text blocks: a header carrying the source, score, and
15
+ * citation link, the snippet text, and — for State JSON snippets — the extracted JSON value.
16
+ */
17
+ export declare function renderSnippets(snapshotId: string, host: string, snippets: ReadonlyArray<RenderableSnippet>): string;
18
+ export {};
19
+ //# sourceMappingURL=Snippets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Snippets.d.ts","sourceRoot":"","sources":["../../src/Snippets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAAe,MAAM,0BAA0B,CAAA;AAK3E,UAAU,yBAAyB;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1C;AAED,UAAU,iBAAiB;IAC1B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAA;IACpD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CACvB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,CAAC,iBAAiB,CAAC,GAAG,MAAM,CASnH"}
@@ -0,0 +1,2 @@
1
+ export * from './Mcp/Server.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":""}
@@ -0,0 +1,182 @@
1
+ import { HttpClient, HttpClientRequest, HttpClientResponse } from '@effect/platform';
2
+ import { NodeHttpClient } from '@effect/platform-node';
3
+ import { fetchObjectModeJson, fetchSnapshotSearch } from '@expandai/sdk/FetchJson';
4
+ import * as Generated from '@expandai/sdk/Generated';
5
+ import { decodeError, unexpectedStatus } from '@expandai/sdk/HttpClientHelpers';
6
+ import { Data, DateTime, Duration, Effect, flow, Match, Option, Redacted, Schema } from 'effect';
7
+ import { BrowserOAuthService } from './BrowserOAuth.js';
8
+ import { ConfigManager, OAuthConfig, OAuthTokenExpired } from './Config.js';
9
+ import { CurrentRequestHeaders } from './Mcp/RequestHeaders.js';
10
+ /**
11
+ * Single user-facing error for any failure crossing the API boundary. The
12
+ * generated client raises a half-dozen status-specific tagged classes plus
13
+ * transport/decode errors; we collapse them here so the rest of the app sees
14
+ * one tag with a ready-made `.message` and never has to know about
15
+ * `Generated.ts` types.
16
+ */
17
+ export class ApiRequestFailed extends Schema.TaggedError()('ApiRequestFailed', {
18
+ detail: Schema.String,
19
+ }) {
20
+ get message() {
21
+ return this.detail;
22
+ }
23
+ }
24
+ const OAUTH_REFRESH_SKEW = Duration.minutes(1);
25
+ class OAuthAuthMethodChanged extends Data.TaggedError('OAuthAuthMethodChanged') {
26
+ }
27
+ function getField(value, key) {
28
+ return typeof value === 'object' && value !== null && key in value ? value[key] : undefined;
29
+ }
30
+ function getStringField(value, key) {
31
+ const field = getField(value, key);
32
+ return typeof field === 'string' ? field : undefined;
33
+ }
34
+ function getIssueList(value) {
35
+ const issues = getField(value, 'issues');
36
+ return Array.isArray(issues) ? issues : [];
37
+ }
38
+ function getUnsupportedFields(value) {
39
+ const unsupportedFields = getField(value, 'unsupportedFields');
40
+ return Array.isArray(unsupportedFields) ? unsupportedFields.filter((field) => typeof field === 'string') : [];
41
+ }
42
+ const formatIssue = Effect.fn('ApiClient.formatIssue')(function* ({ path, message }) {
43
+ const prefix = path.map((segment) => (typeof segment === 'object' ? segment.key : String(segment))).join('.');
44
+ return prefix ? `${prefix}: ${message}` : message;
45
+ });
46
+ const formatApiFailure = Effect.fn('ApiClient.formatApiFailure')(function* (error) {
47
+ switch (getStringField(error, '_tag')) {
48
+ case 'HttpApiDecodeError': {
49
+ const issues = getIssueList(error);
50
+ return yield* issues.length === 0
51
+ ? Effect.succeed(getStringField(error, 'message') ?? 'Invalid request')
52
+ : Effect.forEach(issues, formatIssue).pipe(Effect.map((parts) => parts.join('; ')));
53
+ }
54
+ case 'AuthFailed':
55
+ return `Authentication failed (${getStringField(error, 'reason') ?? 'unknown'}). Run \`expandai login\` to re-authenticate.`;
56
+ case 'AccessBlocked':
57
+ return 'Access blocked. Check your billing status or contact support.';
58
+ case 'BatchedIncludeUnsupported':
59
+ return `Unsupported batched include fields: ${getUnsupportedFields(error).join(', ')}.`;
60
+ case 'FetchSnapshotSearchNotFound':
61
+ return 'Fetch snapshot not found.';
62
+ case 'PayloadTooLarge':
63
+ return 'Request payload is too large.';
64
+ case 'TooManyRequests':
65
+ return 'Rate limit exceeded — try again in a moment.';
66
+ case 'InternalError':
67
+ return 'The expand.ai API returned an internal error. Try again or contact support.';
68
+ case 'ServiceUnavailable':
69
+ return 'The expand.ai API is temporarily unavailable. Try again shortly.';
70
+ default:
71
+ return error instanceof Error ? error.message : (getStringField(error, 'message') ?? 'Expand API request failed.');
72
+ }
73
+ });
74
+ const liftApiError = (self) => self.pipe(Effect.catchAll((error) => formatApiFailure(error).pipe(Effect.flatMap((detail) => Effect.fail(new ApiRequestFailed({ detail }))))));
75
+ /**
76
+ * Resolves outgoing API auth per call. When the current request scope carries
77
+ * an `Authorization` header (via `CurrentRequestHeaders`), that value is
78
+ * forwarded; otherwise auth comes from `~/.config/expandai/config.json`.
79
+ */
80
+ export class ApiClient extends Effect.Service()('@expandai/cli/ApiClient', {
81
+ dependencies: [NodeHttpClient.layer, ConfigManager.Default, BrowserOAuthService.Default],
82
+ scoped: Effect.gen(function* () {
83
+ const configManager = yield* ConfigManager;
84
+ const browserOAuth = yield* BrowserOAuthService;
85
+ const baseClient = yield* HttpClient.HttpClient;
86
+ const refreshLock = yield* Effect.makeSemaphore(1);
87
+ const freshOAuthAccessToken = Effect.fn('ApiClient.freshOAuthAccessToken')(function* ({ accessToken, expiresAt, refreshToken, }) {
88
+ const now = yield* DateTime.now;
89
+ const refreshThreshold = refreshToken === undefined ? now : DateTime.addDuration(now, OAUTH_REFRESH_SKEW);
90
+ if (DateTime.lessThan(refreshThreshold, expiresAt)) {
91
+ return Option.some(Redacted.value(accessToken));
92
+ }
93
+ return Option.none();
94
+ });
95
+ const refreshOAuthToken = Effect.fn('ApiClient.refreshOAuthToken')(function* ({ refreshToken, expiresAt, }) {
96
+ if (refreshToken === undefined) {
97
+ return yield* new OAuthTokenExpired({ expiredAt: expiresAt });
98
+ }
99
+ const now = yield* DateTime.now;
100
+ const token = yield* browserOAuth.refreshToken(Redacted.value(refreshToken));
101
+ if (token === undefined) {
102
+ return yield* new OAuthTokenExpired({ expiredAt: expiresAt });
103
+ }
104
+ const refreshedExpiresAt = DateTime.addDuration(now, token.expires_in);
105
+ const nextRefreshToken = token.refresh_token === undefined ? refreshToken : Redacted.make(token.refresh_token);
106
+ yield* configManager.updateConfig({
107
+ authMethod: OAuthConfig.make({
108
+ accessToken: Redacted.make(token.access_token),
109
+ refreshToken: nextRefreshToken,
110
+ expiresAt: refreshedExpiresAt,
111
+ }),
112
+ });
113
+ return token.access_token;
114
+ });
115
+ const oauthBearerToken = Effect.fn('ApiClient.oauthBearerToken')(function* (authMethod) {
116
+ const alreadyFresh = yield* freshOAuthAccessToken(authMethod);
117
+ if (Option.isSome(alreadyFresh)) {
118
+ return alreadyFresh.value;
119
+ }
120
+ return yield* refreshLock.withPermits(1)(Effect.gen(function* () {
121
+ const { authMethod: persistedAuthMethod } = yield* configManager.loadConfig();
122
+ if (persistedAuthMethod._tag !== 'OAuth') {
123
+ return yield* new OAuthAuthMethodChanged({});
124
+ }
125
+ const persistedFresh = yield* freshOAuthAccessToken(persistedAuthMethod);
126
+ if (Option.isSome(persistedFresh)) {
127
+ return persistedFresh.value;
128
+ }
129
+ return yield* refreshOAuthToken(persistedAuthMethod);
130
+ }));
131
+ });
132
+ // Resolved per call, not at construction. Effect Layers are globally
133
+ // memoized, so capturing CurrentRequestHeaders here once would freeze
134
+ // auth resolution to whatever was on the first request. Reading per
135
+ // call also keeps the OAuth `expiresAt` check live against `DateTime.now`.
136
+ // `Effect.serviceOption` reads the tag from the outer fiber context
137
+ // without leaking it into our R, so the API's per-request
138
+ // `Context.make(CurrentRequestHeaders, headers)` flows through and the
139
+ // stdio MCP path simply gets `Option.none` → empty headers.
140
+ const buildAuthedClientOnce = () => Effect.gen(function* () {
141
+ const forwardedHeaders = yield* Effect.serviceOption(CurrentRequestHeaders).pipe(Effect.map(Option.getOrElse(() => ({}))));
142
+ // header keys are lowercase per WHATWG Headers spec.
143
+ const forwardedAuth = Option.fromNullable(forwardedHeaders['authorization']);
144
+ if (Option.isSome(forwardedAuth)) {
145
+ // Forwarded path: caller owns the token's lifecycle (their session,
146
+ // their bearer). We don't re-check expiry — if it's stale the API
147
+ // will return 401. `OAuthTokenExpired` is for the *persisted*
148
+ // OAuth in the loadConfig branch only.
149
+ const apiUrl = yield* configManager.getApiUrl();
150
+ const mapRequest = flow(HttpClientRequest.prependUrl(apiUrl.toString()), HttpClientRequest.setHeader('authorization', forwardedAuth.value));
151
+ return baseClient.pipe(HttpClient.mapRequest(mapRequest));
152
+ }
153
+ const { authMethod, apiUrl } = yield* configManager.loadConfig();
154
+ const applyAuth = yield* Match.value(authMethod).pipe(Match.tag('ApiKey', ({ apiKey }) => Effect.succeed(HttpClientRequest.setHeader('x-expand-api-key', Redacted.value(apiKey)))), Match.tag('OAuth', (authMethod) => oauthBearerToken(authMethod).pipe(Effect.map((accessToken) => HttpClientRequest.bearerToken(accessToken)))), Match.exhaustive);
155
+ const mapRequest = flow(HttpClientRequest.prependUrl(apiUrl.toString()), applyAuth);
156
+ return baseClient.pipe(HttpClient.mapRequest(mapRequest));
157
+ });
158
+ const buildAuthedClient = () => buildAuthedClientOnce().pipe(Effect.catchTag('OAuthAuthMethodChanged', () => buildAuthedClientOnce()));
159
+ const buildAuthed = () => buildAuthedClient().pipe(Effect.map(Generated.make));
160
+ const fetchMarkdown = (client, options) => HttpClientRequest.make('POST')('/v1/fetch').pipe(HttpClientRequest.setUrlParams(options.params.include !== undefined ? { include: options.params.include } : {}), (req) => Effect.orDie(HttpClientRequest.bodyJson(req, options.payload)), Effect.flatMap((request) => Effect.flatMap(client.execute(request), HttpClientResponse.matchStatus({
161
+ '200': (response) => response.text,
162
+ '400': (response) => decodeError(response, Generated.FetchFetch400),
163
+ '401': (response) => decodeError(response, Generated.AuthFailed),
164
+ '403': (response) => decodeError(response, Generated.FetchFetch403),
165
+ '413': (response) => decodeError(response, Generated.PayloadTooLarge),
166
+ '429': (response) => decodeError(response, Generated.TooManyRequests),
167
+ '500': (response) => decodeError(response, Generated.InternalError),
168
+ '503': (response) => decodeError(response, Generated.ServiceUnavailable),
169
+ orElse: (response) => unexpectedStatus(request, response),
170
+ }))));
171
+ return {
172
+ fetchFetch: (...args) => buildAuthedClient().pipe(Effect.flatMap((client) => fetchMarkdown(client, ...args).pipe(liftApiError))),
173
+ fetchFetchResult: (...args) => buildAuthedClient().pipe(Effect.flatMap((client) => fetchObjectModeJson(client, ...args).pipe(liftApiError))),
174
+ fetchFetchJson: (...args) => buildAuthedClient().pipe(Effect.flatMap((client) => fetchObjectModeJson(client, ...args).pipe(liftApiError))),
175
+ fetchFetchSearch: (...args) => buildAuthedClient().pipe(Effect.flatMap((client) => fetchSnapshotSearch(client, ...args).pipe(liftApiError))),
176
+ fetchBatched: (...args) => buildAuthed().pipe(Effect.flatMap((client) => client.fetchBatched(...args).pipe(liftApiError))),
177
+ fetchGetBatched: (...args) => buildAuthed().pipe(Effect.flatMap((client) => client.fetchGetBatched(...args).pipe(liftApiError))),
178
+ };
179
+ }),
180
+ }) {
181
+ }
182
+ //# sourceMappingURL=ApiClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiClient.js","sourceRoot":"","sources":["../../src/ApiClient.ts"],"names":[],"mappings":"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"}