manychat-ai-agent 0.0.0-stage → 0.15.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 (123) hide show
  1. package/CHANGELOG.md +541 -0
  2. package/LICENSE +21 -0
  3. package/README.md +623 -2
  4. package/db/migrations/0000_third_living_tribunal.sql +61 -0
  5. package/db/migrations/0001_massive_wallflower.sql +1 -0
  6. package/db/migrations/0002_bumpy_manta.sql +3 -0
  7. package/db/migrations/0003_worthless_swarm.sql +6 -0
  8. package/db/migrations/0004_lucky_sabretooth.sql +1 -0
  9. package/db/migrations/0005_lumpy_black_panther.sql +1 -0
  10. package/db/migrations/0006_next_tattoo.sql +14 -0
  11. package/db/migrations/0007_lumpy_triathlon.sql +1 -0
  12. package/db/migrations/0008_demonic_spencer_smythe.sql +1 -0
  13. package/db/migrations/meta/0000_snapshot.json +443 -0
  14. package/db/migrations/meta/0001_snapshot.json +449 -0
  15. package/db/migrations/meta/0002_snapshot.json +456 -0
  16. package/db/migrations/meta/0003_snapshot.json +495 -0
  17. package/db/migrations/meta/0004_snapshot.json +501 -0
  18. package/db/migrations/meta/0005_snapshot.json +507 -0
  19. package/db/migrations/meta/0006_snapshot.json +625 -0
  20. package/db/migrations/meta/0007_snapshot.json +631 -0
  21. package/db/migrations/meta/0008_snapshot.json +637 -0
  22. package/db/migrations/meta/_journal.json +69 -0
  23. package/dist/agent/contact.d.ts +86 -0
  24. package/dist/agent/contact.js +137 -0
  25. package/dist/agent/fence.d.ts +15 -0
  26. package/dist/agent/fence.js +18 -0
  27. package/dist/agent/flows.d.ts +47 -0
  28. package/dist/agent/flows.js +55 -0
  29. package/dist/agent/guardrails.d.ts +74 -0
  30. package/dist/agent/guardrails.js +285 -0
  31. package/dist/agent/mock-provider.d.ts +2 -0
  32. package/dist/agent/mock-provider.js +466 -0
  33. package/dist/agent/prompt.d.ts +109 -0
  34. package/dist/agent/prompt.js +420 -0
  35. package/dist/agent/registry.d.ts +52 -0
  36. package/dist/agent/registry.js +131 -0
  37. package/dist/agent/runner.d.ts +140 -0
  38. package/dist/agent/runner.js +231 -0
  39. package/dist/agent/tools.d.ts +238 -0
  40. package/dist/agent/tools.js +689 -0
  41. package/dist/agent/transcriber.d.ts +16 -0
  42. package/dist/agent/transcriber.js +45 -0
  43. package/dist/backfill.d.ts +1 -0
  44. package/dist/backfill.js +54 -0
  45. package/dist/channels/manychat/adapter.d.ts +22 -0
  46. package/dist/channels/manychat/adapter.js +83 -0
  47. package/dist/channels/manychat/client.d.ts +100 -0
  48. package/dist/channels/manychat/client.js +161 -0
  49. package/dist/channels/manychat/media.d.ts +27 -0
  50. package/dist/channels/manychat/media.js +143 -0
  51. package/dist/channels/manychat/simulator.d.ts +1 -0
  52. package/dist/channels/manychat/simulator.js +78 -0
  53. package/dist/channels/port.d.ts +46 -0
  54. package/dist/channels/port.js +1 -0
  55. package/dist/cli/run.d.ts +6 -0
  56. package/dist/cli/run.js +169 -0
  57. package/dist/cli.d.ts +2 -0
  58. package/dist/cli.js +14 -0
  59. package/dist/config/index.d.ts +4 -0
  60. package/dist/config/index.js +2 -0
  61. package/dist/config/loader.d.ts +55 -0
  62. package/dist/config/loader.js +181 -0
  63. package/dist/contracts/agent.d.ts +285 -0
  64. package/dist/contracts/agent.js +252 -0
  65. package/dist/contracts/config.d.ts +285 -0
  66. package/dist/contracts/config.js +560 -0
  67. package/dist/contracts/manychat.d.ts +228 -0
  68. package/dist/contracts/manychat.js +123 -0
  69. package/dist/conversation/actions.d.ts +28 -0
  70. package/dist/conversation/actions.js +71 -0
  71. package/dist/conversation/backfill.d.ts +28 -0
  72. package/dist/conversation/backfill.js +42 -0
  73. package/dist/conversation/budget.d.ts +42 -0
  74. package/dist/conversation/budget.js +101 -0
  75. package/dist/conversation/store.d.ts +148 -0
  76. package/dist/conversation/store.js +231 -0
  77. package/dist/conversation/tokens.d.ts +66 -0
  78. package/dist/conversation/tokens.js +125 -0
  79. package/dist/db/client.d.ts +27 -0
  80. package/dist/db/client.js +36 -0
  81. package/dist/db/migrate.d.ts +10 -0
  82. package/dist/db/migrate.js +40 -0
  83. package/dist/db/schema.d.ts +1083 -0
  84. package/dist/db/schema.js +159 -0
  85. package/dist/evals/cases.d.ts +88 -0
  86. package/dist/evals/cases.js +192 -0
  87. package/dist/evals/runner.d.ts +1 -0
  88. package/dist/evals/runner.js +106 -0
  89. package/dist/main.d.ts +1 -0
  90. package/dist/main.js +84 -0
  91. package/dist/media/ffmpeg.d.ts +24 -0
  92. package/dist/media/ffmpeg.js +182 -0
  93. package/dist/media/port.d.ts +50 -0
  94. package/dist/media/port.js +8 -0
  95. package/dist/media/resolver.d.ts +36 -0
  96. package/dist/media/resolver.js +59 -0
  97. package/dist/migrations/index.d.ts +10 -0
  98. package/dist/migrations/index.js +29 -0
  99. package/dist/nudge/performer.d.ts +19 -0
  100. package/dist/nudge/performer.js +30 -0
  101. package/dist/nudge/store.d.ts +35 -0
  102. package/dist/nudge/store.js +76 -0
  103. package/dist/nudge/worker.d.ts +44 -0
  104. package/dist/nudge/worker.js +199 -0
  105. package/dist/observability/logger.d.ts +13 -0
  106. package/dist/observability/logger.js +10 -0
  107. package/dist/observability/redact.d.ts +44 -0
  108. package/dist/observability/redact.js +71 -0
  109. package/dist/outbox/queue.d.ts +66 -0
  110. package/dist/outbox/queue.js +88 -0
  111. package/dist/outbox/worker.d.ts +47 -0
  112. package/dist/outbox/worker.js +150 -0
  113. package/dist/routes/auth.d.ts +15 -0
  114. package/dist/routes/auth.js +44 -0
  115. package/dist/routes/turn.d.ts +90 -0
  116. package/dist/routes/turn.js +694 -0
  117. package/dist/server.d.ts +48 -0
  118. package/dist/server.js +235 -0
  119. package/dist/testing/index.d.ts +2 -0
  120. package/dist/testing/index.js +2 -0
  121. package/dist/testing/model.d.ts +36 -0
  122. package/dist/testing/model.js +79 -0
  123. package/package.json +89 -4
