expandai 0.0.2 → 0.0.4

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 (271) hide show
  1. package/README.md +42 -5
  2. package/build/dts/ApiClient.d.ts +128 -194
  3. package/build/dts/ApiClient.d.ts.map +1 -1
  4. package/build/dts/Auth/Domain.d.ts +95 -0
  5. package/build/dts/Auth/Domain.d.ts.map +1 -0
  6. package/build/dts/Auth/ManualAuthorization.d.ts +107 -0
  7. package/build/dts/Auth/ManualAuthorization.d.ts.map +1 -0
  8. package/build/dts/Auth/PendingInit.d.ts +35 -0
  9. package/build/dts/Auth/PendingInit.d.ts.map +1 -0
  10. package/build/dts/Auth/Pkce.d.ts +10 -0
  11. package/build/dts/Auth/Pkce.d.ts.map +1 -0
  12. package/build/dts/Auth/SetupGrantAuthorization.d.ts +34 -0
  13. package/build/dts/Auth/SetupGrantAuthorization.d.ts.map +1 -0
  14. package/build/dts/Authentication.d.ts +10 -9
  15. package/build/dts/Authentication.d.ts.map +1 -1
  16. package/build/dts/BrowserOAuth.d.ts +7 -7
  17. package/build/dts/BrowserOAuth.d.ts.map +1 -1
  18. package/build/dts/CommandPath.d.ts +2 -0
  19. package/build/dts/CommandPath.d.ts.map +1 -0
  20. package/build/dts/Commands/Fetch.d.ts.map +1 -1
  21. package/build/dts/Commands/Hook.d.ts +5 -5
  22. package/build/dts/Commands/Init.d.ts +55 -0
  23. package/build/dts/Commands/Init.d.ts.map +1 -0
  24. package/build/dts/Commands/Mcp.d.ts +6 -6
  25. package/build/dts/Commands/Search.d.ts.map +1 -1
  26. package/build/dts/Commands/Skill.d.ts +4 -4
  27. package/build/dts/Commands/Status.d.ts +27 -0
  28. package/build/dts/Commands/Status.d.ts.map +1 -0
  29. package/build/dts/Commands/Telemetry.d.ts +7 -0
  30. package/build/dts/Commands/Telemetry.d.ts.map +1 -0
  31. package/build/dts/Commands/Uninstall.d.ts +4 -4
  32. package/build/dts/Config.d.ts +108 -17
  33. package/build/dts/Config.d.ts.map +1 -1
  34. package/build/dts/Hook/SnapshotNote.d.ts +8 -4
  35. package/build/dts/Hook/SnapshotNote.d.ts.map +1 -1
  36. package/build/dts/Init/ClaudeAdapter.d.ts +61 -0
  37. package/build/dts/Init/ClaudeAdapter.d.ts.map +1 -0
  38. package/build/dts/Init/ClaudeProfile.d.ts +77 -0
  39. package/build/dts/Init/ClaudeProfile.d.ts.map +1 -0
  40. package/build/dts/Init/Domain.d.ts +139 -0
  41. package/build/dts/Init/Domain.d.ts.map +1 -0
  42. package/build/dts/Init/HarnessAdapter.d.ts +33 -0
  43. package/build/dts/Init/HarnessAdapter.d.ts.map +1 -0
  44. package/build/dts/Init/HarnessDetector.d.ts +19 -0
  45. package/build/dts/Init/HarnessDetector.d.ts.map +1 -0
  46. package/build/dts/Init/HarnessRegistry.d.ts +50 -0
  47. package/build/dts/Init/HarnessRegistry.d.ts.map +1 -0
  48. package/build/dts/Init/MutationTransaction.d.ts +96 -0
  49. package/build/dts/Init/MutationTransaction.d.ts.map +1 -0
  50. package/build/dts/Init/Service.d.ts +72 -0
  51. package/build/dts/Init/Service.d.ts.map +1 -0
  52. package/build/dts/Init/StandardAdapters.d.ts +42 -0
  53. package/build/dts/Init/StandardAdapters.d.ts.map +1 -0
  54. package/build/dts/Init/Status.d.ts +149 -0
  55. package/build/dts/Init/Status.d.ts.map +1 -0
  56. package/build/dts/Install/Claude/Hook.d.ts +57 -29
  57. package/build/dts/Install/Claude/Hook.d.ts.map +1 -1
  58. package/build/dts/Install/Claude/Mcp.d.ts +21 -18
  59. package/build/dts/Install/Claude/Mcp.d.ts.map +1 -1
  60. package/build/dts/Install/Claude/Skill.d.ts +14 -15
  61. package/build/dts/Install/Claude/Skill.d.ts.map +1 -1
  62. package/build/dts/Install/Codex/Mcp.d.ts +14 -8
  63. package/build/dts/Install/Codex/Mcp.d.ts.map +1 -1
  64. package/build/dts/Install/Codex/Skill.d.ts +4 -2
  65. package/build/dts/Install/Codex/Skill.d.ts.map +1 -1
  66. package/build/dts/Install/Cursor/Mcp.d.ts +13 -13
  67. package/build/dts/Install/Cursor/Mcp.d.ts.map +1 -1
  68. package/build/dts/Install/Cursor/Skill.d.ts +4 -2
  69. package/build/dts/Install/Cursor/Skill.d.ts.map +1 -1
  70. package/build/dts/Install/Domain.d.ts +35 -5
  71. package/build/dts/Install/Domain.d.ts.map +1 -1
  72. package/build/dts/Install/Hook.d.ts +4 -4
  73. package/build/dts/Install/Hook.d.ts.map +1 -1
  74. package/build/dts/Install/Mcp.d.ts +5 -5
  75. package/build/dts/Install/Mcp.d.ts.map +1 -1
  76. package/build/dts/Install/Opencode/Hook.d.ts +4 -3
  77. package/build/dts/Install/Opencode/Hook.d.ts.map +1 -1
  78. package/build/dts/Install/Opencode/Mcp.d.ts +11 -11
  79. package/build/dts/Install/Opencode/Mcp.d.ts.map +1 -1
  80. package/build/dts/Install/Opencode/Skill.d.ts +4 -2
  81. package/build/dts/Install/Opencode/Skill.d.ts.map +1 -1
  82. package/build/dts/Install/Skill.d.ts +3 -3
  83. package/build/dts/Install/Uninstall.d.ts +6 -6
  84. package/build/dts/Install/Uninstall.d.ts.map +1 -1
  85. package/build/dts/MarkdownAnsi.d.ts +29 -0
  86. package/build/dts/MarkdownAnsi.d.ts.map +1 -0
  87. package/build/dts/Mcp/ExpandDocs.d.ts +17 -5
  88. package/build/dts/Mcp/ExpandDocs.d.ts.map +1 -1
  89. package/build/dts/Mcp/Server.d.ts +1 -1
  90. package/build/dts/Mcp/Server.d.ts.map +1 -1
  91. package/build/dts/Mcp/tools/Citations.d.ts +100 -71
  92. package/build/dts/Mcp/tools/Citations.d.ts.map +1 -1
  93. package/build/dts/Mcp/tools/Fetch.d.ts +16 -15
  94. package/build/dts/Mcp/tools/Fetch.d.ts.map +1 -1
  95. package/build/dts/SecureFile.d.ts +23 -0
  96. package/build/dts/SecureFile.d.ts.map +1 -0
  97. package/build/dts/Snippets.d.ts +11 -12
  98. package/build/dts/Snippets.d.ts.map +1 -1
  99. package/build/dts/Telemetry.d.ts +30 -0
  100. package/build/dts/Telemetry.d.ts.map +1 -0
  101. package/build/dts/Version.d.ts +2 -0
  102. package/build/dts/Version.d.ts.map +1 -0
  103. package/build/dts/Xdg.d.ts +11 -0
  104. package/build/dts/Xdg.d.ts.map +1 -0
  105. package/build/esm/ApiClient.js +133 -10
  106. package/build/esm/ApiClient.js.map +1 -1
  107. package/build/esm/Auth/Domain.js +56 -0
  108. package/build/esm/Auth/Domain.js.map +1 -0
  109. package/build/esm/Auth/ManualAuthorization.js +253 -0
  110. package/build/esm/Auth/ManualAuthorization.js.map +1 -0
  111. package/build/esm/Auth/PendingInit.js +267 -0
  112. package/build/esm/Auth/PendingInit.js.map +1 -0
  113. package/build/esm/Auth/Pkce.js +23 -0
  114. package/build/esm/Auth/Pkce.js.map +1 -0
  115. package/build/esm/Auth/SetupGrantAuthorization.js +91 -0
  116. package/build/esm/Auth/SetupGrantAuthorization.js.map +1 -0
  117. package/build/esm/Authentication.js +38 -7
  118. package/build/esm/Authentication.js.map +1 -1
  119. package/build/esm/BrowserOAuth.js +7 -10
  120. package/build/esm/BrowserOAuth.js.map +1 -1
  121. package/build/esm/CommandPath.js +31 -0
  122. package/build/esm/CommandPath.js.map +1 -0
  123. package/build/esm/Commands/Fetch.js +30 -6
  124. package/build/esm/Commands/Fetch.js.map +1 -1
  125. package/build/esm/Commands/Init.js +371 -0
  126. package/build/esm/Commands/Init.js.map +1 -0
  127. package/build/esm/Commands/Search.js +6 -3
  128. package/build/esm/Commands/Search.js.map +1 -1
  129. package/build/esm/Commands/Status.js +186 -0
  130. package/build/esm/Commands/Status.js.map +1 -0
  131. package/build/esm/Commands/Telemetry.js +23 -0
  132. package/build/esm/Commands/Telemetry.js.map +1 -0
  133. package/build/esm/Config.js +502 -28
  134. package/build/esm/Config.js.map +1 -1
  135. package/build/esm/Hook/Claude.js +1 -1
  136. package/build/esm/Hook/Claude.js.map +1 -1
  137. package/build/esm/Hook/SnapshotNote.js +54 -7
  138. package/build/esm/Hook/SnapshotNote.js.map +1 -1
  139. package/build/esm/Init/ClaudeAdapter.js +137 -0
  140. package/build/esm/Init/ClaudeAdapter.js.map +1 -0
  141. package/build/esm/Init/ClaudeProfile.js +344 -0
  142. package/build/esm/Init/ClaudeProfile.js.map +1 -0
  143. package/build/esm/Init/Domain.js +118 -0
  144. package/build/esm/Init/Domain.js.map +1 -0
  145. package/build/esm/Init/HarnessAdapter.js +21 -0
  146. package/build/esm/Init/HarnessAdapter.js.map +1 -0
  147. package/build/esm/Init/HarnessDetector.js +65 -0
  148. package/build/esm/Init/HarnessDetector.js.map +1 -0
  149. package/build/esm/Init/HarnessRegistry.js +58 -0
  150. package/build/esm/Init/HarnessRegistry.js.map +1 -0
  151. package/build/esm/Init/MutationTransaction.js +494 -0
  152. package/build/esm/Init/MutationTransaction.js.map +1 -0
  153. package/build/esm/Init/Service.js +319 -0
  154. package/build/esm/Init/Service.js.map +1 -0
  155. package/build/esm/Init/StandardAdapters.js +116 -0
  156. package/build/esm/Init/StandardAdapters.js.map +1 -0
  157. package/build/esm/Init/Status.js +215 -0
  158. package/build/esm/Init/Status.js.map +1 -0
  159. package/build/esm/Install/Claude/Hook.js +52 -64
  160. package/build/esm/Install/Claude/Hook.js.map +1 -1
  161. package/build/esm/Install/Claude/Mcp.js +56 -26
  162. package/build/esm/Install/Claude/Mcp.js.map +1 -1
  163. package/build/esm/Install/Claude/Skill.js +49 -27
  164. package/build/esm/Install/Claude/Skill.js.map +1 -1
  165. package/build/esm/Install/Codex/Mcp.js +9 -4
  166. package/build/esm/Install/Codex/Mcp.js.map +1 -1
  167. package/build/esm/Install/Codex/Skill.js +4 -1
  168. package/build/esm/Install/Codex/Skill.js.map +1 -1
  169. package/build/esm/Install/Cursor/Mcp.js +7 -4
  170. package/build/esm/Install/Cursor/Mcp.js.map +1 -1
  171. package/build/esm/Install/Cursor/Skill.js +4 -1
  172. package/build/esm/Install/Cursor/Skill.js.map +1 -1
  173. package/build/esm/Install/Domain.js +60 -3
  174. package/build/esm/Install/Domain.js.map +1 -1
  175. package/build/esm/Install/Hook.js.map +1 -1
  176. package/build/esm/Install/Mcp.js +1 -1
  177. package/build/esm/Install/Mcp.js.map +1 -1
  178. package/build/esm/Install/Opencode/Hook.js +1 -1
  179. package/build/esm/Install/Opencode/Hook.js.map +1 -1
  180. package/build/esm/Install/Opencode/Mcp.js +6 -3
  181. package/build/esm/Install/Opencode/Mcp.js.map +1 -1
  182. package/build/esm/Install/Opencode/Skill.js +4 -1
  183. package/build/esm/Install/Opencode/Skill.js.map +1 -1
  184. package/build/esm/Install/Opencode/expandai-webfetch.js +27 -9
  185. package/build/esm/Install/Skill.js.map +1 -1
  186. package/build/esm/Install/Uninstall.js +2 -2
  187. package/build/esm/Install/Uninstall.js.map +1 -1
  188. package/build/esm/MarkdownAnsi.js +142 -0
  189. package/build/esm/MarkdownAnsi.js.map +1 -0
  190. package/build/esm/Mcp/ExpandDocs.js +44 -52
  191. package/build/esm/Mcp/ExpandDocs.js.map +1 -1
  192. package/build/esm/Mcp/RequestHeaders.js.map +1 -1
  193. package/build/esm/Mcp/Server.js +2 -1
  194. package/build/esm/Mcp/Server.js.map +1 -1
  195. package/build/esm/Mcp/tools/Citations.js +109 -8
  196. package/build/esm/Mcp/tools/Citations.js.map +1 -1
  197. package/build/esm/Mcp/tools/Fetch.js +36 -12
  198. package/build/esm/Mcp/tools/Fetch.js.map +1 -1
  199. package/build/esm/SecureFile.js +36 -0
  200. package/build/esm/SecureFile.js.map +1 -0
  201. package/build/esm/Snippets.js +12 -1
  202. package/build/esm/Snippets.js.map +1 -1
  203. package/build/esm/Telemetry.js +157 -0
  204. package/build/esm/Telemetry.js.map +1 -0
  205. package/build/esm/Version.js +4 -0
  206. package/build/esm/Version.js.map +1 -0
  207. package/build/esm/Xdg.js +15 -0
  208. package/build/esm/Xdg.js.map +1 -0
  209. package/build/esm/main.js +122 -14
  210. package/build/esm/main.js.map +1 -1
  211. package/build/skills/expandai/SKILL.md +37 -8
  212. package/package.json +4 -4
  213. package/src/ApiClient.ts +206 -13
  214. package/src/Auth/Domain.ts +63 -0
  215. package/src/Auth/ManualAuthorization.ts +296 -0
  216. package/src/Auth/PendingInit.ts +338 -0
  217. package/src/Auth/Pkce.ts +26 -0
  218. package/src/Auth/SetupGrantAuthorization.ts +116 -0
  219. package/src/Authentication.ts +49 -11
  220. package/src/BrowserOAuth.ts +10 -12
  221. package/src/CommandPath.ts +30 -0
  222. package/src/Commands/Fetch.ts +42 -11
  223. package/src/Commands/Init.ts +489 -0
  224. package/src/Commands/Search.ts +8 -3
  225. package/src/Commands/Status.ts +228 -0
  226. package/src/Commands/Telemetry.ts +42 -0
  227. package/src/Config.ts +695 -50
  228. package/src/Hook/Claude.ts +1 -1
  229. package/src/Hook/SnapshotNote.ts +55 -7
  230. package/src/Init/ClaudeAdapter.ts +191 -0
  231. package/src/Init/ClaudeProfile.ts +453 -0
  232. package/src/Init/Domain.ts +153 -0
  233. package/src/Init/HarnessAdapter.ts +35 -0
  234. package/src/Init/HarnessDetector.ts +77 -0
  235. package/src/Init/HarnessRegistry.ts +87 -0
  236. package/src/Init/MutationTransaction.ts +747 -0
  237. package/src/Init/Service.ts +385 -0
  238. package/src/Init/StandardAdapters.ts +141 -0
  239. package/src/Init/Status.ts +253 -0
  240. package/src/Install/Claude/Hook.ts +81 -91
  241. package/src/Install/Claude/Mcp.ts +80 -33
  242. package/src/Install/Claude/Skill.ts +70 -37
  243. package/src/Install/Codex/Mcp.ts +14 -9
  244. package/src/Install/Codex/Skill.ts +9 -5
  245. package/src/Install/Cursor/Mcp.ts +12 -9
  246. package/src/Install/Cursor/Skill.ts +9 -5
  247. package/src/Install/Domain.ts +77 -4
  248. package/src/Install/Hook.ts +3 -3
  249. package/src/Install/Mcp.ts +6 -6
  250. package/src/Install/Opencode/Hook.ts +5 -5
  251. package/src/Install/Opencode/Mcp.ts +11 -8
  252. package/src/Install/Opencode/Skill.ts +9 -5
  253. package/src/Install/Opencode/expandai-webfetch.js +27 -9
  254. package/src/Install/Skill.ts +3 -3
  255. package/src/Install/Uninstall.ts +3 -3
  256. package/src/MarkdownAnsi.ts +162 -0
  257. package/src/Mcp/ExpandDocs.ts +46 -55
  258. package/src/Mcp/Server.ts +2 -1
  259. package/src/Mcp/tools/Citations.ts +117 -8
  260. package/src/Mcp/tools/Fetch.ts +40 -14
  261. package/src/SecureFile.ts +70 -0
  262. package/src/Snippets.ts +19 -12
  263. package/src/Telemetry.ts +186 -0
  264. package/src/Version.ts +3 -0
  265. package/src/Xdg.ts +18 -0
  266. package/src/main.ts +171 -12
  267. package/build/dts/DeviceAuth.d.ts +0 -87
  268. package/build/dts/DeviceAuth.d.ts.map +0 -1
  269. package/build/esm/DeviceAuth.js +0 -127
  270. package/build/esm/DeviceAuth.js.map +0 -1
  271. package/src/DeviceAuth.ts +0 -193
