expandai 0.0.4 → 0.0.6

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 (321) hide show
  1. package/README.md +2 -2
  2. package/build/{esm/Install/Opencode → assets/opencode}/expandai-webfetch.js +22 -4
  3. package/build/dts/Mcp/RequestHeaders.d.ts +0 -1
  4. package/build/dts/Mcp/Server.d.ts +1 -2
  5. package/build/dts/index.d.ts +0 -1
  6. package/build/esm/index.js +193 -2
  7. package/build/esm/main.js +691 -200
  8. package/build/skills/expandai/SKILL.md +100 -8
  9. package/package.json +20 -12
  10. package/build/dts/ApiClient.d.ts +0 -165
  11. package/build/dts/ApiClient.d.ts.map +0 -1
  12. package/build/dts/Auth/Domain.d.ts +0 -95
  13. package/build/dts/Auth/Domain.d.ts.map +0 -1
  14. package/build/dts/Auth/ManualAuthorization.d.ts +0 -107
  15. package/build/dts/Auth/ManualAuthorization.d.ts.map +0 -1
  16. package/build/dts/Auth/PendingInit.d.ts +0 -35
  17. package/build/dts/Auth/PendingInit.d.ts.map +0 -1
  18. package/build/dts/Auth/Pkce.d.ts +0 -10
  19. package/build/dts/Auth/Pkce.d.ts.map +0 -1
  20. package/build/dts/Auth/SetupGrantAuthorization.d.ts +0 -34
  21. package/build/dts/Auth/SetupGrantAuthorization.d.ts.map +0 -1
  22. package/build/dts/Authentication.d.ts +0 -24
  23. package/build/dts/Authentication.d.ts.map +0 -1
  24. package/build/dts/BrowserOAuth.d.ts +0 -99
  25. package/build/dts/BrowserOAuth.d.ts.map +0 -1
  26. package/build/dts/CommandPath.d.ts +0 -2
  27. package/build/dts/CommandPath.d.ts.map +0 -1
  28. package/build/dts/Commands/Fetch.d.ts +0 -30
  29. package/build/dts/Commands/Fetch.d.ts.map +0 -1
  30. package/build/dts/Commands/Hook.d.ts +0 -17
  31. package/build/dts/Commands/Hook.d.ts.map +0 -1
  32. package/build/dts/Commands/Init.d.ts +0 -55
  33. package/build/dts/Commands/Init.d.ts.map +0 -1
  34. package/build/dts/Commands/Mcp.d.ts +0 -11
  35. package/build/dts/Commands/Mcp.d.ts.map +0 -1
  36. package/build/dts/Commands/McpRun.d.ts +0 -5
  37. package/build/dts/Commands/McpRun.d.ts.map +0 -1
  38. package/build/dts/Commands/Search.d.ts +0 -21
  39. package/build/dts/Commands/Search.d.ts.map +0 -1
  40. package/build/dts/Commands/Skill.d.ts +0 -12
  41. package/build/dts/Commands/Skill.d.ts.map +0 -1
  42. package/build/dts/Commands/Status.d.ts +0 -27
  43. package/build/dts/Commands/Status.d.ts.map +0 -1
  44. package/build/dts/Commands/Telemetry.d.ts +0 -7
  45. package/build/dts/Commands/Telemetry.d.ts.map +0 -1
  46. package/build/dts/Commands/Uninstall.d.ts +0 -9
  47. package/build/dts/Commands/Uninstall.d.ts.map +0 -1
  48. package/build/dts/Config.d.ts +0 -196
  49. package/build/dts/Config.d.ts.map +0 -1
  50. package/build/dts/Hook/Claude.d.ts +0 -13
  51. package/build/dts/Hook/Claude.d.ts.map +0 -1
  52. package/build/dts/Hook/Errors.d.ts +0 -20
  53. package/build/dts/Hook/Errors.d.ts.map +0 -1
  54. package/build/dts/Hook/Opencode.d.ts +0 -13
  55. package/build/dts/Hook/Opencode.d.ts.map +0 -1
  56. package/build/dts/Hook/SnapshotNote.d.ts +0 -12
  57. package/build/dts/Hook/SnapshotNote.d.ts.map +0 -1
  58. package/build/dts/Init/ClaudeAdapter.d.ts +0 -61
  59. package/build/dts/Init/ClaudeAdapter.d.ts.map +0 -1
  60. package/build/dts/Init/ClaudeProfile.d.ts +0 -77
  61. package/build/dts/Init/ClaudeProfile.d.ts.map +0 -1
  62. package/build/dts/Init/Domain.d.ts +0 -139
  63. package/build/dts/Init/Domain.d.ts.map +0 -1
  64. package/build/dts/Init/HarnessAdapter.d.ts +0 -33
  65. package/build/dts/Init/HarnessAdapter.d.ts.map +0 -1
  66. package/build/dts/Init/HarnessDetector.d.ts +0 -19
  67. package/build/dts/Init/HarnessDetector.d.ts.map +0 -1
  68. package/build/dts/Init/HarnessRegistry.d.ts +0 -50
  69. package/build/dts/Init/HarnessRegistry.d.ts.map +0 -1
  70. package/build/dts/Init/MutationTransaction.d.ts +0 -96
  71. package/build/dts/Init/MutationTransaction.d.ts.map +0 -1
  72. package/build/dts/Init/Service.d.ts +0 -72
  73. package/build/dts/Init/Service.d.ts.map +0 -1
  74. package/build/dts/Init/StandardAdapters.d.ts +0 -42
  75. package/build/dts/Init/StandardAdapters.d.ts.map +0 -1
  76. package/build/dts/Init/Status.d.ts +0 -149
  77. package/build/dts/Init/Status.d.ts.map +0 -1
  78. package/build/dts/Install/Claude/Hook.d.ts +0 -88
  79. package/build/dts/Install/Claude/Hook.d.ts.map +0 -1
  80. package/build/dts/Install/Claude/Mcp.d.ts +0 -48
  81. package/build/dts/Install/Claude/Mcp.d.ts.map +0 -1
  82. package/build/dts/Install/Claude/Skill.d.ts +0 -23
  83. package/build/dts/Install/Claude/Skill.d.ts.map +0 -1
  84. package/build/dts/Install/Codex/Mcp.d.ts +0 -45
  85. package/build/dts/Install/Codex/Mcp.d.ts.map +0 -1
  86. package/build/dts/Install/Codex/Skill.d.ts +0 -22
  87. package/build/dts/Install/Codex/Skill.d.ts.map +0 -1
  88. package/build/dts/Install/Cursor/Mcp.d.ts +0 -45
  89. package/build/dts/Install/Cursor/Mcp.d.ts.map +0 -1
  90. package/build/dts/Install/Cursor/Skill.d.ts +0 -29
  91. package/build/dts/Install/Cursor/Skill.d.ts.map +0 -1
  92. package/build/dts/Install/Domain.d.ts +0 -103
  93. package/build/dts/Install/Domain.d.ts.map +0 -1
  94. package/build/dts/Install/Hook.d.ts +0 -30
  95. package/build/dts/Install/Hook.d.ts.map +0 -1
  96. package/build/dts/Install/Mcp.d.ts +0 -28
  97. package/build/dts/Install/Mcp.d.ts.map +0 -1
  98. package/build/dts/Install/Opencode/Hook.d.ts +0 -24
  99. package/build/dts/Install/Opencode/Hook.d.ts.map +0 -1
  100. package/build/dts/Install/Opencode/Mcp.d.ts +0 -47
  101. package/build/dts/Install/Opencode/Mcp.d.ts.map +0 -1
  102. package/build/dts/Install/Opencode/Skill.d.ts +0 -26
  103. package/build/dts/Install/Opencode/Skill.d.ts.map +0 -1
  104. package/build/dts/Install/Skill.d.ts +0 -32
  105. package/build/dts/Install/Skill.d.ts.map +0 -1
  106. package/build/dts/Install/Uninstall.d.ts +0 -32
  107. package/build/dts/Install/Uninstall.d.ts.map +0 -1
  108. package/build/dts/MarkdownAnsi.d.ts +0 -29
  109. package/build/dts/MarkdownAnsi.d.ts.map +0 -1
  110. package/build/dts/Mcp/ExpandDocs.d.ts +0 -19
  111. package/build/dts/Mcp/ExpandDocs.d.ts.map +0 -1
  112. package/build/dts/Mcp/RequestHeaders.d.ts.map +0 -1
  113. package/build/dts/Mcp/Server.d.ts.map +0 -1
  114. package/build/dts/Mcp/Toolkit.d.ts +0 -3
  115. package/build/dts/Mcp/Toolkit.d.ts.map +0 -1
  116. package/build/dts/Mcp/tools/Citations.d.ts +0 -266
  117. package/build/dts/Mcp/tools/Citations.d.ts.map +0 -1
  118. package/build/dts/Mcp/tools/Fetch.d.ts +0 -168
  119. package/build/dts/Mcp/tools/Fetch.d.ts.map +0 -1
  120. package/build/dts/SecureFile.d.ts +0 -23
  121. package/build/dts/SecureFile.d.ts.map +0 -1
  122. package/build/dts/Snippets.d.ts +0 -18
  123. package/build/dts/Snippets.d.ts.map +0 -1
  124. package/build/dts/Telemetry.d.ts +0 -30
  125. package/build/dts/Telemetry.d.ts.map +0 -1
  126. package/build/dts/Version.d.ts +0 -2
  127. package/build/dts/Version.d.ts.map +0 -1
  128. package/build/dts/Xdg.d.ts +0 -11
  129. package/build/dts/Xdg.d.ts.map +0 -1
  130. package/build/dts/index.d.ts.map +0 -1
  131. package/build/dts/main.d.ts +0 -3
  132. package/build/dts/main.d.ts.map +0 -1
  133. package/build/esm/ApiClient.js +0 -305
  134. package/build/esm/ApiClient.js.map +0 -1
  135. package/build/esm/Auth/Domain.js +0 -56
  136. package/build/esm/Auth/Domain.js.map +0 -1
  137. package/build/esm/Auth/ManualAuthorization.js +0 -253
  138. package/build/esm/Auth/ManualAuthorization.js.map +0 -1
  139. package/build/esm/Auth/PendingInit.js +0 -267
  140. package/build/esm/Auth/PendingInit.js.map +0 -1
  141. package/build/esm/Auth/Pkce.js +0 -23
  142. package/build/esm/Auth/Pkce.js.map +0 -1
  143. package/build/esm/Auth/SetupGrantAuthorization.js +0 -91
  144. package/build/esm/Auth/SetupGrantAuthorization.js.map +0 -1
  145. package/build/esm/Authentication.js +0 -143
  146. package/build/esm/Authentication.js.map +0 -1
  147. package/build/esm/BrowserOAuth.js +0 -251
  148. package/build/esm/BrowserOAuth.js.map +0 -1
  149. package/build/esm/CommandPath.js +0 -31
  150. package/build/esm/CommandPath.js.map +0 -1
  151. package/build/esm/Commands/Fetch.js +0 -119
  152. package/build/esm/Commands/Fetch.js.map +0 -1
  153. package/build/esm/Commands/Hook.js +0 -20
  154. package/build/esm/Commands/Hook.js.map +0 -1
  155. package/build/esm/Commands/Init.js +0 -371
  156. package/build/esm/Commands/Init.js.map +0 -1
  157. package/build/esm/Commands/Mcp.js +0 -19
  158. package/build/esm/Commands/Mcp.js.map +0 -1
  159. package/build/esm/Commands/McpRun.js +0 -15
  160. package/build/esm/Commands/McpRun.js.map +0 -1
  161. package/build/esm/Commands/Search.js +0 -46
  162. package/build/esm/Commands/Search.js.map +0 -1
  163. package/build/esm/Commands/Skill.js +0 -17
  164. package/build/esm/Commands/Skill.js.map +0 -1
  165. package/build/esm/Commands/Status.js +0 -186
  166. package/build/esm/Commands/Status.js.map +0 -1
  167. package/build/esm/Commands/Telemetry.js +0 -23
  168. package/build/esm/Commands/Telemetry.js.map +0 -1
  169. package/build/esm/Commands/Uninstall.js +0 -28
  170. package/build/esm/Commands/Uninstall.js.map +0 -1
  171. package/build/esm/Config.js +0 -619
  172. package/build/esm/Config.js.map +0 -1
  173. package/build/esm/Hook/Claude.js +0 -74
  174. package/build/esm/Hook/Claude.js.map +0 -1
  175. package/build/esm/Hook/Errors.js +0 -18
  176. package/build/esm/Hook/Errors.js.map +0 -1
  177. package/build/esm/Hook/Opencode.js +0 -50
  178. package/build/esm/Hook/Opencode.js.map +0 -1
  179. package/build/esm/Hook/SnapshotNote.js +0 -65
  180. package/build/esm/Hook/SnapshotNote.js.map +0 -1
  181. package/build/esm/Init/ClaudeAdapter.js +0 -137
  182. package/build/esm/Init/ClaudeAdapter.js.map +0 -1
  183. package/build/esm/Init/ClaudeProfile.js +0 -344
  184. package/build/esm/Init/ClaudeProfile.js.map +0 -1
  185. package/build/esm/Init/Domain.js +0 -118
  186. package/build/esm/Init/Domain.js.map +0 -1
  187. package/build/esm/Init/HarnessAdapter.js +0 -21
  188. package/build/esm/Init/HarnessAdapter.js.map +0 -1
  189. package/build/esm/Init/HarnessDetector.js +0 -65
  190. package/build/esm/Init/HarnessDetector.js.map +0 -1
  191. package/build/esm/Init/HarnessRegistry.js +0 -58
  192. package/build/esm/Init/HarnessRegistry.js.map +0 -1
  193. package/build/esm/Init/MutationTransaction.js +0 -494
  194. package/build/esm/Init/MutationTransaction.js.map +0 -1
  195. package/build/esm/Init/Service.js +0 -319
  196. package/build/esm/Init/Service.js.map +0 -1
  197. package/build/esm/Init/StandardAdapters.js +0 -116
  198. package/build/esm/Init/StandardAdapters.js.map +0 -1
  199. package/build/esm/Init/Status.js +0 -215
  200. package/build/esm/Init/Status.js.map +0 -1
  201. package/build/esm/Install/Claude/Hook.js +0 -77
  202. package/build/esm/Install/Claude/Hook.js.map +0 -1
  203. package/build/esm/Install/Claude/Mcp.js +0 -101
  204. package/build/esm/Install/Claude/Mcp.js.map +0 -1
  205. package/build/esm/Install/Claude/Skill.js +0 -56
  206. package/build/esm/Install/Claude/Skill.js.map +0 -1
  207. package/build/esm/Install/Codex/Mcp.js +0 -97
  208. package/build/esm/Install/Codex/Mcp.js.map +0 -1
  209. package/build/esm/Install/Codex/Skill.js +0 -33
  210. package/build/esm/Install/Codex/Skill.js.map +0 -1
  211. package/build/esm/Install/Cursor/Mcp.js +0 -74
  212. package/build/esm/Install/Cursor/Mcp.js.map +0 -1
  213. package/build/esm/Install/Cursor/Skill.js +0 -40
  214. package/build/esm/Install/Cursor/Skill.js.map +0 -1
  215. package/build/esm/Install/Domain.js +0 -162
  216. package/build/esm/Install/Domain.js.map +0 -1
  217. package/build/esm/Install/Hook.js +0 -38
  218. package/build/esm/Install/Hook.js.map +0 -1
  219. package/build/esm/Install/Mcp.js +0 -40
  220. package/build/esm/Install/Mcp.js.map +0 -1
  221. package/build/esm/Install/Opencode/Hook.js +0 -44
  222. package/build/esm/Install/Opencode/Hook.js.map +0 -1
  223. package/build/esm/Install/Opencode/Mcp.js +0 -76
  224. package/build/esm/Install/Opencode/Mcp.js.map +0 -1
  225. package/build/esm/Install/Opencode/Skill.js +0 -37
  226. package/build/esm/Install/Opencode/Skill.js.map +0 -1
  227. package/build/esm/Install/Skill.js +0 -41
  228. package/build/esm/Install/Skill.js.map +0 -1
  229. package/build/esm/Install/Uninstall.js +0 -49
  230. package/build/esm/Install/Uninstall.js.map +0 -1
  231. package/build/esm/MarkdownAnsi.js +0 -142
  232. package/build/esm/MarkdownAnsi.js.map +0 -1
  233. package/build/esm/Mcp/ExpandDocs.js +0 -56
  234. package/build/esm/Mcp/ExpandDocs.js.map +0 -1
  235. package/build/esm/Mcp/RequestHeaders.js +0 -13
  236. package/build/esm/Mcp/RequestHeaders.js.map +0 -1
  237. package/build/esm/Mcp/Server.js +0 -12
  238. package/build/esm/Mcp/Server.js.map +0 -1
  239. package/build/esm/Mcp/Toolkit.js +0 -16
  240. package/build/esm/Mcp/Toolkit.js.map +0 -1
  241. package/build/esm/Mcp/tools/Citations.js +0 -193
  242. package/build/esm/Mcp/tools/Citations.js.map +0 -1
  243. package/build/esm/Mcp/tools/Fetch.js +0 -165
  244. package/build/esm/Mcp/tools/Fetch.js.map +0 -1
  245. package/build/esm/SecureFile.js +0 -36
  246. package/build/esm/SecureFile.js.map +0 -1
  247. package/build/esm/Snippets.js +0 -29
  248. package/build/esm/Snippets.js.map +0 -1
  249. package/build/esm/Telemetry.js +0 -157
  250. package/build/esm/Telemetry.js.map +0 -1
  251. package/build/esm/Version.js +0 -4
  252. package/build/esm/Version.js.map +0 -1
  253. package/build/esm/Xdg.js +0 -15
  254. package/build/esm/Xdg.js.map +0 -1
  255. package/build/esm/index.js.map +0 -1
  256. package/build/esm/main.js.map +0 -1
  257. package/src/ApiClient.ts +0 -450
  258. package/src/Auth/Domain.ts +0 -63
  259. package/src/Auth/ManualAuthorization.ts +0 -296
  260. package/src/Auth/PendingInit.ts +0 -338
  261. package/src/Auth/Pkce.ts +0 -26
  262. package/src/Auth/SetupGrantAuthorization.ts +0 -116
  263. package/src/Authentication.ts +0 -202
  264. package/src/BrowserOAuth.ts +0 -359
  265. package/src/CommandPath.ts +0 -30
  266. package/src/Commands/Fetch.ts +0 -188
  267. package/src/Commands/Hook.ts +0 -48
  268. package/src/Commands/Init.ts +0 -489
  269. package/src/Commands/Mcp.ts +0 -30
  270. package/src/Commands/McpRun.ts +0 -25
  271. package/src/Commands/Search.ts +0 -97
  272. package/src/Commands/Skill.ts +0 -30
  273. package/src/Commands/Status.ts +0 -228
  274. package/src/Commands/Telemetry.ts +0 -42
  275. package/src/Commands/Uninstall.ts +0 -38
  276. package/src/Config.ts +0 -840
  277. package/src/Hook/Claude.ts +0 -81
  278. package/src/Hook/Errors.ts +0 -19
  279. package/src/Hook/Opencode.ts +0 -58
  280. package/src/Hook/SnapshotNote.ts +0 -66
  281. package/src/Init/ClaudeAdapter.ts +0 -191
  282. package/src/Init/ClaudeProfile.ts +0 -453
  283. package/src/Init/Domain.ts +0 -153
  284. package/src/Init/HarnessAdapter.ts +0 -35
  285. package/src/Init/HarnessDetector.ts +0 -77
  286. package/src/Init/HarnessRegistry.ts +0 -87
  287. package/src/Init/MutationTransaction.ts +0 -747
  288. package/src/Init/Service.ts +0 -385
  289. package/src/Init/StandardAdapters.ts +0 -141
  290. package/src/Init/Status.ts +0 -253
  291. package/src/Install/Claude/Hook.ts +0 -123
  292. package/src/Install/Claude/Mcp.ts +0 -129
  293. package/src/Install/Claude/Skill.ts +0 -77
  294. package/src/Install/Codex/Mcp.ts +0 -114
  295. package/src/Install/Codex/Skill.ts +0 -44
  296. package/src/Install/Cursor/Mcp.ts +0 -85
  297. package/src/Install/Cursor/Skill.ts +0 -51
  298. package/src/Install/Domain.ts +0 -221
  299. package/src/Install/Hook.ts +0 -50
  300. package/src/Install/Mcp.ts +0 -71
  301. package/src/Install/Opencode/Hook.ts +0 -55
  302. package/src/Install/Opencode/Mcp.ts +0 -87
  303. package/src/Install/Opencode/Skill.ts +0 -48
  304. package/src/Install/Opencode/expandai-webfetch.d.ts +0 -23
  305. package/src/Install/Opencode/expandai-webfetch.js +0 -56
  306. package/src/Install/Skill.ts +0 -57
  307. package/src/Install/Uninstall.ts +0 -82
  308. package/src/MarkdownAnsi.ts +0 -162
  309. package/src/Mcp/ExpandDocs.ts +0 -62
  310. package/src/Mcp/RequestHeaders.ts +0 -16
  311. package/src/Mcp/Server.ts +0 -15
  312. package/src/Mcp/Toolkit.ts +0 -21
  313. package/src/Mcp/tools/Citations.ts +0 -219
  314. package/src/Mcp/tools/Fetch.ts +0 -203
  315. package/src/SecureFile.ts +0 -70
  316. package/src/Snippets.ts +0 -39
  317. package/src/Telemetry.ts +0 -186
  318. package/src/Version.ts +0 -3
  319. package/src/Xdg.ts +0 -18
  320. package/src/index.ts +0 -1
  321. package/src/main.ts +0 -305
