@agent-native/core 0.7.10 → 0.7.12

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 (375) hide show
  1. package/dist/action.js +30 -11
  2. package/dist/action.js.map +1 -1
  3. package/dist/agent/engine/ai-sdk-engine.d.ts +14 -2
  4. package/dist/agent/engine/ai-sdk-engine.d.ts.map +1 -1
  5. package/dist/agent/engine/ai-sdk-engine.js +70 -54
  6. package/dist/agent/engine/ai-sdk-engine.js.map +1 -1
  7. package/dist/agent/engine/anthropic-engine.d.ts +1 -6
  8. package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
  9. package/dist/agent/engine/anthropic-engine.js +3 -14
  10. package/dist/agent/engine/anthropic-engine.js.map +1 -1
  11. package/dist/agent/engine/builtin.d.ts.map +1 -1
  12. package/dist/agent/engine/builtin.js +3 -0
  13. package/dist/agent/engine/builtin.js.map +1 -1
  14. package/dist/agent/engine/index.d.ts +1 -1
  15. package/dist/agent/engine/index.d.ts.map +1 -1
  16. package/dist/agent/engine/index.js +1 -1
  17. package/dist/agent/engine/index.js.map +1 -1
  18. package/dist/agent/engine/provider-env-vars.d.ts +21 -0
  19. package/dist/agent/engine/provider-env-vars.d.ts.map +1 -0
  20. package/dist/agent/engine/provider-env-vars.js +50 -0
  21. package/dist/agent/engine/provider-env-vars.js.map +1 -0
  22. package/dist/agent/engine/registry.d.ts +18 -0
  23. package/dist/agent/engine/registry.d.ts.map +1 -1
  24. package/dist/agent/engine/registry.js +54 -4
  25. package/dist/agent/engine/registry.js.map +1 -1
  26. package/dist/agent/engine/translate-ai-sdk.d.ts +35 -10
  27. package/dist/agent/engine/translate-ai-sdk.d.ts.map +1 -1
  28. package/dist/agent/engine/translate-ai-sdk.js +190 -91
  29. package/dist/agent/engine/translate-ai-sdk.js.map +1 -1
  30. package/dist/agent/engine/types.d.ts +10 -1
  31. package/dist/agent/engine/types.d.ts.map +1 -1
  32. package/dist/agent/production-agent.d.ts +21 -1
  33. package/dist/agent/production-agent.d.ts.map +1 -1
  34. package/dist/agent/production-agent.js +72 -21
  35. package/dist/agent/production-agent.js.map +1 -1
  36. package/dist/agent/thread-data-builder.js +1 -1
  37. package/dist/agent/thread-data-builder.js.map +1 -1
  38. package/dist/agent/types.d.ts +4 -0
  39. package/dist/agent/types.d.ts.map +1 -1
  40. package/dist/application-state/script-helpers.d.ts +12 -5
  41. package/dist/application-state/script-helpers.d.ts.map +1 -1
  42. package/dist/application-state/script-helpers.js +41 -20
  43. package/dist/application-state/script-helpers.js.map +1 -1
  44. package/dist/catalog.json +15 -0
  45. package/dist/checkpoints/index.d.ts +3 -0
  46. package/dist/checkpoints/index.d.ts.map +1 -0
  47. package/dist/checkpoints/index.js +3 -0
  48. package/dist/checkpoints/index.js.map +1 -0
  49. package/dist/checkpoints/service.d.ts +6 -0
  50. package/dist/checkpoints/service.d.ts.map +1 -0
  51. package/dist/checkpoints/service.js +107 -0
  52. package/dist/checkpoints/service.js.map +1 -0
  53. package/dist/checkpoints/store.d.ts +27 -0
  54. package/dist/checkpoints/store.d.ts.map +1 -0
  55. package/dist/checkpoints/store.js +92 -0
  56. package/dist/checkpoints/store.js.map +1 -0
  57. package/dist/cli/create.d.ts.map +1 -1
  58. package/dist/cli/create.js +191 -2
  59. package/dist/cli/create.js.map +1 -1
  60. package/dist/cli/index.js +63 -3
  61. package/dist/cli/index.js.map +1 -1
  62. package/dist/cli/templates-meta.d.ts +2 -0
  63. package/dist/cli/templates-meta.d.ts.map +1 -1
  64. package/dist/cli/templates-meta.js +35 -0
  65. package/dist/cli/templates-meta.js.map +1 -1
  66. package/dist/cli/workspacify.d.ts.map +1 -1
  67. package/dist/cli/workspacify.js +7 -3
  68. package/dist/cli/workspacify.js.map +1 -1
  69. package/dist/client/AgentPanel.d.ts.map +1 -1
  70. package/dist/client/AgentPanel.js +3 -1
  71. package/dist/client/AgentPanel.js.map +1 -1
  72. package/dist/client/AssistantChat.d.ts +15 -0
  73. package/dist/client/AssistantChat.d.ts.map +1 -1
  74. package/dist/client/AssistantChat.js +162 -67
  75. package/dist/client/AssistantChat.js.map +1 -1
  76. package/dist/client/CommandMenu.d.ts.map +1 -1
  77. package/dist/client/CommandMenu.js +9 -5
  78. package/dist/client/CommandMenu.js.map +1 -1
  79. package/dist/client/ConnectBuilderCard.js +1 -1
  80. package/dist/client/ConnectBuilderCard.js.map +1 -1
  81. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  82. package/dist/client/MultiTabAssistantChat.js +89 -4
  83. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  84. package/dist/client/agent-chat-adapter.d.ts +6 -0
  85. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  86. package/dist/client/agent-chat-adapter.js +4 -0
  87. package/dist/client/agent-chat-adapter.js.map +1 -1
  88. package/dist/client/composer/TiptapComposer.d.ts +12 -1
  89. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  90. package/dist/client/composer/TiptapComposer.js +87 -5
  91. package/dist/client/composer/TiptapComposer.js.map +1 -1
  92. package/dist/client/notifications/NotificationsBell.d.ts +23 -0
  93. package/dist/client/notifications/NotificationsBell.d.ts.map +1 -0
  94. package/dist/client/notifications/NotificationsBell.js +165 -0
  95. package/dist/client/notifications/NotificationsBell.js.map +1 -0
  96. package/dist/client/notifications/index.d.ts +2 -0
  97. package/dist/client/notifications/index.d.ts.map +1 -0
  98. package/dist/client/notifications/index.js +2 -0
  99. package/dist/client/notifications/index.js.map +1 -0
  100. package/dist/client/onboarding/OnboardingPanel.js +6 -3
  101. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  102. package/dist/client/progress/RunsTray.d.ts +18 -0
  103. package/dist/client/progress/RunsTray.d.ts.map +1 -0
  104. package/dist/client/progress/RunsTray.js +70 -0
  105. package/dist/client/progress/RunsTray.js.map +1 -0
  106. package/dist/client/progress/index.d.ts +2 -0
  107. package/dist/client/progress/index.d.ts.map +1 -0
  108. package/dist/client/progress/index.js +2 -0
  109. package/dist/client/progress/index.js.map +1 -0
  110. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  111. package/dist/client/resources/ResourcesPanel.js +19 -4
  112. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  113. package/dist/client/settings/AutomationsSection.d.ts +2 -0
  114. package/dist/client/settings/AutomationsSection.d.ts.map +1 -0
  115. package/dist/client/settings/AutomationsSection.js +214 -0
  116. package/dist/client/settings/AutomationsSection.js.map +1 -0
  117. package/dist/client/settings/ComingSoonSection.d.ts.map +1 -1
  118. package/dist/client/settings/ComingSoonSection.js +2 -1
  119. package/dist/client/settings/ComingSoonSection.js.map +1 -1
  120. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  121. package/dist/client/settings/SecretsSection.js +122 -3
  122. package/dist/client/settings/SecretsSection.js.map +1 -1
  123. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  124. package/dist/client/settings/SettingsPanel.js +252 -14
  125. package/dist/client/settings/SettingsPanel.js.map +1 -1
  126. package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -1
  127. package/dist/client/settings/VoiceTranscriptionSection.js +2 -2
  128. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  129. package/dist/client/use-pausing-interval.d.ts +11 -0
  130. package/dist/client/use-pausing-interval.d.ts.map +1 -0
  131. package/dist/client/use-pausing-interval.js +49 -0
  132. package/dist/client/use-pausing-interval.js.map +1 -0
  133. package/dist/db/client.d.ts +26 -0
  134. package/dist/db/client.d.ts.map +1 -1
  135. package/dist/db/client.js +84 -2
  136. package/dist/db/client.js.map +1 -1
  137. package/dist/db/drizzle-config.d.ts +33 -0
  138. package/dist/db/drizzle-config.d.ts.map +1 -0
  139. package/dist/db/drizzle-config.js +132 -0
  140. package/dist/db/drizzle-config.js.map +1 -0
  141. package/dist/db/migrations.d.ts.map +1 -1
  142. package/dist/db/migrations.js +11 -6
  143. package/dist/db/migrations.js.map +1 -1
  144. package/dist/deploy/build.js +2 -1
  145. package/dist/deploy/build.js.map +1 -1
  146. package/dist/event-bus/bus.d.ts +20 -0
  147. package/dist/event-bus/bus.d.ts.map +1 -0
  148. package/dist/event-bus/bus.js +108 -0
  149. package/dist/event-bus/bus.js.map +1 -0
  150. package/dist/event-bus/index.d.ts +4 -0
  151. package/dist/event-bus/index.d.ts.map +1 -0
  152. package/dist/event-bus/index.js +3 -0
  153. package/dist/event-bus/index.js.map +1 -0
  154. package/dist/event-bus/registry.d.ts +22 -0
  155. package/dist/event-bus/registry.d.ts.map +1 -0
  156. package/dist/event-bus/registry.js +63 -0
  157. package/dist/event-bus/registry.js.map +1 -0
  158. package/dist/event-bus/types.d.ts +27 -0
  159. package/dist/event-bus/types.d.ts.map +1 -0
  160. package/dist/event-bus/types.js +2 -0
  161. package/dist/event-bus/types.js.map +1 -0
  162. package/dist/integrations/config-store.d.ts.map +1 -1
  163. package/dist/integrations/config-store.js +16 -12
  164. package/dist/integrations/config-store.js.map +1 -1
  165. package/dist/integrations/google-docs-poller.d.ts.map +1 -1
  166. package/dist/integrations/google-docs-poller.js +5 -1
  167. package/dist/integrations/google-docs-poller.js.map +1 -1
  168. package/dist/jobs/scheduler.d.ts.map +1 -1
  169. package/dist/jobs/scheduler.js +7 -3
  170. package/dist/jobs/scheduler.js.map +1 -1
  171. package/dist/notifications/actions.d.ts +10 -0
  172. package/dist/notifications/actions.d.ts.map +1 -0
  173. package/dist/notifications/actions.js +114 -0
  174. package/dist/notifications/actions.js.map +1 -0
  175. package/dist/notifications/channels.d.ts +15 -0
  176. package/dist/notifications/channels.d.ts.map +1 -0
  177. package/dist/notifications/channels.js +97 -0
  178. package/dist/notifications/channels.js.map +1 -0
  179. package/dist/notifications/index.d.ts +4 -0
  180. package/dist/notifications/index.d.ts.map +1 -0
  181. package/dist/notifications/index.js +3 -0
  182. package/dist/notifications/index.js.map +1 -0
  183. package/dist/notifications/registry.d.ts +9 -0
  184. package/dist/notifications/registry.d.ts.map +1 -0
  185. package/dist/notifications/registry.js +146 -0
  186. package/dist/notifications/registry.js.map +1 -0
  187. package/dist/notifications/routes.d.ts +34 -0
  188. package/dist/notifications/routes.d.ts.map +1 -0
  189. package/dist/notifications/routes.js +69 -0
  190. package/dist/notifications/routes.js.map +1 -0
  191. package/dist/notifications/store.d.ts +25 -0
  192. package/dist/notifications/store.d.ts.map +1 -0
  193. package/dist/notifications/store.js +158 -0
  194. package/dist/notifications/store.js.map +1 -0
  195. package/dist/notifications/types.d.ts +43 -0
  196. package/dist/notifications/types.d.ts.map +1 -0
  197. package/dist/notifications/types.js +2 -0
  198. package/dist/notifications/types.js.map +1 -0
  199. package/dist/onboarding/default-steps.d.ts.map +1 -1
  200. package/dist/onboarding/default-steps.js +63 -20
  201. package/dist/onboarding/default-steps.js.map +1 -1
  202. package/dist/org/handlers.d.ts.map +1 -1
  203. package/dist/org/handlers.js +7 -26
  204. package/dist/org/handlers.js.map +1 -1
  205. package/dist/progress/actions.d.ts +8 -0
  206. package/dist/progress/actions.d.ts.map +1 -0
  207. package/dist/progress/actions.js +158 -0
  208. package/dist/progress/actions.js.map +1 -0
  209. package/dist/progress/index.d.ts +3 -0
  210. package/dist/progress/index.d.ts.map +1 -0
  211. package/dist/progress/index.js +2 -0
  212. package/dist/progress/index.js.map +1 -0
  213. package/dist/progress/registry.d.ts +22 -0
  214. package/dist/progress/registry.d.ts.map +1 -0
  215. package/dist/progress/registry.js +98 -0
  216. package/dist/progress/registry.js.map +1 -0
  217. package/dist/progress/routes.d.ts +21 -0
  218. package/dist/progress/routes.d.ts.map +1 -0
  219. package/dist/progress/routes.js +59 -0
  220. package/dist/progress/routes.js.map +1 -0
  221. package/dist/progress/store.d.ts +7 -0
  222. package/dist/progress/store.d.ts.map +1 -0
  223. package/dist/progress/store.js +195 -0
  224. package/dist/progress/store.js.map +1 -0
  225. package/dist/progress/types.d.ts +49 -0
  226. package/dist/progress/types.d.ts.map +1 -0
  227. package/dist/progress/types.js +7 -0
  228. package/dist/progress/types.js.map +1 -0
  229. package/dist/resources/store.d.ts.map +1 -1
  230. package/dist/resources/store.js +19 -15
  231. package/dist/resources/store.js.map +1 -1
  232. package/dist/scripts/agent-engines/list-agent-engines.d.ts.map +1 -1
  233. package/dist/scripts/agent-engines/list-agent-engines.js +19 -5
  234. package/dist/scripts/agent-engines/list-agent-engines.js.map +1 -1
  235. package/dist/scripts/agent-engines/set-agent-engine.d.ts.map +1 -1
  236. package/dist/scripts/agent-engines/set-agent-engine.js +8 -7
  237. package/dist/scripts/agent-engines/set-agent-engine.js.map +1 -1
  238. package/dist/secrets/index.d.ts +3 -2
  239. package/dist/secrets/index.d.ts.map +1 -1
  240. package/dist/secrets/index.js +3 -2
  241. package/dist/secrets/index.js.map +1 -1
  242. package/dist/secrets/routes.d.ts +41 -2
  243. package/dist/secrets/routes.d.ts.map +1 -1
  244. package/dist/secrets/routes.js +167 -1
  245. package/dist/secrets/routes.js.map +1 -1
  246. package/dist/secrets/schema.d.ts +39 -1
  247. package/dist/secrets/schema.d.ts.map +1 -1
  248. package/dist/secrets/schema.js +6 -0
  249. package/dist/secrets/schema.js.map +1 -1
  250. package/dist/secrets/storage.d.ts +26 -0
  251. package/dist/secrets/storage.d.ts.map +1 -1
  252. package/dist/secrets/storage.js +111 -5
  253. package/dist/secrets/storage.js.map +1 -1
  254. package/dist/secrets/substitution.d.ts +39 -0
  255. package/dist/secrets/substitution.d.ts.map +1 -0
  256. package/dist/secrets/substitution.js +93 -0
  257. package/dist/secrets/substitution.js.map +1 -0
  258. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  259. package/dist/server/agent-chat-plugin.js +1684 -1410
  260. package/dist/server/agent-chat-plugin.js.map +1 -1
  261. package/dist/server/agent-teams.d.ts.map +1 -1
  262. package/dist/server/agent-teams.js +17 -6
  263. package/dist/server/agent-teams.js.map +1 -1
  264. package/dist/server/analytics.d.ts +8 -5
  265. package/dist/server/analytics.d.ts.map +1 -1
  266. package/dist/server/analytics.js +17 -8
  267. package/dist/server/analytics.js.map +1 -1
  268. package/dist/server/app-url.d.ts.map +1 -1
  269. package/dist/server/app-url.js +7 -4
  270. package/dist/server/app-url.js.map +1 -1
  271. package/dist/server/auth.d.ts +11 -0
  272. package/dist/server/auth.d.ts.map +1 -1
  273. package/dist/server/auth.js +74 -21
  274. package/dist/server/auth.js.map +1 -1
  275. package/dist/server/better-auth-instance.d.ts.map +1 -1
  276. package/dist/server/better-auth-instance.js +34 -16
  277. package/dist/server/better-auth-instance.js.map +1 -1
  278. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  279. package/dist/server/core-routes-plugin.js +179 -2
  280. package/dist/server/core-routes-plugin.js.map +1 -1
  281. package/dist/server/email-templates.d.ts +43 -0
  282. package/dist/server/email-templates.d.ts.map +1 -0
  283. package/dist/server/email-templates.js +86 -0
  284. package/dist/server/email-templates.js.map +1 -0
  285. package/dist/server/framework-request-handler.d.ts +15 -0
  286. package/dist/server/framework-request-handler.d.ts.map +1 -1
  287. package/dist/server/framework-request-handler.js +64 -1
  288. package/dist/server/framework-request-handler.js.map +1 -1
  289. package/dist/server/onboarding-html.d.ts +11 -0
  290. package/dist/server/onboarding-html.d.ts.map +1 -1
  291. package/dist/server/onboarding-html.js +275 -16
  292. package/dist/server/onboarding-html.js.map +1 -1
  293. package/dist/server/schema-prompt.d.ts.map +1 -1
  294. package/dist/server/schema-prompt.js +5 -0
  295. package/dist/server/schema-prompt.js.map +1 -1
  296. package/dist/shared/index.d.ts +1 -0
  297. package/dist/shared/index.d.ts.map +1 -1
  298. package/dist/shared/index.js +1 -0
  299. package/dist/shared/index.js.map +1 -1
  300. package/dist/shared/truncate.d.ts +8 -0
  301. package/dist/shared/truncate.d.ts.map +1 -0
  302. package/dist/shared/truncate.js +12 -0
  303. package/dist/shared/truncate.js.map +1 -0
  304. package/dist/templates/default/.agents/skills/agent-engines/SKILL.md +60 -4
  305. package/dist/templates/default/.agents/skills/notifications/SKILL.md +95 -0
  306. package/dist/templates/default/.agents/skills/progress/SKILL.md +97 -0
  307. package/dist/templates/default/AGENTS.md +12 -10
  308. package/dist/templates/default/package.json +10 -10
  309. package/dist/templates/workspace-core/package.json +5 -5
  310. package/dist/templates/workspace-root/package.json +1 -1
  311. package/dist/templates/workspace-root/pnpm-workspace.yaml +6 -0
  312. package/dist/templates/workspace-root/tsconfig.base.json +1 -2
  313. package/dist/tools/fetch-tool.d.ts +22 -0
  314. package/dist/tools/fetch-tool.d.ts.map +1 -0
  315. package/dist/tools/fetch-tool.js +156 -0
  316. package/dist/tools/fetch-tool.js.map +1 -0
  317. package/dist/tracking/index.d.ts +4 -0
  318. package/dist/tracking/index.d.ts.map +1 -0
  319. package/dist/tracking/index.js +3 -0
  320. package/dist/tracking/index.js.map +1 -0
  321. package/dist/tracking/providers.d.ts +15 -0
  322. package/dist/tracking/providers.d.ts.map +1 -0
  323. package/dist/tracking/providers.js +195 -0
  324. package/dist/tracking/providers.js.map +1 -0
  325. package/dist/tracking/registry.d.ts +10 -0
  326. package/dist/tracking/registry.d.ts.map +1 -0
  327. package/dist/tracking/registry.js +75 -0
  328. package/dist/tracking/registry.js.map +1 -0
  329. package/dist/tracking/types.d.ts +13 -0
  330. package/dist/tracking/types.d.ts.map +1 -0
  331. package/dist/tracking/types.js +2 -0
  332. package/dist/tracking/types.js.map +1 -0
  333. package/dist/triggers/actions.d.ts +10 -0
  334. package/dist/triggers/actions.d.ts.map +1 -0
  335. package/dist/triggers/actions.js +277 -0
  336. package/dist/triggers/actions.js.map +1 -0
  337. package/dist/triggers/condition-evaluator.d.ts +15 -0
  338. package/dist/triggers/condition-evaluator.d.ts.map +1 -0
  339. package/dist/triggers/condition-evaluator.js +107 -0
  340. package/dist/triggers/condition-evaluator.js.map +1 -0
  341. package/dist/triggers/dispatcher.d.ts +32 -0
  342. package/dist/triggers/dispatcher.d.ts.map +1 -0
  343. package/dist/triggers/dispatcher.js +291 -0
  344. package/dist/triggers/dispatcher.js.map +1 -0
  345. package/dist/triggers/index.d.ts +5 -0
  346. package/dist/triggers/index.d.ts.map +1 -0
  347. package/dist/triggers/index.js +4 -0
  348. package/dist/triggers/index.js.map +1 -0
  349. package/dist/triggers/types.d.ts +35 -0
  350. package/dist/triggers/types.d.ts.map +1 -0
  351. package/dist/triggers/types.js +9 -0
  352. package/dist/triggers/types.js.map +1 -0
  353. package/dist/vite/client.d.ts.map +1 -1
  354. package/dist/vite/client.js +66 -16
  355. package/dist/vite/client.js.map +1 -1
  356. package/docs/content/automations.md +239 -0
  357. package/docs/content/multi-tenancy.md +88 -0
  358. package/docs/content/notifications.md +199 -0
  359. package/docs/content/progress.md +176 -0
  360. package/docs/content/tracking.md +168 -0
  361. package/package.json +59 -35
  362. package/src/templates/default/.agents/skills/agent-engines/SKILL.md +60 -4
  363. package/src/templates/default/.agents/skills/notifications/SKILL.md +95 -0
  364. package/src/templates/default/.agents/skills/progress/SKILL.md +97 -0
  365. package/src/templates/default/AGENTS.md +12 -10
  366. package/src/templates/default/package.json +10 -10
  367. package/src/templates/workspace-core/package.json +5 -5
  368. package/src/templates/workspace-root/package.json +1 -1
  369. package/src/templates/workspace-root/pnpm-workspace.yaml +6 -0
  370. package/src/templates/workspace-root/tsconfig.base.json +1 -2
  371. package/tsconfig.base.json +1 -1
  372. package/dist/client/settings/LLMSection.d.ts +0 -2
  373. package/dist/client/settings/LLMSection.d.ts.map +0 -1
  374. package/dist/client/settings/LLMSection.js +0 -64
  375. package/dist/client/settings/LLMSection.js.map +0 -1