@@ -1,7 +1,28 @@
1
- import { FileSystem, Path } from '@effect/platform';
2
- import { DateTime, Effect, Schema } from 'effect';
1
+ /**
2
+ * CLI configuration. Persisted at `$XDG_CONFIG_HOME/expandai/config.json`
3
+ * (default `~/.config/expandai/config.json`). `EXPAND_API_URL` overrides the
4
+ * file. `EXPAND_API_KEY` overrides an API key stored in the file, but not
5
+ * credentials established by `expandai login` or agent setup — signing in is a
6
+ * deliberate act, and an exported API key usually is not. `EXPAND_APP_URL`
7
+ * points guide links at the web app serving them.
8
+ */
9
+ import { CommandExecutor, FileSystem, Path, Error as PlatformError } from '@effect/platform';
10
+ import { NodeContext } from '@effect/platform-node';
11
+ import { Config, DateTime, Effect, Option, Redacted, Schema } from 'effect';
3
12
  /** Production API endpoint used when neither `EXPAND_API_URL` nor the config file overrides it. */
4
13
  export declare const DEFAULT_API_URL = "https://api.expand.ai";
14
+ /** Production web app used when `EXPAND_APP_URL` does not override it. */
15
+ export declare const DEFAULT_APP_URL = "https://expand.ai";
16
+ /**
17
+ * Lenient env readers. `Config.option` / `Config.withDefault` only absorb
18
+ * missing data — a present-but-malformed value (`CLAUDECODE=banana`,
19
+ * `EXPANDAI_HARNESS=bogus`) fails as InvalidData and would crash the CLI at
20
+ * layer construction. These read the raw string and degrade gracefully:
21
+ * flags follow the DO_NOT_TRACK convention (set unless an explicit off),
22
+ * literals decode to None instead of failing.
23
+ */
24
+ export declare const envFlag: (name: string) => Config.Config<boolean>;
25
+ export declare const envLiteral: <A extends string>(name: string, schema: Schema.Schema<A, A>) => Config.Config<Option.Option<A>>;
5
26
  export declare const ApiKey: Schema.Redacted<Schema.brand<typeof Schema.NonEmptyTrimmedString, "ApiKey">>;
