adaria-ai 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 (337) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +21 -0
  3. package/apps.example.yaml +65 -0
  4. package/dist/agent/audit.d.ts +16 -0
  5. package/dist/agent/audit.d.ts.map +1 -0
  6. package/dist/agent/audit.js +42 -0
  7. package/dist/agent/audit.js.map +1 -0
  8. package/dist/agent/claude.d.ts +62 -0
  9. package/dist/agent/claude.d.ts.map +1 -0
  10. package/dist/agent/claude.js +297 -0
  11. package/dist/agent/claude.js.map +1 -0
  12. package/dist/agent/conversation-summary.d.ts +29 -0
  13. package/dist/agent/conversation-summary.d.ts.map +1 -0
  14. package/dist/agent/conversation-summary.js +221 -0
  15. package/dist/agent/conversation-summary.js.map +1 -0
  16. package/dist/agent/core.d.ts +81 -0
  17. package/dist/agent/core.d.ts.map +1 -0
  18. package/dist/agent/core.js +527 -0
  19. package/dist/agent/core.js.map +1 -0
  20. package/dist/agent/mcp-launcher.d.ts +42 -0
  21. package/dist/agent/mcp-launcher.d.ts.map +1 -0
  22. package/dist/agent/mcp-launcher.js +38 -0
  23. package/dist/agent/mcp-launcher.js.map +1 -0
  24. package/dist/agent/mcp-manager.d.ts +81 -0
  25. package/dist/agent/mcp-manager.d.ts.map +1 -0
  26. package/dist/agent/mcp-manager.js +136 -0
  27. package/dist/agent/mcp-manager.js.map +1 -0
  28. package/dist/agent/memory.d.ts +10 -0
  29. package/dist/agent/memory.d.ts.map +1 -0
  30. package/dist/agent/memory.js +95 -0
  31. package/dist/agent/memory.js.map +1 -0
  32. package/dist/agent/safety.d.ts +45 -0
  33. package/dist/agent/safety.d.ts.map +1 -0
  34. package/dist/agent/safety.js +71 -0
  35. package/dist/agent/safety.js.map +1 -0
  36. package/dist/agent/session.d.ts +27 -0
  37. package/dist/agent/session.d.ts.map +1 -0
  38. package/dist/agent/session.js +124 -0
  39. package/dist/agent/session.js.map +1 -0
  40. package/dist/agent/tool-descriptions.d.ts +8 -0
  41. package/dist/agent/tool-descriptions.d.ts.map +1 -0
  42. package/dist/agent/tool-descriptions.js +26 -0
  43. package/dist/agent/tool-descriptions.js.map +1 -0
  44. package/dist/cli/analyze.d.ts +8 -0
  45. package/dist/cli/analyze.d.ts.map +1 -0
  46. package/dist/cli/analyze.js +114 -0
  47. package/dist/cli/analyze.js.map +1 -0
  48. package/dist/cli/daemon.d.ts +2 -0
  49. package/dist/cli/daemon.d.ts.map +1 -0
  50. package/dist/cli/daemon.js +91 -0
  51. package/dist/cli/daemon.js.map +1 -0
  52. package/dist/cli/doctor.d.ts +2 -0
  53. package/dist/cli/doctor.d.ts.map +1 -0
  54. package/dist/cli/doctor.js +198 -0
  55. package/dist/cli/doctor.js.map +1 -0
  56. package/dist/cli/init.d.ts +3 -0
  57. package/dist/cli/init.d.ts.map +1 -0
  58. package/dist/cli/init.js +459 -0
  59. package/dist/cli/init.js.map +1 -0
  60. package/dist/cli/logs.d.ts +4 -0
  61. package/dist/cli/logs.d.ts.map +1 -0
  62. package/dist/cli/logs.js +50 -0
  63. package/dist/cli/logs.js.map +1 -0
  64. package/dist/cli/monitor-cmd.d.ts +11 -0
  65. package/dist/cli/monitor-cmd.d.ts.map +1 -0
  66. package/dist/cli/monitor-cmd.js +59 -0
  67. package/dist/cli/monitor-cmd.js.map +1 -0
  68. package/dist/cli/start.d.ts +11 -0
  69. package/dist/cli/start.d.ts.map +1 -0
  70. package/dist/cli/start.js +103 -0
  71. package/dist/cli/start.js.map +1 -0
  72. package/dist/cli/status.d.ts +9 -0
  73. package/dist/cli/status.d.ts.map +1 -0
  74. package/dist/cli/status.js +49 -0
  75. package/dist/cli/status.js.map +1 -0
  76. package/dist/cli/stop.d.ts +2 -0
  77. package/dist/cli/stop.d.ts.map +1 -0
  78. package/dist/cli/stop.js +34 -0
  79. package/dist/cli/stop.js.map +1 -0
  80. package/dist/collectors/appstore.d.ts +51 -0
  81. package/dist/collectors/appstore.d.ts.map +1 -0
  82. package/dist/collectors/appstore.js +166 -0
  83. package/dist/collectors/appstore.js.map +1 -0
  84. package/dist/collectors/arden-tts.d.ts +60 -0
  85. package/dist/collectors/arden-tts.d.ts.map +1 -0
  86. package/dist/collectors/arden-tts.js +83 -0
  87. package/dist/collectors/arden-tts.js.map +1 -0
  88. package/dist/collectors/asomobile.d.ts +37 -0
  89. package/dist/collectors/asomobile.d.ts.map +1 -0
  90. package/dist/collectors/asomobile.js +88 -0
  91. package/dist/collectors/asomobile.js.map +1 -0
  92. package/dist/collectors/eodin-blog.d.ts +90 -0
  93. package/dist/collectors/eodin-blog.d.ts.map +1 -0
  94. package/dist/collectors/eodin-blog.js +238 -0
  95. package/dist/collectors/eodin-blog.js.map +1 -0
  96. package/dist/collectors/eodin-sdk.d.ts +60 -0
  97. package/dist/collectors/eodin-sdk.d.ts.map +1 -0
  98. package/dist/collectors/eodin-sdk.js +112 -0
  99. package/dist/collectors/eodin-sdk.js.map +1 -0
  100. package/dist/collectors/fridgify-recipes.d.ts +65 -0
  101. package/dist/collectors/fridgify-recipes.d.ts.map +1 -0
  102. package/dist/collectors/fridgify-recipes.js +111 -0
  103. package/dist/collectors/fridgify-recipes.js.map +1 -0
  104. package/dist/collectors/playstore.d.ts +46 -0
  105. package/dist/collectors/playstore.d.ts.map +1 -0
  106. package/dist/collectors/playstore.js +140 -0
  107. package/dist/collectors/playstore.js.map +1 -0
  108. package/dist/collectors/youtube.d.ts +44 -0
  109. package/dist/collectors/youtube.d.ts.map +1 -0
  110. package/dist/collectors/youtube.js +107 -0
  111. package/dist/collectors/youtube.js.map +1 -0
  112. package/dist/config/apps-schema.d.ts +94 -0
  113. package/dist/config/apps-schema.d.ts.map +1 -0
  114. package/dist/config/apps-schema.js +66 -0
  115. package/dist/config/apps-schema.js.map +1 -0
  116. package/dist/config/keychain.d.ts +14 -0
  117. package/dist/config/keychain.d.ts.map +1 -0
  118. package/dist/config/keychain.js +89 -0
  119. package/dist/config/keychain.js.map +1 -0
  120. package/dist/config/load-apps.d.ts +16 -0
  121. package/dist/config/load-apps.d.ts.map +1 -0
  122. package/dist/config/load-apps.js +38 -0
  123. package/dist/config/load-apps.js.map +1 -0
  124. package/dist/config/schema.d.ts +306 -0
  125. package/dist/config/schema.d.ts.map +1 -0
  126. package/dist/config/schema.js +220 -0
  127. package/dist/config/schema.js.map +1 -0
  128. package/dist/config/store.d.ts +38 -0
  129. package/dist/config/store.d.ts.map +1 -0
  130. package/dist/config/store.js +180 -0
  131. package/dist/config/store.js.map +1 -0
  132. package/dist/db/queries.d.ts +304 -0
  133. package/dist/db/queries.d.ts.map +1 -0
  134. package/dist/db/queries.js +327 -0
  135. package/dist/db/queries.js.map +1 -0
  136. package/dist/db/schema.d.ts +15 -0
  137. package/dist/db/schema.d.ts.map +1 -0
  138. package/dist/db/schema.js +252 -0
  139. package/dist/db/schema.js.map +1 -0
  140. package/dist/index.d.ts +3 -0
  141. package/dist/index.d.ts.map +1 -0
  142. package/dist/index.js +86 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/messenger/adapter.d.ts +63 -0
  145. package/dist/messenger/adapter.d.ts.map +1 -0
  146. package/dist/messenger/adapter.js +7 -0
  147. package/dist/messenger/adapter.js.map +1 -0
  148. package/dist/messenger/factory.d.ts +12 -0
  149. package/dist/messenger/factory.d.ts.map +1 -0
  150. package/dist/messenger/factory.js +9 -0
  151. package/dist/messenger/factory.js.map +1 -0
  152. package/dist/messenger/slack.d.ts +30 -0
  153. package/dist/messenger/slack.d.ts.map +1 -0
  154. package/dist/messenger/slack.js +309 -0
  155. package/dist/messenger/slack.js.map +1 -0
  156. package/dist/messenger/split.d.ts +17 -0
  157. package/dist/messenger/split.d.ts.map +1 -0
  158. package/dist/messenger/split.js +56 -0
  159. package/dist/messenger/split.js.map +1 -0
  160. package/dist/orchestrator/dashboard.d.ts +67 -0
  161. package/dist/orchestrator/dashboard.d.ts.map +1 -0
  162. package/dist/orchestrator/dashboard.js +113 -0
  163. package/dist/orchestrator/dashboard.js.map +1 -0
  164. package/dist/orchestrator/monitor.d.ts +37 -0
  165. package/dist/orchestrator/monitor.d.ts.map +1 -0
  166. package/dist/orchestrator/monitor.js +236 -0
  167. package/dist/orchestrator/monitor.js.map +1 -0
  168. package/dist/orchestrator/types.d.ts +82 -0
  169. package/dist/orchestrator/types.d.ts.map +1 -0
  170. package/dist/orchestrator/types.js +12 -0
  171. package/dist/orchestrator/types.js.map +1 -0
  172. package/dist/orchestrator/weekly.d.ts +66 -0
  173. package/dist/orchestrator/weekly.d.ts.map +1 -0
  174. package/dist/orchestrator/weekly.js +376 -0
  175. package/dist/orchestrator/weekly.js.map +1 -0
  176. package/dist/prompts/loader.d.ts +18 -0
  177. package/dist/prompts/loader.d.ts.map +1 -0
  178. package/dist/prompts/loader.js +28 -0
  179. package/dist/prompts/loader.js.map +1 -0
  180. package/dist/security/auth.d.ts +14 -0
  181. package/dist/security/auth.d.ts.map +1 -0
  182. package/dist/security/auth.js +14 -0
  183. package/dist/security/auth.js.map +1 -0
  184. package/dist/security/prompt-guard.d.ts +21 -0
  185. package/dist/security/prompt-guard.d.ts.map +1 -0
  186. package/dist/security/prompt-guard.js +54 -0
  187. package/dist/security/prompt-guard.js.map +1 -0
  188. package/dist/skills/aso.d.ts +60 -0
  189. package/dist/skills/aso.d.ts.map +1 -0
  190. package/dist/skills/aso.js +322 -0
  191. package/dist/skills/aso.js.map +1 -0
  192. package/dist/skills/content.d.ts +25 -0
  193. package/dist/skills/content.d.ts.map +1 -0
  194. package/dist/skills/content.js +90 -0
  195. package/dist/skills/content.js.map +1 -0
  196. package/dist/skills/index.d.ts +65 -0
  197. package/dist/skills/index.d.ts.map +1 -0
  198. package/dist/skills/index.js +90 -0
  199. package/dist/skills/index.js.map +1 -0
  200. package/dist/skills/onboarding.d.ts +58 -0
  201. package/dist/skills/onboarding.d.ts.map +1 -0
  202. package/dist/skills/onboarding.js +274 -0
  203. package/dist/skills/onboarding.js.map +1 -0
  204. package/dist/skills/registry.d.ts +24 -0
  205. package/dist/skills/registry.d.ts.map +1 -0
  206. package/dist/skills/registry.js +66 -0
  207. package/dist/skills/registry.js.map +1 -0
  208. package/dist/skills/review.d.ts +33 -0
  209. package/dist/skills/review.d.ts.map +1 -0
  210. package/dist/skills/review.js +236 -0
  211. package/dist/skills/review.js.map +1 -0
  212. package/dist/skills/sdk-request.d.ts +30 -0
  213. package/dist/skills/sdk-request.d.ts.map +1 -0
  214. package/dist/skills/sdk-request.js +72 -0
  215. package/dist/skills/sdk-request.js.map +1 -0
  216. package/dist/skills/seo-blog.d.ts +64 -0
  217. package/dist/skills/seo-blog.d.ts.map +1 -0
  218. package/dist/skills/seo-blog.js +268 -0
  219. package/dist/skills/seo-blog.js.map +1 -0
  220. package/dist/skills/short-form.d.ts +28 -0
  221. package/dist/skills/short-form.d.ts.map +1 -0
  222. package/dist/skills/short-form.js +121 -0
  223. package/dist/skills/short-form.js.map +1 -0
  224. package/dist/skills/social-publish.d.ts +32 -0
  225. package/dist/skills/social-publish.d.ts.map +1 -0
  226. package/dist/skills/social-publish.js +133 -0
  227. package/dist/skills/social-publish.js.map +1 -0
  228. package/dist/social/base.d.ts +47 -0
  229. package/dist/social/base.d.ts.map +1 -0
  230. package/dist/social/base.js +26 -0
  231. package/dist/social/base.js.map +1 -0
  232. package/dist/social/facebook.d.ts +27 -0
  233. package/dist/social/facebook.d.ts.map +1 -0
  234. package/dist/social/facebook.js +166 -0
  235. package/dist/social/facebook.js.map +1 -0
  236. package/dist/social/factory.d.ts +26 -0
  237. package/dist/social/factory.d.ts.map +1 -0
  238. package/dist/social/factory.js +32 -0
  239. package/dist/social/factory.js.map +1 -0
  240. package/dist/social/linkedin.d.ts +26 -0
  241. package/dist/social/linkedin.d.ts.map +1 -0
  242. package/dist/social/linkedin.js +190 -0
  243. package/dist/social/linkedin.js.map +1 -0
  244. package/dist/social/threads.d.ts +21 -0
  245. package/dist/social/threads.d.ts.map +1 -0
  246. package/dist/social/threads.js +122 -0
  247. package/dist/social/threads.js.map +1 -0
  248. package/dist/social/tiktok.d.ts +23 -0
  249. package/dist/social/tiktok.d.ts.map +1 -0
  250. package/dist/social/tiktok.js +110 -0
  251. package/dist/social/tiktok.js.map +1 -0
  252. package/dist/social/twitter.d.ts +30 -0
  253. package/dist/social/twitter.d.ts.map +1 -0
  254. package/dist/social/twitter.js +189 -0
  255. package/dist/social/twitter.js.map +1 -0
  256. package/dist/social/youtube.d.ts +21 -0
  257. package/dist/social/youtube.d.ts.map +1 -0
  258. package/dist/social/youtube.js +108 -0
  259. package/dist/social/youtube.js.map +1 -0
  260. package/dist/tools/app-info.d.ts +7 -0
  261. package/dist/tools/app-info.d.ts.map +1 -0
  262. package/dist/tools/app-info.js +53 -0
  263. package/dist/tools/app-info.js.map +1 -0
  264. package/dist/tools/collector-fetch.d.ts +11 -0
  265. package/dist/tools/collector-fetch.d.ts.map +1 -0
  266. package/dist/tools/collector-fetch.js +101 -0
  267. package/dist/tools/collector-fetch.js.map +1 -0
  268. package/dist/tools/db-query.d.ts +29 -0
  269. package/dist/tools/db-query.d.ts.map +1 -0
  270. package/dist/tools/db-query.js +159 -0
  271. package/dist/tools/db-query.js.map +1 -0
  272. package/dist/tools/skill-result.d.ts +8 -0
  273. package/dist/tools/skill-result.d.ts.map +1 -0
  274. package/dist/tools/skill-result.js +63 -0
  275. package/dist/tools/skill-result.js.map +1 -0
  276. package/dist/tools/tool-host.d.ts +12 -0
  277. package/dist/tools/tool-host.d.ts.map +1 -0
  278. package/dist/tools/tool-host.js +124 -0
  279. package/dist/tools/tool-host.js.map +1 -0
  280. package/dist/types/collectors.d.ts +198 -0
  281. package/dist/types/collectors.d.ts.map +1 -0
  282. package/dist/types/collectors.js +28 -0
  283. package/dist/types/collectors.js.map +1 -0
  284. package/dist/types/skill.d.ts +60 -0
  285. package/dist/types/skill.d.ts.map +1 -0
  286. package/dist/types/skill.js +9 -0
  287. package/dist/types/skill.js.map +1 -0
  288. package/dist/utils/circuit-breaker.d.ts +26 -0
  289. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  290. package/dist/utils/circuit-breaker.js +67 -0
  291. package/dist/utils/circuit-breaker.js.map +1 -0
  292. package/dist/utils/errors.d.ts +44 -0
  293. package/dist/utils/errors.d.ts.map +1 -0
  294. package/dist/utils/errors.js +75 -0
  295. package/dist/utils/errors.js.map +1 -0
  296. package/dist/utils/escape.d.ts +11 -0
  297. package/dist/utils/escape.d.ts.map +1 -0
  298. package/dist/utils/escape.js +19 -0
  299. package/dist/utils/escape.js.map +1 -0
  300. package/dist/utils/logger.d.ts +19 -0
  301. package/dist/utils/logger.d.ts.map +1 -0
  302. package/dist/utils/logger.js +93 -0
  303. package/dist/utils/logger.js.map +1 -0
  304. package/dist/utils/parse-json.d.ts +13 -0
  305. package/dist/utils/parse-json.d.ts.map +1 -0
  306. package/dist/utils/parse-json.js +61 -0
  307. package/dist/utils/parse-json.js.map +1 -0
  308. package/dist/utils/paths.d.ts +14 -0
  309. package/dist/utils/paths.d.ts.map +1 -0
  310. package/dist/utils/paths.js +19 -0
  311. package/dist/utils/paths.js.map +1 -0
  312. package/dist/utils/rate-limiter.d.ts +20 -0
  313. package/dist/utils/rate-limiter.d.ts.map +1 -0
  314. package/dist/utils/rate-limiter.js +47 -0
  315. package/dist/utils/rate-limiter.js.map +1 -0
  316. package/dist/utils/retry.d.ts +26 -0
  317. package/dist/utils/retry.d.ts.map +1 -0
  318. package/dist/utils/retry.js +61 -0
  319. package/dist/utils/retry.js.map +1 -0
  320. package/launchd/.gitkeep +0 -0
  321. package/launchd/com.adaria-ai.daemon.plist.template +62 -0
  322. package/launchd/com.adaria-ai.monitor.plist.template +41 -0
  323. package/launchd/com.adaria-ai.weekly.plist.template +43 -0
  324. package/package.json +72 -0
  325. package/prompts/aso-description.md +44 -0
  326. package/prompts/aso-inapp-events.md +20 -0
  327. package/prompts/aso-metadata.md +34 -0
  328. package/prompts/aso-screenshots.md +20 -0
  329. package/prompts/onboarding-hypotheses.md +38 -0
  330. package/prompts/onboarding-review-timing.md +24 -0
  331. package/prompts/review-clustering.md +19 -0
  332. package/prompts/review-replies.md +18 -0
  333. package/prompts/review-sentiment.md +16 -0
  334. package/prompts/seo-blog-fridgify-recipe.md +116 -0
  335. package/prompts/seo-blog.md +69 -0
  336. package/prompts/short-form-ideas.md +50 -0
  337. package/prompts/social-publish.md +46 -0