@@ -1,32 +1,53 @@
1
1
  /**
2
- * Application state helpers for use in scripts.
2
+ * Application state helpers for use in scripts and actions.
3
3
  *
4
- * Scripts run as standalone processes without HTTP context.
5
- * The session ID is resolved from the AGENT_USER_EMAIL env var
6
- * (set by the agent runtime for per-user data isolation), defaulting to
7
- * "local" for backward compatibility in dev mode.
4
+ * The session ID determines which user's application state is read/written.
5
+ * Resolution order:
6
+ * 1. Per-request context (AsyncLocalStorage) — set by the HTTP handler
7
+ * 2. AGENT_USER_EMAIL env var set by agent runtime or CLI
8
+ * 3. Most recent session in the DB — fallback for CLI scripts
9
+ * 4. "local" — last resort
10
+ *
11
+ * The per-request context is critical in multi-user deployments: the env var
12
+ * is process-global and gets overwritten by concurrent requests, so it cannot
13
+ * reliably identify the caller. Only CLI scripts (single-user, no HTTP
14
+ * context) should fall through to the env var or DB-lookup paths.
8
15
  */
9
16
  import { appStateGet, appStatePut, appStateDelete, appStateList, appStateDeleteByPrefix, } from "./store.js";
10
17
  import { getDbExec } from "../db/client.js";
