@epiccontext/mcp 0.1.17 → 0.1.19

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.
@@ -1 +1 @@
1
- {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmCjE;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,YAAiB,GACzB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAsC9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAkqB7D;AA4BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAO5D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOpD"}
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmCjE;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,QAAQ,EAAE,EACjB,OAAO,GAAE,YAAiB,GACzB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAsC9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAy3C7D;AA4BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAO5D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOpD"}
package/dist/cli/files.js CHANGED
@@ -203,6 +203,9 @@ Your content goes here after the frontmatter...
203
203
 
204
204
  ### technical/
205
205
  - \`text\` - Architecture, stack overview
206
+ - \`frontend_stack\` - Frontend technology choices
207
+ - \`backend_stack\` - Backend technology choices
208
+ - \`architecture_diagram\` - C4 model system architecture diagrams
206
209
  - \`integration\` - Third-party integrations
207
210
  - \`constraint\` - Technical constraints
208
211
 
@@ -617,6 +620,730 @@ CORRECT: Always specify link type
617
620
  { "id": "link-1", "sourceId": "a", "targetId": "b", "type": "action" }
618
621
  \`\`\`
619
622
 
623
+ ### Architecture Diagram Block (C4 Model)
624
+
625
+ Architecture diagram blocks document system architecture visually using the C4 model (Context, Container, Component). They use embedded JSON in a \`sync:data\` block with \`elements\` and \`connections\`.
626
+
627
+ #### Purpose
628
+ - Visualize system architecture at different abstraction levels
629
+ - Show how systems, containers, and components interact
630
+ - Document communication patterns and technologies
631
+ - Provide clear diagrams for different audiences (technical, leadership)
632
+
633
+ #### C4 Model Levels
634
+
635
+ | Level | Purpose | Shows | Audience |
636
+ |-------|---------|-------|----------|
637
+ | **Context** | Big picture | Systems + external actors | Everyone |
638
+ | **Container** | Applications & data stores | Apps, databases, services within your system | Technical + Leadership |
639
+ | **Component** | Inside a container | Components, modules, classes | Developers, Architects |
640
+
641
+ #### Data Structure
642
+
643
+ The sync:data block contains:
644
+
645
+ \`\`\`json
646
+ {
647
+ "elements": [ ... ], // Systems, containers, components, people
648
+ "connections": [ ... ], // Communication paths between elements
649
+ "legend": [ ... ] // Optional color legend
650
+ }
651
+ \`\`\`
652
+
653
+ #### Element Structure (ArchitectureElement)
654
+
655
+ | Property | Required | Description |
656
+ |----------|----------|-------------|
657
+ | \`id\` | Yes | Unique identifier (kebab-case, e.g., "web-app") |
658
+ | \`label\` | Yes | Display name shown in the diagram |
659
+ | \`type\` | Yes | Element type (see types below) |
660
+ | \`description\` | No | Brief description of what this element does |
661
+ | \`technology\` | No | Technology stack (e.g., "React", "Node.js", "PostgreSQL") |
662
+ | \`isExternal\` | No | True if outside your system boundary |
663
+ | \`position\` | Yes | Visual position: \`{ "x": number, "y": number }\` |
664
+ | \`color\` | No | Override default color (hex code) |
665
+ | \`icon\` | No | Lucide icon name for visual representation |
666
+
667
+ #### Element Types
668
+
669
+ | Type | Default Color | Description | Visual |
670
+ |------|--------------|-------------|--------|
671
+ | \`system\` | #438DD5 (blue) | Software system (yours or external) | Large box |
672
+ | \`container\` | #438DD5 (blue) | Application, service, database | Medium box |
673
+ | \`component\` | #85BBF0 (light blue) | Module, class, or logical component | Small box |
674
+ | \`person\` | #08427B (dark blue) | User, actor, or role | Person shape |
675
+ | \`database\` | #438DD5 (blue) | Data store (SQL, NoSQL, file) | Cylinder |
676
+ | \`queue\` | #438DD5 (blue) | Message queue, event stream | Rounded box |
677
+ | \`external\` | #999999 (gray) | External system you don't control | Dashed box |
678
+
679
+ #### Connection Structure (ArchitectureConnection)
680
+
681
+ | Property | Required | Description |
682
+ |----------|----------|-------------|
683
+ | \`id\` | Yes | Unique ID (e.g., "conn-web-to-api") |
684
+ | \`sourceId\` | Yes | ID of the source element |
685
+ | \`targetId\` | Yes | ID of the target element |
686
+ | \`label\` | No | Description of what flows (e.g., "REST API", "Events") |
687
+ | \`communicationType\` | No | Type of communication (see below) |
688
+ | \`technology\` | No | Protocol or technology (e.g., "HTTPS", "gRPC", "WebSocket") |
689
+ | \`description\` | No | Additional details about the connection |
690
+
691
+ #### Communication Types
692
+
693
+ | Type | Arrow Style | Description |
694
+ |------|-------------|-------------|
695
+ | \`sync\` | Solid → | Synchronous request/response |
696
+ | \`async\` | Dashed → | Asynchronous messaging |
697
+ | \`read\` | Solid → (read) | Data read operation |
698
+ | \`write\` | Solid → (write) | Data write operation |
699
+ | \`bidirectional\` | ↔ | Two-way communication |
700
+
701
+ #### Complete Example
702
+
703
+ \`\`\`markdown
704
+ ---
705
+ type: architecture_diagram
706
+ section: technical
707
+ key: system-context
708
+ name: System Context Diagram
709
+ status: draft
710
+ level: context
711
+ audience: non-technical
712
+ ---
713
+
714
+ # System Context Diagram
715
+
716
+ High-level overview of how our application fits into the broader ecosystem.
717
+
718
+ ## Description
719
+ This diagram shows our EpicContext application and how it interacts with external users and systems.
720
+
721
+ <!-- sync:data -->
722
+ \\\`\`\`json
723
+ {
724
+ "elements": [
725
+ {
726
+ "id": "user",
727
+ "label": "Product Team",
728
+ "type": "person",
729
+ "description": "Uses EpicContext to manage product documentation",
730
+ "position": { "x": 400, "y": 50 }
731
+ },
732
+ {
733
+ "id": "epiccontext",
734
+ "label": "EpicContext",
735
+ "type": "system",
736
+ "description": "SaaS platform for managing design context documentation",
737
+ "technology": "Next.js, Supabase",
738
+ "position": { "x": 400, "y": 250 }
739
+ },
740
+ {
741
+ "id": "ai-agents",
742
+ "label": "AI Coding Agents",
743
+ "type": "person",
744
+ "description": "Claude Code, Cursor, etc. that consume context",
745
+ "position": { "x": 700, "y": 50 }
746
+ },
747
+ {
748
+ "id": "supabase",
749
+ "label": "Supabase",
750
+ "type": "external",
751
+ "description": "Backend-as-a-Service for auth and database",
752
+ "technology": "PostgreSQL",
753
+ "isExternal": true,
754
+ "position": { "x": 400, "y": 450 }
755
+ },
756
+ {
757
+ "id": "clerk",
758
+ "label": "Clerk",
759
+ "type": "external",
760
+ "description": "Authentication provider",
761
+ "isExternal": true,
762
+ "position": { "x": 150, "y": 250 }
763
+ },
764
+ {
765
+ "id": "mcp-server",
766
+ "label": "MCP Server",
767
+ "type": "system",
768
+ "description": "Local server that syncs context to codebase",
769
+ "technology": "Node.js",
770
+ "position": { "x": 700, "y": 250 }
771
+ }
772
+ ],
773
+ "connections": [
774
+ {
775
+ "id": "conn-user-to-app",
776
+ "sourceId": "user",
777
+ "targetId": "epiccontext",
778
+ "label": "Manages documentation",
779
+ "communicationType": "sync",
780
+ "technology": "HTTPS"
781
+ },
782
+ {
783
+ "id": "conn-app-to-supabase",
784
+ "sourceId": "epiccontext",
785
+ "targetId": "supabase",
786
+ "label": "Stores data",
787
+ "communicationType": "sync",
788
+ "technology": "PostgreSQL/REST"
789
+ },
790
+ {
791
+ "id": "conn-app-to-clerk",
792
+ "sourceId": "epiccontext",
793
+ "targetId": "clerk",
794
+ "label": "Authenticates users",
795
+ "communicationType": "sync",
796
+ "technology": "HTTPS"
797
+ },
798
+ {
799
+ "id": "conn-app-to-mcp",
800
+ "sourceId": "epiccontext",
801
+ "targetId": "mcp-server",
802
+ "label": "Syncs via API",
803
+ "communicationType": "sync",
804
+ "technology": "REST API"
805
+ },
806
+ {
807
+ "id": "conn-ai-to-mcp",
808
+ "sourceId": "ai-agents",
809
+ "targetId": "mcp-server",
810
+ "label": "Reads context",
811
+ "communicationType": "read",
812
+ "technology": "MCP Protocol"
813
+ }
814
+ ],
815
+ "legend": [
816
+ { "color": "#08427B", "label": "Person/User" },
817
+ { "color": "#438DD5", "label": "Our System" },
818
+ { "color": "#999999", "label": "External System" }
819
+ ]
820
+ }
821
+ \\\`\`\`
822
+ <!-- /sync:data -->
823
+ \`\`\`
824
+
825
+ #### Container Level Example
826
+
827
+ \`\`\`markdown
828
+ ---
829
+ type: architecture_diagram
830
+ section: technical
831
+ key: container-diagram
832
+ name: Container Diagram
833
+ status: draft
834
+ level: container
835
+ audience: technical
836
+ ---
837
+
838
+ # Container Diagram
839
+
840
+ Applications and data stores that make up EpicContext.
841
+
842
+ <!-- sync:data -->
843
+ \\\`\`\`json
844
+ {
845
+ "elements": [
846
+ {
847
+ "id": "web-app",
848
+ "label": "Web Application",
849
+ "type": "container",
850
+ "description": "SPA for managing context",
851
+ "technology": "Next.js 14, React, TypeScript",
852
+ "position": { "x": 200, "y": 100 }
853
+ },
854
+ {
855
+ "id": "api",
856
+ "label": "API Routes",
857
+ "type": "container",
858
+ "description": "Server-side API endpoints",
859
+ "technology": "Next.js API Routes",
860
+ "position": { "x": 500, "y": 100 }
861
+ },
862
+ {
863
+ "id": "database",
864
+ "label": "Database",
865
+ "type": "database",
866
+ "description": "Stores all application data",
867
+ "technology": "PostgreSQL (Supabase)",
868
+ "position": { "x": 500, "y": 300 }
869
+ },
870
+ {
871
+ "id": "file-storage",
872
+ "label": "File Storage",
873
+ "type": "database",
874
+ "description": "Stores uploaded assets",
875
+ "technology": "Supabase Storage",
876
+ "position": { "x": 200, "y": 300 }
877
+ },
878
+ {
879
+ "id": "mcp-package",
880
+ "label": "MCP Package",
881
+ "type": "container",
882
+ "description": "NPM package for local sync",
883
+ "technology": "Node.js, TypeScript",
884
+ "position": { "x": 750, "y": 200 }
885
+ }
886
+ ],
887
+ "connections": [
888
+ {
889
+ "id": "conn-web-to-api",
890
+ "sourceId": "web-app",
891
+ "targetId": "api",
892
+ "label": "API calls",
893
+ "communicationType": "sync",
894
+ "technology": "HTTPS/JSON"
895
+ },
896
+ {
897
+ "id": "conn-api-to-db",
898
+ "sourceId": "api",
899
+ "targetId": "database",
900
+ "label": "Queries",
901
+ "communicationType": "bidirectional",
902
+ "technology": "Supabase Client"
903
+ },
904
+ {
905
+ "id": "conn-web-to-storage",
906
+ "sourceId": "web-app",
907
+ "targetId": "file-storage",
908
+ "label": "Uploads/Downloads",
909
+ "communicationType": "bidirectional",
910
+ "technology": "Supabase Storage API"
911
+ },
912
+ {
913
+ "id": "conn-mcp-to-api",
914
+ "sourceId": "mcp-package",
915
+ "targetId": "api",
916
+ "label": "Syncs context",
917
+ "communicationType": "sync",
918
+ "technology": "REST API"
919
+ }
920
+ ]
921
+ }
922
+ \\\`\`\`
923
+ <!-- /sync:data -->
924
+ \`\`\`
925
+
926
+ #### Best Practices
927
+
928
+ 1. **Choose the right level:**
929
+ - Start with Context for stakeholder communication
930
+ - Use Container for development planning
931
+ - Use Component for detailed design of complex containers
932
+
933
+ 2. **Position elements logically:**
934
+ - Users/actors at top
935
+ - Your system in the middle
936
+ - External dependencies at bottom or sides
937
+ - Space elements ~200-300px apart
938
+
939
+ 3. **Label connections clearly:**
940
+ - Use verbs: "Reads data", "Sends events", "Authenticates"
941
+ - Include technology when relevant: "REST API", "gRPC", "WebSocket"
942
+ - Keep labels concise but informative
943
+
944
+ 4. **Use consistent colors:**
945
+ - Blue (#438DD5) for your internal systems
946
+ - Gray (#999999) for external systems
947
+ - Dark blue (#08427B) for people/users
948
+ - Add legend for custom colors
949
+
950
+ 5. **Include technology details:**
951
+ - For Container level: framework, language, runtime
952
+ - For connections: protocol, message format
953
+ - Helps developers understand the stack
954
+
955
+ 6. **Keep diagrams focused:**
956
+ - Context: 3-6 systems maximum
957
+ - Container: 5-10 containers maximum
958
+ - Component: 5-15 components maximum
959
+ - Create multiple diagrams if needed
960
+
961
+ #### Common Mistakes
962
+
963
+ WRONG: Missing positions
964
+ \`\`\`json
965
+ { "id": "api", "label": "API", "type": "container" }
966
+ \`\`\`
967
+
968
+ CORRECT: Always include positions
969
+ \`\`\`json
970
+ { "id": "api", "label": "API", "type": "container", "position": { "x": 400, "y": 200 } }
971
+ \`\`\`
972
+
973
+ WRONG: Vague connection labels
974
+ \`\`\`json
975
+ { "id": "conn-1", "sourceId": "a", "targetId": "b", "label": "uses" }
976
+ \`\`\`
977
+
978
+ CORRECT: Specific, actionable labels
979
+ \`\`\`json
980
+ { "id": "conn-1", "sourceId": "a", "targetId": "b", "label": "Fetches user data", "technology": "REST API" }
981
+ \`\`\`
982
+
983
+ WRONG: Too many elements on one diagram
984
+ Create separate diagrams for different aspects or zoom levels.
985
+
986
+ CORRECT: Focused diagrams
987
+ - One Context diagram for the big picture
988
+ - Separate Container diagrams per major system
989
+ - Component diagrams only for complex containers
990
+
991
+ ### Development Section Blocks (Epic → Story → Task)
992
+
993
+ The development section uses a hierarchical structure to plan and track work. This creates a clear flow from high-level initiatives down to specific implementation tasks.
994
+
995
+ #### Hierarchy Flow
996
+
997
+ \`\`\`
998
+ Epic (Large initiative)
999
+ └── User Story (User-facing feature)
1000
+ └── Task / Agent Plan (Technical implementation)
1001
+ \`\`\`
1002
+
1003
+ **How AI/Developers Should Use This:**
1004
+ 1. **Product Owner/User** creates Epics for major initiatives
1005
+ 2. **Product Owner/User** breaks Epics into User Stories
1006
+ 3. **AI Agent/Developer** reads Stories and creates Tasks with implementation plans
1007
+ 4. **AI Agent/Developer** executes Tasks and updates outcomes
1008
+
1009
+ ---
1010
+
1011
+ #### Epic Block
1012
+
1013
+ An Epic represents a large body of work that delivers significant value. It groups related User Stories.
1014
+
1015
+ **Required Fields:**
1016
+ - \`summary\` - One-line description
1017
+ - \`status\` - todo, in_progress, done
1018
+
1019
+ **Key Fields:**
1020
+ - \`description\` - Detailed explanation
1021
+ - \`priority\` - highest, high, medium, low, lowest
1022
+ - \`story_refs\` - Links to child User Stories
1023
+ - \`impact_score\` / \`effort_score\` - 1-5 scale for prioritization
1024
+ - \`start_date\` / \`due_date\` - Timeline
1025
+ - \`labels\` - Comma-separated tags
1026
+
1027
+ **Example:**
1028
+ \`\`\`markdown
1029
+ ---
1030
+ type: epic
1031
+ section: development
1032
+ key: user-authentication
1033
+ name: User Authentication System
1034
+ status: draft
1035
+ priority: high
1036
+ start_date: 2025-01-15
1037
+ due_date: 2025-02-28
1038
+ labels: security, mvp, phase-1
1039
+ story_refs:
1040
+ - email-login
1041
+ - oauth-integration
1042
+ - password-reset
1043
+ ---
1044
+
1045
+ # User Authentication System
1046
+
1047
+ Implement a complete authentication system allowing users to securely access their accounts.
1048
+
1049
+ ## Summary
1050
+ Build secure user authentication with email/password and OAuth support.
1051
+
1052
+ ## Description
1053
+ This epic covers all authentication-related features including registration, login, logout, password management, and third-party OAuth integration. The goal is to provide a frictionless yet secure authentication experience.
1054
+
1055
+ ### Goals
1056
+ - Enable secure user registration with email verification
1057
+ - Support login via email/password and OAuth (Google, GitHub)
1058
+ - Implement password reset flow with secure tokens
1059
+ - Add session management with JWT
1060
+
1061
+ ### Success Criteria
1062
+ - Users can create accounts and verify email
1063
+ - Login works with email/password and OAuth providers
1064
+ - Password reset emails arrive within 30 seconds
1065
+ - Sessions expire after 24 hours of inactivity
1066
+
1067
+ ### Out of Scope
1068
+ - Two-factor authentication (planned for Phase 2)
1069
+ - Social login beyond Google/GitHub
1070
+ \`\`\`
1071
+
1072
+ ---
1073
+
1074
+ #### User Story Block
1075
+
1076
+ A User Story describes a feature from the user's perspective. It belongs to an Epic and can have Tasks.
1077
+
1078
+ **Required Fields:**
1079
+ - \`summary\` - Brief description
1080
+ - \`status\` - todo, in_progress, in_review, done
1081
+
1082
+ **Key Fields:**
1083
+ - \`user_story\` - "As a [role], I want [goal], so that [benefit]" format
1084
+ - \`acceptance_criteria\` - Testable conditions (Given/When/Then)
1085
+ - \`epic_ref\` - Link to parent Epic
1086
+ - \`story_points\` - 1, 2, 3, 5, 8, 13, 21 (Fibonacci)
1087
+ - \`priority\` - highest, high, medium, low, lowest
1088
+ - \`impact_score\` / \`effort_score\` - 1-5 scale
1089
+ - \`sprint\` - Sprint assignment
1090
+
1091
+ **Example:**
1092
+ \`\`\`markdown
1093
+ ---
1094
+ type: user_story
1095
+ section: development
1096
+ key: email-login
1097
+ name: Email Login
1098
+ status: draft
1099
+ priority: high
1100
+ story_points: 5
1101
+ impact_score: 5
1102
+ effort_score: 3
1103
+ epic_ref: user-authentication
1104
+ sprint: Sprint 1
1105
+ ---
1106
+
1107
+ # Email Login
1108
+
1109
+ Allow users to securely log in with their email and password.
1110
+
1111
+ ## Summary
1112
+ Implement email/password authentication with proper security measures.
1113
+
1114
+ ## User Story
1115
+ As a registered user, I want to log in with my email and password, so that I can access my account securely and quickly.
1116
+
1117
+ ## Description
1118
+ Users need a fast and secure way to access their accounts. The login form should validate input, show helpful error messages, and redirect to the dashboard on success.
1119
+
1120
+ ## Acceptance Criteria
1121
+
1122
+ ### Scenario: Successful login
1123
+ - Given I am on the login page
1124
+ - When I enter a valid email and correct password
1125
+ - Then I am redirected to the dashboard
1126
+ - And I see a welcome message with my name
1127
+
1128
+ ### Scenario: Invalid credentials
1129
+ - Given I am on the login page
1130
+ - When I enter an invalid email or wrong password
1131
+ - Then I see an error message "Invalid email or password"
1132
+ - And I remain on the login page
1133
+ - And the password field is cleared
1134
+
1135
+ ### Scenario: Rate limiting
1136
+ - Given I have failed login 5 times in 5 minutes
1137
+ - When I try to login again
1138
+ - Then I see "Too many attempts. Please try again in 15 minutes"
1139
+
1140
+ ## Technical Notes
1141
+ - Use bcrypt for password hashing (cost factor 12)
1142
+ - Implement rate limiting: 5 attempts per 5 minutes per IP
1143
+ - Generate JWT with 24h expiry
1144
+ - Store refresh token in httpOnly cookie
1145
+ \`\`\`
1146
+
1147
+ ---
1148
+
1149
+ #### Task / Agent Plan Block
1150
+
1151
+ A Task contains the technical implementation plan. AI coding agents (Claude Code, Cursor, etc.) should create Tasks when planning work.
1152
+
1153
+ **Required Fields:**
1154
+ - \`description\` - What needs to be done
1155
+ - \`status\` - planned, todo, in_progress, in_review, done, abandoned
1156
+
1157
+ **Key Fields:**
1158
+ - \`story_ref\` - Link to parent User Story
1159
+ - \`plan_steps\` - Step-by-step implementation plan
1160
+ - \`agent_source\` - manual, claude_code, cursor, copilot, windsurf, aider, other_ai
1161
+ - \`files_affected\` - List of files to create/modify
1162
+ - \`codebase_context\` - Relevant architecture notes
1163
+ - \`technical_notes\` - Implementation details
1164
+ - \`dependencies\` - Prerequisites or packages needed
1165
+ - \`estimated_hours\` - Time estimate
1166
+ - \`outcome\` - Results after completion
1167
+
1168
+ **Example (AI Agent Plan):**
1169
+ \`\`\`markdown
1170
+ ---
1171
+ type: task
1172
+ section: development
1173
+ key: implement-login-api
1174
+ name: Implement Login API Endpoint
1175
+ status: planned
1176
+ priority: high
1177
+ agent_source: claude_code
1178
+ story_ref: email-login
1179
+ estimated_hours: 4
1180
+ ---
1181
+
1182
+ # Implement Login API Endpoint
1183
+
1184
+ Create the POST /api/auth/login endpoint that validates credentials and returns JWT tokens.
1185
+
1186
+ ## Description
1187
+ Implement the login API endpoint with proper validation, rate limiting, and token generation.
1188
+
1189
+ ## Implementation Plan
1190
+
1191
+ ### Step 1: Create Login Route Handler
1192
+ Create \`app/api/auth/login/route.ts\` with POST handler:
1193
+ - Accept email and password in request body
1194
+ - Validate input format using zod schema
1195
+ - Return 400 for invalid input with specific error messages
1196
+
1197
+ ### Step 2: Implement User Lookup
1198
+ Query the users table by email:
1199
+ - Use Supabase client with service role for server-side
1200
+ - Return generic "Invalid credentials" to prevent email enumeration
1201
+ - Handle case-insensitive email matching
1202
+
1203
+ ### Step 3: Password Verification
1204
+ Compare provided password with stored hash:
1205
+ - Use bcrypt.compare() for timing-safe comparison
1206
+ - Log failed attempts for security monitoring
1207
+ - Increment rate limit counter on failure
1208
+
1209
+ ### Step 4: Generate JWT Tokens
1210
+ On successful authentication:
1211
+ - Generate access token (24h expiry) with user ID and email
1212
+ - Generate refresh token (7d expiry) stored in httpOnly cookie
1213
+ - Include minimal claims to reduce token size
1214
+
1215
+ ### Step 5: Implement Rate Limiting
1216
+ Add rate limiting middleware:
1217
+ - Use Redis or in-memory store for attempt tracking
1218
+ - Key by IP address + email combination
1219
+ - Block after 5 failed attempts for 15 minutes
1220
+ - Return 429 with Retry-After header
1221
+
1222
+ ### Step 6: Add Tests
1223
+ Create \`app/api/auth/login/route.test.ts\`:
1224
+ - Test successful login returns tokens
1225
+ - Test invalid email format returns 400
1226
+ - Test wrong password returns 401
1227
+ - Test rate limiting blocks after 5 attempts
1228
+
1229
+ ## Files Affected
1230
+ - \`app/api/auth/login/route.ts\` (create)
1231
+ - \`lib/auth/jwt.ts\` (create)
1232
+ - \`lib/auth/password.ts\` (create)
1233
+ - \`lib/middleware/rate-limit.ts\` (create)
1234
+ - \`app/api/auth/login/route.test.ts\` (create)
1235
+
1236
+ ## Codebase Context
1237
+ - Using Next.js 14 App Router
1238
+ - Supabase for database and auth
1239
+ - JWT library: jose
1240
+ - Password hashing: bcrypt
1241
+ - Validation: zod
1242
+
1243
+ ## Dependencies
1244
+ - jose (JWT handling)
1245
+ - bcrypt (password hashing)
1246
+ - zod (validation)
1247
+
1248
+ ## Technical Notes
1249
+ - Follow existing API patterns in \`app/api/\` folder
1250
+ - Use \`@/lib/supabase/server\` for database access
1251
+ - Error responses should match the ErrorResponse type in \`types/api.ts\`
1252
+ \`\`\`
1253
+
1254
+ ---
1255
+
1256
+ #### Roadmap Block
1257
+
1258
+ A Roadmap provides a timeline view of Epics across time periods (quarters, months, sprints).
1259
+
1260
+ **Key Fields:**
1261
+ - \`description\` - Purpose of this roadmap
1262
+ - \`timeline\` - Visual timeline data with columns and epic placements
1263
+ - \`notes\` - Additional context, risks, assumptions
1264
+
1265
+ **Timeline Structure:**
1266
+ \`\`\`json
1267
+ {
1268
+ "columns": [
1269
+ { "id": "q1-2025", "name": "Q1 2025", "period": "quarter" },
1270
+ { "id": "q2-2025", "name": "Q2 2025", "period": "quarter" }
1271
+ ],
1272
+ "items": [
1273
+ {
1274
+ "epicRef": "user-authentication",
1275
+ "startColumn": "q1-2025",
1276
+ "spanColumns": 1,
1277
+ "row": 0
1278
+ }
1279
+ ],
1280
+ "settings": { "defaultPeriod": "quarter" }
1281
+ }
1282
+ \`\`\`
1283
+
1284
+ ---
1285
+
1286
+ #### Workflow: From User Request to Implementation
1287
+
1288
+ **1. User/Product Owner Creates Epic:**
1289
+ \`\`\`
1290
+ "We need user authentication for the MVP"
1291
+ → Create Epic: user-authentication
1292
+ → Set priority: high
1293
+ → Set dates: Q1 2025
1294
+ \`\`\`
1295
+
1296
+ **2. User/Product Owner Breaks Down Stories:**
1297
+ \`\`\`
1298
+ Epic: user-authentication
1299
+ → Story: email-login (5 points)
1300
+ → Story: oauth-integration (8 points)
1301
+ → Story: password-reset (3 points)
1302
+ \`\`\`
1303
+
1304
+ **3. AI Agent Reads Story and Plans:**
1305
+ \`\`\`
1306
+ AI reads: email-login story
1307
+ → Creates Task: implement-login-api (4 hours)
1308
+ → Creates Task: build-login-form (3 hours)
1309
+ → Creates Task: add-login-tests (2 hours)
1310
+ \`\`\`
1311
+
1312
+ **4. AI Agent Executes and Documents:**
1313
+ \`\`\`
1314
+ Task: implement-login-api
1315
+ → Status: in_progress
1316
+ → [AI implements code]
1317
+ → Status: done
1318
+ → Outcome: "Completed. Added rate limiting as discussed."
1319
+ \`\`\`
1320
+
1321
+ ---
1322
+
1323
+ #### Best Practices for AI Agents
1324
+
1325
+ 1. **Read the Story First**: Before creating tasks, fully understand the user story and acceptance criteria.
1326
+
1327
+ 2. **Break Down Thoughtfully**: Create tasks that are:
1328
+ - Independently testable
1329
+ - 2-8 hours of work each
1330
+ - Clearly scoped with specific files
1331
+
1332
+ 3. **Document Your Plan**: In \`plan_steps\`, explain:
1333
+ - What you'll do in each step
1334
+ - Why you're making certain choices
1335
+ - What files you'll touch
1336
+
1337
+ 4. **Track Codebase Context**: Note relevant:
1338
+ - Existing patterns to follow
1339
+ - Related code to reference
1340
+ - Constraints or dependencies
1341
+
1342
+ 5. **Update Outcomes**: After completing a task, document:
1343
+ - What was actually done
1344
+ - Any deviations from the plan
1345
+ - Issues encountered and how they were resolved
1346
+
620
1347
  ## Block References
621
1348
 
622
1349
  Some blocks can reference other blocks using reference fields in frontmatter:
@@ -1 +1 @@
1
- {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/cli/files.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsvCnB,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,+DAA+D;IAC/D,gBAAgB,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE;;;;;;;;;;;;CAYxF,CAAC,CAAC;IAED,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE;;;;;;;;;;;CAWxE,CAAC,CAAC;IAED,gBAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE;;;;;;;;;;;;CAY9E,CAAC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,gBAAgB,CACvB,WAAmB,EACnB,OAAe,EACf,GAAW,EACX,IAAY,EACZ,IAAY,EACZ,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG;QAChB,IAAI;WACD,OAAO;OACX,GAAG;QACF,IAAI;;;;EAIV,OAAO,EAAE,CAAC;QACR,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epiccontext/mcp",
3
- "version": "0.1.17",
3
+ "version": "0.1.19",
4
4
  "description": "MCP server and CLI for syncing EpicContext documentation with local codebases",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",