package/CHANGELOG.md ADDED
@@ -0,0 +1,541 @@
1
+ # Changelog
2
+
3
+ ## [0.15.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.14.0...manychat-ai-agent-v0.15.0) (2026-10-05)
4
+
5
+
6
+ ### Features
7
+
8
+ * publish the agent as a package with a CLI and declared exports (spec 033) ([5666764](https://github.com/pedronastasi/manychat-ai-agent/commit/5666764fdb4bea8b8c173cd01bb911162c4e9432))
9
+ * publish the agent as a package with a CLI and declared exports (spec 033) ([bf0f704](https://github.com/pedronastasi/manychat-ai-agent/commit/bf0f704a484a14d150a2f68e5b041789a9c12a07))
10
+ * withhold the sale until the contact is a prospect (spec 034) ([7e48e7d](https://github.com/pedronastasi/manychat-ai-agent/commit/7e48e7d6ff00dd3b0f6353daa9e500749e2e9ee1))
11
+ * withhold the sale until the contact is a prospect (spec 034) ([1bd15f0](https://github.com/pedronastasi/manychat-ai-agent/commit/1bd15f0fc8e769ee47e84ce28716916cf4737d60))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * load the tenant's .env in the agent CLI, and align the guide with spec 033 ([9eccff5](https://github.com/pedronastasi/manychat-ai-agent/commit/9eccff5e0ca1648251f3aa5f53bbefcc2625e1d7))
17
+ * make the installed package boot, redact and publish as spec 033 says ([90fb886](https://github.com/pedronastasi/manychat-ai-agent/commit/90fb8866110f6bf474d575ebe66b5988b5fec89e))
18
+ * stop the reply after the opening flow greeting and asking again (spec 032) ([bd0098d](https://github.com/pedronastasi/manychat-ai-agent/commit/bd0098d6c7a60ccbd8b79d8f442f329697aebde1))
19
+ * stop the reply after the opening flow greeting and asking again (spec 032) ([705ad16](https://github.com/pedronastasi/manychat-ai-agent/commit/705ad16545e03f62ce6ea0d86cafd3b9e92c307f))
20
+
21
+
22
+ ### Specs and Docs
23
+
24
+ * guide the move from a deployment fork to a tenant project ([9e72917](https://github.com/pedronastasi/manychat-ai-agent/commit/9e72917ba7d49e5e5888a04b2986da25a876b1f2))
25
+ * judge spec 033's fork move by copied content, not shared file names ([a5d110f](https://github.com/pedronastasi/manychat-ai-agent/commit/a5d110f7ace770da50d7429f0446a044d84b3260))
26
+ * let the fork keep its own housekeeping files in spec 033's move criteria ([5844aed](https://github.com/pedronastasi/manychat-ai-agent/commit/5844aedc691ec36df7f6592c2f68a93054086da2))
27
+ * point spec 034 at the prompt's rule 8 and at what the evals can see ([79fe8f4](https://github.com/pedronastasi/manychat-ai-agent/commit/79fe8f43bc4d92618e5d8313c261638d11f97a2c))
28
+ * record PR 166 in spec 033 ([2163243](https://github.com/pedronastasi/manychat-ai-agent/commit/216324311d54b4f000f43fc4e30932aced672d92))
29
+ * record PR 167 in spec 034 ([dd6e6d9](https://github.com/pedronastasi/manychat-ai-agent/commit/dd6e6d99ce000147304e58e6dde282b3c55e7a29))
30
+ * rewrap spec 034's eval item ([ce6b064](https://github.com/pedronastasi/manychat-ai-agent/commit/ce6b0646843009bcbd8267e3d48f77f1818efc92))
31
+ * scope the release-only permission check to packages: write (spec 033) ([c37dadb](https://github.com/pedronastasi/manychat-ai-agent/commit/c37dadb1080dc0fc46fa9a231deda369b19c3f6e))
32
+ * settle the opening's timing and the advert signal in spec 034 ([6b1e76e](https://github.com/pedronastasi/manychat-ai-agent/commit/6b1e76eb5eda05d63982a2438b697682a550834e))
33
+ * specify intent before the sale (spec 034) ([0f2bb69](https://github.com/pedronastasi/manychat-ai-agent/commit/0f2bb69342faf04c3a9edd742035ea361066d380))
34
+ * specify tenant projects that depend on the agent, not fork it (spec 033) ([e375f54](https://github.com/pedronastasi/manychat-ai-agent/commit/e375f5418f3785d7bed9dcb83c200408fee04ef4))
35
+ * split spec 033 into the package, the scaffolder (035) and plugins (036) ([e910e11](https://github.com/pedronastasi/manychat-ai-agent/commit/e910e113183977891628d0ecff9d69dfb8ba7dbd))
36
+ * split spec 033 into the package, the scaffolder (035) and plugins (036) ([39258be](https://github.com/pedronastasi/manychat-ai-agent/commit/39258bee4ed6bd15ef4c3830057a35fdc39996d4))
37
+
38
+ ## [0.14.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.13.1...manychat-ai-agent-v0.14.0) (2026-10-04)
39
+
40
+
41
+ ### Features
42
+
43
+ * open with the server's flow and check readiness before the link (spec 032) ([f7b947e](https://github.com/pedronastasi/manychat-ai-agent/commit/f7b947eb6e270c3a79be1fbc31ce27c80a5ce593))
44
+ * open with the server's flow and check readiness before the link (spec 032) ([bec2650](https://github.com/pedronastasi/manychat-ai-agent/commit/bec26501574cc5bb0bd8704a478d0f011efe00de))
45
+
46
+
47
+ ### Bug Fixes
48
+
49
+ * count a payment link at link_sent before it waits for the opening (spec 032) ([138dc9d](https://github.com/pedronastasi/manychat-ai-agent/commit/138dc9d15855780336f944da563e064c77d75017))
50
+ * record contactAsked only when it opened the payment gate (spec 032) ([456c2a4](https://github.com/pedronastasi/manychat-ai-agent/commit/456c2a4fa984c9ed9a51f4b63debad1649443a2d))
51
+ * say flowDropped when a stage-tied flow is over the cap (spec 032) ([219eedf](https://github.com/pedronastasi/manychat-ai-agent/commit/219eedf1befcaa4e4d1b6027404d3b007283d211))
52
+ * send the opening before any flow, and record it without tools (spec 032) ([96aa775](https://github.com/pedronastasi/manychat-ai-agent/commit/96aa77573d0e34210aaae146b2c9e45a83d00140))
53
+
54
+
55
+ ### Specs and Docs
56
+
57
+ * record PR 157 in spec 032 ([43d429c](https://github.com/pedronastasi/manychat-ai-agent/commit/43d429ca0867a06ddbdea8e5921d46801b9b4bd2))
58
+ * specify relationship before the sale (spec 032) ([227049c](https://github.com/pedronastasi/manychat-ai-agent/commit/227049c50f0c36a4307d10f722081784b6911d9a))
59
+
60
+ ## [0.13.1](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.13.0...manychat-ai-agent-v0.13.1) (2026-10-04)
61
+
62
+
63
+ ### Specs and Docs
64
+
65
+ * describe the separate docs job in CLAUDE.md and spec 011 ([dbde7a3](https://github.com/pedronastasi/manychat-ai-agent/commit/dbde7a33f2bcd1fa6983ba7a7762809fb53d9d9f))
66
+ * give spec 031's analyst its own cap and name the eval baseline ([9e8dcf7](https://github.com/pedronastasi/manychat-ai-agent/commit/9e8dcf7d02502b671bdba34abdf62aa0f44cc8ae))
67
+ * spec 031 and ADR-0020, learning from paid outcomes ([fda1994](https://github.com/pedronastasi/manychat-ai-agent/commit/fda1994e136f531352e7a1ae9f8e26af91612b37))
68
+ * spec 031 and ADR-0020, learning from paid outcomes ([5e3cd3d](https://github.com/pedronastasi/manychat-ai-agent/commit/5e3cd3d943e1a34bc194657b8534cf3c836d1c9b))
69
+
70
+ ## [0.13.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.12.1...manychat-ai-agent-v0.13.0) (2026-10-03)
71
+
72
+
73
+ ### Features
74
+
75
+ * fire a conversion event when the funnel stage advances (spec 027) ([4450489](https://github.com/pedronastasi/manychat-ai-agent/commit/445048971a7ff3d5c79ebe28918f8cdaf827647a))
76
+ * fire a conversion event when the funnel stage advances (spec 027) ([ad43756](https://github.com/pedronastasi/manychat-ai-agent/commit/ad4375623cab53b3b334b72a476c5ec9eccbfe43))
77
+ * hold a reply until the flow it follows has played (spec 030) ([a9f5f39](https://github.com/pedronastasi/manychat-ai-agent/commit/a9f5f394c689ea36ece03f5be9988d2c00449e33))
78
+ * hold a reply until the flow it follows has played (spec 030) ([ae99cf0](https://github.com/pedronastasi/manychat-ai-agent/commit/ae99cf0d81f6a2c7740338f2754365891d2faf8b))
79
+ * sell several catalog courses through one funnel (spec 028) ([125824d](https://github.com/pedronastasi/manychat-ai-agent/commit/125824d962628bb054f162290ed251464e7ca085))
80
+ * sell several catalog courses through one funnel (spec 028) ([96e13e9](https://github.com/pedronastasi/manychat-ai-agent/commit/96e13e99cd527a1ceae500130bfeb455d52fb59e))
81
+ * send a flow when the model calls it, so the reply follows it (spec 029) ([e27f210](https://github.com/pedronastasi/manychat-ai-agent/commit/e27f210e1483e0eec372093f4e90b85cb0615f44))
82
+ * send a flow when the model calls it, so the reply follows it (spec 029) ([2acac50](https://github.com/pedronastasi/manychat-ai-agent/commit/2acac50e0b3982c92d0fef6ab318afcf53c49ca9))
83
+ * send a turn's closing question after the flow it sends (spec 029) ([f7956ef](https://github.com/pedronastasi/manychat-ai-agent/commit/f7956efe3bc9c9c5858056c2ba2e5767e1faf316))
84
+
85
+
86
+ ### Bug Fixes
87
+
88
+ * a payment link sent mid-turn takes the turn's stage writes with it (spec 029) ([bfa90c7](https://github.com/pedronastasi/manychat-ai-agent/commit/bfa90c74e5780c55a0d7e7556180f25c33dcba79))
89
+ * a repeat send_flow waits for the first request's outcome (spec 029) ([0840e34](https://github.com/pedronastasi/manychat-ai-agent/commit/0840e3406ae02c31cee9efc503e9ddda350081e6))
90
+ * count a payment link in flight at link_sent for same-step writes (spec 029) ([d2f608f](https://github.com/pedronastasi/manychat-ai-agent/commit/d2f608f15071fccda5935af27331577553bcdf28))
91
+ * record a flow sent before a deferred call fails (spec 029) ([e8e2a37](https://github.com/pedronastasi/manychat-ai-agent/commit/e8e2a37cd992a58e755482f18e07708bf7af03eb))
92
+ * say why send_flow has nothing to offer a placed contact (spec 028) ([90204a0](https://github.com/pedronastasi/manychat-ai-agent/commit/90204a0e64b64928a0750ae6a07fdc1142bebe9b))
93
+ * store only a bound request's course, and ignore a retired one (spec 028) ([b589c52](https://github.com/pedronastasi/manychat-ai-agent/commit/b589c521c9acb61b40902c8d635d7bf56a86a8ec))
94
+ * wait for an in-flight flow request before recording an aborted turn (spec 029) ([f808514](https://github.com/pedronastasi/manychat-ai-agent/commit/f8085145b1da5f6e270f0ab86069f8f3e38f2d41))
95
+
96
+
97
+ ### Specs and Docs
98
+
99
+ * bring README, CLAUDE.md, config guide and specs in line with spec 029 ([4a1e006](https://github.com/pedronastasi/manychat-ai-agent/commit/4a1e0060710bb1ec360ab67f20ae82942157edb4))
100
+ * note in spec 030 that a contact writing during a held reply can be answered first ([ef50875](https://github.com/pedronastasi/manychat-ai-agent/commit/ef50875f172d66c02e78b22ec425383cab1571b1))
101
+ * record PR 150 in spec 027 ([5d2fa49](https://github.com/pedronastasi/manychat-ai-agent/commit/5d2fa495c72797b7f97645f62065acb7be672707))
102
+ * record PR 151 in spec 028 ([92d3fe5](https://github.com/pedronastasi/manychat-ai-agent/commit/92d3fe5883ea75a1195b238a646ba2c9ae802aae))
103
+ * record PR 152 in spec 029 ([211b54d](https://github.com/pedronastasi/manychat-ai-agent/commit/211b54d384b8892f9cb19139375d3a11ac289edb))
104
+ * record PR 153 in spec 030 ([f2910c3](https://github.com/pedronastasi/manychat-ai-agent/commit/f2910c31c9216bbd48d088299ccc805a69f39f38))
105
+ * specify funnel conversion events and multi-course funnels (specs 027, 028) ([56a5d12](https://github.com/pedronastasi/manychat-ai-agent/commit/56a5d1226a9c63ff71b12055eac505f8ae31eadb))
106
+
107
+ ## [0.12.1](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.12.0...manychat-ai-agent-v0.12.1) (2026-10-03)
108
+
109
+
110
+ ### Dependencies
111
+
112
+ * **deps:** lock file maintenance ([041d33b](https://github.com/pedronastasi/manychat-ai-agent/commit/041d33b908c43ce1c0113ecf1acfaec9cb7dd4ef))
113
+ * **deps:** lock file maintenance ([0c72bd4](https://github.com/pedronastasi/manychat-ai-agent/commit/0c72bd4666dc8a6f2657972b60cb931da80a7a60))
114
+
115
+ ## [0.12.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.11.0...manychat-ai-agent-v0.12.0) (2026-10-03)
116
+
117
+
118
+ ### Features
119
+
120
+ * add contact read and note-writing tools (specs/024) ([b69b74d](https://github.com/pedronastasi/manychat-ai-agent/commit/b69b74dd45d2590df3d1b260bbf73bee432887a6))
121
+ * follow up once on a quiet lead inside the 24-hour window (spec 025) ([d753440](https://github.com/pedronastasi/manychat-ai-agent/commit/d753440fcf3f333a998f18d13bc832ebbcae0764))
122
+ * follow up once on a quiet lead inside the 24-hour window (spec 025) ([fbb30e9](https://github.com/pedronastasi/manychat-ai-agent/commit/fbb30e9fafa6552ca3da5af95a7d290c58791dad))
123
+ * let the agent read its contact and write bounded notes (spec 024) ([8b1980f](https://github.com/pedronastasi/manychat-ai-agent/commit/8b1980fd34af010a045cdc9edc0a01afc43c18f3))
124
+
125
+
126
+ ### Specs and Docs
127
+
128
+ * describe contact reads and notes in the README (spec 024) ([b39729e](https://github.com/pedronastasi/manychat-ai-agent/commit/b39729e19b110d6b21ed7b586f87df0c650d7baa))
129
+ * explain how follow-ups work, how to configure and audit them (spec 025) ([1a0004a](https://github.com/pedronastasi/manychat-ai-agent/commit/1a0004ad6dd7f580573fa5a89b55bebdb58948df))
130
+ * explain how the sales funnel of spec 023 works ([ca1b0a0](https://github.com/pedronastasi/manychat-ai-agent/commit/ca1b0a04dc68ecb80032244303ec14fca61fc682))
131
+ * explain how the sales funnel of spec 023 works ([0ff63b7](https://github.com/pedronastasi/manychat-ai-agent/commit/0ff63b70cf2de0cc8d8766e6da9d8fa1adbcacca))
132
+ * record PR 143 in spec 025 ([565b9d4](https://github.com/pedronastasi/manychat-ai-agent/commit/565b9d40816ab6c20a13b2a02d053c994932524d))
133
+ * record PR 144 in spec 024 ([ab824d6](https://github.com/pedronastasi/manychat-ai-agent/commit/ab824d66b9c6dcb9a4dffd7f26be78f3173e323b))
134
+
135
+ ## [0.11.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.10.0...manychat-ai-agent-v0.11.0) (2026-10-02)
136
+
137
+
138
+ ### Features
139
+
140
+ * replace verbatim repetition with the tenant's closer (spec 013) ([616ebc9](https://github.com/pedronastasi/manychat-ai-agent/commit/616ebc90d6807fe85f876305d35b777402695335))
141
+ * replace verbatim repetition with the tenant's closer (spec 013) ([a547ca5](https://github.com/pedronastasi/manychat-ai-agent/commit/a547ca5f85ee963f906b1192ca7cdf0fe9ffbcbc))
142
+ * send ManyChat API calls through manychat-sdk (spec 022) ([b4b2f79](https://github.com/pedronastasi/manychat-ai-agent/commit/b4b2f797718363db0de4d85226d9a582935b7a45))
143
+ * send ManyChat API calls through manychat-sdk (spec 022) ([f70272e](https://github.com/pedronastasi/manychat-ai-agent/commit/f70272ebae236099718ad00f3bcd585c2253e12c))
144
+ * take a lead from first reply to the payment link (spec 023) ([69c8d27](https://github.com/pedronastasi/manychat-ai-agent/commit/69c8d2700656344b182effc3f22184b4b342eb51))
145
+ * take a lead from first reply to the payment link (spec 023) ([0553b79](https://github.com/pedronastasi/manychat-ai-agent/commit/0553b795057fd16436711e1a788a8d59b14aa661))
146
+
147
+
148
+ ### Bug Fixes
149
+
150
+ * handle ManyChatResponseError in token-write logging (PR [#133](https://github.com/pedronastasi/manychat-ai-agent/issues/133) review) ([899c5af](https://github.com/pedronastasi/manychat-ai-agent/commit/899c5afb110ece876cd6477130f1b6741cbdf58b))
151
+ * re-export ManyChatResponseError and handle it in describeWriteError ([37802cd](https://github.com/pedronastasi/manychat-ai-agent/commit/37802cdc90ee169759c31be5c4d72ebd97c303e6))
152
+ * read the mock's payment options from the catalog heading only ([0663c60](https://github.com/pedronastasi/manychat-ai-agent/commit/0663c608a1c9265dd9ce5aca7e6e3bceff6628f4))
153
+
154
+
155
+ ### Specs and Docs
156
+
157
+ * bring config/README.md and spec 003 up to date ([7113618](https://github.com/pedronastasi/manychat-ai-agent/commit/7113618a942fc36bdc6389aac8c6cb705d267cbb))
158
+ * bring config/README.md and spec 003 up to date ([4855030](https://github.com/pedronastasi/manychat-ai-agent/commit/4855030159e484f467e8fbf484097f81f7900a74))
159
+ * count spec 013 in spec 026's parity target ([4436abc](https://github.com/pedronastasi/manychat-ai-agent/commit/4436abc3a2a313ef693f8d7cd6d8828d3a863ebc))
160
+ * decide and specify the Python port (ADR-0018, spec 026) ([c59e3a5](https://github.com/pedronastasi/manychat-ai-agent/commit/c59e3a55638f9c308d870b8524c00781e57ea779))
161
+ * decide and specify the Python port (ADR-0018, spec 026) ([3fbeb10](https://github.com/pedronastasi/manychat-ai-agent/commit/3fbeb10ad5407386aa3cf1491d0f4d2f5f0d0ca2))
162
+ * declare nudge.humanActiveTag in spec 025 ([e192ef7](https://github.com/pedronastasi/manychat-ai-agent/commit/e192ef7e69c288676906935d627a0e066edb7120))
163
+ * fix remaining domain-specific references in specs and doc comments ([9c6a9d5](https://github.com/pedronastasi/manychat-ai-agent/commit/9c6a9d503dd629fc1cc5dc96894393910b7d40a2))
164
+ * include ManyChatResponseError endpoint in spec 022's error-text rule ([505613f](https://github.com/pedronastasi/manychat-ai-agent/commit/505613f71b04b8e99aad145d635d5238adc81b3d))
165
+ * narrow 001's price_negotiation trigger and declare onEscalation ([ee05ea7](https://github.com/pedronastasi/manychat-ai-agent/commit/ee05ea7a7ac0f98c707e999f9c07629dc68b11a0))
166
+ * record ADRs 0015-0017 for the sales funnel ([cbbec2d](https://github.com/pedronastasi/manychat-ai-agent/commit/cbbec2debaf27b11018c0bbdea426883d761cc57))
167
+ * record PR 131 in spec 013 ([8294862](https://github.com/pedronastasi/manychat-ai-agent/commit/8294862075844375e3c7e2263f7a3c84547a6a0c))
168
+ * record PR 132 in spec 023 ([b708107](https://github.com/pedronastasi/manychat-ai-agent/commit/b708107e4cbcde068feb054e5231c38c37257370))
169
+ * remove domain-specific references from specs ([31f04f8](https://github.com/pedronastasi/manychat-ai-agent/commit/31f04f85ef1bd687ea486aaa4a2c995258272bd8))
170
+ * remove domain-specific references from specs ([adf1fe3](https://github.com/pedronastasi/manychat-ai-agent/commit/adf1fe3162dc7fe90412fb6e6fe0b645b4e6ddf2))
171
+ * specify 023 — Sales Funnel ([47dd1e6](https://github.com/pedronastasi/manychat-ai-agent/commit/47dd1e6047eb6cb927551cbd5c4d48c4b2ff67c1))
172
+ * specify 024 — Contact Read and Free-Text Notes ([d5d3121](https://github.com/pedronastasi/manychat-ai-agent/commit/d5d3121403e6ca6e7ae663a69188805395a98be2))
173
+ * specify 025 — In-Window Nudge ([d2b353f](https://github.com/pedronastasi/manychat-ai-agent/commit/d2b353ff428e69e61b07de14942046d1154c522c))
174
+ * specify the sales funnel, contact reads, notes and nudges ([8ee5104](https://github.com/pedronastasi/manychat-ai-agent/commit/8ee51044d80fe1c3b242c8d8101b94d1dbd8894c))
175
+
176
+ ## [0.10.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.9.0...manychat-ai-agent-v0.10.0) (2026-10-01)
177
+
178
+
179
+ ### Features
180
+
181
+ * publish config/README.md on the docs site, by name ([7d3d5ac](https://github.com/pedronastasi/manychat-ai-agent/commit/7d3d5acbb24e81956fdec1d8b57ec93bd9602389))
182
+ * publish the docs as a site on GitHub Pages (spec 014) ([e963156](https://github.com/pedronastasi/manychat-ai-agent/commit/e9631569318d6cd3cafbe801dc082fa8c98cac7e))
183
+ * publish the docs as a site on GitHub Pages (spec 014) ([78d82bc](https://github.com/pedronastasi/manychat-ai-agent/commit/78d82bc12badf1962bcf1d1a5fd17b81b844950c))
184
+
185
+
186
+ ### Bug Fixes
187
+
188
+ * list each README as a sidebar entry, not behind its group heading ([5085310](https://github.com/pedronastasi/manychat-ai-agent/commit/50853101bccc5325b5499311dd7ac39bae556fb5))
189
+ * render Mermaid diagrams on the docs site, as GitHub does ([524bd16](https://github.com/pedronastasi/manychat-ai-agent/commit/524bd165a4110464c9f5956daf434eba943451a6))
190
+
191
+
192
+ ### Specs and Docs
193
+
194
+ * date spec 014 by the day it can merge ([75fab11](https://github.com/pedronastasi/manychat-ai-agent/commit/75fab1146c8e550c50ecb047dd493aa0fa632ee9))
195
+ * diagram how agent tools work ([707e9ff](https://github.com/pedronastasi/manychat-ai-agent/commit/707e9ff7f113600d1b2929594eed3c281007f94a))
196
+ * diagram how agent tools work ([cbc6305](https://github.com/pedronastasi/manychat-ai-agent/commit/cbc6305a52e658f1b6f7fb516917af670e9e5fd4))
197
+ * link the docs site from the README with a deploy badge (spec 021) ([31643bc](https://github.com/pedronastasi/manychat-ai-agent/commit/31643bc9cc16d6625aec4e8d6bf4e26a997ffb62))
198
+ * link the docs site from the README with a deploy badge (spec 021) ([840f236](https://github.com/pedronastasi/manychat-ai-agent/commit/840f2364c8b4a81aabeebbd3009fa79b69259bb0))
199
+ * record PR 110 in spec 012 ([6f623c9](https://github.com/pedronastasi/manychat-ai-agent/commit/6f623c9869ffe0effaa3b77fa18ba68c5f5199e0))
200
+ * record the pull request that implements spec 014 ([f5a8f14](https://github.com/pedronastasi/manychat-ai-agent/commit/f5a8f142ca69c5f6fc0fbfc660b00d164780a9e0))
201
+
202
+
203
+ ### Dependencies
204
+
205
+ * **deps:** lock file maintenance ([ca30d12](https://github.com/pedronastasi/manychat-ai-agent/commit/ca30d12e7ad844ecb703a704b75b3dcf663eb20e))
206
+ * **deps:** lock file maintenance ([9bf5706](https://github.com/pedronastasi/manychat-ai-agent/commit/9bf570669dd02e9bf35e556fa6f8fc81173ae8ed))
207
+ * **deps:** update dependency typescript-eslint to v8.71.0 ([e3d1b7d](https://github.com/pedronastasi/manychat-ai-agent/commit/e3d1b7dd963f64214a03e3a3d2455412abc73097))
208
+ * **deps:** update dependency typescript-eslint to v8.71.0 - abandoned ([66054f4](https://github.com/pedronastasi/manychat-ai-agent/commit/66054f45852643bfd5de0c160a0764e88224c45a))
209
+ * **deps:** update patch dependencies ([d9d9215](https://github.com/pedronastasi/manychat-ai-agent/commit/d9d9215264a087a64a35fda8677770f2cc72f64f))
210
+ * **deps:** update patch dependencies ([9a1c31f](https://github.com/pedronastasi/manychat-ai-agent/commit/9a1c31fe0c68fc6ac90d998d1c4b79bb0a230a87))
211
+ * **deps:** update pnpm to v12.8.1 ([6bd804b](https://github.com/pedronastasi/manychat-ai-agent/commit/6bd804b462fd536cf62465f28699d6c8fbe2a7b6))
212
+ * **deps:** update pnpm to v12.8.1 ([66bc17f](https://github.com/pedronastasi/manychat-ai-agent/commit/66bc17f3249814f3e4977ed7a0313a4e163243fa))
213
+
214
+ ## [0.9.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.8.1...manychat-ai-agent-v0.9.0) (2026-10-01)
215
+
216
+
217
+ ### Features
218
+
219
+ * implement agent tools (spec 012) ([8018337](https://github.com/pedronastasi/manychat-ai-agent/commit/801833742e89c8b81f2f0360cbf815f09c0c4832))
220
+
221
+
222
+ ### Specs and Docs
223
+
224
+ * explain how agent tools work (spec 012) ([8df85ce](https://github.com/pedronastasi/manychat-ai-agent/commit/8df85ce2e59bc6e48d54075c4df977581e778340))
225
+
226
+ ## [0.8.1](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.8.0...manychat-ai-agent-v0.8.1) (2026-09-28)
227
+
228
+
229
+ ### Specs and Docs
230
+
231
+ * specify moving ManyChat calls onto manychat-sdk (spec 022) ([c5cc136](https://github.com/pedronastasi/manychat-ai-agent/commit/c5cc136368e84476738cb1da9952831b44986e1a))
232
+
233
+
234
+ ### Dependencies
235
+
236
+ * **deps:** update dependency @types/node to v24.19.0 ([cb0187b](https://github.com/pedronastasi/manychat-ai-agent/commit/cb0187b2a5e2a94416acfaaaa3696035790138de))
237
+ * **deps:** update dependency @types/node to v24.19.0 ([bc76a52](https://github.com/pedronastasi/manychat-ai-agent/commit/bc76a52507c08f6dcfe82ad45b289619fe6d7e44))
238
+ * **deps:** update patch dependencies ([ca6f447](https://github.com/pedronastasi/manychat-ai-agent/commit/ca6f447685f64553e3e64a87ce751f6dc66cdc7c))
239
+ * **deps:** update patch dependencies ([cb25a1a](https://github.com/pedronastasi/manychat-ai-agent/commit/cb25a1ac497a655241fffd59fea69154dcaabd5c))
240
+
241
+ ## [0.8.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.7.0...manychat-ai-agent-v0.8.0) (2026-09-27)
242
+
243
+
244
+ ### Features
245
+
246
+ * take issues, questions and conduct reports through forms (spec 021) ([2c76e7b](https://github.com/pedronastasi/manychat-ai-agent/commit/2c76e7b65ffa32539b34e511d691c4131fabaedc))
247
+ * take issues, questions and conduct reports through forms (spec 021) ([81fac30](https://github.com/pedronastasi/manychat-ai-agent/commit/81fac302065fb2f33d9c2d67cb8429db9b2e3365))
248
+
249
+
250
+ ### Specs and Docs
251
+
252
+ * mark spec 020 implemented ([220e9ea](https://github.com/pedronastasi/manychat-ai-agent/commit/220e9eab5e9c422789962edf8f3c3b2be8f2ccff))
253
+ * mark spec 020 implemented ([f8ab943](https://github.com/pedronastasi/manychat-ai-agent/commit/f8ab943dac3fe0580b0ef6e6473d0a3770cd1443))
254
+ * record PR 105 in spec 021 ([aed5794](https://github.com/pedronastasi/manychat-ai-agent/commit/aed579492b1e7c029154d7b900ca1e481b436b39))
255
+ * specify the contributor surface ([e7809ec](https://github.com/pedronastasi/manychat-ai-agent/commit/e7809ec8be8ba127388238f017e3efb705666188))
256
+ * specify the contributor surface ([ca479b2](https://github.com/pedronastasi/manychat-ai-agent/commit/ca479b299d64048e93df1be6fcbfbaaf28c9d914))
257
+ * stop naming the deployment repository in spec 010 ([aa0f6cf](https://github.com/pedronastasi/manychat-ai-agent/commit/aa0f6cf9f6177814a66069ec8c7d8bcb986d45ad))
258
+ * stop naming the deployment repository in spec 010 ([481e328](https://github.com/pedronastasi/manychat-ai-agent/commit/481e3286267f5af1cf2822f925ac0a36893db9f6))
259
+
260
+ ## [0.7.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.6.0...manychat-ai-agent-v0.7.0) (2026-09-27)
261
+
262
+
263
+ ### Features
264
+
265
+ * read inbound voice notes, images and videos (spec 020) ([700d2cc](https://github.com/pedronastasi/manychat-ai-agent/commit/700d2cc215984cc588d4279b2a8216fc55173917))
266
+ * read inbound voice notes, images and videos (spec 020) ([ea74381](https://github.com/pedronastasi/manychat-ai-agent/commit/ea7438118dc210ef27c921640eff2730ca4e5cfe))
267
+
268
+
269
+ ### Bug Fixes
270
+
271
+ * compare the media host as a parsed hostname, not a substring ([8a44692](https://github.com/pedronastasi/manychat-ai-agent/commit/8a44692162bb02b424e307f3a76bacd3ad653c87))
272
+
273
+
274
+ ### Specs and Docs
275
+
276
+ * specify inbound media (voice notes, images, video) ([b706b3b](https://github.com/pedronastasi/manychat-ai-agent/commit/b706b3bcad467f6090695a81ad9f8933ae87e361))
277
+
278
+ ## [0.6.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.5.3...manychat-ai-agent-v0.6.0) (2026-09-27)
279
+
280
+
281
+ ### Features
282
+
283
+ * bind a contact's history to a token ManyChat holds (spec 019) ([8bd1597](https://github.com/pedronastasi/manychat-ai-agent/commit/8bd15970c9c246891d3e2f6e78458edb0a584b9c))
284
+ * bind a contact's history to a token ManyChat holds (spec 019) ([a7799f2](https://github.com/pedronastasi/manychat-ai-agent/commit/a7799f2010bcda594ae5389fa92d64e3180567e5))
285
+ * bound history to 30 days and reset the turn cap after 24 hours (spec 018) ([f5cdd44](https://github.com/pedronastasi/manychat-ai-agent/commit/f5cdd442338e6d8239be6fe84b2d4b140eb63883))
286
+ * bound history to 30 days and reset the turn cap after 24 hours (spec 018) ([b06f349](https://github.com/pedronastasi/manychat-ai-agent/commit/b06f3490f5c6e6d4bfcbf02fe97f84eb1500dadd))
287
+ * enforce inbound request trust (spec 017) ([5056995](https://github.com/pedronastasi/manychat-ai-agent/commit/50569952622a0ecb2b8db1cc4ca2c675aa818cfc))
288
+ * enforce inbound request trust (spec 017) ([e29f676](https://github.com/pedronastasi/manychat-ai-agent/commit/e29f676943480dbaa4fc7a7b3ea1f303ecef0c9e))
289
+
290
+
291
+ ### Bug Fixes
292
+
293
+ * encode upsert timestamps through the column ([8a33177](https://github.com/pedronastasi/manychat-ai-agent/commit/8a331774ba9c96684675c1dd3bf1172de11037e3))
294
+ * encode upsert timestamps through the column, not sql.param alone ([9bf867f](https://github.com/pedronastasi/manychat-ai-agent/commit/9bf867f447cbd2ee7d054466580af0c26fe4b7f1))
295
+ * strip reply fields the model writes into message text ([8fc5421](https://github.com/pedronastasi/manychat-ai-agent/commit/8fc5421c0f79cf86f6b451bc36003a9ec5ffe8ed))
296
+ * strip reply fields the model writes into message text ([8edd948](https://github.com/pedronastasi/manychat-ai-agent/commit/8edd94899add71231690044d03d1244cfcf5116d))
297
+ * wrap Date values in sql.param() for conversation upsert ([88f0109](https://github.com/pedronastasi/manychat-ai-agent/commit/88f0109a8aa81ac7963e78d2b9153e1cbbfb41ef))
298
+ * wrap Date values in sql.param() for conversation upsert ([4738582](https://github.com/pedronastasi/manychat-ai-agent/commit/4738582d967a8276b1cb08480d8191f2d3e971bb))
299
+
300
+
301
+ ### Specs and Docs
302
+
303
+ * explain contact tokens in the README ([edcc2cb](https://github.com/pedronastasi/manychat-ai-agent/commit/edcc2cb6943912af8eb03114d67072aa074a6bcd))
304
+ * let a case carry several review criteria, one verdict each ([7fa80e5](https://github.com/pedronastasi/manychat-ai-agent/commit/7fa80e50dbfd61f5f1c41b1b928dd82b373cb1f1))
305
+ * record PR 89 in spec 017 ([a9be334](https://github.com/pedronastasi/manychat-ai-agent/commit/a9be334edf895957e9f254890f65d70f160f2ffd))
306
+ * record PR 91 in spec 018 ([25963b3](https://github.com/pedronastasi/manychat-ai-agent/commit/25963b3019dd9f7fd41a99657dcc9e88a6bb757b))
307
+ * record PR 95 in spec 019 ([4392ee3](https://github.com/pedronastasi/manychat-ai-agent/commit/4392ee3891ba7fcf93f5bfee5c3e98011b328512))
308
+ * specify a flag-gated browser test service on the mock model ([b79ac2d](https://github.com/pedronastasi/manychat-ai-agent/commit/b79ac2d587d92a26678055b30a8f7ed681e3b007))
309
+ * specify inbound request trust (spec 017, ADRs 0012-0014) ([b9c5518](https://github.com/pedronastasi/manychat-ai-agent/commit/b9c55186ea7c69f5e89164621e1811c48eb5653a))
310
+ * specify inbound request trust (spec 017, ADRs 0012-0014) ([d2b30b8](https://github.com/pedronastasi/manychat-ai-agent/commit/d2b30b88fcc5193ae92656fc108af329725388e7))
311
+ * specify model-graded evals behind a calibration gate ([c7bd2ab](https://github.com/pedronastasi/manychat-ai-agent/commit/c7bd2ab9092728335685f32966ce389fbff513c4))
312
+ * specify model-graded evals behind a calibration gate ([38478ab](https://github.com/pedronastasi/manychat-ai-agent/commit/38478ab1cb7c68d9571d2a9897a4f90c6ea54b78))
313
+ * specify the documentation site ([ce6b613](https://github.com/pedronastasi/manychat-ai-agent/commit/ce6b613f21a721498e25d33a2378f244f6a65e10))
314
+ * translate leftover Spanish strings to English ([bef7660](https://github.com/pedronastasi/manychat-ai-agent/commit/bef7660ff482d032bb5015088299635cd1c28f01))
315
+ * translate leftover Spanish strings to English ([23d2bb9](https://github.com/pedronastasi/manychat-ai-agent/commit/23d2bb98e94e52d35bf740e6f2a76c38f8fda5f8))
316
+
317
+
318
+ ### Dependencies
319
+
320
+ * **deps:** update patch dependencies ([#87](https://github.com/pedronastasi/manychat-ai-agent/issues/87)) ([46d8a11](https://github.com/pedronastasi/manychat-ai-agent/commit/46d8a11a9253457b8eb0b67061e2605a86ce8197))
321
+
322
+ ## [0.5.3](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.5.2...manychat-ai-agent-v0.5.3) (2026-09-24)
323
+
324
+
325
+ ### Specs and Docs
326
+
327
+ * add spec 013 — no verbatim repetition ([e864936](https://github.com/pedronastasi/manychat-ai-agent/commit/e8649365de1e850acc02dc0765e6c7717f89ad90))
328
+ * add spec 013 — no verbatim repetition ([e0f5ea2](https://github.com/pedronastasi/manychat-ai-agent/commit/e0f5ea27171b9e626e1a82f303580b68e8c270e4))
329
+ * record agent actions per turn and feed them back to the model ([4876c94](https://github.com/pedronastasi/manychat-ai-agent/commit/4876c94192b07e8a9b765c25c60e9a619d201463))
330
+ * specify agent tools for ManyChat flows, tags and fields ([9385f22](https://github.com/pedronastasi/manychat-ai-agent/commit/9385f22e01fa07eac28d42a5c972d58f8ef330dc))
331
+ * specify agent tools for ManyChat flows, tags and fields ([8e4d604](https://github.com/pedronastasi/manychat-ai-agent/commit/8e4d6049ad182936d1eb23fa41b7615f10a41720))
332
+
333
+
334
+ ### Dependencies
335
+
336
+ * **deps:** update minor dependencies ([b4efac6](https://github.com/pedronastasi/manychat-ai-agent/commit/b4efac6a5f95e95a1394c7ce19d7ea155e300a63))
337
+ * **deps:** update minor dependencies ([ac224f5](https://github.com/pedronastasi/manychat-ai-agent/commit/ac224f5a71f9fb2a36be35cff264c576ead39aa3))
338
+ * **deps:** update patch dependencies ([#77](https://github.com/pedronastasi/manychat-ai-agent/issues/77)) ([381c0a1](https://github.com/pedronastasi/manychat-ai-agent/commit/381c0a18d36303c76232dcf22070845a8081606f))
339
+ * **deps:** update pnpm to v12.6.0 ([025cb26](https://github.com/pedronastasi/manychat-ai-agent/commit/025cb2659c4427b9acaeede30174331880147b04))
340
+ * **deps:** update pnpm to v12.6.0 ([0d46f00](https://github.com/pedronastasi/manychat-ai-agent/commit/0d46f00c9de90ab86d9c4f266ecde07cd1ea920e))
341
+
342
+ ## [0.5.2](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.5.1...manychat-ai-agent-v0.5.2) (2026-09-18)
343
+
344
+
345
+ ### Dependencies
346
+
347
+ * **deps:** update dependency @types/node to v24 ([d269787](https://github.com/pedronastasi/manychat-ai-agent/commit/d269787c0103301ba56b280f4cf55a546faf0fa5))
348
+ * **deps:** update dependency @types/node to v24 ([cd69d3d](https://github.com/pedronastasi/manychat-ai-agent/commit/cd69d3d87e1969d657a9653f5e92e4b164063100))
349
+ * **deps:** update patch dependencies ([e748b59](https://github.com/pedronastasi/manychat-ai-agent/commit/e748b59b438cfce72f76a52ec2ebfe51286fd657))
350
+ * **deps:** update patch dependencies ([50207ba](https://github.com/pedronastasi/manychat-ai-agent/commit/50207baf39ecaea1b4e0cd32c4862eebd410863c))
351
+
352
+ ## [0.5.1](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.5.0...manychat-ai-agent-v0.5.1) (2026-09-18)
353
+
354
+
355
+ ### Bug Fixes
356
+
357
+ * never ask the closing question twice ([f9c10b7](https://github.com/pedronastasi/manychat-ai-agent/commit/f9c10b7e0f69d7c43a1496ffb15b19654c19b863))
358
+ * never ask the closing question twice ([2c6f897](https://github.com/pedronastasi/manychat-ai-agent/commit/2c6f897fc4bc4224d74d2b10c30de773c35207cf))
359
+
360
+ ## [0.5.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.4.1...manychat-ai-agent-v0.5.0) (2026-09-18)
361
+
362
+
363
+ ### Features
364
+
365
+ * make the closing question a field rather than a hope ([65072d8](https://github.com/pedronastasi/manychat-ai-agent/commit/65072d8dd97632554a4f94d6e68dcdc77af7409e))
366
+ * make the closing question a field rather than a hope ([cf7ee19](https://github.com/pedronastasi/manychat-ai-agent/commit/cf7ee19f725e3416c0a1e1e13685d95362c317b9))
367
+
368
+
369
+ ### Bug Fixes
370
+
371
+ * count content lines, and give the suite its own latency budget ([31d4382](https://github.com/pedronastasi/manychat-ai-agent/commit/31d43826f285ce3a6d0b79a4ba05fb775d009b53))
372
+ * count content lines, and give the suite its own latency budget ([ae21d99](https://github.com/pedronastasi/manychat-ai-agent/commit/ae21d99bf3b7af61db546e78b43c1bc3be5b8c15))
373
+ * ground prices documented in catalog prose ([281613c](https://github.com/pedronastasi/manychat-ai-agent/commit/281613cc07edfa74b20318a85430143e21c3f12d))
374
+ * ground prices documented in catalog prose ([8a93597](https://github.com/pedronastasi/manychat-ai-agent/commit/8a935975e305a68b2db91c6dcd50e48c538829e7))
375
+ * last Spanish string in an integration test fixture ([c22e82d](https://github.com/pedronastasi/manychat-ai-agent/commit/c22e82dc2511fda88e41cd84750b1bbcdf8daa83))
376
+ * omit temperature for models that reject it ([1f934c8](https://github.com/pedronastasi/manychat-ai-agent/commit/1f934c843e661646a157a1acdc96265092e04afd))
377
+ * omit temperature for models that reject it ([279d6fb](https://github.com/pedronastasi/manychat-ai-agent/commit/279d6fb66022cd5f5d94c07335339ea4a87b0bf2))
378
+ * remove Spanish and real deployment data from test fixtures ([9fd5797](https://github.com/pedronastasi/manychat-ai-agent/commit/9fd5797398955894fb7c6a5ad7bbf6d3c19755be))
379
+ * stop discarding every message after the first on WhatsApp ([5e39c07](https://github.com/pedronastasi/manychat-ai-agent/commit/5e39c07b7afa496641fb111df4e2e1b527d50ce8))
380
+ * stop discarding every message after the first on WhatsApp ([bdc797e](https://github.com/pedronastasi/manychat-ai-agent/commit/bdc797e4630547597612a9feaede5f49adaed473))
381
+
382
+
383
+ ### Specs and Docs
384
+
385
+ * document EVAL_MAX_LATENCY_MS in .env.example ([2f7cec0](https://github.com/pedronastasi/manychat-ai-agent/commit/2f7cec0db8741a6d4ff2b81f772770ac000a3376))
386
+
387
+ ## [0.4.1](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.4.0...manychat-ai-agent-v0.4.1) (2026-09-17)
388
+
389
+
390
+ ### Refactors
391
+
392
+ * migrate from deprecated generateObject to generateText ([3988740](https://github.com/pedronastasi/manychat-ai-agent/commit/3988740ce567edc1440b7d27bf12b9fa7c146ba6))
393
+ * migrate from deprecated generateObject to generateText ([7319a6f](https://github.com/pedronastasi/manychat-ai-agent/commit/7319a6f4a20a62f052727243446a7cc333d0e49e))
394
+
395
+ ## [0.4.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.3.6...manychat-ai-agent-v0.4.0) (2026-09-17)
396
+
397
+
398
+ ### Features
399
+
400
+ * cap reasoning effort, and make a dead model call visible ([c9cb90a](https://github.com/pedronastasi/manychat-ai-agent/commit/c9cb90a21f127f45d1560569e3966db1ca6fff5a))
401
+ * cap reasoning effort, and make a dead model call visible ([257f039](https://github.com/pedronastasi/manychat-ai-agent/commit/257f039a05fc84b82739b45c3854ab1637f755d0))
402
+
403
+
404
+ ### Bug Fixes
405
+
406
+ * add serial seq column to turns for deterministic ordering ([7ecf70f](https://github.com/pedronastasi/manychat-ai-agent/commit/7ecf70f28292e9eceb104c3195c77da16ed5d332))
407
+ * deterministic turn ordering with serial seq column ([537ec70](https://github.com/pedronastasi/manychat-ai-agent/commit/537ec70a1f12ede6a8b0794ce01ef64c23ca62ce))
408
+ * prevent false escalation on short conversational replies ([85af807](https://github.com/pedronastasi/manychat-ai-agent/commit/85af8076fcf3d2b071212761db16e7f441ca8bed))
409
+ * prevent false escalation on short conversational replies ([7c4992e](https://github.com/pedronastasi/manychat-ai-agent/commit/7c4992e9157c6322d4c9235a25e7199d907eedc7))
410
+ * reload the persona and catalog on SIGHUP ([7293d59](https://github.com/pedronastasi/manychat-ai-agent/commit/7293d59751aca0afd65321cefbbecc7b1de088a1))
411
+ * reload the persona and catalog on SIGHUP ([c43222e](https://github.com/pedronastasi/manychat-ai-agent/commit/c43222e44838a68188e43978250303eab6f87107))
412
+
413
+ ## [0.3.6](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.3.5...manychat-ai-agent-v0.3.6) (2026-09-16)
414
+
415
+
416
+ ### Bug Fixes
417
+
418
+ * **docker:** copy pnpm-workspace.yaml into build stage ([89441f6](https://github.com/pedronastasi/manychat-ai-agent/commit/89441f6a5116e58b42918d41ab44fc21371a439d))
419
+ * **docker:** copy pnpm-workspace.yaml into build stage ([11d39f5](https://github.com/pedronastasi/manychat-ai-agent/commit/11d39f5ee4209ce1f1e37a2817967ed1e956d8d7))
420
+
421
+ ## [0.3.5](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.3.4...manychat-ai-agent-v0.3.5) (2026-09-16)
422
+
423
+
424
+ ### Bug Fixes
425
+
426
+ * **release:** map chore(deps) to a visible Dependencies changelog section ([0d259eb](https://github.com/pedronastasi/manychat-ai-agent/commit/0d259eb339cc619233877cf9676674ea0b03e99b))
427
+ * **release:** map chore(deps) to visible Dependencies section ([571935c](https://github.com/pedronastasi/manychat-ai-agent/commit/571935ccf37939bb6681a2642d12864f528e3314))
428
+ * **renovate:** remove semanticCommitType override ([9a29ce4](https://github.com/pedronastasi/manychat-ai-agent/commit/9a29ce4d4726db11c0ea6c11724e3be9537eb6ad))
429
+ * **renovate:** remove semanticCommitType override so :semanticCommits preset controls PR prefixes ([566cd84](https://github.com/pedronastasi/manychat-ai-agent/commit/566cd84e6620cc364d6773b1125ff9271d599b2d))
430
+
431
+
432
+ ### Dependencies
433
+
434
+ * **deps:** update dependency ai to v7.0.105 ([c0388d2](https://github.com/pedronastasi/manychat-ai-agent/commit/c0388d28bf8f08879265e06bed262a32f32e5982))
435
+ * **deps:** update dependency ai to v7.0.105 ([4a8843b](https://github.com/pedronastasi/manychat-ai-agent/commit/4a8843b7ef27d2512cc42d3aa6583c58278226f3))
436
+ * **deps:** update pnpm to v12.4.2 ([c9ea9b4](https://github.com/pedronastasi/manychat-ai-agent/commit/c9ea9b439f500e1fd79e95a76d2a05288f052bad))
437
+ * **deps:** update pnpm to v12.4.2 ([c508eef](https://github.com/pedronastasi/manychat-ai-agent/commit/c508eefbfee3757ff392cbf14d7177ae1766ed1e))
438
+
439
+ ## [0.3.4](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.3.3...manychat-ai-agent-v0.3.4) (2026-09-16)
440
+
441
+
442
+ ### Bug Fixes
443
+
444
+ * restore pnpm-workspace.yaml with minimumReleaseAge disabled ([6c96d58](https://github.com/pedronastasi/manychat-ai-agent/commit/6c96d58571d3d8943356e59097a125a4873e2f98))
445
+
446
+
447
+ ### Specs and Docs
448
+
449
+ * add deps prefix to spec 010 changelog table ([d0b7b67](https://github.com/pedronastasi/manychat-ai-agent/commit/d0b7b672e67a5768431ff4ca6847b0d0a650e8d0))
450
+
451
+ ## [0.3.3](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.3.2...manychat-ai-agent-v0.3.3) (2026-09-16)
452
+
453
+
454
+ ### Bug Fixes
455
+
456
+ * regenerate lockfile for pnpm 12 and add workspace config ([67fc8d8](https://github.com/pedronastasi/manychat-ai-agent/commit/67fc8d8fbc1e0f1c3a44b142175175cac5f52243))
457
+
458
+ ## [0.3.2](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.3.1...manychat-ai-agent-v0.3.2) (2026-09-16)
459
+
460
+
461
+ ### Bug Fixes
462
+
463
+ * downgrade to TypeScript 6.0 — typescript-eslint does not support TS 7 ([c26a70d](https://github.com/pedronastasi/manychat-ai-agent/commit/c26a70d49eb54c1f1473ca4818e12c4528445e00))
464
+
465
+ ## [0.3.1](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.3.0...manychat-ai-agent-v0.3.1) (2026-09-16)
466
+
467
+
468
+ ### Bug Fixes
469
+
470
+ * gate release-please to the public repo only ([fa58933](https://github.com/pedronastasi/manychat-ai-agent/commit/fa58933e11787c6c91650d5aac3789115ace160e))
471
+ * gate release-please to the public repo only ([b545948](https://github.com/pedronastasi/manychat-ai-agent/commit/b545948228aca002a2ec39683c16fe491e5da610))
472
+
473
+ ## [0.3.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.2.0...manychat-ai-agent-v0.3.0) (2026-09-16)
474
+
475
+
476
+ ### Features
477
+
478
+ * batch dependency updates and auto-merge only patches ([7bfb068](https://github.com/pedronastasi/manychat-ai-agent/commit/7bfb0687c4c1fc577ac48de8d232cf3bfa2835f8))
479
+ * batch dependency updates and auto-merge only patches ([d628930](https://github.com/pedronastasi/manychat-ai-agent/commit/d6289304d83587ff0d16ed0f96ad4d1d8eba64dd))
480
+
481
+
482
+ ### Specs and Docs
483
+
484
+ * record the PR that landed specs/011 ([cc0c14a](https://github.com/pedronastasi/manychat-ai-agent/commit/cc0c14ae166b714a376f24193cd9d160ab46358c))
485
+
486
+ ## [0.2.0](https://github.com/pedronastasi/manychat-ai-agent/compare/manychat-ai-agent-v0.1.0...manychat-ai-agent-v0.2.0) (2026-09-16)
487
+
488
+
489
+ ### Features
490
+
491
+ * add Ollama as a local model provider ([1274bac](https://github.com/pedronastasi/manychat-ai-agent/commit/1274bacaa9882db22cc558c7cad7ffcfeb898738))
492
+ * add Ollama as a local model provider (specs/007) ([aa1da2f](https://github.com/pedronastasi/manychat-ai-agent/commit/aa1da2f0f5ba078a5ea45260eccea24f779040e1))
493
+ * cut releases from a reviewable Release PR ([de2a4c6](https://github.com/pedronastasi/manychat-ai-agent/commit/de2a4c645f5d5c728cd44f175ccee8b3543c4045))
494
+ * cut releases from a reviewable Release PR ([d8c4364](https://github.com/pedronastasi/manychat-ai-agent/commit/d8c4364c77d49c52f778367b67f327c227a309ac))
495
+ * implement the agent gateway MVP ([63be48a](https://github.com/pedronastasi/manychat-ai-agent/commit/63be48a28c8251d883d356b7a652ac61f3c316b0))
496
+ * implement the agent gateway MVP ([aba2203](https://github.com/pedronastasi/manychat-ai-agent/commit/aba2203c7215c1e84634e2f0360bf89452928c18))
497
+ * let a tenant carry its own eval suite ([e2b50da](https://github.com/pedronastasi/manychat-ai-agent/commit/e2b50dacc3cfd759fe31a1c5779491caa574e42e))
498
+ * let a tenant carry its own eval suite ([704e530](https://github.com/pedronastasi/manychat-ai-agent/commit/704e530c6aa22e836d17b7ffd3ff63ea160e8f93))
499
+ * make a spec state whether its behaviour exists yet ([89f653a](https://github.com/pedronastasi/manychat-ai-agent/commit/89f653a60cd90e7192efcefe475c6ffb6915e01a))
500
+ * make a spec state whether its behaviour exists yet ([423e318](https://github.com/pedronastasi/manychat-ai-agent/commit/423e318ec6469114060b91eb9959fcc4cdb9d375))
501
+ * replace sendContent with flow-based delivery (specs/002) ([0603016](https://github.com/pedronastasi/manychat-ai-agent/commit/0603016d4e4efbf455b4f4fc2aa8a69c8ede0ddf))
502
+ * scripted opening on a configured sentinel (specs/001) ([9bc8ff5](https://github.com/pedronastasi/manychat-ai-agent/commit/9bc8ff5c87e9375ec89018da2ee14753cb10258a))
503
+ * scripted opening trigger and flow-based delivery ([a4cd0c5](https://github.com/pedronastasi/manychat-ai-agent/commit/a4cd0c5d1800fe398ee8cb094371df2d76f70456))
504
+
505
+
506
+ ### Bug Fixes
507
+
508
+ * green eval:mock on main after [#17](https://github.com/pedronastasi/manychat-ai-agent/issues/17) ([00a50c2](https://github.com/pedronastasi/manychat-ai-agent/commit/00a50c2b23d3a756b4aa6035e3453c03714864df))
509
+ * keep MODEL_ABORT_MS armed on the deferred path, record the model ([2089bcc](https://github.com/pedronastasi/manychat-ai-agent/commit/2089bcc7cd1f29adc6178f0b90588506571c12f4))
510
+ * mount config into container and update Postgres 18 volume path ([7718a3b](https://github.com/pedronastasi/manychat-ai-agent/commit/7718a3b813f90d2dc5840ed02f704507c5a8b927))
511
+
512
+
513
+ ### Refactors
514
+
515
+ * English throughout, and no customer copy in source ([e3094ee](https://github.com/pedronastasi/manychat-ai-agent/commit/e3094ee83c75de1ddca78b9abb5eb0912a3a5b15))
516
+ * English throughout, and no customer copy in source ([8662c05](https://github.com/pedronastasi/manychat-ai-agent/commit/8662c0584d7041f6e74da5ca002d06de241a935c))
517
+ * implement ports as classes rather than factory functions ([1738550](https://github.com/pedronastasi/manychat-ai-agent/commit/17385504b22749a00f6aa1b7af1014ad526226e4))
518
+ * implement ports as classes rather than factory functions ([36245bd](https://github.com/pedronastasi/manychat-ai-agent/commit/36245bd7c4599a0b920f457ff8a9bea7fb92459b))
519
+
520
+
521
+ ### Specs and Docs
522
+
523
+ * add CLAUDE.md with codebase documentation ([3b94ae4](https://github.com/pedronastasi/manychat-ai-agent/commit/3b94ae4943d9fe835fe36ce68785a3f4547a27af))
524
+ * add CLAUDE.md with codebase documentation ([34d24b2](https://github.com/pedronastasi/manychat-ai-agent/commit/34d24b2aee8b4ed1f1b5db64f84c3c9e03d7383b))
525
+ * add Docker setup and API walkthrough to README ([8cc50c2](https://github.com/pedronastasi/manychat-ai-agent/commit/8cc50c2c33a05136c55459321dd0970fc3b94c39))
526
+ * add the pull request template specified in 006 ([b329490](https://github.com/pedronastasi/manychat-ai-agent/commit/b329490ca49dc49261cfd095df164bf970abb63d))
527
+ * close spec 007's unkept promise and verify its claims ([a988eb2](https://github.com/pedronastasi/manychat-ai-agent/commit/a988eb2a2da203593a96b047568b2c4f8ade22fb))
528
+ * close spec 007's unkept promise and verify its claims ([0381946](https://github.com/pedronastasi/manychat-ai-agent/commit/0381946cbc4dfdbcbe034e4ea2ed2c3ba2184875))
529
+ * link to PGlite in quick-start blurb ([ef25a41](https://github.com/pedronastasi/manychat-ai-agent/commit/ef25a41177e15d120578ba5ea7ab5ee182459e32))
530
+ * record classes as the standard for port implementations ([746c874](https://github.com/pedronastasi/manychat-ai-agent/commit/746c874422d56380bc6100c3a4100bc47cfa08d2))
531
+ * record the PR that landed specs/009 ([53bdae0](https://github.com/pedronastasi/manychat-ai-agent/commit/53bdae02d67c890e317cc14d27982774295ecf9b))
532
+ * remove tenant identity from the published repo ([e24b335](https://github.com/pedronastasi/manychat-ai-agent/commit/e24b335d4965dbef9daff91a6fbbd51d6c2c4715))
533
+ * require English in the repository, and no copy in source ([395bcda](https://github.com/pedronastasi/manychat-ai-agent/commit/395bcda2426455a478cbb9c34e54165269e10627))
534
+ * specify running a real model locally via Ollama ([2aeb100](https://github.com/pedronastasi/manychat-ai-agent/commit/2aeb100a5d284f5493c1dd008fe2d3df4a930475))
535
+ * specify running a real model locally via Ollama ([7fc04ca](https://github.com/pedronastasi/manychat-ai-agent/commit/7fc04ca43e31bf0f8026ca6abf4486f61ba5203d))
536
+ * specify tenant eval suites ([faff5af](https://github.com/pedronastasi/manychat-ai-agent/commit/faff5af592282125d3166974aa51997acf2adb0c))
537
+ * specify the agent before building it ([095e7a4](https://github.com/pedronastasi/manychat-ai-agent/commit/095e7a472b0940f8e93638a593a0190f9a5062b4))
538
+ * specify the release workflow and dependency updates ([d63cdca](https://github.com/pedronastasi/manychat-ai-agent/commit/d63cdca7d595b9684a5eb11d05c14d6ea789f62a))
539
+ * specify the release workflow and dependency updates ([3253c49](https://github.com/pedronastasi/manychat-ai-agent/commit/3253c49c85ead6ba41d3ef54660be6a7f45b30a2))
540
+ * specify the testing strategy ([8b39203](https://github.com/pedronastasi/manychat-ai-agent/commit/8b392032f858acce1c27cd07ae1c5ae11c8942ee))
541
+ * specify what a pull request must say ([beeb226](https://github.com/pedronastasi/manychat-ai-agent/commit/beeb226da1f5e9d3337265696e6c1af902d3e293))
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Pablo Nastasi
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.