@amodalai/amodal 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (511) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE +21 -0
  3. package/README.md +42 -0
  4. package/dist/src/auth/index.d.ts +13 -0
  5. package/dist/src/auth/index.d.ts.map +1 -0
  6. package/dist/src/auth/index.js +10 -0
  7. package/dist/src/auth/index.js.map +1 -0
  8. package/dist/src/auth/oauth2.d.ts +51 -0
  9. package/dist/src/auth/oauth2.d.ts.map +1 -0
  10. package/dist/src/auth/oauth2.js +196 -0
  11. package/dist/src/auth/oauth2.js.map +1 -0
  12. package/dist/src/auth/prompt.d.ts +21 -0
  13. package/dist/src/auth/prompt.d.ts.map +1 -0
  14. package/dist/src/auth/prompt.js +81 -0
  15. package/dist/src/auth/prompt.js.map +1 -0
  16. package/dist/src/auth/test-connection.d.ts +27 -0
  17. package/dist/src/auth/test-connection.d.ts.map +1 -0
  18. package/dist/src/auth/test-connection.js +153 -0
  19. package/dist/src/auth/test-connection.js.map +1 -0
  20. package/dist/src/auth/types.d.ts +32 -0
  21. package/dist/src/auth/types.d.ts.map +1 -0
  22. package/dist/src/auth/types.js +7 -0
  23. package/dist/src/auth/types.js.map +1 -0
  24. package/dist/src/commands/audit.d.ts +18 -0
  25. package/dist/src/commands/audit.d.ts.map +1 -0
  26. package/dist/src/commands/audit.js +86 -0
  27. package/dist/src/commands/audit.js.map +1 -0
  28. package/dist/src/commands/automations.d.ts +28 -0
  29. package/dist/src/commands/automations.d.ts.map +1 -0
  30. package/dist/src/commands/automations.js +179 -0
  31. package/dist/src/commands/automations.js.map +1 -0
  32. package/dist/src/commands/build-manifest-types.d.ts +33 -0
  33. package/dist/src/commands/build-manifest-types.d.ts.map +1 -0
  34. package/dist/src/commands/build-manifest-types.js +30 -0
  35. package/dist/src/commands/build-manifest-types.js.map +1 -0
  36. package/dist/src/commands/build-tools.d.ts +33 -0
  37. package/dist/src/commands/build-tools.d.ts.map +1 -0
  38. package/dist/src/commands/build-tools.js +237 -0
  39. package/dist/src/commands/build-tools.js.map +1 -0
  40. package/dist/src/commands/build.d.ts +23 -0
  41. package/dist/src/commands/build.d.ts.map +1 -0
  42. package/dist/src/commands/build.js +120 -0
  43. package/dist/src/commands/build.js.map +1 -0
  44. package/dist/src/commands/chat.d.ts +26 -0
  45. package/dist/src/commands/chat.d.ts.map +1 -0
  46. package/dist/src/commands/chat.js +123 -0
  47. package/dist/src/commands/chat.js.map +1 -0
  48. package/dist/src/commands/connect.d.ts +18 -0
  49. package/dist/src/commands/connect.d.ts.map +1 -0
  50. package/dist/src/commands/connect.js +198 -0
  51. package/dist/src/commands/connect.js.map +1 -0
  52. package/dist/src/commands/deploy.d.ts +20 -0
  53. package/dist/src/commands/deploy.d.ts.map +1 -0
  54. package/dist/src/commands/deploy.js +137 -0
  55. package/dist/src/commands/deploy.js.map +1 -0
  56. package/dist/src/commands/deployments.d.ts +17 -0
  57. package/dist/src/commands/deployments.d.ts.map +1 -0
  58. package/dist/src/commands/deployments.js +77 -0
  59. package/dist/src/commands/deployments.js.map +1 -0
  60. package/dist/src/commands/dev.d.ts +17 -0
  61. package/dist/src/commands/dev.d.ts.map +1 -0
  62. package/dist/src/commands/dev.js +109 -0
  63. package/dist/src/commands/dev.js.map +1 -0
  64. package/dist/src/commands/diff.d.ts +19 -0
  65. package/dist/src/commands/diff.d.ts.map +1 -0
  66. package/dist/src/commands/diff.js +120 -0
  67. package/dist/src/commands/diff.js.map +1 -0
  68. package/dist/src/commands/docker.d.ts +21 -0
  69. package/dist/src/commands/docker.d.ts.map +1 -0
  70. package/dist/src/commands/docker.js +215 -0
  71. package/dist/src/commands/docker.js.map +1 -0
  72. package/dist/src/commands/eval.d.ts +20 -0
  73. package/dist/src/commands/eval.d.ts.map +1 -0
  74. package/dist/src/commands/eval.js +236 -0
  75. package/dist/src/commands/eval.js.map +1 -0
  76. package/dist/src/commands/experiment.d.ts +21 -0
  77. package/dist/src/commands/experiment.d.ts.map +1 -0
  78. package/dist/src/commands/experiment.js +133 -0
  79. package/dist/src/commands/experiment.js.map +1 -0
  80. package/dist/src/commands/index.d.ts +10 -0
  81. package/dist/src/commands/index.d.ts.map +1 -0
  82. package/dist/src/commands/index.js +75 -0
  83. package/dist/src/commands/index.js.map +1 -0
  84. package/dist/src/commands/init.d.ts +17 -0
  85. package/dist/src/commands/init.d.ts.map +1 -0
  86. package/dist/src/commands/init.js +73 -0
  87. package/dist/src/commands/init.js.map +1 -0
  88. package/dist/src/commands/inspect.d.ts +22 -0
  89. package/dist/src/commands/inspect.d.ts.map +1 -0
  90. package/dist/src/commands/inspect.js +131 -0
  91. package/dist/src/commands/inspect.js.map +1 -0
  92. package/dist/src/commands/install-pkg.d.ts +29 -0
  93. package/dist/src/commands/install-pkg.d.ts.map +1 -0
  94. package/dist/src/commands/install-pkg.js +202 -0
  95. package/dist/src/commands/install-pkg.js.map +1 -0
  96. package/dist/src/commands/link.d.ts +32 -0
  97. package/dist/src/commands/link.d.ts.map +1 -0
  98. package/dist/src/commands/link.js +227 -0
  99. package/dist/src/commands/link.js.map +1 -0
  100. package/dist/src/commands/list.d.ts +19 -0
  101. package/dist/src/commands/list.d.ts.map +1 -0
  102. package/dist/src/commands/list.js +78 -0
  103. package/dist/src/commands/list.js.map +1 -0
  104. package/dist/src/commands/login.d.ts +31 -0
  105. package/dist/src/commands/login.d.ts.map +1 -0
  106. package/dist/src/commands/login.js +205 -0
  107. package/dist/src/commands/login.js.map +1 -0
  108. package/dist/src/commands/promote.d.ts +16 -0
  109. package/dist/src/commands/promote.d.ts.map +1 -0
  110. package/dist/src/commands/promote.js +55 -0
  111. package/dist/src/commands/promote.js.map +1 -0
  112. package/dist/src/commands/publish.d.ts +18 -0
  113. package/dist/src/commands/publish.d.ts.map +1 -0
  114. package/dist/src/commands/publish.js +122 -0
  115. package/dist/src/commands/publish.js.map +1 -0
  116. package/dist/src/commands/rollback.d.ts +17 -0
  117. package/dist/src/commands/rollback.d.ts.map +1 -0
  118. package/dist/src/commands/rollback.js +62 -0
  119. package/dist/src/commands/rollback.js.map +1 -0
  120. package/dist/src/commands/search.d.ts +20 -0
  121. package/dist/src/commands/search.d.ts.map +1 -0
  122. package/dist/src/commands/search.js +133 -0
  123. package/dist/src/commands/search.js.map +1 -0
  124. package/dist/src/commands/secrets.d.ts +20 -0
  125. package/dist/src/commands/secrets.d.ts.map +1 -0
  126. package/dist/src/commands/secrets.js +137 -0
  127. package/dist/src/commands/secrets.js.map +1 -0
  128. package/dist/src/commands/serve.d.ts +23 -0
  129. package/dist/src/commands/serve.d.ts.map +1 -0
  130. package/dist/src/commands/serve.js +144 -0
  131. package/dist/src/commands/serve.js.map +1 -0
  132. package/dist/src/commands/status.d.ts +16 -0
  133. package/dist/src/commands/status.d.ts.map +1 -0
  134. package/dist/src/commands/status.js +83 -0
  135. package/dist/src/commands/status.js.map +1 -0
  136. package/dist/src/commands/sync.d.ts +21 -0
  137. package/dist/src/commands/sync.d.ts.map +1 -0
  138. package/dist/src/commands/sync.js +94 -0
  139. package/dist/src/commands/sync.js.map +1 -0
  140. package/dist/src/commands/test-query.d.ts +19 -0
  141. package/dist/src/commands/test-query.d.ts.map +1 -0
  142. package/dist/src/commands/test-query.js +116 -0
  143. package/dist/src/commands/test-query.js.map +1 -0
  144. package/dist/src/commands/uninstall.d.ts +19 -0
  145. package/dist/src/commands/uninstall.d.ts.map +1 -0
  146. package/dist/src/commands/uninstall.js +84 -0
  147. package/dist/src/commands/uninstall.js.map +1 -0
  148. package/dist/src/commands/update.d.ts +21 -0
  149. package/dist/src/commands/update.d.ts.map +1 -0
  150. package/dist/src/commands/update.js +145 -0
  151. package/dist/src/commands/update.js.map +1 -0
  152. package/dist/src/commands/validate.d.ts +19 -0
  153. package/dist/src/commands/validate.d.ts.map +1 -0
  154. package/dist/src/commands/validate.js +114 -0
  155. package/dist/src/commands/validate.js.map +1 -0
  156. package/dist/src/fixtures/incident-response.d.ts +91 -0
  157. package/dist/src/fixtures/incident-response.d.ts.map +1 -0
  158. package/dist/src/fixtures/incident-response.js +208 -0
  159. package/dist/src/fixtures/incident-response.js.map +1 -0
  160. package/dist/src/main.d.ts +8 -0
  161. package/dist/src/main.d.ts.map +1 -0
  162. package/dist/src/main.js +30 -0
  163. package/dist/src/main.js.map +1 -0
  164. package/dist/src/shared/platform-client.d.ts +92 -0
  165. package/dist/src/shared/platform-client.d.ts.map +1 -0
  166. package/dist/src/shared/platform-client.js +155 -0
  167. package/dist/src/shared/platform-client.js.map +1 -0
  168. package/dist/src/shared/repo-discovery.d.ts +11 -0
  169. package/dist/src/shared/repo-discovery.d.ts.map +1 -0
  170. package/dist/src/shared/repo-discovery.js +33 -0
  171. package/dist/src/shared/repo-discovery.js.map +1 -0
  172. package/dist/src/templates/compose-template.d.ts +10 -0
  173. package/dist/src/templates/compose-template.d.ts.map +1 -0
  174. package/dist/src/templates/compose-template.js +30 -0
  175. package/dist/src/templates/compose-template.js.map +1 -0
  176. package/dist/src/templates/config-template.d.ts +14 -0
  177. package/dist/src/templates/config-template.d.ts.map +1 -0
  178. package/dist/src/templates/config-template.js +35 -0
  179. package/dist/src/templates/config-template.js.map +1 -0
  180. package/dist/src/templates/dockerfile-template.d.ts +10 -0
  181. package/dist/src/templates/dockerfile-template.d.ts.map +1 -0
  182. package/dist/src/templates/dockerfile-template.js +30 -0
  183. package/dist/src/templates/dockerfile-template.js.map +1 -0
  184. package/dist/src/templates/env-template.d.ts +12 -0
  185. package/dist/src/templates/env-template.d.ts.map +1 -0
  186. package/dist/src/templates/env-template.js +24 -0
  187. package/dist/src/templates/env-template.js.map +1 -0
  188. package/dist/src/templates/knowledge-template.d.ts +10 -0
  189. package/dist/src/templates/knowledge-template.d.ts.map +1 -0
  190. package/dist/src/templates/knowledge-template.js +24 -0
  191. package/dist/src/templates/knowledge-template.js.map +1 -0
  192. package/dist/src/templates/skill-template.d.ts +10 -0
  193. package/dist/src/templates/skill-template.d.ts.map +1 -0
  194. package/dist/src/templates/skill-template.js +27 -0
  195. package/dist/src/templates/skill-template.js.map +1 -0
  196. package/dist/src/ui/AskUserPrompt.d.ts +14 -0
  197. package/dist/src/ui/AskUserPrompt.d.ts.map +1 -0
  198. package/dist/src/ui/AskUserPrompt.js +17 -0
  199. package/dist/src/ui/AskUserPrompt.js.map +1 -0
  200. package/dist/src/ui/AssistantMessage.d.ts +14 -0
  201. package/dist/src/ui/AssistantMessage.d.ts.map +1 -0
  202. package/dist/src/ui/AssistantMessage.js +8 -0
  203. package/dist/src/ui/AssistantMessage.js.map +1 -0
  204. package/dist/src/ui/ChatApp.d.ts +15 -0
  205. package/dist/src/ui/ChatApp.d.ts.map +1 -0
  206. package/dist/src/ui/ChatApp.js +144 -0
  207. package/dist/src/ui/ChatApp.js.map +1 -0
  208. package/dist/src/ui/ConfirmationPrompt.d.ts +17 -0
  209. package/dist/src/ui/ConfirmationPrompt.d.ts.map +1 -0
  210. package/dist/src/ui/ConfirmationPrompt.js +21 -0
  211. package/dist/src/ui/ConfirmationPrompt.js.map +1 -0
  212. package/dist/src/ui/DiffRenderer.d.ts +32 -0
  213. package/dist/src/ui/DiffRenderer.d.ts.map +1 -0
  214. package/dist/src/ui/DiffRenderer.js +118 -0
  215. package/dist/src/ui/DiffRenderer.js.map +1 -0
  216. package/dist/src/ui/ExpandableContent.d.ts +15 -0
  217. package/dist/src/ui/ExpandableContent.d.ts.map +1 -0
  218. package/dist/src/ui/ExpandableContent.js +22 -0
  219. package/dist/src/ui/ExpandableContent.js.map +1 -0
  220. package/dist/src/ui/ExploreIndicator.d.ts +13 -0
  221. package/dist/src/ui/ExploreIndicator.d.ts.map +1 -0
  222. package/dist/src/ui/ExploreIndicator.js +14 -0
  223. package/dist/src/ui/ExploreIndicator.js.map +1 -0
  224. package/dist/src/ui/Footer.d.ts +19 -0
  225. package/dist/src/ui/Footer.d.ts.map +1 -0
  226. package/dist/src/ui/Footer.js +57 -0
  227. package/dist/src/ui/Footer.js.map +1 -0
  228. package/dist/src/ui/FullScreenLayout.d.ts +18 -0
  229. package/dist/src/ui/FullScreenLayout.d.ts.map +1 -0
  230. package/dist/src/ui/FullScreenLayout.js +14 -0
  231. package/dist/src/ui/FullScreenLayout.js.map +1 -0
  232. package/dist/src/ui/Header.d.ts +14 -0
  233. package/dist/src/ui/Header.d.ts.map +1 -0
  234. package/dist/src/ui/Header.js +11 -0
  235. package/dist/src/ui/Header.js.map +1 -0
  236. package/dist/src/ui/InputBar.d.ts +17 -0
  237. package/dist/src/ui/InputBar.d.ts.map +1 -0
  238. package/dist/src/ui/InputBar.js +49 -0
  239. package/dist/src/ui/InputBar.js.map +1 -0
  240. package/dist/src/ui/MessageList.d.ts +18 -0
  241. package/dist/src/ui/MessageList.d.ts.map +1 -0
  242. package/dist/src/ui/MessageList.js +9 -0
  243. package/dist/src/ui/MessageList.js.map +1 -0
  244. package/dist/src/ui/NotificationBar.d.ts +14 -0
  245. package/dist/src/ui/NotificationBar.d.ts.map +1 -0
  246. package/dist/src/ui/NotificationBar.js +38 -0
  247. package/dist/src/ui/NotificationBar.js.map +1 -0
  248. package/dist/src/ui/ScrollableMessageList.d.ts +27 -0
  249. package/dist/src/ui/ScrollableMessageList.d.ts.map +1 -0
  250. package/dist/src/ui/ScrollableMessageList.js +16 -0
  251. package/dist/src/ui/ScrollableMessageList.js.map +1 -0
  252. package/dist/src/ui/SessionBrowser.d.ts +20 -0
  253. package/dist/src/ui/SessionBrowser.d.ts.map +1 -0
  254. package/dist/src/ui/SessionBrowser.js +93 -0
  255. package/dist/src/ui/SessionBrowser.js.map +1 -0
  256. package/dist/src/ui/StatusMessage.d.ts +13 -0
  257. package/dist/src/ui/StatusMessage.d.ts.map +1 -0
  258. package/dist/src/ui/StatusMessage.js +17 -0
  259. package/dist/src/ui/StatusMessage.js.map +1 -0
  260. package/dist/src/ui/StreamingView.d.ts +19 -0
  261. package/dist/src/ui/StreamingView.d.ts.map +1 -0
  262. package/dist/src/ui/StreamingView.js +18 -0
  263. package/dist/src/ui/StreamingView.js.map +1 -0
  264. package/dist/src/ui/SubagentDisplay.d.ts +13 -0
  265. package/dist/src/ui/SubagentDisplay.d.ts.map +1 -0
  266. package/dist/src/ui/SubagentDisplay.js +22 -0
  267. package/dist/src/ui/SubagentDisplay.js.map +1 -0
  268. package/dist/src/ui/ThinkingDisplay.d.ts +13 -0
  269. package/dist/src/ui/ThinkingDisplay.d.ts.map +1 -0
  270. package/dist/src/ui/ThinkingDisplay.js +15 -0
  271. package/dist/src/ui/ThinkingDisplay.js.map +1 -0
  272. package/dist/src/ui/ToolCallDisplay.d.ts +16 -0
  273. package/dist/src/ui/ToolCallDisplay.d.ts.map +1 -0
  274. package/dist/src/ui/ToolCallDisplay.js +136 -0
  275. package/dist/src/ui/ToolCallDisplay.js.map +1 -0
  276. package/dist/src/ui/UserMessage.d.ts +12 -0
  277. package/dist/src/ui/UserMessage.d.ts.map +1 -0
  278. package/dist/src/ui/UserMessage.js +5 -0
  279. package/dist/src/ui/UserMessage.js.map +1 -0
  280. package/dist/src/ui/commands/clear.d.ts +7 -0
  281. package/dist/src/ui/commands/clear.d.ts.map +1 -0
  282. package/dist/src/ui/commands/clear.js +13 -0
  283. package/dist/src/ui/commands/clear.js.map +1 -0
  284. package/dist/src/ui/commands/help.d.ts +7 -0
  285. package/dist/src/ui/commands/help.d.ts.map +1 -0
  286. package/dist/src/ui/commands/help.js +26 -0
  287. package/dist/src/ui/commands/help.js.map +1 -0
  288. package/dist/src/ui/commands/index.d.ts +14 -0
  289. package/dist/src/ui/commands/index.d.ts.map +1 -0
  290. package/dist/src/ui/commands/index.js +15 -0
  291. package/dist/src/ui/commands/index.js.map +1 -0
  292. package/dist/src/ui/commands/model.d.ts +7 -0
  293. package/dist/src/ui/commands/model.d.ts.map +1 -0
  294. package/dist/src/ui/commands/model.js +16 -0
  295. package/dist/src/ui/commands/model.js.map +1 -0
  296. package/dist/src/ui/commands/registry.d.ts +30 -0
  297. package/dist/src/ui/commands/registry.d.ts.map +1 -0
  298. package/dist/src/ui/commands/registry.js +45 -0
  299. package/dist/src/ui/commands/registry.js.map +1 -0
  300. package/dist/src/ui/commands/sessions.d.ts +7 -0
  301. package/dist/src/ui/commands/sessions.d.ts.map +1 -0
  302. package/dist/src/ui/commands/sessions.js +13 -0
  303. package/dist/src/ui/commands/sessions.js.map +1 -0
  304. package/dist/src/ui/commands/stats.d.ts +7 -0
  305. package/dist/src/ui/commands/stats.d.ts.map +1 -0
  306. package/dist/src/ui/commands/stats.js +33 -0
  307. package/dist/src/ui/commands/stats.js.map +1 -0
  308. package/dist/src/ui/commands/theme.d.ts +7 -0
  309. package/dist/src/ui/commands/theme.d.ts.map +1 -0
  310. package/dist/src/ui/commands/theme.js +35 -0
  311. package/dist/src/ui/commands/theme.js.map +1 -0
  312. package/dist/src/ui/markdown/CodeBlock.d.ts +14 -0
  313. package/dist/src/ui/markdown/CodeBlock.d.ts.map +1 -0
  314. package/dist/src/ui/markdown/CodeBlock.js +55 -0
  315. package/dist/src/ui/markdown/CodeBlock.js.map +1 -0
  316. package/dist/src/ui/markdown/InlineRenderer.d.ts +12 -0
  317. package/dist/src/ui/markdown/InlineRenderer.d.ts.map +1 -0
  318. package/dist/src/ui/markdown/InlineRenderer.js +70 -0
  319. package/dist/src/ui/markdown/InlineRenderer.js.map +1 -0
  320. package/dist/src/ui/markdown/MarkdownDisplay.d.ts +17 -0
  321. package/dist/src/ui/markdown/MarkdownDisplay.d.ts.map +1 -0
  322. package/dist/src/ui/markdown/MarkdownDisplay.js +142 -0
  323. package/dist/src/ui/markdown/MarkdownDisplay.js.map +1 -0
  324. package/dist/src/ui/markdown/Table.d.ts +14 -0
  325. package/dist/src/ui/markdown/Table.d.ts.map +1 -0
  326. package/dist/src/ui/markdown/Table.js +31 -0
  327. package/dist/src/ui/markdown/Table.js.map +1 -0
  328. package/dist/src/ui/theme.d.ts +39 -0
  329. package/dist/src/ui/theme.d.ts.map +1 -0
  330. package/dist/src/ui/theme.js +39 -0
  331. package/dist/src/ui/theme.js.map +1 -0
  332. package/dist/src/ui/themes/index.d.ts +45 -0
  333. package/dist/src/ui/themes/index.d.ts.map +1 -0
  334. package/dist/src/ui/themes/index.js +73 -0
  335. package/dist/src/ui/themes/index.js.map +1 -0
  336. package/dist/src/ui/themes/light.d.ts +8 -0
  337. package/dist/src/ui/themes/light.d.ts.map +1 -0
  338. package/dist/src/ui/themes/light.js +37 -0
  339. package/dist/src/ui/themes/light.js.map +1 -0
  340. package/dist/src/ui/themes/monochrome.d.ts +8 -0
  341. package/dist/src/ui/themes/monochrome.d.ts.map +1 -0
  342. package/dist/src/ui/themes/monochrome.js +37 -0
  343. package/dist/src/ui/themes/monochrome.js.map +1 -0
  344. package/dist/src/ui/types.d.ts +191 -0
  345. package/dist/src/ui/types.d.ts.map +1 -0
  346. package/dist/src/ui/types.js +7 -0
  347. package/dist/src/ui/types.js.map +1 -0
  348. package/dist/src/ui/useAlternateBuffer.d.ts +11 -0
  349. package/dist/src/ui/useAlternateBuffer.d.ts.map +1 -0
  350. package/dist/src/ui/useAlternateBuffer.js +25 -0
  351. package/dist/src/ui/useAlternateBuffer.js.map +1 -0
  352. package/dist/src/ui/useChat.d.ts +18 -0
  353. package/dist/src/ui/useChat.d.ts.map +1 -0
  354. package/dist/src/ui/useChat.js +599 -0
  355. package/dist/src/ui/useChat.js.map +1 -0
  356. package/dist/src/ui/useElapsedTime.d.ts +11 -0
  357. package/dist/src/ui/useElapsedTime.d.ts.map +1 -0
  358. package/dist/src/ui/useElapsedTime.js +39 -0
  359. package/dist/src/ui/useElapsedTime.js.map +1 -0
  360. package/dist/src/ui/useResponsiveLayout.d.ts +16 -0
  361. package/dist/src/ui/useResponsiveLayout.d.ts.map +1 -0
  362. package/dist/src/ui/useResponsiveLayout.js +24 -0
  363. package/dist/src/ui/useResponsiveLayout.js.map +1 -0
  364. package/dist/src/ui/useScroll.d.ts +20 -0
  365. package/dist/src/ui/useScroll.d.ts.map +1 -0
  366. package/dist/src/ui/useScroll.js +64 -0
  367. package/dist/src/ui/useScroll.js.map +1 -0
  368. package/dist/src/ui/useSessionResume.d.ts +20 -0
  369. package/dist/src/ui/useSessionResume.d.ts.map +1 -0
  370. package/dist/src/ui/useSessionResume.js +77 -0
  371. package/dist/src/ui/useSessionResume.js.map +1 -0
  372. package/dist/tsconfig.tsbuildinfo +1 -0
  373. package/package.json +60 -0
  374. package/src/auth/index.ts +13 -0
  375. package/src/auth/oauth2.test.ts +305 -0
  376. package/src/auth/oauth2.ts +269 -0
  377. package/src/auth/prompt.test.ts +205 -0
  378. package/src/auth/prompt.ts +111 -0
  379. package/src/auth/test-connection.test.ts +224 -0
  380. package/src/auth/test-connection.ts +196 -0
  381. package/src/auth/types.ts +34 -0
  382. package/src/commands/audit.test.ts +92 -0
  383. package/src/commands/audit.ts +113 -0
  384. package/src/commands/automations.test.ts +85 -0
  385. package/src/commands/automations.ts +205 -0
  386. package/src/commands/build-manifest-types.ts +35 -0
  387. package/src/commands/build-tools.ts +281 -0
  388. package/src/commands/build.test.ts +63 -0
  389. package/src/commands/build.ts +135 -0
  390. package/src/commands/chat.ts +147 -0
  391. package/src/commands/command-exports.test.ts +88 -0
  392. package/src/commands/connect.test.ts +343 -0
  393. package/src/commands/connect.ts +237 -0
  394. package/src/commands/deploy.test.ts +124 -0
  395. package/src/commands/deploy.ts +153 -0
  396. package/src/commands/deployments.ts +90 -0
  397. package/src/commands/dev.test.ts +63 -0
  398. package/src/commands/dev.ts +124 -0
  399. package/src/commands/diff.test.ts +183 -0
  400. package/src/commands/diff.ts +143 -0
  401. package/src/commands/docker.ts +232 -0
  402. package/src/commands/eval.test.ts +88 -0
  403. package/src/commands/eval.ts +268 -0
  404. package/src/commands/experiment.test.ts +125 -0
  405. package/src/commands/experiment.ts +153 -0
  406. package/src/commands/index.ts +76 -0
  407. package/src/commands/init.test.ts +109 -0
  408. package/src/commands/init.ts +98 -0
  409. package/src/commands/inspect.test.ts +234 -0
  410. package/src/commands/inspect.ts +157 -0
  411. package/src/commands/install-pkg.test.ts +265 -0
  412. package/src/commands/install-pkg.ts +234 -0
  413. package/src/commands/link.ts +270 -0
  414. package/src/commands/list.test.ts +152 -0
  415. package/src/commands/list.ts +95 -0
  416. package/src/commands/login.test.ts +195 -0
  417. package/src/commands/login.ts +258 -0
  418. package/src/commands/promote.ts +64 -0
  419. package/src/commands/publish.test.ts +203 -0
  420. package/src/commands/publish.ts +142 -0
  421. package/src/commands/rollback.ts +72 -0
  422. package/src/commands/search.test.ts +174 -0
  423. package/src/commands/search.ts +154 -0
  424. package/src/commands/secrets.test.ts +168 -0
  425. package/src/commands/secrets.ts +163 -0
  426. package/src/commands/serve.ts +166 -0
  427. package/src/commands/status.ts +94 -0
  428. package/src/commands/sync.test.ts +130 -0
  429. package/src/commands/sync.ts +119 -0
  430. package/src/commands/test-query.test.ts +42 -0
  431. package/src/commands/test-query.ts +129 -0
  432. package/src/commands/uninstall.test.ts +162 -0
  433. package/src/commands/uninstall.ts +107 -0
  434. package/src/commands/update.test.ts +281 -0
  435. package/src/commands/update.ts +180 -0
  436. package/src/commands/validate.test.ts +260 -0
  437. package/src/commands/validate.ts +139 -0
  438. package/src/e2e-automations.test.ts +305 -0
  439. package/src/e2e-commands.test.ts +587 -0
  440. package/src/e2e-incident-response.test.ts +345 -0
  441. package/src/e2e-plugin-connections.test.ts +415 -0
  442. package/src/e2e-plugins.test.ts +492 -0
  443. package/src/e2e.test.ts +602 -0
  444. package/src/fixtures/incident-response.ts +232 -0
  445. package/src/main.ts +35 -0
  446. package/src/shared/platform-client.test.ts +106 -0
  447. package/src/shared/platform-client.ts +193 -0
  448. package/src/shared/repo-discovery.test.ts +56 -0
  449. package/src/shared/repo-discovery.ts +40 -0
  450. package/src/templates/compose-template.ts +30 -0
  451. package/src/templates/config-template.ts +44 -0
  452. package/src/templates/deployment-templates.test.ts +99 -0
  453. package/src/templates/dockerfile-template.ts +30 -0
  454. package/src/templates/env-template.ts +27 -0
  455. package/src/templates/knowledge-template.ts +24 -0
  456. package/src/templates/skill-template.ts +27 -0
  457. package/src/ui/AskUserPrompt.tsx +58 -0
  458. package/src/ui/AssistantMessage.tsx +51 -0
  459. package/src/ui/ChatApp.tsx +283 -0
  460. package/src/ui/ConfirmationPrompt.tsx +75 -0
  461. package/src/ui/DiffRenderer.test.ts +104 -0
  462. package/src/ui/DiffRenderer.tsx +188 -0
  463. package/src/ui/ExpandableContent.tsx +68 -0
  464. package/src/ui/ExploreIndicator.tsx +44 -0
  465. package/src/ui/Footer.tsx +87 -0
  466. package/src/ui/FullScreenLayout.tsx +45 -0
  467. package/src/ui/Header.tsx +50 -0
  468. package/src/ui/InputBar.tsx +105 -0
  469. package/src/ui/MessageList.tsx +31 -0
  470. package/src/ui/NotificationBar.tsx +64 -0
  471. package/src/ui/ScrollableMessageList.tsx +82 -0
  472. package/src/ui/SessionBrowser.test.ts +49 -0
  473. package/src/ui/SessionBrowser.tsx +179 -0
  474. package/src/ui/StatusMessage.tsx +35 -0
  475. package/src/ui/StreamingView.tsx +87 -0
  476. package/src/ui/SubagentDisplay.tsx +57 -0
  477. package/src/ui/ThinkingDisplay.tsx +45 -0
  478. package/src/ui/ToolCallDisplay.tsx +268 -0
  479. package/src/ui/UserMessage.tsx +22 -0
  480. package/src/ui/chat-e2e.test.ts +581 -0
  481. package/src/ui/commands/clear.ts +15 -0
  482. package/src/ui/commands/help.ts +31 -0
  483. package/src/ui/commands/index.ts +22 -0
  484. package/src/ui/commands/model.ts +19 -0
  485. package/src/ui/commands/registry.test.ts +76 -0
  486. package/src/ui/commands/registry.ts +66 -0
  487. package/src/ui/commands/sessions.ts +16 -0
  488. package/src/ui/commands/stats.ts +35 -0
  489. package/src/ui/commands/theme.ts +41 -0
  490. package/src/ui/markdown/CodeBlock.tsx +118 -0
  491. package/src/ui/markdown/InlineRenderer.tsx +115 -0
  492. package/src/ui/markdown/MarkdownDisplay.tsx +223 -0
  493. package/src/ui/markdown/Table.tsx +75 -0
  494. package/src/ui/theme.ts +39 -0
  495. package/src/ui/themes/index.ts +113 -0
  496. package/src/ui/themes/light.ts +39 -0
  497. package/src/ui/themes/monochrome.ts +39 -0
  498. package/src/ui/types.ts +157 -0
  499. package/src/ui/useAlternateBuffer.ts +27 -0
  500. package/src/ui/useChat.test.ts +492 -0
  501. package/src/ui/useChat.ts +693 -0
  502. package/src/ui/useElapsedTime.test.ts +33 -0
  503. package/src/ui/useElapsedTime.ts +43 -0
  504. package/src/ui/useResponsiveLayout.test.ts +54 -0
  505. package/src/ui/useResponsiveLayout.ts +32 -0
  506. package/src/ui/useScroll.test.ts +99 -0
  507. package/src/ui/useScroll.ts +97 -0
  508. package/src/ui/useSessionResume.test.ts +80 -0
  509. package/src/ui/useSessionResume.ts +102 -0
  510. package/tsconfig.json +17 -0
  511. package/vitest.config.ts +20 -0
