@tschmz/imp 0.1.0

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 (377) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +201 -0
  3. package/README.md +21 -0
  4. package/config.example.json +143 -0
  5. package/dist/agents/default-system-prompt.d.ts +1 -0
  6. package/dist/agents/default-system-prompt.js +67 -0
  7. package/dist/agents/default-system-prompt.js.map +1 -0
  8. package/dist/agents/registry.d.ts +6 -0
  9. package/dist/agents/registry.js +12 -0
  10. package/dist/agents/registry.js.map +1 -0
  11. package/dist/application/backup-use-cases.d.ts +28 -0
  12. package/dist/application/backup-use-cases.js +571 -0
  13. package/dist/application/backup-use-cases.js.map +1 -0
  14. package/dist/application/commands/agent-command.d.ts +2 -0
  15. package/dist/application/commands/agent-command.js +61 -0
  16. package/dist/application/commands/agent-command.js.map +1 -0
  17. package/dist/application/commands/config-command.d.ts +2 -0
  18. package/dist/application/commands/config-command.js +39 -0
  19. package/dist/application/commands/config-command.js.map +1 -0
  20. package/dist/application/commands/conversation-context.d.ts +6 -0
  21. package/dist/application/commands/conversation-context.js +35 -0
  22. package/dist/application/commands/conversation-context.js.map +1 -0
  23. package/dist/application/commands/export-command.d.ts +2 -0
  24. package/dist/application/commands/export-command.js +25 -0
  25. package/dist/application/commands/export-command.js.map +1 -0
  26. package/dist/application/commands/help-command.d.ts +3 -0
  27. package/dist/application/commands/help-command.js +40 -0
  28. package/dist/application/commands/help-command.js.map +1 -0
  29. package/dist/application/commands/history-command.d.ts +2 -0
  30. package/dist/application/commands/history-command.js +23 -0
  31. package/dist/application/commands/history-command.js.map +1 -0
  32. package/dist/application/commands/logs-command.d.ts +2 -0
  33. package/dist/application/commands/logs-command.js +42 -0
  34. package/dist/application/commands/logs-command.js.map +1 -0
  35. package/dist/application/commands/new-command.d.ts +2 -0
  36. package/dist/application/commands/new-command.js +37 -0
  37. package/dist/application/commands/new-command.js.map +1 -0
  38. package/dist/application/commands/parse-inbound-command.d.ts +15 -0
  39. package/dist/application/commands/parse-inbound-command.js +33 -0
  40. package/dist/application/commands/parse-inbound-command.js.map +1 -0
  41. package/dist/application/commands/ping-command.d.ts +2 -0
  42. package/dist/application/commands/ping-command.js +18 -0
  43. package/dist/application/commands/ping-command.js.map +1 -0
  44. package/dist/application/commands/priority-inbound-commands.d.ts +2 -0
  45. package/dist/application/commands/priority-inbound-commands.js +14 -0
  46. package/dist/application/commands/priority-inbound-commands.js.map +1 -0
  47. package/dist/application/commands/registry.d.ts +7 -0
  48. package/dist/application/commands/registry.js +38 -0
  49. package/dist/application/commands/registry.js.map +1 -0
  50. package/dist/application/commands/reload-command.d.ts +2 -0
  51. package/dist/application/commands/reload-command.js +23 -0
  52. package/dist/application/commands/reload-command.js.map +1 -0
  53. package/dist/application/commands/rename-command.d.ts +2 -0
  54. package/dist/application/commands/rename-command.js +36 -0
  55. package/dist/application/commands/rename-command.js.map +1 -0
  56. package/dist/application/commands/renderers.d.ts +13 -0
  57. package/dist/application/commands/renderers.js +238 -0
  58. package/dist/application/commands/renderers.js.map +1 -0
  59. package/dist/application/commands/reset-command.d.ts +2 -0
  60. package/dist/application/commands/reset-command.js +36 -0
  61. package/dist/application/commands/reset-command.js.map +1 -0
  62. package/dist/application/commands/restart-command.d.ts +2 -0
  63. package/dist/application/commands/restart-command.js +23 -0
  64. package/dist/application/commands/restart-command.js.map +1 -0
  65. package/dist/application/commands/restore-command.d.ts +2 -0
  66. package/dist/application/commands/restore-command.js +52 -0
  67. package/dist/application/commands/restore-command.js.map +1 -0
  68. package/dist/application/commands/status-command.d.ts +2 -0
  69. package/dist/application/commands/status-command.js +24 -0
  70. package/dist/application/commands/status-command.js.map +1 -0
  71. package/dist/application/commands/types.d.ts +49 -0
  72. package/dist/application/commands/types.js +2 -0
  73. package/dist/application/commands/types.js.map +1 -0
  74. package/dist/application/commands/utils.d.ts +4 -0
  75. package/dist/application/commands/utils.js +26 -0
  76. package/dist/application/commands/utils.js.map +1 -0
  77. package/dist/application/commands/whoami-command.d.ts +2 -0
  78. package/dist/application/commands/whoami-command.js +27 -0
  79. package/dist/application/commands/whoami-command.js.map +1 -0
  80. package/dist/application/config-key-path.d.ts +2 -0
  81. package/dist/application/config-key-path.js +65 -0
  82. package/dist/application/config-key-path.js.map +1 -0
  83. package/dist/application/get-config-value-use-case.d.ts +4 -0
  84. package/dist/application/get-config-value-use-case.js +30 -0
  85. package/dist/application/get-config-value-use-case.js.map +1 -0
  86. package/dist/application/handle-incoming-message.d.ts +7 -0
  87. package/dist/application/handle-incoming-message.js +56 -0
  88. package/dist/application/handle-incoming-message.js.map +1 -0
  89. package/dist/application/inbound/dispatch-command.d.ts +2 -0
  90. package/dist/application/inbound/dispatch-command.js +23 -0
  91. package/dist/application/inbound/dispatch-command.js.map +1 -0
  92. package/dist/application/inbound/execute-agent.d.ts +2 -0
  93. package/dist/application/inbound/execute-agent.js +41 -0
  94. package/dist/application/inbound/execute-agent.js.map +1 -0
  95. package/dist/application/inbound/persist-conversation.d.ts +2 -0
  96. package/dist/application/inbound/persist-conversation.js +7 -0
  97. package/dist/application/inbound/persist-conversation.js.map +1 -0
  98. package/dist/application/inbound/resolve-conversation.d.ts +2 -0
  99. package/dist/application/inbound/resolve-conversation.js +19 -0
  100. package/dist/application/inbound/resolve-conversation.js.map +1 -0
  101. package/dist/application/inbound/resolve-skills.d.ts +2 -0
  102. package/dist/application/inbound/resolve-skills.js +73 -0
  103. package/dist/application/inbound/resolve-skills.js.map +1 -0
  104. package/dist/application/inbound/run-hooks-start.d.ts +2 -0
  105. package/dist/application/inbound/run-hooks-start.js +4 -0
  106. package/dist/application/inbound/run-hooks-start.js.map +1 -0
  107. package/dist/application/inbound/run-hooks-success-error.d.ts +3 -0
  108. package/dist/application/inbound/run-hooks-success-error.js +18 -0
  109. package/dist/application/inbound/run-hooks-success-error.js.map +1 -0
  110. package/dist/application/inbound/types.d.ts +21 -0
  111. package/dist/application/inbound/types.js +2 -0
  112. package/dist/application/inbound/types.js.map +1 -0
  113. package/dist/application/init-config-use-case.d.ts +5 -0
  114. package/dist/application/init-config-use-case.js +62 -0
  115. package/dist/application/init-config-use-case.js.map +1 -0
  116. package/dist/application/message-processor.d.ts +19 -0
  117. package/dist/application/message-processor.js +122 -0
  118. package/dist/application/message-processor.js.map +1 -0
  119. package/dist/application/reload-config-use-case.d.ts +15 -0
  120. package/dist/application/reload-config-use-case.js +26 -0
  121. package/dist/application/reload-config-use-case.js.map +1 -0
  122. package/dist/application/run-daemon-use-case.d.ts +27 -0
  123. package/dist/application/run-daemon-use-case.js +42 -0
  124. package/dist/application/run-daemon-use-case.js.map +1 -0
  125. package/dist/application/runtime-target.d.ts +25 -0
  126. package/dist/application/runtime-target.js +41 -0
  127. package/dist/application/runtime-target.js.map +1 -0
  128. package/dist/application/service-use-cases.d.ts +45 -0
  129. package/dist/application/service-use-cases.js +100 -0
  130. package/dist/application/service-use-cases.js.map +1 -0
  131. package/dist/application/set-config-value-use-case.d.ts +5 -0
  132. package/dist/application/set-config-value-use-case.js +87 -0
  133. package/dist/application/set-config-value-use-case.js.map +1 -0
  134. package/dist/application/validate-config-use-case.d.ts +3 -0
  135. package/dist/application/validate-config-use-case.js +14 -0
  136. package/dist/application/validate-config-use-case.js.map +1 -0
  137. package/dist/application/view-logs-use-case.d.ts +6 -0
  138. package/dist/application/view-logs-use-case.js +14 -0
  139. package/dist/application/view-logs-use-case.js.map +1 -0
  140. package/dist/cli/create-cli.d.ts +68 -0
  141. package/dist/cli/create-cli.js +188 -0
  142. package/dist/cli/create-cli.js.map +1 -0
  143. package/dist/config/default-app-config.d.ts +20 -0
  144. package/dist/config/default-app-config.js +138 -0
  145. package/dist/config/default-app-config.js.map +1 -0
  146. package/dist/config/discover-config-path.d.ts +10 -0
  147. package/dist/config/discover-config-path.js +71 -0
  148. package/dist/config/discover-config-path.js.map +1 -0
  149. package/dist/config/init-app-config.d.ts +13 -0
  150. package/dist/config/init-app-config.js +31 -0
  151. package/dist/config/init-app-config.js.map +1 -0
  152. package/dist/config/load-app-config.d.ts +2 -0
  153. package/dist/config/load-app-config.js +29 -0
  154. package/dist/config/load-app-config.js.map +1 -0
  155. package/dist/config/prompt-init-config.d.ts +15 -0
  156. package/dist/config/prompt-init-config.js +201 -0
  157. package/dist/config/prompt-init-config.js.map +1 -0
  158. package/dist/config/resolve-runtime-config.d.ts +8 -0
  159. package/dist/config/resolve-runtime-config.js +122 -0
  160. package/dist/config/resolve-runtime-config.js.map +1 -0
  161. package/dist/config/schema.d.ts +3 -0
  162. package/dist/config/schema.js +203 -0
  163. package/dist/config/schema.js.map +1 -0
  164. package/dist/config/secret-value.d.ts +20 -0
  165. package/dist/config/secret-value.js +69 -0
  166. package/dist/config/secret-value.js.map +1 -0
  167. package/dist/config/types.d.ts +76 -0
  168. package/dist/config/types.js +2 -0
  169. package/dist/config/types.js.map +1 -0
  170. package/dist/config/validate-secret-references.d.ts +7 -0
  171. package/dist/config/validate-secret-references.js +14 -0
  172. package/dist/config/validate-secret-references.js.map +1 -0
  173. package/dist/daemon/bootstrap/acquire-runtime-state.d.ts +6 -0
  174. package/dist/daemon/bootstrap/acquire-runtime-state.js +19 -0
  175. package/dist/daemon/bootstrap/acquire-runtime-state.js.map +1 -0
  176. package/dist/daemon/bootstrap/build-runtime-components.d.ts +21 -0
  177. package/dist/daemon/bootstrap/build-runtime-components.js +26 -0
  178. package/dist/daemon/bootstrap/build-runtime-components.js.map +1 -0
  179. package/dist/daemon/bootstrap/prepare-runtime-filesystem.d.ts +2 -0
  180. package/dist/daemon/bootstrap/prepare-runtime-filesystem.js +11 -0
  181. package/dist/daemon/bootstrap/prepare-runtime-filesystem.js.map +1 -0
  182. package/dist/daemon/create-daemon.d.ts +13 -0
  183. package/dist/daemon/create-daemon.js +98 -0
  184. package/dist/daemon/create-daemon.js.map +1 -0
  185. package/dist/daemon/runtime-bootstrap.d.ts +12 -0
  186. package/dist/daemon/runtime-bootstrap.js +24 -0
  187. package/dist/daemon/runtime-bootstrap.js.map +1 -0
  188. package/dist/daemon/runtime-runner.d.ts +18 -0
  189. package/dist/daemon/runtime-runner.js +126 -0
  190. package/dist/daemon/runtime-runner.js.map +1 -0
  191. package/dist/daemon/runtime-shutdown.d.ts +15 -0
  192. package/dist/daemon/runtime-shutdown.js +50 -0
  193. package/dist/daemon/runtime-shutdown.js.map +1 -0
  194. package/dist/daemon/runtime-state.d.ts +10 -0
  195. package/dist/daemon/runtime-state.js +90 -0
  196. package/dist/daemon/runtime-state.js.map +1 -0
  197. package/dist/daemon/types.d.ts +63 -0
  198. package/dist/daemon/types.js +2 -0
  199. package/dist/daemon/types.js.map +1 -0
  200. package/dist/domain/agent.d.ts +51 -0
  201. package/dist/domain/agent.js +2 -0
  202. package/dist/domain/agent.js.map +1 -0
  203. package/dist/domain/conversation.d.ts +51 -0
  204. package/dist/domain/conversation.js +2 -0
  205. package/dist/domain/conversation.js.map +1 -0
  206. package/dist/domain/errors.d.ts +13 -0
  207. package/dist/domain/errors.js +27 -0
  208. package/dist/domain/errors.js.map +1 -0
  209. package/dist/domain/message.d.ts +27 -0
  210. package/dist/domain/message.js +2 -0
  211. package/dist/domain/message.js.map +1 -0
  212. package/dist/files/backup.d.ts +2 -0
  213. package/dist/files/backup.js +7 -0
  214. package/dist/files/backup.js.map +1 -0
  215. package/dist/files/managed-file.d.ts +11 -0
  216. package/dist/files/managed-file.js +82 -0
  217. package/dist/files/managed-file.js.map +1 -0
  218. package/dist/files/tar-archive.d.ts +7 -0
  219. package/dist/files/tar-archive.js +308 -0
  220. package/dist/files/tar-archive.js.map +1 -0
  221. package/dist/index.d.ts +2 -0
  222. package/dist/index.js +2 -0
  223. package/dist/index.js.map +1 -0
  224. package/dist/logging/daemon-startup-failure-reporter.d.ts +2 -0
  225. package/dist/logging/daemon-startup-failure-reporter.js +19 -0
  226. package/dist/logging/daemon-startup-failure-reporter.js.map +1 -0
  227. package/dist/logging/file-logger.d.ts +3 -0
  228. package/dist/logging/file-logger.js +87 -0
  229. package/dist/logging/file-logger.js.map +1 -0
  230. package/dist/logging/types.d.ts +34 -0
  231. package/dist/logging/types.js +2 -0
  232. package/dist/logging/types.js.map +1 -0
  233. package/dist/logging/view-logs.d.ts +27 -0
  234. package/dist/logging/view-logs.js +171 -0
  235. package/dist/logging/view-logs.js.map +1 -0
  236. package/dist/main.d.ts +2 -0
  237. package/dist/main.js +109 -0
  238. package/dist/main.js.map +1 -0
  239. package/dist/plugins/hook-runner.d.ts +11 -0
  240. package/dist/plugins/hook-runner.js +41 -0
  241. package/dist/plugins/hook-runner.js.map +1 -0
  242. package/dist/plugins/index.d.ts +2 -0
  243. package/dist/plugins/index.js +2 -0
  244. package/dist/plugins/index.js.map +1 -0
  245. package/dist/plugins/types.d.ts +64 -0
  246. package/dist/plugins/types.js +2 -0
  247. package/dist/plugins/types.js.map +1 -0
  248. package/dist/runtime/agent-execution.d.ts +42 -0
  249. package/dist/runtime/agent-execution.js +109 -0
  250. package/dist/runtime/agent-execution.js.map +1 -0
  251. package/dist/runtime/context.d.ts +20 -0
  252. package/dist/runtime/context.js +2 -0
  253. package/dist/runtime/context.js.map +1 -0
  254. package/dist/runtime/create-oauth-api-key-resolver.d.ts +9 -0
  255. package/dist/runtime/create-oauth-api-key-resolver.js +66 -0
  256. package/dist/runtime/create-oauth-api-key-resolver.js.map +1 -0
  257. package/dist/runtime/create-pi-agent-engine.d.ts +28 -0
  258. package/dist/runtime/create-pi-agent-engine.js +150 -0
  259. package/dist/runtime/create-pi-agent-engine.js.map +1 -0
  260. package/dist/runtime/mcp-tool-cache.d.ts +13 -0
  261. package/dist/runtime/mcp-tool-cache.js +43 -0
  262. package/dist/runtime/mcp-tool-cache.js.map +1 -0
  263. package/dist/runtime/mcp-tool-runtime.d.ts +76 -0
  264. package/dist/runtime/mcp-tool-runtime.js +180 -0
  265. package/dist/runtime/mcp-tool-runtime.js.map +1 -0
  266. package/dist/runtime/message-mapping.d.ts +11 -0
  267. package/dist/runtime/message-mapping.js +129 -0
  268. package/dist/runtime/message-mapping.js.map +1 -0
  269. package/dist/runtime/model-resolution.d.ts +5 -0
  270. package/dist/runtime/model-resolution.js +13 -0
  271. package/dist/runtime/model-resolution.js.map +1 -0
  272. package/dist/runtime/pipeline/execute-agent-stage.d.ts +12 -0
  273. package/dist/runtime/pipeline/execute-agent-stage.js +25 -0
  274. package/dist/runtime/pipeline/execute-agent-stage.js.map +1 -0
  275. package/dist/runtime/pipeline/resolve-model-stage.d.ts +8 -0
  276. package/dist/runtime/pipeline/resolve-model-stage.js +9 -0
  277. package/dist/runtime/pipeline/resolve-model-stage.js.map +1 -0
  278. package/dist/runtime/pipeline/resolve-prompt-stage.d.ts +12 -0
  279. package/dist/runtime/pipeline/resolve-prompt-stage.js +30 -0
  280. package/dist/runtime/pipeline/resolve-prompt-stage.js.map +1 -0
  281. package/dist/runtime/pipeline/resolve-tools-stage.d.ts +27 -0
  282. package/dist/runtime/pipeline/resolve-tools-stage.js +46 -0
  283. package/dist/runtime/pipeline/resolve-tools-stage.js.map +1 -0
  284. package/dist/runtime/prompt-template.d.ts +54 -0
  285. package/dist/runtime/prompt-template.js +78 -0
  286. package/dist/runtime/prompt-template.js.map +1 -0
  287. package/dist/runtime/system-prompt-cache.d.ts +33 -0
  288. package/dist/runtime/system-prompt-cache.js +77 -0
  289. package/dist/runtime/system-prompt-cache.js.map +1 -0
  290. package/dist/runtime/system-prompt-resolution.d.ts +22 -0
  291. package/dist/runtime/system-prompt-resolution.js +170 -0
  292. package/dist/runtime/system-prompt-resolution.js.map +1 -0
  293. package/dist/runtime/tool-resolution.d.ts +19 -0
  294. package/dist/runtime/tool-resolution.js +281 -0
  295. package/dist/runtime/tool-resolution.js.map +1 -0
  296. package/dist/runtime/types.d.ts +23 -0
  297. package/dist/runtime/types.js +2 -0
  298. package/dist/runtime/types.js.map +1 -0
  299. package/dist/service/install-plan.d.ts +21 -0
  300. package/dist/service/install-plan.js +71 -0
  301. package/dist/service/install-plan.js.map +1 -0
  302. package/dist/service/install-service.d.ts +32 -0
  303. package/dist/service/install-service.js +80 -0
  304. package/dist/service/install-service.js.map +1 -0
  305. package/dist/service/linux-service-environment.d.ts +5 -0
  306. package/dist/service/linux-service-environment.js +61 -0
  307. package/dist/service/linux-service-environment.js.map +1 -0
  308. package/dist/service/manage-service.d.ts +14 -0
  309. package/dist/service/manage-service.js +36 -0
  310. package/dist/service/manage-service.js.map +1 -0
  311. package/dist/service/platforms/get-service-platform-adapter.d.ts +3 -0
  312. package/dist/service/platforms/get-service-platform-adapter.js +12 -0
  313. package/dist/service/platforms/get-service-platform-adapter.js.map +1 -0
  314. package/dist/service/platforms/linux-systemd-user-adapter.d.ts +2 -0
  315. package/dist/service/platforms/linux-systemd-user-adapter.js +99 -0
  316. package/dist/service/platforms/linux-systemd-user-adapter.js.map +1 -0
  317. package/dist/service/platforms/macos-launchd-adapter.d.ts +2 -0
  318. package/dist/service/platforms/macos-launchd-adapter.js +122 -0
  319. package/dist/service/platforms/macos-launchd-adapter.js.map +1 -0
  320. package/dist/service/platforms/service-platform-adapter.d.ts +35 -0
  321. package/dist/service/platforms/service-platform-adapter.js +16 -0
  322. package/dist/service/platforms/service-platform-adapter.js.map +1 -0
  323. package/dist/service/platforms/windows-winsw-adapter.d.ts +2 -0
  324. package/dist/service/platforms/windows-winsw-adapter.js +47 -0
  325. package/dist/service/platforms/windows-winsw-adapter.js.map +1 -0
  326. package/dist/service/service-error.d.ts +7 -0
  327. package/dist/service/service-error.js +45 -0
  328. package/dist/service/service-error.js.map +1 -0
  329. package/dist/service/service-installer.d.ts +8 -0
  330. package/dist/service/service-installer.js +40 -0
  331. package/dist/service/service-installer.js.map +1 -0
  332. package/dist/service/service-operation-result.d.ts +9 -0
  333. package/dist/service/service-operation-result.js +2 -0
  334. package/dist/service/service-operation-result.js.map +1 -0
  335. package/dist/service/uninstall-service.d.ts +13 -0
  336. package/dist/service/uninstall-service.js +45 -0
  337. package/dist/service/uninstall-service.js.map +1 -0
  338. package/dist/skills/discovery.d.ts +10 -0
  339. package/dist/skills/discovery.js +216 -0
  340. package/dist/skills/discovery.js.map +1 -0
  341. package/dist/skills/types.d.ts +20 -0
  342. package/dist/skills/types.js +2 -0
  343. package/dist/skills/types.js.map +1 -0
  344. package/dist/storage/fs-store.d.ts +3 -0
  345. package/dist/storage/fs-store.js +707 -0
  346. package/dist/storage/fs-store.js.map +1 -0
  347. package/dist/storage/types.d.ts +29 -0
  348. package/dist/storage/types.js +2 -0
  349. package/dist/storage/types.js.map +1 -0
  350. package/dist/tools/registry.d.ts +7 -0
  351. package/dist/tools/registry.js +18 -0
  352. package/dist/tools/registry.js.map +1 -0
  353. package/dist/tools/types.d.ts +14 -0
  354. package/dist/tools/types.js +2 -0
  355. package/dist/tools/types.js.map +1 -0
  356. package/dist/transports/builtins.d.ts +1 -0
  357. package/dist/transports/builtins.js +15 -0
  358. package/dist/transports/builtins.js.map +1 -0
  359. package/dist/transports/registry.d.ts +21 -0
  360. package/dist/transports/registry.js +28 -0
  361. package/dist/transports/registry.js.map +1 -0
  362. package/dist/transports/telegram/openai-voice-transcriber.d.ts +18 -0
  363. package/dist/transports/telegram/openai-voice-transcriber.js +75 -0
  364. package/dist/transports/telegram/openai-voice-transcriber.js.map +1 -0
  365. package/dist/transports/telegram/render-telegram-message.d.ts +2 -0
  366. package/dist/transports/telegram/render-telegram-message.js +458 -0
  367. package/dist/transports/telegram/render-telegram-message.js.map +1 -0
  368. package/dist/transports/telegram/telegram-transport.d.ts +56 -0
  369. package/dist/transports/telegram/telegram-transport.js +414 -0
  370. package/dist/transports/telegram/telegram-transport.js.map +1 -0
  371. package/dist/transports/telegram/transport-adapter.d.ts +33 -0
  372. package/dist/transports/telegram/transport-adapter.js +62 -0
  373. package/dist/transports/telegram/transport-adapter.js.map +1 -0
  374. package/dist/transports/types.d.ts +15 -0
  375. package/dist/transports/types.js +2 -0
  376. package/dist/transports/types.js.map +1 -0
  377. package/package.json +49 -0
