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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Woojin Ahn
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,21 @@
1
+ # adaria-ai
2
+
3
+ Single-user marketing operations agent for the Adaria.ai app portfolio (Fridgify, Arden TTS, Tempy). Runs as a macOS launchd daemon, receives commands and free-form questions via Slack, orchestrates data collection from 8 marketing sources, dispatches Claude-powered analysis skills, and delivers weekly briefings with approval-gated write actions.
4
+
5
+ **Status:** pre-release (M0 bootstrap). Not yet published to npm. See [`docs/growth-agent/`](./docs/growth-agent/) for the full plan — start with `prd.md` and `checklist.md`.
6
+
7
+ ## Profiles and safety
8
+
9
+ Every credential the agent uses flows through `adaria-ai init`. The wizard writes `$ADARIA_HOME/config.yaml` and stores secrets in the macOS Keychain under a service prefix derived from `$ADARIA_HOME`, so you can run a **dev profile** and the production daemon side by side on the same machine without either clobbering the other:
10
+
11
+ - **Production** (default): `$HOME/.adaria` — Keychain service `adaria-ai`
12
+ - **Dev profile**: `$HOME/.adaria-dev` — Keychain service `adaria-ai-dev`
13
+
14
+ ```bash
15
+ # 1. Seed a dev profile once with live (or scoped-down) credentials:
16
+ npm run init:dev
17
+ # 2. Exercise every configured collector against real APIs:
18
+ npm run smoke:collectors:dev
19
+ ```
20
+
21
+ Real `config.yaml` and `apps.yaml` files never live inside the repository — they are ignored by Git and sit only under `$HOME/.adaria*`. The `files` field in `package.json` ships only `dist/`, `src/`, `prompts/`, `launchd/`, `apps.example.yaml`, `README.md`, and `LICENSE`, and `npm run prepublishOnly` runs `check:tarball-secrets`, which rips open the candidate tarball and refuses to publish if it finds anything that looks like a Slack token, Anthropic key, Google API key, or PEM private key block.
@@ -0,0 +1,65 @@
1
+ # adaria-ai apps.yaml
2
+ #
3
+ # One entry per app in the portfolio. Skills and orchestrators iterate
4
+ # over every `active: true` app. Copy this file to `~/.adaria/apps.yaml`
5
+ # (or edit the path your `adaria-ai init` printed) and tailor it.
6
+ #
7
+ # Global collector credentials (App Store Connect key pair, Play service
8
+ # account, API keys, tokens) live in `config.yaml.collectors` — NOT
9
+ # here. This file only holds per-app identifiers and metadata.
10
+
11
+ apps:
12
+ - id: fridgify
13
+ name: Fridgify
14
+ platform: [ios, android]
15
+ appStoreId: "123456789"
16
+ playStorePackage: com.eodin.fridgify
17
+ eodinSdkAppId: fridgify
18
+ asoMobileId: "123456789"
19
+ youtubeChannelId: ""
20
+ primaryKeywords:
21
+ - fridge manager
22
+ - food tracker
23
+ - expiry date
24
+ competitors:
25
+ - fridgee
26
+ - grocy
27
+ - myfoodbudget
28
+ locale: [ko, en, ja]
29
+ features:
30
+ fridgifyRecipes: true
31
+ active: true
32
+
33
+ - id: arden
34
+ name: Arden
35
+ platform: [ios, android]
36
+ appStoreId: "987654321"
37
+ playStorePackage: com.eodin.arden
38
+ eodinSdkAppId: arden
39
+ asoMobileId: "987654321"
40
+ youtubeChannelId: ""
41
+ primaryKeywords:
42
+ - tts
43
+ - text to speech
44
+ - voice generator
45
+ competitors:
46
+ - naturalreader
47
+ - speechify
48
+ locale: [ko, en]
49
+ active: true
50
+
51
+ - id: tempy
52
+ name: Tempy
53
+ platform: [ios]
54
+ appStoreId: "111222333"
55
+ eodinSdkAppId: tempy
56
+ asoMobileId: "111222333"
57
+ primaryKeywords:
58
+ - temperature
59
+ - weather widget
60
+ - thermometer
61
+ competitors:
62
+ - weatherbug
63
+ - thermometer++
64
+ locale: [ko, en, ja]
65
+ active: true
@@ -0,0 +1,16 @@
1
+ export interface AuditEntry {
2
+ timestamp?: string;
3
+ type: "command" | "execution" | "result" | "error" | "approval";
4
+ userId?: string;
5
+ platform?: string;
6
+ content: string;
7
+ metadata?: Record<string, unknown>;
8
+ }
9
+ export declare function maskSecrets(text: string): string;
10
+ /**
11
+ * Appends one JSON line to $ADARIA_HOME/audit.jsonl.
12
+ * Creates the file with 0600 on first write; relies on ensureAdariaDir() to
13
+ * have tightened $ADARIA_HOME to 0700 earlier in daemon startup.
14
+ */
15
+ export declare function writeAuditLog(entry: AuditEntry, shouldMask?: boolean): Promise<void>;
16
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/agent/audit.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAUD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAShD;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,UAAU,EACjB,UAAU,UAAO,GAChB,OAAO,CAAC,IAAI,CAAC,CASf"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Append-only audit log at $ADARIA_HOME/audit.jsonl.
3
+ *
4
+ * Every Claude invocation, skill dispatch, approval click, and user-facing
5
+ * error should produce one entry. Secret patterns are masked before write.
6
+ */
7
+ import fs from "node:fs/promises";
8
+ import { AUDIT_PATH } from "../utils/paths.js";
9
+ const SECRET_PATTERNS = [
10
+ /xoxb-[a-zA-Z0-9-]+/g, // Slack bot token
11
+ /xapp-[a-zA-Z0-9-]+/g, // Slack app token
12
+ /ntn_[a-zA-Z0-9]+/g, // Notion API key
13
+ /sk-ant-[a-zA-Z0-9-]+/g, // Anthropic API key
14
+ /sk-[a-zA-Z0-9]{20,}/g, // Generic API key
15
+ ];
16
+ export function maskSecrets(text) {
17
+ let masked = text;
18
+ for (const pattern of SECRET_PATTERNS) {
19
+ masked = masked.replace(pattern, (match) => {
20
+ if (match.length <= 8)
21
+ return "***";
22
+ return match.slice(0, 4) + "***" + match.slice(-4);
23
+ });
24
+ }
25
+ return masked;
26
+ }
27
+ /**
28
+ * Appends one JSON line to $ADARIA_HOME/audit.jsonl.
29
+ * Creates the file with 0600 on first write; relies on ensureAdariaDir() to
30
+ * have tightened $ADARIA_HOME to 0700 earlier in daemon startup.
31
+ */
32
+ export async function writeAuditLog(entry, shouldMask = true) {
33
+ const record = {
34
+ ...entry,
35
+ content: shouldMask ? maskSecrets(entry.content) : entry.content,
36
+ timestamp: entry.timestamp ?? new Date().toISOString(),
37
+ };
38
+ await fs.appendFile(AUDIT_PATH, JSON.stringify(record) + "\n", {
39
+ mode: 0o600,
40
+ });
41
+ }
42
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/agent/audit.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAW/C,MAAM,eAAe,GAAa;IAChC,qBAAqB,EAAE,kBAAkB;IACzC,qBAAqB,EAAE,kBAAkB;IACzC,mBAAmB,EAAE,iBAAiB;IACtC,uBAAuB,EAAE,oBAAoB;IAC7C,sBAAsB,EAAE,kBAAkB;CAC3C,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACpC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAiB,EACjB,UAAU,GAAG,IAAI;IAEjB,MAAM,MAAM,GAAG;QACb,GAAG,KAAK;QACR,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO;QAChE,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACvD,CAAC;IACF,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE;QAC7D,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,62 @@
1
+ import { CircuitBreaker } from "../utils/circuit-breaker.js";
2
+ export interface ClaudeCliOptions {
3
+ prompt: string;
4
+ systemPrompt?: string;
5
+ mcpConfigPath?: string;
6
+ timeoutMs?: number;
7
+ onToolUse?: (status: string) => void;
8
+ /** Thinking/reasoning deltas streamed as Claude produces them. */
9
+ onThinking?: (text: string) => void;
10
+ /** Start a new session with this UUID. */
11
+ sessionId?: string;
12
+ /** Resume an existing session by its UUID. */
13
+ resumeSessionId?: string;
14
+ /** Path or name of the Claude CLI binary (default: 'claude'). */
15
+ cliBinary?: string;
16
+ /** Max tool-use turns per invocation (maps to `--max-turns`). */
17
+ maxTurns?: number;
18
+ }
19
+ export interface ClaudeCliResult {
20
+ result: string;
21
+ exitCode: number;
22
+ }
23
+ export interface ClaudeJsonMessage {
24
+ type: string;
25
+ subtype?: string;
26
+ result?: string;
27
+ content?: Array<{
28
+ type: string;
29
+ text?: string;
30
+ }>;
31
+ [key: string]: unknown;
32
+ }
33
+ /**
34
+ * Default timeout for reactive Slack calls. The weekly orchestrator (M6)
35
+ * overrides this to 15 minutes per call when running long analyses.
36
+ */
37
+ export declare const DEFAULT_TIMEOUT_MS = 120000;
38
+ /** Checks whether the Claude CLI binary is installed on PATH. */
39
+ export declare function checkClaudeCli(binary?: string): Promise<boolean>;
40
+ /** Checks whether the Claude CLI is authenticated via `claude auth status`. */
41
+ export declare function checkClaudeCliAuth(binary?: string): Promise<boolean>;
42
+ /** Exposes circuit-breaker state for `adaria-ai doctor` / health checks. */
43
+ export declare function getClaudeCircuitState(): ReturnType<CircuitBreaker["getState"]>;
44
+ /**
45
+ * Invokes the Claude Code CLI as a subprocess.
46
+ * Runs `claude -p --output-format stream-json` and parses the NDJSON
47
+ * response. Protected by a circuit breaker to fail fast when the CLI is
48
+ * unavailable or repeatedly crashing.
49
+ */
50
+ export declare function invokeClaudeCli(options: ClaudeCliOptions): Promise<ClaudeCliResult>;
51
+ /**
52
+ * Parses one stream-json event and fires tool-use / thinking callbacks.
53
+ * Handles both legacy json format (assistant messages) and the newer
54
+ * stream-json format (`stream_event`).
55
+ */
56
+ export declare function parseStreamEvent(msg: Record<string, unknown>, onToolUse?: (status: string) => void, onThinking?: (text: string) => void): void;
57
+ /**
58
+ * Parses Claude CLI stream-json output and extracts the final text result.
59
+ * Supports both legacy json format and stream-json format.
60
+ */
61
+ export declare function parseClaudeJsonOutput(output: string): string;
62
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/agent/claude.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAY7D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,kEAAkE;IAClE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,SAAU,CAAC;AAE1C,iEAAiE;AACjE,wBAAsB,cAAc,CAAC,MAAM,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxE;AAED,+EAA+E;AAC/E,wBAAsB,kBAAkB,CAAC,MAAM,SAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAc5E;AAwDD,4EAA4E;AAC5E,wBAAgB,qBAAqB,IAAI,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAE9E;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,eAAe,CAAC,CAE1B;AAwJD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,EACpC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAClC,IAAI,CAiCN;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA2C5D"}
@@ -0,0 +1,297 @@
1
+ /**
2
+ * Claude CLI runner.
3
+ *
4
+ * Ports pilot-ai's `src/agent/claude.ts` with four M1 adaptations:
5
+ *
6
+ * 1. Default timeout dropped from 15 min to 120 s. Reactive Slack
7
+ * mentions shouldn't block the daemon for 15 minutes. The weekly
8
+ * orchestrator (M6) passes `timeoutMs: 15 * 60 * 1000` explicitly.
9
+ * 2. `cwd` parameter dropped — adaria-ai has no concept of projects.
10
+ * 3. `DEFAULT_ALLOWED_TOOLS` export dropped — pilot-ai's code already
11
+ * notes it's unused (--dangerously-skip-permissions covers it), and
12
+ * adaria-ai doesn't register Bash/Read/Write tool *wrappers* either.
13
+ * 4. `invokeClaudeApi` (Anthropic SDK fallback) dropped. The config
14
+ * schema keeps `mode: 'cli' | 'api'` for forward-compat, but M1
15
+ * ships only the CLI path. A later milestone will re-add the API
16
+ * fallback if we ever need it (so far the CLI has been adequate).
17
+ *
18
+ * Everything else — circuit breaker, stream-json parsing, tool-use
19
+ * status callbacks, thinking deltas, session --resume, CLAUDECODE env
20
+ * strip — is preserved.
21
+ */
22
+ import { spawn, execFile } from "node:child_process";
23
+ import { promisify } from "node:util";
24
+ import { CircuitBreaker } from "../utils/circuit-breaker.js";
25
+ import { error as logError } from "../utils/logger.js";
26
+ import { maskSecrets } from "./audit.js";
27
+ const execFileAsync = promisify(execFile);
28
+ /** Circuit breaker for Claude CLI invocations. */
29
+ const claudeCircuit = new CircuitBreaker({
30
+ failureThreshold: 3,
31
+ resetTimeout: 120_000,
32
+ });
33
+ /**
34
+ * Default timeout for reactive Slack calls. The weekly orchestrator (M6)
35
+ * overrides this to 15 minutes per call when running long analyses.
36
+ */
37
+ export const DEFAULT_TIMEOUT_MS = 120_000;
38
+ /** Checks whether the Claude CLI binary is installed on PATH. */
39
+ export async function checkClaudeCli(binary = "claude") {
40
+ try {
41
+ await execFileAsync("which", [binary]);
42
+ return true;
43
+ }
44
+ catch {
45
+ return false;
46
+ }
47
+ }
48
+ /** Checks whether the Claude CLI is authenticated via `claude auth status`. */
49
+ export async function checkClaudeCliAuth(binary = "claude") {
50
+ try {
51
+ const env = { ...process.env };
52
+ delete env["CLAUDECODE"];
53
+ const { stdout } = await execFileAsync(binary, ["auth", "status"], {
54
+ timeout: 5_000,
55
+ env,
56
+ });
57
+ return (stdout.includes('"loggedIn": true') || stdout.includes('"loggedIn":true'));
58
+ }
59
+ catch {
60
+ return false;
61
+ }
62
+ }
63
+ /** Maps Claude tool names to user-friendly status descriptions. */
64
+ function describeToolUse(toolName, input) {
65
+ switch (toolName) {
66
+ case "Bash": {
67
+ const cmd = typeof input?.["command"] === "string"
68
+ ? input["command"].slice(0, 60)
69
+ : "";
70
+ if (cmd.startsWith("gh "))
71
+ return `🔍 Checking GitHub... \`${cmd}\``;
72
+ if (cmd.startsWith("git "))
73
+ return `📂 Checking git history...`;
74
+ if (cmd.startsWith("curl ") || cmd.startsWith("wget "))
75
+ return `🌐 Fetching URL...`;
76
+ if (cmd.startsWith("npm ") || cmd.startsWith("npx "))
77
+ return `📦 Running npm...`;
78
+ return `⚡ Running: \`${cmd || "command"}\``;
79
+ }
80
+ case "Read":
81
+ return `📖 Reading file...`;
82
+ case "Write":
83
+ return `✏️ Writing file...`;
84
+ case "Edit":
85
+ case "MultiEdit":
86
+ return `✏️ Editing file...`;
87
+ case "Glob":
88
+ return `🔍 Searching files...`;
89
+ case "Grep":
90
+ return `🔍 Searching code...`;
91
+ case "LS":
92
+ return `📂 Listing directory...`;
93
+ case "WebSearch": {
94
+ const q = typeof input?.["query"] === "string"
95
+ ? input["query"].slice(0, 50)
96
+ : "";
97
+ return q ? `🌐 Searching: "${q}"` : `🌐 Searching the web...`;
98
+ }
99
+ case "WebFetch":
100
+ return `🌐 Fetching web page...`;
101
+ case "Task":
102
+ return `🧠 Delegating sub-task...`;
103
+ case "NotebookRead":
104
+ case "NotebookEdit":
105
+ return `📓 Working with notebook...`;
106
+ default:
107
+ if (toolName.startsWith("mcp__adaria__")) {
108
+ return `🔧 Using ${toolName.slice("mcp__adaria__".length)}...`;
109
+ }
110
+ return `🔧 Using ${toolName}...`;
111
+ }
112
+ }
113
+ /** Exposes circuit-breaker state for `adaria-ai doctor` / health checks. */
114
+ export function getClaudeCircuitState() {
115
+ return claudeCircuit.getState();
116
+ }
117
+ /**
118
+ * Invokes the Claude Code CLI as a subprocess.
119
+ * Runs `claude -p --output-format stream-json` and parses the NDJSON
120
+ * response. Protected by a circuit breaker to fail fast when the CLI is
121
+ * unavailable or repeatedly crashing.
122
+ */
123
+ export async function invokeClaudeCli(options) {
124
+ return claudeCircuit.execute(() => invokeClaudeCliInner(options));
125
+ }
126
+ async function invokeClaudeCliInner(options) {
127
+ const { prompt, systemPrompt, mcpConfigPath, timeoutMs = DEFAULT_TIMEOUT_MS, onToolUse, onThinking, sessionId, resumeSessionId, cliBinary = "claude", maxTurns, } = options;
128
+ const args = [];
129
+ // Session management: --resume takes precedence (continuing existing
130
+ // session). --dangerously-skip-permissions: adaria-ai runs headless from
131
+ // launchd — nobody is sitting at the terminal to approve CLI prompts.
132
+ // Security is provided by the Slack allowlist (src/security/auth.ts)
133
+ // and by ApprovalManager for write paths.
134
+ if (resumeSessionId) {
135
+ args.push("-p", "--resume", resumeSessionId, "--output-format", "stream-json", "--verbose", "--dangerously-skip-permissions");
136
+ }
137
+ else {
138
+ args.push("-p", "--output-format", "stream-json", "--verbose", "--dangerously-skip-permissions");
139
+ if (sessionId) {
140
+ args.push("--session-id", sessionId);
141
+ }
142
+ }
143
+ if (systemPrompt) {
144
+ args.push("--append-system-prompt", systemPrompt);
145
+ }
146
+ // NOTE: --allowedTools is intentionally NOT used.
147
+ // --dangerously-skip-permissions already permits all tools.
148
+ // Combining --allowedTools with bypass mode is buggy (GitHub #12232)
149
+ // and can silently block MCP tools.
150
+ if (maxTurns) {
151
+ args.push("--max-turns", String(maxTurns));
152
+ }
153
+ if (mcpConfigPath) {
154
+ args.push("--mcp-config", mcpConfigPath);
155
+ }
156
+ // Prompt goes via stdin to avoid OS arg-length limits.
157
+ return new Promise((resolve, reject) => {
158
+ const env = { ...process.env };
159
+ delete env["CLAUDECODE"];
160
+ const child = spawn(cliBinary, args, {
161
+ stdio: ["pipe", "pipe", "pipe"],
162
+ timeout: timeoutMs,
163
+ env,
164
+ });
165
+ child.stdin.write(prompt);
166
+ child.stdin.end();
167
+ let stdout = "";
168
+ let stderr = "";
169
+ let lineBuffer = "";
170
+ child.stdout.on("data", (data) => {
171
+ const chunk = data.toString();
172
+ stdout += chunk;
173
+ if (onToolUse || onThinking) {
174
+ lineBuffer += chunk;
175
+ // Prevent unbounded buffer growth (max 1MB). Truncate to the
176
+ // nearest newline boundary so we never hand half a JSON object
177
+ // to `JSON.parse` — otherwise a single pathological long line
178
+ // eats tool_use events for the rest of the stream (M1 claude
179
+ // review MED #1).
180
+ if (lineBuffer.length > 1_048_576) {
181
+ const lastNl = lineBuffer.lastIndexOf("\n", 524_288);
182
+ lineBuffer = lastNl >= 0 ? lineBuffer.slice(lastNl + 1) : "";
183
+ logError("[claude-cli] stream buffer overflow; dropped leading content");
184
+ }
185
+ const lines = lineBuffer.split("\n");
186
+ lineBuffer = lines.pop() ?? "";
187
+ for (const line of lines) {
188
+ if (!line.trim())
189
+ continue;
190
+ try {
191
+ const msg = JSON.parse(line);
192
+ parseStreamEvent(msg, onToolUse, onThinking);
193
+ }
194
+ catch {
195
+ // Not valid JSON yet — skip.
196
+ }
197
+ }
198
+ }
199
+ });
200
+ child.stderr.on("data", (data) => {
201
+ const chunk = data.toString();
202
+ stderr += chunk;
203
+ // Mask secrets before writing to the disk log. Pilot-ai's plain
204
+ // console.error didn't persist, but adaria-ai's logger writes to
205
+ // $ADARIA_HOME/logs/ so an MCP server that dumps an auth header
206
+ // in its stderr would land at-rest on disk (M1 claude review MED #2).
207
+ for (const line of chunk.split("\n")) {
208
+ if (line.trim()) {
209
+ logError(`[claude-cli] ${maskSecrets(line)}`);
210
+ }
211
+ }
212
+ });
213
+ child.on("error", (err) => {
214
+ reject(new Error(`Claude CLI execution failed: ${err.message}`));
215
+ });
216
+ child.on("close", (code) => {
217
+ const exitCode = code ?? 1;
218
+ if (exitCode !== 0 && !stdout) {
219
+ reject(new Error(`Claude CLI error (exit ${String(exitCode)}): ${stderr || "Unknown error"}`));
220
+ return;
221
+ }
222
+ const result = parseClaudeJsonOutput(stdout);
223
+ resolve({ result, exitCode });
224
+ });
225
+ });
226
+ }
227
+ /**
228
+ * Parses one stream-json event and fires tool-use / thinking callbacks.
229
+ * Handles both legacy json format (assistant messages) and the newer
230
+ * stream-json format (`stream_event`).
231
+ */
232
+ export function parseStreamEvent(msg, onToolUse, onThinking) {
233
+ if (msg["type"] === "assistant") {
234
+ const topContent = msg.content;
235
+ const wrapped = msg["message"];
236
+ const nestedContent = wrapped?.["content"];
237
+ const content = topContent ?? nestedContent;
238
+ if (onToolUse && Array.isArray(content)) {
239
+ for (const block of content) {
240
+ const b = block;
241
+ if (b["type"] === "tool_use" && typeof b["name"] === "string") {
242
+ onToolUse(describeToolUse(b["name"], b["input"]));
243
+ }
244
+ }
245
+ }
246
+ }
247
+ if (onThinking && msg["type"] === "content_block_delta") {
248
+ const delta = msg["delta"];
249
+ if (delta?.["type"] === "thinking_delta" &&
250
+ typeof delta["thinking"] === "string") {
251
+ onThinking(delta["thinking"]);
252
+ }
253
+ }
254
+ }
255
+ /**
256
+ * Parses Claude CLI stream-json output and extracts the final text result.
257
+ * Supports both legacy json format and stream-json format.
258
+ */
259
+ export function parseClaudeJsonOutput(output) {
260
+ const lines = output.trim().split("\n").filter(Boolean);
261
+ const texts = [];
262
+ for (const line of lines) {
263
+ try {
264
+ const msg = JSON.parse(line);
265
+ // Legacy json format: assistant messages with content blocks.
266
+ if (msg.type === "assistant" && Array.isArray(msg.content)) {
267
+ for (const block of msg.content) {
268
+ if (block.type === "text" && block.text) {
269
+ texts.push(block.text);
270
+ }
271
+ }
272
+ }
273
+ // stream-json format: assistant message wrapper.
274
+ if (msg.type === "assistant" && msg["message"]) {
275
+ const message = msg["message"];
276
+ const content = message["content"];
277
+ if (Array.isArray(content)) {
278
+ for (const block of content) {
279
+ if (block.type === "text" && block.text) {
280
+ texts.push(block.text);
281
+ }
282
+ }
283
+ }
284
+ }
285
+ // Terminal result message (both formats).
286
+ if (msg.type === "result" && typeof msg.result === "string") {
287
+ texts.push(msg.result);
288
+ }
289
+ }
290
+ catch {
291
+ // Not JSON — treat as raw text.
292
+ texts.push(line);
293
+ }
294
+ }
295
+ return texts.join("\n") || output;
296
+ }
297
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agent/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface TurnSummary {
2
+ /** User message (truncated to 500 chars) */
3
+ userMessage: string;
4
+ /** Agent action summary (truncated to ~800 chars) */
5
+ agentAction: string;
6
+ /** ISO timestamp */
7
+ timestamp: string;
8
+ }
9
+ export interface ConversationSummary {
10
+ /** Unique key: platform:channelId:threadId */
11
+ threadKey: string;
12
+ /** Recent turn summaries (FIFO, max 15) */
13
+ turns: TurnSummary[];
14
+ /** Accumulated key decisions */
15
+ keyDecisions: string[];
16
+ /** Accumulated modified file paths */
17
+ modifiedFiles: string[];
18
+ /** ISO timestamp of last update */
19
+ lastUpdated: string;
20
+ }
21
+ export declare function loadSummary(platform: string, channelId: string, threadId: string): Promise<ConversationSummary | null>;
22
+ export declare function saveSummary(summary: ConversationSummary): Promise<void>;
23
+ export declare function extractActionSummary(agentResponse: string): string;
24
+ export declare function extractModifiedFiles(agentResponse: string): string[];
25
+ export declare function extractKeyDecisions(agentResponse: string): string[];
26
+ export declare function updateConversationSummary(platform: string, channelId: string, threadId: string, rawUserMessage: string, rawAgentResponse: string): Promise<void>;
27
+ export declare function getConversationSummaryText(platform: string, channelId: string, threadId: string): Promise<string | null>;
28
+ export declare function cleanupExpiredSummaries(): Promise<number>;
29
+ //# sourceMappingURL=conversation-summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-summary.d.ts","sourceRoot":"","sources":["../../src/agent/conversation-summary.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,WAAW;IAC1B,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,gCAAgC;IAChC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sCAAsC;IACtC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAsBD,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CASrC;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CA+BlE;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAkBpE;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBnE;AAED,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,CAkDf;AAED,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAyCxB;AAED,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAyB/D"}