@polymorphism-tech/morph-spec 7.0.0 → 7.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 (79) hide show
  1. package/README.md +367 -367
  2. package/framework/agents.json +132 -127
  3. package/framework/rubrics/backend.json +41 -36
  4. package/framework/rules/ai-agents-standards.md +45 -15
  5. package/framework/rules/neon-standards.md +25 -26
  6. package/framework/standards/STANDARDS.json +1729 -1133
  7. package/framework/standards/ai-agents/agent-session.md +160 -0
  8. package/framework/standards/ai-agents/batching.md +193 -0
  9. package/framework/standards/ai-agents/context-providers.md +188 -0
  10. package/framework/standards/ai-agents/mcp-server.md +250 -0
  11. package/framework/standards/ai-agents/mcp-tools.md +197 -0
  12. package/framework/standards/ai-agents/middleware-patterns.md +207 -0
  13. package/framework/standards/ai-agents/modalities-image-gen.md +173 -0
  14. package/framework/standards/ai-agents/modalities-speech-to-text.md +171 -0
  15. package/framework/standards/ai-agents/modalities-text-to-speech.md +181 -0
  16. package/framework/standards/ai-agents/modalities-vision.md +201 -0
  17. package/framework/standards/ai-agents/multi-agent-patterns.md +155 -0
  18. package/framework/standards/ai-agents/production.md +114 -258
  19. package/framework/standards/ai-agents/prompts-in-db.md +214 -0
  20. package/framework/standards/ai-agents/providers/model-registry.md +158 -0
  21. package/framework/standards/ai-agents/rag-custom-pgvector.md +243 -0
  22. package/framework/standards/ai-agents/service-tier-flex.md +135 -0
  23. package/framework/standards/ai-agents/setup.md +142 -316
  24. package/framework/standards/ai-agents/structured-output.md +249 -0
  25. package/framework/standards/ai-agents/sweet-spot.md +109 -0
  26. package/framework/standards/ai-agents/workflows.md +114 -284
  27. package/framework/standards/architecture/vertical-slice/vertical-slice.md +433 -429
  28. package/framework/standards/backend/api/validation.md +92 -88
  29. package/framework/standards/backend/database/postgresql/database.md +336 -332
  30. package/framework/standards/backend/database/vector-search-rag.md +599 -541
  31. package/framework/standards/backend/dotnet/fluent-validation-vsa.md +4 -0
  32. package/framework/standards/backend/dotnet/result-pattern.md +4 -0
  33. package/framework/standards/backend/dotnet/scalar-ui.md +176 -172
  34. package/framework/standards/backend/dotnet/scrutor.md +4 -0
  35. package/framework/standards/backend/dotnet/vsa-handler-patterns.md +278 -274
  36. package/framework/standards/backend/integrations/asaas/asaas-api.md +260 -216
  37. package/framework/standards/backend/integrations/hangfire/hangfire-jobs.md +354 -350
  38. package/framework/standards/backend/integrations/neon-auth/neon-auth.md +30 -19
  39. package/framework/standards/backend/integrations/resend/resend-email.md +400 -385
  40. package/framework/standards/data/nosql/cache/redis.md +106 -97
  41. package/framework/standards/data/nosql/cosmos-db.md +127 -118
  42. package/framework/standards/data/vector-search/rag-chunking.md +113 -104
  43. package/framework/standards/frontend/design-system/ai-image-generation.md +4 -0
  44. package/framework/standards/frontend/design-system/animations.md +164 -160
  45. package/framework/standards/frontend/design-system/naming.md +68 -64
  46. package/framework/standards/frontend/gsap/gsap-core.md +14 -8
  47. package/framework/standards/frontend/gsap/gsap-plugins.md +26 -21
  48. package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +9 -7
  49. package/framework/standards/frontend/nextjs/app-router.md +127 -123
  50. package/framework/standards/frontend/nextjs/components.md +136 -132
  51. package/framework/standards/frontend/nextjs/data-fetching.md +130 -126
  52. package/framework/standards/frontend/nextjs/forms.md +134 -128
  53. package/framework/standards/frontend/nextjs/motion-patterns.md +328 -322
  54. package/framework/standards/frontend/nextjs/naming-conventions.md +71 -67
  55. package/framework/standards/frontend/nextjs/nextjs-patterns.md +229 -225
  56. package/framework/standards/frontend/nextjs/project-structure.md +106 -102
  57. package/framework/standards/frontend/nextjs/state-management.md +76 -72
  58. package/framework/standards/frontend/nextjs/testing.md +115 -111
  59. package/framework/standards/infrastructure/docker/easypanel-deploy.md +196 -192
  60. package/framework/standards/infrastructure/neon/neon-pgrag.md +6 -2
  61. package/framework/standards/infrastructure/neon/neon-pgvector.md +4 -0
  62. package/framework/standards/infrastructure/neon/neon-setup.md +5 -1
  63. package/framework/standards/integration/mcp/mcp-tools.md +471 -462
  64. package/framework/templates/REGISTRY.json +1745 -1239
  65. package/framework/templates/code/dotnet/ai-agents/AgentBootstrap.cs.template +39 -0
  66. package/framework/templates/code/dotnet/ai-agents/EmbeddingService.cs.template +68 -0
  67. package/framework/templates/code/dotnet/ai-agents/ModelRegistry.cs.template +117 -0
  68. package/framework/templates/code/dotnet/ai-agents/PromptRepository.cs.template +95 -0
  69. package/framework/templates/code/dotnet/ai-agents/ResilientToolMiddleware.cs.template +61 -0
  70. package/framework/templates/code/dotnet/ai-agents/VectorSearchTool.cs.template +107 -0
  71. package/framework/templates/code/dotnet/ai-agents/model-registry.json.template +58 -0
  72. package/framework/templates/code/sql/ai-agents/agent-prompts-migration.sql.template +58 -0
  73. package/framework/templates/code/sql/ai-agents/pgvector-embeddings-migration.sql.template +91 -0
  74. package/package.json +89 -83
  75. package/src/core/templates/template-registry.js +289 -256
  76. package/src/lib/generators/context-generator.js +516 -518
  77. package/src/lib/generators/scaffold-generator.js +23 -26
  78. package/framework/standards/infrastructure/neon/neon-semantic-kernel.md +0 -310
  79. package/framework/templates/integrations/semantic-kernel-neon.cs +0 -125
