kortext 2.2.3 → 3.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/LICENSE +21 -0
- package/README.md +175 -65
- package/agents/architect.md +85 -0
- package/agents/compliance-expert.md +36 -75
- package/agents/copywriter.md +36 -92
- package/agents/db-admin.md +43 -91
- package/agents/designer.md +40 -77
- package/agents/devops-engineer.md +37 -113
- package/agents/growth-expert.md +45 -88
- package/agents/product-manager.md +38 -83
- package/agents/qa-engineer.md +51 -99
- package/agents/security-engineer.md +47 -92
- package/bin/kortext.js +2 -0
- package/dist/app.js +829 -0
- package/dist/cli-spawn.js +137 -0
- package/dist/daemon.js +40 -0
- package/dist/db.js +78 -0
- package/dist/design-preview.js +533 -0
- package/dist/docs.js +701 -0
- package/dist/engines.js +225 -0
- package/dist/index.js +109 -0
- package/dist/pick-directory.js +38 -0
- package/dist/projects.js +189 -0
- package/dist/readiness.js +288 -0
- package/dist/runner.js +771 -0
- package/dist/update.js +55 -0
- package/docs/CHANGELOG.md +11 -0
- package/package.json +53 -13
- package/templates/AGENTS.md +62 -0
- package/templates/docs/API.md +67 -0
- package/templates/docs/ARCHITECTURE.md +31 -0
- package/templates/docs/BRIEF.md +27 -0
- package/templates/docs/CONTENT.md +66 -0
- package/templates/docs/DATABASE.md +63 -0
- package/templates/docs/DESIGN.md +124 -0
- package/templates/docs/ENGINEERING.md +66 -0
- package/templates/docs/ENVIRONMENT.md +102 -0
- package/templates/docs/GROWTH.md +44 -0
- package/templates/docs/LEGAL.md +48 -0
- package/templates/docs/PRODUCT.md +43 -0
- package/templates/docs/SECURITY.md +65 -0
- package/templates/docs/STACK.md +57 -0
- package/templates/docs/STRUCTURE.md +73 -0
- package/templates/docs/TEST.md +62 -0
- package/ui/dist/assets/abnfDiagram-VCTEODGH-Bm7Q2BML.js +1 -0
- package/ui/dist/assets/arc-BV9hs0Hu.js +1 -0
- package/ui/dist/assets/architecture-7GRP2DOG-RckR3gBI.js +1 -0
- package/ui/dist/assets/architectureDiagram-5GKGNRK7-CHiJ6JFT.js +36 -0
- package/ui/dist/assets/array-BifhSqXX.js +1 -0
- package/ui/dist/assets/blockDiagram-I7D4REHJ-qCbaKVhd.js +129 -0
- package/ui/dist/assets/c4Diagram-7LVT6UL2-DidCDJrv.js +38 -0
- package/ui/dist/assets/channel-CNUQ11ne.js +1 -0
- package/ui/dist/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
- package/ui/dist/assets/chunk-4HAMMTFA-CDGFjfVp.js +62 -0
- package/ui/dist/assets/chunk-5VM5RSS4-ZNzvKenW.js +15 -0
- package/ui/dist/assets/chunk-75Z2AOVW-CbNT4sDh.js +2 -0
- package/ui/dist/assets/chunk-DU6HZSFF-Cq2BVv26.js +127 -0
- package/ui/dist/assets/chunk-F27PBJKO-CE365m0v.js +1 -0
- package/ui/dist/assets/chunk-FOHPRMQF-DHwB1DNv.js +161 -0
- package/ui/dist/assets/chunk-GMAD6QVW-DxWL1VC-.js +72 -0
- package/ui/dist/assets/chunk-GVQU2GXP-aARV8YbK.js +1 -0
- package/ui/dist/assets/chunk-IMKFNOWR-CC790Kt2.js +231 -0
- package/ui/dist/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
- package/ui/dist/assets/chunk-L3NEJ4N5-BfE4VE8J.js +1 -0
- package/ui/dist/assets/chunk-OSK3NFVY-BImQbSWH.js +10 -0
- package/ui/dist/assets/chunk-P2QGCYS3-CN3XD313.js +1 -0
- package/ui/dist/assets/chunk-POPQ4Y6H-Dqb6jOrX.js +1 -0
- package/ui/dist/assets/chunk-PWAF6VOD-DfXX6rBk.js +1 -0
- package/ui/dist/assets/chunk-SHT3W25Y-DATyyqPK.js +168 -0
- package/ui/dist/assets/chunk-SVP7TREG-r1chwRmg.js +88 -0
- package/ui/dist/assets/chunk-TICWLB2K-DL4atHUC.js +206 -0
- package/ui/dist/assets/chunk-XXDRQBXY-DXrM6jh7.js +1 -0
- package/ui/dist/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
- package/ui/dist/assets/classDiagram-ZZMXUADV-BpQxfIQ7.js +1 -0
- package/ui/dist/assets/classDiagram-v2-VYDZK3BY-BpQxfIQ7.js +1 -0
- package/ui/dist/assets/cose-bilkent-JH36ORCC-Bhe-ZBlS.js +1 -0
- package/ui/dist/assets/cynefin-OW5HDTMX-D1koLd-G.js +1 -0
- package/ui/dist/assets/cynefinDiagram-5FMLGOSQ-BMcw40hV.js +62 -0
- package/ui/dist/assets/cytoscape.esm-CGd-uY3x.js +321 -0
- package/ui/dist/assets/dagre-GXQ25YYZ-DBun-Rs2.js +4 -0
- package/ui/dist/assets/dagre-PrKaheQc.js +1 -0
- package/ui/dist/assets/defaultLocale-BFoDCU3G.js +1 -0
- package/ui/dist/assets/diagram-S7CK7UJ4-C1fUIGvo.js +30 -0
- package/ui/dist/assets/diagram-UQ7AKVKN-B5FDfkvB.js +41 -0
- package/ui/dist/assets/diagram-VSXAHHWV-CCIpOCNC.js +3 -0
- package/ui/dist/assets/diagram-VX7I27RA-DV0q2xo_.js +24 -0
- package/ui/dist/assets/diagram-Z3DM3KII-B3LCdNgI.js +24 -0
- package/ui/dist/assets/dist-EcW76Zvr.js +1 -0
- package/ui/dist/assets/ebnfDiagram-PWID7BFC-De_oRbYe.js +1 -0
- package/ui/dist/assets/erDiagram-RLTQ6QDP-B9NikMr1.js +99 -0
- package/ui/dist/assets/eventmodeling-NTZA5JFV-DZ4t581k.js +1 -0
- package/ui/dist/assets/flowDiagram-HODETNUW-DuTOJp1C.js +1 -0
- package/ui/dist/assets/ganttDiagram-EL5Y4UJY-BVTqqlPw.js +292 -0
- package/ui/dist/assets/gitGraph-4MIJSDKK-xRFaEJdZ.js +1 -0
- package/ui/dist/assets/gitGraphDiagram-WWUBYQGX-CK5_GCmX.js +106 -0
- package/ui/dist/assets/graphlib-DS17s2tU.js +1 -0
- package/ui/dist/assets/index-CjkpNftW.js +46 -0
- package/ui/dist/assets/index-DVIDTWin.css +1 -0
- package/ui/dist/assets/info-A6RAGUB7-Dg7z-CTI.js +1 -0
- package/ui/dist/assets/infoDiagram-27XIBGKW-YaqsOXh0.js +2 -0
- package/ui/dist/assets/init-C-OQMol4.js +1 -0
- package/ui/dist/assets/ishikawaDiagram-5VMMS53U-C-wtxZPa.js +70 -0
- package/ui/dist/assets/journeyDiagram-3NMN7TZE-DsXSXf16.js +139 -0
- package/ui/dist/assets/kanban-definition-UXKFOSKX-Ct59fuWk.js +89 -0
- package/ui/dist/assets/katex-CXMH3UgJ.js +257 -0
- package/ui/dist/assets/line-BUVw9Mhs.js +1 -0
- package/ui/dist/assets/linear-D8ncLO0X.js +1 -0
- package/ui/dist/assets/mermaid-parser.core-BDC4bG-O.js +7 -0
- package/ui/dist/assets/mermaid.core-DZY3WwzX.js +44 -0
- package/ui/dist/assets/mindmap-definition-YA3MSWOX-DtiuF6Ce.js +96 -0
- package/ui/dist/assets/ordinal-BDEzSJ7C.js +1 -0
- package/ui/dist/assets/packet-AYTQ26CC-BX2-w9rD.js +1 -0
- package/ui/dist/assets/path-fybaL0A-.js +1 -0
- package/ui/dist/assets/pegDiagram-XKGWAZYB-CotwuIHB.js +1 -0
- package/ui/dist/assets/pie-WAS4IAKB-Hth8ZVpm.js +1 -0
- package/ui/dist/assets/pieDiagram-E7YTZNPT-D9-INs8B.js +39 -0
- package/ui/dist/assets/quadrantDiagram-AXDQQJYC-CMtBXZGV.js +7 -0
- package/ui/dist/assets/radar-RG4KPBEZ-6UuwQPsw.js +1 -0
- package/ui/dist/assets/railroad-74A4TZTK-BF5TZgj0.js +1 -0
- package/ui/dist/assets/railroad-abnf-HS5TGJTU-3KYovtYT.js +1 -0
- package/ui/dist/assets/railroad-ebnf-LZEXJU2U-DeP4WedE.js +1 -0
- package/ui/dist/assets/railroad-peg-WCYAUIDC-i42N1-yk.js +1 -0
- package/ui/dist/assets/railroadDiagram-O6MQD6OU-BS6zkU3Z.js +1 -0
- package/ui/dist/assets/requirementDiagram-BXWQKSXE-J4IOB-kP.js +84 -0
- package/ui/dist/assets/rough.esm-Dy-Kn_BL.js +1 -0
- package/ui/dist/assets/sankeyDiagram-P5KCCOFB-jYTCuYzQ.js +40 -0
- package/ui/dist/assets/sequenceDiagram-WJ2MYXX4-Cd2r6PW-.js +162 -0
- package/ui/dist/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
- package/ui/dist/assets/src-7TsfZXRO.js +1 -0
- package/ui/dist/assets/stateDiagram-D77RDMKH-DXOdtOKe.js +1 -0
- package/ui/dist/assets/stateDiagram-v2-MP3YSRHH-9h7sIf3R.js +1 -0
- package/ui/dist/assets/swimlanes-42K2YHIH-BvJGmGs1.js +1 -0
- package/ui/dist/assets/swimlanesDiagram-VR7AAH4N-QA4gPi6a.js +8 -0
- package/ui/dist/assets/timeline-definition-24CTP7MA-CAaD6-yd.js +120 -0
- package/ui/dist/assets/treeView-Q6P3EWNA-4gDEXIyJ.js +1 -0
- package/ui/dist/assets/treemap-WGGIJYW6-CGel5TwW.js +1 -0
- package/ui/dist/assets/vennDiagram-4TSXK5OY-DpxsKboL.js +34 -0
- package/ui/dist/assets/wardley-WFR3VGLG-Ck38v5ns.js +1 -0
- package/ui/dist/assets/wardleyDiagram-VM6X3IG4-Ba0grrqs.js +78 -0
- package/ui/dist/assets/xychartDiagram-S5SC5T6Z-DH_gC96K.js +7 -0
- package/ui/dist/index.html +13 -0
- package/ui/dist/kortext-logo-dark.svg +41 -0
- package/ui/dist/kortext-logo.svg +41 -0
- package/workflows/existing-project-analysis.md +87 -0
- package/workflows/new-project-analysis.md +98 -0
- package/workflows/planning-pipeline.md +61 -0
- package/AGENTS.md +0 -28
- package/agents/backend-developer.md +0 -132
- package/agents/delivery-manager.md +0 -121
- package/agents/engineering-manager.md +0 -208
- package/agents/frontend-developer.md +0 -174
- package/agents/operation-manager.md +0 -122
- package/hooks/audit-logger.sh +0 -25
- package/hooks/auto-locker.sh +0 -74
- package/hooks/auto-unlocker.sh +0 -17
- package/hooks/backlog-sync-guard.sh +0 -12
- package/hooks/branch-guard.sh +0 -32
- package/hooks/commit-msg-guard.sh +0 -43
- package/hooks/git-pre-commit.sh +0 -76
- package/hooks/git-pre-push.sh +0 -17
- package/hooks/handover-guard.sh +0 -33
- package/hooks/kortext-init.sh +0 -194
- package/hooks/kortext-lib.sh +0 -151
- package/hooks/lint-guard.sh +0 -50
- package/hooks/secret-scanner.sh +0 -89
- package/hooks/size-guard.sh +0 -48
- package/hooks/snapshot-guard.sh +0 -39
- package/hooks/write-guard.sh +0 -77
- package/rules/behavior.md +0 -252
- package/rules/branching.md +0 -82
- package/rules/commands.md +0 -112
- package/rules/emergency.md +0 -160
- package/rules/mcp.md +0 -47
- package/rules/models.md +0 -93
- package/scripts/kortext-backlog-add.py +0 -123
- package/scripts/kortext-backlog-health.py +0 -112
- package/scripts/kortext-backlog-sync.py +0 -117
- package/scripts/kortext-bulk-plan.py +0 -63
- package/scripts/kortext-cli.py +0 -376
- package/scripts/kortext-consistency-check.py +0 -74
- package/scripts/kortext-context-check.py +0 -146
- package/scripts/kortext-handover.py +0 -107
- package/scripts/kortext-item-check.py +0 -61
- package/scripts/kortext-item-start.py +0 -70
- package/scripts/kortext-item-transition.py +0 -78
- package/scripts/kortext-lock.py +0 -174
- package/scripts/kortext-session-start.py +0 -127
- package/scripts/lock_kortext.sh +0 -34
- package/settings/.claude-settings.template.json +0 -48
- package/settings/CHANGELOG.md +0 -176
- package/settings/INTEGRATION-MAP.md +0 -276
- package/settings/README.md +0 -255
- package/settings/USER-GUIDE.md +0 -502
- package/settings/VERSION +0 -1
- package/settings/config.md +0 -8
- package/settings/runtime-adapters.md +0 -104
- package/skills/backend-developer/.gitkeep +0 -0
- package/skills/compliance-expert/.gitkeep +0 -0
- package/skills/copywriter/.gitkeep +0 -0
- package/skills/db-admin/.gitkeep +0 -0
- package/skills/delivery-manager/.gitkeep +0 -0
- package/skills/designer/.gitkeep +0 -0
- package/skills/devops-engineer/.gitkeep +0 -0
- package/skills/engineering-manager/.gitkeep +0 -0
- package/skills/frontend-developer/.gitkeep +0 -0
- package/skills/growth-expert/.gitkeep +0 -0
- package/skills/operation-manager/.gitkeep +0 -0
- package/skills/product-manager/.gitkeep +0 -0
- package/skills/qa-engineer/.gitkeep +0 -0
- package/skills/security-engineer/.gitkeep +0 -0
- package/workflows/00-kortext-setup.md +0 -53
- package/workflows/01a-analysis-pipeline.md +0 -117
- package/workflows/01b-onboarding-pipeline.md +0 -110
- package/workflows/02-planning-pipeline.md +0 -146
- package/workflows/02b-spike-workflow.md +0 -120
- package/workflows/03-environment-setup.md +0 -99
- package/workflows/04-development-cycle.md +0 -203
- package/workflows/05-test-cycle.md +0 -123
- package/workflows/06-deployment-cycle.md +0 -224
- package/workflows/07-rollback-pipeline.md +0 -203
- package/workflows/08-hotfix-pipeline.md +0 -196
- package/workflows/09-maintenance-cycle.md +0 -133
- package/workspace/archive/.gitkeep +0 -0
- package/workspace/backups/.gitkeep +0 -0
- package/workspace/memory/backlog/.gitkeep +0 -0
- package/workspace/memory/backlog/BXX-[bug-name].md +0 -2
- package/workspace/memory/backlog/DXX-[debt-name].md +0 -2
- package/workspace/memory/backlog/README.md +0 -31
- package/workspace/memory/backlog/TXX-[task-name].md +0 -2
- package/workspace/memory/backlog/debt-dashboard.md +0 -3
- package/workspace/memory/backlog/epic-dashboard.md +0 -10
- package/workspace/memory/backlog/version-dashboard.md +0 -7
- package/workspace/memory/context/.gitkeep +0 -0
- package/workspace/memory/context/README.md +0 -35
- package/workspace/memory/context/[agent-name]-active.md +0 -2
- package/workspace/memory/decisions.md +0 -17
- package/workspace/memory/handover.md +0 -40
- package/workspace/memory/learned.md +0 -21
- package/workspace/references/access.md +0 -47
- package/workspace/references/api-reference.md +0 -59
- package/workspace/references/blueprint.md +0 -29
- package/workspace/references/content-strategy.md +0 -39
- package/workspace/references/db-schema.md +0 -51
- package/workspace/references/design-system.md +0 -107
- package/workspace/references/dictionary.md +0 -42
- package/workspace/references/file-system.md +0 -42
- package/workspace/references/growth-strategy.md +0 -46
- package/workspace/references/legal-strategy.md +0 -35
- package/workspace/references/required-skills.md +0 -11
- package/workspace/references/security-rules.md +0 -34
- package/workspace/references/tech-stack.md +0 -49
- package/workspace/references/test-strategy.md +0 -48
- package/workspace/reports/analysis-reports.md +0 -40
- package/workspace/reports/content-reports.md +0 -29
- package/workspace/reports/delivery-reports.md +0 -26
- package/workspace/reports/growth-reports.md +0 -9
- package/workspace/reports/legal-reports.md +0 -29
- package/workspace/reports/product-requirements.md +0 -28
- package/workspace/reports/release-notes.md +0 -20
- package/workspace/reports/security-reports.md +0 -27
- package/workspace/reports/status-reports.md +0 -48
- package/workspace/reports/tech-requirements.md +0 -30
- package/workspace/reports/test-reports.md +0 -61
- package/workspace/templates/BXX-[bug-name].md +0 -34
- package/workspace/templates/DXX-[debt-name].md +0 -35
- package/workspace/templates/EXX-[epic-name].md +0 -48
- package/workspace/templates/HXX-[hotfix-name].md +0 -73
- package/workspace/templates/SXX-[spike-name].md +0 -51
- package/workspace/templates/TXX-[task-name].md +0 -34
- package/workspace/templates/[agent-name]-active.md +0 -4
- package/workspace/templates/[original-name]_[YYYY-MM-DD_HHMMSS].md +0 -5
- package/workspace/templates/adr-XXX.md +0 -66
- package/workspace/templates/debt-dashboard.md +0 -10
- package/workspace/templates/epic-dashboard.md +0 -10
- package/workspace/templates/version-dashboard.md +0 -10
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: uninitialized
|
|
3
|
+
author: +devops-engineer
|
|
4
|
+
approver: +prime
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Environment Setup Guide
|
|
8
|
+
|
|
9
|
+
> +devops-engineer's guide. This file is the single point of reference for a new developer (human or agent) who wants to bring the project up from scratch.
|
|
10
|
+
|
|
11
|
+
## Local Setup
|
|
12
|
+
|
|
13
|
+
- **Prerequisites:** [Node version, package manager, OS notes]
|
|
14
|
+
- **Installation:**
|
|
15
|
+
- `git clone <repo>`
|
|
16
|
+
- `cd <project>`
|
|
17
|
+
- `<package-manager> install`
|
|
18
|
+
- **Start commands:**
|
|
19
|
+
- `<package-manager> run dev` — development server
|
|
20
|
+
- `<package-manager> test` — tests
|
|
21
|
+
|
|
22
|
+
## Environment Variables
|
|
23
|
+
|
|
24
|
+
The `.env` file is git-ignored. Copy it from `.env.example`.
|
|
25
|
+
|
|
26
|
+
| Key | Required | Default | Description |
|
|
27
|
+
| :--- | :---: | :--- | :--- |
|
|
28
|
+
| `[KEY_NAME]` | Yes/No | `[default]` | [Description] |
|
|
29
|
+
|
|
30
|
+
## Database
|
|
31
|
+
|
|
32
|
+
- **Provider:** [PostgreSQL / Supabase / Firebase]
|
|
33
|
+
- **Migration:** [Migration tool command]
|
|
34
|
+
- **Seed data:** [Seed command, if any]
|
|
35
|
+
- **Local instance:** [Docker / native]
|
|
36
|
+
|
|
37
|
+
## External Services
|
|
38
|
+
|
|
39
|
+
- **Auth:** [Provider + connection steps]
|
|
40
|
+
- **Payments:** [Provider + where sandbox keys come from]
|
|
41
|
+
- **Email:** [Provider + test mode note]
|
|
42
|
+
- **Storage/CDN:** [Provider + local stub, if any]
|
|
43
|
+
|
|
44
|
+
## Common Issues
|
|
45
|
+
|
|
46
|
+
- **Issue:** [Common error message] → **Fix:** [Steps]
|
|
47
|
+
- **Issue:** [Port conflict] → **Fix:** [Change the port in .env]
|
|
48
|
+
|
|
49
|
+
# Access & Service Configuration
|
|
50
|
+
|
|
51
|
+
## Local Development Tools
|
|
52
|
+
|
|
53
|
+
- [Tool name] — [setup note]
|
|
54
|
+
- [MCP server name] — [setup note]
|
|
55
|
+
|
|
56
|
+
## Version Control
|
|
57
|
+
|
|
58
|
+
- GitHub Repo: [to be filled by prime]
|
|
59
|
+
- Organization: [to be filled by prime]
|
|
60
|
+
- Branch strategy: [which branches exist, what merges into what, what is protected]
|
|
61
|
+
|
|
62
|
+
## CI/CD Pipeline
|
|
63
|
+
|
|
64
|
+
- **Cloud provider:** [e.g., AWS, Vercel, Google Cloud]
|
|
65
|
+
- **CI/CD platform:** [e.g., GitHub Actions, GitLab CI]
|
|
66
|
+
- **On every push:** [what runs — lint, typecheck, tests]
|
|
67
|
+
- **On merge to the release branch:** [what deploys, and where]
|
|
68
|
+
- **Rollback:** [how a bad release is undone, and by whom]
|
|
69
|
+
|
|
70
|
+
## Hosting & Deployment
|
|
71
|
+
|
|
72
|
+
- Production URL: [to be filled by prime]
|
|
73
|
+
- Staging URL: [to be filled by prime]
|
|
74
|
+
- Platform: [Firebase Hosting / Vercel / AWS]
|
|
75
|
+
- **Hosting region:** [where the servers physically run — e.g., `eu-central-1` (Frankfurt). Compliance decides the cross-border transfer regime on this line, so name a region, not a provider]
|
|
76
|
+
|
|
77
|
+
## Server Access
|
|
78
|
+
|
|
79
|
+
- SSH Root: [to be filled by prime]
|
|
80
|
+
- Domain: [to be filled by prime]
|
|
81
|
+
|
|
82
|
+
## Database Instances
|
|
83
|
+
|
|
84
|
+
- Provider: [Firebase / Supabase / PostgreSQL]
|
|
85
|
+
- Engine + version: [e.g., PostgreSQL 16 — the schema is designed for this]
|
|
86
|
+
- **Region:** [where the data physically sits]
|
|
87
|
+
- Production Instance: [to be filled by prime]
|
|
88
|
+
- Staging Instance: [to be filled by prime]
|
|
89
|
+
|
|
90
|
+
## Other Services
|
|
91
|
+
|
|
92
|
+
- Analytics: [Google Analytics / Mixpanel]
|
|
93
|
+
- CDN: [Cloudflare]
|
|
94
|
+
- Mail: [SendGrid / Resend]
|
|
95
|
+
|
|
96
|
+
## Change Requests
|
|
97
|
+
|
|
98
|
+
- [What THIS document asks of another, one line per request: - `TARGET.md` — what must change there and why. It travels to that document when this one is approved. Lines that start with `from` are the other direction — what others asked of this document; the human decides them, kortext ticks them, leave them exactly as they are. Leave this section empty when nothing upstream needs to change]
|
|
99
|
+
|
|
100
|
+
## Questions for Prime
|
|
101
|
+
|
|
102
|
+
- [Anything prime must answer before this document can be relied on — leave this section empty when there is nothing]
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: uninitialized
|
|
3
|
+
author: +growth-expert
|
|
4
|
+
approver: +prime
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Growth & Analytic Strategy
|
|
8
|
+
|
|
9
|
+
## Analytics Goals & Metrics
|
|
10
|
+
|
|
11
|
+
- **North Star Metric:** [The core success measure, e.g., Active Transacting Users]
|
|
12
|
+
- **Primary Targets:** [e.g., 10% conversion rate, 5K MAU]
|
|
13
|
+
|
|
14
|
+
## Tracking Setup & Tools
|
|
15
|
+
|
|
16
|
+
- **Analytics Tools:** [e.g., Google Analytics 4, Mixpanel, Amplitude]
|
|
17
|
+
- **Tag Management:** [e.g., Google Tag Manager (GTM)]
|
|
18
|
+
- **Error Tracking:** [e.g., Sentry, Datadog]
|
|
19
|
+
|
|
20
|
+
## Key Events to Track (Event Taxonomy)
|
|
21
|
+
|
|
22
|
+
All events must follow a naming convention like the examples below (e.g., `Object_Action`).
|
|
23
|
+
|
|
24
|
+
- `user_signed_up`: When a user successfully registers (**Parameters:** method, tier)
|
|
25
|
+
- `purchase_completed`: When a user completes a payment (**Parameters:** amount, currency)
|
|
26
|
+
- `[event_name]`: [Trigger condition and parameters]
|
|
27
|
+
|
|
28
|
+
## SEO & ASO Strategy
|
|
29
|
+
|
|
30
|
+
- **On-Page SEO:** [H1 tags, meta description rules, schema.org structure]
|
|
31
|
+
- **URL Structure:** [e.g., /category/product-name (kebab-case, SEO friendly)]
|
|
32
|
+
- **Sitemap & Robots.txt:** [Generation and indexing policy]
|
|
33
|
+
|
|
34
|
+
## User Acquisition & Funnel
|
|
35
|
+
|
|
36
|
+
- [A/B test plans, funnel stages (Acquisition, Activation, Retention...)]
|
|
37
|
+
|
|
38
|
+
## Change Requests
|
|
39
|
+
|
|
40
|
+
- [What THIS document asks of another, one line per request: - `TARGET.md` — what must change there and why. It travels to that document when this one is approved. Lines that start with `from` are the other direction — what others asked of this document; the human decides them, kortext ticks them, leave them exactly as they are. Leave this section empty when nothing upstream needs to change]
|
|
41
|
+
|
|
42
|
+
## Questions for Prime
|
|
43
|
+
|
|
44
|
+
- [Anything prime must answer before this document can be relied on — leave this section empty when there is nothing]
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: uninitialized
|
|
3
|
+
author: +compliance-expert
|
|
4
|
+
approver: +prime
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Legal & Compliance Strategy
|
|
8
|
+
|
|
9
|
+
## Compliance Scope
|
|
10
|
+
|
|
11
|
+
- [Compliance targets based on the project's scope (KVKK, GDPR, CCPA, etc.)]
|
|
12
|
+
|
|
13
|
+
## Identified Risks
|
|
14
|
+
|
|
15
|
+
- [Risk description — e.g., user location data being kept exposed]
|
|
16
|
+
|
|
17
|
+
## Required Approvals & Consents
|
|
18
|
+
|
|
19
|
+
- [e.g., Privacy Policy consent at sign-up (required)]
|
|
20
|
+
- [How will cookie consent (Cookie Policy) be handled?]
|
|
21
|
+
|
|
22
|
+
## Data Lifecycle
|
|
23
|
+
|
|
24
|
+
> One row per personal-data field `DATABASE.md` marks. Retention and erasure are duties,
|
|
25
|
+
> not preferences — name the period and the mechanism, not an intention.
|
|
26
|
+
|
|
27
|
+
| Data | Lawful basis | Retention | Erasure — how and on whose request | Shared with |
|
|
28
|
+
| --- | --- | --- | --- | --- |
|
|
29
|
+
| `[table.column]` | [consent / contract / legitimate interest] | [e.g., 2 years after last login] | [the mechanism that actually deletes it] | [the processor from `STACK.md`, or none] |
|
|
30
|
+
|
|
31
|
+
## Required Notices
|
|
32
|
+
|
|
33
|
+
> The user-facing text this product owes its users. `CONTENT.md` writes each one in full —
|
|
34
|
+
> name what must be said and where, not the wording.
|
|
35
|
+
|
|
36
|
+
- **[Notice]** — [what it must disclose, on which surface, at which moment]
|
|
37
|
+
|
|
38
|
+
## Technical Integration Requests
|
|
39
|
+
|
|
40
|
+
- [e.g., The `password` and `national_id` columns in the database must be hashed.]
|
|
41
|
+
|
|
42
|
+
## Change Requests
|
|
43
|
+
|
|
44
|
+
- [What THIS document asks of another, one line per request: - `TARGET.md` — what must change there and why. It travels to that document when this one is approved. Lines that start with `from` are the other direction — what others asked of this document; the human decides them, kortext ticks them, leave them exactly as they are. Leave this section empty when nothing upstream needs to change]
|
|
45
|
+
|
|
46
|
+
## Questions for Prime
|
|
47
|
+
|
|
48
|
+
- [Anything prime must answer before this document can be relied on — leave this section empty when there is nothing]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: uninitialized
|
|
3
|
+
author: +product-manager
|
|
4
|
+
approver: +prime
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Product
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## Scope
|
|
11
|
+
|
|
12
|
+
- **In scope:** [What this product does — one line per capability]
|
|
13
|
+
- **Out of scope:** [What it deliberately does not do, and why]
|
|
14
|
+
|
|
15
|
+
## User Types
|
|
16
|
+
|
|
17
|
+
- **[User type]:** [what they can do, what they must never see]
|
|
18
|
+
|
|
19
|
+
## Personal Data per Flow
|
|
20
|
+
|
|
21
|
+
- **[Flow name]:** [which personal data the flow needs and why it needs it — write `none` where a flow needs no personal data. The compliance analysis is run against this list]
|
|
22
|
+
|
|
23
|
+
## User Stories (Tasks) & Acceptance Criteria
|
|
24
|
+
|
|
25
|
+
### [task-id]: [task-name]
|
|
26
|
+
|
|
27
|
+
As a [User Type], I want to [Do Something], so that [I reach This Goal].
|
|
28
|
+
|
|
29
|
+
**Acceptance Criteria:**
|
|
30
|
+
|
|
31
|
+
> What must be observably true for this story to be done. Behaviour only — code
|
|
32
|
+
> review, QA and security are release gates, and `TEST.md` owns them.
|
|
33
|
+
|
|
34
|
+
- [ ] [When the user presses the button, X must happen]
|
|
35
|
+
- [ ] [On error, this message must be shown]
|
|
36
|
+
|
|
37
|
+
## Change Requests
|
|
38
|
+
|
|
39
|
+
- [What THIS document asks of another, one line per request: - `TARGET.md` — what must change there and why. It travels to that document when this one is approved. Lines that start with `from` are the other direction — what others asked of this document; the human decides them, kortext ticks them, leave them exactly as they are. Leave this section empty when nothing upstream needs to change]
|
|
40
|
+
|
|
41
|
+
## Questions for Prime
|
|
42
|
+
|
|
43
|
+
- [Anything prime must answer before this document can be relied on — leave this section empty when there is nothing]
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: uninitialized
|
|
3
|
+
author: +security-engineer
|
|
4
|
+
approver: +architect
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Security Rules
|
|
8
|
+
|
|
9
|
+
## Security Overview
|
|
10
|
+
|
|
11
|
+
- [Summary and findings of the project's tech stack report]
|
|
12
|
+
- [Areas that need attention]
|
|
13
|
+
|
|
14
|
+
## Auth & Authorization Model
|
|
15
|
+
|
|
16
|
+
> The schema and the endpoints are built on this section. Name roles and permissions
|
|
17
|
+
> concretely — `DATABASE.md` turns them into tables and `API.md` applies them per endpoint.
|
|
18
|
+
|
|
19
|
+
- **Authentication:** [mechanism — e.g., email + password with TOTP, OAuth via provider, magic link]
|
|
20
|
+
- **Session / token:** [what is issued, where it is stored, how long it lives, how it is revoked]
|
|
21
|
+
- **Roles:**
|
|
22
|
+
|
|
23
|
+
| Role | Can do | Must never reach |
|
|
24
|
+
| --- | --- | --- |
|
|
25
|
+
| `[role]` | [what this role is allowed to do] | [what it must never see or change] |
|
|
26
|
+
|
|
27
|
+
- **Authorization rule:** [how a permission is decided at request time — ownership, role, tenant, or a combination]
|
|
28
|
+
|
|
29
|
+
## Secret Management
|
|
30
|
+
|
|
31
|
+
- **Where secrets live:** [e.g., the platform's secret store; never in the repo]
|
|
32
|
+
- **Never committed:** [the `.gitignore` entries that enforce it]
|
|
33
|
+
- **Rotation:** [who rotates what, and when]
|
|
34
|
+
|
|
35
|
+
## Data Storage & Logging
|
|
36
|
+
|
|
37
|
+
- **At rest / in transit:** [what is encrypted and with what]
|
|
38
|
+
- **Sensitive fields:** [what needs hashing, masking or tokenizing rather than plain storage]
|
|
39
|
+
- **Never logged:** [the values that must never reach a log line or an error report]
|
|
40
|
+
|
|
41
|
+
## Security Rules
|
|
42
|
+
|
|
43
|
+
- [Security rules to follow across the project]
|
|
44
|
+
|
|
45
|
+
## Vulnerability Findings
|
|
46
|
+
|
|
47
|
+
> On an existing project, what the code already gets wrong. On a new project this section
|
|
48
|
+
> is written after the first implementation — leave it empty until then.
|
|
49
|
+
|
|
50
|
+
| Risk Level | Finding | Description | Recommendation |
|
|
51
|
+
|---|---|---|---|
|
|
52
|
+
| [High/Med] | [e.g., XSS vulnerability] | [Which file, how it occurs] | [Suggested fix] |
|
|
53
|
+
| [Low] | [e.g., Outdated package] | [Outdated library] | [Update npm package] |
|
|
54
|
+
|
|
55
|
+
## Action Plan
|
|
56
|
+
|
|
57
|
+
- [What must be done during the analysis phase based on the findings]
|
|
58
|
+
|
|
59
|
+
## Change Requests
|
|
60
|
+
|
|
61
|
+
- [What THIS document asks of another, one line per request: - `TARGET.md` — what must change there and why. It travels to that document when this one is approved. Lines that start with `from` are the other direction — what others asked of this document; the human decides them, kortext ticks them, leave them exactly as they are. Leave this section empty when nothing upstream needs to change]
|
|
62
|
+
|
|
63
|
+
## Questions for Prime
|
|
64
|
+
|
|
65
|
+
- [Anything prime must answer before this document can be relied on — leave this section empty when there is nothing]
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: uninitialized
|
|
3
|
+
author: +architect
|
|
4
|
+
approver: +prime
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Tech Stack & Infrastructure
|
|
8
|
+
|
|
9
|
+
## Core Technologies
|
|
10
|
+
|
|
11
|
+
- **Frontend:** [Language, framework, version — e.g., TypeScript, React 18, Next.js 14, Kotlin, SwiftUI]
|
|
12
|
+
- **Backend:** [Language, framework, version — e.g., Node.js 20, NestJS]
|
|
13
|
+
- **Database:** [Database, version — e.g., PostgreSQL 16, Redis]
|
|
14
|
+
|
|
15
|
+
## Tooling & Prerequisites
|
|
16
|
+
|
|
17
|
+
- **Package Manager:** [e.g., npm, yarn, pnpm]
|
|
18
|
+
- **Environment:** [e.g., Docker Desktop, Node v20+]
|
|
19
|
+
- **Containerization:** [e.g., Docker — the local runtime, not the deployment target]
|
|
20
|
+
- **Testing:** [e.g., Jest, Cypress, Playwright]
|
|
21
|
+
- **Tools:** [e.g., Postman, Antigravity, etc.]
|
|
22
|
+
- **MCP's:** [e.g., Vercel MCP, Firebase MCP]
|
|
23
|
+
|
|
24
|
+
## Prerequisites from prime
|
|
25
|
+
|
|
26
|
+
> Everything the stack needs that only a person can supply. The planning flow turns each
|
|
27
|
+
> row into an `assignee: prime` task and blocks whatever depends on it, so a missing row
|
|
28
|
+
> becomes work nobody scheduled.
|
|
29
|
+
|
|
30
|
+
| Need | Why the stack needs it | Blocks |
|
|
31
|
+
| --- | --- | --- |
|
|
32
|
+
| `[e.g., an Apple Developer account]` | [what cannot be built without it] | [what waits on it] |
|
|
33
|
+
| `[e.g., a physical test device]` | [what cannot be verified without it] | [what waits on it] |
|
|
34
|
+
|
|
35
|
+
## Third-Party Services & Integrations
|
|
36
|
+
|
|
37
|
+
> Every row here is a processor `LEGAL.md` will rule on. Name the region it runs in and
|
|
38
|
+
> say plainly whether it sees user data — a service with no region named cannot be judged.
|
|
39
|
+
|
|
40
|
+
| Service | Purpose | Region | Sees user data |
|
|
41
|
+
| --- | --- | --- | --- |
|
|
42
|
+
| `[Auth0]` | Auth | `[eu]` | [yes — email, name] |
|
|
43
|
+
| `[Stripe]` | Payments | `[us]` | [yes — name, billing address] |
|
|
44
|
+
| `[Cloudflare]` | CDN | `[global]` | [no] |
|
|
45
|
+
|
|
46
|
+
## Security & Policies
|
|
47
|
+
|
|
48
|
+
- [How sensitive data is stored, custom gitignore rules, etc.]
|
|
49
|
+
- For security rules, see `.kortext/SECURITY.md`.
|
|
50
|
+
|
|
51
|
+
## Change Requests
|
|
52
|
+
|
|
53
|
+
- [What THIS document asks of another, one line per request: - `TARGET.md` — what must change there and why. It travels to that document when this one is approved. Lines that start with `from` are the other direction — what others asked of this document; the human decides them, kortext ticks them, leave them exactly as they are. Leave this section empty when nothing upstream needs to change]
|
|
54
|
+
|
|
55
|
+
## Questions for Prime
|
|
56
|
+
|
|
57
|
+
- [Anything prime must answer before this document can be relied on — leave this section empty when there is nothing]
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: uninitialized
|
|
3
|
+
author: +architect
|
|
4
|
+
approver: +prime
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# File System & Architecture
|
|
8
|
+
|
|
9
|
+
## High-Level Folder Structure
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
[Project Root]/
|
|
13
|
+
├── src/
|
|
14
|
+
│ ├── components/ → [Description]
|
|
15
|
+
│ ├── pages/ → [Description]
|
|
16
|
+
│ ├── utils/ → [Description]
|
|
17
|
+
│ └── api/ → [Description]
|
|
18
|
+
├── public/ → [Description]
|
|
19
|
+
└── [Config Files] → (package.json, tsconfig.json, etc.)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Directory Rules
|
|
23
|
+
|
|
24
|
+
- **`/components/`:** Holds reusable UI elements only.
|
|
25
|
+
- **`/pages/` or `/app/`:** Holds page/route management only.
|
|
26
|
+
- **`/utils/`:** Pure helper functions live here (no state).
|
|
27
|
+
|
|
28
|
+
## Path Aliases
|
|
29
|
+
|
|
30
|
+
- [e.g., `@components/*` -> `src/components/*`]
|
|
31
|
+
- [e.g., `@utils/*` -> `src/utils/*`]
|
|
32
|
+
|
|
33
|
+
## Feature-Based vs Type-Based Structure
|
|
34
|
+
|
|
35
|
+
- [Which structure the project follows (domain-driven, feature-sliced, etc.) and a short explanation]
|
|
36
|
+
|
|
37
|
+
# Coding Dictionary & Standards
|
|
38
|
+
|
|
39
|
+
## Naming Conventions
|
|
40
|
+
|
|
41
|
+
- **Variables & Functions:** [`camelCase, snake_case`]
|
|
42
|
+
- **Classes & Interfaces:** [`PascalCase`]
|
|
43
|
+
- **Constants:** [`UPPER_SNAKE_CASE`]
|
|
44
|
+
- **Files & Directories:** [`kebab-case`]
|
|
45
|
+
- **Database Tables:** [`snake_case, plural/singular`]
|
|
46
|
+
|
|
47
|
+
## Code Quality & Formatting
|
|
48
|
+
|
|
49
|
+
- **Linter & Formatter:** [e.g., ESLint + Prettier settings]
|
|
50
|
+
- **Indent:** [e.g., 2 spaces]
|
|
51
|
+
- **Quote Mark:** [e.g., Single quotes ('')]
|
|
52
|
+
|
|
53
|
+
## Project Terminology (Domain Language)
|
|
54
|
+
|
|
55
|
+
- **[Term]:** [Definition / what it means in our app]
|
|
56
|
+
- *Example:* **Client:** The customer using the app (we do not say "User").
|
|
57
|
+
- *Example:* **Cart:** The shopping cart (we do not say "Basket").
|
|
58
|
+
|
|
59
|
+
## Commenting & Documentation Rules
|
|
60
|
+
|
|
61
|
+
- [e.g., Use JSDoc; comments explain "why" the code does something, not "what" it does]
|
|
62
|
+
|
|
63
|
+
## Error Handling Pattern
|
|
64
|
+
|
|
65
|
+
- [General try/catch or error response conventions]
|
|
66
|
+
|
|
67
|
+
## Change Requests
|
|
68
|
+
|
|
69
|
+
- [What THIS document asks of another, one line per request: - `TARGET.md` — what must change there and why. It travels to that document when this one is approved. Lines that start with `from` are the other direction — what others asked of this document; the human decides them, kortext ticks them, leave them exactly as they are. Leave this section empty when nothing upstream needs to change]
|
|
70
|
+
|
|
71
|
+
## Questions for Prime
|
|
72
|
+
|
|
73
|
+
- [Anything prime must answer before this document can be relied on — leave this section empty when there is nothing]
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
status: uninitialized
|
|
3
|
+
author: +qa-engineer
|
|
4
|
+
approver: +architect
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Testing Strategy
|
|
8
|
+
|
|
9
|
+
## Testing Scope & Approach
|
|
10
|
+
|
|
11
|
+
- **Scope:** [What will be tested, and what will (for now) not be tested?]
|
|
12
|
+
- **Main Approach:** [e.g., Will TDD be applied? Will shift-left testing be practiced?]
|
|
13
|
+
|
|
14
|
+
## Tools & Frameworks
|
|
15
|
+
|
|
16
|
+
- **Unit Testing:** [e.g., Jest, Vitest]
|
|
17
|
+
- **Integration/E2E Testing:** [e.g., Cypress, Playwright]
|
|
18
|
+
- **Load/Performance Testing:** [e.g., k6, JMeter]
|
|
19
|
+
|
|
20
|
+
## Test Layers
|
|
21
|
+
|
|
22
|
+
### Unit Tests
|
|
23
|
+
|
|
24
|
+
- **Responsibility:** Developers (+backend-developer / +frontend-developer)
|
|
25
|
+
- **Rule:** Every function is tested in isolation (coverage target: `80%`)
|
|
26
|
+
|
|
27
|
+
### Integration Tests
|
|
28
|
+
|
|
29
|
+
- **Responsibility:** Developers & +qa-engineer
|
|
30
|
+
- **Rule:** API endpoints and database communication are tested.
|
|
31
|
+
|
|
32
|
+
### End-to-End (E2E) & Smoke Tests
|
|
33
|
+
|
|
34
|
+
- **Responsibility:** +qa-engineer
|
|
35
|
+
- **Rule:** The user's main flows (login, add to cart, checkout) must pass before anything ships to production.
|
|
36
|
+
|
|
37
|
+
## CI/CD Integration (Pipeline Rules)
|
|
38
|
+
|
|
39
|
+
- Outcome: `[Merge is blocked when tests fail]`
|
|
40
|
+
- Outcome: `[PR is rejected when coverage drops below 80%]`
|
|
41
|
+
|
|
42
|
+
## Compliance & Risk Gates
|
|
43
|
+
|
|
44
|
+
> A gate here proves an obligation `LEGAL.md` states or a risk `ENGINEERING.md` registers.
|
|
45
|
+
> Each row names what fails the release, not what someone should remember to check.
|
|
46
|
+
|
|
47
|
+
| Obligation / risk | Source | The gate that proves it |
|
|
48
|
+
| --- | --- | --- |
|
|
49
|
+
| [e.g., consent is captured before any tracking fires] | `LEGAL.md` | [the test that fails when a tag loads without consent] |
|
|
50
|
+
| [e.g., the job queue survives a restart] | `ENGINEERING.md` | [the test that proves it] |
|
|
51
|
+
|
|
52
|
+
## Acceptance Criteria (Definition of Done)
|
|
53
|
+
|
|
54
|
+
- [What test criteria must a task meet before the QA persona can approve it?]
|
|
55
|
+
|
|
56
|
+
## Change Requests
|
|
57
|
+
|
|
58
|
+
- [What THIS document asks of another, one line per request: - `TARGET.md` — what must change there and why. It travels to that document when this one is approved. Lines that start with `from` are the other direction — what others asked of this document; the human decides them, kortext ticks them, leave them exactly as they are. Leave this section empty when nothing upstream needs to change]
|
|
59
|
+
|
|
60
|
+
## Questions for Prime
|
|
61
|
+
|
|
62
|
+
- [Anything prime must answer before this document can be relied on — leave this section empty when there is nothing]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{m as e,t}from"./mermaid-parser.core-BDC4bG-O.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-7TsfZXRO.js";import"./chunk-DU6HZSFF-Cq2BVv26.js";import{n as i,r as a,t as o}from"./chunk-SVP7TREG-r1chwRmg.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-DZY3WwzX.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-EcW76Zvr.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i){if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./chunk-FOHPRMQF-DHwB1DNv.js";import{M as e}from"./mermaid-parser.core-BDC4bG-O.js";export{e as createArchitectureServices};
|