availsync 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 (460) hide show
  1. package/.adal/skills/stripe-best-practices/SKILL.md +42 -0
  2. package/.adal/skills/stripe-best-practices/references/billing.md +36 -0
  3. package/.adal/skills/stripe-best-practices/references/connect.md +48 -0
  4. package/.adal/skills/stripe-best-practices/references/payments.md +79 -0
  5. package/.adal/skills/stripe-best-practices/references/security.md +109 -0
  6. package/.adal/skills/stripe-best-practices/references/treasury.md +16 -0
  7. package/.adal/skills/stripe-projects/SKILL.md +139 -0
  8. package/.adal/skills/upgrade-stripe/SKILL.md +185 -0
  9. package/.agents/skills/stripe-best-practices/SKILL.md +42 -0
  10. package/.agents/skills/stripe-best-practices/references/billing.md +36 -0
  11. package/.agents/skills/stripe-best-practices/references/connect.md +48 -0
  12. package/.agents/skills/stripe-best-practices/references/payments.md +79 -0
  13. package/.agents/skills/stripe-best-practices/references/security.md +109 -0
  14. package/.agents/skills/stripe-best-practices/references/treasury.md +16 -0
  15. package/.agents/skills/stripe-projects/SKILL.md +139 -0
  16. package/.agents/skills/upgrade-stripe/SKILL.md +185 -0
  17. package/.augment/skills/stripe-best-practices/SKILL.md +42 -0
  18. package/.augment/skills/stripe-best-practices/references/billing.md +36 -0
  19. package/.augment/skills/stripe-best-practices/references/connect.md +48 -0
  20. package/.augment/skills/stripe-best-practices/references/payments.md +79 -0
  21. package/.augment/skills/stripe-best-practices/references/security.md +109 -0
  22. package/.augment/skills/stripe-best-practices/references/treasury.md +16 -0
  23. package/.augment/skills/stripe-projects/SKILL.md +139 -0
  24. package/.augment/skills/upgrade-stripe/SKILL.md +185 -0
  25. package/.bob/skills/stripe-best-practices/SKILL.md +42 -0
  26. package/.bob/skills/stripe-best-practices/references/billing.md +36 -0
  27. package/.bob/skills/stripe-best-practices/references/connect.md +48 -0
  28. package/.bob/skills/stripe-best-practices/references/payments.md +79 -0
  29. package/.bob/skills/stripe-best-practices/references/security.md +109 -0
  30. package/.bob/skills/stripe-best-practices/references/treasury.md +16 -0
  31. package/.bob/skills/stripe-projects/SKILL.md +139 -0
  32. package/.bob/skills/upgrade-stripe/SKILL.md +185 -0
  33. package/.claude/settings.local.json +7 -0
  34. package/.claude/skills/stripe-best-practices/SKILL.md +42 -0
  35. package/.claude/skills/stripe-best-practices/references/billing.md +36 -0
  36. package/.claude/skills/stripe-best-practices/references/connect.md +48 -0
  37. package/.claude/skills/stripe-best-practices/references/payments.md +79 -0
  38. package/.claude/skills/stripe-best-practices/references/security.md +109 -0
  39. package/.claude/skills/stripe-best-practices/references/treasury.md +16 -0
  40. package/.claude/skills/stripe-projects/SKILL.md +139 -0
  41. package/.claude/skills/upgrade-stripe/SKILL.md +185 -0
  42. package/.codebuddy/skills/stripe-best-practices/SKILL.md +42 -0
  43. package/.codebuddy/skills/stripe-best-practices/references/billing.md +36 -0
  44. package/.codebuddy/skills/stripe-best-practices/references/connect.md +48 -0
  45. package/.codebuddy/skills/stripe-best-practices/references/payments.md +79 -0
  46. package/.codebuddy/skills/stripe-best-practices/references/security.md +109 -0
  47. package/.codebuddy/skills/stripe-best-practices/references/treasury.md +16 -0
  48. package/.codebuddy/skills/stripe-projects/SKILL.md +139 -0
  49. package/.codebuddy/skills/upgrade-stripe/SKILL.md +185 -0
  50. package/.commandcode/skills/stripe-best-practices/SKILL.md +42 -0
  51. package/.commandcode/skills/stripe-best-practices/references/billing.md +36 -0
  52. package/.commandcode/skills/stripe-best-practices/references/connect.md +48 -0
  53. package/.commandcode/skills/stripe-best-practices/references/payments.md +79 -0
  54. package/.commandcode/skills/stripe-best-practices/references/security.md +109 -0
  55. package/.commandcode/skills/stripe-best-practices/references/treasury.md +16 -0
  56. package/.commandcode/skills/stripe-projects/SKILL.md +139 -0
  57. package/.commandcode/skills/upgrade-stripe/SKILL.md +185 -0
  58. package/.continue/skills/stripe-best-practices/SKILL.md +42 -0
  59. package/.continue/skills/stripe-best-practices/references/billing.md +36 -0
  60. package/.continue/skills/stripe-best-practices/references/connect.md +48 -0
  61. package/.continue/skills/stripe-best-practices/references/payments.md +79 -0
  62. package/.continue/skills/stripe-best-practices/references/security.md +109 -0
  63. package/.continue/skills/stripe-best-practices/references/treasury.md +16 -0
  64. package/.continue/skills/stripe-projects/SKILL.md +139 -0
  65. package/.continue/skills/upgrade-stripe/SKILL.md +185 -0
  66. package/.cortex/skills/stripe-best-practices/SKILL.md +42 -0
  67. package/.cortex/skills/stripe-best-practices/references/billing.md +36 -0
  68. package/.cortex/skills/stripe-best-practices/references/connect.md +48 -0
  69. package/.cortex/skills/stripe-best-practices/references/payments.md +79 -0
  70. package/.cortex/skills/stripe-best-practices/references/security.md +109 -0
  71. package/.cortex/skills/stripe-best-practices/references/treasury.md +16 -0
  72. package/.cortex/skills/stripe-projects/SKILL.md +139 -0
  73. package/.cortex/skills/upgrade-stripe/SKILL.md +185 -0
  74. package/.crush/skills/stripe-best-practices/SKILL.md +42 -0
  75. package/.crush/skills/stripe-best-practices/references/billing.md +36 -0
  76. package/.crush/skills/stripe-best-practices/references/connect.md +48 -0
  77. package/.crush/skills/stripe-best-practices/references/payments.md +79 -0
  78. package/.crush/skills/stripe-best-practices/references/security.md +109 -0
  79. package/.crush/skills/stripe-best-practices/references/treasury.md +16 -0
  80. package/.crush/skills/stripe-projects/SKILL.md +139 -0
  81. package/.crush/skills/upgrade-stripe/SKILL.md +185 -0
  82. package/.env.example +20 -0
  83. package/.factory/skills/stripe-best-practices/SKILL.md +42 -0
  84. package/.factory/skills/stripe-best-practices/references/billing.md +36 -0
  85. package/.factory/skills/stripe-best-practices/references/connect.md +48 -0
  86. package/.factory/skills/stripe-best-practices/references/payments.md +79 -0
  87. package/.factory/skills/stripe-best-practices/references/security.md +109 -0
  88. package/.factory/skills/stripe-best-practices/references/treasury.md +16 -0
  89. package/.factory/skills/stripe-projects/SKILL.md +139 -0
  90. package/.factory/skills/upgrade-stripe/SKILL.md +185 -0
  91. package/.goose/skills/stripe-best-practices/SKILL.md +42 -0
  92. package/.goose/skills/stripe-best-practices/references/billing.md +36 -0
  93. package/.goose/skills/stripe-best-practices/references/connect.md +48 -0
  94. package/.goose/skills/stripe-best-practices/references/payments.md +79 -0
  95. package/.goose/skills/stripe-best-practices/references/security.md +109 -0
  96. package/.goose/skills/stripe-best-practices/references/treasury.md +16 -0
  97. package/.goose/skills/stripe-projects/SKILL.md +139 -0
  98. package/.goose/skills/upgrade-stripe/SKILL.md +185 -0
  99. package/.iflow/skills/stripe-best-practices/SKILL.md +42 -0
  100. package/.iflow/skills/stripe-best-practices/references/billing.md +36 -0
  101. package/.iflow/skills/stripe-best-practices/references/connect.md +48 -0
  102. package/.iflow/skills/stripe-best-practices/references/payments.md +79 -0
  103. package/.iflow/skills/stripe-best-practices/references/security.md +109 -0
  104. package/.iflow/skills/stripe-best-practices/references/treasury.md +16 -0
  105. package/.iflow/skills/stripe-projects/SKILL.md +139 -0
  106. package/.iflow/skills/upgrade-stripe/SKILL.md +185 -0
  107. package/.junie/skills/stripe-best-practices/SKILL.md +42 -0
  108. package/.junie/skills/stripe-best-practices/references/billing.md +36 -0
  109. package/.junie/skills/stripe-best-practices/references/connect.md +48 -0
  110. package/.junie/skills/stripe-best-practices/references/payments.md +79 -0
  111. package/.junie/skills/stripe-best-practices/references/security.md +109 -0
  112. package/.junie/skills/stripe-best-practices/references/treasury.md +16 -0
  113. package/.junie/skills/stripe-projects/SKILL.md +139 -0
  114. package/.junie/skills/upgrade-stripe/SKILL.md +185 -0
  115. package/.kilocode/skills/stripe-best-practices/SKILL.md +42 -0
  116. package/.kilocode/skills/stripe-best-practices/references/billing.md +36 -0
  117. package/.kilocode/skills/stripe-best-practices/references/connect.md +48 -0
  118. package/.kilocode/skills/stripe-best-practices/references/payments.md +79 -0
  119. package/.kilocode/skills/stripe-best-practices/references/security.md +109 -0
  120. package/.kilocode/skills/stripe-best-practices/references/treasury.md +16 -0
  121. package/.kilocode/skills/stripe-projects/SKILL.md +139 -0
  122. package/.kilocode/skills/upgrade-stripe/SKILL.md +185 -0
  123. package/.kiro/skills/stripe-best-practices/SKILL.md +42 -0
  124. package/.kiro/skills/stripe-best-practices/references/billing.md +36 -0
  125. package/.kiro/skills/stripe-best-practices/references/connect.md +48 -0
  126. package/.kiro/skills/stripe-best-practices/references/payments.md +79 -0
  127. package/.kiro/skills/stripe-best-practices/references/security.md +109 -0
  128. package/.kiro/skills/stripe-best-practices/references/treasury.md +16 -0
  129. package/.kiro/skills/stripe-projects/SKILL.md +139 -0
  130. package/.kiro/skills/upgrade-stripe/SKILL.md +185 -0
  131. package/.kode/skills/stripe-best-practices/SKILL.md +42 -0
  132. package/.kode/skills/stripe-best-practices/references/billing.md +36 -0
  133. package/.kode/skills/stripe-best-practices/references/connect.md +48 -0
  134. package/.kode/skills/stripe-best-practices/references/payments.md +79 -0
  135. package/.kode/skills/stripe-best-practices/references/security.md +109 -0
  136. package/.kode/skills/stripe-best-practices/references/treasury.md +16 -0
  137. package/.kode/skills/stripe-projects/SKILL.md +139 -0
  138. package/.kode/skills/upgrade-stripe/SKILL.md +185 -0
  139. package/.mcpjam/skills/stripe-best-practices/SKILL.md +42 -0
  140. package/.mcpjam/skills/stripe-best-practices/references/billing.md +36 -0
  141. package/.mcpjam/skills/stripe-best-practices/references/connect.md +48 -0
  142. package/.mcpjam/skills/stripe-best-practices/references/payments.md +79 -0
  143. package/.mcpjam/skills/stripe-best-practices/references/security.md +109 -0
  144. package/.mcpjam/skills/stripe-best-practices/references/treasury.md +16 -0
  145. package/.mcpjam/skills/stripe-projects/SKILL.md +139 -0
  146. package/.mcpjam/skills/upgrade-stripe/SKILL.md +185 -0
  147. package/.mux/skills/stripe-best-practices/SKILL.md +42 -0
  148. package/.mux/skills/stripe-best-practices/references/billing.md +36 -0
  149. package/.mux/skills/stripe-best-practices/references/connect.md +48 -0
  150. package/.mux/skills/stripe-best-practices/references/payments.md +79 -0
  151. package/.mux/skills/stripe-best-practices/references/security.md +109 -0
  152. package/.mux/skills/stripe-best-practices/references/treasury.md +16 -0
  153. package/.mux/skills/stripe-projects/SKILL.md +139 -0
  154. package/.mux/skills/upgrade-stripe/SKILL.md +185 -0
  155. package/.neovate/skills/stripe-best-practices/SKILL.md +42 -0
  156. package/.neovate/skills/stripe-best-practices/references/billing.md +36 -0
  157. package/.neovate/skills/stripe-best-practices/references/connect.md +48 -0
  158. package/.neovate/skills/stripe-best-practices/references/payments.md +79 -0
  159. package/.neovate/skills/stripe-best-practices/references/security.md +109 -0
  160. package/.neovate/skills/stripe-best-practices/references/treasury.md +16 -0
  161. package/.neovate/skills/stripe-projects/SKILL.md +139 -0
  162. package/.neovate/skills/upgrade-stripe/SKILL.md +185 -0
  163. package/.nixpacksignore +14 -0
  164. package/.openhands/skills/stripe-best-practices/SKILL.md +42 -0
  165. package/.openhands/skills/stripe-best-practices/references/billing.md +36 -0
  166. package/.openhands/skills/stripe-best-practices/references/connect.md +48 -0
  167. package/.openhands/skills/stripe-best-practices/references/payments.md +79 -0
  168. package/.openhands/skills/stripe-best-practices/references/security.md +109 -0
  169. package/.openhands/skills/stripe-best-practices/references/treasury.md +16 -0
  170. package/.openhands/skills/stripe-projects/SKILL.md +139 -0
  171. package/.openhands/skills/upgrade-stripe/SKILL.md +185 -0
  172. package/.pi/skills/stripe-best-practices/SKILL.md +42 -0
  173. package/.pi/skills/stripe-best-practices/references/billing.md +36 -0
  174. package/.pi/skills/stripe-best-practices/references/connect.md +48 -0
  175. package/.pi/skills/stripe-best-practices/references/payments.md +79 -0
  176. package/.pi/skills/stripe-best-practices/references/security.md +109 -0
  177. package/.pi/skills/stripe-best-practices/references/treasury.md +16 -0
  178. package/.pi/skills/stripe-projects/SKILL.md +139 -0
  179. package/.pi/skills/upgrade-stripe/SKILL.md +185 -0
  180. package/.pochi/skills/stripe-best-practices/SKILL.md +42 -0
  181. package/.pochi/skills/stripe-best-practices/references/billing.md +36 -0
  182. package/.pochi/skills/stripe-best-practices/references/connect.md +48 -0
  183. package/.pochi/skills/stripe-best-practices/references/payments.md +79 -0
  184. package/.pochi/skills/stripe-best-practices/references/security.md +109 -0
  185. package/.pochi/skills/stripe-best-practices/references/treasury.md +16 -0
  186. package/.pochi/skills/stripe-projects/SKILL.md +139 -0
  187. package/.pochi/skills/upgrade-stripe/SKILL.md +185 -0
  188. package/.qoder/skills/stripe-best-practices/SKILL.md +42 -0
  189. package/.qoder/skills/stripe-best-practices/references/billing.md +36 -0
  190. package/.qoder/skills/stripe-best-practices/references/connect.md +48 -0
  191. package/.qoder/skills/stripe-best-practices/references/payments.md +79 -0
  192. package/.qoder/skills/stripe-best-practices/references/security.md +109 -0
  193. package/.qoder/skills/stripe-best-practices/references/treasury.md +16 -0
  194. package/.qoder/skills/stripe-projects/SKILL.md +139 -0
  195. package/.qoder/skills/upgrade-stripe/SKILL.md +185 -0
  196. package/.qwen/skills/stripe-best-practices/SKILL.md +42 -0
  197. package/.qwen/skills/stripe-best-practices/references/billing.md +36 -0
  198. package/.qwen/skills/stripe-best-practices/references/connect.md +48 -0
  199. package/.qwen/skills/stripe-best-practices/references/payments.md +79 -0
  200. package/.qwen/skills/stripe-best-practices/references/security.md +109 -0
  201. package/.qwen/skills/stripe-best-practices/references/treasury.md +16 -0
  202. package/.qwen/skills/stripe-projects/SKILL.md +139 -0
  203. package/.qwen/skills/upgrade-stripe/SKILL.md +185 -0
  204. package/.roo/skills/stripe-best-practices/SKILL.md +42 -0
  205. package/.roo/skills/stripe-best-practices/references/billing.md +36 -0
  206. package/.roo/skills/stripe-best-practices/references/connect.md +48 -0
  207. package/.roo/skills/stripe-best-practices/references/payments.md +79 -0
  208. package/.roo/skills/stripe-best-practices/references/security.md +109 -0
  209. package/.roo/skills/stripe-best-practices/references/treasury.md +16 -0
  210. package/.roo/skills/stripe-projects/SKILL.md +139 -0
  211. package/.roo/skills/upgrade-stripe/SKILL.md +185 -0
  212. package/.trae/skills/stripe-best-practices/SKILL.md +42 -0
  213. package/.trae/skills/stripe-best-practices/references/billing.md +36 -0
  214. package/.trae/skills/stripe-best-practices/references/connect.md +48 -0
  215. package/.trae/skills/stripe-best-practices/references/payments.md +79 -0
  216. package/.trae/skills/stripe-best-practices/references/security.md +109 -0
  217. package/.trae/skills/stripe-best-practices/references/treasury.md +16 -0
  218. package/.trae/skills/stripe-projects/SKILL.md +139 -0
  219. package/.trae/skills/upgrade-stripe/SKILL.md +185 -0
  220. package/.vibe/skills/stripe-best-practices/SKILL.md +42 -0
  221. package/.vibe/skills/stripe-best-practices/references/billing.md +36 -0
  222. package/.vibe/skills/stripe-best-practices/references/connect.md +48 -0
  223. package/.vibe/skills/stripe-best-practices/references/payments.md +79 -0
  224. package/.vibe/skills/stripe-best-practices/references/security.md +109 -0
  225. package/.vibe/skills/stripe-best-practices/references/treasury.md +16 -0
  226. package/.vibe/skills/stripe-projects/SKILL.md +139 -0
  227. package/.vibe/skills/upgrade-stripe/SKILL.md +185 -0
  228. package/.windsurf/skills/stripe-best-practices/SKILL.md +42 -0
  229. package/.windsurf/skills/stripe-best-practices/references/billing.md +36 -0
  230. package/.windsurf/skills/stripe-best-practices/references/connect.md +48 -0
  231. package/.windsurf/skills/stripe-best-practices/references/payments.md +79 -0
  232. package/.windsurf/skills/stripe-best-practices/references/security.md +109 -0
  233. package/.windsurf/skills/stripe-best-practices/references/treasury.md +16 -0
  234. package/.windsurf/skills/stripe-projects/SKILL.md +139 -0
  235. package/.windsurf/skills/upgrade-stripe/SKILL.md +185 -0
  236. package/.zencoder/skills/stripe-best-practices/SKILL.md +42 -0
  237. package/.zencoder/skills/stripe-best-practices/references/billing.md +36 -0
  238. package/.zencoder/skills/stripe-best-practices/references/connect.md +48 -0
  239. package/.zencoder/skills/stripe-best-practices/references/payments.md +79 -0
  240. package/.zencoder/skills/stripe-best-practices/references/security.md +109 -0
  241. package/.zencoder/skills/stripe-best-practices/references/treasury.md +16 -0
  242. package/.zencoder/skills/stripe-projects/SKILL.md +139 -0
  243. package/.zencoder/skills/upgrade-stripe/SKILL.md +185 -0
  244. package/AUDIT.md +95 -0
  245. package/BLOCKERS.md +0 -0
  246. package/COOLIFY.md +51 -0
  247. package/MCP_SETUP.md +23 -0
  248. package/PRODUCTION_CHECKLIST.md +246 -0
  249. package/README.md +47 -0
  250. package/ROADMAP.md +91 -0
  251. package/docs/superpowers/plans/2026-05-11-availsync-frontend-sales-flow.md +2445 -0
  252. package/frontend/.env.example +2 -0
  253. package/frontend/app/admin/layout.tsx +13 -0
  254. package/frontend/app/admin/page.tsx +747 -0
  255. package/frontend/app/app/activity/page.tsx +257 -0
  256. package/frontend/app/app/agents/[agentId]/page.tsx +21 -0
  257. package/frontend/app/app/agents/page.tsx +1155 -0
  258. package/frontend/app/app/audit/page.tsx +225 -0
  259. package/frontend/app/app/availability/page.tsx +840 -0
  260. package/frontend/app/app/holds/page.tsx +262 -0
  261. package/frontend/app/app/layout.tsx +19 -0
  262. package/frontend/app/app/onboarding/page.tsx +10 -0
  263. package/frontend/app/app/onboarding/verify/page.tsx +309 -0
  264. package/frontend/app/app/page.tsx +508 -0
  265. package/frontend/app/app/settings/page.tsx +399 -0
  266. package/frontend/app/app/work/page.tsx +426 -0
  267. package/frontend/app/changelog/page.tsx +93 -0
  268. package/frontend/app/checkout/page.tsx +25 -0
  269. package/frontend/app/docs/api/page.tsx +157 -0
  270. package/frontend/app/docs/page.tsx +296 -0
  271. package/frontend/app/docs/pilot/page.tsx +127 -0
  272. package/frontend/app/docs/quickstart/page.tsx +318 -0
  273. package/frontend/app/docs/reliability/page.tsx +78 -0
  274. package/frontend/app/docs/sdk/node/page.tsx +166 -0
  275. package/frontend/app/globals.css +57 -0
  276. package/frontend/app/icon.png +0 -0
  277. package/frontend/app/layout.tsx +87 -0
  278. package/frontend/app/login/page.tsx +14 -0
  279. package/frontend/app/page.tsx +47 -0
  280. package/frontend/app/pricing/page.tsx +66 -0
  281. package/frontend/app/privacy/page.tsx +52 -0
  282. package/frontend/app/robots.ts +26 -0
  283. package/frontend/app/security/page.tsx +74 -0
  284. package/frontend/app/signup/page.tsx +14 -0
  285. package/frontend/app/sitemap.ts +14 -0
  286. package/frontend/app/terms/page.tsx +51 -0
  287. package/frontend/components/brand/AvailsyncLogo.tsx +56 -0
  288. package/frontend/components/checkout/CheckoutClient.tsx +100 -0
  289. package/frontend/components/dashboard/AgentForm.tsx +59 -0
  290. package/frontend/components/dashboard/AppShell.tsx +291 -0
  291. package/frontend/components/dashboard/AvailabilityChecker.tsx +117 -0
  292. package/frontend/components/dashboard/AvailabilityWindowForm.tsx +40 -0
  293. package/frontend/components/dashboard/HoldForm.tsx +133 -0
  294. package/frontend/components/dashboard/MetricCard.tsx +10 -0
  295. package/frontend/components/login/LoginForm.tsx +95 -0
  296. package/frontend/components/marketing/AgentCoordinationStory.tsx +1530 -0
  297. package/frontend/components/marketing/Faq.tsx +41 -0
  298. package/frontend/components/marketing/Hero.tsx +73 -0
  299. package/frontend/components/marketing/HowItWorks.tsx +28 -0
  300. package/frontend/components/marketing/ObserveModeTeaser.tsx +41 -0
  301. package/frontend/components/marketing/PricingTeaser.tsx +23 -0
  302. package/frontend/components/marketing/ProblemSolution.tsx +36 -0
  303. package/frontend/components/marketing/SiteFooter.tsx +59 -0
  304. package/frontend/components/marketing/SiteHeader.tsx +45 -0
  305. package/frontend/components/marketing/UseCases.tsx +27 -0
  306. package/frontend/components/onboarding/OnboardingClient.tsx +278 -0
  307. package/frontend/components/pricing/PricingCards.tsx +65 -0
  308. package/frontend/components/privacy/CookieConsent.tsx +230 -0
  309. package/frontend/components/privacy/CookieSettingsButton.tsx +15 -0
  310. package/frontend/components/seo/JsonLd.tsx +10 -0
  311. package/frontend/components/signup/SignupForm.tsx +55 -0
  312. package/frontend/components/ui/Badge.tsx +23 -0
  313. package/frontend/components/ui/Button.tsx +37 -0
  314. package/frontend/components/ui/Card.tsx +11 -0
  315. package/frontend/components/ui/ConfirmDialog.tsx +77 -0
  316. package/frontend/components/ui/EmptyState.tsx +24 -0
  317. package/frontend/components/ui/Input.tsx +14 -0
  318. package/frontend/components/ui/KeyDisplay.tsx +49 -0
  319. package/frontend/components/ui/Select.tsx +14 -0
  320. package/frontend/components/ui/Skeleton.tsx +24 -0
  321. package/frontend/components/ui/Tabs.tsx +19 -0
  322. package/frontend/components/ui/Textarea.tsx +14 -0
  323. package/frontend/components/ui/Toast.tsx +78 -0
  324. package/frontend/components/waitlist/WaitlistDialog.tsx +128 -0
  325. package/frontend/lib/api.ts +1282 -0
  326. package/frontend/lib/billing.ts +6 -0
  327. package/frontend/lib/cookieConsent.ts +113 -0
  328. package/frontend/lib/format.ts +16 -0
  329. package/frontend/lib/plans.ts +62 -0
  330. package/frontend/lib/schemas.ts +108 -0
  331. package/frontend/lib/seo.ts +376 -0
  332. package/frontend/lib/setupGuides.ts +630 -0
  333. package/frontend/lib/storage.ts +30 -0
  334. package/frontend/next-env.d.ts +6 -0
  335. package/frontend/next.config.mjs +13 -0
  336. package/frontend/package-lock.json +14409 -0
  337. package/frontend/package.json +41 -0
  338. package/frontend/playwright.config.ts +20 -0
  339. package/frontend/postcss.config.mjs +8 -0
  340. package/frontend/public/.gitkeep +0 -0
  341. package/frontend/public/brand/availsync-logo-board.png +0 -0
  342. package/frontend/public/brand/availsync-logo-dark.png +0 -0
  343. package/frontend/public/brand/availsync-mark-dark.png +0 -0
  344. package/frontend/public/brand/availsync-wordmark-dark.png +0 -0
  345. package/frontend/public/marketing/hero-agent-coordination.png +0 -0
  346. package/frontend/tailwind.config.ts +53 -0
  347. package/frontend/tests/smoke.spec.ts +89 -0
  348. package/frontend/tsconfig.json +23 -0
  349. package/jest.config.js +7 -0
  350. package/nixpacks.toml +11 -0
  351. package/package.json +53 -0
  352. package/packages/mcp/LICENSE +21 -0
  353. package/packages/mcp/README.md +60 -0
  354. package/packages/mcp/jest.config.cjs +8 -0
  355. package/packages/mcp/package.json +54 -0
  356. package/packages/mcp/src/helpers.ts +38 -0
  357. package/packages/mcp/src/index.test.ts +60 -0
  358. package/packages/mcp/src/index.ts +387 -0
  359. package/packages/mcp/tsconfig.json +20 -0
  360. package/packages/mcp/tsconfig.test.json +12 -0
  361. package/packages/node/LICENSE +21 -0
  362. package/packages/node/README.md +120 -0
  363. package/packages/node/jest.config.cjs +8 -0
  364. package/packages/node/package.json +46 -0
  365. package/packages/node/src/index.test.ts +360 -0
  366. package/packages/node/src/index.ts +402 -0
  367. package/packages/node/tsconfig.json +20 -0
  368. package/packages/node/tsconfig.test.json +12 -0
  369. package/plan.md +923 -0
  370. package/skills/stripe-best-practices/SKILL.md +42 -0
  371. package/skills/stripe-best-practices/references/billing.md +36 -0
  372. package/skills/stripe-best-practices/references/connect.md +48 -0
  373. package/skills/stripe-best-practices/references/payments.md +79 -0
  374. package/skills/stripe-best-practices/references/security.md +109 -0
  375. package/skills/stripe-best-practices/references/treasury.md +16 -0
  376. package/skills/stripe-projects/SKILL.md +139 -0
  377. package/skills/upgrade-stripe/SKILL.md +185 -0
  378. package/skills-lock.json +20 -0
  379. package/src/core/availability.ts +178 -0
  380. package/src/core/conflict.ts +209 -0
  381. package/src/core/work.ts +490 -0
  382. package/src/db/client.ts +17 -0
  383. package/src/db/migrations/001_init.sql +88 -0
  384. package/src/db/migrations/002_stripe.sql +2 -0
  385. package/src/db/migrations/003_workspace_auth.sql +19 -0
  386. package/src/db/migrations/004_agent_mcp_status.sql +2 -0
  387. package/src/db/migrations/005_hold_event_actor.sql +4 -0
  388. package/src/db/migrations/006_agent_activity.sql +35 -0
  389. package/src/db/migrations/007_work_coordination.sql +60 -0
  390. package/src/db/migrations/008_work_claim_leases.sql +20 -0
  391. package/src/db/migrations/009_billing_subscription_state.sql +23 -0
  392. package/src/db/migrations/010_agent_api_key_prefix.sql +10 -0
  393. package/src/db/migrations/011_org_verified_and_work_event_retention.sql +11 -0
  394. package/src/db/migrations/012_agent_enforcement_mode.sql +12 -0
  395. package/src/db/migrations/013_support_tickets.sql +21 -0
  396. package/src/db/migrations/014_paid_plan_waitlist.sql +23 -0
  397. package/src/db/migrations/015_agent_last_seen.sql +2 -0
  398. package/src/db/migrations.ts +164 -0
  399. package/src/db/run-migrations.ts +13 -0
  400. package/src/index.ts +183 -0
  401. package/src/lib/activity.ts +137 -0
  402. package/src/lib/apiKeys.ts +32 -0
  403. package/src/lib/appInfo.ts +26 -0
  404. package/src/lib/billingConfig.ts +3 -0
  405. package/src/lib/env.ts +75 -0
  406. package/src/lib/logger.ts +8 -0
  407. package/src/lib/plans.ts +204 -0
  408. package/src/mcp/server.js +5 -0
  409. package/src/mcp/server.ts +350 -0
  410. package/src/middleware/auth.ts +342 -0
  411. package/src/middleware/requestId.ts +16 -0
  412. package/src/routes/account.ts +168 -0
  413. package/src/routes/activity.ts +126 -0
  414. package/src/routes/admin.ts +514 -0
  415. package/src/routes/audit.ts +68 -0
  416. package/src/routes/auth.ts +203 -0
  417. package/src/routes/availability.ts +325 -0
  418. package/src/routes/billing.ts +406 -0
  419. package/src/routes/conflicts.ts +131 -0
  420. package/src/routes/holds.ts +437 -0
  421. package/src/routes/mcp.ts +57 -0
  422. package/src/routes/metrics.ts +39 -0
  423. package/src/routes/onboarding.ts +273 -0
  424. package/src/routes/orgs.ts +981 -0
  425. package/src/routes/preferences.ts +132 -0
  426. package/src/routes/session.ts +16 -0
  427. package/src/routes/support.ts +77 -0
  428. package/src/routes/value.ts +186 -0
  429. package/src/routes/waitlist.ts +63 -0
  430. package/src/routes/work.ts +1578 -0
  431. package/src/server.ts +36 -0
  432. package/src/types/index.ts +109 -0
  433. package/tests/integration/activity.route.test.ts +103 -0
  434. package/tests/integration/admin.route.test.ts +143 -0
  435. package/tests/integration/agent-keys.route.test.ts +237 -0
  436. package/tests/integration/availability.route.test.ts +125 -0
  437. package/tests/integration/billing.route.test.ts +393 -0
  438. package/tests/integration/conflicts.route.test.ts +131 -0
  439. package/tests/integration/flows.test.ts +154 -0
  440. package/tests/integration/helpers.ts +134 -0
  441. package/tests/integration/holds.route.test.ts +185 -0
  442. package/tests/integration/metrics.route.test.ts +100 -0
  443. package/tests/integration/onboarding.verify.route.test.ts +163 -0
  444. package/tests/integration/preferences.route.test.ts +53 -0
  445. package/tests/integration/session.route.test.ts +97 -0
  446. package/tests/integration/system.route.test.ts +92 -0
  447. package/tests/integration/value.route.test.ts +235 -0
  448. package/tests/integration/work.route.test.ts +745 -0
  449. package/tests/setup.ts +4 -0
  450. package/tests/smoke.sh +62 -0
  451. package/tests/unit/auth.test.ts +114 -0
  452. package/tests/unit/availability.test.ts +149 -0
  453. package/tests/unit/conflict.test.ts +118 -0
  454. package/tests/unit/env.test.ts +69 -0
  455. package/tests/unit/migrations.test.ts +135 -0
  456. package/tests/unit/request-id.test.ts +37 -0
  457. package/tmp-mobile-agents.png +0 -0
  458. package/tmp-next-mobile.err.log +10 -0
  459. package/tmp-next-mobile.log +5 -0
  460. package/tsconfig.json +16 -0