@@ -0,0 +1,188 @@
1
+ import { createRequire } from "node:module";
2
+ import { Command, InvalidArgumentError } from "commander";
3
+ export function createCli(dependencies) {
4
+ const program = new Command();
5
+ program
6
+ .name("imp")
7
+ .description("Run and manage imp agent daemons")
8
+ .showHelpAfterError()
9
+ .version(getCliVersion());
10
+ program
11
+ .command("start")
12
+ .description("Start the imp daemon")
13
+ .option("-c, --config <path>", "Path to the config file")
14
+ .action(async function action(options) {
15
+ await dependencies.startDaemon({ configPath: options.config });
16
+ });
17
+ program
18
+ .command("log")
19
+ .description("Show daemon log output")
20
+ .option("-c, --config <path>", "Path to the config file")
21
+ .option("-b, --endpoint <id>", "Show logs for a specific endpoint ID")
22
+ .option("-f, --follow", "Follow appended log lines")
23
+ .option("-n, --lines <count>", "Number of recent lines to show", parsePositiveIntegerOption, 50)
24
+ .action(async function action(options) {
25
+ await dependencies.viewLogs({
26
+ configPath: options.config,
27
+ endpointId: options.endpoint,
28
+ follow: options.follow ?? false,
29
+ lines: options.lines ?? 50,
30
+ });
31
+ });
32
+ program
33
+ .command("init")
34
+ .description("Create an initial config file")
35
+ .option("-c, --config <path>", "Path to the config file")
36
+ .option("-f, --force", "Overwrite an existing config file")
37
+ .option("--defaults", "Skip prompts and write the default config template")
38
+ .action(async function action(options) {
39
+ await dependencies.initConfig({
40
+ configPath: options.config,
41
+ force: options.force ?? false,
42
+ defaults: options.defaults ?? false,
43
+ });
44
+ });
45
+ const configCommand = program.command("config").description("Inspect, reload, and validate config files");
46
+ configCommand
47
+ .command("get")
48
+ .description("Read a value from a discovered or explicit config file")
49
+ .argument("<keyPath>", "Dot-separated config key path")
50
+ .option("-c, --config <path>", "Path to the config file")
51
+ .action(async function action(keyPath, options) {
52
+ await dependencies.getConfigValue({
53
+ configPath: options.config,
54
+ keyPath,
55
+ });
56
+ });
57
+ configCommand
58
+ .command("set")
59
+ .description("Update a value in a discovered or explicit config file")
60
+ .argument("<keyPath>", "Dot-separated config key path")
61
+ .argument("<value>", "JSON literal/object/array or plain string value")
62
+ .option("-c, --config <path>", "Path to the config file")
63
+ .action(async function action(keyPath, value, options) {
64
+ await dependencies.setConfigValue({
65
+ configPath: options.config,
66
+ keyPath,
67
+ value,
68
+ });
69
+ });
70
+ configCommand
71
+ .command("validate")
72
+ .description("Validate a discovered or explicit config file")
73
+ .option("-c, --config <path>", "Path to the config file")
74
+ .action(async function action(options) {
75
+ await dependencies.validateConfig({ configPath: options.config });
76
+ });
77
+ configCommand
78
+ .command("reload")
79
+ .description("Reload a discovered or explicit config in the installed service")
80
+ .option("-c, --config <path>", "Path to the config file")
81
+ .action(async function action(options) {
82
+ await dependencies.reloadConfig({ configPath: options.config });
83
+ });
84
+ const backupCommand = program.command("backup").description("Create and inspect imp backup archives");
85
+ backupCommand
86
+ .command("create")
87
+ .description("Create a backup archive from config, agent files, and conversation data")
88
+ .option("-c, --config <path>", "Path to the config file")
89
+ .option("-o, --output <path>", "Path to the backup archive")
90
+ .option("--only <scopes>", "Comma-separated scopes: config,agents,conversations")
91
+ .option("-f, --force", "Overwrite an existing backup archive")
92
+ .action(async function action(options) {
93
+ await dependencies.createBackup({
94
+ configPath: options.config,
95
+ outputPath: options.output,
96
+ only: options.only,
97
+ force: options.force ?? false,
98
+ });
99
+ });
100
+ program
101
+ .command("restore")
102
+ .description("Restore config, agent files, and conversations from a backup archive")
103
+ .argument("<inputPath>", "Path to the backup archive")
104
+ .option("-c, --config <path>", "Target config path")
105
+ .option("--data-root <path>", "Override paths.dataRoot when restoring conversations or config")
106
+ .option("--only <scopes>", "Comma-separated scopes: config,agents,conversations. Agents-only restore requires a restored or existing target config.")
107
+ .option("-f, --force", "Overwrite existing files")
108
+ .action(async function action(inputPath, options) {
109
+ await dependencies.restoreBackup({
110
+ configPath: options.config,
111
+ dataRoot: options.dataRoot,
112
+ inputPath,
113
+ only: options.only,
114
+ force: options.force ?? false,
115
+ });
116
+ });
117
+ const serviceCommand = program.command("service").description("Manage imp background services");
118
+ serviceCommand
119
+ .command("install")
120
+ .description("Generate or install a background service definition")
121
+ .option("-c, --config <path>", "Path to the config file")
122
+ .option("-f, --force", "Overwrite an existing service definition")
123
+ .option("--dry-run", "Print the generated service definition instead of installing it")
124
+ .action(async function action(options) {
125
+ await dependencies.installService({
126
+ configPath: options.config,
127
+ dryRun: options.dryRun ?? false,
128
+ force: options.force ?? false,
129
+ });
130
+ });
131
+ serviceCommand
132
+ .command("uninstall")
133
+ .description("Remove an installed background service definition")
134
+ .option("-c, --config <path>", "Path to the config file")
135
+ .action(async function action(options) {
136
+ await dependencies.uninstallService({
137
+ configPath: options.config,
138
+ });
139
+ });
140
+ serviceCommand
141
+ .command("start")
142
+ .description("Start an installed background service")
143
+ .option("-c, --config <path>", "Path to the config file")
144
+ .action(async function action(options) {
145
+ await dependencies.startService({ configPath: options.config });
146
+ });
147
+ serviceCommand
148
+ .command("stop")
149
+ .description("Stop a running background service")
150
+ .option("-c, --config <path>", "Path to the config file")
151
+ .action(async function action(options) {
152
+ await dependencies.stopService({ configPath: options.config });
153
+ });
154
+ serviceCommand
155
+ .command("restart")
156
+ .description("Restart an installed background service")
157
+ .option("-c, --config <path>", "Path to the config file")
158
+ .action(async function action(options) {
159
+ await dependencies.restartService({ configPath: options.config });
160
+ });
161
+ serviceCommand
162
+ .command("status")
163
+ .description("Show the native status for an installed background service")
164
+ .option("-c, --config <path>", "Path to the config file")
165
+ .action(async function action(options) {
166
+ await dependencies.statusService({ configPath: options.config });
167
+ });
168
+ return program;
169
+ }
170
+ function getCliVersion() {
171
+ const require = createRequire(import.meta.url);
172
+ const packageJson = require("../../package.json");
173
+ return packageJson.version ?? "0.0.0";
174
+ }
175
+ export function parseIntegerOption(value) {
176
+ if (!/^-?\d+$/.test(value)) {
177
+ throw new InvalidArgumentError("Expected an integer.");
178
+ }
179
+ return Number.parseInt(value, 10);
180
+ }
181
+ export function parsePositiveIntegerOption(value) {
182
+ const parsed = parseIntegerOption(value);
183
+ if (parsed <= 0) {
184
+ throw new InvalidArgumentError("Expected a positive integer.");
185
+ }
186
+ return parsed;
187
+ }
188
+ //# sourceMappingURL=create-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-cli.js","sourceRoot":"","sources":["../../src/cli/create-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { AppConfig } from "./types.js";
2
+ export interface InitialConfigAnswers {
3
+ instanceName: string;
4
+ dataRoot: string;
5
+ provider: string;
6
+ modelId: string;
7
+ telegramToken: string;
8
+ allowedUserIds: string[];
9
+ workingDirectory?: string;
10
+ instructionFiles?: string[];
11
+ referenceFiles?: string[];
12
+ shellPath?: string[];
13
+ promptBaseFile?: string;
14
+ }
15
+ export declare function createDefaultAppConfig(env: NodeJS.ProcessEnv): AppConfig;
16
+ export declare function buildInitialAppConfig(_env: NodeJS.ProcessEnv, answers: InitialConfigAnswers): AppConfig;
17
+ export declare function getSuggestedModelId(provider: string): string;
18
+ export declare function parseCommaSeparatedValues(raw: string): string[];
19
+ export declare function parsePathEntries(raw: string): string[];
20
+ export declare function validateTelegramUserIds(raw: string): true | string;
@@ -0,0 +1,138 @@
1
+ import { getOAuthProvider } from "@mariozechner/pi-ai/oauth";
2
+ import { join } from "node:path";
3
+ import { getDefaultUserDataRoot } from "./discover-config-path.js";
4
+ const defaultAgentId = "default";
5
+ const defaultEndpointId = "private-telegram";
6
+ const defaultTools = ["read", "bash", "edit", "write", "grep", "find", "ls"];
7
+ export function createDefaultAppConfig(env) {
8
+ const dataRoot = getDefaultUserDataRoot(env);
9
+ return buildInitialAppConfig(env, {
10
+ instanceName: "default",
11
+ dataRoot,
12
+ provider: "openai",
13
+ modelId: "gpt-5.4",
14
+ telegramToken: "replace-me",
15
+ allowedUserIds: [],
16
+ });
17
+ }
18
+ export function buildInitialAppConfig(_env, answers) {
19
+ const prompt = buildAgentPrompt(answers);
20
+ const workspace = buildAgentWorkspace(answers);
21
+ const usesOAuth = Boolean(getOAuthProvider(answers.provider));
22
+ return {
23
+ instance: {
24
+ name: answers.instanceName,
25
+ },
26
+ paths: {
27
+ dataRoot: answers.dataRoot,
28
+ },
29
+ logging: {
30
+ level: "info",
31
+ },
32
+ defaults: {
33
+ agentId: defaultAgentId,
34
+ },
35
+ agents: [
36
+ {
37
+ id: defaultAgentId,
38
+ model: {
39
+ provider: answers.provider,
40
+ modelId: answers.modelId,
41
+ },
42
+ ...(prompt ? { prompt } : {}),
43
+ ...(usesOAuth ? { authFile: join(answers.dataRoot, "auth.json") } : {}),
44
+ tools: [...defaultTools],
45
+ ...(workspace ? { workspace } : {}),
46
+ skills: {
47
+ paths: [],
48
+ },
49
+ inference: {
50
+ metadata: {
51
+ app: "imp",
52
+ },
53
+ request: {
54
+ store: true,
55
+ },
56
+ },
57
+ },
58
+ ],
59
+ endpoints: [
60
+ {
61
+ id: defaultEndpointId,
62
+ type: "telegram",
63
+ enabled: true,
64
+ token: answers.telegramToken,
65
+ access: {
66
+ allowedUserIds: answers.allowedUserIds,
67
+ },
68
+ },
69
+ ],
70
+ };
71
+ }
72
+ export function getSuggestedModelId(provider) {
73
+ switch (provider) {
74
+ case "anthropic":
75
+ return "claude-sonnet-4-5";
76
+ case "openai":
77
+ case "openai-codex":
78
+ return "gpt-5.4";
79
+ case "google-gemini-cli":
80
+ case "google-antigravity":
81
+ return "gemini-2.5-pro";
82
+ case "github-copilot":
83
+ return "gpt-5.4";
84
+ default:
85
+ return "replace-me";
86
+ }
87
+ }
88
+ export function parseCommaSeparatedValues(raw) {
89
+ return raw
90
+ .split(",")
91
+ .map((value) => value.trim())
92
+ .filter((value) => value.length > 0);
93
+ }
94
+ export function parsePathEntries(raw) {
95
+ return raw
96
+ .split(":")
97
+ .map((value) => value.trim())
98
+ .filter((value) => value.length > 0);
99
+ }
100
+ export function validateTelegramUserIds(raw) {
101
+ const values = parseCommaSeparatedValues(raw);
102
+ if (values.every((value) => /^\d+$/.test(value))) {
103
+ return true;
104
+ }
105
+ return "Telegram user IDs must contain digits only.";
106
+ }
107
+ function buildAgentPrompt(answers) {
108
+ const instructionFiles = answers.instructionFiles?.filter((value) => value.length > 0) ?? [];
109
+ const referenceFiles = answers.referenceFiles?.filter((value) => value.length > 0) ?? [];
110
+ const promptBaseFile = answers.promptBaseFile?.trim();
111
+ if (!promptBaseFile && instructionFiles.length === 0 && referenceFiles.length === 0) {
112
+ return undefined;
113
+ }
114
+ return {
115
+ ...(promptBaseFile ? { base: { file: promptBaseFile } } : {}),
116
+ ...(instructionFiles.length > 0
117
+ ? {
118
+ instructions: instructionFiles.map((file) => ({ file })),
119
+ }
120
+ : {}),
121
+ ...(referenceFiles.length > 0
122
+ ? {
123
+ references: referenceFiles.map((file) => ({ file })),
124
+ }
125
+ : {}),
126
+ };
127
+ }
128
+ function buildAgentWorkspace(answers) {
129
+ const shellPath = answers.shellPath?.filter((value) => value.length > 0) ?? [];
130
+ if (!answers.workingDirectory && shellPath.length === 0) {
131
+ return undefined;
132
+ }
133
+ return {
134
+ ...(answers.workingDirectory ? { cwd: answers.workingDirectory } : {}),
135
+ ...(shellPath.length > 0 ? { shellPath } : {}),
136
+ };
137
+ }
138
+ //# sourceMappingURL=default-app-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"default-app-config.js","sourceRoot":"","sources":["../../src/config/default-app-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface ConfigPathDiscovery {
2
+ configPath: string;
3
+ checkedPaths: string[];
4
+ }
5
+ export declare function discoverConfigPath(options?: {
6
+ cliConfigPath?: string;
7
+ env?: NodeJS.ProcessEnv;
8
+ }): Promise<ConfigPathDiscovery>;
9
+ export declare function getDefaultUserConfigPath(env?: NodeJS.ProcessEnv): string;
10
+ export declare function getDefaultUserDataRoot(env?: NodeJS.ProcessEnv): string;
@@ -0,0 +1,71 @@
1
+ import { access } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { resolve } from "node:path";
4
+ export async function discoverConfigPath(options = {}) {
5
+ const candidates = getConfigPathCandidates(options);
6
+ for (const candidate of candidates) {
7
+ if (await pathExists(candidate)) {
8
+ return {
9
+ configPath: candidate,
10
+ checkedPaths: candidates,
11
+ };
12
+ }
13
+ }
14
+ throw new Error(buildMissingConfigMessage(candidates, options.env));
15
+ }
16
+ function getConfigPathCandidates(options) {
17
+ const env = options.env ?? process.env;
18
+ const candidates = [];
19
+ if (options.cliConfigPath) {
20
+ candidates.push(resolve(options.cliConfigPath));
21
+ }
22
+ if (env.IMP_CONFIG_PATH) {
23
+ candidates.push(resolve(env.IMP_CONFIG_PATH));
24
+ }
25
+ const xdgConfigHome = env.XDG_CONFIG_HOME;
26
+ if (xdgConfigHome) {
27
+ candidates.push(resolve(xdgConfigHome, "imp", "config.json"));
28
+ }
29
+ candidates.push(getDefaultUserConfigPath(env));
30
+ candidates.push("/etc/imp/config.json");
31
+ return Array.from(new Set(candidates));
32
+ }
33
+ async function pathExists(path) {
34
+ try {
35
+ await access(path);
36
+ return true;
37
+ }
38
+ catch {
39
+ return false;
40
+ }
41
+ }
42
+ function buildMissingConfigMessage(checkedPaths, env = process.env) {
43
+ const checked = checkedPaths.map((path) => `- ${path}`).join("\n");
44
+ const recommendedPath = getDefaultUserConfigPath(env);
45
+ return [
46
+ "No config file found.",
47
+ "Checked:",
48
+ checked,
49
+ "",
50
+ "Create a config at:",
51
+ `- ${recommendedPath}`,
52
+ "",
53
+ "Or start with:",
54
+ "- imp start --config /path/to/config.json",
55
+ ].join("\n");
56
+ }
57
+ export function getDefaultUserConfigPath(env = process.env) {
58
+ const xdgConfigHome = env.XDG_CONFIG_HOME;
59
+ if (xdgConfigHome) {
60
+ return resolve(xdgConfigHome, "imp", "config.json");
61
+ }
62
+ return resolve(homedir(), ".config", "imp", "config.json");
63
+ }
64
+ export function getDefaultUserDataRoot(env = process.env) {
65
+ const xdgStateHome = env.XDG_STATE_HOME;
66
+ if (xdgStateHome) {
67
+ return resolve(xdgStateHome, "imp");
68
+ }
69
+ return resolve(homedir(), ".local", "state", "imp");
70
+ }
71
+ //# sourceMappingURL=discover-config-path.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover-config-path.js","sourceRoot":"","sources":["../../src/config/discover-config-path.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { AppConfig } from "./types.js";
2
+ export declare function initAppConfig(options?: {
3
+ configPath?: string;
4
+ force?: boolean;
5
+ env?: NodeJS.ProcessEnv;
6
+ now?: Date;
7
+ config?: AppConfig;
8
+ }): Promise<string>;
9
+ export declare function assertInitConfigCanBeCreated(options?: {
10
+ configPath?: string;
11
+ force?: boolean;
12
+ env?: NodeJS.ProcessEnv;
13
+ }): Promise<string>;
@@ -0,0 +1,31 @@
1
+ import { resolve } from "node:path";
2
+ import { createDefaultAppConfig } from "./default-app-config.js";
3
+ import { getDefaultUserConfigPath } from "./discover-config-path.js";
4
+ import { assertManagedFileCanBeWritten, writeManagedFile } from "../files/managed-file.js";
5
+ import { appConfigSchema } from "./schema.js";
6
+ const ownerReadWriteMode = 0o600;
7
+ export async function initAppConfig(options = {}) {
8
+ const env = options.env ?? process.env;
9
+ const configPath = resolveConfigPath({ configPath: options.configPath, env });
10
+ const config = appConfigSchema.parse(options.config ?? createDefaultAppConfig(env));
11
+ return writeManagedFile({
12
+ path: configPath,
13
+ resourceLabel: "Config file",
14
+ content: `${JSON.stringify(config, null, 2)}\n`,
15
+ force: options.force,
16
+ now: options.now,
17
+ mode: ownerReadWriteMode,
18
+ });
19
+ }
20
+ export async function assertInitConfigCanBeCreated(options = {}) {
21
+ return assertManagedFileCanBeWritten({
22
+ path: resolveConfigPath(options),
23
+ resourceLabel: "Config file",
24
+ force: options.force,
25
+ });
26
+ }
27
+ function resolveConfigPath(options) {
28
+ const env = options.env ?? process.env;
29
+ return resolve(options.configPath ?? getDefaultUserConfigPath(env));
30
+ }
31
+ //# sourceMappingURL=init-app-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-app-config.js","sourceRoot":"","sources":["../../src/config/init-app-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,kBAAkB,GAAG,KAAK,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAMhC,EAAE;IACJ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC;IAEpF,OAAO,gBAAgB,CAAC;QACtB,IAAI,EAAE,UAAU;QAChB,aAAa,EAAE,aAAa;QAC5B,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;QAC/C,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,IAAI,EAAE,kBAAkB;KACzB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,UAI/C,EAAE;IACJ,OAAO,6BAA6B,CAAC;QACnC,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;QAChC,aAAa,EAAE,aAAa;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,OAG1B;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { AppConfig } from "./types.js";
2
+ export declare function loadAppConfig(configPath: string): Promise<AppConfig>;
@@ -0,0 +1,29 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { appConfigSchema } from "./schema.js";
4
+ export async function loadAppConfig(configPath) {
5
+ const absolutePath = resolve(configPath);
6
+ const raw = await readFile(absolutePath, "utf8");
7
+ const parsed = parseConfigJson(raw, absolutePath);
8
+ const result = appConfigSchema.safeParse(parsed);
9
+ if (!result.success) {
10
+ const details = result.error.issues
11
+ .map((issue) => `${issue.path.join(".") || "<root>"}: ${issue.message}`)
12
+ .join("\n");
13
+ throw new Error(`Invalid config file ${absolutePath}\n${details}`);
14
+ }
15
+ return result.data;
16
+ }
17
+ function parseConfigJson(raw, absolutePath) {
18
+ try {
19
+ return JSON.parse(stripUtf8Bom(raw));
20
+ }
21
+ catch (error) {
22
+ const message = error instanceof Error ? error.message : String(error);
23
+ throw new Error(`Invalid config file ${absolutePath}\nMalformed JSON: ${message}`);
24
+ }
25
+ }
26
+ function stripUtf8Bom(raw) {
27
+ return raw.charCodeAt(0) === 0xfeff ? raw.slice(1) : raw;
28
+ }
29
+ //# sourceMappingURL=load-app-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-app-config.js","sourceRoot":"","sources":["../../src/config/load-app-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,UAAkB;IACpD,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAEjD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAChC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;aACvE,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,KAAK,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,YAAoB;IACxD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAY,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,uBAAuB,YAAY,qBAAqB,OAAO,EAAE,CAAC,CAAC;IACrF,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { confirm, input, select } from "@inquirer/prompts";
2
+ import type { AppConfig } from "./types.js";
3
+ interface PromptDependencies {
4
+ confirm: typeof confirm;
5
+ input: typeof input;
6
+ select: typeof select;
7
+ }
8
+ export interface InitialAppSetup {
9
+ config: AppConfig;
10
+ installService: boolean;
11
+ serviceEnvironment?: Record<string, string>;
12
+ }
13
+ export declare function promptForInitialAppConfig(env?: NodeJS.ProcessEnv, dependencies?: PromptDependencies): Promise<InitialAppSetup>;
14
+ export declare function getProviderEnvironmentVariables(provider: string): string[];
15
+ export {};