@@ -1,165 +0,0 @@
1
- import { Tool } from '@effect/ai';
2
- import { Effect, Schema, String } from 'effect';
3
- import { ApiClient } from '../../ApiClient.js';
4
- import { ConfigManager } from '../../Config.js';
5
- import { Telemetry } from '../../Telemetry.js';
6
- import { CitedObjectModeResult, CitedSnapshotSearchResult, enrichObjectModeResult, enrichSnapshotSearchResult, } from './Citations.js';
7
- export class FetchSearchParams extends Schema.Class('FetchSearchParams')({
8
- query: Schema.NonEmptyTrimmedString.annotations({
9
- description: 'Search query. When provided, fetch returns search results only.',
10
- }),
11
- maxResults: Schema.optionalWith(Schema.Int.pipe(Schema.between(1, 50)), { default: () => 5 }).annotations({
12
- description: 'Maximum snippets to return.',
13
- default: 5,
14
- }),
15
- minScore: Schema.optionalWith(Schema.Number.pipe(Schema.between(0, 1)), { default: () => 0 }).annotations({
16
- description: 'Minimum snippet relevance score from 0 to 1.',
17
- default: 0,
18
- }),
19
- }) {
20
- }
21
- export class FetchParams extends Schema.Class('FetchParams')({
22
- url: Schema.String.annotations({
23
- description: 'The URL to fetch content from',
24
- }),
25
- search: Schema.optional(FetchSearchParams).annotations({
26
- description: 'Semantic search configuration. When provided, the API returns snippets under data.search.snippets.',
27
- }),
28
- includeMeta: Schema.optionalWith(Schema.Boolean, { default: () => false }).annotations({
29
- description: 'Include page meta tags (title, description, Open Graph)',
30
- default: false,
31
- }),
32
- includeAppendix: Schema.optionalWith(Schema.Boolean, { default: () => false }).annotations({
33
- description: 'Include extracted links and sidebar content',
34
- default: false,
35
- }),
36
- includeJson: Schema.optionalWith(Schema.Boolean, { default: () => true }).annotations({
37
- description: 'Include JSON extracted from network responses and DOM',
38
- default: true,
39
- }),
40
- }) {
41
- }
42
- export class FetchSnapshotSearchParams extends Schema.Class('FetchSnapshotSearchParams')({
43
- snapshotId: Schema.NonEmptyString.annotations({
44
- description: 'Snapshot ID returned by a previous fetch response.',
45
- }),
46
- search: FetchSearchParams.annotations({
47
- description: 'Semantic search configuration. Returns snippets from stored fetch artifacts.',
48
- }),
49
- includeMarkdown: Schema.optionalWith(Schema.Boolean, { default: () => true }).annotations({
50
- description: 'Search the stored markdown corpus.',
51
- default: true,
52
- }),
53
- includeAppendix: Schema.optionalWith(Schema.Boolean, { default: () => false }).annotations({
54
- description: 'Search extracted appendix content.',
55
- default: false,
56
- }),
57
- includeJson: Schema.optionalWith(Schema.Boolean, { default: () => true }).annotations({
58
- description: 'Search stored State JSON.',
59
- default: true,
60
- }),
61
- }) {
62
- }
63
- export const FetchTool = Tool.make('fetch', {
64
- description: String.stripMargin(`
65
- |Fetch and extract content from any URL.
66
- |
67
- |You MUST cite what you take from the result. The result carries a ready-made
68
- |'citationBlock' — append it verbatim to the end of your answer. Do not retype it, do not
69
- |substitute the URL you fetched, and do not build a link yourself: the citation points at
70
- |expand.ai's stored capture, not at the original site. Drop only the markers you did not use.
71
- |A 'Verify it' link without '?id=' is not a citation. Never invent or reuse an evidence id.
72
- |
73
- |Returns object-mode output with markdown, front-matter metadata, and optional extracted JSON.
74
- |When 'search' is set, the response also carries ranked snippets under data.search.snippets.
75
- |For State JSON sources each snippet also carries the extracted 'json' value.`),
76
- parameters: FetchParams.fields,
77
- success: CitedObjectModeResult,
78
- failure: Schema.Defect,
79
- failureMode: 'return',
80
- })
81
- .annotate(Tool.Readonly, true)
82
- .annotate(Tool.Destructive, false);
83
- export const FetchSearchTool = Tool.make('fetch_search', {
84
- description: String.stripMargin(`
85
- |Search a previous fetch by snapshotId without starting a new capture.
86
- |
87
- |You MUST cite what you take from the result. The result carries a ready-made
88
- |'citationBlock' — append it verbatim to the end of your answer. Do not retype it, do not
89
- |substitute the URL you fetched, and do not build a link yourself: the citation points at
90
- |expand.ai's stored capture, not at the original site. Drop only the markers you did not use.
91
- |A 'Verify it' link without '?id=' is not a citation. Never invent or reuse an evidence id.
92
- |
93
- |Returns ranked snippets from stored markdown, appendix, or State JSON artifacts. For State JSON
94
- |sources each snippet also carries the extracted 'json' value. The result also includes a
95
- |whole-snapshot 'playground' link.`),
96
- parameters: FetchSnapshotSearchParams.fields,
97
- success: CitedSnapshotSearchResult,
98
- failure: Schema.Defect,
99
- failureMode: 'return',
100
- })
101
- .annotate(Tool.Readonly, true)
102
- .annotate(Tool.Destructive, false);
103
- export class Fetch extends Effect.Service()('@expandai/cli/Mcp/Fetch', {
104
- dependencies: [ApiClient.Default, ConfigManager.Default, Telemetry.Default],
105
- scoped: Effect.gen(function* () {
106
- const client = yield* ApiClient;
107
- const configManager = yield* ConfigManager;
108
- const telemetry = yield* Telemetry;
109
- const playgroundHost = yield* configManager.getPlaygroundHost();
110
- const fetch = Effect.fn('Fetch.fetch')(function* ({ url, search, includeMeta, includeAppendix, includeJson, }) {
111
- yield* Effect.logDebug('MCP fetch started').pipe(Effect.annotateLogs({
112
- operation: 'fetch',
113
- hasSearch: search !== undefined,
114
- includeMeta,
115
- includeAppendix,
116
- includeJson,
117
- }));
118
- yield* telemetry.capture('mcp_tool_called', { tool: 'fetch', has_search: search !== undefined });
119
- const includeParam = includeAppendix && includeJson
120
- ? 'appendix,statejson'
121
- : includeAppendix
122
- ? 'appendix'
123
- : includeJson
124
- ? undefined
125
- : '';
126
- const result = yield* client.fetchFetchJson({
127
- params: { include: includeParam },
128
- payload: {
129
- url,
130
- include: {
131
- markdown: true,
132
- meta: includeMeta,
133
- json: includeJson,
134
- appendix: includeAppendix,
135
- },
136
- search,
137
- },
138
- });
139
- yield* Effect.logDebug('MCP fetch completed').pipe(Effect.annotateLogs({
140
- operation: 'fetch',
141
- hasSearch: search !== undefined,
142
- searchResultCount: result.data?.search?.snippets.length ?? 0,
143
- jsonEvidenceCount: result.json.length,
144
- }));
145
- return enrichObjectModeResult(result, playgroundHost);
146
- });
147
- const fetchSearch = Effect.fn('Fetch.fetchSearch')(function* ({ snapshotId, search, includeMarkdown, includeAppendix, includeJson, }) {
148
- yield* Effect.logDebug('MCP snapshot search started').pipe(Effect.annotateLogs({ operation: 'fetch_search', includeMarkdown, includeAppendix, includeJson }));
149
- yield* telemetry.capture('mcp_tool_called', { tool: 'fetch_search', has_search: true });
150
- const result = yield* client.fetchFetchSearch({
151
- snapshotId,
152
- search,
153
- include: {
154
- markdown: includeMarkdown,
155
- json: includeJson,
156
- appendix: includeAppendix,
157
- },
158
- });
159
- return enrichSnapshotSearchResult(result, playgroundHost, 'mcp-fetch-search');
160
- });
161
- return { fetch, fetchSearch };
162
- }),
163
- }) {
164
- }
165
- //# sourceMappingURL=Fetch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Fetch.js","sourceRoot":"","sources":["../../../../src/Mcp/tools/Fetch.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import { Effect, Exit, Option } from 'effect';
2
- /** Creates a file exclusively and binds its identity to the opened handle before writing bytes. */
3
- export function createExclusiveFile(fileSystem, targetPath, contents, mode) {
4
- return Effect.scoped(Effect.gen(function* () {
5
- const file = yield* fileSystem.open(targetPath, { flag: 'wx', mode });
6
- const info = yield* file.stat;
7
- const identity = {
8
- dev: info.dev,
9
- ino: Option.getOrUndefined(info.ino),
10
- mode: info.mode,
11
- type: info.type,
12
- };
13
- const writeExit = yield* Effect.exit(file.writeAll(new TextEncoder().encode(contents)).pipe(Effect.zipRight(file.sync)));
14
- if (Exit.isFailure(writeExit))
15
- return { identity, writeExit, pathMatchesHandle: false };
16
- // Validate while the creating handle is still open. In particular, Windows
17
- // may reuse a deleted file's numeric identifier immediately after its final
18
- // handle closes, making a later pathname-only comparison ambiguous.
19
- const pathInfo = yield* fileSystem.stat(targetPath);
20
- const pathMatchesHandle = matchesCreatedFile(identity, {
21
- exists: true,
22
- dev: pathInfo.dev,
23
- ino: Option.getOrUndefined(pathInfo.ino),
24
- type: pathInfo.type,
25
- });
26
- return { identity, writeExit, pathMatchesHandle };
27
- }));
28
- }
29
- /** Compares a pathname snapshot with identity captured from the creating file handle. */
30
- export function matchesCreatedFile(identity, pathIdentity) {
31
- return (pathIdentity.exists &&
32
- pathIdentity.dev === identity.dev &&
33
- pathIdentity.ino === identity.ino &&
34
- pathIdentity.type === identity.type);
35
- }
36
- //# sourceMappingURL=SecureFile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SecureFile.js","sourceRoot":"","sources":["../../src/SecureFile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAe7C,mGAAmG;AACnG,MAAM,UAAU,mBAAmB,CAClC,UAAiC,EACjC,UAAkB,EAClB,QAAgB,EAChB,IAAY;IAEZ,OAAO,MAAM,CAAC,MAAM,CACnB,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACnB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACrE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;QAC7B,MAAM,QAAQ,GAAwB;YACrC,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SACf,CAAA;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAClF,CAAA;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;YAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,KAAK,EAAW,CAAA;QAEhG,2EAA2E;QAC3E,4EAA4E;QAC5E,oEAAoE;QACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACnD,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,QAAQ,EAAE;YACtD,MAAM,EAAE,IAAI;YACZ,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxC,IAAI,EAAE,QAAQ,CAAC,IAAI;SACnB,CAAC,CAAA;QACF,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAW,CAAA;IAC3D,CAAC,CAAC,CACF,CAAA;AACF,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,kBAAkB,CACjC,QAA6B,EAC7B,YAKC;IAED,OAAO,CACN,YAAY,CAAC,MAAM;QACnB,YAAY,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;QACjC,YAAY,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG;QACjC,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,CACnC,CAAA;AACF,CAAC"}
@@ -1,29 +0,0 @@
1
- import { citationUrl } from '@expandai/sdk/Playground';
2
- import { Schema } from 'effect';
3
- const encodeJson = Schema.encodeSync(Schema.parseJson(Schema.Unknown, { space: 2 }));
4
- /**
5
- * Attaches the public citation link to each snippet. JSON consumers get the same
6
- * auditable URL the text renderer prints in its header — without it, a caller has
7
- * the snapshot and the evidence id but no host to build a link against.
8
- */
9
- export function withCitationUrls(snapshotId, host, snippets) {
10
- return snippets.map((snippet) => ({
11
- ...snippet,
12
- citationUrl: citationUrl(snapshotId, snippet.location, host),
13
- }));
14
- }
15
- /**
16
- * Render search snippets as auditable text blocks: a header carrying the source, score, and
17
- * citation link, the snippet text, and — for State JSON snippets — the extracted JSON value.
18
- */
19
- export function renderSnippets(snapshotId, host, snippets) {
20
- return snippets
21
- .map((snippet) => {
22
- const url = citationUrl(snapshotId, snippet.location, host);
23
- const header = `[${snippet.source} · score ${snippet.score.toFixed(2)}] ${url}`;
24
- const json = snippet.json == null ? '' : `\n\n${encodeJson(snippet.json)}`;
25
- return `${header}\n\n${snippet.text}${json}`;
26
- })
27
- .join('\n\n---\n\n');
28
- }
29
- //# sourceMappingURL=Snippets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Snippets.js","sourceRoot":"","sources":["../../src/Snippets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAKpF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC/B,UAAkB,EAClB,IAAY,EACZ,QAA0B;IAE1B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjC,GAAG,OAAO;QACV,WAAW,EAAE,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;KAC5D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,UAAkB,EAAE,IAAY,EAAE,QAA0C;IAC1G,OAAO,QAAQ;SACb,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAChB,MAAM,GAAG,GAAG,WAAW,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QAC3D,MAAM,MAAM,GAAG,IAAI,OAAO,CAAC,MAAM,YAAY,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAA;QAC/E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;QAC1E,OAAO,GAAG,MAAM,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,EAAE,CAAA;IAC7C,CAAC,CAAC;SACD,IAAI,CAAC,aAAa,CAAC,CAAA;AACtB,CAAC"}
@@ -1,157 +0,0 @@
1
- /**
2
- * Anonymous usage telemetry (PostHog). Events carry a persisted machine UUID,
3
- * the invoking harness, and coarse feature usage — never URLs, queries,
4
- * keys, or tokens.
5
- *
6
- * Delivery is fire-and-forget: each capture forks into a FiberSet and `flush`
7
- * caps shutdown at one second, so telemetry can never block a command, delay
8
- * an MCP/hook payload, or write to stdout (stdout is a protocol surface).
9
- *
10
- * Settings live in the config file (`telemetry.enabled` / `distinctId` /
11
- * `noticeShown`). `DO_NOT_TRACK` / `EXPANDAI_NO_TELEMETRY`, or a non-default
12
- * effective API URL (env or config file — dev traffic), disable capture per
13
- * invocation without touching the file. A config file that fails to parse
14
- * also disables telemetry for the invocation and is never written to.
15
- */
16
- import { randomUUID } from 'node:crypto';
17
- import { HttpClient, HttpClientRequest } from '@effect/platform';
18
- import { NodeHttpClient } from '@effect/platform-node';
19
- import { Config, Console, Effect, FiberSet, Layer, Option } from 'effect';
20
- import { ConfigManager, DEFAULT_API_URL, envFlag, envLiteral } from './Config.js';
21
- import { Harness } from './Install/Domain.js';
22
- import { CLI_VERSION } from './Version.js';
23
- // Every field reads leniently (envFlag / envLiteral / plain strings) so a
24
- // malformed env var can never fail service construction — telemetry must
25
- // silently degrade, not crash the CLI.
26
- export const TelemetryEnvironment = Config.all({
27
- // PostHog project write-only key — safe to embed as the default (it ships
28
- // in every browser bundle that uses posthog-js) and only permits ingestion.
29
- apiKey: Config.string('POSTHOG_API_KEY').pipe(Config.withDefault('phc_sffcV4skT33mMKmo0BenNoE7t7AghUrOugyW9qSx43B')),
30
- host: Config.string('POSTHOG_HOST').pipe(Config.withDefault('https://us.i.posthog.com')),
31
- doNotTrack: envFlag('DO_NOT_TRACK'),
32
- noTelemetry: envFlag('EXPANDAI_NO_TELEMETRY'),
33
- apiUrl: Config.string('EXPAND_API_URL').pipe(Config.option),
34
- // Baked into MCP/hook configs at install time; wins over ambient signals.
35
- // An unrecognized value (e.g. written by a newer installer) reads as None.
36
- harnessOverride: envLiteral('EXPANDAI_HARNESS', Harness),
37
- claudeCode: envFlag('CLAUDECODE'),
38
- cursor: Config.string('CURSOR_TRACE_ID').pipe(Config.option, Config.map(Option.isSome)),
39
- codex: Config.string('CODEX_RUN_ID').pipe(Config.option, Config.map(Option.isSome)),
40
- });
41
- function detectHarness(environment) {
42
- if (Option.isSome(environment.harnessOverride))
43
- return environment.harnessOverride.value;
44
- if (environment.claudeCode)
45
- return 'claude-code';
46
- if (environment.cursor)
47
- return 'cursor';
48
- if (environment.codex)
49
- return 'codex';
50
- return 'unknown';
51
- }
52
- const generateDistinctId = Effect.sync(() => randomUUID());
53
- // Lenient normalization for the non-default-API comparison: `new URL()` adds
54
- // the trailing slash a bare origin string lacks, and a value that doesn't
55
- // parse compares as non-default — never crash construction, and treat unknown
56
- // endpoints as non-production traffic.
57
- function normalizeApiUrl(url) {
58
- try {
59
- return new URL(url).toString();
60
- }
61
- catch {
62
- return `unparseable:${url}`;
63
- }
64
- }
65
- export class Telemetry extends Effect.Service()('@expandai/cli/Telemetry', {
66
- dependencies: [ConfigManager.Default, NodeHttpClient.layer],
67
- scoped: Effect.gen(function* () {
68
- const configManager = yield* ConfigManager;
69
- const httpClient = yield* HttpClient.HttpClient;
70
- const fibers = yield* FiberSet.make();
71
- const environment = yield* TelemetryEnvironment;
72
- // EXPAND_API_KEY overrides the config file for requests (see ConfigManager),
73
- // so it must win here too or env-key users all report 'none'.
74
- const envApiKey = yield* Config.string('EXPAND_API_KEY').pipe(Config.option, Config.map(Option.isSome));
75
- // The config file is read best-effort: telemetry must work (or silently
76
- // no-op) before login and survive an unreadable config. A parse failure
77
- // disables capture for the invocation — an unreadable file must never be
78
- // mistaken for an empty one, and never be written to.
79
- const { config, parseFailed } = yield* configManager.readConfigFile();
80
- const settings = config.telemetry;
81
- // Same env-over-file precedence as ConfigManager: a self-hosted apiUrl in
82
- // the config file is dev traffic too. Deliberately not Config.url /
83
- // getApiUrl — those fail on a malformed env value, and telemetry must
84
- // degrade instead of crashing the CLI.
85
- const effectiveApiUrl = Option.firstSomeOf([
86
- environment.apiUrl,
87
- Option.map(Option.fromNullable(config.apiUrl), (url) => url.toString()),
88
- ]);
89
- const nonDefaultApi = Option.match(effectiveApiUrl, {
90
- onNone: () => false,
91
- onSome: (url) => normalizeApiUrl(url) !== normalizeApiUrl(DEFAULT_API_URL),
92
- });
93
- const enabled = !environment.doNotTrack &&
94
- !environment.noTelemetry &&
95
- !nonDefaultApi &&
96
- !parseFailed &&
97
- settings?.enabled !== false;
98
- const harness = detectHarness(environment);
99
- const authMethod = envApiKey
100
- ? 'api-key'
101
- : config.authMethod?._tag === 'ApiKey'
102
- ? 'api-key'
103
- : config.authMethod?._tag === 'OAuth'
104
- ? 'oauth'
105
- : 'none';
106
- const persistNewDistinctId = Effect.fnUntraced(function* () {
107
- const generated = yield* generateDistinctId;
108
- // Best-effort persistence — an unwritable config yields a per-run id.
109
- yield* configManager.updateConfig({ telemetry: { ...settings, distinctId: generated } }).pipe(Effect.ignore);
110
- return generated;
111
- });
112
- // Disabled runs never write: DO_NOT_TRACK users don't get an id persisted,
113
- // and after a parse failure a write would clobber the original file.
114
- const distinctId = settings?.distinctId ?? (enabled ? yield* persistNewDistinctId() : yield* generateDistinctId);
115
- const capture = Effect.fn('Telemetry.capture')(function* (event, properties) {
116
- if (!enabled)
117
- return;
118
- const post = HttpClientRequest.post(`${environment.host}/i/v0/e`).pipe(HttpClientRequest.bodyJson({
119
- api_key: environment.apiKey,
120
- event,
121
- distinct_id: distinctId,
122
- timestamp: new Date().toISOString(),
123
- properties: {
124
- $lib: 'expandai-cli',
125
- $lib_version: CLI_VERSION,
126
- version: CLI_VERSION,
127
- harness,
128
- auth_method: authMethod,
129
- ...properties,
130
- },
131
- }));
132
- yield* FiberSet.run(fibers, post.pipe(Effect.flatMap((request) => httpClient.execute(request)), Effect.scoped, Effect.timeout('2 seconds'), Effect.ignore));
133
- });
134
- // Cap delivery at flush time so short-lived processes get events out
135
- // without ever holding the process open noticeably.
136
- const flush = FiberSet.awaitEmpty(fibers).pipe(Effect.timeout('1 second'), Effect.ignore);
137
- const showNoticeIfNeeded = Effect.fn('Telemetry.showNoticeIfNeeded')(function* () {
138
- if (!enabled || settings?.noticeShown === true)
139
- return;
140
- yield* Console.error('expandai collects anonymous usage data to improve the CLI. Opt out with `expandai telemetry disable` or EXPANDAI_NO_TELEMETRY=1.');
141
- yield* configManager
142
- .updateConfig({ telemetry: { ...settings, distinctId, noticeShown: true } })
143
- .pipe(Effect.ignore);
144
- });
145
- return { capture, flush, showNoticeIfNeeded, enabled, distinctId };
146
- }),
147
- }) {
148
- /** A side-effect-free telemetry service for commands whose contract is read-only. */
149
- static DISABLED = Layer.succeed(Telemetry, Telemetry.make({
150
- capture: () => Effect.void,
151
- flush: Effect.void,
152
- showNoticeIfNeeded: () => Effect.void,
153
- enabled: false,
154
- distinctId: 'disabled',
155
- }));
156
- }
157
- //# sourceMappingURL=Telemetry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Telemetry.js","sourceRoot":"","sources":["../../src/Telemetry.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- // Single source of truth for the CLI version. Keep in sync with package.json —
2
- // the compiled binary cannot read package.json at runtime.
3
- export const CLI_VERSION = '0.0.4';
4
- //# sourceMappingURL=Version.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Version.js","sourceRoot":"","sources":["../../src/Version.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2DAA2D;AAC3D,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAA"}
package/build/esm/Xdg.js DELETED
@@ -1,15 +0,0 @@
1
- import { homedir } from 'node:os';
2
- import { Path } from '@effect/platform';
3
- import { Config, Effect } from 'effect';
4
- /**
5
- * XDG base-directory lookup, shared by everything that persists CLI state so
6
- * the fallback rules cannot drift apart. The spec treats an unset and an empty
7
- * variable identically: fall back to `$HOME/.config`. Without the empty check,
8
- * `XDG_CONFIG_HOME=` resolves paths relative to the working directory — which
9
- * would drop credentials inside whatever project the CLI happens to run in.
10
- */
11
- export const xdgConfigDirectory = Effect.gen(function* () {
12
- const path = yield* Path.Path;
13
- return yield* Config.string('XDG_CONFIG_HOME').pipe(Config.withDefault(''), Config.map((directory) => (directory.trim() === '' ? path.join(homedir(), '.config') : directory)));
14
- });
15
- //# sourceMappingURL=Xdg.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Xdg.js","sourceRoot":"","sources":["../../src/Xdg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEvC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAA;IAC7B,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAClD,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,EACtB,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAClG,CAAA;AACF,CAAC,CAAC,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}