@@ -0,0 +1,16 @@
1
+ # Treasury / Financial Accounts
2
+
3
+ ## Table of contents
4
+
5
+ - v2 Financial Accounts API
6
+ - Legacy v1 Treasury
7
+
8
+ ## v2 Financial Accounts API
9
+
10
+ For embedded financial accounts (bank accounts, account and routing numbers, money movement), use the [v2 Financial Accounts API](https://docs.stripe.com/api/v2/core/vault/financial-accounts.md) (`POST /v2/core/vault/financial_accounts`). This is required for new integrations.
11
+
12
+ For Treasury for platforms concepts and guides, see the [Treasury for platforms overview](https://docs.stripe.com/treasury/connect.md).
13
+
14
+ ## Legacy v1 Treasury
15
+
16
+ Don’t use the [v1 Treasury Financial Accounts API](https://docs.stripe.com/api/treasury/financial_accounts.md) (`POST /v1/treasury/financial_accounts`) for new integrations. Existing v1 integrations continue to work.
@@ -0,0 +1,139 @@
1
+ ---
2
+ name: stripe-projects
3
+ description: >-
4
+ Use when the user needs to provision a third-party service available on
5
+ https://projects.dev/providers; create or retrieve a provider/service API, key
6
+ or token; sign up for a service; or references projects.dev. Handles the full
7
+ flow from checking provider availability through project initialization, then
8
+ hands off to locally installed skills.
9
+ allowed-tools:
10
+ - Bash(stripe *)
11
+ - Bash(which stripe)
12
+ - Bash(brew install stripe/stripe-cli/stripe)
13
+ - Bash(brew upgrade stripe/stripe-cli/stripe)
14
+ - Bash(scoop bucket add stripe https://github.com/stripe/scoop-stripe-cli.git)
15
+ - Bash(scoop install stripe)
16
+ - Bash(sudo apt *)
17
+ - Bash(curl -s https://packages.stripe.dev/*)
18
+ - WebFetch
19
+ - Skill
20
+ - Read
21
+
22
+ ---
23
+
24
+ ## Stripe Projects — Service Provisioning
25
+
26
+ Provision third-party services and retrieve API keys/tokens using the Stripe Projects CLI plugin.
27
+
28
+ ## Workflow
29
+
30
+ ### Step 1: Verify Provider Availability
31
+
32
+ Before doing anything else, fetch `https://projects.dev/providers` and check whether the requested provider appears in the directory listing.
33
+
34
+ - If the provider **isn’t listed** on that page, inform the user that Stripe Projects **doesn’t support** this provider and stop.
35
+ - If the provider **is listed**, continue.
36
+
37
+ ### Step 2: Ensure Stripe CLI is Installed
38
+
39
+ Check if the Stripe CLI is available:
40
+
41
+ ```bash
42
+ which stripe && stripe --version
43
+ ```
44
+
45
+ If not installed, install based on the user’s platform:
46
+
47
+ **macOS (Homebrew):**
48
+
49
+ ```bash
50
+ brew install stripe/stripe-cli/stripe
51
+ ```
52
+
53
+ **Linux (Debian/Ubuntu via APT):**
54
+
55
+ ```bash
56
+ curl -s https://packages.stripe.dev/api/security/keypair/stripe-cli-gpg/public | gpg --dearmor | sudo tee /usr/share/keyrings/stripe.gpg > /dev/null
57
+ echo "deb [signed-by=/usr/share/keyrings/stripe.gpg] https://packages.stripe.dev/stripe-cli-debian-local stable main" | sudo tee -a /etc/apt/sources.list.d/stripe.list
58
+ sudo apt update
59
+ sudo apt install stripe
60
+ ```
61
+
62
+ **Windows (Scoop):**
63
+
64
+ ```bash
65
+ scoop bucket add stripe https://github.com/stripe/scoop-stripe-cli.git
66
+ scoop install stripe
67
+ ```
68
+
69
+ If installed, but the version is lower than 1.40.0, then upgrade based on the user’s platform:
70
+
71
+ **macOS (Homebrew):**
72
+
73
+ ```bash
74
+ brew upgrade stripe/stripe-cli/stripe
75
+ ```
76
+
77
+ or follow instructions at https://docs.stripe.com/stripe-cli/upgrade for other platforms.
78
+
79
+ ### Step 3: Ensure Stripe Projects Plugin is Installed and on Latest
80
+
81
+ ```bash
82
+ stripe plugin install projects
83
+ ```
84
+
85
+ ### Step 4: Search the Catalog
86
+
87
+ Confirm the specific provider is available and validates the specific service:
88
+
89
+ ```bash
90
+ stripe projects search <query> --json
91
+ ```
92
+
93
+ If `result_count` is 0, inform the user the service was not found in the catalog and stop.
94
+
95
+ ### Step 5: Initialize a Project
96
+
97
+ Check if a project is already initialized:
98
+
99
+ ```bash
100
+ stripe projects status --json
101
+ ```
102
+
103
+ If not initialized:
104
+
105
+ ```bash
106
+ stripe projects init --json --yes
107
+ ```
108
+
109
+ Note: If the user hasn’t logged in to the Stripe CLI, `projects init` will redirect them to a browser to either log in to an existing Stripe account or create a new Stripe Projects account. When this happens, prompt the user:
110
+
111
+ > ▎ Stripe Projects is redirecting you to the browser to authenticate. ▎ - If you have an existing Stripe account, log in with your credentials. ▎ - If you’re new, you can create a free Stripe Projects account in seconds. ▎ ▎ Complete the sign-in in your browser, then come back here and let me know when you’re done.
112
+
113
+ Wait for the user to confirm before proceeding.
114
+
115
+ ### Step 6: Hand Off to local stripe-projects-cli skill
116
+
117
+ Important: After the project is initialized, always use the `stripe-projects-cli` skill installed at `.claude/skills/stripe-projects-cli` in the local project directory (invoke via the Skill tool with name `stripe-projects-cli`) to continue the workflow for adding services. Print out the env variable names returned in a table, but never their values.
118
+
119
+ ### Step 7: Provider Recommendations
120
+
121
+ After a successful ‘add’ output, you must give the user helpful suggestions on other providers services available on Stripe Projects catalog that could be complementary (different primary category) or helpful - 3 to 5 suggestions. NEVER show fabricated commands to provision these services, only ones from the `stripe projects catalog` output if at all.
122
+
123
+ ## Non-Interactive Mode
124
+
125
+ Always use `--json --yes` flags to suppress interactive prompts. If a paid service requires confirmation, add `--confirm-paid-service`.
126
+
127
+ ## Working Agreement
128
+
129
+ - Don’t hand-edit CLI-managed files under `.projects` or the generated `.env` output.
130
+ - NEVER look at any files in the .projects directory. The CLI manages everything for you.
131
+ - NEVER look at the .env file. The CLI manages everything for you.
132
+
133
+ ## Error Handling
134
+
135
+ - Provider not listed at `projects.dev/providers` → stop early, tell the user it’s not supported
136
+ - Stripe CLI missing → install per platform instructions above
137
+ - Plugin missing → install via `stripe plugin install projects`
138
+ - `projects init` triggers browser login → prompt user, wait for confirmation
139
+ - Service not in catalog → inform user, suggest `stripe projects catalog --json` to browse alternatives
@@ -0,0 +1,185 @@
1
+ ---
2
+ name: upgrade-stripe
3
+ description: Guide for upgrading Stripe API versions and SDKs
4
+
5
+ ---
6
+
7
+ The latest Stripe API version is 2026-04-22.dahlia - use this version when upgrading unless the user specifies a different target version.
8
+
9
+ # Upgrading Stripe Versions
10
+
11
+ This guide covers upgrading Stripe API versions, server-side SDKs, Stripe.js, and mobile SDKs.
12
+
13
+ ## Understanding Stripe API Versioning
14
+
15
+ Stripe uses date-based API versions (e.g., `2026-04-22.dahlia`, `2025-08-27.basil`, `2024-12-18.acacia`). Your account’s API version determines request/response behavior.
16
+
17
+ ### Types of Changes
18
+
19
+ **Backward-Compatible Changes** (don’t require code updates):
20
+
21
+ - New API resources
22
+ - New optional request parameters
23
+ - New properties in existing responses
24
+ - Changes to opaque string lengths (e.g., object IDs)
25
+ - New webhook event types
26
+
27
+ **Breaking Changes** (require code updates):
28
+
29
+ - Field renames or removals
30
+ - Behavioral modifications
31
+ - Removed endpoints or parameters
32
+
33
+ Review the [API Changelog](https://docs.stripe.com/changelog.md) for all changes between versions.
34
+
35
+ ## Server-Side SDK Versioning
36
+
37
+ See [SDK Version Management](https://docs.stripe.com/sdks/set-version.md) for details.
38
+
39
+ ### Dynamically-Typed Languages (Ruby, Python, PHP, Node.js)
40
+
41
+ These SDKs offer flexible version control:
42
+
43
+ **Global Configuration:**
44
+
45
+ ```python
46
+ import stripe
47
+ stripe.api_version = '2026-04-22.dahlia'
48
+ ```
49
+
50
+ ```ruby
51
+ Stripe.api_version = '2026-04-22.dahlia'
52
+ ```
53
+
54
+ ```javascript
55
+ const stripe = require('stripe')('sk_test_xxx', {
56
+ apiVersion: '2026-04-22.dahlia'
57
+ });
58
+ ```
59
+
60
+ **Per-Request Override:**
61
+
62
+ ```python
63
+ stripe.Customer.create(
64
+ email="customer@example.com",
65
+ stripe_version='2026-04-22.dahlia'
66
+ )
67
+ ```
68
+
69
+ ### Strongly-Typed Languages (Java, Go, .NET)
70
+
71
+ These use a fixed API version matching the SDK release date. Don’t set a different API version for strongly-typed languages because response objects might not match the strong types in the SDK. Instead, update the SDK to target a new API version.
72
+
73
+ ### Best Practice
74
+
75
+ Always specify the API version you’re integrating against in your code instead of relying on your account’s default API version:
76
+
77
+ ```javascript
78
+ // Good: Explicit version
79
+ const stripe = require('stripe')('sk_test_xxx', {
80
+ apiVersion: '2026-04-22.dahlia'
81
+ });
82
+
83
+ // Avoid: Relying on account default
84
+ const stripe = require('stripe')('sk_test_xxx');
85
+ ```
86
+
87
+ ## Stripe.js Versioning
88
+
89
+ See [Stripe.js Versioning](https://docs.stripe.com/sdks/stripejs-versioning.md) for details.
90
+
91
+ Stripe.js uses an evergreen model with major releases (Acacia, Basil, Clover, Dahlia) on a biannual basis.
92
+
93
+ ### Loading Versioned Stripe.js
94
+
95
+ **Via Script Tag:**
96
+
97
+ ```html
98
+ <script src="https://js.stripe.com/dahlia/stripe.js"></script>
99
+ ```
100
+
101
+ **Via npm:**
102
+
103
+ ```bash
104
+ npm install @stripe/stripe-js
105
+ ```
106
+
107
+ Major npm versions correspond to specific Stripe.js versions.
108
+
109
+ ### API Version Pairing
110
+
111
+ Each Stripe.js version automatically pairs with its corresponding API version. For instance:
112
+
113
+ - Dahlia Stripe.js uses `2026-04-22.dahlia` API
114
+ - Acacia Stripe.js uses `2024-12-18.acacia` API
115
+
116
+ You can’t override this association.
117
+
118
+ ### Migrating from v3
119
+
120
+ 1. Identify your current API version in code
121
+ 1. Review the changelog for relevant changes
122
+ 1. Consider gradually updating your API version before switching Stripe.js versions
123
+ 1. Stripe continues supporting v3 indefinitely
124
+
125
+ ## Mobile SDK Versioning
126
+
127
+ See [Mobile SDK Versioning](https://docs.stripe.com/sdks/mobile-sdk-versioning.md) for details.
128
+
129
+ ### iOS and Android SDKs
130
+
131
+ Both platforms follow **semantic versioning** (MAJOR.MINOR.PATCH):
132
+
133
+ - **MAJOR**: Breaking API changes
134
+ - **MINOR**: New functionality (backward-compatible)
135
+ - **PATCH**: Bug fixes (backward-compatible)
136
+
137
+ New features and fixes release only on the latest major version. Upgrade regularly to access improvements.
138
+
139
+ ### React Native SDK
140
+
141
+ Uses a different model (0.x.y schema):
142
+
143
+ - **Minor version changes** (x): Breaking changes AND new features
144
+ - **Patch updates** (y): Critical bug fixes only
145
+
146
+ ### Backend Compatibility
147
+
148
+ All mobile SDKs work with any Stripe API version you use on your backend unless documentation specifies otherwise.
149
+
150
+ ## Upgrade Checklist
151
+
152
+ 1. Review the [API Changelog](https://docs.stripe.com/changelog.md) for changes between your current and target versions
153
+ 1. Check [Upgrades Guide](https://docs.stripe.com/upgrades.md) for migration guidance
154
+ 1. Update server-side SDK package version (e.g., `npm update stripe`, `pip install --upgrade stripe`)
155
+ 1. Update the `apiVersion` parameter in your Stripe client initialization
156
+ 1. Test your integration against the new API version using the `Stripe-Version` header
157
+ 1. Update webhook handlers to handle new event structures
158
+ 1. Update Stripe.js script tag or npm package version if needed
159
+ 1. Update mobile SDK versions in your package manager if needed
160
+ 1. Store Stripe object IDs in databases that accommodate up to 255 characters (case-sensitive collation)
161
+
162
+ ## Testing API Version Changes
163
+
164
+ Use the `Stripe-Version` header to test your code against a new version without changing your default:
165
+
166
+ ```bash
167
+ curl https://api.stripe.com/v1/customers \
168
+ -u sk_test_xxx: \
169
+ -H "Stripe-Version: 2026-04-22.dahlia"
170
+ ```
171
+
172
+ Or in code:
173
+
174
+ ```javascript
175
+ const stripe = require('stripe')('sk_test_xxx', {
176
+ apiVersion: '2026-04-22.dahlia' // Test with new version
177
+ });
178
+ ```
179
+
180
+ ## Important Notes
181
+
182
+ - Your webhook listener should handle unfamiliar event types gracefully
183
+ - Test webhooks with the new version structure before upgrading
184
+ - Breaking changes are tagged by affected product areas (Payments, Billing, Connect, etc.)
185
+ - Multiple API versions coexist simultaneously, enabling staged adoption
package/AUDIT.md ADDED
@@ -0,0 +1,95 @@
1
+ # Availsync Codebase Audit
2
+
3
+ **Date:** 2026-05-11
4
+ **Auditor:** Claude Code
5
+
6
+ ---
7
+
8
+ ## Build & Test Status
9
+
10
+ - `npm run build` (tsc): **PASS** — zero TypeScript errors and compiled `dist/`
11
+ - Backend unit tests: **PASS** — 14/14 tests green across 3 suites
12
+ - Backend integration tests: require a running PostgreSQL database via `TEST_DATABASE_URL`
13
+
14
+ ---
15
+
16
+ ## What Is Built and Working
17
+
18
+ ### Backend (Express + PostgreSQL)
19
+ - **Database schema** (001_init.sql): 7 tables with proper constraints, indices, and FK cascades
20
+ - **Auth middleware**: bcrypt-based API key verification (O(n) scan — correct but slow at scale)
21
+ - **Org management**: POST /v1/orgs, POST /v1/orgs/:id/agents (with agent_limit enforcement returning 402), GET /v1/orgs/:id/agents
22
+ - **Availability engine**: GET /v1/availability (slot generation with buffer, focus block, and confidence scoring), POST/GET /v1/availability-windows
23
+ - **Holds with conflict resolution**: POST /v1/holds (pg_advisory_xact_lock + SELECT FOR UPDATE SKIP LOCKED), DELETE /v1/holds/:id, GET /v1/holds
24
+ - **Conflict resolution**: deterministic priority ladder (priority_over_agents > agent_type rank > priority field > first-come-first-served)
25
+ - **Preferences**: GET/PUT /v1/preferences/:agent_id with Zod validation
26
+ - **Session**: GET /v1/session (restores org/agent from API key)
27
+ - **Billing**: POST /v1/billing/checkout (Stripe Checkout Session), GET /v1/billing/subscription/:org_id, POST /v1/billing/webhook (signature verification, plan upgrades/downgrades)
28
+ - **MCP server**: 3 tools (check_availability, book_slot, release_slot) via stdio transport
29
+ - **Coolify Git deploy**: frontend and API served by one Nixpacks app; PostgreSQL should be a Coolify service
30
+ - **Smoke tests**: 7 curl-based checks in tests/smoke.sh
31
+
32
+ ### Frontend (Next.js 15 + React 19 + Tailwind)
33
+ - **Marketing pages**: Homepage, Pricing, Docs, Quickstart
34
+ - **Auth flows**: Signup (org creation), Login (API key restore), Checkout (Stripe redirect)
35
+ - **Dashboard**: Overview (metric cards), Agents list, Availability checker, Hold management, Onboarding
36
+ - **Playwright smoke tests**: 4 tests covering homepage, pricing, docs, and full E2E flow
37
+
38
+ ---
39
+
40
+ ## What Is Broken or Incomplete
41
+
42
+ 1. **Agent limits don't match spec**: billing.ts uses `{free:3, individual:10, team:50}` — spec says `{free:3, individual:15, team:9999}`
43
+ 2. **Pricing mismatch**: frontend plans.ts shows $19/$49 — spec says $10/$25
44
+ 3. **No environment validation**: server starts without checking required env vars
45
+ 4. **No helmet or cors package**: CORS is hand-rolled and incomplete (no credentials support)
46
+ 5. **No rate limiting**: any client can flood the API
47
+ 6. **No global error handler**: unhandled exceptions crash without structured response
48
+ 7. **No structured logging**: raw console.log/console.error throughout
49
+ 8. **No auto-migrations**: migrations require manual `psql` command
50
+ 9. **DELETE /v1/holds/:id scoped to agent only**: requires both agent_id AND org_id match — other agents in same org cannot release each other's holds (may be intentional but limits admin use)
51
+ 10. **Frontend sidebar has no active state**: current page not highlighted
52
+ 11. **Frontend uses light theme**: spec requires Linear-style dark UI
53
+ 12. **No Geist font**: uses system font stack
54
+ 13. **Agent detail page is a stub**: shows only agentId placeholder
55
+
56
+ ---
57
+
58
+ ## What Is Missing Entirely
59
+
60
+ ### Backend
61
+ - `GET /v1/audit` route (hold_events with agent name join, pagination)
62
+ - `GET /v1/billing/portal` (Stripe Customer Portal session)
63
+ - `GET /v1/billing/status` (plan, usage, renewal date)
64
+ - `stripe_customer_id` and `stripe_subscription_id` columns on orgs table
65
+ - `invoice.payment_failed` webhook event handling
66
+ - Migration 002_stripe.sql
67
+ - `src/lib/logger.ts` (structured JSON logging)
68
+ - Rate limiting middleware
69
+ - Helmet security headers
70
+ - Environment validation at startup
71
+ - Coolify production env configuration
72
+
73
+ ### Frontend
74
+ - Dark theme (Linear-style) design system
75
+ - Geist / Geist Mono fonts
76
+ - Overview page with real metrics (holds today, conflicts 24h, API calls 7d)
77
+ - Agents page: inline edit, revoke, API key masking, copy-to-clipboard
78
+ - Availability page: weekly grid view, preferences panel
79
+ - Audit Log page (full-width table with filters)
80
+ - Settings page: Account, Billing, API tabs
81
+ - UI components: Badge, KeyDisplay, EmptyState, ConfirmDialog, Toast, Skeleton
82
+ - Keyboard shortcuts (N, ?, Cmd+K, Escape)
83
+ - Command palette
84
+ - Loading skeleton states
85
+ - Proper 3-step onboarding flow at /dashboard/setup
86
+
87
+ ### Tests
88
+ - Flow C automated test (multi-agent conflict resolution)
89
+ - PRODUCTION_CHECKLIST.md
90
+
91
+ ---
92
+
93
+ ## Summary
94
+
95
+ The core scheduling engine is solid — conflict resolution, availability calculation, and the database schema are well-designed. The main gaps are production hardening (security, logging, env validation), missing billing infrastructure (portal, status, Stripe customer tracking), and the frontend which needs a complete visual overhaul from light/warm to dark/Linear-style plus several missing pages and components.
package/BLOCKERS.md ADDED
File without changes
package/COOLIFY.md ADDED
@@ -0,0 +1,51 @@
1
+ # Coolify Git deploy
2
+
3
+ This repo is configured for Coolify Git deployments with the Nixpacks build pack.
4
+ Do not use Dockerfile or Docker Compose build packs for this project.
5
+
6
+ Coolify still runs applications in containers internally, but these settings avoid
7
+ custom Dockerfiles and Compose files in the repository.
8
+
9
+ ## Single Coolify application
10
+
11
+ Create one Coolify application from this Git repository. The same Node process
12
+ serves both the Next.js frontend and the Express API:
13
+
14
+ - Frontend routes: `/`, `/app`, `/pricing`, `/docs`, etc.
15
+ - API routes: `/v1/*`
16
+ - Health check: `/health`
17
+
18
+ - Source directory: `/`
19
+ - Build pack: `Nixpacks`
20
+ - Port: `3000`
21
+ - Health check path: `/health`
22
+ - Build command: leave empty, Nixpacks reads `nixpacks.toml`
23
+ - Start command: leave empty, Nixpacks reads `nixpacks.toml`
24
+ - Keep `NODE_ENV=production` as runtime only in Coolify. Do not mark it
25
+ "Available at Buildtime"; Nixpacks needs dev dependencies during the build.
26
+
27
+ Required environment variables:
28
+
29
+ ```text
30
+ DATABASE_URL=postgresql://...
31
+ PORT=3000
32
+ NODE_ENV=production
33
+ API_KEY_SALT_ROUNDS=10
34
+ SESSION_SECRET=replace-with-a-long-random-secret
35
+ CORS_ORIGINS=https://your-app-domain.example
36
+ STRIPE_SECRET_KEY=sk_live_...
37
+ STRIPE_WEBHOOK_SECRET=whsec_...
38
+ STRIPE_PRICE_INDIVIDUAL=price_...
39
+ STRIPE_PRICE_TEAM=price_...
40
+ APP_URL=https://your-app-domain.example
41
+ FRONTEND_URL=https://your-app-domain.example
42
+ NEXT_PUBLIC_APP_URL=https://your-app-domain.example
43
+ ```
44
+
45
+ Do not set `NEXT_PUBLIC_API_URL` for the single-deployment setup. The frontend
46
+ uses relative `/v1/*` API calls on the same domain.
47
+
48
+ ## Database
49
+
50
+ Use a Coolify PostgreSQL service and copy its connection string into this app as
51
+ `DATABASE_URL`. The API runs migrations automatically on startup.
package/MCP_SETUP.md ADDED
@@ -0,0 +1,23 @@
1
+ # Tilslut Availsync MCP
2
+
3
+ Brug den public alpha-pakke. Du skal ikke clone Availsync repoet for at bruge MCP-serveren.
4
+
5
+ Tilfoej til `~/Library/Application Support/Claude/claude_desktop_config.json` eller tilsvarende MCP config:
6
+
7
+ ```json
8
+ {
9
+ "mcpServers": {
10
+ "availsync": {
11
+ "command": "npx",
12
+ "args": ["-y", "@availsync/mcp@alpha"],
13
+ "env": {
14
+ "AVAILSYNC_API_URL": "https://availsync.dev",
15
+ "AVAILSYNC_AGENT_ID": "AGENT_ID",
16
+ "AVAILSYNC_API_KEY": "API_KEY"
17
+ }
18
+ }
19
+ }
20
+ }
21
+ ```
22
+
23
+ `AVAILSYNC_AGENT_ID` er default agent for tool calls. Tool input kan stadig override `agent_id`, hvis du bruger flere roller.