@@ -5,6 +5,10 @@
5
5
  > **Keywords:** neon auth, better auth, authentication, nextjs, user management, session, JWT
6
6
  > **Load When:** neon auth or authentication keywords detected
7
7
 
8
+ **Verified against:** Neon Auth — @neondatabase/auth + @neondatabase/auth-ui (Better Auth). Last-verified: 2026-05-20.
9
+
10
+ ---
11
+
8
12
  Managed authentication powered by Better Auth, with all auth data stored directly in your Neon database (`neon_auth` schema). No external auth providers, no webhooks, no sync delays.
9
13
 
10
14
  ---
@@ -37,15 +41,23 @@ Neon Auth provides:
37
41
  ### Install Packages
38
42
 
39
43
  ```bash
40
- npm install @neondatabase/auth@latest
44
+ # Core auth + UI components are separate packages
45
+ npm install @neondatabase/auth@latest @neondatabase/auth-ui @neondatabase/serverless
41
46
  ```
42
47
 
48
+ > The UI components (`AuthView`, `UserButton`, `SignedIn`, `SignedOut`,
49
+ > `RedirectToSignIn`) live in `@neondatabase/auth-ui`, not in the core
50
+ > `@neondatabase/auth` package. The legacy `@stackframe/stack` packages and
51
+ > `@neondatabase/neon-auth-next` are deprecated — do not install them.
52
+
43
53
  ### Environment Variables
44
54
 
