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,371 +0,0 @@
1
- import { Command, Options, Prompt } from '@effect/cli';
2
- import { Terminal } from '@effect/platform';
3
- import { Array, Console, Effect, Either, Option, Schema } from 'effect';
4
- import { Authentication } from '../Authentication.js';
5
- import { HARNESS_SELECTION_MESSAGE, InitDetectionResult, InitErrorEnvelope, InitHarness, InitRequest, InitResult, InitScope, NO_HARNESS_DETECTED_MESSAGE, } from '../Init/Domain.js';
6
- import { HarnessDetector } from '../Init/HarnessDetector.js';
7
- import { InitService, InitServiceError } from '../Init/Service.js';
8
- const harness = Options.text('harness').pipe(Options.optional, Options.withDescription('Agent harness running this setup, used as a detection hint'));
9
- const harnesses = Options.text('harnesses').pipe(Options.optional, Options.withDescription('Comma-separated harnesses to configure. Omit to configure every detected harness.'));
10
- const detect = Options.boolean('detect').pipe(Options.withDescription('Report the harnesses setup would configure, and change nothing'));
11
- const scope = Options.text('scope').pipe(Options.optional, Options.withDescription('Configuration scope'));
12
- const setupToken = Options.text('setup-token').pipe(Options.optional, Options.withDescription('Short-lived, single-use setup token from the Expand dashboard'));
13
- const json = Options.boolean('json').pipe(Options.withDescription('Emit one machine-readable JSON result'));
14
- const config = { harness, harnesses, detect, scope, setupToken, json };
15
- const InitErrorJson = Schema.parseJson(InitErrorEnvelope);
16
- const InitResultJson = Schema.parseJson(InitResult);
17
- const InitDetectionJson = Schema.parseJson(InitDetectionResult);
18
- const INVALID_ARGUMENTS_MESSAGE = 'Agent init requires --scope project|global and --json, or --detect --json to only report detected harnesses. Optional: --harnesses claude-code,cursor,opencode,codex to configure an explicit subset, --harness <name> as a current-harness hint, and --setup-token <token> from a dashboard setup prompt. After the user approves in the browser, run the same command again — there is no code to pass back.';
19
- export const SUPPORTED_HARNESS_LIST = 'claude-code, cursor, opencode, codex';
20
- /**
21
- * Says that the *harness itself* is unsupported, rather than that the flag was
22
- * malformed. An agent told only "invalid arguments" alongside a list of four
23
- * valid names will pick one of them and misreport the user's environment.
24
- */
25
- export const UNSUPPORTED_HARNESS_MESSAGE = `Expand does not support that agent harness. Supported harnesses are ${SUPPORTED_HARNESS_LIST}. Do not substitute a different harness: tell the user their agent is not supported yet.`;
26
- const INVALID_SETUP_TOKEN_MESSAGE = 'That setup token is malformed. Copy it exactly as the dashboard issued it, or create a new one; do not retype or truncate it.';
27
- const INVALID_HARNESS_SELECTION_MESSAGE = `--harnesses takes a comma-separated list drawn from ${SUPPORTED_HARNESS_LIST}, for example --harnesses claude-code,cursor. Every entry must be one of those names.`;
28
- /** Mirrors the `SetupToken` schema so a typo is reported as a bad token, not bad flags. */
29
- const SETUP_TOKEN_PATTERN = /^[A-Za-z0-9._~-]{20,256}$/u;
30
- /** Distinct codes so an agent can fix the specific argument instead of guessing. */
31
- function argumentErrorJson(code, message) {
32
- return Schema.encodeSync(InitErrorJson)(new InitErrorEnvelope({ schemaVersion: 1, status: 'error', code, message, recoverable: true }));
33
- }
34
- function invalidArgumentsJson() {
35
- return argumentErrorJson('invalid_arguments', INVALID_ARGUMENTS_MESSAGE);
36
- }
37
- function errorJson(code, message, recoverable) {
38
- return Schema.encodeSync(InitErrorJson)(new InitErrorEnvelope({ schemaVersion: 1, status: 'error', code, message, recoverable }));
39
- }
40
- function emitError(code, message, recoverable, exitCode) {
41
- return Console.error(errorJson(code, message, recoverable)).pipe(Effect.zipRight(Effect.sync(() => void (process.exitCode = exitCode))));
42
- }
43
- /**
44
- * Decodes `--harnesses claude-code,cursor`. Returns `undefined` for any
45
- * unknown or empty entry: silently dropping one would configure less than the
46
- * user asked for, which is the failure mode this flag exists to prevent.
47
- */
48
- export function parseHarnessSelection(value) {
49
- const entries = value.split(',').map((entry) => entry.trim());
50
- const decoded = [];
51
- for (const entry of entries) {
52
- const harness = Schema.decodeUnknownOption(InitHarness)(entry);
53
- if (Option.isNone(harness))
54
- return undefined;
55
- if (!decoded.includes(harness.value))
56
- decoded.push(harness.value);
57
- }
58
- return Array.isNonEmptyArray(decoded) ? decoded : undefined;
59
- }
60
- function enabledEnvironmentFlag(value) {
61
- return value !== undefined && value !== '' && value !== '0' && value !== 'false';
62
- }
63
- /** Selects a safe onboarding surface before either CLI tree parses the command. */
64
- export function resolveOnboardingExecutionMode(input, command) {
65
- if (input.argv[2] !== command)
66
- return undefined;
67
- const args = input.argv.slice(3);
68
- const agentSignal = input.environment.EXPANDAI_CLI_CONTEXT === 'agent' ||
69
- enabledEnvironmentFlag(input.environment.CLAUDECODE) ||
70
- input.environment.CURSOR_TRACE_ID !== undefined ||
71
- input.environment.CODEX_RUN_ID !== undefined;
72
- const machineSafe = !input.stdinIsTty || !input.stdoutIsTty || args.includes('--json') || agentSignal;
73
- return machineSafe ? 'machine' : 'human';
74
- }
75
- /** Selects the safe init surface before either CLI tree parses the command. */
76
- export function resolveInitExecutionMode(input) {
77
- return resolveOnboardingExecutionMode(input, 'init');
78
- }
79
- function parseMachineArguments(args) {
80
- function parse(index, parsed) {
81
- if (index >= args.length)
82
- return parsed;
83
- const token = args[index];
84
- if (token === '--json' && !parsed.json) {
85
- return parse(index + 1, { ...parsed, json: true });
86
- }
87
- if (token === '--detect' && !parsed.detect) {
88
- return parse(index + 1, { ...parsed, detect: true });
89
- }
90
- if (token !== '--setup-token' && token !== '--harness' && token !== '--harnesses' && token !== '--scope')
91
- return undefined;
92
- const value = args[index + 1];
93
- if (value === undefined || value.startsWith('-'))
94
- return undefined;
95
- if (token === '--setup-token' && Option.isNone(parsed.setupToken)) {
96
- return parse(index + 2, { ...parsed, setupToken: Option.some(value) });
97
- }
98
- if (token === '--harness' && Option.isNone(parsed.harness)) {
99
- return parse(index + 2, { ...parsed, harness: Option.some(value) });
100
- }
101
- if (token === '--harnesses' && Option.isNone(parsed.harnesses)) {
102
- return parse(index + 2, { ...parsed, harnesses: Option.some(value) });
103
- }
104
- if (token === '--scope' && Option.isNone(parsed.scope)) {
105
- return parse(index + 2, { ...parsed, scope: Option.some(value) });
106
- }
107
- return undefined;
108
- }
109
- return parse(0, {
110
- detect: false,
111
- harness: Option.none(),
112
- harnesses: Option.none(),
113
- json: false,
114
- scope: Option.none(),
115
- setupToken: Option.none(),
116
- });
117
- }
118
- /** Returns a safe JSON error before Effect CLI can render ordinary parser help. */
119
- export function preflightAgentInitArgv(argv) {
120
- if (argv[2] !== 'init')
121
- return undefined;
122
- const args = argv.slice(3);
123
- if (args.length === 1 && (args[0] === '--help' || args[0] === '-h'))
124
- return undefined;
125
- const parsed = parseMachineArguments(args);
126
- if (parsed === undefined)
127
- return invalidArgumentsJson();
128
- if (!parsed.json)
129
- return invalidArgumentsJson();
130
- if (Option.isSome(parsed.harness) && Option.isNone(Schema.decodeUnknownOption(InitHarness)(parsed.harness.value))) {
131
- return argumentErrorJson('unsupported_harness', UNSUPPORTED_HARNESS_MESSAGE);
132
- }
133
- if (Option.isSome(parsed.harnesses) && parseHarnessSelection(parsed.harnesses.value) === undefined) {
134
- return argumentErrorJson('invalid_harness_selection', INVALID_HARNESS_SELECTION_MESSAGE);
135
- }
136
- // Detection reports and exits, so it needs no scope and no credentials.
137
- if (parsed.detect)
138
- return undefined;
139
- if (!Option.contains(parsed.scope, 'project') && !Option.contains(parsed.scope, 'global')) {
140
- return invalidArgumentsJson();
141
- }
142
- if (Option.isSome(parsed.setupToken) && !SETUP_TOKEN_PATTERN.test(parsed.setupToken.value)) {
143
- return argumentErrorJson('invalid_setup_token', INVALID_SETUP_TOKEN_MESSAGE);
144
- }
145
- return undefined;
146
- }
147
- function renderHumanResult(result) {
148
- if (result.status === 'authorization_required') {
149
- // The approval page asks the user to type this code and compare it against
150
- // their terminal, so the terminal has to print it.
151
- return `Expand authorization required\n${result.userMessage}\nOpen: ${result.authorization.url.toString()}\nEnter code: ${result.authorization.userCode}`;
152
- }
153
- const configured = result.installations.map((installation) => installation.harness).join(', ');
154
- const failures = result.failures ?? [];
155
- // A run that configured some harnesses and not others must not print
156
- // "complete" — the heading is the part a user skims.
157
- const heading = failures.length > 0 ? 'Expand setup incomplete' : 'Expand setup complete';
158
- const failed = failures.map((failure) => `${failure.harness} (${failure.code})`).join(', ');
159
- return [
160
- heading,
161
- result.userMessage,
162
- `Configured: ${configured}`,
163
- ...(failures.length > 0 ? [`Failed: ${failed}`] : []),
164
- ].join('\n');
165
- }
166
- const runInitService = Effect.fnUntraced(function* (request, jsonOutput) {
167
- const initService = yield* InitService;
168
- const result = yield* Effect.either(initService.run(request));
169
- if (Either.isLeft(result)) {
170
- const error = result.left;
171
- if (error instanceof InitServiceError) {
172
- yield* emitError(error.code, error.message, error.recoverable, 1);
173
- return;
174
- }
175
- yield* emitError('init_failed', 'Expand init could not be completed safely.', true, 1);
176
- return;
177
- }
178
- if (!jsonOutput) {
179
- yield* Console.log(renderHumanResult(result.right));
180
- return;
181
- }
182
- const encoded = yield* Schema.encode(InitResultJson)(result.right).pipe(Effect.catchAll(() => emitError('invalid_result', 'Expand init returned an invalid result.', false, 1)));
183
- if (typeof encoded === 'string')
184
- yield* Console.log(encoded);
185
- });
186
- /** Emits what setup would configure without authorizing or writing anything. */
187
- const runAgentDetect = Effect.fnUntraced(function* (hint) {
188
- const detector = yield* HarnessDetector;
189
- const detected = yield* detector.detect({ ...(Option.isSome(hint) ? { hint: hint.value } : {}) });
190
- const current = yield* detector.detectCurrent();
191
- const encoded = yield* Schema.encode(InitDetectionJson)(new InitDetectionResult({
192
- schemaVersion: 1,
193
- status: 'detected',
194
- harnesses: detected,
195
- ...(Option.isSome(current) ? { current: current.value } : {}),
196
- userMessage: detected.length === 0 ? NO_HARNESS_DETECTED_MESSAGE : HARNESS_SELECTION_MESSAGE,
197
- })).pipe(Effect.catchAll(() => emitError('invalid_result', 'Expand init returned an invalid result.', false, 1)));
198
- if (typeof encoded === 'string')
199
- yield* Console.log(encoded);
200
- });
201
- const runAgentInit = Effect.fnUntraced(function* ({ detect: detectOnly, harness, harnesses: harnessSelection, json, scope, setupToken, }) {
202
- if (!json) {
203
- yield* emitError('invalid_arguments', INVALID_ARGUMENTS_MESSAGE, true, 2);
204
- return;
205
- }
206
- const harnessHint = Option.flatMap(harness, (value) => Schema.decodeUnknownOption(InitHarness)(value));
207
- if (Option.isSome(harness) && Option.isNone(harnessHint)) {
208
- yield* emitError('unsupported_harness', UNSUPPORTED_HARNESS_MESSAGE, true, 2);
209
- return;
210
- }
211
- if (detectOnly) {
212
- yield* runAgentDetect(harnessHint);
213
- return;
214
- }
215
- if (!Option.contains(scope, 'project') && !Option.contains(scope, 'global')) {
216
- yield* emitError('invalid_arguments', INVALID_ARGUMENTS_MESSAGE, true, 2);
217
- return;
218
- }
219
- const selected = Option.map(harnessSelection, parseHarnessSelection);
220
- if (Option.isSome(selected) && selected.value === undefined) {
221
- yield* emitError('invalid_harness_selection', INVALID_HARNESS_SELECTION_MESSAGE, true, 2);
222
- return;
223
- }
224
- const detector = yield* HarnessDetector;
225
- // An explicit selection is the user's answer to "which harnesses?" — it is
226
- // authoritative, and detection must not widen it.
227
- const harnesses = Option.isSome(selected) && selected.value !== undefined
228
- ? selected.value
229
- : yield* detector.detect({ ...(Option.isSome(harnessHint) ? { hint: harnessHint.value } : {}) });
230
- if (harnesses.length === 0) {
231
- yield* emitError('no_harness_detected', 'No supported agent harness was detected. Pass --harness with the agent currently running setup.', true, 2);
232
- return;
233
- }
234
- const request = yield* Schema.decodeUnknown(InitRequest)({
235
- harnesses,
236
- scope: Option.getOrUndefined(scope),
237
- ...(Option.isSome(setupToken) ? { setupToken: setupToken.value } : {}),
238
- }).pipe(Effect.catchAll(() => emitError('invalid_arguments', INVALID_ARGUMENTS_MESSAGE, true, 2).pipe(Effect.as(undefined))));
239
- if (request === undefined)
240
- return;
241
- yield* runInitService(request, true);
242
- });
243
- export class InitTerminalInteraction extends Effect.Service()('@expandai/cli/Commands/InitTerminalInteraction', {
244
- effect: Effect.gen(function* () {
245
- const terminal = yield* Terminal.Terminal;
246
- const chooseScope = Effect.fnUntraced(function* () {
247
- return yield* Prompt.select({
248
- message: 'Where should Expand be available?',
249
- // Global leads: most people want Expand in every project, and it is
250
- // the scope the hosted setup guide asks agents to offer first.
251
- choices: [
252
- { title: 'All projects for this user', value: 'global' },
253
- { title: 'This project', value: 'project' },
254
- ],
255
- }).pipe(Effect.provideService(Terminal.Terminal, terminal));
256
- });
257
- /**
258
- * Setup writes to every harness the user confirms here and to no other.
259
- * Detected harnesses start selected so the common "configure everything"
260
- * case is one keystroke, but the list is always shown before anything
261
- * on disk changes.
262
- */
263
- const chooseHarnesses = Effect.fnUntraced(function* (detected) {
264
- return yield* Prompt.multiSelect({
265
- message: 'Which harnesses should Expand configure?',
266
- choices: detected.map((harness) => ({ title: harness, value: harness, selected: true })),
267
- }).pipe(Effect.provideService(Terminal.Terminal, terminal));
268
- });
269
- return { chooseScope, chooseHarnesses };
270
- }),
271
- }) {
272
- }
273
- /**
274
- * Human counterpart to `runAgentDetect`: the same detection, rendered for a
275
- * terminal instead of as JSON, and writing nothing either way.
276
- */
277
- const runHumanDetect = Effect.fnUntraced(function* (hint) {
278
- const detector = yield* HarnessDetector;
279
- const detected = yield* detector.detect({ ...(Option.isSome(hint) ? { hint: hint.value } : {}) });
280
- const current = yield* detector.detectCurrent();
281
- if (detected.length === 0) {
282
- yield* Console.log('No supported agent harness was detected. Nothing was changed.');
283
- return;
284
- }
285
- yield* Console.log([
286
- 'Detected harnesses. Nothing was changed.',
287
- ...detected.map((harness) => ` ${harness}${Option.isSome(current) && current.value === harness ? ' (this one)' : ''}`),
288
- '',
289
- 'Run `expandai init` to configure them.',
290
- ].join('\n'));
291
- });
292
- export const runHumanInit = Effect.fnUntraced(function* (options) {
293
- if (options.json) {
294
- yield* runAgentInit(options);
295
- return;
296
- }
297
- const decodedHarness = Option.flatMap(options.harness, (value) => Schema.decodeUnknownOption(InitHarness)(value));
298
- if (Option.isSome(options.harness) && Option.isNone(decodedHarness)) {
299
- yield* emitError('invalid_arguments', INVALID_ARGUMENTS_MESSAGE, true, 2);
300
- return;
301
- }
302
- // `--detect` documents itself as changing nothing, and the guide tells agents
303
- // the same. Only `runAgentInit` ever read the flag, and humans do not pass
304
- // `--json`, so `expandai init --detect` in a terminal performed a real install.
305
- // Answered before the scope prompt, because asking is itself a side effect —
306
- // and `--harnesses`/`--scope` are irrelevant to detection.
307
- if (options.detect) {
308
- yield* runHumanDetect(decodedHarness);
309
- return;
310
- }
311
- const interaction = yield* InitTerminalInteraction;
312
- const scopeInput = Option.isSome(options.scope) ? options.scope.value : yield* interaction.chooseScope();
313
- const decodedScope = Schema.decodeUnknownOption(InitScope)(scopeInput);
314
- if (Option.isNone(decodedScope)) {
315
- yield* emitError('invalid_arguments', INVALID_ARGUMENTS_MESSAGE, true, 2);
316
- return;
317
- }
318
- const selected = Option.map(options.harnesses, parseHarnessSelection);
319
- if (Option.isSome(selected) && selected.value === undefined) {
320
- yield* emitError('invalid_arguments', INVALID_ARGUMENTS_MESSAGE, true, 2);
321
- return;
322
- }
323
- // An explicit `--harnesses` is the answer, not a hint, so detection is skipped
324
- // entirely — it exists only to build the question. Running it first rejected
325
- // `--harnesses codex` on a machine with no Codex config, which is exactly when
326
- // someone passes the flag. The machine path already treats it as authoritative.
327
- const explicit = Option.isSome(selected) ? selected.value : undefined;
328
- const harnesses = explicit ??
329
- (yield* Effect.gen(function* () {
330
- const detector = yield* HarnessDetector;
331
- const detected = yield* detector.detect({
332
- ...(Option.isSome(decodedHarness) ? { hint: decodedHarness.value } : {}),
333
- });
334
- return detected.length === 0 ? undefined : yield* interaction.chooseHarnesses(detected);
335
- }));
336
- if (harnesses === undefined) {
337
- yield* emitError('no_harness_detected', 'No supported agent harness was detected. Re-run with --harness for the agent you want to configure.', true, 2);
338
- return;
339
- }
340
- if (!Array.isNonEmptyReadonlyArray(harnesses)) {
341
- yield* Console.log('No harnesses selected. Nothing was changed.');
342
- return;
343
- }
344
- const request = yield* Schema.decodeUnknown(InitRequest)({
345
- harnesses,
346
- scope: decodedScope.value,
347
- ...(Option.isSome(options.setupToken) ? { setupToken: options.setupToken.value } : {}),
348
- }).pipe(Effect.catchAll(() => emitError('invalid_arguments', INVALID_ARGUMENTS_MESSAGE, true, 2).pipe(Effect.as(undefined))));
349
- if (request === undefined)
350
- return;
351
- if (Option.isNone(options.setupToken)) {
352
- const authentication = yield* Authentication;
353
- const credentialHealth = yield* Effect.either(authentication.hasLocallyUsableCredentials());
354
- if (Either.isLeft(credentialHealth)) {
355
- yield* emitError('credential_health_failed', 'Stored credentials could not be validated safely.', false, 1);
356
- return;
357
- }
358
- if (!credentialHealth.right) {
359
- const login = yield* Effect.either(authentication.loginWithBrowser());
360
- if (Either.isLeft(login)) {
361
- yield* emitError('authorization_failed', 'Browser authorization could not be completed.', true, 1);
362
- return;
363
- }
364
- }
365
- }
366
- yield* runInitService(request, options.json);
367
- });
368
- const initDescription = 'Authorize Expand and configure the complete supported harness profile';
369
- export const HumanInitCommand = Command.make('init', config).pipe(Command.withDescription(initDescription), Command.withHandler(runHumanInit));
370
- export const AgentInitCommand = Command.make('init', config).pipe(Command.withDescription(initDescription), Command.withHandler(runAgentInit));
371
- //# sourceMappingURL=Init.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Init.js","sourceRoot":"","sources":["../../../src/Commands/Init.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- import { Args, Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { Mcp } from '../Install/Mcp.js';
4
- const hostArg = Args.choice([
5
- ['claude-code', 'claude-code'],
6
- ['cursor', 'cursor'],
7
- ['opencode', 'opencode'],
8
- ['codex', 'codex'],
9
- ]);
10
- const scopeArg = Args.choice([
11
- ['global', 'global'],
12
- ['project', 'project'],
13
- ]);
14
- export const InstallSubCommand = Command.make('install', { host: hostArg, scope: scopeArg }).pipe(Command.withDescription('Install the expandai MCP server into the chosen host + scope (e.g. `claude-code global`)'), Command.withHandler(Effect.fnUntraced(function* ({ host, scope }) {
15
- const mcp = yield* Mcp;
16
- yield* mcp.install(host, scope);
17
- })));
18
- export const UninstallSubCommand = Command.make('uninstall', { host: hostArg, scope: scopeArg }).pipe(Command.withDescription('Remove the expandai MCP server from the chosen host + scope'), Command.withHandler(({ host, scope }) => Effect.flatMap(Mcp, (mcp) => mcp.uninstall(host, scope))));
19
- //# sourceMappingURL=Mcp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Mcp.js","sourceRoot":"","sources":["../../../src/Commands/Mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAA;AAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,CAAC,aAAa,EAAE,aAAsB,CAAC;IACvC,CAAC,QAAQ,EAAE,QAAiB,CAAC;IAC7B,CAAC,UAAU,EAAE,UAAmB,CAAC;IACjC,CAAC,OAAO,EAAE,OAAgB,CAAC;CAC3B,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC,QAAQ,EAAE,QAAiB,CAAC;IAC7B,CAAC,SAAS,EAAE,SAAkB,CAAC;CAC/B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAChG,OAAO,CAAC,eAAe,CAAC,0FAA0F,CAAC,EACnH,OAAO,CAAC,WAAW,CAClB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,GAAG,CAAA;IACtB,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAChC,CAAC,CAAC,CACF,CACD,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CACpG,OAAO,CAAC,eAAe,CAAC,6DAA6D,CAAC,EACtF,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAClG,CAAA"}
@@ -1,15 +0,0 @@
1
- import { McpServer } from '@effect/ai';
2
- import { Command, Options } from '@effect/cli';
3
- import { NodeSink, NodeStream } from '@effect/platform-node';
4
- import { Effect, Layer } from 'effect';
5
- import { makeServerLayer, ServerInfo } from '../Mcp/Server.js';
6
- const includeDocsOption = Options.boolean('docs').pipe(Options.withDefault(false), Options.withDescription('Expose documentation resources alongside tools'));
7
- export const McpRunCommand = Command.make('run', { includeDocs: includeDocsOption }).pipe(Command.withDescription('Run the expandai MCP server over stdio'), Command.withHandler(Effect.fnUntraced(function* ({ includeDocs }) {
8
- const McpLayer = McpServer.layerStdio({
9
- ...ServerInfo,
10
- stdin: NodeStream.stdin,
11
- stdout: NodeSink.stdout,
12
- }).pipe(Layer.provide(makeServerLayer({ includeDocs })));
13
- return yield* Layer.launch(McpLayer);
14
- })));
15
- //# sourceMappingURL=McpRun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"McpRun.js","sourceRoot":"","sources":["../../../src/Commands/McpRun.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAE9D,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CACrD,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAC1B,OAAO,CAAC,eAAe,CAAC,gDAAgD,CAAC,CACzE,CAAA;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC,IAAI,CACxF,OAAO,CAAC,eAAe,CAAC,wCAAwC,CAAC,EACjE,OAAO,CAAC,WAAW,CAClB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE;IAC3C,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC;QACrC,GAAG,UAAU;QACb,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,CAAA;IAExD,OAAO,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AACrC,CAAC,CAAC,CACF,CACD,CAAA"}
@@ -1,46 +0,0 @@
1
- import { Args, Command, Options } from '@effect/cli';
2
- import { resolvePlaygroundHost } from '@expandai/sdk/Playground';
3
- import { Console, Effect, Layer, Match, Schema } from 'effect';
4
- import { ApiClient } from '../ApiClient.js';
5
- import { ConfigManager } from '../Config.js';
6
- import { CitedSnapshotSearchResult, enrichSnapshotSearchResult } from '../Mcp/tools/Citations.js';
7
- import { renderSnippets } from '../Snippets.js';
8
- export class SnapshotSnippetsUnavailable extends Schema.TaggedError()('SnapshotSnippetsUnavailable', {
9
- snapshotId: Schema.String,
10
- query: Schema.String,
11
- }) {
12
- get message() {
13
- return `No snippets in snapshot ${this.snapshotId} matched '${this.query}'`;
14
- }
15
- }
16
- const snapshotId = Args.text({ name: 'snapshotId' }).pipe(Args.withDescription('Snapshot handle from a previous fetch (meta.snapshotId, or the WebFetch hook note)'));
17
- const query = Args.text({ name: 'query' }).pipe(Args.withDescription('Semantic search query'));
18
- const format = Options.text('format').pipe(Options.withDefault('text'), Options.withDescription('Output format (text or json)'), Options.withSchema(Schema.Literal('text', 'json')));
19
- const maxResults = Options.integer('max-results').pipe(Options.withDefault(5), Options.withDescription('Maximum snippets to return (default: 5)'), Options.withSchema(Schema.Int.pipe(Schema.greaterThanOrEqualTo(1), Schema.lessThanOrEqualTo(50))));
20
- const minScore = Options.float('min-score').pipe(Options.withDefault(0.6), Options.withDescription('Minimum snippet relevance score from 0 to 1 (default: 0.6)'), Options.withSchema(Schema.Number.pipe(Schema.greaterThanOrEqualTo(0), Schema.lessThanOrEqualTo(1))));
21
- const searchConfig = {
22
- snapshotId,
23
- query,
24
- format,
25
- maxResults,
26
- minScore,
27
- };
28
- export const SearchCommand = Command.make('search', searchConfig).pipe(Command.withDescription('Search a previously fetched page by its snapshot handle — no new capture'), Command.withHandler(Effect.fnUntraced(function* ({ format, maxResults, minScore, query, snapshotId }) {
29
- const client = yield* ApiClient;
30
- const configManager = yield* ConfigManager;
31
- const host = yield* configManager.getPlaygroundHost();
32
- const result = yield* client.fetchFetchSearch({
33
- snapshotId,
34
- search: { query, maxResults, minScore },
35
- include: { markdown: true, json: true },
36
- });
37
- const cited = enrichSnapshotSearchResult(result, host, 'cli-recovery');
38
- const output = yield* Match.value(format).pipe(Match.when('text', () => {
39
- const snippets = cited.search.snippets;
40
- return snippets.length === 0
41
- ? Effect.fail(new SnapshotSnippetsUnavailable({ snapshotId, query }))
42
- : Effect.succeed(`[invocation: cli-recovery]\n${renderSnippets(snapshotId, resolvePlaygroundHost(result.playground, host), snippets)}`);
43
- }), Match.when('json', () => Schema.encode(Schema.parseJson(CitedSnapshotSearchResult, { space: 2 }))(cited)), Match.exhaustive);
44
- yield* Console.log(output);
45
- }, Effect.provide(Layer.mergeAll(ApiClient.Default, ConfigManager.Default)))));
46
- //# sourceMappingURL=Search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Search.js","sourceRoot":"","sources":["../../../src/Commands/Search.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import { Args, Command } from '@effect/cli';
2
- import { Effect } from 'effect';
3
- import { Skill } from '../Install/Skill.js';
4
- const hostArg = Args.choice([
5
- ['claude-code', 'claude-code'],
6
- ['cursor', 'cursor'],
7
- ['opencode', 'opencode'],
8
- ['codex', 'codex'],
9
- ]);
10
- const scopeArg = Args.choice([
11
- ['global', 'global'],
12
- ['project', 'project'],
13
- ]);
14
- const InstallCommand = Command.make('install', { host: hostArg, scope: scopeArg }).pipe(Command.withDescription('Install the expandai skill into the chosen host + scope'), Command.withHandler(({ host, scope }) => Effect.flatMap(Skill, (skill) => skill.install(host, scope))));
15
- const UninstallCommand = Command.make('uninstall', { host: hostArg, scope: scopeArg }).pipe(Command.withDescription('Remove the expandai skill from the chosen host + scope'), Command.withHandler(({ host, scope }) => Effect.flatMap(Skill, (skill) => skill.uninstall(host, scope))));
16
- export const SkillCommand = Command.make('skill').pipe(Command.withDescription('Manage the expandai agent skill'), Command.withSubcommands([InstallCommand, UninstallCommand]));
17
- //# sourceMappingURL=Skill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Skill.js","sourceRoot":"","sources":["../../../src/Commands/Skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,CAAC,aAAa,EAAE,aAAsB,CAAC;IACvC,CAAC,QAAQ,EAAE,QAAiB,CAAC;IAC7B,CAAC,UAAU,EAAE,UAAmB,CAAC;IACjC,CAAC,OAAO,EAAE,OAAgB,CAAC;CAC3B,CAAC,CAAA;AAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC,QAAQ,EAAE,QAAiB,CAAC;IAC7B,CAAC,SAAS,EAAE,SAAkB,CAAC;CAC/B,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CACtF,OAAO,CAAC,eAAe,CAAC,yDAAyD,CAAC,EAClF,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CACtG,CAAA;AAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAC1F,OAAO,CAAC,eAAe,CAAC,wDAAwD,CAAC,EACjF,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CACxG,CAAA;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACrD,OAAO,CAAC,eAAe,CAAC,iCAAiC,CAAC,EAC1D,OAAO,CAAC,eAAe,CAAC,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC,CAC3D,CAAA"}