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.
- package/.adal/skills/stripe-best-practices/SKILL.md +42 -0
- package/.adal/skills/stripe-best-practices/references/billing.md +36 -0
- package/.adal/skills/stripe-best-practices/references/connect.md +48 -0
- package/.adal/skills/stripe-best-practices/references/payments.md +79 -0
- package/.adal/skills/stripe-best-practices/references/security.md +109 -0
- package/.adal/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.adal/skills/stripe-projects/SKILL.md +139 -0
- package/.adal/skills/upgrade-stripe/SKILL.md +185 -0
- package/.agents/skills/stripe-best-practices/SKILL.md +42 -0
- package/.agents/skills/stripe-best-practices/references/billing.md +36 -0
- package/.agents/skills/stripe-best-practices/references/connect.md +48 -0
- package/.agents/skills/stripe-best-practices/references/payments.md +79 -0
- package/.agents/skills/stripe-best-practices/references/security.md +109 -0
- package/.agents/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.agents/skills/stripe-projects/SKILL.md +139 -0
- package/.agents/skills/upgrade-stripe/SKILL.md +185 -0
- package/.augment/skills/stripe-best-practices/SKILL.md +42 -0
- package/.augment/skills/stripe-best-practices/references/billing.md +36 -0
- package/.augment/skills/stripe-best-practices/references/connect.md +48 -0
- package/.augment/skills/stripe-best-practices/references/payments.md +79 -0
- package/.augment/skills/stripe-best-practices/references/security.md +109 -0
- package/.augment/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.augment/skills/stripe-projects/SKILL.md +139 -0
- package/.augment/skills/upgrade-stripe/SKILL.md +185 -0
- package/.bob/skills/stripe-best-practices/SKILL.md +42 -0
- package/.bob/skills/stripe-best-practices/references/billing.md +36 -0
- package/.bob/skills/stripe-best-practices/references/connect.md +48 -0
- package/.bob/skills/stripe-best-practices/references/payments.md +79 -0
- package/.bob/skills/stripe-best-practices/references/security.md +109 -0
- package/.bob/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.bob/skills/stripe-projects/SKILL.md +139 -0
- package/.bob/skills/upgrade-stripe/SKILL.md +185 -0
- package/.claude/settings.local.json +7 -0
- package/.claude/skills/stripe-best-practices/SKILL.md +42 -0
- package/.claude/skills/stripe-best-practices/references/billing.md +36 -0
- package/.claude/skills/stripe-best-practices/references/connect.md +48 -0
- package/.claude/skills/stripe-best-practices/references/payments.md +79 -0
- package/.claude/skills/stripe-best-practices/references/security.md +109 -0
- package/.claude/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.claude/skills/stripe-projects/SKILL.md +139 -0
- package/.claude/skills/upgrade-stripe/SKILL.md +185 -0
- package/.codebuddy/skills/stripe-best-practices/SKILL.md +42 -0
- package/.codebuddy/skills/stripe-best-practices/references/billing.md +36 -0
- package/.codebuddy/skills/stripe-best-practices/references/connect.md +48 -0
- package/.codebuddy/skills/stripe-best-practices/references/payments.md +79 -0
- package/.codebuddy/skills/stripe-best-practices/references/security.md +109 -0
- package/.codebuddy/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.codebuddy/skills/stripe-projects/SKILL.md +139 -0
- package/.codebuddy/skills/upgrade-stripe/SKILL.md +185 -0
- package/.commandcode/skills/stripe-best-practices/SKILL.md +42 -0
- package/.commandcode/skills/stripe-best-practices/references/billing.md +36 -0
- package/.commandcode/skills/stripe-best-practices/references/connect.md +48 -0
- package/.commandcode/skills/stripe-best-practices/references/payments.md +79 -0
- package/.commandcode/skills/stripe-best-practices/references/security.md +109 -0
- package/.commandcode/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.commandcode/skills/stripe-projects/SKILL.md +139 -0
- package/.commandcode/skills/upgrade-stripe/SKILL.md +185 -0
- package/.continue/skills/stripe-best-practices/SKILL.md +42 -0
- package/.continue/skills/stripe-best-practices/references/billing.md +36 -0
- package/.continue/skills/stripe-best-practices/references/connect.md +48 -0
- package/.continue/skills/stripe-best-practices/references/payments.md +79 -0
- package/.continue/skills/stripe-best-practices/references/security.md +109 -0
- package/.continue/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.continue/skills/stripe-projects/SKILL.md +139 -0
- package/.continue/skills/upgrade-stripe/SKILL.md +185 -0
- package/.cortex/skills/stripe-best-practices/SKILL.md +42 -0
- package/.cortex/skills/stripe-best-practices/references/billing.md +36 -0
- package/.cortex/skills/stripe-best-practices/references/connect.md +48 -0
- package/.cortex/skills/stripe-best-practices/references/payments.md +79 -0
- package/.cortex/skills/stripe-best-practices/references/security.md +109 -0
- package/.cortex/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.cortex/skills/stripe-projects/SKILL.md +139 -0
- package/.cortex/skills/upgrade-stripe/SKILL.md +185 -0
- package/.crush/skills/stripe-best-practices/SKILL.md +42 -0
- package/.crush/skills/stripe-best-practices/references/billing.md +36 -0
- package/.crush/skills/stripe-best-practices/references/connect.md +48 -0
- package/.crush/skills/stripe-best-practices/references/payments.md +79 -0
- package/.crush/skills/stripe-best-practices/references/security.md +109 -0
- package/.crush/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.crush/skills/stripe-projects/SKILL.md +139 -0
- package/.crush/skills/upgrade-stripe/SKILL.md +185 -0
- package/.env.example +20 -0
- package/.factory/skills/stripe-best-practices/SKILL.md +42 -0
- package/.factory/skills/stripe-best-practices/references/billing.md +36 -0
- package/.factory/skills/stripe-best-practices/references/connect.md +48 -0
- package/.factory/skills/stripe-best-practices/references/payments.md +79 -0
- package/.factory/skills/stripe-best-practices/references/security.md +109 -0
- package/.factory/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.factory/skills/stripe-projects/SKILL.md +139 -0
- package/.factory/skills/upgrade-stripe/SKILL.md +185 -0
- package/.goose/skills/stripe-best-practices/SKILL.md +42 -0
- package/.goose/skills/stripe-best-practices/references/billing.md +36 -0
- package/.goose/skills/stripe-best-practices/references/connect.md +48 -0
- package/.goose/skills/stripe-best-practices/references/payments.md +79 -0
- package/.goose/skills/stripe-best-practices/references/security.md +109 -0
- package/.goose/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.goose/skills/stripe-projects/SKILL.md +139 -0
- package/.goose/skills/upgrade-stripe/SKILL.md +185 -0
- package/.iflow/skills/stripe-best-practices/SKILL.md +42 -0
- package/.iflow/skills/stripe-best-practices/references/billing.md +36 -0
- package/.iflow/skills/stripe-best-practices/references/connect.md +48 -0
- package/.iflow/skills/stripe-best-practices/references/payments.md +79 -0
- package/.iflow/skills/stripe-best-practices/references/security.md +109 -0
- package/.iflow/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.iflow/skills/stripe-projects/SKILL.md +139 -0
- package/.iflow/skills/upgrade-stripe/SKILL.md +185 -0
- package/.junie/skills/stripe-best-practices/SKILL.md +42 -0
- package/.junie/skills/stripe-best-practices/references/billing.md +36 -0
- package/.junie/skills/stripe-best-practices/references/connect.md +48 -0
- package/.junie/skills/stripe-best-practices/references/payments.md +79 -0
- package/.junie/skills/stripe-best-practices/references/security.md +109 -0
- package/.junie/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.junie/skills/stripe-projects/SKILL.md +139 -0
- package/.junie/skills/upgrade-stripe/SKILL.md +185 -0
- package/.kilocode/skills/stripe-best-practices/SKILL.md +42 -0
- package/.kilocode/skills/stripe-best-practices/references/billing.md +36 -0
- package/.kilocode/skills/stripe-best-practices/references/connect.md +48 -0
- package/.kilocode/skills/stripe-best-practices/references/payments.md +79 -0
- package/.kilocode/skills/stripe-best-practices/references/security.md +109 -0
- package/.kilocode/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.kilocode/skills/stripe-projects/SKILL.md +139 -0
- package/.kilocode/skills/upgrade-stripe/SKILL.md +185 -0
- package/.kiro/skills/stripe-best-practices/SKILL.md +42 -0
- package/.kiro/skills/stripe-best-practices/references/billing.md +36 -0
- package/.kiro/skills/stripe-best-practices/references/connect.md +48 -0
- package/.kiro/skills/stripe-best-practices/references/payments.md +79 -0
- package/.kiro/skills/stripe-best-practices/references/security.md +109 -0
- package/.kiro/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.kiro/skills/stripe-projects/SKILL.md +139 -0
- package/.kiro/skills/upgrade-stripe/SKILL.md +185 -0
- package/.kode/skills/stripe-best-practices/SKILL.md +42 -0
- package/.kode/skills/stripe-best-practices/references/billing.md +36 -0
- package/.kode/skills/stripe-best-practices/references/connect.md +48 -0
- package/.kode/skills/stripe-best-practices/references/payments.md +79 -0
- package/.kode/skills/stripe-best-practices/references/security.md +109 -0
- package/.kode/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.kode/skills/stripe-projects/SKILL.md +139 -0
- package/.kode/skills/upgrade-stripe/SKILL.md +185 -0
- package/.mcpjam/skills/stripe-best-practices/SKILL.md +42 -0
- package/.mcpjam/skills/stripe-best-practices/references/billing.md +36 -0
- package/.mcpjam/skills/stripe-best-practices/references/connect.md +48 -0
- package/.mcpjam/skills/stripe-best-practices/references/payments.md +79 -0
- package/.mcpjam/skills/stripe-best-practices/references/security.md +109 -0
- package/.mcpjam/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.mcpjam/skills/stripe-projects/SKILL.md +139 -0
- package/.mcpjam/skills/upgrade-stripe/SKILL.md +185 -0
- package/.mux/skills/stripe-best-practices/SKILL.md +42 -0
- package/.mux/skills/stripe-best-practices/references/billing.md +36 -0
- package/.mux/skills/stripe-best-practices/references/connect.md +48 -0
- package/.mux/skills/stripe-best-practices/references/payments.md +79 -0
- package/.mux/skills/stripe-best-practices/references/security.md +109 -0
- package/.mux/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.mux/skills/stripe-projects/SKILL.md +139 -0
- package/.mux/skills/upgrade-stripe/SKILL.md +185 -0
- package/.neovate/skills/stripe-best-practices/SKILL.md +42 -0
- package/.neovate/skills/stripe-best-practices/references/billing.md +36 -0
- package/.neovate/skills/stripe-best-practices/references/connect.md +48 -0
- package/.neovate/skills/stripe-best-practices/references/payments.md +79 -0
- package/.neovate/skills/stripe-best-practices/references/security.md +109 -0
- package/.neovate/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.neovate/skills/stripe-projects/SKILL.md +139 -0
- package/.neovate/skills/upgrade-stripe/SKILL.md +185 -0
- package/.nixpacksignore +14 -0
- package/.openhands/skills/stripe-best-practices/SKILL.md +42 -0
- package/.openhands/skills/stripe-best-practices/references/billing.md +36 -0
- package/.openhands/skills/stripe-best-practices/references/connect.md +48 -0
- package/.openhands/skills/stripe-best-practices/references/payments.md +79 -0
- package/.openhands/skills/stripe-best-practices/references/security.md +109 -0
- package/.openhands/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.openhands/skills/stripe-projects/SKILL.md +139 -0
- package/.openhands/skills/upgrade-stripe/SKILL.md +185 -0
- package/.pi/skills/stripe-best-practices/SKILL.md +42 -0
- package/.pi/skills/stripe-best-practices/references/billing.md +36 -0
- package/.pi/skills/stripe-best-practices/references/connect.md +48 -0
- package/.pi/skills/stripe-best-practices/references/payments.md +79 -0
- package/.pi/skills/stripe-best-practices/references/security.md +109 -0
- package/.pi/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.pi/skills/stripe-projects/SKILL.md +139 -0
- package/.pi/skills/upgrade-stripe/SKILL.md +185 -0
- package/.pochi/skills/stripe-best-practices/SKILL.md +42 -0
- package/.pochi/skills/stripe-best-practices/references/billing.md +36 -0
- package/.pochi/skills/stripe-best-practices/references/connect.md +48 -0
- package/.pochi/skills/stripe-best-practices/references/payments.md +79 -0
- package/.pochi/skills/stripe-best-practices/references/security.md +109 -0
- package/.pochi/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.pochi/skills/stripe-projects/SKILL.md +139 -0
- package/.pochi/skills/upgrade-stripe/SKILL.md +185 -0
- package/.qoder/skills/stripe-best-practices/SKILL.md +42 -0
- package/.qoder/skills/stripe-best-practices/references/billing.md +36 -0
- package/.qoder/skills/stripe-best-practices/references/connect.md +48 -0
- package/.qoder/skills/stripe-best-practices/references/payments.md +79 -0
- package/.qoder/skills/stripe-best-practices/references/security.md +109 -0
- package/.qoder/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.qoder/skills/stripe-projects/SKILL.md +139 -0
- package/.qoder/skills/upgrade-stripe/SKILL.md +185 -0
- package/.qwen/skills/stripe-best-practices/SKILL.md +42 -0
- package/.qwen/skills/stripe-best-practices/references/billing.md +36 -0
- package/.qwen/skills/stripe-best-practices/references/connect.md +48 -0
- package/.qwen/skills/stripe-best-practices/references/payments.md +79 -0
- package/.qwen/skills/stripe-best-practices/references/security.md +109 -0
- package/.qwen/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.qwen/skills/stripe-projects/SKILL.md +139 -0
- package/.qwen/skills/upgrade-stripe/SKILL.md +185 -0
- package/.roo/skills/stripe-best-practices/SKILL.md +42 -0
- package/.roo/skills/stripe-best-practices/references/billing.md +36 -0
- package/.roo/skills/stripe-best-practices/references/connect.md +48 -0
- package/.roo/skills/stripe-best-practices/references/payments.md +79 -0
- package/.roo/skills/stripe-best-practices/references/security.md +109 -0
- package/.roo/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.roo/skills/stripe-projects/SKILL.md +139 -0
- package/.roo/skills/upgrade-stripe/SKILL.md +185 -0
- package/.trae/skills/stripe-best-practices/SKILL.md +42 -0
- package/.trae/skills/stripe-best-practices/references/billing.md +36 -0
- package/.trae/skills/stripe-best-practices/references/connect.md +48 -0
- package/.trae/skills/stripe-best-practices/references/payments.md +79 -0
- package/.trae/skills/stripe-best-practices/references/security.md +109 -0
- package/.trae/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.trae/skills/stripe-projects/SKILL.md +139 -0
- package/.trae/skills/upgrade-stripe/SKILL.md +185 -0
- package/.vibe/skills/stripe-best-practices/SKILL.md +42 -0
- package/.vibe/skills/stripe-best-practices/references/billing.md +36 -0
- package/.vibe/skills/stripe-best-practices/references/connect.md +48 -0
- package/.vibe/skills/stripe-best-practices/references/payments.md +79 -0
- package/.vibe/skills/stripe-best-practices/references/security.md +109 -0
- package/.vibe/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.vibe/skills/stripe-projects/SKILL.md +139 -0
- package/.vibe/skills/upgrade-stripe/SKILL.md +185 -0
- package/.windsurf/skills/stripe-best-practices/SKILL.md +42 -0
- package/.windsurf/skills/stripe-best-practices/references/billing.md +36 -0
- package/.windsurf/skills/stripe-best-practices/references/connect.md +48 -0
- package/.windsurf/skills/stripe-best-practices/references/payments.md +79 -0
- package/.windsurf/skills/stripe-best-practices/references/security.md +109 -0
- package/.windsurf/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.windsurf/skills/stripe-projects/SKILL.md +139 -0
- package/.windsurf/skills/upgrade-stripe/SKILL.md +185 -0
- package/.zencoder/skills/stripe-best-practices/SKILL.md +42 -0
- package/.zencoder/skills/stripe-best-practices/references/billing.md +36 -0
- package/.zencoder/skills/stripe-best-practices/references/connect.md +48 -0
- package/.zencoder/skills/stripe-best-practices/references/payments.md +79 -0
- package/.zencoder/skills/stripe-best-practices/references/security.md +109 -0
- package/.zencoder/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.zencoder/skills/stripe-projects/SKILL.md +139 -0
- package/.zencoder/skills/upgrade-stripe/SKILL.md +185 -0
- package/AUDIT.md +95 -0
- package/BLOCKERS.md +0 -0
- package/COOLIFY.md +51 -0
- package/MCP_SETUP.md +23 -0
- package/PRODUCTION_CHECKLIST.md +246 -0
- package/README.md +47 -0
- package/ROADMAP.md +91 -0
- package/docs/superpowers/plans/2026-05-11-availsync-frontend-sales-flow.md +2445 -0
- package/frontend/.env.example +2 -0
- package/frontend/app/admin/layout.tsx +13 -0
- package/frontend/app/admin/page.tsx +747 -0
- package/frontend/app/app/activity/page.tsx +257 -0
- package/frontend/app/app/agents/[agentId]/page.tsx +21 -0
- package/frontend/app/app/agents/page.tsx +1155 -0
- package/frontend/app/app/audit/page.tsx +225 -0
- package/frontend/app/app/availability/page.tsx +840 -0
- package/frontend/app/app/holds/page.tsx +262 -0
- package/frontend/app/app/layout.tsx +19 -0
- package/frontend/app/app/onboarding/page.tsx +10 -0
- package/frontend/app/app/onboarding/verify/page.tsx +309 -0
- package/frontend/app/app/page.tsx +508 -0
- package/frontend/app/app/settings/page.tsx +399 -0
- package/frontend/app/app/work/page.tsx +426 -0
- package/frontend/app/changelog/page.tsx +93 -0
- package/frontend/app/checkout/page.tsx +25 -0
- package/frontend/app/docs/api/page.tsx +157 -0
- package/frontend/app/docs/page.tsx +296 -0
- package/frontend/app/docs/pilot/page.tsx +127 -0
- package/frontend/app/docs/quickstart/page.tsx +318 -0
- package/frontend/app/docs/reliability/page.tsx +78 -0
- package/frontend/app/docs/sdk/node/page.tsx +166 -0
- package/frontend/app/globals.css +57 -0
- package/frontend/app/icon.png +0 -0
- package/frontend/app/layout.tsx +87 -0
- package/frontend/app/login/page.tsx +14 -0
- package/frontend/app/page.tsx +47 -0
- package/frontend/app/pricing/page.tsx +66 -0
- package/frontend/app/privacy/page.tsx +52 -0
- package/frontend/app/robots.ts +26 -0
- package/frontend/app/security/page.tsx +74 -0
- package/frontend/app/signup/page.tsx +14 -0
- package/frontend/app/sitemap.ts +14 -0
- package/frontend/app/terms/page.tsx +51 -0
- package/frontend/components/brand/AvailsyncLogo.tsx +56 -0
- package/frontend/components/checkout/CheckoutClient.tsx +100 -0
- package/frontend/components/dashboard/AgentForm.tsx +59 -0
- package/frontend/components/dashboard/AppShell.tsx +291 -0
- package/frontend/components/dashboard/AvailabilityChecker.tsx +117 -0
- package/frontend/components/dashboard/AvailabilityWindowForm.tsx +40 -0
- package/frontend/components/dashboard/HoldForm.tsx +133 -0
- package/frontend/components/dashboard/MetricCard.tsx +10 -0
- package/frontend/components/login/LoginForm.tsx +95 -0
- package/frontend/components/marketing/AgentCoordinationStory.tsx +1530 -0
- package/frontend/components/marketing/Faq.tsx +41 -0
- package/frontend/components/marketing/Hero.tsx +73 -0
- package/frontend/components/marketing/HowItWorks.tsx +28 -0
- package/frontend/components/marketing/ObserveModeTeaser.tsx +41 -0
- package/frontend/components/marketing/PricingTeaser.tsx +23 -0
- package/frontend/components/marketing/ProblemSolution.tsx +36 -0
- package/frontend/components/marketing/SiteFooter.tsx +59 -0
- package/frontend/components/marketing/SiteHeader.tsx +45 -0
- package/frontend/components/marketing/UseCases.tsx +27 -0
- package/frontend/components/onboarding/OnboardingClient.tsx +278 -0
- package/frontend/components/pricing/PricingCards.tsx +65 -0
- package/frontend/components/privacy/CookieConsent.tsx +230 -0
- package/frontend/components/privacy/CookieSettingsButton.tsx +15 -0
- package/frontend/components/seo/JsonLd.tsx +10 -0
- package/frontend/components/signup/SignupForm.tsx +55 -0
- package/frontend/components/ui/Badge.tsx +23 -0
- package/frontend/components/ui/Button.tsx +37 -0
- package/frontend/components/ui/Card.tsx +11 -0
- package/frontend/components/ui/ConfirmDialog.tsx +77 -0
- package/frontend/components/ui/EmptyState.tsx +24 -0
- package/frontend/components/ui/Input.tsx +14 -0
- package/frontend/components/ui/KeyDisplay.tsx +49 -0
- package/frontend/components/ui/Select.tsx +14 -0
- package/frontend/components/ui/Skeleton.tsx +24 -0
- package/frontend/components/ui/Tabs.tsx +19 -0
- package/frontend/components/ui/Textarea.tsx +14 -0
- package/frontend/components/ui/Toast.tsx +78 -0
- package/frontend/components/waitlist/WaitlistDialog.tsx +128 -0
- package/frontend/lib/api.ts +1282 -0
- package/frontend/lib/billing.ts +6 -0
- package/frontend/lib/cookieConsent.ts +113 -0
- package/frontend/lib/format.ts +16 -0
- package/frontend/lib/plans.ts +62 -0
- package/frontend/lib/schemas.ts +108 -0
- package/frontend/lib/seo.ts +376 -0
- package/frontend/lib/setupGuides.ts +630 -0
- package/frontend/lib/storage.ts +30 -0
- package/frontend/next-env.d.ts +6 -0
- package/frontend/next.config.mjs +13 -0
- package/frontend/package-lock.json +14409 -0
- package/frontend/package.json +41 -0
- package/frontend/playwright.config.ts +20 -0
- package/frontend/postcss.config.mjs +8 -0
- package/frontend/public/.gitkeep +0 -0
- package/frontend/public/brand/availsync-logo-board.png +0 -0
- package/frontend/public/brand/availsync-logo-dark.png +0 -0
- package/frontend/public/brand/availsync-mark-dark.png +0 -0
- package/frontend/public/brand/availsync-wordmark-dark.png +0 -0
- package/frontend/public/marketing/hero-agent-coordination.png +0 -0
- package/frontend/tailwind.config.ts +53 -0
- package/frontend/tests/smoke.spec.ts +89 -0
- package/frontend/tsconfig.json +23 -0
- package/jest.config.js +7 -0
- package/nixpacks.toml +11 -0
- package/package.json +53 -0
- package/packages/mcp/LICENSE +21 -0
- package/packages/mcp/README.md +60 -0
- package/packages/mcp/jest.config.cjs +8 -0
- package/packages/mcp/package.json +54 -0
- package/packages/mcp/src/helpers.ts +38 -0
- package/packages/mcp/src/index.test.ts +60 -0
- package/packages/mcp/src/index.ts +387 -0
- package/packages/mcp/tsconfig.json +20 -0
- package/packages/mcp/tsconfig.test.json +12 -0
- package/packages/node/LICENSE +21 -0
- package/packages/node/README.md +120 -0
- package/packages/node/jest.config.cjs +8 -0
- package/packages/node/package.json +46 -0
- package/packages/node/src/index.test.ts +360 -0
- package/packages/node/src/index.ts +402 -0
- package/packages/node/tsconfig.json +20 -0
- package/packages/node/tsconfig.test.json +12 -0
- package/plan.md +923 -0
- package/skills/stripe-best-practices/SKILL.md +42 -0
- package/skills/stripe-best-practices/references/billing.md +36 -0
- package/skills/stripe-best-practices/references/connect.md +48 -0
- package/skills/stripe-best-practices/references/payments.md +79 -0
- package/skills/stripe-best-practices/references/security.md +109 -0
- package/skills/stripe-best-practices/references/treasury.md +16 -0
- package/skills/stripe-projects/SKILL.md +139 -0
- package/skills/upgrade-stripe/SKILL.md +185 -0
- package/skills-lock.json +20 -0
- package/src/core/availability.ts +178 -0
- package/src/core/conflict.ts +209 -0
- package/src/core/work.ts +490 -0
- package/src/db/client.ts +17 -0
- package/src/db/migrations/001_init.sql +88 -0
- package/src/db/migrations/002_stripe.sql +2 -0
- package/src/db/migrations/003_workspace_auth.sql +19 -0
- package/src/db/migrations/004_agent_mcp_status.sql +2 -0
- package/src/db/migrations/005_hold_event_actor.sql +4 -0
- package/src/db/migrations/006_agent_activity.sql +35 -0
- package/src/db/migrations/007_work_coordination.sql +60 -0
- package/src/db/migrations/008_work_claim_leases.sql +20 -0
- package/src/db/migrations/009_billing_subscription_state.sql +23 -0
- package/src/db/migrations/010_agent_api_key_prefix.sql +10 -0
- package/src/db/migrations/011_org_verified_and_work_event_retention.sql +11 -0
- package/src/db/migrations/012_agent_enforcement_mode.sql +12 -0
- package/src/db/migrations/013_support_tickets.sql +21 -0
- package/src/db/migrations/014_paid_plan_waitlist.sql +23 -0
- package/src/db/migrations/015_agent_last_seen.sql +2 -0
- package/src/db/migrations.ts +164 -0
- package/src/db/run-migrations.ts +13 -0
- package/src/index.ts +183 -0
- package/src/lib/activity.ts +137 -0
- package/src/lib/apiKeys.ts +32 -0
- package/src/lib/appInfo.ts +26 -0
- package/src/lib/billingConfig.ts +3 -0
- package/src/lib/env.ts +75 -0
- package/src/lib/logger.ts +8 -0
- package/src/lib/plans.ts +204 -0
- package/src/mcp/server.js +5 -0
- package/src/mcp/server.ts +350 -0
- package/src/middleware/auth.ts +342 -0
- package/src/middleware/requestId.ts +16 -0
- package/src/routes/account.ts +168 -0
- package/src/routes/activity.ts +126 -0
- package/src/routes/admin.ts +514 -0
- package/src/routes/audit.ts +68 -0
- package/src/routes/auth.ts +203 -0
- package/src/routes/availability.ts +325 -0
- package/src/routes/billing.ts +406 -0
- package/src/routes/conflicts.ts +131 -0
- package/src/routes/holds.ts +437 -0
- package/src/routes/mcp.ts +57 -0
- package/src/routes/metrics.ts +39 -0
- package/src/routes/onboarding.ts +273 -0
- package/src/routes/orgs.ts +981 -0
- package/src/routes/preferences.ts +132 -0
- package/src/routes/session.ts +16 -0
- package/src/routes/support.ts +77 -0
- package/src/routes/value.ts +186 -0
- package/src/routes/waitlist.ts +63 -0
- package/src/routes/work.ts +1578 -0
- package/src/server.ts +36 -0
- package/src/types/index.ts +109 -0
- package/tests/integration/activity.route.test.ts +103 -0
- package/tests/integration/admin.route.test.ts +143 -0
- package/tests/integration/agent-keys.route.test.ts +237 -0
- package/tests/integration/availability.route.test.ts +125 -0
- package/tests/integration/billing.route.test.ts +393 -0
- package/tests/integration/conflicts.route.test.ts +131 -0
- package/tests/integration/flows.test.ts +154 -0
- package/tests/integration/helpers.ts +134 -0
- package/tests/integration/holds.route.test.ts +185 -0
- package/tests/integration/metrics.route.test.ts +100 -0
- package/tests/integration/onboarding.verify.route.test.ts +163 -0
- package/tests/integration/preferences.route.test.ts +53 -0
- package/tests/integration/session.route.test.ts +97 -0
- package/tests/integration/system.route.test.ts +92 -0
- package/tests/integration/value.route.test.ts +235 -0
- package/tests/integration/work.route.test.ts +745 -0
- package/tests/setup.ts +4 -0
- package/tests/smoke.sh +62 -0
- package/tests/unit/auth.test.ts +114 -0
- package/tests/unit/availability.test.ts +149 -0
- package/tests/unit/conflict.test.ts +118 -0
- package/tests/unit/env.test.ts +69 -0
- package/tests/unit/migrations.test.ts +135 -0
- package/tests/unit/request-id.test.ts +37 -0
- package/tmp-mobile-agents.png +0 -0
- package/tmp-next-mobile.err.log +10 -0
- package/tmp-next-mobile.log +5 -0
- 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.
|