45
55
  ```bash
46
56
  # .env.local
47
57
  NEON_AUTH_BASE_URL=https://ep-xxx.neonauth.us-east-2.aws.neon.build/neondb/auth
48
58
  NEON_AUTH_COOKIE_SECRET=your-secret-at-least-32-characters-long
59
+ # Public auth URL consumed by the browser auth client
60
+ NEXT_PUBLIC_AUTH_URL=https://ep-xxx.neonauth.us-east-2.aws.neon.build/neondb/auth
49
61
  ```
50
62
 
51
63
  Generate cookie secret:
@@ -59,7 +71,10 @@ openssl rand -base64 32
59
71
  // lib/auth/client.ts
60
72
  'use client';
61
73
  import { createAuthClient } from '@neondatabase/auth/next';
62
- export const authClient = createAuthClient();
74
+ // createAuthClient takes the public auth URL as a positional argument
75
+ export const authClient = createAuthClient(process.env.NEXT_PUBLIC_AUTH_URL!);
76
+ // Re-export the React hooks from the client instance for ergonomic imports
77
+ export const { useSession } = authClient;
63
78
 
64
79
  // lib/auth/server.ts
65
80
  import { createNeonAuth } from '@neondatabase/auth/next/server';
@@ -73,25 +88,21 @@ export const auth = createNeonAuth({
73
88
 
74
89
  ### Root Layout Provider
75
90
 
91
+ Import the Tailwind styles for the UI components in `globals.css`:
92
+
93
+ ```css
94
+ @import '@neondatabase/auth-ui/tailwind';
95
+ ```
96
+
76
97
  ```tsx
77
98
  // app/providers.tsx
78
99
  'use client';
79
- import { NeonAuthUIProvider } from '@neondatabase/auth/react';
80
- import '@neondatabase/auth/ui/css';
81
- import Link from 'next/link';
82
- import { useRouter } from 'next/navigation';
100
+ import { NeonAuthUIProvider } from '@neondatabase/auth-ui';
83
101
  import { authClient } from '@/lib/auth/client';
84
102
 
85
103
  export function Providers({ children }: { children: React.ReactNode }) {
86
- const router = useRouter();
87
104
  return (
88
- <NeonAuthUIProvider
89
- authClient={authClient}
90
- navigate={router.push}
91
- replace={router.replace}
92
- onSessionChange={router.refresh}
93
- Link={Link}
94
- >
105
+ <NeonAuthUIProvider authClient={authClient}>
95
106
  {children}
96
107
  </NeonAuthUIProvider>
97
108
  );
@@ -115,23 +126,23 @@ export const { GET, POST } = auth.handler();
115
126
 
116
127
  ```tsx
117
128
  // app/auth/sign-in/page.tsx
118
- import { AuthView } from '@neondatabase/auth/react';
129
+ import { AuthView } from '@neondatabase/auth-ui';
119
130
 
120
131
  export default function SignInPage() {
121
132
  return (
122
133
  <div className="flex items-center justify-center min-h-screen">
123
- <AuthView pathname="sign-in" />
134
+ <AuthView path="sign-in" />
124
135
  </div>
125
136
  );
126
137
  }
127
138
 
128
139
  // app/auth/sign-up/page.tsx
129
- import { AuthView } from '@neondatabase/auth/react';
140
+ import { AuthView } from '@neondatabase/auth-ui';
130
141
 
131
142
  export default function SignUpPage() {
132
143
  return (
133
144
  <div className="flex items-center justify-center min-h-screen">
134
- <AuthView pathname="sign-up" />
145
+ <AuthView path="sign-up" />
135
146
  </div>
136
147
  );
137
148
  }
@@ -200,7 +211,7 @@ export const config = {
200
211
  ### Component-Level Protection
201
212
 
202
213
  ```tsx
203
- import { SignedIn, RedirectToSignIn } from '@neondatabase/auth/react';
214
+ import { SignedIn, RedirectToSignIn } from '@neondatabase/auth-ui';
204
215
 
205
216
  export default function ProtectedPage() {
206
217
  return (