11
- let _resolvedSessionId;
18
+ // Fallback session ID for CLI scripts (no per-request context).
19
+ // Cached after first resolution so repeated CLI calls don't hit the DB.
20
+ let _cliFallbackSessionId;
12
21
  /**
13
- * Resolve session ID, checking AGENT_USER_EMAIL first, then falling back to
14
- * the most recent session in the DB. This ensures CLI actions write to the
15
- * same session partition as the logged-in UI user.
22
+ * Resolve session ID for the current caller.
23
+ *
24
+ * In an HTTP/action context, uses the per-request user email from
25
+ * AsyncLocalStorage so concurrent users don't collide.
26
+ * In a CLI context (no request), falls back to AGENT_USER_EMAIL or the
27
+ * most recent session in the DB.
16
28
  */
17
29
  async function resolveSessionId() {
18
- if (_resolvedSessionId)
19
- return _resolvedSessionId;
30
+ // 1. Per-request context (AsyncLocalStorage) — always preferred
31
+ try {
32
+ const { getRequestUserEmail } = await import("../server/request-context.js");
33
+ const ctxEmail = getRequestUserEmail();
34
+ if (ctxEmail && ctxEmail !== "local@localhost")
35
+ return ctxEmail;
36
+ if (ctxEmail === "local@localhost")
37
+ return "local";
38
+ }
39
+ catch {
40
+ // request-context module not available (e.g. edge runtime) — fall through
41
+ }
42
+ // 2. AGENT_USER_EMAIL env var (CLI scripts)
20
43
  const email = process.env.AGENT_USER_EMAIL;
21
- if (email && email !== "local@localhost") {
22
- _resolvedSessionId = email;
44
+ if (email && email !== "local@localhost")
23
45
  return email;
24
- }
25
- if (email === "local@localhost") {
26
- _resolvedSessionId = "local";
46
+ if (email === "local@localhost")
27
47
  return "local";
28
- }
29
- // No AGENT_USER_EMAIL set — check DB for the most recent session
48
+ // 3. DB fallback — cached per-process for CLI scripts only
49
+ if (_cliFallbackSessionId)
50
+ return _cliFallbackSessionId;
30
51
  try {
31
52
  const db = getDbExec();
32
53
  const { rows } = await db.execute({
@@ -36,7 +57,7 @@ async function resolveSessionId() {
36
57
  if (rows[0]) {
37
58
  const dbEmail = rows[0].email;
38
59
  if (dbEmail && dbEmail !== "local@localhost") {
39
- _resolvedSessionId = dbEmail;
60
+ _cliFallbackSessionId = dbEmail;
40
61
  return dbEmail;
41
62
  }
42
63
  }
@@ -44,7 +65,7 @@ async function resolveSessionId() {
44
65
  catch {
45
66
  // sessions table may not exist yet — fall through
46
67
  }
47
- _resolvedSessionId = "local";
68
+ _cliFallbackSessionId = "local";
48
69
  return "local";
49
70
  }
50
71
  export async function readAppState(key) {
@@ -1 +1 @@
1
- {"version":3,"file":"script-helpers.js","sourceRoot":"","sources":["../../src/application-state/script-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,WAAW,EACX,WAAW,EACX,cAAc,EACd,YAAY,EACZ,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,IAAI,kBAAsC,CAAC;AAE3C;;;;GAIG;AACH,KAAK,UAAU,gBAAgB;IAC7B,IAAI,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IAElD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC3C,IAAI,KAAK,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;QACzC,kBAAkB,GAAG,KAAK,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;QAChC,kBAAkB,GAAG,OAAO,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;QACvB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC;YAChC,GAAG,EAAE,6DAA6D;YAClE,IAAI,EAAE,EAAE;SACT,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAe,CAAC;YACxC,IAAI,OAAO,IAAI,OAAO,KAAK,iBAAiB,EAAE,CAAC;gBAC7C,kBAAkB,GAAG,OAAO,CAAC;gBAC7B,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kDAAkD;IACpD,CAAC;IAED,kBAAkB,GAAG,OAAO,CAAC;IAC7B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW;IAEX,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC3C,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAW,EACX,KAA8B;IAE9B,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC3C,OAAO,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE;QACxC,aAAa,EAAE,OAAO;KACvB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC3C,OAAO,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE;QACpC,aAAa,EAAE,OAAO;KACvB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc;IAEd,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC3C,OAAO,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,MAAc;IACzD,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC3C,OAAO,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE;QAC/C,aAAa,EAAE,OAAO;KACvB,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"script-helpers.js","sourceRoot":"","sources":["../../src/application-state/script-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ {
2
+ "@tabler/icons-react": "^3.41.1",
3
+ "@tailwindcss/vite": "^4.2.4",
4
+ "@types/react": "^19.2.14",
5
+ "@types/react-dom": "^19.2.3",
6
+ "@vitejs/plugin-react": "^6.0.1",
7
+ "h3": "^2.0.1-rc.20",
8
+ "listhen": "^1.9.1",
9
+ "react": "^19.2.5",
10
+ "react-dom": "^19.2.5",
11
+ "tailwindcss": "^4.2.4",
12
+ "tsx": "^4.20.3",
13
+ "typescript": "^6.0.3",
14
+ "vite": "8.0.3"
15
+ }
@@ -0,0 +1,3 @@
1
+ export { insertCheckpoint, getCheckpointsByThread, getCheckpointById, getCheckpointByRunId, cleanupOldCheckpoints, } from "./store.js";
2
+ export { isGitRepo, hasUncommittedChanges, createCheckpoint, restoreToCheckpoint, getCurrentHead, } from "./service.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checkpoints/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { insertCheckpoint, getCheckpointsByThread, getCheckpointById, getCheckpointByRunId, cleanupOldCheckpoints, } from "./store.js";
2
+ export { isGitRepo, hasUncommittedChanges, createCheckpoint, restoreToCheckpoint, getCurrentHead, } from "./service.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checkpoints/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare function isGitRepo(cwd: string): boolean;
2
+ export declare function hasUncommittedChanges(cwd: string): boolean;
3
+ export declare function createCheckpoint(cwd: string, message: string): string | null;
4
+ export declare function restoreToCheckpoint(cwd: string, sha: string): boolean;
5
+ export declare function getCurrentHead(cwd: string): string | null;
6
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/checkpoints/service.ts"],"names":[],"mappings":"AAcA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAW9C;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAY1D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAuB5E;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CA8BrE;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYzD"}
@@ -0,0 +1,107 @@
1
+ import { execFileSync } from "node:child_process";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ const TIMEOUT = 10_000;
5
+ const CHECKPOINT_ENV = {
6
+ ...process.env,
7
+ GIT_AUTHOR_NAME: "agent-native",
8
+ GIT_AUTHOR_EMAIL: "noreply@agent-native.dev",
9
+ GIT_COMMITTER_NAME: "agent-native",
10
+ GIT_COMMITTER_EMAIL: "noreply@agent-native.dev",
11
+ };
12
+ export function isGitRepo(cwd) {
13
+ try {
14
+ execFileSync("git", ["rev-parse", "--is-inside-work-tree"], {
15
+ cwd,
16
+ stdio: "pipe",
17
+ timeout: TIMEOUT,
18
+ });
19
+ return true;
20
+ }
21
+ catch {
22
+ return false;
23
+ }
24
+ }
25
+ export function hasUncommittedChanges(cwd) {
26
+ try {
27
+ const output = execFileSync("git", ["status", "--porcelain"], {
28
+ cwd,
29
+ stdio: "pipe",
30
+ timeout: TIMEOUT,
31
+ encoding: "utf-8",
32
+ });
33
+ return output.trim().length > 0;
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
39
+ export function createCheckpoint(cwd, message) {
40
+ try {
41
+ execFileSync("git", ["add", "-A"], {
42
+ cwd,
43
+ stdio: "pipe",
44
+ timeout: TIMEOUT,
45
+ });
46
+ execFileSync("git", ["commit", "-m", message], {
47
+ cwd,
48
+ stdio: "pipe",
49
+ timeout: TIMEOUT,
50
+ env: CHECKPOINT_ENV,
51
+ });
52
+ const sha = execFileSync("git", ["rev-parse", "HEAD"], {
53
+ cwd,
54
+ stdio: "pipe",
55
+ timeout: TIMEOUT,
56
+ encoding: "utf-8",
57
+ }).trim();
58
+ return sha || null;
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ export function restoreToCheckpoint(cwd, sha) {
65
+ try {
66
+ // Restore all tracked files to the checkpoint state
67
+ execFileSync("git", ["checkout", sha, "--", "."], {
68
+ cwd,
69
+ stdio: "pipe",
70
+ timeout: TIMEOUT,
71
+ });
72
+ // Remove files that were added after the checkpoint
73
+ try {
74
+ const added = execFileSync("git", ["diff", "--name-only", "--diff-filter=A", sha, "HEAD"], { cwd, stdio: "pipe", timeout: TIMEOUT, encoding: "utf-8" }).trim();
75
+ if (added) {
76
+ for (const file of added.split("\n")) {
77
+ const filePath = path.join(cwd, file);
78
+ if (fs.existsSync(filePath)) {
79
+ fs.unlinkSync(filePath);
80
+ }
81
+ }
82
+ }
83
+ }
84
+ catch {
85
+ // Best-effort cleanup of added files
86
+ }
87
+ return true;
88
+ }
89
+ catch {
90
+ return false;
91
+ }
92
+ }
93
+ export function getCurrentHead(cwd) {
94
+ try {
95
+ const sha = execFileSync("git", ["rev-parse", "HEAD"], {
96
+ cwd,
97
+ stdio: "pipe",
98
+ timeout: TIMEOUT,
99
+ encoding: "utf-8",
100
+ }).trim();
101
+ return sha || null;
102
+ }
103
+ catch {
104
+ return null;
105
+ }
106
+ }
107
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/checkpoints/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export declare function insertCheckpoint(id: string, threadId: string, runId: string | null, commitSha: string, message: string): Promise<void>;
2
+ export declare function getCheckpointsByThread(threadId: string): Promise<Array<{
3
+ id: string;
4
+ threadId: string;
5
+ runId: string | null;
6
+ commitSha: string;
7
+ message: string;
8
+ createdAt: number;
9
+ }>>;
10
+ export declare function getCheckpointById(id: string): Promise<{
11
+ id: string;
12
+ threadId: string;
13
+ runId: string | null;
14
+ commitSha: string;
15
+ message: string;
16
+ createdAt: number;
17
+ } | null>;
18
+ export declare function getCheckpointByRunId(runId: string): Promise<{
19
+ id: string;
20
+ threadId: string;
21
+ runId: string | null;
22
+ commitSha: string;
23
+ message: string;
24
+ createdAt: number;
25
+ } | null>;
26
+ export declare function cleanupOldCheckpoints(olderThanMs: number): Promise<void>;
27
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/checkpoints/store.ts"],"names":[],"mappings":"AAuBA,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CACrE,KAAK,CAAC;IACJ,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC,CACH,CAeA;AAED,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAAC,CAiBR;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAAC,CAiBR;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAQf"}
@@ -0,0 +1,92 @@
1
+ import { getDbExec, intType } from "../db/client.js";
2
+ let _initPromise;
3
+ async function ensureCheckpointTable() {
4
+ if (!_initPromise) {
5
+ _initPromise = (async () => {
6
+ const client = getDbExec();
7
+ await client.execute(`
8
+ CREATE TABLE IF NOT EXISTS agent_checkpoints (
9
+ id TEXT PRIMARY KEY,
10
+ thread_id TEXT NOT NULL,
11
+ run_id TEXT,
12
+ commit_sha TEXT NOT NULL,
13
+ message TEXT NOT NULL DEFAULT '',
14
+ created_at ${intType()} NOT NULL
15
+ )
16
+ `);
17
+ })();
18
+ }
19
+ return _initPromise;
20
+ }
21
+ export async function insertCheckpoint(id, threadId, runId, commitSha, message) {
22
+ await ensureCheckpointTable();
23
+ const client = getDbExec();
24
+ await client.execute({
25
+ sql: `INSERT INTO agent_checkpoints (id, thread_id, run_id, commit_sha, message, created_at) VALUES (?, ?, ?, ?, ?, ?)`,
26
+ args: [id, threadId, runId, commitSha, message, Date.now()],
27
+ });
28
+ }
29
+ export async function getCheckpointsByThread(threadId) {
30
+ await ensureCheckpointTable();
31
+ const client = getDbExec();
32
+ const { rows } = await client.execute({
33
+ sql: `SELECT id, thread_id, run_id, commit_sha, message, created_at FROM agent_checkpoints WHERE thread_id = ? ORDER BY created_at DESC`,
34
+ args: [threadId],
35
+ });
36
+ return rows.map((r) => ({
37
+ id: r.id,
38
+ threadId: r.thread_id,
39
+ runId: r.run_id,
40
+ commitSha: r.commit_sha,
41
+ message: r.message,
42
+ createdAt: r.created_at,
43
+ }));
44
+ }
45
+ export async function getCheckpointById(id) {
46
+ await ensureCheckpointTable();
47
+ const client = getDbExec();
48
+ const { rows } = await client.execute({
49
+ sql: `SELECT id, thread_id, run_id, commit_sha, message, created_at FROM agent_checkpoints WHERE id = ?`,
50
+ args: [id],
51
+ });
52
+ if (rows.length === 0)
53
+ return null;
54
+ const r = rows[0];
55
+ return {
56
+ id: r.id,
57
+ threadId: r.thread_id,
58
+ runId: r.run_id,
59
+ commitSha: r.commit_sha,
60
+ message: r.message,
61
+ createdAt: r.created_at,
62
+ };
63
+ }
64
+ export async function getCheckpointByRunId(runId) {
65
+ await ensureCheckpointTable();
66
+ const client = getDbExec();
67
+ const { rows } = await client.execute({
68
+ sql: `SELECT id, thread_id, run_id, commit_sha, message, created_at FROM agent_checkpoints WHERE run_id = ? ORDER BY created_at DESC LIMIT 1`,
69
+ args: [runId],
70
+ });
71
+ if (rows.length === 0)
72
+ return null;
73
+ const r = rows[0];
74
+ return {
75
+ id: r.id,
76
+ threadId: r.thread_id,
77
+ runId: r.run_id,
78
+ commitSha: r.commit_sha,
79
+ message: r.message,
80
+ createdAt: r.created_at,
81
+ };
82
+ }
83
+ export async function cleanupOldCheckpoints(olderThanMs) {
84
+ await ensureCheckpointTable();
85
+ const client = getDbExec();
86
+ const cutoff = Date.now() - olderThanMs;
87
+ await client.execute({
88
+ sql: `DELETE FROM agent_checkpoints WHERE created_at < ?`,
89
+ args: [cutoff],
90
+ });
91
+ }
92
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/checkpoints/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAErD,IAAI,YAAuC,CAAC;AAE5C,KAAK,UAAU,qBAAqB;IAClC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;YACzB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,MAAM,MAAM,CAAC,OAAO,CAAC;;;;;;;uBAOJ,OAAO,EAAE;;OAEzB,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EAAU,EACV,QAAgB,EAChB,KAAoB,EACpB,SAAiB,EACjB,OAAe;IAEf,MAAM,qBAAqB,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,CAAC,OAAO,CAAC;QACnB,GAAG,EAAE,kHAAkH;QACvH,IAAI,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;KAC5D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,QAAgB;IAU3D,MAAM,qBAAqB,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACpC,GAAG,EAAE,mIAAmI;QACxI,IAAI,EAAE,CAAC,QAAQ,CAAC;KACjB,CAAC,CAAC;IACH,OAAQ,IAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM;QACf,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,UAAU;KACxB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,EAAU;IAQhD,MAAM,qBAAqB,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACpC,GAAG,EAAE,mGAAmG;QACxG,IAAI,EAAE,CAAC,EAAE,CAAC;KACX,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAQ,CAAC;IACzB,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM;QACf,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,UAAU;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAAa;IAQtD,MAAM,qBAAqB,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;QACpC,GAAG,EAAE,wIAAwI;QAC7I,IAAI,EAAE,CAAC,KAAK,CAAC;KACd,CAAC,CAAC;IACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAQ,CAAC;IACzB,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,QAAQ,EAAE,CAAC,CAAC,SAAS;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM;QACf,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,UAAU;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB;IAEnB,MAAM,qBAAqB,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;IACxC,MAAM,MAAM,CAAC,OAAO,CAAC;QACnB,GAAG,EAAE,oDAAoD;QACzD,IAAI,EAAE,CAAC,MAAM,CAAC;KACf,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAqBvE,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AA4GD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAmUD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GACf;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkB7D;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/cli/create.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAqBvE,MAAM,WAAW,gBAAgB;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAmID;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CAkCf;AAqbD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,GACf;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkB7D;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}