specforge-mcp 0.4.0 → 0.6.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/dist/config/db-engines.json +394 -1
- package/dist/engine/detectors/cache-db-detector.d.ts +3 -0
- package/dist/engine/detectors/cache-db-detector.d.ts.map +1 -0
- package/dist/engine/detectors/cache-db-detector.js +37 -0
- package/dist/engine/detectors/cache-db-detector.js.map +1 -0
- package/dist/engine/detectors/cloud-db-detector.d.ts +4 -0
- package/dist/engine/detectors/cloud-db-detector.d.ts.map +1 -0
- package/dist/engine/detectors/cloud-db-detector.js +50 -0
- package/dist/engine/detectors/cloud-db-detector.js.map +1 -0
- package/dist/engine/detectors/graph-db-detector.d.ts +3 -0
- package/dist/engine/detectors/graph-db-detector.d.ts.map +1 -0
- package/dist/engine/detectors/graph-db-detector.js +38 -0
- package/dist/engine/detectors/graph-db-detector.js.map +1 -0
- package/dist/engine/detectors/newsql-db-detector.d.ts +3 -0
- package/dist/engine/detectors/newsql-db-detector.d.ts.map +1 -0
- package/dist/engine/detectors/newsql-db-detector.js +40 -0
- package/dist/engine/detectors/newsql-db-detector.js.map +1 -0
- package/dist/engine/detectors/search-engine-detector.d.ts +3 -0
- package/dist/engine/detectors/search-engine-detector.d.ts.map +1 -0
- package/dist/engine/detectors/search-engine-detector.js +51 -0
- package/dist/engine/detectors/search-engine-detector.js.map +1 -0
- package/dist/engine/detectors/timeseries-db-detector.d.ts +3 -0
- package/dist/engine/detectors/timeseries-db-detector.d.ts.map +1 -0
- package/dist/engine/detectors/timeseries-db-detector.js +31 -0
- package/dist/engine/detectors/timeseries-db-detector.js.map +1 -0
- package/dist/engine/detectors/vector-db-detector.d.ts +5 -0
- package/dist/engine/detectors/vector-db-detector.d.ts.map +1 -0
- package/dist/engine/detectors/vector-db-detector.js +34 -0
- package/dist/engine/detectors/vector-db-detector.js.map +1 -0
- package/dist/engine/detectors/widecolumn-db-detector.d.ts +3 -0
- package/dist/engine/detectors/widecolumn-db-detector.d.ts.map +1 -0
- package/dist/engine/detectors/widecolumn-db-detector.js +38 -0
- package/dist/engine/detectors/widecolumn-db-detector.js.map +1 -0
- package/dist/engine/framework-detector.d.ts.map +1 -1
- package/dist/engine/framework-detector.js +44 -1
- package/dist/engine/framework-detector.js.map +1 -1
- package/dist/engine/migration/db-migrator.d.ts.map +1 -1
- package/dist/engine/migration/db-migrator.js +18 -3
- package/dist/engine/migration/db-migrator.js.map +1 -1
- package/dist/tools/clarify-requirements/questions-context.d.ts +3 -2
- package/dist/tools/clarify-requirements/questions-context.d.ts.map +1 -1
- package/dist/tools/clarify-requirements/questions-context.js +22 -133
- package/dist/tools/clarify-requirements/questions-context.js.map +1 -1
- package/dist/tools/clarify-requirements/questions.d.ts +1 -1
- package/dist/tools/clarify-requirements/questions.d.ts.map +1 -1
- package/dist/tools/clarify-requirements/questions.js +2 -2
- package/dist/tools/clarify-requirements/questions.js.map +1 -1
- package/dist/tools/create-spec.js +1 -1
- package/dist/tools/create-spec.js.map +1 -1
- package/dist/tools/design-schema/advanced-db-schemas.d.ts +8 -0
- package/dist/tools/design-schema/advanced-db-schemas.d.ts.map +1 -0
- package/dist/tools/design-schema/advanced-db-schemas.js +105 -0
- package/dist/tools/design-schema/advanced-db-schemas.js.map +1 -0
- package/dist/tools/design-schema/index.d.ts +2 -0
- package/dist/tools/design-schema/index.d.ts.map +1 -1
- package/dist/tools/design-schema/index.js +3 -0
- package/dist/tools/design-schema/index.js.map +1 -1
- package/dist/tools/design-schema/nosql-category-schemas.d.ts +10 -0
- package/dist/tools/design-schema/nosql-category-schemas.d.ts.map +1 -0
- package/dist/tools/design-schema/nosql-category-schemas.js +120 -0
- package/dist/tools/design-schema/nosql-category-schemas.js.map +1 -0
- package/dist/tools/design-schema.d.ts.map +1 -1
- package/dist/tools/design-schema.js +41 -1
- package/dist/tools/design-schema.js.map +1 -1
- package/dist/tools/init-project/handler.d.ts.map +1 -1
- package/dist/tools/init-project/handler.js +5 -1
- package/dist/tools/init-project/handler.js.map +1 -1
- package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-tools/core-spec-tools.js +4 -0
- package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
- package/dist/tools/schemas/lifecycle.d.ts +1 -1
- package/dist/types/common/tech-enums.d.ts +11 -1
- package/dist/types/common/tech-enums.d.ts.map +1 -1
- package/dist/types/project/core.d.ts +10 -1
- package/dist/types/project/core.d.ts.map +1 -1
- package/dist/types/project/inputs.d.ts +1 -0
- package/dist/types/project/inputs.d.ts.map +1 -1
- package/dist/types/schema.d.ts +5 -0
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/types/tooling/database.d.ts +7 -0
- package/dist/types/tooling/database.d.ts.map +1 -1
- package/dist/types/tooling/database.js +0 -1
- package/dist/types/tooling/database.js.map +1 -1
- package/package.json +1 -1
- package/src/config/db-engines.json +394 -1
- package/src/i18n/messages/en.json +3 -3
- package/src/i18n/messages/es.json +3 -3
- package/src/i18n/messages/pt.json +3 -3
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_description": "Registry of database engines with detection deps, SQL syntax, and special features",
|
|
2
|
+
"_description": "Registry of database engines with detection deps, SQL syntax, and special features (SPEC-025 + SPEC-059)",
|
|
3
3
|
"engines": {
|
|
4
4
|
"supabase": {
|
|
5
5
|
"displayName": "Supabase (PostgreSQL + BaaS)",
|
|
6
|
+
"category": "sql",
|
|
6
7
|
"detectionDeps": ["@supabase/supabase-js", "@supabase/ssr", "@supabase/auth-helpers-nextjs"],
|
|
7
8
|
"features": ["RLS policies", "Auth", "Storage", "Edge Functions", "Realtime"],
|
|
8
9
|
"securityRules": true,
|
|
@@ -10,24 +11,32 @@
|
|
|
10
11
|
"timestampType": "timestamptz DEFAULT now()",
|
|
11
12
|
"jsonType": "jsonb",
|
|
12
13
|
"autoIncrementSyntax": "GENERATED ALWAYS AS IDENTITY",
|
|
14
|
+
"schemaFormat": "PostgreSQL DDL",
|
|
13
15
|
"migrations": "supabase/migrations/",
|
|
14
16
|
"installCmd": "npm install @supabase/supabase-js",
|
|
15
17
|
"docsUrl": "https://supabase.com/docs"
|
|
16
18
|
},
|
|
17
19
|
"firebase": {
|
|
18
20
|
"displayName": "Firebase (Firestore + BaaS)",
|
|
21
|
+
"category": "nosql-document",
|
|
19
22
|
"detectionDeps": ["firebase", "firebase-admin", "@firebase/app"],
|
|
20
23
|
"features": ["Firestore", "Auth", "Storage", "Cloud Functions", "Security Rules"],
|
|
21
24
|
"securityRules": true,
|
|
22
25
|
"collectionFormat": "NoSQL documents",
|
|
23
26
|
"rulesFile": "firestore.rules",
|
|
24
27
|
"indexFile": "firestore.indexes.json",
|
|
28
|
+
"schemaFormat": "Firestore document model",
|
|
25
29
|
"installCmd": "npm install firebase",
|
|
26
30
|
"docsUrl": "https://firebase.google.com/docs/firestore"
|
|
27
31
|
},
|
|
28
32
|
"postgresql": {
|
|
29
33
|
"displayName": "PostgreSQL",
|
|
34
|
+
"category": "sql",
|
|
30
35
|
"detectionDeps": ["pg", "postgres", "node-postgres", "knex", "sequelize"],
|
|
36
|
+
"detectionDepsPython": ["psycopg2", "psycopg", "asyncpg", "sqlalchemy"],
|
|
37
|
+
"detectionDepsGo": ["github.com/lib/pq", "github.com/jackc/pgx"],
|
|
38
|
+
"detectionDepsRust": ["tokio-postgres", "sqlx"],
|
|
39
|
+
"detectionDepsJava": ["postgresql"],
|
|
31
40
|
"prismaDeps": ["@prisma/client"],
|
|
32
41
|
"features": ["ACID", "JSON/JSONB", "Full-text search", "Extensions", "RLS"],
|
|
33
42
|
"securityRules": false,
|
|
@@ -35,39 +44,423 @@
|
|
|
35
44
|
"timestampType": "timestamptz DEFAULT now()",
|
|
36
45
|
"jsonType": "jsonb",
|
|
37
46
|
"autoIncrementSyntax": "SERIAL",
|
|
47
|
+
"schemaFormat": "PostgreSQL DDL",
|
|
38
48
|
"docsUrl": "https://www.postgresql.org/docs/"
|
|
39
49
|
},
|
|
40
50
|
"mysql": {
|
|
41
51
|
"displayName": "MySQL / MariaDB",
|
|
52
|
+
"category": "sql",
|
|
42
53
|
"detectionDeps": ["mysql2", "mysql", "mariadb", "knex", "sequelize"],
|
|
54
|
+
"detectionDepsPython": ["mysqlclient", "pymysql", "mysql-connector-python"],
|
|
55
|
+
"detectionDepsGo": ["github.com/go-sql-driver/mysql"],
|
|
56
|
+
"detectionDepsRust": ["mysql", "sqlx"],
|
|
57
|
+
"detectionDepsJava": ["mysql-connector-java"],
|
|
43
58
|
"features": ["ACID", "JSON", "Full-text search", "Stored procedures"],
|
|
44
59
|
"securityRules": false,
|
|
45
60
|
"idType": "CHAR(36) DEFAULT (UUID())",
|
|
46
61
|
"timestampType": "DATETIME DEFAULT CURRENT_TIMESTAMP",
|
|
47
62
|
"jsonType": "JSON",
|
|
48
63
|
"autoIncrementSyntax": "AUTO_INCREMENT",
|
|
64
|
+
"schemaFormat": "MySQL DDL",
|
|
49
65
|
"docsUrl": "https://dev.mysql.com/doc/"
|
|
50
66
|
},
|
|
51
67
|
"mongodb": {
|
|
52
68
|
"displayName": "MongoDB",
|
|
69
|
+
"category": "nosql-document",
|
|
53
70
|
"detectionDeps": ["mongoose", "mongodb", "@typegoose/typegoose"],
|
|
71
|
+
"detectionDepsPython": ["pymongo", "motor", "mongoengine"],
|
|
72
|
+
"detectionDepsGo": ["go.mongodb.org/mongo-driver"],
|
|
73
|
+
"detectionDepsRust": ["mongodb"],
|
|
74
|
+
"detectionDepsJava": ["mongodb-driver-sync"],
|
|
54
75
|
"features": ["Schema validation", "Aggregation pipeline", "Atlas Search", "Change streams"],
|
|
55
76
|
"securityRules": false,
|
|
56
77
|
"idType": "ObjectId",
|
|
57
78
|
"collectionFormat": "BSON documents",
|
|
58
79
|
"validationSchema": "$jsonSchema",
|
|
80
|
+
"schemaFormat": "BSON document model",
|
|
59
81
|
"docsUrl": "https://www.mongodb.com/docs/"
|
|
60
82
|
},
|
|
61
83
|
"sqlite": {
|
|
62
84
|
"displayName": "SQLite",
|
|
85
|
+
"category": "sql",
|
|
63
86
|
"detectionDeps": ["better-sqlite3", "sqlite3", "sqlite", "@libsqlite3", "libsql", "@libsql/client"],
|
|
87
|
+
"detectionDepsPython": ["sqlite3", "aiosqlite"],
|
|
88
|
+
"detectionDepsGo": ["github.com/mattn/go-sqlite3"],
|
|
89
|
+
"detectionDepsRust": ["rusqlite", "sqlx"],
|
|
64
90
|
"features": ["Embedded", "Serverless", "ACID", "File-based"],
|
|
65
91
|
"securityRules": false,
|
|
66
92
|
"idType": "TEXT DEFAULT (lower(hex(randomblob(16))))",
|
|
67
93
|
"timestampType": "TEXT DEFAULT (datetime('now'))",
|
|
68
94
|
"jsonType": "TEXT",
|
|
69
95
|
"autoIncrementSyntax": "AUTOINCREMENT",
|
|
96
|
+
"schemaFormat": "SQLite DDL",
|
|
70
97
|
"docsUrl": "https://www.sqlite.org/docs.html"
|
|
98
|
+
},
|
|
99
|
+
"redis": {
|
|
100
|
+
"displayName": "Redis",
|
|
101
|
+
"category": "cache",
|
|
102
|
+
"detectionDeps": ["redis", "ioredis", "@redis/client"],
|
|
103
|
+
"detectionDepsPython": ["redis"],
|
|
104
|
+
"detectionDepsGo": ["github.com/redis/go-redis"],
|
|
105
|
+
"detectionDepsRust": ["redis"],
|
|
106
|
+
"detectionDepsJava": ["jedis", "lettuce-core"],
|
|
107
|
+
"features": ["In-memory", "Pub/Sub", "Streams", "Lua scripting", "Clustering"],
|
|
108
|
+
"securityRules": false,
|
|
109
|
+
"schemaFormat": "Key-value patterns",
|
|
110
|
+
"docsUrl": "https://redis.io/docs/"
|
|
111
|
+
},
|
|
112
|
+
"memcached": {
|
|
113
|
+
"displayName": "Memcached",
|
|
114
|
+
"category": "cache",
|
|
115
|
+
"detectionDeps": ["memcached", "memjs"],
|
|
116
|
+
"detectionDepsPython": ["pymemcache", "python-memcached"],
|
|
117
|
+
"detectionDepsGo": ["github.com/bradfitz/gomemcache"],
|
|
118
|
+
"features": ["In-memory", "Simple key-value", "Multi-threaded"],
|
|
119
|
+
"securityRules": false,
|
|
120
|
+
"schemaFormat": "Key-value patterns",
|
|
121
|
+
"docsUrl": "https://memcached.org/"
|
|
122
|
+
},
|
|
123
|
+
"valkey": {
|
|
124
|
+
"displayName": "Valkey",
|
|
125
|
+
"category": "cache",
|
|
126
|
+
"detectionDeps": ["valkey", "@valkey/client"],
|
|
127
|
+
"features": ["In-memory", "Redis-compatible", "Open source"],
|
|
128
|
+
"securityRules": false,
|
|
129
|
+
"schemaFormat": "Key-value patterns",
|
|
130
|
+
"docsUrl": "https://valkey.io/docs/"
|
|
131
|
+
},
|
|
132
|
+
"elasticsearch": {
|
|
133
|
+
"displayName": "Elasticsearch",
|
|
134
|
+
"category": "search",
|
|
135
|
+
"detectionDeps": ["@elastic/elasticsearch"],
|
|
136
|
+
"detectionDepsPython": ["elasticsearch"],
|
|
137
|
+
"detectionDepsGo": ["github.com/elastic/go-elasticsearch"],
|
|
138
|
+
"detectionDepsRust": ["elasticsearch"],
|
|
139
|
+
"detectionDepsJava": ["elasticsearch-rest-high-level-client"],
|
|
140
|
+
"features": ["Full-text search", "Aggregations", "ML", "Vector search"],
|
|
141
|
+
"securityRules": false,
|
|
142
|
+
"schemaFormat": "Index mappings (JSON)",
|
|
143
|
+
"docsUrl": "https://www.elastic.co/docs/elasticsearch"
|
|
144
|
+
},
|
|
145
|
+
"opensearch": {
|
|
146
|
+
"displayName": "OpenSearch",
|
|
147
|
+
"category": "search",
|
|
148
|
+
"detectionDeps": ["@opensearch-project/opensearch"],
|
|
149
|
+
"detectionDepsPython": ["opensearch-py"],
|
|
150
|
+
"features": ["Full-text search", "Observability", "Security analytics"],
|
|
151
|
+
"securityRules": false,
|
|
152
|
+
"schemaFormat": "Index mappings (JSON)",
|
|
153
|
+
"docsUrl": "https://opensearch.org/docs/"
|
|
154
|
+
},
|
|
155
|
+
"meilisearch": {
|
|
156
|
+
"displayName": "Meilisearch",
|
|
157
|
+
"category": "search",
|
|
158
|
+
"detectionDeps": ["meilisearch"],
|
|
159
|
+
"detectionDepsPython": ["meilisearch"],
|
|
160
|
+
"detectionDepsRust": ["meilisearch-sdk"],
|
|
161
|
+
"features": ["Typo-tolerant", "Instant search", "Faceted search"],
|
|
162
|
+
"securityRules": false,
|
|
163
|
+
"schemaFormat": "Index settings (JSON)",
|
|
164
|
+
"docsUrl": "https://www.meilisearch.com/docs/"
|
|
165
|
+
},
|
|
166
|
+
"algolia": {
|
|
167
|
+
"displayName": "Algolia",
|
|
168
|
+
"category": "search",
|
|
169
|
+
"detectionDeps": ["algoliasearch", "@algolia/client-search"],
|
|
170
|
+
"detectionDepsPython": ["algoliasearch"],
|
|
171
|
+
"features": ["Hosted search", "AI relevance", "Analytics"],
|
|
172
|
+
"securityRules": false,
|
|
173
|
+
"schemaFormat": "Index settings (JSON)",
|
|
174
|
+
"docsUrl": "https://www.algolia.com/doc/"
|
|
175
|
+
},
|
|
176
|
+
"typesense": {
|
|
177
|
+
"displayName": "Typesense",
|
|
178
|
+
"category": "search",
|
|
179
|
+
"detectionDeps": ["typesense"],
|
|
180
|
+
"detectionDepsPython": ["typesense"],
|
|
181
|
+
"features": ["Typo-tolerant", "Geo search", "Semantic search"],
|
|
182
|
+
"securityRules": false,
|
|
183
|
+
"schemaFormat": "Collection schema (JSON)",
|
|
184
|
+
"docsUrl": "https://typesense.org/docs/"
|
|
185
|
+
},
|
|
186
|
+
"influxdb": {
|
|
187
|
+
"displayName": "InfluxDB",
|
|
188
|
+
"category": "timeseries",
|
|
189
|
+
"detectionDeps": ["@influxdata/influxdb-client"],
|
|
190
|
+
"detectionDepsPython": ["influxdb-client"],
|
|
191
|
+
"detectionDepsGo": ["github.com/influxdata/influxdb-client-go"],
|
|
192
|
+
"detectionDepsJava": ["influxdb-client-java"],
|
|
193
|
+
"features": ["Time-series", "Flux query", "Telegraf integration"],
|
|
194
|
+
"securityRules": false,
|
|
195
|
+
"schemaFormat": "Measurement schema (tags + fields)",
|
|
196
|
+
"docsUrl": "https://docs.influxdata.com/"
|
|
197
|
+
},
|
|
198
|
+
"timescaledb": {
|
|
199
|
+
"displayName": "TimescaleDB",
|
|
200
|
+
"category": "timeseries",
|
|
201
|
+
"detectionDeps": ["pg"],
|
|
202
|
+
"detectionDepsPython": ["psycopg2", "timescale"],
|
|
203
|
+
"features": ["Hypertables", "Continuous aggregates", "Compression", "PostgreSQL extension"],
|
|
204
|
+
"securityRules": false,
|
|
205
|
+
"schemaFormat": "PostgreSQL DDL + hypertable API",
|
|
206
|
+
"docsUrl": "https://docs.timescale.com/"
|
|
207
|
+
},
|
|
208
|
+
"questdb": {
|
|
209
|
+
"displayName": "QuestDB",
|
|
210
|
+
"category": "timeseries",
|
|
211
|
+
"detectionDeps": ["@questdb/nodejs-client"],
|
|
212
|
+
"detectionDepsPython": ["questdb"],
|
|
213
|
+
"features": ["Time-series", "SQL", "High-performance ingestion"],
|
|
214
|
+
"securityRules": false,
|
|
215
|
+
"schemaFormat": "QuestDB SQL DDL",
|
|
216
|
+
"docsUrl": "https://questdb.io/docs/"
|
|
217
|
+
},
|
|
218
|
+
"neo4j": {
|
|
219
|
+
"displayName": "Neo4j",
|
|
220
|
+
"category": "graph",
|
|
221
|
+
"detectionDeps": ["neo4j-driver"],
|
|
222
|
+
"detectionDepsPython": ["neo4j", "py2neo"],
|
|
223
|
+
"detectionDepsGo": ["github.com/neo4j/neo4j-go-driver"],
|
|
224
|
+
"detectionDepsJava": ["neo4j-java-driver"],
|
|
225
|
+
"features": ["Cypher query", "ACID", "Graph algorithms", "Graph Data Science"],
|
|
226
|
+
"securityRules": false,
|
|
227
|
+
"schemaFormat": "Cypher DDL (CREATE CONSTRAINT)",
|
|
228
|
+
"docsUrl": "https://neo4j.com/docs/"
|
|
229
|
+
},
|
|
230
|
+
"arangodb": {
|
|
231
|
+
"displayName": "ArangoDB",
|
|
232
|
+
"category": "graph",
|
|
233
|
+
"detectionDeps": ["arangojs"],
|
|
234
|
+
"detectionDepsPython": ["python-arango"],
|
|
235
|
+
"features": ["Multi-model", "AQL", "Graph + Document + Key-Value"],
|
|
236
|
+
"securityRules": false,
|
|
237
|
+
"schemaFormat": "AQL + collection config",
|
|
238
|
+
"docsUrl": "https://docs.arangodb.com/"
|
|
239
|
+
},
|
|
240
|
+
"neptune": {
|
|
241
|
+
"displayName": "Amazon Neptune",
|
|
242
|
+
"category": "graph",
|
|
243
|
+
"detectionDeps": ["@aws-sdk/client-neptune", "gremlin"],
|
|
244
|
+
"detectionDepsPython": ["gremlinpython"],
|
|
245
|
+
"features": ["Managed graph", "Gremlin", "SPARQL", "openCypher"],
|
|
246
|
+
"securityRules": false,
|
|
247
|
+
"schemaFormat": "Gremlin/SPARQL/openCypher",
|
|
248
|
+
"docsUrl": "https://docs.aws.amazon.com/neptune/"
|
|
249
|
+
},
|
|
250
|
+
"dgraph": {
|
|
251
|
+
"displayName": "Dgraph",
|
|
252
|
+
"category": "graph",
|
|
253
|
+
"detectionDeps": ["dgraph-js"],
|
|
254
|
+
"detectionDepsPython": ["pydgraph"],
|
|
255
|
+
"features": ["Distributed graph", "GraphQL native", "DQL"],
|
|
256
|
+
"securityRules": false,
|
|
257
|
+
"schemaFormat": "DQL schema",
|
|
258
|
+
"docsUrl": "https://dgraph.io/docs/"
|
|
259
|
+
},
|
|
260
|
+
"pinecone": {
|
|
261
|
+
"displayName": "Pinecone",
|
|
262
|
+
"category": "vector",
|
|
263
|
+
"detectionDeps": ["@pinecone-database/pinecone"],
|
|
264
|
+
"detectionDepsPython": ["pinecone-client"],
|
|
265
|
+
"features": ["Managed vectors", "Metadata filtering", "Namespaces"],
|
|
266
|
+
"securityRules": false,
|
|
267
|
+
"schemaFormat": "Index config (JSON)",
|
|
268
|
+
"docsUrl": "https://docs.pinecone.io/"
|
|
269
|
+
},
|
|
270
|
+
"weaviate": {
|
|
271
|
+
"displayName": "Weaviate",
|
|
272
|
+
"category": "vector",
|
|
273
|
+
"detectionDeps": ["weaviate-ts-client"],
|
|
274
|
+
"detectionDepsPython": ["weaviate-client"],
|
|
275
|
+
"features": ["Vector + keyword hybrid", "Multi-modal", "GraphQL API"],
|
|
276
|
+
"securityRules": false,
|
|
277
|
+
"schemaFormat": "Class schema (JSON)",
|
|
278
|
+
"docsUrl": "https://weaviate.io/developers/weaviate"
|
|
279
|
+
},
|
|
280
|
+
"qdrant": {
|
|
281
|
+
"displayName": "Qdrant",
|
|
282
|
+
"category": "vector",
|
|
283
|
+
"detectionDeps": ["@qdrant/js-client-rest"],
|
|
284
|
+
"detectionDepsPython": ["qdrant-client"],
|
|
285
|
+
"detectionDepsRust": ["qdrant-client"],
|
|
286
|
+
"features": ["HNSW index", "Payload filtering", "Quantization"],
|
|
287
|
+
"securityRules": false,
|
|
288
|
+
"schemaFormat": "Collection config (JSON)",
|
|
289
|
+
"docsUrl": "https://qdrant.tech/documentation/"
|
|
290
|
+
},
|
|
291
|
+
"milvus": {
|
|
292
|
+
"displayName": "Milvus",
|
|
293
|
+
"category": "vector",
|
|
294
|
+
"detectionDeps": ["@zilliz/milvus2-sdk-node"],
|
|
295
|
+
"detectionDepsPython": ["pymilvus"],
|
|
296
|
+
"detectionDepsJava": ["io.milvus:milvus-sdk-java"],
|
|
297
|
+
"features": ["Distributed vectors", "GPU acceleration", "Multiple index types"],
|
|
298
|
+
"securityRules": false,
|
|
299
|
+
"schemaFormat": "Collection schema (JSON)",
|
|
300
|
+
"docsUrl": "https://milvus.io/docs/"
|
|
301
|
+
},
|
|
302
|
+
"chromadb": {
|
|
303
|
+
"displayName": "ChromaDB",
|
|
304
|
+
"category": "vector",
|
|
305
|
+
"detectionDeps": ["chromadb"],
|
|
306
|
+
"detectionDepsPython": ["chromadb"],
|
|
307
|
+
"features": ["Embedded vectors", "Multi-modal", "LangChain integration"],
|
|
308
|
+
"securityRules": false,
|
|
309
|
+
"schemaFormat": "Collection config (JSON)",
|
|
310
|
+
"docsUrl": "https://docs.trychroma.com/"
|
|
311
|
+
},
|
|
312
|
+
"cassandra": {
|
|
313
|
+
"displayName": "Apache Cassandra",
|
|
314
|
+
"category": "wide-column",
|
|
315
|
+
"detectionDeps": ["cassandra-driver"],
|
|
316
|
+
"detectionDepsPython": ["cassandra-driver"],
|
|
317
|
+
"detectionDepsGo": ["github.com/gocql/gocql"],
|
|
318
|
+
"detectionDepsJava": ["cassandra-driver-core"],
|
|
319
|
+
"features": ["Wide-column", "Distributed", "Tunable consistency", "CQL"],
|
|
320
|
+
"securityRules": false,
|
|
321
|
+
"schemaFormat": "CQL DDL",
|
|
322
|
+
"docsUrl": "https://cassandra.apache.org/doc/"
|
|
323
|
+
},
|
|
324
|
+
"scylladb": {
|
|
325
|
+
"displayName": "ScyllaDB",
|
|
326
|
+
"category": "wide-column",
|
|
327
|
+
"detectionDeps": ["cassandra-driver", "@scylladb/driver"],
|
|
328
|
+
"detectionDepsPython": ["scylla-driver"],
|
|
329
|
+
"detectionDepsRust": ["scylla"],
|
|
330
|
+
"features": ["Cassandra-compatible", "C++ performance", "Shard-per-core"],
|
|
331
|
+
"securityRules": false,
|
|
332
|
+
"schemaFormat": "CQL DDL",
|
|
333
|
+
"docsUrl": "https://docs.scylladb.com/"
|
|
334
|
+
},
|
|
335
|
+
"hbase": {
|
|
336
|
+
"displayName": "Apache HBase",
|
|
337
|
+
"category": "wide-column",
|
|
338
|
+
"detectionDepsJava": ["hbase-client"],
|
|
339
|
+
"detectionDepsPython": ["happybase"],
|
|
340
|
+
"detectionDeps": [],
|
|
341
|
+
"features": ["Hadoop ecosystem", "Wide-column", "Strong consistency"],
|
|
342
|
+
"securityRules": false,
|
|
343
|
+
"schemaFormat": "HBase shell DDL",
|
|
344
|
+
"docsUrl": "https://hbase.apache.org/book.html"
|
|
345
|
+
},
|
|
346
|
+
"clickhouse": {
|
|
347
|
+
"displayName": "ClickHouse",
|
|
348
|
+
"category": "wide-column",
|
|
349
|
+
"detectionDeps": ["@clickhouse/client"],
|
|
350
|
+
"detectionDepsPython": ["clickhouse-connect", "clickhouse-driver"],
|
|
351
|
+
"detectionDepsGo": ["github.com/ClickHouse/clickhouse-go"],
|
|
352
|
+
"detectionDepsRust": ["clickhouse"],
|
|
353
|
+
"detectionDepsJava": ["clickhouse-jdbc"],
|
|
354
|
+
"features": ["Columnar", "OLAP", "MergeTree engines", "SQL"],
|
|
355
|
+
"securityRules": false,
|
|
356
|
+
"schemaFormat": "ClickHouse SQL DDL",
|
|
357
|
+
"docsUrl": "https://clickhouse.com/docs/"
|
|
358
|
+
},
|
|
359
|
+
"cockroachdb": {
|
|
360
|
+
"displayName": "CockroachDB",
|
|
361
|
+
"category": "newsql",
|
|
362
|
+
"detectionDeps": ["pg", "@cockroachlabs/serverless"],
|
|
363
|
+
"detectionDepsPython": ["psycopg2"],
|
|
364
|
+
"detectionDepsGo": ["github.com/jackc/pgx"],
|
|
365
|
+
"features": ["Distributed SQL", "Serializable isolation", "Geo-partitioning", "PostgreSQL compatible"],
|
|
366
|
+
"securityRules": false,
|
|
367
|
+
"schemaFormat": "PostgreSQL-compatible DDL",
|
|
368
|
+
"docsUrl": "https://www.cockroachlabs.com/docs/"
|
|
369
|
+
},
|
|
370
|
+
"tidb": {
|
|
371
|
+
"displayName": "TiDB",
|
|
372
|
+
"category": "newsql",
|
|
373
|
+
"detectionDeps": ["mysql2", "@tidbcloud/serverless"],
|
|
374
|
+
"detectionDepsPython": ["pymysql"],
|
|
375
|
+
"detectionDepsGo": ["github.com/go-sql-driver/mysql"],
|
|
376
|
+
"features": ["Distributed SQL", "MySQL compatible", "HTAP", "TiKV storage"],
|
|
377
|
+
"securityRules": false,
|
|
378
|
+
"schemaFormat": "MySQL-compatible DDL",
|
|
379
|
+
"docsUrl": "https://docs.pingcap.com/"
|
|
380
|
+
},
|
|
381
|
+
"spanner": {
|
|
382
|
+
"displayName": "Google Cloud Spanner",
|
|
383
|
+
"category": "newsql",
|
|
384
|
+
"detectionDeps": ["@google-cloud/spanner"],
|
|
385
|
+
"detectionDepsPython": ["google-cloud-spanner"],
|
|
386
|
+
"detectionDepsGo": ["cloud.google.com/go/spanner"],
|
|
387
|
+
"detectionDepsJava": ["google-cloud-spanner"],
|
|
388
|
+
"features": ["Global SQL", "Strong consistency", "Horizontal scaling"],
|
|
389
|
+
"securityRules": false,
|
|
390
|
+
"schemaFormat": "Spanner DDL",
|
|
391
|
+
"docsUrl": "https://cloud.google.com/spanner/docs"
|
|
392
|
+
},
|
|
393
|
+
"planetscale": {
|
|
394
|
+
"displayName": "PlanetScale",
|
|
395
|
+
"category": "newsql",
|
|
396
|
+
"detectionDeps": ["@planetscale/database"],
|
|
397
|
+
"detectionDepsGo": ["github.com/planetscale/planetscale-go"],
|
|
398
|
+
"features": ["Serverless MySQL", "Branching", "Non-blocking schema changes"],
|
|
399
|
+
"securityRules": false,
|
|
400
|
+
"schemaFormat": "MySQL-compatible DDL",
|
|
401
|
+
"docsUrl": "https://planetscale.com/docs"
|
|
402
|
+
},
|
|
403
|
+
"neon": {
|
|
404
|
+
"displayName": "Neon",
|
|
405
|
+
"category": "newsql",
|
|
406
|
+
"detectionDeps": ["@neondatabase/serverless"],
|
|
407
|
+
"features": ["Serverless PostgreSQL", "Branching", "Auto-scaling", "Compute separation"],
|
|
408
|
+
"securityRules": false,
|
|
409
|
+
"schemaFormat": "PostgreSQL DDL",
|
|
410
|
+
"docsUrl": "https://neon.tech/docs"
|
|
411
|
+
},
|
|
412
|
+
"alloydb": {
|
|
413
|
+
"displayName": "Google AlloyDB",
|
|
414
|
+
"category": "newsql",
|
|
415
|
+
"detectionDeps": ["@google-cloud/alloydb"],
|
|
416
|
+
"detectionDepsPython": ["google-cloud-alloydb-connector"],
|
|
417
|
+
"features": ["Managed PostgreSQL", "Columnar engine", "AI/ML integration"],
|
|
418
|
+
"securityRules": false,
|
|
419
|
+
"schemaFormat": "PostgreSQL DDL",
|
|
420
|
+
"docsUrl": "https://cloud.google.com/alloydb/docs"
|
|
421
|
+
},
|
|
422
|
+
"dynamodb": {
|
|
423
|
+
"displayName": "Amazon DynamoDB",
|
|
424
|
+
"category": "cloud-managed",
|
|
425
|
+
"detectionDeps": ["@aws-sdk/client-dynamodb", "@aws-sdk/lib-dynamodb"],
|
|
426
|
+
"detectionDepsPython": ["boto3"],
|
|
427
|
+
"detectionDepsGo": ["github.com/aws/aws-sdk-go-v2/service/dynamodb"],
|
|
428
|
+
"detectionDepsJava": ["dynamodb-enhanced"],
|
|
429
|
+
"features": ["Serverless NoSQL", "Single-digit ms", "Global tables", "Streams"],
|
|
430
|
+
"securityRules": false,
|
|
431
|
+
"schemaFormat": "DynamoDB table definition (JSON)",
|
|
432
|
+
"docsUrl": "https://docs.aws.amazon.com/dynamodb/"
|
|
433
|
+
},
|
|
434
|
+
"aurora": {
|
|
435
|
+
"displayName": "Amazon Aurora",
|
|
436
|
+
"category": "cloud-managed",
|
|
437
|
+
"detectionDeps": ["@aws-sdk/client-rds-data", "aurora-data-api"],
|
|
438
|
+
"detectionDepsPython": ["boto3"],
|
|
439
|
+
"features": ["Managed PostgreSQL/MySQL", "Multi-AZ", "Serverless v2"],
|
|
440
|
+
"securityRules": false,
|
|
441
|
+
"schemaFormat": "PostgreSQL/MySQL DDL",
|
|
442
|
+
"docsUrl": "https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/"
|
|
443
|
+
},
|
|
444
|
+
"documentdb": {
|
|
445
|
+
"displayName": "Amazon DocumentDB",
|
|
446
|
+
"category": "cloud-managed",
|
|
447
|
+
"detectionDeps": ["mongodb", "@aws-sdk/client-docdb"],
|
|
448
|
+
"detectionDepsPython": ["pymongo"],
|
|
449
|
+
"features": ["MongoDB-compatible", "Managed", "Scalable"],
|
|
450
|
+
"securityRules": false,
|
|
451
|
+
"schemaFormat": "MongoDB-compatible document model",
|
|
452
|
+
"docsUrl": "https://docs.aws.amazon.com/documentdb/"
|
|
453
|
+
},
|
|
454
|
+
"cosmosdb": {
|
|
455
|
+
"displayName": "Azure Cosmos DB",
|
|
456
|
+
"category": "cloud-managed",
|
|
457
|
+
"detectionDeps": ["@azure/cosmos"],
|
|
458
|
+
"detectionDepsPython": ["azure-cosmos"],
|
|
459
|
+
"detectionDepsJava": ["azure-cosmos"],
|
|
460
|
+
"features": ["Multi-model", "Global distribution", "Multi-API", "SLA-backed"],
|
|
461
|
+
"securityRules": false,
|
|
462
|
+
"schemaFormat": "Container schema (JSON)",
|
|
463
|
+
"docsUrl": "https://learn.microsoft.com/azure/cosmos-db/"
|
|
71
464
|
}
|
|
72
465
|
},
|
|
73
466
|
"sqlSyntax": {
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"notImplemented": "set_locale is not yet implemented"
|
|
71
71
|
},
|
|
72
72
|
"init_project": {
|
|
73
|
-
"description": "Initialize a project — detects language, framework, architecture, and stores project knowledge",
|
|
73
|
+
"description": "Initialize a project — detects language, framework, architecture, and stores project knowledge. IMPORTANT: Before running this, ask the user about their profile (developer, product owner, designer, or non-technical user). Store the answer in userProfile. This determines how detailed and technical all subsequent SpecForge interactions will be",
|
|
74
74
|
"success": "Project initialized at {projectPath}",
|
|
75
75
|
"notImplemented": "init_project is not yet implemented"
|
|
76
76
|
},
|
|
@@ -80,12 +80,12 @@
|
|
|
80
80
|
"notImplemented": "init_constitution is not yet implemented"
|
|
81
81
|
},
|
|
82
82
|
"clarify_requirements": {
|
|
83
|
-
"description": "
|
|
83
|
+
"description": "ONLY use when the user request is extremely vague (1-2 words like 'auth' or 'payments'). For most feature requests, skip this and go directly to create_spec — SpecForge infers what it needs from project context",
|
|
84
84
|
"success": "Generated {count} clarification questions for topic: {topic}",
|
|
85
85
|
"notImplemented": "clarify_requirements is not yet implemented"
|
|
86
86
|
},
|
|
87
87
|
"create_spec": {
|
|
88
|
-
"description": "Create a full SDD spec (HU.md + FICHA-TECNICA.md) from a description",
|
|
88
|
+
"description": "Create a full SDD spec (HU.md + FICHA-TECNICA.md) from a description. Call this directly — no need to run clarify_requirements first. SpecForge uses project context to generate complete specs automatically",
|
|
89
89
|
"success": "Spec {id} created: {title}",
|
|
90
90
|
"notImplemented": "create_spec is not yet implemented"
|
|
91
91
|
},
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"notImplemented": "set_locale aún no está implementado"
|
|
71
71
|
},
|
|
72
72
|
"init_project": {
|
|
73
|
-
"description": "Inicializar un proyecto — detecta lenguaje, framework, arquitectura y almacena conocimiento del proyecto",
|
|
73
|
+
"description": "Inicializar un proyecto — detecta lenguaje, framework, arquitectura y almacena conocimiento del proyecto. IMPORTANTE: Antes de ejecutar esto, pregunta al usuario su perfil (desarrollador, product owner, diseñador, o usuario no técnico). Guarda la respuesta en userProfile. Esto determina qué tan detalladas y técnicas serán todas las interacciones posteriores de SpecForge",
|
|
74
74
|
"success": "Proyecto inicializado en {projectPath}",
|
|
75
75
|
"notImplemented": "init_project aún no está implementado"
|
|
76
76
|
},
|
|
@@ -80,12 +80,12 @@
|
|
|
80
80
|
"notImplemented": "init_constitution aún no está implementado"
|
|
81
81
|
},
|
|
82
82
|
"clarify_requirements": {
|
|
83
|
-
"description": "
|
|
83
|
+
"description": "SOLO usar cuando la petición del usuario sea extremadamente vaga (1-2 palabras como 'auth' o 'pagos'). Para la mayoría de features, saltar esto e ir directo a create_spec — SpecForge infiere lo que necesita del contexto del proyecto",
|
|
84
84
|
"success": "Se generaron {count} preguntas de clarificación para el tema: {topic}",
|
|
85
85
|
"notImplemented": "clarify_requirements aún no está implementado"
|
|
86
86
|
},
|
|
87
87
|
"create_spec": {
|
|
88
|
-
"description": "Crear una spec SDD completa (HU.md + FICHA-TECNICA.md) desde una descripción",
|
|
88
|
+
"description": "Crear una spec SDD completa (HU.md + FICHA-TECNICA.md) desde una descripción. Llamar directamente — no necesita ejecutar clarify_requirements primero. SpecForge usa el contexto del proyecto para generar specs completas automáticamente",
|
|
89
89
|
"success": "Spec {id} creada: {title}",
|
|
90
90
|
"notImplemented": "create_spec aún no está implementado"
|
|
91
91
|
},
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"notImplemented": "set_locale ainda não está implementado"
|
|
71
71
|
},
|
|
72
72
|
"init_project": {
|
|
73
|
-
"description": "Inicializar um projeto — detecta linguagem, framework, arquitetura e armazena conhecimento do projeto",
|
|
73
|
+
"description": "Inicializar um projeto — detecta linguagem, framework, arquitetura e armazena conhecimento do projeto. IMPORTANTE: Antes de executar isso, pergunte ao usuário sobre seu perfil (desenvolvedor, product owner, designer, ou usuário não-técnico). Armazene a resposta em userProfile. Isso determina o nível de detalhe técnico de todas as interações posteriores do SpecForge",
|
|
74
74
|
"success": "Projeto inicializado em {projectPath}",
|
|
75
75
|
"notImplemented": "init_project ainda não está implementado"
|
|
76
76
|
},
|
|
@@ -80,12 +80,12 @@
|
|
|
80
80
|
"notImplemented": "init_constitution ainda não está implementado"
|
|
81
81
|
},
|
|
82
82
|
"clarify_requirements": {
|
|
83
|
-
"description": "
|
|
83
|
+
"description": "APENAS usar quando o pedido do usuário for extremamente vago (1-2 palavras como 'auth' ou 'pagamentos'). Para a maioria das features, pular e ir direto para create_spec — SpecForge infere o que precisa do contexto do projeto",
|
|
84
84
|
"success": "Geradas {count} perguntas de clarificação para o tópico: {topic}",
|
|
85
85
|
"notImplemented": "clarify_requirements ainda não está implementado"
|
|
86
86
|
},
|
|
87
87
|
"create_spec": {
|
|
88
|
-
"description": "Criar uma spec SDD completa (HU.md + FICHA-TECNICA.md) a partir de uma descrição",
|
|
88
|
+
"description": "Criar uma spec SDD completa (HU.md + FICHA-TECNICA.md) a partir de uma descrição. Chamar diretamente — não precisa executar clarify_requirements antes. SpecForge usa o contexto do projeto para gerar specs completas automaticamente",
|
|
89
89
|
"success": "Spec {id} criada: {title}",
|
|
90
90
|
"notImplemented": "create_spec ainda não está implementado"
|
|
91
91
|
},
|