@@ -0,0 +1,459 @@
1
+ /**
2
+ * `adaria-ai init` — modular interactive setup wizard.
3
+ *
4
+ * Supports both full setup and individual section setup:
5
+ * adaria-ai init — full guided setup (all sections)
6
+ * adaria-ai init slack — Slack credentials only
7
+ * adaria-ai init collectors — data collector credentials only
8
+ * adaria-ai init social — social media platform credentials only
9
+ *
10
+ * When re-running a section, the wizard merges with the existing config
11
+ * instead of overwriting the entire file. Secrets are stored in the
12
+ * macOS Keychain; YAML keeps the sentinel `***keychain***`.
13
+ */
14
+ import inquirer from "inquirer";
15
+ import { configSchema, KEYCHAIN_KEYS, KEYCHAIN_SENTINEL, } from "../config/schema.js";
16
+ import { configExists, loadRawConfig, saveConfig } from "../config/store.js";
17
+ import { setSecret } from "../config/keychain.js";
18
+ import { APPS_PATH, CONFIG_PATH } from "../utils/paths.js";
19
+ const ALL_SECTIONS = ["slack", "collectors", "social"];
20
+ async function askSlack() {
21
+ console.log("\n--- Slack ---");
22
+ console.log("Get tokens from https://api.slack.com/apps > your app:");
23
+ console.log(" Bot Token: OAuth & Permissions > Bot User OAuth Token (xoxb-...)");
24
+ console.log(" App Token: Basic Information > App-Level Tokens > Generate (xapp-...)");
25
+ console.log(" Signing Secret: Basic Information > App Credentials > Signing Secret");
26
+ console.log(" User ID: Slack > click your profile > '...' > Copy member ID\n");
27
+ return inquirer.prompt([
28
+ {
29
+ type: "password",
30
+ name: "botToken",
31
+ message: "Slack bot token (xoxb-…):",
32
+ mask: "*",
33
+ validate: (v) => v.startsWith("xoxb-") || "Slack bot tokens start with 'xoxb-'",
34
+ },
35
+ {
36
+ type: "password",
37
+ name: "appToken",
38
+ message: "Slack app token (xapp-…):",
39
+ mask: "*",
40
+ validate: (v) => v.startsWith("xapp-") || "Slack app tokens start with 'xapp-'",
41
+ },
42
+ {
43
+ type: "password",
44
+ name: "signingSecret",
45
+ message: "Slack signing secret:",
46
+ mask: "*",
47
+ validate: (v) => v.length > 0 || "Signing secret cannot be empty",
48
+ },
49
+ {
50
+ type: "input",
51
+ name: "allowedUser",
52
+ message: "Allowlisted Slack user ID (U…):",
53
+ validate: (v) => /^U[A-Z0-9]+$/.test(v) ||
54
+ "Slack user IDs start with 'U' and contain uppercase letters and digits",
55
+ },
56
+ {
57
+ type: "input",
58
+ name: "briefingChannel",
59
+ message: "Briefing channel for weekly reports (e.g. #growth):",
60
+ default: "",
61
+ },
62
+ ]);
63
+ }
64
+ async function applySlack(config) {
65
+ const slack = await askSlack();
66
+ await setSecret(KEYCHAIN_KEYS.slackBotToken, slack.botToken);
67
+ await setSecret(KEYCHAIN_KEYS.slackAppToken, slack.appToken);
68
+ await setSecret(KEYCHAIN_KEYS.slackSigningSecret, slack.signingSecret);
69
+ const agent = {
70
+ showThinking: true,
71
+ weeklyTimeoutMs: 900_000,
72
+ ...(config.agent ?? {}),
73
+ };
74
+ if (slack.briefingChannel.trim().length > 0) {
75
+ agent.briefingChannel = slack.briefingChannel.trim();
76
+ }
77
+ return {
78
+ ...config,
79
+ slack: {
80
+ botToken: KEYCHAIN_SENTINEL,
81
+ appToken: KEYCHAIN_SENTINEL,
82
+ signingSecret: KEYCHAIN_SENTINEL,
83
+ },
84
+ security: {
85
+ ...(config.security ?? {}),
86
+ allowedUsers: [
87
+ ...new Set([
88
+ slack.allowedUser,
89
+ ...(config.security?.["allowedUsers"] ?? []),
90
+ ]),
91
+ ],
92
+ dmOnly: false,
93
+ auditLog: { enabled: true, maskSecrets: true },
94
+ },
95
+ agent,
96
+ };
97
+ }
98
+ async function askAppStore() {
99
+ const answers = await inquirer.prompt([
100
+ { type: "input", name: "keyId", message: "Key ID:", validate: (v) => v.length > 0 || "Required" },
101
+ { type: "input", name: "issuerId", message: "Issuer ID:", validate: (v) => v.length > 0 || "Required" },
102
+ {
103
+ type: "editor",
104
+ name: "privateKey",
105
+ message: "Private key (paste PKCS#8 PEM, editor will open):",
106
+ validate: (v) => v.includes("BEGIN PRIVATE KEY") || "Expected PEM block",
107
+ },
108
+ ]);
109
+ await setSecret(KEYCHAIN_KEYS.appStorePrivateKey, answers.privateKey);
110
+ return { keyId: answers.keyId, issuerId: answers.issuerId, privateKey: KEYCHAIN_SENTINEL };
111
+ }
112
+ async function askPlayStore() {
113
+ const { serviceAccountJson } = await inquirer.prompt([
114
+ {
115
+ type: "editor",
116
+ name: "serviceAccountJson",
117
+ message: "Service account JSON (paste full file, editor will open):",
118
+ validate: (v) => {
119
+ try {
120
+ const p = JSON.parse(v);
121
+ return typeof p === "object" && p !== null && "client_email" in p && "private_key" in p
122
+ ? true : "JSON must include client_email and private_key";
123
+ }
124
+ catch {
125
+ return "Must be valid JSON";
126
+ }
127
+ },
128
+ },
129
+ ]);
130
+ await setSecret(KEYCHAIN_KEYS.playStoreServiceAccount, serviceAccountJson);
131
+ return { serviceAccountJson: KEYCHAIN_SENTINEL };
132
+ }
133
+ async function askSecret(label, keychainKey) {
134
+ const { value } = await inquirer.prompt([
135
+ { type: "password", name: "value", message: `${label} key/token:`, mask: "*", validate: (v) => v.length > 0 || "Required" },
136
+ ]);
137
+ await setSecret(keychainKey, value);
138
+ return KEYCHAIN_SENTINEL;
139
+ }
140
+ async function askArdenTts() {
141
+ const { endpoint } = await inquirer.prompt([
142
+ {
143
+ type: "input",
144
+ name: "endpoint",
145
+ message: "Arden TTS endpoint URL:",
146
+ validate: (v) => {
147
+ try {
148
+ const p = new URL(v.trim());
149
+ return p.protocol === "http:" || p.protocol === "https:" ? true : "Must use http(s)";
150
+ }
151
+ catch {
152
+ return "Must be a valid URL";
153
+ }
154
+ },
155
+ },
156
+ ]);
157
+ return { endpoint: endpoint.trim() };
158
+ }
159
+ const COLLECTOR_CHOICES = [
160
+ { name: "App Store Connect", value: "appStore", hint: "iOS ASO + reviews — appstoreconnect.apple.com > Keys" },
161
+ { name: "Google Play", value: "playStore", hint: "Android reviews — console.cloud.google.com > Service Accounts" },
162
+ { name: "Eodin SDK", value: "eodinSdk", hint: "installs / funnel / cohort — Eodin dashboard > API Keys" },
163
+ { name: "Eodin Growth", value: "eodinGrowth", hint: "blog / SEO / GA4 — GROWTH_AGENT_TOKEN" },
164
+ { name: "ASOMobile", value: "asoMobile", hint: "keyword rankings — asomobile.net > Settings > API" },
165
+ { name: "YouTube Data API", value: "youtube", hint: "Shorts performance — console.cloud.google.com > YouTube API" },
166
+ { name: "Arden TTS", value: "ardenTts", hint: "voiceover — your self-hosted endpoint URL" },
167
+ ];
168
+ async function applyCollectors(config) {
169
+ console.log("\n--- Data Collectors ---");
170
+ console.log("Select the data sources you want to configure.");
171
+ console.log("You can add more later with `adaria-ai init collectors`.\n");
172
+ const existing = (config.collectors ?? {});
173
+ const alreadyConfigured = Object.keys(existing).filter((k) => existing[k] != null);
174
+ const { selected } = await inquirer.prompt([
175
+ {
176
+ type: "checkbox",
177
+ name: "selected",
178
+ message: "Which collectors do you want to configure? (space to toggle, enter to confirm)",
179
+ choices: COLLECTOR_CHOICES.map((c) => ({
180
+ name: `${c.name} — ${c.hint}`,
181
+ value: c.value,
182
+ checked: alreadyConfigured.includes(c.value),
183
+ })),
184
+ },
185
+ ]);
186
+ const draft = { ...existing };
187
+ for (const choice of selected) {
188
+ // Skip if already configured and not re-selected
189
+ if (existing[choice] && alreadyConfigured.includes(choice)) {
190
+ const { reconfigure } = await inquirer.prompt([
191
+ { type: "confirm", name: "reconfigure", message: `${choice} is already configured. Reconfigure?`, default: false },
192
+ ]);
193
+ if (!reconfigure)
194
+ continue;
195
+ }
196
+ console.log(`\nConfiguring ${COLLECTOR_CHOICES.find((c) => c.value === choice)?.name ?? choice}...`);
197
+ switch (choice) {
198
+ case "appStore": {
199
+ const r = await askAppStore();
200
+ if (r)
201
+ draft.appStore = r;
202
+ break;
203
+ }
204
+ case "playStore": {
205
+ const r = await askPlayStore();
206
+ if (r)
207
+ draft.playStore = r;
208
+ break;
209
+ }
210
+ case "eodinSdk":
211
+ draft.eodinSdk = { apiKey: await askSecret("Eodin SDK API key", KEYCHAIN_KEYS.eodinSdkApiKey) };
212
+ break;
213
+ case "eodinGrowth":
214
+ draft.eodinGrowth = { token: await askSecret("Eodin Growth token", KEYCHAIN_KEYS.eodinGrowthToken) };
215
+ break;
216
+ case "asoMobile":
217
+ draft.asoMobile = { apiKey: await askSecret("ASOMobile API key", KEYCHAIN_KEYS.asoMobileApiKey) };
218
+ break;
219
+ case "youtube":
220
+ draft.youtube = { apiKey: await askSecret("YouTube API key", KEYCHAIN_KEYS.youtubeApiKey) };
221
+ break;
222
+ case "ardenTts":
223
+ draft.ardenTts = await askArdenTts();
224
+ break;
225
+ }
226
+ }
227
+ return { ...config, collectors: draft };
228
+ }
229
+ async function askTwitter() {
230
+ const answers = await inquirer.prompt([
231
+ { type: "password", name: "apiKey", message: "API Key:", mask: "*", validate: (v) => v.length > 0 || "Required" },
232
+ { type: "password", name: "apiSecret", message: "API Secret:", mask: "*", validate: (v) => v.length > 0 || "Required" },
233
+ { type: "password", name: "accessToken", message: "Access Token:", mask: "*", validate: (v) => v.length > 0 || "Required" },
234
+ { type: "password", name: "accessTokenSecret", message: "Access Token Secret:", mask: "*", validate: (v) => v.length > 0 || "Required" },
235
+ ]);
236
+ await setSecret(KEYCHAIN_KEYS.twitterApiKey, answers.apiKey);
237
+ await setSecret(KEYCHAIN_KEYS.twitterApiSecret, answers.apiSecret);
238
+ await setSecret(KEYCHAIN_KEYS.twitterAccessToken, answers.accessToken);
239
+ await setSecret(KEYCHAIN_KEYS.twitterAccessTokenSecret, answers.accessTokenSecret);
240
+ return { apiKey: KEYCHAIN_SENTINEL, apiSecret: KEYCHAIN_SENTINEL, accessToken: KEYCHAIN_SENTINEL, accessTokenSecret: KEYCHAIN_SENTINEL };
241
+ }
242
+ async function askFacebook() {
243
+ const answers = await inquirer.prompt([
244
+ { type: "input", name: "appId", message: "App ID:", validate: (v) => v.length > 0 || "Required" },
245
+ { type: "password", name: "appSecret", message: "App Secret:", mask: "*", validate: (v) => v.length > 0 || "Required" },
246
+ { type: "password", name: "accessToken", message: "User Access Token:", mask: "*", validate: (v) => v.length > 0 || "Required" },
247
+ { type: "input", name: "pageId", message: "Page ID:", validate: (v) => v.length > 0 || "Required" },
248
+ ]);
249
+ await setSecret(KEYCHAIN_KEYS.facebookAppSecret, answers.appSecret);
250
+ await setSecret(KEYCHAIN_KEYS.facebookAccessToken, answers.accessToken);
251
+ return { appId: answers.appId, appSecret: KEYCHAIN_SENTINEL, accessToken: KEYCHAIN_SENTINEL, pageId: answers.pageId };
252
+ }
253
+ async function askThreads() {
254
+ const answers = await inquirer.prompt([
255
+ { type: "password", name: "accessToken", message: "Access Token:", mask: "*", validate: (v) => v.length > 0 || "Required" },
256
+ { type: "input", name: "userId", message: "User ID:", validate: (v) => v.length > 0 || "Required" },
257
+ ]);
258
+ await setSecret(KEYCHAIN_KEYS.threadsAccessToken, answers.accessToken);
259
+ return { accessToken: KEYCHAIN_SENTINEL, userId: answers.userId };
260
+ }
261
+ async function askTikTok() {
262
+ const answers = await inquirer.prompt([
263
+ { type: "input", name: "clientKey", message: "Client Key:", validate: (v) => v.length > 0 || "Required" },
264
+ { type: "password", name: "clientSecret", message: "Client Secret:", mask: "*", validate: (v) => v.length > 0 || "Required" },
265
+ { type: "password", name: "accessToken", message: "Access Token:", mask: "*", validate: (v) => v.length > 0 || "Required" },
266
+ ]);
267
+ await setSecret(KEYCHAIN_KEYS.tiktokClientSecret, answers.clientSecret);
268
+ await setSecret(KEYCHAIN_KEYS.tiktokAccessToken, answers.accessToken);
269
+ return { clientKey: answers.clientKey, clientSecret: KEYCHAIN_SENTINEL, accessToken: KEYCHAIN_SENTINEL };
270
+ }
271
+ async function askYouTubeSocial() {
272
+ const answers = await inquirer.prompt([
273
+ { type: "password", name: "accessToken", message: "OAuth Access Token:", mask: "*", validate: (v) => v.length > 0 || "Required" },
274
+ { type: "input", name: "channelId", message: "Channel ID (UC…):", validate: (v) => v.length > 0 || "Required" },
275
+ ]);
276
+ await setSecret(KEYCHAIN_KEYS.youtubeAccessToken, answers.accessToken);
277
+ return { accessToken: KEYCHAIN_SENTINEL, channelId: answers.channelId };
278
+ }
279
+ async function askLinkedIn() {
280
+ const answers = await inquirer.prompt([
281
+ { type: "password", name: "accessToken", message: "Access Token:", mask: "*", validate: (v) => v.length > 0 || "Required" },
282
+ { type: "input", name: "organizationId", message: "Organization ID:", validate: (v) => v.length > 0 || "Required" },
283
+ ]);
284
+ await setSecret(KEYCHAIN_KEYS.linkedinAccessToken, answers.accessToken);
285
+ return { accessToken: KEYCHAIN_SENTINEL, organizationId: answers.organizationId };
286
+ }
287
+ const SOCIAL_CHOICES = [
288
+ { name: "Twitter/X", value: "twitter", hint: "developer.twitter.com > Keys and Tokens" },
289
+ { name: "Facebook", value: "facebook", hint: "developers.facebook.com > App Dashboard" },
290
+ { name: "Threads", value: "threads", hint: "developers.facebook.com > Threads API" },
291
+ { name: "TikTok", value: "tiktok", hint: "developers.tiktok.com (requires app review)" },
292
+ { name: "YouTube Community", value: "youtube", hint: "console.cloud.google.com > OAuth 2.0" },
293
+ { name: "LinkedIn", value: "linkedin", hint: "developer.linkedin.com > My Apps > Auth" },
294
+ ];
295
+ async function applySocial(config) {
296
+ console.log("\n--- Social Media Platforms ---");
297
+ console.log("Select platforms for automated marketing posts.\n");
298
+ const existing = (config.social ?? {});
299
+ const alreadyConfigured = Object.keys(existing).filter((k) => existing[k] != null);
300
+ const { selected } = await inquirer.prompt([
301
+ {
302
+ type: "checkbox",
303
+ name: "selected",
304
+ message: "Which social platforms? (space to toggle, enter to confirm)",
305
+ choices: SOCIAL_CHOICES.map((c) => ({
306
+ name: `${c.name} — ${c.hint}`,
307
+ value: c.value,
308
+ checked: alreadyConfigured.includes(c.value),
309
+ })),
310
+ },
311
+ ]);
312
+ const draft = { ...existing };
313
+ for (const choice of selected) {
314
+ if (existing[choice] && alreadyConfigured.includes(choice)) {
315
+ const { reconfigure } = await inquirer.prompt([
316
+ { type: "confirm", name: "reconfigure", message: `${choice} is already configured. Reconfigure?`, default: false },
317
+ ]);
318
+ if (!reconfigure)
319
+ continue;
320
+ }
321
+ const label = SOCIAL_CHOICES.find((c) => c.value === choice)?.name ?? choice;
322
+ console.log(`\nConfiguring ${label}...`);
323
+ switch (choice) {
324
+ case "twitter":
325
+ draft.twitter = await askTwitter();
326
+ break;
327
+ case "facebook":
328
+ draft.facebook = await askFacebook();
329
+ break;
330
+ case "threads":
331
+ draft.threads = await askThreads();
332
+ break;
333
+ case "tiktok":
334
+ draft.tiktok = await askTikTok();
335
+ break;
336
+ case "youtube":
337
+ draft.youtube = await askYouTubeSocial();
338
+ break;
339
+ case "linkedin":
340
+ draft.linkedin = await askLinkedIn();
341
+ break;
342
+ }
343
+ }
344
+ return { ...config, social: draft };
345
+ }
346
+ // ---------------------------------------------------------------------------
347
+ // Summary
348
+ // ---------------------------------------------------------------------------
349
+ function printSummary(config) {
350
+ console.log("\n========================================");
351
+ console.log(" Setup Summary");
352
+ console.log("========================================\n");
353
+ // Slack
354
+ const slackOk = config.slack.botToken === KEYCHAIN_SENTINEL;
355
+ console.log(`Slack: ${slackOk ? "\u2705 configured" : "\u274c missing"}`);
356
+ console.log(` Channel: ${config.agent.briefingChannel ?? "(not set)"}`);
357
+ console.log(` Allowlist: ${String(config.security.allowedUsers.length)} user(s)`);
358
+ // Collectors
359
+ const c = config.collectors;
360
+ console.log("\nData Collectors:");
361
+ console.log(` App Store Connect: ${c.appStore ? "\u2705" : "\u2013"}`);
362
+ console.log(` Google Play: ${c.playStore ? "\u2705" : "\u2013"}`);
363
+ console.log(` ASOMobile: ${c.asoMobile ? "\u2705" : "\u2013"}`);
364
+ console.log(` Eodin SDK: ${c.eodinSdk ? "\u2705" : "\u2013"}`);
365
+ console.log(` Eodin Growth: ${c.eodinGrowth ? "\u2705" : "\u2013"}`);
366
+ console.log(` YouTube: ${c.youtube ? "\u2705" : "\u2013"}`);
367
+ console.log(` Arden TTS: ${c.ardenTts ? "\u2705" : "\u2013"}`);
368
+ // Social
369
+ const s = config.social;
370
+ console.log("\nSocial Platforms:");
371
+ console.log(` Twitter/X: ${s.twitter ? "\u2705" : "\u2013"}`);
372
+ console.log(` Facebook: ${s.facebook ? "\u2705" : "\u2013"}`);
373
+ console.log(` Threads: ${s.threads ? "\u2705" : "\u2013"}`);
374
+ console.log(` TikTok: ${s.tiktok ? "\u2705" : "\u2013"}`);
375
+ console.log(` YouTube Community: ${s.youtube ? "\u2705" : "\u2013"}`);
376
+ console.log(` LinkedIn: ${s.linkedin ? "\u2705" : "\u2013"}`);
377
+ console.log("\n========================================\n");
378
+ }
379
+ function printNextSteps() {
380
+ console.log("Next steps:");
381
+ console.log(` 1. Edit ${APPS_PATH} with your app portfolio`);
382
+ console.log(" (copy apps.example.yaml from the repo root as a starting point)");
383
+ console.log(" 2. adaria-ai doctor # verify all credentials");
384
+ console.log(" 3. adaria-ai start # load daemon + cron plists");
385
+ console.log("");
386
+ console.log("To add or update a specific section later:");
387
+ console.log(" adaria-ai init slack # Slack credentials");
388
+ console.log(" adaria-ai init collectors # data collector API keys");
389
+ console.log(" adaria-ai init social # social media platforms");
390
+ }
391
+ // ---------------------------------------------------------------------------
392
+ // Main entry
393
+ // ---------------------------------------------------------------------------
394
+ export async function runInit(section) {
395
+ const sections = section ? [section] : ALL_SECTIONS;
396
+ if (!section) {
397
+ console.log("adaria-ai init \u2014 interactive setup\n");
398
+ }
399
+ else {
400
+ console.log(`adaria-ai init ${section}\n`);
401
+ }
402
+ // Load existing config if available (for merge), otherwise start fresh
403
+ let config = {};
404
+ if (await configExists()) {
405
+ try {
406
+ config = await loadRawConfig();
407
+ if (!section) {
408
+ console.log(`Existing config at ${CONFIG_PATH} will be merged.\n`);
409
+ }
410
+ }
411
+ catch {
412
+ console.log(`Existing config at ${CONFIG_PATH} could not be parsed. Starting fresh.\n`);
413
+ }
414
+ }
415
+ else {
416
+ if (!section) {
417
+ console.log(`Config will be written to ${CONFIG_PATH}.\n`);
418
+ }
419
+ }
420
+ // Apply requested sections
421
+ for (const s of sections) {
422
+ switch (s) {
423
+ case "slack":
424
+ config = await applySlack(config);
425
+ break;
426
+ case "collectors":
427
+ config = await applyCollectors(config);
428
+ break;
429
+ case "social":
430
+ config = await applySocial(config);
431
+ break;
432
+ }
433
+ }
434
+ // Guard: section-only init on a fresh install requires Slack first
435
+ if (section && !config.slack) {
436
+ console.error(`\nSlack is not configured yet. Run "adaria-ai init slack" first,` +
437
+ ` or "adaria-ai init" for full setup.`);
438
+ process.exitCode = 1;
439
+ return;
440
+ }
441
+ // Ensure required defaults exist
442
+ if (!config.claude) {
443
+ config.claude = { mode: "cli", cliBinary: "claude", apiKey: null, timeoutMs: 120_000 };
444
+ }
445
+ if (!config.safety) {
446
+ config.safety = { dangerousActionsRequireApproval: true, approvalTimeoutMinutes: 30 };
447
+ }
448
+ if (!config.agent) {
449
+ config.agent = { showThinking: true, weeklyTimeoutMs: 900_000 };
450
+ }
451
+ // Validate and save
452
+ const validated = configSchema.parse(config);
453
+ await saveConfig(validated);
454
+ console.log(`\nConfig written to ${CONFIG_PATH}`);
455
+ console.log("Secrets stored in macOS Keychain.");
456
+ printSummary(validated);
457
+ printNextSteps();
458
+ }
459
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function runLogs(options?: {
2
+ follow?: boolean;
3
+ }): Promise<void>;
4
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/cli/logs.ts"],"names":[],"mappings":"AAuBA,wBAAsB,OAAO,CAC3B,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
@@ -0,0 +1,50 @@
1
+ import { spawn } from "node:child_process";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { LOGS_DIR } from "../utils/paths.js";
5
+ function todayLogPath() {
6
+ const today = new Date().toISOString().slice(0, 10);
7
+ return path.join(LOGS_DIR, `adaria-${today}.log`);
8
+ }
9
+ async function findMostRecentLog() {
10
+ try {
11
+ const entries = await fs.readdir(LOGS_DIR);
12
+ const adariaLogs = entries
13
+ .filter((name) => name.startsWith("adaria-") && name.endsWith(".log"))
14
+ .sort();
15
+ const newest = adariaLogs.at(-1);
16
+ return newest ? path.join(LOGS_DIR, newest) : null;
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ export async function runLogs(options = {}) {
23
+ // Prefer today's log; if it doesn't exist yet (fresh install, before the
24
+ // first event), fall back to the newest `adaria-YYYY-MM-DD.log`.
25
+ let logPath = todayLogPath();
26
+ try {
27
+ await fs.access(logPath);
28
+ }
29
+ catch {
30
+ logPath = await findMostRecentLog();
31
+ }
32
+ if (!logPath) {
33
+ console.log(`No log files found in ${LOGS_DIR}.`);
34
+ return;
35
+ }
36
+ if (options.follow) {
37
+ console.log(`Following ${logPath} (Ctrl+C to stop):\n`);
38
+ const child = spawn("tail", ["-f", logPath], { stdio: "inherit" });
39
+ process.on("SIGINT", () => {
40
+ child.kill();
41
+ process.exit(0);
42
+ });
43
+ return;
44
+ }
45
+ const content = await fs.readFile(logPath, "utf-8");
46
+ const lines = content.split("\n");
47
+ const tail = lines.slice(-50).join("\n");
48
+ console.log(tail);
49
+ }
50
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/cli/logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,SAAS,YAAY;IACnB,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,KAAK,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,UAAU,GAAG,OAAO;aACvB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACrE,IAAI,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,UAAgC,EAAE;IAElC,yEAAyE;IACzE,iEAAiE;IACjE,IAAI,OAAO,GAAkB,YAAY,EAAE,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,MAAM,iBAAiB,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,yBAAyB,QAAQ,GAAG,CAAC,CAAC;QAClD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,sBAAsB,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,KAAK,CAAC,IAAI,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `adaria-ai monitor` — one-shot daily monitor CLI entry.
3
+ *
4
+ * Loads config, initializes DB, runs threshold checks, exits cleanly.
5
+ * Invoked by launchd cron (daily 23:00 UTC) or manually.
6
+ *
7
+ * Named `monitor-cmd.ts` to avoid shadowing `src/orchestrator/monitor.ts`
8
+ * in import paths.
9
+ */
10
+ export declare function runMonitorCmd(): Promise<void>;
11
+ //# sourceMappingURL=monitor-cmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/monitor-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AASH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAiDnD"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * `adaria-ai monitor` — one-shot daily monitor CLI entry.
3
+ *
4
+ * Loads config, initializes DB, runs threshold checks, exits cleanly.
5
+ * Invoked by launchd cron (daily 23:00 UTC) or manually.
6
+ *
7
+ * Named `monitor-cmd.ts` to avoid shadowing `src/orchestrator/monitor.ts`
8
+ * in import paths.
9
+ */
10
+ import { loadConfig } from "../config/store.js";
11
+ import { loadApps } from "../config/load-apps.js";
12
+ import { initDatabase } from "../db/schema.js";
13
+ import { createMessengerAdapter } from "../messenger/factory.js";
14
+ import { runDailyMonitor } from "../orchestrator/monitor.js";
15
+ import * as logger from "../utils/logger.js";
16
+ export async function runMonitorCmd() {
17
+ logger.info("Loading configuration");
18
+ let config;
19
+ try {
20
+ config = await loadConfig();
21
+ }
22
+ catch (err) {
23
+ console.error(`Failed to load config: ${err instanceof Error ? err.message : String(err)}`);
24
+ process.exitCode = 1;
25
+ return;
26
+ }
27
+ let apps;
28
+ try {
29
+ ({ apps } = await loadApps());
30
+ }
31
+ catch (err) {
32
+ console.error(`Failed to load apps.yaml: ${err instanceof Error ? err.message : String(err)}`);
33
+ process.exitCode = 1;
34
+ return;
35
+ }
36
+ const db = initDatabase();
37
+ let messenger;
38
+ try {
39
+ messenger = createMessengerAdapter(config);
40
+ await runDailyMonitor({
41
+ db,
42
+ config,
43
+ apps,
44
+ messenger,
45
+ });
46
+ logger.info("Daily monitor finished successfully");
47
+ }
48
+ catch (err) {
49
+ logger.error(`Daily monitor failed: ${err instanceof Error ? err.message : String(err)}`);
50
+ process.exitCode = 1;
51
+ }
52
+ finally {
53
+ db.close();
54
+ if (messenger) {
55
+ await messenger.stop();
56
+ }
57
+ }
58
+ }
59
+ //# sourceMappingURL=monitor-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitor-cmd.js","sourceRoot":"","sources":["../../src/cli/monitor-cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAErC,IAAI,MAAM,CAAC;IACX,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,0BAA0B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC7E,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,CAAC,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,6BAA6B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAChF,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,MAAM,EAAE,GAAG,YAAY,EAAE,CAAC;IAE1B,IAAI,SAAS,CAAC;IACd,IAAI,CAAC;QACH,SAAS,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAE3C,MAAM,eAAe,CAAC;YACpB,EAAE;YACF,MAAM;YACN,IAAI;YACJ,SAAS;SACV,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CACV,yBAAyB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5E,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const DAEMON_LABEL = "com.adaria-ai.daemon";
2
+ export declare const WEEKLY_LABEL = "com.adaria-ai.weekly";
3
+ export declare const MONITOR_LABEL = "com.adaria-ai.monitor";
4
+ /** All three launchd labels managed by adaria-ai. */
5
+ export declare const ALL_LABELS: readonly ["com.adaria-ai.daemon", "com.adaria-ai.weekly", "com.adaria-ai.monitor"];
6
+ export declare function getPlistPath(label: string): string;
7
+ export declare function getDaemonPlistPath(): string;
8
+ export declare function isLabelLoaded(label: string): Promise<boolean>;
9
+ export declare function isDaemonLoaded(): Promise<boolean>;
10
+ export declare function runStart(): Promise<void>;
11
+ //# sourceMappingURL=start.d.ts.map