@polymorphism-tech/morph-spec 4.16.0 → 4.18.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/CLAUDE.md +36 -0
- package/README.md +2 -2
- package/bin/morph-spec.js +3 -0
- package/bin/task-manager.js +999 -962
- package/claude-plugin.json +1 -1
- package/docs/CHEATSHEET.md +1 -1
- package/docs/QUICKSTART.md +1 -1
- package/framework/agents/ai-agents/vector-search-expert.md +247 -233
- package/framework/agents/backend/ms-agent-expert.md +1 -1
- package/framework/agents/backend/neon-expert.md +379 -0
- package/framework/agents/frontend/gsap-animator.md +131 -0
- package/framework/agents/integrations/neon-auth.md +151 -0
- package/framework/agents.json +1183 -1085
- package/framework/commands/morph-preflight.md +200 -192
- package/framework/hooks/claude-code/session-start/inject-morph-context.js +1 -1
- package/framework/rules/gsap-standards.md +13 -0
- package/framework/rules/neon-auth-standards.md +13 -0
- package/framework/rules/neon-standards.md +26 -0
- package/framework/skills/level-0-meta/mcp-registry.json +1 -1
- package/framework/skills/level-0-meta/morph-agent-teams/SKILL.md +472 -472
- package/framework/skills/level-0-meta/morph-frontend-review/SKILL.md +1 -1
- package/framework/skills/level-0-meta/morph-init/SKILL.md +12 -12
- package/framework/skills/level-0-meta/morph-post-implementation/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-tool-usage-guide/SKILL.md +5 -5
- package/framework/skills/level-0-meta/morph-tool-usage-guide/references/tools-per-phase.md +7 -7
- package/framework/skills/level-1-workflows/morph-phase-codebase-analysis/SKILL.md +24 -24
- package/framework/skills/level-1-workflows/morph-phase-design/SKILL.md +12 -12
- package/framework/skills/level-1-workflows/morph-phase-implement/SKILL.md +9 -9
- package/framework/skills/level-1-workflows/morph-phase-plan/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-tasks/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-phase-tasks/references/task-planning-patterns.md +143 -143
- package/framework/skills/level-1-workflows/morph-phase-uiux/SKILL.md +1 -1
- package/framework/skills/level-1-workflows/morph-scope-escalation/SKILL.md +1 -1
- package/framework/standards/STANDARDS.json +197 -116
- package/framework/standards/ai-agents/production.md +1 -0
- package/framework/standards/ai-agents/setup.md +3 -2
- package/framework/standards/ai-agents/workflows.md +1 -0
- package/framework/standards/architecture/vertical-slice/vertical-slice.md +4 -4
- package/framework/standards/backend/database/postgresql/database.md +63 -83
- package/framework/standards/backend/dotnet/scalar-ui.md +172 -172
- package/framework/standards/backend/dotnet/vsa-handler-patterns.md +274 -274
- package/framework/standards/backend/integrations/asaas/asaas-api.md +2 -2
- package/framework/standards/backend/integrations/neon-auth/neon-auth.md +364 -0
- package/framework/standards/frontend/design-system/animations.md +9 -0
- package/framework/standards/frontend/gsap/gsap-core.md +463 -0
- package/framework/standards/frontend/gsap/gsap-plugins.md +294 -0
- package/framework/standards/frontend/gsap/gsap-scrolltrigger.md +318 -0
- package/framework/standards/frontend/nextjs/motion-patterns.md +1 -0
- package/framework/standards/frontend/nextjs/nextjs-patterns.md +47 -37
- package/framework/standards/infrastructure/docker/easypanel-deploy.md +4 -8
- package/framework/standards/infrastructure/neon/neon-pgrag.md +239 -0
- package/framework/standards/infrastructure/neon/neon-pgvector.md +236 -0
- package/framework/standards/infrastructure/neon/neon-semantic-kernel.md +310 -0
- package/framework/standards/infrastructure/neon/neon-setup.md +186 -0
- package/framework/standards/integration/mcp/mcp-tools.md +32 -34
- package/framework/templates/README.md +20 -20
- package/framework/templates/REGISTRY.json +54 -101
- package/framework/templates/code/dotnet/abstractions/api-endpoint.cs +7 -7
- package/framework/templates/code/dotnet/backend/repository.cs +148 -148
- package/framework/templates/code/dotnet/contracts/contracts-vsa.cs +2 -2
- package/framework/templates/code/dotnet/database/vector-entity.cs +93 -0
- package/framework/templates/code/dotnet/feature/endpoint.cs.hbs +1 -1
- package/framework/templates/code/sql/{supabase-migration.sql → postgresql-migration.sql} +12 -21
- package/framework/templates/code/sql/{supabase-migration.template.sql → postgresql-migration.template.sql} +13 -18
- package/framework/templates/code/sql/{rls-policy.sql → postgresql-rls-policy.sql} +6 -9
- package/framework/templates/code/typescript/contracts.ts +167 -168
- package/framework/templates/context/CONTEXT.md +3 -3
- package/framework/templates/docs/proposal.md +6 -6
- package/framework/templates/docs/ui-components.md +1 -1
- package/framework/templates/feature/decisions.md +122 -121
- package/framework/templates/feature/recap.md +145 -145
- package/framework/templates/feature/tasks.md +199 -199
- package/framework/templates/frontend/nextjs/gsap-scroll-section.tsx.hbs +44 -0
- package/framework/templates/infrastructure/docker/docker-compose.template.yml +50 -67
- package/framework/templates/infrastructure/docker/dockerfile-api.dockerfile +38 -38
- package/framework/templates/infrastructure/docker/dockerfile-web.dockerfile +48 -48
- package/framework/templates/infrastructure/docker/easypanel.template.json +46 -54
- package/framework/templates/infrastructure/github/README.md +56 -56
- package/framework/templates/integrations/neon-auth-config.cs +133 -0
- package/framework/templates/integrations/semantic-kernel-neon.cs +125 -0
- package/framework/workflows/README.md +1 -1
- package/framework/workflows/docs/full-morph.md +69 -69
- package/package.json +1 -1
- package/src/commands/agents/dispatch-agents.js +19 -15
- package/src/commands/state/advance-phase.js +5 -0
- package/src/commands/tasks/task.js +3 -0
- package/src/core/state/state-manager.js +45 -1
- package/src/core/templates/template-registry.js +1 -66
- package/src/lib/detectors/index.js +4 -4
- package/src/lib/generators/architecture-scanner.js +639 -640
- package/src/lib/installers/mcp-installer.js +1 -1
- package/src/lib/tasks/task-classifier.js +15 -1
- package/src/lib/tasks/test-runner.js +5 -1
- package/src/lib/validators/content/content-validator.js +9 -10
- package/src/lib/validators/validation-runner.js +7 -5
- package/framework/agents/backend/supabase-expert.md +0 -256
- package/framework/agents/integrations/clerk-auth.md +0 -109
- package/framework/rules/clerk-standards.md +0 -13
- package/framework/rules/supabase-standards.md +0 -29
- package/framework/standards/backend/integrations/clerk/clerk-auth.md +0 -290
- package/framework/standards/infrastructure/supabase/mcp-setup.md +0 -142
- package/framework/standards/infrastructure/supabase/supabase-auth.md +0 -176
- package/framework/standards/infrastructure/supabase/supabase-custom-jwt.md +0 -206
- package/framework/standards/infrastructure/supabase/supabase-pgvector.md +0 -169
- package/framework/standards/infrastructure/supabase/supabase-rls.md +0 -184
- package/framework/standards/infrastructure/supabase/supabase-storage.md +0 -153
- package/framework/templates/integrations/clerk-config.cs +0 -217
|
@@ -183,7 +183,8 @@
|
|
|
183
183
|
"digest": "Chunk documents with 512 token size and 50 token overlap for RAG. Embed with text-embedding-3-small. Store embedding + metadata (source, chunk index). Retrieve top-k=5 by cosine similarity. Re-rank before injecting into LLM context. Use pgvector HNSW index for performance at scale.",
|
|
184
184
|
"stacks": [
|
|
185
185
|
"dotnet-vsa",
|
|
186
|
-
"
|
|
186
|
+
"dotnet-vsa",
|
|
187
|
+
"nextjs-neon"
|
|
187
188
|
]
|
|
188
189
|
},
|
|
189
190
|
{
|
|
@@ -355,30 +356,34 @@
|
|
|
355
356
|
]
|
|
356
357
|
},
|
|
357
358
|
{
|
|
358
|
-
"id": "backend-integrations-
|
|
359
|
-
"name": "
|
|
360
|
-
"path": "backend/integrations/
|
|
359
|
+
"id": "backend-integrations-neon-auth-neon-auth",
|
|
360
|
+
"name": "neon auth",
|
|
361
|
+
"path": "backend/integrations/neon-auth/neon-auth.md",
|
|
361
362
|
"category": "backend",
|
|
362
363
|
"subcategory": "integrations",
|
|
363
364
|
"tags": [
|
|
364
365
|
"backend",
|
|
365
366
|
"integrations",
|
|
366
|
-
"
|
|
367
|
+
"neon-auth",
|
|
368
|
+
"better-auth"
|
|
367
369
|
],
|
|
368
370
|
"aliases": [
|
|
369
|
-
"
|
|
371
|
+
"neon auth",
|
|
372
|
+
"better auth",
|
|
370
373
|
"authentication",
|
|
371
374
|
"OAuth",
|
|
372
375
|
"JWT",
|
|
373
376
|
"session management"
|
|
374
377
|
],
|
|
375
378
|
"anchors": {
|
|
376
|
-
"setup": "#
|
|
377
|
-
"middleware": "#
|
|
379
|
+
"setup": "#installation--setup",
|
|
380
|
+
"middleware": "#route-protection-middleware",
|
|
381
|
+
"dotnet": "#net-backend-integration",
|
|
382
|
+
"rls": "#row-level-security-integration"
|
|
378
383
|
},
|
|
379
|
-
"digest": "
|
|
384
|
+
"digest": "Use @neondatabase/auth SDK for Next.js. Auth data lives in neon_auth schema — no external provider, no webhooks. Server: createNeonAuth() with NEON_AUTH_BASE_URL + NEON_AUTH_COOKIE_SECRET. Client: createAuthClient(). Pages: AuthView component. Protection: auth.middleware(). .NET: JWT Bearer with Neon Auth authority, NameClaimType=sub. RLS: auth.user_id() via pg_session_jwt.",
|
|
380
385
|
"stacks": [
|
|
381
|
-
"
|
|
386
|
+
"neon"
|
|
382
387
|
]
|
|
383
388
|
},
|
|
384
389
|
{
|
|
@@ -572,6 +577,132 @@
|
|
|
572
577
|
"*"
|
|
573
578
|
]
|
|
574
579
|
},
|
|
580
|
+
{
|
|
581
|
+
"id": "frontend-nextjs-motion-patterns",
|
|
582
|
+
"name": "motion patterns",
|
|
583
|
+
"path": "frontend/nextjs/motion-patterns.md",
|
|
584
|
+
"category": "frontend",
|
|
585
|
+
"subcategory": "nextjs",
|
|
586
|
+
"tags": [
|
|
587
|
+
"frontend",
|
|
588
|
+
"nextjs",
|
|
589
|
+
"framer-motion"
|
|
590
|
+
],
|
|
591
|
+
"aliases": [
|
|
592
|
+
"framer-motion",
|
|
593
|
+
"animation variants",
|
|
594
|
+
"motion design",
|
|
595
|
+
"page transition",
|
|
596
|
+
"AnimatePresence"
|
|
597
|
+
],
|
|
598
|
+
"anchors": {
|
|
599
|
+
"variants": "#core-variants-library",
|
|
600
|
+
"tokens": "#design-token-bridge",
|
|
601
|
+
"scroll": "#scroll-animations",
|
|
602
|
+
"accessibility": "#wcag-accessibility-mandatory"
|
|
603
|
+
},
|
|
604
|
+
"digest": "Canonical Framer Motion variants (fadeIn, slideIn, scaleIn, stagger, pageTransition) with design token bridge. Use whileInView for scroll reveals. Respect prefers-reduced-motion via useReducedMotion() — strip transforms, keep opacity.",
|
|
605
|
+
"stacks": [
|
|
606
|
+
"nextjs"
|
|
607
|
+
]
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"id": "frontend-gsap-core",
|
|
611
|
+
"name": "gsap core",
|
|
612
|
+
"path": "frontend/gsap/gsap-core.md",
|
|
613
|
+
"category": "frontend",
|
|
614
|
+
"subcategory": "gsap",
|
|
615
|
+
"tags": [
|
|
616
|
+
"frontend",
|
|
617
|
+
"gsap",
|
|
618
|
+
"animation",
|
|
619
|
+
"react"
|
|
620
|
+
],
|
|
621
|
+
"aliases": [
|
|
622
|
+
"GSAP",
|
|
623
|
+
"GreenSock",
|
|
624
|
+
"gsap.to",
|
|
625
|
+
"gsap.from",
|
|
626
|
+
"useGSAP",
|
|
627
|
+
"gsap timeline",
|
|
628
|
+
"gsap utils",
|
|
629
|
+
"gsap performance"
|
|
630
|
+
],
|
|
631
|
+
"anchors": {
|
|
632
|
+
"apis": "#core-animation-apis",
|
|
633
|
+
"react": "#reactnextjs-integration",
|
|
634
|
+
"timeline": "#timeline-sequencing",
|
|
635
|
+
"performance": "#performance",
|
|
636
|
+
"accessibility": "#accessibility"
|
|
637
|
+
},
|
|
638
|
+
"digest": "Use gsap.to/from/fromTo for imperative animations. In React, always use useGSAP() hook from @gsap/react with scope ref for automatic cleanup. Timelines sequence with position parameter. Animate only transforms + opacity for 60fps. Check prefers-reduced-motion. Import durations/easings from design tokens.",
|
|
639
|
+
"stacks": [
|
|
640
|
+
"nextjs"
|
|
641
|
+
]
|
|
642
|
+
},
|
|
643
|
+
{
|
|
644
|
+
"id": "frontend-gsap-scrolltrigger",
|
|
645
|
+
"name": "gsap scrolltrigger",
|
|
646
|
+
"path": "frontend/gsap/gsap-scrolltrigger.md",
|
|
647
|
+
"category": "frontend",
|
|
648
|
+
"subcategory": "gsap",
|
|
649
|
+
"tags": [
|
|
650
|
+
"frontend",
|
|
651
|
+
"gsap",
|
|
652
|
+
"scrolltrigger",
|
|
653
|
+
"scroll-animation"
|
|
654
|
+
],
|
|
655
|
+
"aliases": [
|
|
656
|
+
"ScrollTrigger",
|
|
657
|
+
"scroll animation",
|
|
658
|
+
"pinning",
|
|
659
|
+
"scrubbing",
|
|
660
|
+
"parallax",
|
|
661
|
+
"scroll-driven"
|
|
662
|
+
],
|
|
663
|
+
"anchors": {
|
|
664
|
+
"basic": "#basic-scrolltrigger",
|
|
665
|
+
"scrub": "#scrubbing",
|
|
666
|
+
"pin": "#pinning",
|
|
667
|
+
"batch": "#batch-processing"
|
|
668
|
+
},
|
|
669
|
+
"digest": "Register ScrollTrigger plugin client-side only. Use scrub for scroll-linked progress. Pin sections with pin:true. Batch-process list items with ScrollTrigger.batch(). Call ScrollTrigger.refresh() after dynamic content. Kill all triggers in useGSAP cleanup.",
|
|
670
|
+
"stacks": [
|
|
671
|
+
"nextjs"
|
|
672
|
+
]
|
|
673
|
+
},
|
|
674
|
+
{
|
|
675
|
+
"id": "frontend-gsap-plugins",
|
|
676
|
+
"name": "gsap plugins",
|
|
677
|
+
"path": "frontend/gsap/gsap-plugins.md",
|
|
678
|
+
"category": "frontend",
|
|
679
|
+
"subcategory": "gsap",
|
|
680
|
+
"tags": [
|
|
681
|
+
"frontend",
|
|
682
|
+
"gsap",
|
|
683
|
+
"plugins"
|
|
684
|
+
],
|
|
685
|
+
"aliases": [
|
|
686
|
+
"Flip",
|
|
687
|
+
"SplitText",
|
|
688
|
+
"MorphSVG",
|
|
689
|
+
"DrawSVG",
|
|
690
|
+
"MotionPath",
|
|
691
|
+
"Draggable",
|
|
692
|
+
"Observer",
|
|
693
|
+
"ScrollToPlugin"
|
|
694
|
+
],
|
|
695
|
+
"anchors": {
|
|
696
|
+
"flip": "#flip-plugin",
|
|
697
|
+
"splittext": "#splittext",
|
|
698
|
+
"morphsvg": "#morphsvg",
|
|
699
|
+
"drawsvg": "#drawsvg"
|
|
700
|
+
},
|
|
701
|
+
"digest": "Flip for layout animations (getState then from). SplitText for char/word/line reveals (always revert on cleanup). MorphSVG for path morphing. DrawSVG for stroke animation. MotionPath for path-following. Draggable for drag with bounds/snap. Observer for gesture detection. Register all plugins before use.",
|
|
702
|
+
"stacks": [
|
|
703
|
+
"nextjs"
|
|
704
|
+
]
|
|
705
|
+
},
|
|
575
706
|
{
|
|
576
707
|
"id": "frontend-nextjs-app-router",
|
|
577
708
|
"name": "app router",
|
|
@@ -833,161 +964,112 @@
|
|
|
833
964
|
]
|
|
834
965
|
},
|
|
835
966
|
{
|
|
836
|
-
"id": "infrastructure-
|
|
837
|
-
"name": "
|
|
838
|
-
"path": "infrastructure/
|
|
967
|
+
"id": "infrastructure-neon-setup",
|
|
968
|
+
"name": "neon setup",
|
|
969
|
+
"path": "infrastructure/neon/neon-setup.md",
|
|
839
970
|
"category": "infrastructure",
|
|
840
|
-
"subcategory": "
|
|
971
|
+
"subcategory": "neon",
|
|
841
972
|
"tags": [
|
|
842
973
|
"infrastructure",
|
|
843
|
-
"
|
|
844
|
-
|
|
845
|
-
"aliases": [
|
|
846
|
-
"supabase CLI",
|
|
847
|
-
"supabase local",
|
|
848
|
-
"supabase tools",
|
|
849
|
-
"supabase configuration",
|
|
850
|
-
"MCP supabase"
|
|
851
|
-
],
|
|
852
|
-
"anchors": {
|
|
853
|
-
"setup": "#mcp-configuration",
|
|
854
|
-
"tools": "#available-tools"
|
|
855
|
-
},
|
|
856
|
-
"digest": "Use Supabase CLI (npx supabase ...) targeting local Docker instance for all database operations. Run npx supabase status to get DB URL, npx supabase db dump --local for schema inspection, psql for queries, and npx supabase migration up --local for migrations. Never connect to production — local is the single source of truth during development.",
|
|
857
|
-
"stacks": [
|
|
858
|
-
"supabase"
|
|
859
|
-
]
|
|
860
|
-
},
|
|
861
|
-
{
|
|
862
|
-
"id": "infrastructure-supabase-supabase-auth",
|
|
863
|
-
"name": "supabase auth",
|
|
864
|
-
"path": "infrastructure/supabase/supabase-auth.md",
|
|
865
|
-
"category": "infrastructure",
|
|
866
|
-
"subcategory": "supabase",
|
|
867
|
-
"tags": [
|
|
868
|
-
"infrastructure",
|
|
869
|
-
"supabase"
|
|
974
|
+
"neon",
|
|
975
|
+
"postgresql"
|
|
870
976
|
],
|
|
871
977
|
"aliases": [
|
|
872
|
-
"
|
|
873
|
-
"
|
|
874
|
-
"
|
|
875
|
-
"
|
|
876
|
-
"
|
|
978
|
+
"Neon",
|
|
979
|
+
"neonctl",
|
|
980
|
+
"serverless postgres",
|
|
981
|
+
"Neon CLI",
|
|
982
|
+
"Neon setup"
|
|
877
983
|
],
|
|
878
984
|
"anchors": {
|
|
879
|
-
"setup": "#
|
|
880
|
-
"
|
|
985
|
+
"setup": "#neon-project-setup",
|
|
986
|
+
"connection": "#connection-strings"
|
|
881
987
|
},
|
|
882
|
-
"digest": "Use
|
|
988
|
+
"digest": "Use neonctl CLI for project management and connection strings. Two connection strings: pooled (-pooler) for application code, direct for EF Core migrations. Configure connection retry for scale-to-zero cold starts. Use database branches for PR previews.",
|
|
883
989
|
"stacks": [
|
|
884
|
-
"
|
|
990
|
+
"neon"
|
|
885
991
|
]
|
|
886
992
|
},
|
|
887
993
|
{
|
|
888
|
-
"id": "infrastructure-
|
|
889
|
-
"name": "
|
|
890
|
-
"path": "infrastructure/
|
|
994
|
+
"id": "infrastructure-neon-pgvector",
|
|
995
|
+
"name": "neon pgvector",
|
|
996
|
+
"path": "infrastructure/neon/neon-pgvector.md",
|
|
891
997
|
"category": "infrastructure",
|
|
892
|
-
"subcategory": "
|
|
998
|
+
"subcategory": "neon",
|
|
893
999
|
"tags": [
|
|
894
1000
|
"infrastructure",
|
|
895
|
-
"
|
|
1001
|
+
"neon",
|
|
1002
|
+
"pgvector"
|
|
896
1003
|
],
|
|
897
1004
|
"aliases": [
|
|
898
1005
|
"pgvector",
|
|
899
1006
|
"vector embeddings",
|
|
900
1007
|
"similarity search",
|
|
901
|
-
"
|
|
1008
|
+
"Neon vectors",
|
|
902
1009
|
"HNSW index"
|
|
903
1010
|
],
|
|
904
1011
|
"anchors": {
|
|
905
1012
|
"setup": "#pgvector-setup",
|
|
906
1013
|
"queries": "#similarity-queries"
|
|
907
1014
|
},
|
|
908
|
-
"digest": "Enable: CREATE EXTENSION vector. Define column as vector(1536) for OpenAI embeddings. Create HNSW index
|
|
909
|
-
"stacks": [
|
|
910
|
-
"supabase"
|
|
911
|
-
]
|
|
912
|
-
},
|
|
913
|
-
{
|
|
914
|
-
"id": "infrastructure-supabase-supabase-rls",
|
|
915
|
-
"name": "supabase rls",
|
|
916
|
-
"path": "infrastructure/supabase/supabase-rls.md",
|
|
917
|
-
"category": "infrastructure",
|
|
918
|
-
"subcategory": "supabase",
|
|
919
|
-
"tags": [
|
|
920
|
-
"infrastructure",
|
|
921
|
-
"supabase"
|
|
922
|
-
],
|
|
923
|
-
"aliases": [
|
|
924
|
-
"RLS",
|
|
925
|
-
"row level security",
|
|
926
|
-
"postgres policies",
|
|
927
|
-
"multi-tenant security",
|
|
928
|
-
"supabase policies"
|
|
929
|
-
],
|
|
930
|
-
"anchors": {
|
|
931
|
-
"policies": "#rls-policies",
|
|
932
|
-
"patterns": "#tenant-patterns"
|
|
933
|
-
},
|
|
934
|
-
"digest": "Enable RLS on every table: ALTER TABLE ... ENABLE ROW LEVEL SECURITY. User isolation: USING (auth.uid() = user_id). Multi-tenant: USING (tenant_id = (auth.jwt()->>'tenant_id')::uuid). Test policies with SET LOCAL ROLE anon. Service role bypasses RLS — use only server-side. Never rely on application-level security alone.",
|
|
1015
|
+
"digest": "Enable: CREATE EXTENSION vector. Define column as vector(1536) for OpenAI embeddings. Create HNSW index with tuned maintenance_work_mem. Use direct SQL for similarity search. Batch insert embeddings (100 at a time). RLS policies apply to vector queries.",
|
|
935
1016
|
"stacks": [
|
|
936
|
-
"
|
|
1017
|
+
"neon"
|
|
937
1018
|
]
|
|
938
1019
|
},
|
|
939
1020
|
{
|
|
940
|
-
"id": "infrastructure-
|
|
941
|
-
"name": "
|
|
942
|
-
"path": "infrastructure/
|
|
1021
|
+
"id": "infrastructure-neon-pgrag",
|
|
1022
|
+
"name": "neon pgrag",
|
|
1023
|
+
"path": "infrastructure/neon/neon-pgrag.md",
|
|
943
1024
|
"category": "infrastructure",
|
|
944
|
-
"subcategory": "
|
|
1025
|
+
"subcategory": "neon",
|
|
945
1026
|
"tags": [
|
|
946
1027
|
"infrastructure",
|
|
947
|
-
"
|
|
1028
|
+
"neon",
|
|
1029
|
+
"pgrag"
|
|
948
1030
|
],
|
|
949
1031
|
"aliases": [
|
|
950
|
-
"
|
|
951
|
-
"
|
|
952
|
-
"
|
|
953
|
-
"
|
|
954
|
-
"
|
|
1032
|
+
"pgrag",
|
|
1033
|
+
"RAG in SQL",
|
|
1034
|
+
"embedding pipeline",
|
|
1035
|
+
"Neon RAG",
|
|
1036
|
+
"in-database RAG"
|
|
955
1037
|
],
|
|
956
1038
|
"anchors": {
|
|
957
|
-
"
|
|
958
|
-
"
|
|
1039
|
+
"setup": "#pgrag-setup",
|
|
1040
|
+
"pipeline": "#rag-pipeline"
|
|
959
1041
|
},
|
|
960
|
-
"digest": "
|
|
1042
|
+
"digest": "Use pgrag extensions (rag, rag_bge_small_en_v15, rag_jina_reranker_v1_tiny_en) for chunking, embedding, search, and reranking entirely in SQL. No external embedding service needed for basic RAG. Combine with pgvector HNSW indexes for production performance.",
|
|
961
1043
|
"stacks": [
|
|
962
|
-
"
|
|
1044
|
+
"neon"
|
|
963
1045
|
]
|
|
964
1046
|
},
|
|
965
1047
|
{
|
|
966
|
-
"id": "infrastructure-
|
|
967
|
-
"name": "
|
|
968
|
-
"path": "infrastructure/
|
|
1048
|
+
"id": "infrastructure-neon-semantic-kernel",
|
|
1049
|
+
"name": "neon semantic kernel",
|
|
1050
|
+
"path": "infrastructure/neon/neon-semantic-kernel.md",
|
|
969
1051
|
"category": "infrastructure",
|
|
970
|
-
"subcategory": "
|
|
1052
|
+
"subcategory": "neon",
|
|
971
1053
|
"tags": [
|
|
972
1054
|
"infrastructure",
|
|
973
|
-
"
|
|
974
|
-
"
|
|
1055
|
+
"neon",
|
|
1056
|
+
"semantic-kernel"
|
|
975
1057
|
],
|
|
976
1058
|
"aliases": [
|
|
977
|
-
"
|
|
978
|
-
"
|
|
979
|
-
"
|
|
980
|
-
"
|
|
1059
|
+
"Semantic Kernel",
|
|
1060
|
+
"vector store",
|
|
1061
|
+
"Neon Semantic Kernel",
|
|
1062
|
+
"SK vector store",
|
|
1063
|
+
"AI memory"
|
|
981
1064
|
],
|
|
982
1065
|
"anchors": {
|
|
983
|
-
"
|
|
984
|
-
"
|
|
985
|
-
"refresh": "#jwt-refresh-patterns"
|
|
1066
|
+
"setup": "#semantic-kernel-setup",
|
|
1067
|
+
"store": "#vector-store-integration"
|
|
986
1068
|
},
|
|
987
|
-
"digest": "
|
|
1069
|
+
"digest": "Use Neon as Semantic Kernel vector store via Npgsql connector. Register IVectorStore with NpgsqlDataSource pointing to pooled Neon endpoint. Store and retrieve embeddings using SK memory abstractions. Combine with pgvector HNSW indexes.",
|
|
988
1070
|
"stacks": [
|
|
989
|
-
"
|
|
990
|
-
"
|
|
1071
|
+
"neon",
|
|
1072
|
+
"semantic-kernel"
|
|
991
1073
|
]
|
|
992
1074
|
},
|
|
993
1075
|
{
|
|
@@ -1016,6 +1098,5 @@
|
|
|
1016
1098
|
"*"
|
|
1017
1099
|
]
|
|
1018
1100
|
}
|
|
1019
|
-
]
|
|
1020
|
-
"total": 67
|
|
1101
|
+
]
|
|
1021
1102
|
}
|
|
@@ -118,6 +118,7 @@ Expose agents as interoperable web services using the standardized A2A protocol.
|
|
|
118
118
|
### Packages
|
|
119
119
|
|
|
120
120
|
```xml
|
|
121
|
+
<!-- ⚠️ MAF packages are in PREVIEW — API surface may change before GA -->
|
|
121
122
|
<PackageReference Include="Microsoft.Agents.AI.Hosting.A2A.AspNetCore" Version="1.0.0-preview.*" />
|
|
122
123
|
```
|
|
123
124
|
|
|
@@ -14,6 +14,7 @@ Semantic Kernel is superseded. Do NOT use `Kernel`, `KernelFunction`, or `Invoke
|
|
|
14
14
|
|
|
15
15
|
```xml
|
|
16
16
|
<!-- .csproj -->
|
|
17
|
+
<!-- ⚠️ MAF packages are in PREVIEW — API surface may change before GA -->
|
|
17
18
|
<PackageReference Include="Microsoft.Agents.AI" Version="1.0.0-preview.*" />
|
|
18
19
|
<PackageReference Include="Microsoft.Agents.AI.Abstractions" Version="1.0.0-preview.*" />
|
|
19
20
|
<PackageReference Include="Microsoft.Agents.AI.OpenAI" Version="1.0.0-preview.*" />
|
|
@@ -25,8 +26,8 @@ Semantic Kernel is superseded. Do NOT use `Kernel`, `KernelFunction`, or `Invoke
|
|
|
25
26
|
<PackageReference Include="Azure.AI.OpenAI" Version="2.*" />
|
|
26
27
|
<PackageReference Include="Azure.Identity" Version="1.*" />
|
|
27
28
|
|
|
28
|
-
<!-- For Microsoft.Extensions.AI abstractions -->
|
|
29
|
-
<PackageReference Include="Microsoft.Extensions.AI" Version="
|
|
29
|
+
<!-- For Microsoft.Extensions.AI abstractions (STABLE — use as fallback when MAF preview breaks) -->
|
|
30
|
+
<PackageReference Include="Microsoft.Extensions.AI" Version="9.5.0" />
|
|
30
31
|
<PackageReference Include="Microsoft.Extensions.AI.OpenAI" Version="9.3.0-preview.*" />
|
|
31
32
|
```
|
|
32
33
|
|
|
@@ -23,6 +23,7 @@ Workflows compose multiple agents and executors into coordinated pipelines using
|
|
|
23
23
|
### Packages
|
|
24
24
|
|
|
25
25
|
```xml
|
|
26
|
+
<!-- ⚠️ MAF packages are in PREVIEW — API surface may change before GA -->
|
|
26
27
|
<PackageReference Include="Microsoft.Agents.AI" Version="1.0.0-preview.*" />
|
|
27
28
|
<PackageReference Include="Microsoft.Agents.AI.Workflows" Version="1.0.0-preview.*" />
|
|
28
29
|
```
|
|
@@ -16,7 +16,7 @@ Sem MediatR, sem AggregateRoot, sem Domain Events, sem CQRS formal.
|
|
|
16
16
|
{ProjectName}/
|
|
17
17
|
├── Abstractions/
|
|
18
18
|
│ ├── IHandler.cs # Interface central: IHandler<TRequest, TResponse>
|
|
19
|
-
│ ├── IApiEndpoint.cs # Interface de endpoint: void MapEndpoint(
|
|
19
|
+
│ ├── IApiEndpoint.cs # Interface de endpoint: void MapEndpoint(IEndpointRouteBuilder app)
|
|
20
20
|
│ ├── Result.cs # Result<T> / Result (non-generic)
|
|
21
21
|
│ └── Errors/
|
|
22
22
|
│ ├── Error.cs # record Error com factory methods + ErrorType enum
|
|
@@ -81,7 +81,7 @@ namespace {ProjectName}.Abstractions
|
|
|
81
81
|
{
|
|
82
82
|
public interface IApiEndpoint
|
|
83
83
|
{
|
|
84
|
-
void MapEndpoint(
|
|
84
|
+
void MapEndpoint(IEndpointRouteBuilder app);
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
87
|
```
|
|
@@ -239,7 +239,7 @@ namespace {ProjectName}.Features.BookFeature.CreateBook;
|
|
|
239
239
|
|
|
240
240
|
internal sealed class CreateBookEndpoint : IApiEndpoint
|
|
241
241
|
{
|
|
242
|
-
public void MapEndpoint(
|
|
242
|
+
public void MapEndpoint(IEndpointRouteBuilder app)
|
|
243
243
|
{
|
|
244
244
|
app.MapPost("books", async (
|
|
245
245
|
IHandler<CreateBookRequest, Result<CreateBookResponse>> handler,
|
|
@@ -403,7 +403,7 @@ app.MapApiEndpoints();
|
|
|
403
403
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.3" />
|
|
404
404
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="10.0.3" />
|
|
405
405
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.3" />
|
|
406
|
-
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0
|
|
406
|
+
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.*" /> <!-- use wildcard — Npgsql releases lag behind EF Core -->
|
|
407
407
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="10.0.3" />
|
|
408
408
|
<PackageReference Include="Scalar.AspNetCore" Version="2.12.40" />
|
|
409
409
|
<PackageReference Include="Scrutor" Version="7.0.0" />
|