@@ -0,0 +1,114 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { loadRepo, readLockFile, resolveAllPackages } from '@amodalai/core';
7
+ import { findRepoRoot } from '../shared/repo-discovery.js';
8
+ /**
9
+ * Validates the amodal project configuration by loading the full repo
10
+ * and running cross-reference checks.
11
+ *
12
+ * Returns the number of errors found (0 = valid).
13
+ */
14
+ export async function runValidate(options = {}) {
15
+ const issues = [];
16
+ let repoPath;
17
+ try {
18
+ repoPath = findRepoRoot(options.cwd);
19
+ }
20
+ catch (err) {
21
+ const msg = err instanceof Error ? err.message : String(err);
22
+ process.stderr.write(`[validate] ${msg}\n`);
23
+ return 1;
24
+ }
25
+ process.stderr.write(`[validate] Loading repo from ${repoPath}\n`);
26
+ try {
27
+ const repo = await loadRepo({ localPath: repoPath });
28
+ // Check: at least one connection
29
+ if (repo.connections.size === 0) {
30
+ issues.push({ level: 'warning', message: 'No connections defined. The agent cannot access external systems.' });
31
+ }
32
+ // Check: surface endpoints reference valid access config
33
+ for (const [name, conn] of repo.connections) {
34
+ if (conn.surface.length === 0) {
35
+ issues.push({ level: 'warning', message: `Connection "${name}" has no surface endpoints.` });
36
+ }
37
+ }
38
+ // Check: skills have non-empty bodies
39
+ for (const skill of repo.skills) {
40
+ if (!skill.body.trim()) {
41
+ issues.push({ level: 'error', message: `Skill "${skill.name}" has an empty body.` });
42
+ }
43
+ }
44
+ // Check: automations have schedules
45
+ for (const auto of repo.automations) {
46
+ if (!auto.schedule) {
47
+ issues.push({ level: 'warning', message: `Automation "${auto.name}" has no schedule. It will only run via webhook.` });
48
+ }
49
+ }
50
+ }
51
+ catch (err) {
52
+ const msg = err instanceof Error ? err.message : String(err);
53
+ issues.push({ level: 'error', message: `Failed to load repo: ${msg}` });
54
+ }
55
+ // Package-aware validation
56
+ if (options.packages) {
57
+ try {
58
+ const lockFile = await readLockFile(repoPath);
59
+ if (lockFile) {
60
+ const resolved = await resolveAllPackages({ repoPath, lockFile });
61
+ // Report warnings from resolution (missing packages, broken symlinks)
62
+ for (const warning of resolved.warnings) {
63
+ issues.push({ level: 'warning', message: warning });
64
+ }
65
+ // Check for empty resolved connections
66
+ for (const [name, conn] of resolved.connections) {
67
+ if (conn.surface.length === 0) {
68
+ issues.push({ level: 'warning', message: `Resolved connection "${name}" has no surface endpoints.` });
69
+ }
70
+ }
71
+ // Check for empty resolved skills
72
+ for (const skill of resolved.skills) {
73
+ if (!skill.body.trim()) {
74
+ issues.push({ level: 'error', message: `Resolved skill "${skill.name}" has an empty body.` });
75
+ }
76
+ }
77
+ }
78
+ else {
79
+ process.stderr.write('[validate] No lock file found, skipping package validation.\n');
80
+ }
81
+ }
82
+ catch (err) {
83
+ const msg = err instanceof Error ? err.message : String(err);
84
+ issues.push({ level: 'error', message: `Package resolution failed: ${msg}` });
85
+ }
86
+ }
87
+ // Print results
88
+ const errors = issues.filter((i) => i.level === 'error');
89
+ const warnings = issues.filter((i) => i.level === 'warning');
90
+ for (const issue of errors) {
91
+ process.stderr.write(` ERROR: ${issue.message}\n`);
92
+ }
93
+ for (const issue of warnings) {
94
+ process.stderr.write(` WARN: ${issue.message}\n`);
95
+ }
96
+ if (errors.length === 0 && warnings.length === 0) {
97
+ process.stderr.write('[validate] All checks passed.\n');
98
+ }
99
+ else {
100
+ process.stderr.write(`[validate] ${errors.length} error(s), ${warnings.length} warning(s)\n`);
101
+ }
102
+ return errors.length;
103
+ }
104
+ export const validateCommand = {
105
+ command: 'validate',
106
+ describe: 'Validate the project configuration',
107
+ builder: (yargs) => yargs.option('packages', { type: 'boolean', default: false, describe: 'Include package resolution validation' }),
108
+ handler: async (argv) => {
109
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
110
+ const code = await runValidate({ packages: argv['packages'] });
111
+ process.exit(code);
112
+ },
113
+ };
114
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/commands/validate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,kBAAkB,EAAC,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAAC,YAAY,EAAC,MAAM,6BAA6B,CAAC;AAYzD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,UAA2B,EAAE;IAC7D,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,QAAQ,IAAI,CAAC,CAAC;IAEnE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,EAAC,SAAS,EAAE,QAAQ,EAAC,CAAC,CAAC;QAEnD,iCAAiC;QACjC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,mEAAmE,EAAC,CAAC,CAAC;QAChH,CAAC;QAED,yDAAyD;QACzD,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,IAAI,6BAA6B,EAAC,CAAC,CAAC;YAC7F,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,KAAK,CAAC,IAAI,sBAAsB,EAAC,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,eAAe,IAAI,CAAC,IAAI,kDAAkD,EAAC,CAAC,CAAC;YACvH,CAAC;QACH,CAAC;IAEH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,GAAG,EAAE,EAAC,CAAC,CAAC;IACxE,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;gBAEhE,sEAAsE;gBACtE,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACxC,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC,CAAC;gBACpD,CAAC;gBAED,uCAAuC;gBACvC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAChD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC9B,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,wBAAwB,IAAI,6BAA6B,EAAC,CAAC,CAAC;oBACtG,CAAC;gBACH,CAAC;gBAED,kCAAkC;gBAClC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;wBACvB,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,KAAK,CAAC,IAAI,sBAAsB,EAAC,CAAC,CAAC;oBAC9F,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,8BAA8B,GAAG,EAAE,EAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;IAE7D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,MAAM,cAAc,QAAQ,CAAC,MAAM,eAAe,CAAC,CAAC;IAChG,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAkB;IAC5C,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,oCAAoC;IAC9C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,uCAAuC,EAAC,CAAC;IAChH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,uEAAuE;QACvE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,EAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAY,EAAC,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;CACF,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Fixture data for the incident response e2e test.
8
+ *
9
+ * Four content types:
10
+ * 1. Connection: statuspage API (mock)
11
+ * 2. Skill: incident triage methodology
12
+ * 3. Knowledge: oncall runbook
13
+ * 4. Automation: daily health check
14
+ *
15
+ * The mock API returns deterministic data so we can assert on the
16
+ * agent's response content.
17
+ */
18
+ import http from 'node:http';
19
+ export declare const CONFIG: {
20
+ name: string;
21
+ version: string;
22
+ description: string;
23
+ models: {
24
+ main: {
25
+ provider: string;
26
+ model: string;
27
+ };
28
+ };
29
+ };
30
+ export declare const STATUSPAGE_SPEC: {
31
+ source: string;
32
+ format: "openapi";
33
+ auth: {
34
+ type: string;
35
+ header: string;
36
+ prefix: string;
37
+ token: string;
38
+ };
39
+ };
40
+ export declare const STATUSPAGE_ACCESS: {
41
+ endpoints: {
42
+ 'GET /components': {
43
+ returns: string[];
44
+ };
45
+ 'GET /incidents': {
46
+ returns: string[];
47
+ };
48
+ 'GET /incidents/:id': {
49
+ returns: string[];
50
+ };
51
+ 'POST /incidents': {
52
+ returns: string[];
53
+ confirm: "review";
54
+ };
55
+ };
56
+ };
57
+ export declare const STATUSPAGE_SURFACE = "## Included\n\n### GET /components\nList all monitored components and their current status\n\n### GET /incidents\nList recent incidents\n\n### GET /incidents/:id\nGet incident details\n\n## Excluded\n\n### POST /incidents\nCreate a new incident (requires confirmation)\n";
58
+ export declare const TRIAGE_SKILL = "---\nname: incident-triage\ndescription: Methodology for triaging service incidents based on component status\ntrigger: When the user asks about service health, incidents, or outages\n---\n\n## Incident Triage\n\nFollow this methodology when assessing service health:\n\n1. **Check component status** \u2014 Query GET /components to see current state of all services\n2. **Identify degraded components** \u2014 Any component not in \"operational\" status needs attention\n3. **Assess severity** \u2014 Use the severity matrix from the oncall runbook\n4. **Check recent incidents** \u2014 Query GET /incidents for correlated issues\n5. **Recommend action** \u2014 Based on severity, recommend the appropriate response from the runbook\n\nAlways report the exact component names and their statuses. Never fabricate status data.\n";
59
+ export declare const ONCALL_RUNBOOK = "# On-Call Runbook\n\n## Severity Matrix\n\n| Level | Criteria | Response Time | Escalation |\n|-------|----------|---------------|------------|\n| SEV1 | Multiple components down | 5 min | Page on-call lead immediately |\n| SEV2 | Single component degraded | 15 min | Notify #incidents channel |\n| SEV3 | Performance degradation | 1 hour | Create ticket |\n| SEV4 | Cosmetic or minor | Next business day | Log for review |\n\n## Key Contacts\n\n- **On-call lead**: Alice (alice@example.com)\n- **Platform team**: Bob (bob@example.com)\n- **Database team**: Charlie (charlie@example.com)\n\n## Components\n\n- **api-gateway**: Main API entry point. SEV1 if down.\n- **auth-service**: Authentication. SEV1 if down.\n- **database-primary**: Primary Postgres. SEV1 if down.\n- **worker-pool**: Background jobs. SEV2 if degraded.\n- **cdn**: Static assets. SEV3 if degraded.\n";
60
+ export declare const HEALTH_CHECK_AUTOMATION = "# Automation: Daily Health Check\n\nSchedule: 0 8 * * *\n\n## Check\nQuery the statuspage API for current component status. Report any components not in \"operational\" state.\n\n## Output\nSummary of component statuses with severity assessment per the oncall runbook.\n\n## Delivery\nPost to #ops-daily channel.\n";
61
+ /** Deterministic mock data the API returns. */
62
+ export declare const MOCK_COMPONENTS: {
63
+ id: string;
64
+ name: string;
65
+ status: string;
66
+ updated_at: string;
67
+ }[];
68
+ export declare const MOCK_INCIDENTS: {
69
+ id: string;
70
+ name: string;
71
+ status: string;
72
+ impact: string;
73
+ created_at: string;
74
+ body: string;
75
+ components: string[];
76
+ }[];
77
+ /**
78
+ * Create a mock StatusPage API server that returns deterministic data.
79
+ * Returns a handle with start/stop methods.
80
+ */
81
+ export declare function createMockStatusPageApi(): {
82
+ server: http.Server<typeof http.IncomingMessage, typeof http.ServerResponse>;
83
+ requests: {
84
+ method: string;
85
+ url: string;
86
+ }[];
87
+ readonly port: number;
88
+ start: () => Promise<number>;
89
+ stop: () => Promise<void>;
90
+ };
91
+ //# sourceMappingURL=incident-response.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident-response.d.ts","sourceRoot":"","sources":["../../../src/fixtures/incident-response.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;GAWG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAM7B,eAAO,MAAM,MAAM;;;;;;;;;;CAOlB,CAAC;AAMF,eAAO,MAAM,eAAe;;;;;;;;;CAS3B,CAAC;AAEF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;CAO7B,CAAC;AAEF,eAAO,MAAM,kBAAkB,mRAe9B,CAAC;AAMF,eAAO,MAAM,YAAY,g0BAiBxB,CAAC;AAMF,eAAO,MAAM,cAAc,62BAwB1B,CAAC;AAMF,eAAO,MAAM,uBAAuB,+TAYnC,CAAC;AAMF,+CAA+C;AAC/C,eAAO,MAAM,eAAe;;;;;GAM3B,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;GAU1B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,uBAAuB;;;gBACN,MAAM;aAAO,MAAM;;;;;EAuDnD"}
@@ -0,0 +1,208 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ /**
7
+ * Fixture data for the incident response e2e test.
8
+ *
9
+ * Four content types:
10
+ * 1. Connection: statuspage API (mock)
11
+ * 2. Skill: incident triage methodology
12
+ * 3. Knowledge: oncall runbook
13
+ * 4. Automation: daily health check
14
+ *
15
+ * The mock API returns deterministic data so we can assert on the
16
+ * agent's response content.
17
+ */
18
+ import http from 'node:http';
19
+ // ---------------------------------------------------------------------------
20
+ // amodal.json
21
+ // ---------------------------------------------------------------------------
22
+ export const CONFIG = {
23
+ name: 'incident-response-agent',
24
+ version: '1.0.0',
25
+ description: 'Monitors services and triages incidents',
26
+ models: {
27
+ main: { provider: 'anthropic', model: 'claude-sonnet-4-20250514' },
28
+ },
29
+ };
30
+ // ---------------------------------------------------------------------------
31
+ // Connection: statuspage
32
+ // ---------------------------------------------------------------------------
33
+ export const STATUSPAGE_SPEC = {
34
+ source: 'https://statuspage.example.com/api/v1/openapi.json',
35
+ format: 'openapi',
36
+ auth: {
37
+ type: 'bearer',
38
+ header: 'Authorization',
39
+ prefix: 'Bearer',
40
+ token: 'env:STATUSPAGE_TOKEN',
41
+ },
42
+ };
43
+ export const STATUSPAGE_ACCESS = {
44
+ endpoints: {
45
+ 'GET /components': { returns: ['id', 'name', 'status', 'updated_at'] },
46
+ 'GET /incidents': { returns: ['id', 'name', 'status', 'impact', 'created_at'] },
47
+ 'GET /incidents/:id': { returns: ['id', 'name', 'status', 'impact', 'body', 'components'] },
48
+ 'POST /incidents': { returns: ['id'], confirm: 'review' },
49
+ },
50
+ };
51
+ export const STATUSPAGE_SURFACE = `## Included
52
+
53
+ ### GET /components
54
+ List all monitored components and their current status
55
+
56
+ ### GET /incidents
57
+ List recent incidents
58
+
59
+ ### GET /incidents/:id
60
+ Get incident details
61
+
62
+ ## Excluded
63
+
64
+ ### POST /incidents
65
+ Create a new incident (requires confirmation)
66
+ `;
67
+ // ---------------------------------------------------------------------------
68
+ // Skill: incident-triage
69
+ // ---------------------------------------------------------------------------
70
+ export const TRIAGE_SKILL = `---
71
+ name: incident-triage
72
+ description: Methodology for triaging service incidents based on component status
73
+ trigger: When the user asks about service health, incidents, or outages
74
+ ---
75
+
76
+ ## Incident Triage
77
+
78
+ Follow this methodology when assessing service health:
79
+
80
+ 1. **Check component status** — Query GET /components to see current state of all services
81
+ 2. **Identify degraded components** — Any component not in "operational" status needs attention
82
+ 3. **Assess severity** — Use the severity matrix from the oncall runbook
83
+ 4. **Check recent incidents** — Query GET /incidents for correlated issues
84
+ 5. **Recommend action** — Based on severity, recommend the appropriate response from the runbook
85
+
86
+ Always report the exact component names and their statuses. Never fabricate status data.
87
+ `;
88
+ // ---------------------------------------------------------------------------
89
+ // Knowledge: oncall-runbook
90
+ // ---------------------------------------------------------------------------
91
+ export const ONCALL_RUNBOOK = `# On-Call Runbook
92
+
93
+ ## Severity Matrix
94
+
95
+ | Level | Criteria | Response Time | Escalation |
96
+ |-------|----------|---------------|------------|
97
+ | SEV1 | Multiple components down | 5 min | Page on-call lead immediately |
98
+ | SEV2 | Single component degraded | 15 min | Notify #incidents channel |
99
+ | SEV3 | Performance degradation | 1 hour | Create ticket |
100
+ | SEV4 | Cosmetic or minor | Next business day | Log for review |
101
+
102
+ ## Key Contacts
103
+
104
+ - **On-call lead**: Alice (alice@example.com)
105
+ - **Platform team**: Bob (bob@example.com)
106
+ - **Database team**: Charlie (charlie@example.com)
107
+
108
+ ## Components
109
+
110
+ - **api-gateway**: Main API entry point. SEV1 if down.
111
+ - **auth-service**: Authentication. SEV1 if down.
112
+ - **database-primary**: Primary Postgres. SEV1 if down.
113
+ - **worker-pool**: Background jobs. SEV2 if degraded.
114
+ - **cdn**: Static assets. SEV3 if degraded.
115
+ `;
116
+ // ---------------------------------------------------------------------------
117
+ // Automation: health-check
118
+ // ---------------------------------------------------------------------------
119
+ export const HEALTH_CHECK_AUTOMATION = `# Automation: Daily Health Check
120
+
121
+ Schedule: 0 8 * * *
122
+
123
+ ## Check
124
+ Query the statuspage API for current component status. Report any components not in "operational" state.
125
+
126
+ ## Output
127
+ Summary of component statuses with severity assessment per the oncall runbook.
128
+
129
+ ## Delivery
130
+ Post to #ops-daily channel.
131
+ `;
132
+ // ---------------------------------------------------------------------------
133
+ // Mock StatusPage API
134
+ // ---------------------------------------------------------------------------
135
+ /** Deterministic mock data the API returns. */
136
+ export const MOCK_COMPONENTS = [
137
+ { id: 'comp-1', name: 'api-gateway', status: 'operational', updated_at: '2026-03-18T08:00:00Z' },
138
+ { id: 'comp-2', name: 'auth-service', status: 'operational', updated_at: '2026-03-18T08:00:00Z' },
139
+ { id: 'comp-3', name: 'database-primary', status: 'degraded_performance', updated_at: '2026-03-18T09:15:00Z' },
140
+ { id: 'comp-4', name: 'worker-pool', status: 'operational', updated_at: '2026-03-18T08:00:00Z' },
141
+ { id: 'comp-5', name: 'cdn', status: 'operational', updated_at: '2026-03-18T08:00:00Z' },
142
+ ];
143
+ export const MOCK_INCIDENTS = [
144
+ {
145
+ id: 'inc-42',
146
+ name: 'Database latency spike',
147
+ status: 'investigating',
148
+ impact: 'minor',
149
+ created_at: '2026-03-18T09:10:00Z',
150
+ body: 'We are investigating elevated query latency on the primary database cluster.',
151
+ components: ['database-primary'],
152
+ },
153
+ ];
154
+ /**
155
+ * Create a mock StatusPage API server that returns deterministic data.
156
+ * Returns a handle with start/stop methods.
157
+ */
158
+ export function createMockStatusPageApi() {
159
+ const requests = [];
160
+ const server = http.createServer((req, res) => {
161
+ const url = req.url ?? '';
162
+ const method = req.method ?? '';
163
+ requests.push({ method, url });
164
+ const json = (data) => {
165
+ res.writeHead(200, { 'Content-Type': 'application/json' });
166
+ res.end(JSON.stringify(data));
167
+ };
168
+ if (method === 'GET' && url === '/components') {
169
+ json(MOCK_COMPONENTS);
170
+ return;
171
+ }
172
+ if (method === 'GET' && url === '/incidents') {
173
+ json(MOCK_INCIDENTS);
174
+ return;
175
+ }
176
+ const incidentMatch = /^\/incidents\/([^/]+)$/.exec(url);
177
+ if (method === 'GET' && incidentMatch) {
178
+ const incident = MOCK_INCIDENTS.find((i) => i.id === incidentMatch[1]);
179
+ if (incident) {
180
+ json(incident);
181
+ }
182
+ else {
183
+ res.writeHead(404);
184
+ res.end(JSON.stringify({ error: 'Not found' }));
185
+ }
186
+ return;
187
+ }
188
+ res.writeHead(404);
189
+ res.end(JSON.stringify({ error: 'Not found' }));
190
+ });
191
+ let port = 0;
192
+ return {
193
+ server,
194
+ requests,
195
+ get port() { return port; },
196
+ start: () => new Promise((resolve) => {
197
+ server.listen(0, '127.0.0.1', () => {
198
+ const addr = server.address();
199
+ port = typeof addr === 'object' && addr ? addr.port : 0;
200
+ resolve(port);
201
+ });
202
+ }),
203
+ stop: () => new Promise((resolve, reject) => {
204
+ server.close((err) => (err ? reject(err) : resolve()));
205
+ }),
206
+ };
207
+ }
208
+ //# sourceMappingURL=incident-response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"incident-response.js","sourceRoot":"","sources":["../../../src/fixtures/incident-response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Amodal Labs, Inc.
5
+ * SPDX-License-Identifier: MIT
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA;;;;GAIG"}
@@ -0,0 +1,30 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @license
4
+ * Copyright 2025 Amodal Labs, Inc.
5
+ * SPDX-License-Identifier: MIT
6
+ */
7
+ import { readFileSync } from 'node:fs';
8
+ import yargs from 'yargs';
9
+ import { hideBin } from 'yargs/helpers';
10
+ import { amodalCommands } from './commands/index.js';
11
+ const raw = JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf-8'));
12
+ if (typeof raw !== 'object' || raw === null || !('version' in raw) || typeof raw.version !== 'string') {
13
+ throw new Error('Failed to read version from package.json');
14
+ }
15
+ const pkgVersion = raw.version;
16
+ const cli = yargs(hideBin(process.argv))
17
+ .scriptName('amodal')
18
+ .usage('$0 <command> [options]');
19
+ for (const cmd of amodalCommands) {
20
+ cli.command(cmd);
21
+ }
22
+ cli
23
+ .demandCommand(1, 'Run amodal <command> --help for usage')
24
+ .strict()
25
+ .help()
26
+ .alias('h', 'help')
27
+ .version(process.env['CLI_VERSION'] ?? pkgVersion)
28
+ .alias('v', 'version');
29
+ void cli.parse();
30
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAEnD,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;AACvG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;IACtG,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AAC9D,CAAC;AACD,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC;AAE/B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACrC,UAAU,CAAC,QAAQ,CAAC;KACpB,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAEnC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;IACjC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,GAAG;KACA,aAAa,CAAC,CAAC,EAAE,uCAAuC,CAAC;KACzD,MAAM,EAAE;KACR,IAAI,EAAE;KACN,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;KAClB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC;KACjD,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAEzB,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Amodal Labs, Inc.
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import type { DeploySnapshot } from '@amodalai/core';
7
+ /**
8
+ * Metadata returned for a snapshot deployment.
9
+ */
10
+ export interface SnapshotDeploymentMeta {
11
+ id: string;
12
+ environment: string;
13
+ isActive: boolean;
14
+ createdAt: string;
15
+ createdBy: string;
16
+ source: string;
17
+ commitSha?: string;
18
+ branch?: string;
19
+ message?: string;
20
+ snapshotSize: number;
21
+ }
22
+ /**
23
+ * Resolve platform URL and API key from multiple sources:
24
+ * 1. Explicit options (flags)
25
+ * 2. .amodal/project.json (platformUrl from `amodal link`)
26
+ * 3. ~/.amodalrc (auth token from `amodal login`)
27
+ * 4. Env vars (fallback)
28
+ */
29
+ export declare function resolvePlatformConfig(options?: {
30
+ url?: string;
31
+ apiKey?: string;
32
+ }): Promise<{
33
+ url: string;
34
+ apiKey: string;
35
+ }>;
36
+ /**
37
+ * Platform API client for snapshot deployments.
38
+ *
39
+ * Resolves credentials from: explicit options → project link → rc file → env vars.
40
+ * Use `PlatformClient.create()` for async auto-discovery, or `new PlatformClient()` for sync usage.
41
+ */
42
+ export declare class PlatformClient {
43
+ private readonly baseUrl;
44
+ private readonly apiKey;
45
+ constructor(options?: {
46
+ url?: string;
47
+ apiKey?: string;
48
+ });
49
+ /**
50
+ * Create a PlatformClient with auto-discovery of credentials.
51
+ * Resolves from: explicit options → project link → rc file → env vars.
52
+ */
53
+ static create(options?: {
54
+ url?: string;
55
+ apiKey?: string;
56
+ }): Promise<PlatformClient>;
57
+ private headers;
58
+ private request;
59
+ /**
60
+ * Upload a snapshot and deploy it.
61
+ */
62
+ uploadSnapshot(snapshot: DeploySnapshot, options?: {
63
+ environment?: string;
64
+ }): Promise<SnapshotDeploymentMeta>;
65
+ /**
66
+ * List deployments for the authenticated tenant.
67
+ */
68
+ listDeployments(options?: {
69
+ environment?: string;
70
+ limit?: number;
71
+ }): Promise<SnapshotDeploymentMeta[]>;
72
+ /**
73
+ * Rollback to a previous deployment.
74
+ */
75
+ rollback(options?: {
76
+ deployId?: string;
77
+ environment?: string;
78
+ }): Promise<SnapshotDeploymentMeta>;
79
+ /**
80
+ * Promote a deployment from one environment to another.
81
+ */
82
+ promote(fromEnv: string, toEnv?: string): Promise<SnapshotDeploymentMeta>;
83
+ /**
84
+ * Get status of a specific deployment.
85
+ */
86
+ getStatus(deployId: string): Promise<SnapshotDeploymentMeta>;
87
+ /**
88
+ * Get the active snapshot for an environment.
89
+ */
90
+ getActiveSnapshot(environment?: string): Promise<DeploySnapshot>;
91
+ }
92
+ //# sourceMappingURL=platform-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-client.d.ts","sourceRoot":"","sources":["../../../src/shared/platform-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAC,CAgCzC;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,OAAO,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC;IASrD;;;OAGG;WACU,MAAM,CAAC,OAAO,CAAC,EAAE;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAKvF,OAAO,CAAC,OAAO;YAOD,OAAO;IAwBrB;;OAEG;IACG,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,OAAO,GAAE;QACtD,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOxC;;OAEG;IACG,eAAe,CAAC,OAAO,GAAE;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KACX,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAQ1C;;OAEG;IACG,QAAQ,CAAC,OAAO,GAAE;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOxC;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAO7F;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIlE;;OAEG;IACG,iBAAiB,CAAC,WAAW,GAAE,MAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;CAIrF"}