6
27
  export declare const ApiKeyConfig: Schema.TaggedStruct<"ApiKey", {
7
28
  apiKey: Schema.Redacted<Schema.brand<typeof Schema.NonEmptyTrimmedString, "ApiKey">>;
@@ -10,6 +31,12 @@ export declare const OAuthConfig: Schema.TaggedStruct<"OAuth", {
10
31
  accessToken: Schema.Redacted<typeof Schema.String>;
11
32
  refreshToken: Schema.optional<Schema.Redacted<typeof Schema.String>>;
12
33
  expiresAt: typeof Schema.DateTimeUtc;
34
+ clientId: Schema.optional<typeof Schema.String>;
35
+ }>;
36
+ export declare const TelemetrySettings: Schema.Struct<{
37
+ enabled: Schema.optional<typeof Schema.Boolean>;
38
+ distinctId: Schema.optional<typeof Schema.String>;
39
+ noticeShown: Schema.optional<typeof Schema.Boolean>;
13
40
  }>;
14
41
  declare const ExpandCliConfig_base: Schema.Class<ExpandCliConfig, {
15
42
  apiUrl: Schema.optional<typeof Schema.URL>;
@@ -19,7 +46,13 @@ declare const ExpandCliConfig_base: Schema.Class<ExpandCliConfig, {
19
46
  accessToken: Schema.Redacted<typeof Schema.String>;
20
47
  refreshToken: Schema.optional<Schema.Redacted<typeof Schema.String>>;
21
48
  expiresAt: typeof Schema.DateTimeUtc;
49
+ clientId: Schema.optional<typeof Schema.String>;
22
50
  }>]>>;
51
+ telemetry: Schema.optional<Schema.Struct<{
52
+ enabled: Schema.optional<typeof Schema.Boolean>;
53
+ distinctId: Schema.optional<typeof Schema.String>;
54
+ noticeShown: Schema.optional<typeof Schema.Boolean>;
55
+ }>>;
23
56
  }, Schema.Struct.Encoded<{
24
57
  apiUrl: Schema.optional<typeof Schema.URL>;
25
58
  authMethod: Schema.optional<Schema.Union<[Schema.TaggedStruct<"ApiKey", {
@@ -28,23 +61,49 @@ declare const ExpandCliConfig_base: Schema.Class<ExpandCliConfig, {
28
61
  accessToken: Schema.Redacted<typeof Schema.String>;
29
62
  refreshToken: Schema.optional<Schema.Redacted<typeof Schema.String>>;
30
63
  expiresAt: typeof Schema.DateTimeUtc;
64
+ clientId: Schema.optional<typeof Schema.String>;
31
65
  }>]>>;
66
+ telemetry: Schema.optional<Schema.Struct<{
67
+ enabled: Schema.optional<typeof Schema.Boolean>;
68
+ distinctId: Schema.optional<typeof Schema.String>;
69
+ noticeShown: Schema.optional<typeof Schema.Boolean>;
70
+ }>>;
32
71
  }>, never, {
33
72
  readonly apiUrl?: URL | undefined;
34
73
  } & {
35
74
  readonly authMethod?: {
36
- readonly apiKey: import("effect/Redacted").Redacted<string & import("effect/Brand").Brand<"ApiKey">>;
37
75
  readonly _tag: "ApiKey";
76
+ readonly apiKey: Redacted.Redacted<string & import("effect/Brand").Brand<"ApiKey">>;
38
77
  } | {
39
- readonly accessToken: import("effect/Redacted").Redacted<string>;
40
- readonly refreshToken?: import("effect/Redacted").Redacted<string> | undefined;
41
- readonly expiresAt: DateTime.Utc;
42
78
  readonly _tag: "OAuth";
79
+ readonly accessToken: Redacted.Redacted<string>;
80
+ readonly refreshToken?: Redacted.Redacted<string> | undefined;
81
+ readonly expiresAt: DateTime.Utc;
82
+ readonly clientId?: string | undefined;
83
+ } | undefined;
84
+ } & {
85
+ readonly telemetry?: {
86
+ readonly enabled?: boolean | undefined;
87
+ readonly distinctId?: string | undefined;
88
+ readonly noticeShown?: boolean | undefined;
43
89
  } | undefined;
44
90
  }, {}, {}>;
45
91
  export declare class ExpandCliConfig extends ExpandCliConfig_base {
46
92
  static readonly Json: Schema.transform<Schema.SchemaClass<unknown, string, never>, typeof ExpandCliConfig>;
47
93
  }
94
+ export type AuthMethod = typeof ApiKeyConfig.Type | typeof OAuthConfig.Type;
95
+ /**
96
+ * How a stored credential stands right now.
97
+ *
98
+ * `refresh_required` is deliberately distinct from `healthy`: an expired access
99
+ * token with a refresh token on disk is only a credential we *could* renew, and
100
+ * renewal can fail. Reporting it as healthy told agents a machine was authorized
101
+ * when the next call would fail.
102
+ */
103
+ export type AuthMethodState = 'healthy' | 'refresh_required' | 'unusable';
104
+ export declare function authMethodState(authMethod: AuthMethod, now: DateTime.Utc): AuthMethodState;
105
+ /** Returns whether a local credential can be used now or renewed on first API use. */
106
+ export declare function isAuthMethodLocallyUsable(authMethod: AuthMethod, now: DateTime.Utc): boolean;
48
107
  declare const ConfigNotWritable_base: Schema.TaggedErrorClass<ConfigNotWritable, "ConfigNotWritable", {
49
108
  readonly _tag: Schema.tag<"ConfigNotWritable">;
50
109
  } & {
@@ -53,6 +112,17 @@ declare const ConfigNotWritable_base: Schema.TaggedErrorClass<ConfigNotWritable,
53
112
  export declare class ConfigNotWritable extends ConfigNotWritable_base {
54
113
  get message(): string;
55
114
  }
115
+ declare const ConfigCleanupError_base: Schema.TaggedErrorClass<ConfigCleanupError, "ConfigCleanupError", {
116
+ readonly _tag: Schema.tag<"ConfigCleanupError">;
117
+ } & {
118
+ path: typeof Schema.String;
119
+ temporaryPath: typeof Schema.String;
120
+ error: typeof Schema.Defect;
121
+ operationError: typeof Schema.Defect;
122
+ }>;
123
+ export declare class ConfigCleanupError extends ConfigCleanupError_base {
124
+ get message(): string;
125
+ }
56
126
  declare const ConfigParseError_base: Schema.TaggedErrorClass<ConfigParseError, "ConfigParseError", {
57
127
  readonly _tag: Schema.tag<"ConfigParseError">;
58
128
  } & {
@@ -62,6 +132,16 @@ declare const ConfigParseError_base: Schema.TaggedErrorClass<ConfigParseError, "
62
132
  export declare class ConfigParseError extends ConfigParseError_base {
63
133
  get message(): string;
64
134
  }
135
+ declare const CredentialStoreInsecure_base: Schema.TaggedErrorClass<CredentialStoreInsecure, "CredentialStoreInsecure", {
136
+ readonly _tag: Schema.tag<"CredentialStoreInsecure">;
137
+ } & {
138
+ path: typeof Schema.String;
139
+ reason: typeof Schema.String;
140
+ error: typeof Schema.Defect;
141
+ }>;
142
+ export declare class CredentialStoreInsecure extends CredentialStoreInsecure_base {
143
+ get message(): string;
144
+ }
65
145
  declare const NotAuthenticated_base: Schema.TaggedErrorClass<NotAuthenticated, "NotAuthenticated", {
66
146
  readonly _tag: Schema.tag<"NotAuthenticated">;
67
147
  }>;
@@ -77,27 +157,38 @@ export declare class OAuthTokenExpired extends OAuthTokenExpired_base {
77
157
  get message(): string;
78
158
  }
79
159
  declare const ConfigManager_base: Effect.Service.Class<ConfigManager, "@expandai/cli/Config/ConfigManager", {
80
- readonly dependencies: readonly [import("effect/Layer").Layer<FileSystem.FileSystem, never, never>, import("effect/Layer").Layer<Path.Path, never, never>];
160
+ readonly dependencies: readonly [import("effect/Layer").Layer<NodeContext.NodeContext, never, never>];
81
161
  readonly effect: Effect.Effect<{
82
162
  readonly configPath: string;
163
+ readonly inspectSecureStorage: () => Effect.Effect<void, CredentialStoreInsecure, never>;
164
+ readonly ensureSecureStorage: () => Effect.Effect<void, CredentialStoreInsecure, never>;
83
165
  readonly loadConfig: () => Effect.Effect<{
84
166
  apiUrl: URL;
85
167
  authMethod: NonNullable<{
86
- readonly apiKey: import("effect/Redacted").Redacted<string & import("effect/Brand").Brand<"ApiKey">>;
87
168
  readonly _tag: "ApiKey";
169
+ readonly apiKey: Redacted.Redacted<string & import("effect/Brand").Brand<"ApiKey">>;
88
170
  } | {
89
- readonly accessToken: import("effect/Redacted").Redacted<string>;
90
- readonly refreshToken?: import("effect/Redacted").Redacted<string> | undefined;
91
- readonly expiresAt: DateTime.Utc;
92
171
  readonly _tag: "OAuth";
172
+ readonly accessToken: Redacted.Redacted<string>;
173
+ readonly refreshToken?: Redacted.Redacted<string> | undefined;
174
+ readonly expiresAt: DateTime.Utc;
175
+ readonly clientId?: string | undefined;
93
176
  } | undefined>;
94
- }, ConfigParseError | NotAuthenticated | import("effect/ConfigError").ConfigError | import("@effect/platform/Error").PlatformError, never>;
95
- readonly saveConfig: (config: ExpandCliConfig) => Effect.Effect<void, ConfigNotWritable | import("effect/ParseResult").ParseError, never>;
96
- readonly updateConfig: (patch: Partial<ExpandCliConfig>) => Effect.Effect<void, ConfigNotWritable | import("effect/ParseResult").ParseError, never>;
97
- readonly clearConfig: () => Effect.Effect<void, ConfigNotWritable | import("effect/ParseResult").ParseError, never>;
98
- readonly getApiUrl: () => Effect.Effect<URL, ConfigParseError | import("effect/ConfigError").ConfigError | import("@effect/platform/Error").PlatformError, never>;
177
+ }, ConfigParseError | CredentialStoreInsecure | NotAuthenticated | import("effect/ConfigError").ConfigError | PlatformError.PlatformError, never>;
178
+ readonly saveConfig: (config: ExpandCliConfig) => Effect.Effect<void, ConfigCleanupError | ConfigNotWritable | CredentialStoreInsecure | import("effect/ParseResult").ParseError, never>;
179
+ readonly updateConfig: (patch: Partial<ExpandCliConfig>) => Effect.Effect<void, ConfigCleanupError | ConfigNotWritable | ConfigParseError | CredentialStoreInsecure | import("effect/ParseResult").ParseError | PlatformError.PlatformError, never>;
180
+ readonly clearConfig: () => Effect.Effect<undefined, PlatformError.BadArgument | ConfigCleanupError | ConfigNotWritable | CredentialStoreInsecure | import("effect/ParseResult").ParseError | PlatformError.SystemError, never>;
181
+ readonly readConfigFile: () => Effect.Effect<{
182
+ config: ExpandCliConfig;
183
+ parseFailed: boolean;
184
+ } | {
185
+ config: ExpandCliConfig;
186
+ parseFailed: boolean;
187
+ }, never, never>;
188
+ readonly getApiUrl: () => Effect.Effect<URL, ConfigParseError | CredentialStoreInsecure | import("effect/ConfigError").ConfigError | PlatformError.PlatformError, never>;
189
+ readonly getAppUrl: () => Effect.Effect<string, import("effect/ConfigError").ConfigError, never>;
99
190
  readonly getPlaygroundHost: () => Effect.Effect<string, import("effect/ConfigError").ConfigError, never>;
100
- }, import("effect/ConfigError").ConfigError, FileSystem.FileSystem | Path.Path>;
191
+ }, import("effect/ConfigError").ConfigError, CommandExecutor.CommandExecutor | FileSystem.FileSystem | Path.Path>;
101
192
  }>;
102
193
  export declare class ConfigManager extends ConfigManager_base {
103
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAGnD,OAAO,EAAU,QAAQ,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEjE,mGAAmG;AACnG,eAAO,MAAM,eAAe,0BAA0B,CAAA;AAEtD,eAAO,MAAM,MAAM,8EAA6E,CAAA;AAEhG,eAAO,MAAM,YAAY;;EAAoD,CAAA;AAC7E,eAAO,MAAM,WAAW;;;;EAItB,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,qBAAa,eAAgB,SAAQ,oBAGnC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAI,uFAAoC;CACxD;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAErC;IACD,IAAI,OAAO,WAEV;CACD;;;;;;;AAED,qBAAa,gBAAiB,SAAQ,qBAGpC;IACD,IAAI,OAAO,WAEV;CACD;;;;AAED,qBAAa,gBAAiB,SAAQ,qBAA8D;IACnG,IAAI,OAAO,WAEV;CACD;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAErC;IACD,IAAI,OAAO,WAEV;CACD;;;;;;;;;;;;;;;;;;;;;;;;AAYD,qBAAa,aAAc,SAAQ,kBA2HjC;CAAG"}
1
+ {"version":3,"file":"Config.d.ts","sourceRoot":"","sources":["../../src/Config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAW,eAAe,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAgB,MAAM,EAAU,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAIjG,mGAAmG;AACnG,eAAO,MAAM,eAAe,0BAA0B,CAAA;AAEtD,0EAA0E;AAC1E,eAAO,MAAM,eAAe,sBAAsB,CAAA;AAElD;;;;;;;GAOG;AACH,eAAO,MAAM,OAAO,SAAU,MAAM,2BASlC,CAAA;AAEF,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,QAAQ,MAAM,UAAU,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,oCACkB,CAAA;AAExG,eAAO,MAAM,MAAM,8EAA6E,CAAA;AAEhG,eAAO,MAAM,YAAY;;EAAoD,CAAA;AAC7E,eAAO,MAAM,WAAW;;;;;EAQtB,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;EAI5B,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,qBAAa,eAAgB,SAAQ,oBAInC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAI,uFAAoC;CACxD;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,YAAY,CAAC,IAAI,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAE3E;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,kBAAkB,GAAG,UAAU,CAAA;AAEzE,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,eAAe,CAO1F;AAED,sFAAsF;AACtF,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAE5F;;;;;;AA2DD,qBAAa,iBAAkB,SAAQ,sBAErC;IACD,IAAI,OAAO,WAEV;CACD;;;;;;;;;AAED,qBAAa,kBAAmB,SAAQ,uBAKtC;IACD,IAAI,OAAO,WAEV;CACD;;;;;;;AAED,qBAAa,gBAAiB,SAAQ,qBAGpC;IACD,IAAI,OAAO,WAEV;CACD;;;;;;;;AAED,qBAAa,uBAAwB,SAAQ,4BAI3C;IACD,IAAI,OAAO,WAEV;CACD;;;;AAED,qBAAa,gBAAiB,SAAQ,qBAA8D;IACnG,IAAI,OAAO,WAEV;CACD;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAErC;IACD,IAAI,OAAO,WAEV;CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYD,qBAAa,aAAc,SAAQ,kBAgnBjC;CAAG"}
@@ -1,8 +1,12 @@
1
1
  /**
2
- * Prepends a short note to fetched markdown carrying the snapshot handle and the public
3
- * playground link, and telling the agent how to search the already-captured page by handle
4
- * (rather than fetching the URL again) and cite specific passages back to the user. Both the
5
- * Claude Code and OpenCode hooks inject this so the surfaced guidance stays identical.
2
+ * Citation guidance for `expandai fetch` text output consumed by an agent. The plain
3
+ * command is a third fetch path alongside the hook and the MCP tools an agent that
4
+ * shells out to it used to receive evidence ids with nothing telling it to cite them,
5
+ * and answered uncited. Humans at a TTY do not need this, so callers gate on that.
6
+ *
7
+ * Returns the markdown unchanged when no playground URL is present, rather than
8
+ * emitting an instruction the reader cannot follow.
6
9
  */
10
+ export declare function withCitationFooter(markdown: string): string;
7
11
  export declare function withSnapshotNote(markdown: string, snapshotId: string, playgroundUrl: string): string;
8
12
  //# sourceMappingURL=SnapshotNote.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SnapshotNote.d.ts","sourceRoot":"","sources":["../../../src/Hook/SnapshotNote.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CASpG"}
1
+ {"version":3,"file":"SnapshotNote.d.ts","sourceRoot":"","sources":["../../../src/Hook/SnapshotNote.ts"],"names":[],"mappings":"AAeA;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiB3D;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAsBpG"}
@@ -0,0 +1,61 @@
1
+ import { CommandExecutor } from '@effect/platform';
2
+ import { Effect, Layer, Schema } from 'effect';
3
+ import { ClaudeProfile } from './ClaudeProfile.js';
4
+ import { HarnessConfigurationError, type HarnessInspection, HarnessInspectionError } from './HarnessAdapter.js';
5
+ import { MutationTransaction } from './MutationTransaction.js';
6
+ declare const IncompatibleClaudeProfileVersionError_base: Schema.TaggedErrorClass<IncompatibleClaudeProfileVersionError, "IncompatibleClaudeProfileVersionError", {
7
+ readonly _tag: Schema.tag<"IncompatibleClaudeProfileVersionError">;
8
+ } & {
9
+ executingVersion: typeof Schema.String;
10
+ requiredVersion: typeof Schema.String;
11
+ }>;
12
+ export declare class IncompatibleClaudeProfileVersionError extends IncompatibleClaudeProfileVersionError_base {
13
+ get message(): string;
14
+ }
15
+ declare const ClaudeProfilePolicyBlockedError_base: Schema.TaggedErrorClass<ClaudeProfilePolicyBlockedError, "ClaudeProfilePolicyBlockedError", {
16
+ readonly _tag: Schema.tag<"ClaudeProfilePolicyBlockedError">;
17
+ } & {
18
+ policyBlock: typeof Schema.String;
19
+ }>;
20
+ export declare class ClaudeProfilePolicyBlockedError extends ClaudeProfilePolicyBlockedError_base {
21
+ get message(): string;
22
+ }
23
+ declare const ClaudeAdapterOperationError_base: Schema.TaggedErrorClass<ClaudeAdapterOperationError, "ClaudeAdapterOperationError", {
24
+ readonly _tag: Schema.tag<"ClaudeAdapterOperationError">;
25
+ } & {
26
+ code: Schema.Literal<["inspection_failed", "configuration_failed"]>;
27
+ }>;
28
+ export declare class ClaudeAdapterOperationError extends ClaudeAdapterOperationError_base {
29
+ get message(): "Claude Code profile configuration failed" | "Claude Code profile inspection failed";
30
+ }
31
+ declare const ClaudeRuntimeProbe_base: Effect.Service.Class<ClaudeRuntimeProbe, "@expandai/cli/Init/ClaudeRuntimeProbe", {
32
+ readonly dependencies: readonly [Layer.Layer<CommandExecutor.CommandExecutor, never, import("@effect/platform/FileSystem").FileSystem>];
33
+ readonly effect: Effect.Effect<{
34
+ executingVersion: string;
35
+ portableCommandAvailable: Effect.Effect<boolean, never, never>;
36
+ }, import("effect/ConfigError").ConfigError, CommandExecutor.CommandExecutor>;
37
+ }>;
38
+ /** Runtime facts kept separate from persisted harness commands. */
39
+ export declare class ClaudeRuntimeProbe extends ClaudeRuntimeProbe_base {
40
+ /**
41
+ * Not `DefaultWithoutDependencies`: that layer always reports `CLI_VERSION` and
42
+ * always runs the real command probe. Tests need to pin an arbitrary executing
43
+ * version and a precomputed probe result, which only a fixture layer can supply.
44
+ */
45
+ static testLayer(options: {
46
+ readonly executingVersion: string;
47
+ readonly portableCommandAvailable: boolean;
48
+ }): Layer.Layer<ClaudeRuntimeProbe, never, never>;
49
+ }
50
+ declare const ClaudeAdapter_base: Effect.Service.Class<ClaudeAdapter, "@expandai/cli/Init/ClaudeAdapter", {
51
+ readonly dependencies: readonly [Layer.Layer<ClaudeProfile, import("@effect/platform/Error").BadArgument | import("effect/ConfigError").ConfigError, never>, Layer.Layer<MutationTransaction, never, never>, Layer.Layer<ClaudeRuntimeProbe, import("effect/ConfigError").ConfigError, import("@effect/platform/FileSystem").FileSystem>];
52
+ readonly effect: Effect.Effect<{
53
+ readonly harness: 'claude-code';
54
+ readonly inspect: (scope: "global" | "project") => Effect.Effect<HarnessInspection, HarnessInspectionError, never>;
55
+ readonly configure: (scope: "global" | "project") => Effect.Effect<HarnessInspection, HarnessConfigurationError, never>;
56
+ }, never, ClaudeProfile | ClaudeRuntimeProbe | MutationTransaction>;
57
+ }>;
58
+ export declare class ClaudeAdapter extends ClaudeAdapter_base {
59
+ }
60
+ export {};
61
+ //# sourceMappingURL=ClaudeAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeAdapter.d.ts","sourceRoot":"","sources":["../../../src/Init/ClaudeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE3D,OAAO,EAAU,MAAM,EAAE,KAAK,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAE9D,OAAO,EAA0B,aAAa,EAAgC,MAAM,oBAAoB,CAAA;AAExG,OAAO,EAAE,yBAAyB,EAAE,KAAK,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC/G,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;;;;;;;AAE9D,qBAAa,qCAAsC,SAAQ,0CAM1D;IACA,IAAI,OAAO,WAEV;CACD;;;;;;AAED,qBAAa,+BAAgC,SAAQ,oCAKpD;IACA,IAAI,OAAO,WAEV;CACD;;;;;;AAED,qBAAa,2BAA4B,SAAQ,gCAKhD;IACA,IAAI,OAAO,yFAIV;CACD;;;;;;;;AA0CD,mEAAmE;AACnE,qBAAa,kBAAmB,SAAQ,uBAGtC;IACD;;;;OAIG;IACH,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAA;KAAE,iDAQ1G;CACD;;;;0BAgFkB,aAAa;;;;;AAGhC,qBAAa,aAAc,SAAQ,kBAGjC;CAAG"}
@@ -0,0 +1,77 @@
1
+ import { FileSystem, Path } from '@effect/platform';
2
+ import { Effect, Layer } from 'effect';
3
+ import { CliInvocation } from '../Install/Domain.js';
4
+ import type { InitComponent, InitScope } from './Domain.js';
5
+ import type { MutationOperation } from './MutationTransaction.js';
6
+ export declare const CLAUDE_PROFILE_VERSION = "0.0.4";
7
+ export declare const CLAUDE_POLICY_MANAGED_MCP = "managed_mcp_only";
8
+ export declare const CLAUDE_POLICY_MCP_DENIED = "managed_mcp_denied";
9
+ export declare const CLAUDE_POLICY_MCP_NOT_ALLOWED = "managed_mcp_not_allowed";
10
+ export declare const CLAUDE_POLICY_READ_ONLY = "target_read_only";
11
+ interface ClaudeTargetLocations {
12
+ readonly settingsFile: string;
13
+ readonly skillDirectory: string;
14
+ readonly skillFile: string;
15
+ readonly mcpFile: string;
16
+ readonly managedSettingsFiles: string[];
17
+ readonly managedSettingsDirectories: string[];
18
+ }
19
+ export interface ClaudeManagedSettingsLocationSet {
20
+ readonly files: string[];
21
+ readonly directories: string[];
22
+ }
23
+ interface ClaudeRegistrationInspection {
24
+ readonly current: boolean;
25
+ readonly installed: boolean;
26
+ readonly legacyVariants: string[];
27
+ readonly version?: string;
28
+ }
29
+ export interface ClaudeProfileInspection {
30
+ readonly scope: InitScope;
31
+ readonly targets: ClaudeTargetLocations;
32
+ readonly hook: ClaudeRegistrationInspection;
33
+ readonly skill: ClaudeRegistrationInspection;
34
+ readonly mcp: ClaudeRegistrationInspection;
35
+ readonly components: InitComponent[];
36
+ readonly configured: boolean;
37
+ readonly profileVersion: string;
38
+ readonly componentVersions: {
39
+ readonly hook?: string;
40
+ readonly skill?: string;
41
+ readonly mcp?: string;
42
+ };
43
+ readonly policyBlocks: string[];
44
+ readonly remotePolicyMayApply: true;
45
+ readonly reloadMayBeRequired: boolean;
46
+ readonly consentMayBeRequired: boolean;
47
+ }
48
+ export interface ClaudeProfileMutationPlan {
49
+ readonly changed: boolean;
50
+ readonly inspection: ClaudeProfileInspection;
51
+ readonly resultInspection: ClaudeProfileInspection;
52
+ readonly operations: MutationOperation[];
53
+ }
54
+ declare function defaultManagedSettingsLocations(): ClaudeManagedSettingsLocationSet;
55
+ declare const ClaudeManagedSettingsLocations_base: Effect.Service.Class<ClaudeManagedSettingsLocations, "@expandai/cli/Init/ClaudeManagedSettingsLocations", {
56
+ readonly sync: typeof defaultManagedSettingsLocations;
57
+ }>;
58
+ /** Discoverable file-based Claude managed-policy locations for the current platform. */
59
+ export declare class ClaudeManagedSettingsLocations extends ClaudeManagedSettingsLocations_base {
60
+ static testLayer(locations: ClaudeManagedSettingsLocationSet): Layer.Layer<ClaudeManagedSettingsLocations, never, never>;
61
+ }
62
+ declare const ClaudeProfile_base: Effect.Service.Class<ClaudeProfile, "@expandai/cli/Init/ClaudeProfile", {
63
+ readonly dependencies: readonly [Layer.Layer<FileSystem.FileSystem, never, never>, Layer.Layer<Path.Path, never, never>, Layer.Layer<ClaudeManagedSettingsLocations, never, never>, Layer.Layer<CliInvocation, import("effect/ConfigError").ConfigError, never>];
64
+ readonly effect: Effect.Effect<{
65
+ readonly inspect: (scope: "global" | "project") => Effect.Effect<ClaudeProfileInspection, import("effect/ParseResult").ParseError | import("@effect/platform/Error").PlatformError, never>;
66
+ readonly plan: (scope: "global" | "project") => Effect.Effect<{
67
+ changed: boolean;
68
+ inspection: ClaudeProfileInspection;
69
+ resultInspection: ClaudeProfileInspection;
70
+ operations: MutationOperation[];
71
+ }, import("effect/ParseResult").ParseError | import("@effect/platform/Error").PlatformError, never>;
72
+ }, import("@effect/platform/Error").BadArgument | import("effect/ConfigError").ConfigError, ClaudeManagedSettingsLocations | CliInvocation | FileSystem.FileSystem | Path.Path>;
73
+ }>;
74
+ export declare class ClaudeProfile extends ClaudeProfile_base {
75
+ }
76
+ export {};
77
+ //# sourceMappingURL=ClaudeProfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeProfile.d.ts","sourceRoot":"","sources":["../../../src/Init/ClaudeProfile.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAAiB,MAAM,EAAU,KAAK,EAAkB,MAAM,QAAQ,CAAA;AAI7E,OAAO,EAAmB,aAAa,EAAsC,MAAM,sBAAsB,CAAA;AAEzG,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAyB,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAExF,eAAO,MAAM,sBAAsB,UAAc,CAAA;AAEjD,eAAO,MAAM,yBAAyB,qBAAqB,CAAA;AAC3D,eAAO,MAAM,wBAAwB,uBAAuB,CAAA;AAC5D,eAAO,MAAM,6BAA6B,4BAA4B,CAAA;AACtE,eAAO,MAAM,uBAAuB,qBAAqB,CAAA;AAEzD,UAAU,qBAAqB;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,0BAA0B,EAAE,MAAM,EAAE,CAAA;CAC7C;AAED,MAAM,WAAW,gCAAgC;IAChD,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAA;CAC9B;AAED,UAAU,4BAA4B;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,EAAE,CAAA;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAA;IACvC,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAA;IAC3C,QAAQ,CAAC,KAAK,EAAE,4BAA4B,CAAA;IAC5C,QAAQ,CAAC,GAAG,EAAE,4BAA4B,CAAA;IAC1C,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,CAAA;IACpC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,iBAAiB,EAAE;QAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KACrB,CAAA;IACD,QAAQ,CAAC,YAAY,EAAE,MAAM,EAAE,CAAA;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAA;IACnC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAA;CACtC;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAA;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,CAAA;IAClD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAA;CACxC;AA2BD,iBAAS,+BAA+B,IAAI,gCAAgC,CAmB3E;;;;AAED,wFAAwF;AACxF,qBAAa,8BAA+B,SAAQ,mCAKnD;IACA,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,gCAAgC,6DAE3D;CACD;;;;;;;;;;;;;AAsUD,qBAAa,aAAc,SAAQ,kBAGjC;CAAG"}
@@ -0,0 +1,139 @@
1
+ import { Schema } from 'effect';
2
+ export declare const AUTHORIZATION_REQUIRED_MESSAGE = "Open the approval page in your browser, type in the code shown here, and approve. Only enter this code on the Expand approval page your terminal named \u2014 never a code someone sent you, and never on a page from a link you did not expect. When you have approved, say so, and the same command will pick the authorization up.";
3
+ export declare const AUTHORIZATION_CONSUMED_MESSAGE = "Authorization complete. That setup code has been consumed and cannot be reused.";
4
+ export declare const ALREADY_AUTHENTICATED_MESSAGE = "Expand is already authorized. Agent setup is complete.";
5
+ /**
6
+ * Some harnesses were configured and some were not. This has to be its own
7
+ * message: the agent relays `userMessage` verbatim, so reporting a partial run
8
+ * with "Agent setup is complete" tells the user something untrue about a
9
+ * machine they are about to rely on.
10
+ */
11
+ export declare const PARTIAL_CONFIGURATION_MESSAGE = "Expand is authorized, but not every harness could be configured. The harnesses that failed are listed under `failures`; the ones under `installations` are ready to use.";
12
+ export declare const HARNESS_SELECTION_MESSAGE = "Show these harnesses to the user and ask which to configure. Pass the chosen ones to `expandai init --harnesses`. Harnesses that are not chosen are left untouched.";
13
+ /** There is nothing to choose from, so the agent must not present an empty list. */
14
+ export declare const NO_HARNESS_DETECTED_MESSAGE = "No supported agent harness was found on this machine. Do not ask the user to choose from an empty list. Tell them Expand supports claude-code, cursor, opencode, and codex, and that setup cannot continue until one of them is installed.";
15
+ export declare const InitHarness: Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>;
16
+ export type InitHarness = typeof InitHarness.Type;
17
+ declare const InitDetectionResult_base: Schema.Class<InitDetectionResult, {
18
+ schemaVersion: Schema.Literal<[1]>;
19
+ status: Schema.Literal<["detected"]>;
20
+ harnesses: Schema.Array$<Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>>;
21
+ current: Schema.optional<Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>>;
22
+ userMessage: Schema.Literal<["Show these harnesses to the user and ask which to configure. Pass the chosen ones to `expandai init --harnesses`. Harnesses that are not chosen are left untouched.", "No supported agent harness was found on this machine. Do not ask the user to choose from an empty list. Tell them Expand supports claude-code, cursor, opencode, and codex, and that setup cannot continue until one of them is installed."]>;
23
+ }, Schema.Struct.Encoded<{
24
+ schemaVersion: Schema.Literal<[1]>;
25
+ status: Schema.Literal<["detected"]>;
26
+ harnesses: Schema.Array$<Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>>;
27
+ current: Schema.optional<Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>>;
28
+ userMessage: Schema.Literal<["Show these harnesses to the user and ask which to configure. Pass the chosen ones to `expandai init --harnesses`. Harnesses that are not chosen are left untouched.", "No supported agent harness was found on this machine. Do not ask the user to choose from an empty list. Tell them Expand supports claude-code, cursor, opencode, and codex, and that setup cannot continue until one of them is installed."]>;
29
+ }>, never, {
30
+ readonly current?: "claude-code" | "codex" | "cursor" | "opencode" | undefined;
31
+ } & {
32
+ readonly harnesses: readonly ("claude-code" | "codex" | "cursor" | "opencode")[];
33
+ } & {
34
+ readonly schemaVersion: 1;
35
+ } & {
36
+ readonly status: "detected";
37
+ } & {
38
+ readonly userMessage: "No supported agent harness was found on this machine. Do not ask the user to choose from an empty list. Tell them Expand supports claude-code, cursor, opencode, and codex, and that setup cannot continue until one of them is installed." | "Show these harnesses to the user and ask which to configure. Pass the chosen ones to `expandai init --harnesses`. Harnesses that are not chosen are left untouched.";
39
+ }, {}, {}>;
40
+ /**
41
+ * Answer to `init --detect`: what setup *would* touch, before it touches
42
+ * anything. Separate from `InitResult` because detection never authorizes,
43
+ * never writes, and can legitimately find nothing.
44
+ */
45
+ export declare class InitDetectionResult extends InitDetectionResult_base {
46
+ }
47
+ export declare const InitHarnesses: Schema.NonEmptyArray<Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>>;
48
+ export type InitHarnesses = typeof InitHarnesses.Type;
49
+ export declare const InitScope: Schema.Literal<["project", "global"]>;
50
+ export type InitScope = typeof InitScope.Type;
51
+ export declare const InitComponent: Schema.Literal<["webfetch-hook", "runtime-skill", "mcp"]>;
52
+ export type InitComponent = typeof InitComponent.Type;
53
+ export declare const InitRuntimeState: Schema.Literal<["unverified", "observed", "reload_required", "blocked"]>;
54
+ export type InitRuntimeState = typeof InitRuntimeState.Type;
55
+ export declare const InitStatus: Schema.Literal<["authorization_required", "completed"]>;
56
+ export type InitStatus = typeof InitStatus.Type;
57
+ declare const InitRequest_base: Schema.Class<InitRequest, {
58
+ harnesses: Schema.NonEmptyArray<Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>>;
59
+ scope: Schema.Literal<["project", "global"]>;
60
+ setupToken: Schema.optional<Schema.transform<Schema.filter<Schema.filter<typeof Schema.String>>, Schema.Redacted<typeof Schema.String>>>;
61
+ }, Schema.Struct.Encoded<{
62
+ harnesses: Schema.NonEmptyArray<Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>>;
63
+ scope: Schema.Literal<["project", "global"]>;
64
+ setupToken: Schema.optional<Schema.transform<Schema.filter<Schema.filter<typeof Schema.String>>, Schema.Redacted<typeof Schema.String>>>;
65
+ }>, never, {
66
+ readonly setupToken?: import("effect/Redacted").Redacted<string> | undefined;
67
+ } & {
68
+ readonly harnesses: readonly ["claude-code" | "codex" | "cursor" | "opencode", ...("claude-code" | "codex" | "cursor" | "opencode")[]];
69
+ } & {
70
+ readonly scope: "global" | "project";
71
+ }, {}, {}>;
72
+ export declare class InitRequest extends InitRequest_base {
73
+ }
74
+ export declare const InitResult: Schema.Union<[Schema.Struct<{
75
+ schemaVersion: Schema.Literal<[1]>;
76
+ status: Schema.Literal<["authorization_required"]>;
77
+ harnesses: Schema.NonEmptyArray<Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>>;
78
+ scope: Schema.Literal<["project", "global"]>;
79
+ userMessage: Schema.Literal<["Open the approval page in your browser, type in the code shown here, and approve. Only enter this code on the Expand approval page your terminal named — never a code someone sent you, and never on a page from a link you did not expect. When you have approved, say so, and the same command will pick the authorization up."]>;
80
+ authorization: Schema.Struct<{
81
+ url: typeof Schema.URL;
82
+ userCode: typeof Schema.String;
83
+ approvalExpiresAt: typeof Schema.DateTimeUtc;
84
+ }>;
85
+ }>, Schema.Struct<{
86
+ schemaVersion: Schema.Literal<[1]>;
87
+ status: Schema.Literal<["completed"]>;
88
+ harnesses: Schema.NonEmptyArray<Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>>;
89
+ scope: Schema.Literal<["project", "global"]>;
90
+ userMessage: Schema.Literal<["Authorization complete. That setup code has been consumed and cannot be reused.", "Expand is already authorized. Agent setup is complete.", "Expand is authorized, but not every harness could be configured. The harnesses that failed are listed under `failures`; the ones under `installations` are ready to use."]>;
91
+ auth: Schema.Struct<{
92
+ healthy: typeof Schema.Boolean;
93
+ }>;
94
+ projectPath: Schema.optional<typeof Schema.String>;
95
+ installations: Schema.NonEmptyArray<Schema.Struct<{
96
+ harness: Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>;
97
+ configured: typeof Schema.Boolean;
98
+ changed: typeof Schema.Boolean;
99
+ components: Schema.Array$<Schema.Literal<["webfetch-hook", "runtime-skill", "mcp"]>>;
100
+ version: typeof Schema.String;
101
+ verification: Schema.Struct<{
102
+ runtimeState: Schema.Literal<["unverified", "observed", "reload_required", "blocked"]>;
103
+ nextAction: typeof Schema.String;
104
+ }>;
105
+ }>>;
106
+ failures: Schema.optional<Schema.Array$<Schema.Struct<{
107
+ harness: Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>;
108
+ code: typeof Schema.String;
109
+ recoverable: typeof Schema.Boolean;
110
+ }>>>;
111
+ }>]>;
112
+ export type InitResult = typeof InitResult.Type;
113
+ declare const InitErrorEnvelope_base: Schema.Class<InitErrorEnvelope, {
114
+ schemaVersion: Schema.Literal<[1]>;
115
+ status: Schema.Literal<["error"]>;
116
+ code: typeof Schema.String;
117
+ message: typeof Schema.String;
118
+ recoverable: typeof Schema.Boolean;
119
+ }, Schema.Struct.Encoded<{
120
+ schemaVersion: Schema.Literal<[1]>;
121
+ status: Schema.Literal<["error"]>;
122
+ code: typeof Schema.String;
123
+ message: typeof Schema.String;
124
+ recoverable: typeof Schema.Boolean;
125
+ }>, never, {
126
+ readonly code: string;
127
+ } & {
128
+ readonly message: string;
129
+ } & {
130
+ readonly recoverable: boolean;
131
+ } & {
132
+ readonly schemaVersion: 1;
133
+ } & {
134
+ readonly status: "error";
135
+ }, {}, {}>;
136
+ export declare class InitErrorEnvelope extends InitErrorEnvelope_base {
137
+ }
138
+ export {};
139
+ //# sourceMappingURL=Domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Domain.d.ts","sourceRoot":"","sources":["../../../src/Init/Domain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAI/B,eAAO,MAAM,8BAA8B,0UACwR,CAAA;AAEnU,eAAO,MAAM,8BAA8B,oFACuC,CAAA;AAElF,eAAO,MAAM,6BAA6B,2DAA2D,CAAA;AAErG;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,6KACiI,CAAA;AAE3K,eAAO,MAAM,yBAAyB,wKACgI,CAAA;AAEtK,oFAAoF;AACpF,eAAO,MAAM,2BAA2B,+OACqM,CAAA;AAE7O,eAAO,MAAM,WAAW,gEAA+D,CAAA;AACvF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAEjD;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,wBAMvC;CAAG;AAEL,eAAO,MAAM,aAAa,sFAAoC,CAAA;AAC9D,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,SAAS,uCAAsC,CAAA;AAC5D,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAE7C,eAAO,MAAM,aAAa,2DAA0D,CAAA;AACpF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,gBAAgB,0EAAyE,CAAA;AACtG,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,UAAU,yDAAwD,CAAA;AAC/E,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;AAa/C,qBAAa,WAAY,SAAQ,gBAI/B;CAAG;AAqEL,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAqE,CAAA;AAC5F,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAE/C,qBAAa,iBAAkB,SAAQ,sBAMrC;CAAG"}
@@ -0,0 +1,33 @@
1
+ import { Schema } from 'effect';
2
+ import { type InitComponent, type InitRuntimeState } from './Domain.js';
3
+ export interface HarnessInspection {
4
+ readonly configured: boolean;
5
+ readonly changed?: boolean;
6
+ readonly components: InitComponent[];
7
+ readonly integrationVersion?: string;
8
+ readonly policyBlock?: string;
9
+ readonly nextAction: string;
10
+ readonly runtimeState?: InitRuntimeState;
11
+ }
12
+ declare const HarnessInspectionError_base: Schema.TaggedErrorClass<HarnessInspectionError, "HarnessInspectionError", {
13
+ readonly _tag: Schema.tag<"HarnessInspectionError">;
14
+ } & {
15
+ harness: Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>;
16
+ scope: Schema.Literal<["project", "global"]>;
17
+ error: typeof Schema.Defect;
18
+ }>;
19
+ export declare class HarnessInspectionError extends HarnessInspectionError_base {
20
+ get message(): string;
21
+ }
22
+ declare const HarnessConfigurationError_base: Schema.TaggedErrorClass<HarnessConfigurationError, "HarnessConfigurationError", {
23
+ readonly _tag: Schema.tag<"HarnessConfigurationError">;
24
+ } & {
25
+ harness: Schema.Literal<["claude-code", "cursor", "opencode", "codex"]>;
26
+ scope: Schema.Literal<["project", "global"]>;
27
+ error: typeof Schema.Defect;
28
+ }>;
29
+ export declare class HarnessConfigurationError extends HarnessConfigurationError_base {
30
+ get message(): string;
31
+ }
32
+ export {};
33
+ //# sourceMappingURL=HarnessAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HarnessAdapter.d.ts","sourceRoot":"","sources":["../../../src/Init/HarnessAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC5C,OAAO,EAAE,KAAK,aAAa,EAAe,KAAK,gBAAgB,EAAa,MAAM,aAAa,CAAA;AAE/F,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,CAAA;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAA;CACxC;;;;;;;;AAED,qBAAa,sBAAuB,SAAQ,2BAI1C;IACD,IAAI,OAAO,WAEV;CACD;;;;;;;;AAED,qBAAa,yBAA0B,SAAQ,8BAO9C;IACA,IAAI,OAAO,WAEV;CACD"}
@@ -0,0 +1,19 @@
1
+ import { FileSystem, Path } from '@effect/platform';
2
+ import { Effect, Option } from 'effect';
3
+ import { InitHarness } from './Domain.js';
4
+ interface HarnessDetectionInput {
5
+ readonly cwd?: string;
6
+ readonly environment?: Readonly<Record<string, string | undefined>>;
7
+ readonly hint?: typeof InitHarness.Type;
8
+ }
9
+ declare const HarnessDetector_base: Effect.Service.Class<HarnessDetector, "@expandai/cli/Init/HarnessDetector", {
10
+ readonly dependencies: readonly [import("effect/Layer").Layer<FileSystem.FileSystem, never, never>, import("effect/Layer").Layer<Path.Path, never, never>];
11
+ readonly effect: Effect.Effect<{
12
+ readonly detect: (input?: HarnessDetectionInput | undefined) => Effect.Effect<("claude-code" | "codex" | "cursor" | "opencode")[], never, never>;
13
+ readonly detectCurrent: (input?: Pick<HarnessDetectionInput, "environment"> | undefined) => Effect.Effect<Option.Option<"claude-code" | "codex" | "cursor" | "opencode">, never, never>;
14
+ }, never, FileSystem.FileSystem | Path.Path>;
15
+ }>;
16
+ export declare class HarnessDetector extends HarnessDetector_base {
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=HarnessDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HarnessDetector.d.ts","sourceRoot":"","sources":["../../../src/Init/HarnessDetector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAsB,MAAM,aAAa,CAAA;AAE7D,UAAU,qBAAqB;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAA;IACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,WAAW,CAAC,IAAI,CAAA;CACvC;;;;;;;;AAmBD,qBAAa,eAAgB,SAAQ,oBA+CnC;CAAG"}