@ariacode/cli 0.1.0 → 0.2.2
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/README.md +190 -5
- package/dist/actions/db-ask.d.ts +16 -0
- package/dist/actions/db-ask.js +130 -0
- package/dist/actions/db-ask.js.map +1 -0
- package/dist/actions/db-explain.d.ts +16 -0
- package/dist/actions/db-explain.js +123 -0
- package/dist/actions/db-explain.js.map +1 -0
- package/dist/actions/db-migrate.d.ts +17 -0
- package/dist/actions/db-migrate.js +124 -0
- package/dist/actions/db-migrate.js.map +1 -0
- package/dist/actions/db-schema.d.ts +11 -0
- package/dist/actions/db-schema.js +38 -0
- package/dist/actions/db-schema.js.map +1 -0
- package/dist/actions/upgrade-deps.d.ts +18 -0
- package/dist/actions/upgrade-deps.js +227 -0
- package/dist/actions/upgrade-deps.js.map +1 -0
- package/dist/actions/upgrade-prisma.d.ts +16 -0
- package/dist/actions/upgrade-prisma.js +177 -0
- package/dist/actions/upgrade-prisma.js.map +1 -0
- package/dist/actions.d.ts +20 -0
- package/dist/actions.js +105 -36
- package/dist/actions.js.map +1 -1
- package/dist/agent.js +28 -9
- package/dist/agent.js.map +1 -1
- package/dist/cli.js +102 -0
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +16 -0
- package/dist/config.js +39 -0
- package/dist/config.js.map +1 -1
- package/dist/db/client-usage.d.ts +19 -0
- package/dist/db/client-usage.js +107 -0
- package/dist/db/client-usage.js.map +1 -0
- package/dist/db/migrate.d.ts +26 -0
- package/dist/db/migrate.js +59 -0
- package/dist/db/migrate.js.map +1 -0
- package/dist/db/schema.d.ts +106 -0
- package/dist/db/schema.js +275 -0
- package/dist/db/schema.js.map +1 -0
- package/dist/db/summary.d.ts +12 -0
- package/dist/db/summary.js +133 -0
- package/dist/db/summary.js.map +1 -0
- package/dist/fs-helpers.d.ts +19 -0
- package/dist/fs-helpers.js +92 -0
- package/dist/fs-helpers.js.map +1 -0
- package/dist/parser.d.ts +11 -0
- package/dist/parser.js +102 -0
- package/dist/parser.js.map +1 -1
- package/dist/prompt-loader.d.ts +9 -0
- package/dist/prompt-loader.js +26 -0
- package/dist/prompt-loader.js.map +1 -0
- package/dist/prompts/db_ask.md +39 -0
- package/dist/prompts/db_explain.md +43 -0
- package/dist/prompts/db_migrate.md +48 -0
- package/dist/prompts/upgrade_deps.md +23 -0
- package/dist/prompts/upgrade_prisma.md +28 -0
- package/dist/provider.d.ts +9 -2
- package/dist/provider.js +12 -39
- package/dist/provider.js.map +1 -1
- package/dist/storage.d.ts +11 -0
- package/dist/storage.js +36 -4
- package/dist/storage.js.map +1 -1
- package/dist/tools.d.ts +26 -0
- package/dist/tools.js +256 -8
- package/dist/tools.js.map +1 -1
- package/dist/upgrade/changelog.d.ts +21 -0
- package/dist/upgrade/changelog.js +62 -0
- package/dist/upgrade/changelog.js.map +1 -0
- package/dist/upgrade/classifier.d.ts +25 -0
- package/dist/upgrade/classifier.js +78 -0
- package/dist/upgrade/classifier.js.map +1 -0
- package/dist/upgrade/outdated.d.ts +17 -0
- package/dist/upgrade/outdated.js +138 -0
- package/dist/upgrade/outdated.js.map +1 -0
- package/dist/upgrade/prisma-upgrade.d.ts +20 -0
- package/dist/upgrade/prisma-upgrade.js +66 -0
- package/dist/upgrade/prisma-upgrade.js.map +1 -0
- package/package.json +7 -4
- package/dist/prompts/prompts/ask.md +0 -20
- package/dist/prompts/prompts/explore.md +0 -38
- package/dist/prompts/prompts/patch.md +0 -27
- package/dist/prompts/prompts/plan.md +0 -41
- package/dist/prompts/prompts/review.md +0 -33
package/dist/config.js
CHANGED
|
@@ -14,6 +14,14 @@ export const ProviderConfigSchema = z.object({
|
|
|
14
14
|
.default("anthropic"),
|
|
15
15
|
model: z.string().default("claude-sonnet-4-6"),
|
|
16
16
|
maxTokens: z.number().int().positive().default(4096),
|
|
17
|
+
// Per-provider model overrides (v0.2.2)
|
|
18
|
+
anthropic: z.object({
|
|
19
|
+
model: z.string().optional(),
|
|
20
|
+
}).optional(),
|
|
21
|
+
openrouter: z.object({
|
|
22
|
+
model: z.string().optional(),
|
|
23
|
+
baseUrl: z.string().url().optional(),
|
|
24
|
+
}).optional(),
|
|
17
25
|
});
|
|
18
26
|
/**
|
|
19
27
|
* Agent configuration
|
|
@@ -148,6 +156,19 @@ function loadEnvironmentConfig() {
|
|
|
148
156
|
config.provider = { ...config.provider, maxTokens };
|
|
149
157
|
}
|
|
150
158
|
}
|
|
159
|
+
// OpenRouter base URL override
|
|
160
|
+
if (process.env.OPENROUTER_BASE_URL) {
|
|
161
|
+
try {
|
|
162
|
+
new URL(process.env.OPENROUTER_BASE_URL); // validate URL format
|
|
163
|
+
config.provider = {
|
|
164
|
+
...config.provider,
|
|
165
|
+
openrouter: { ...config.provider?.openrouter, baseUrl: process.env.OPENROUTER_BASE_URL },
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
catch {
|
|
169
|
+
throw new ConfigError(`Invalid OPENROUTER_BASE_URL: "${process.env.OPENROUTER_BASE_URL}" is not a valid URL`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
151
172
|
// Agent configuration
|
|
152
173
|
if (process.env.ARIA_MAX_ITERATIONS) {
|
|
153
174
|
const maxIterations = parseInt(process.env.ARIA_MAX_ITERATIONS, 10);
|
|
@@ -191,6 +212,24 @@ function flagsToConfig(flags) {
|
|
|
191
212
|
if (flags.maxTokens !== undefined) {
|
|
192
213
|
config.provider = { maxTokens: flags.maxTokens };
|
|
193
214
|
}
|
|
215
|
+
if (flags.provider !== undefined) {
|
|
216
|
+
const validProviders = ["anthropic", "openai", "ollama", "openrouter"];
|
|
217
|
+
if (validProviders.includes(flags.provider)) {
|
|
218
|
+
config.provider = { ...config.provider, default: flags.provider };
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
throw new ConfigError(`Unknown provider "${flags.provider}". Valid providers: ${validProviders.join(", ")}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (flags.model !== undefined) {
|
|
225
|
+
config.provider = {
|
|
226
|
+
...config.provider,
|
|
227
|
+
model: flags.model,
|
|
228
|
+
// CLI --model overrides per-provider model settings from config files
|
|
229
|
+
anthropic: { model: undefined },
|
|
230
|
+
openrouter: { ...config.provider?.openrouter, model: undefined },
|
|
231
|
+
};
|
|
232
|
+
}
|
|
194
233
|
if (flags.mode !== undefined) {
|
|
195
234
|
config.agent = { mode: flags.mode };
|
|
196
235
|
}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;SACrD,OAAO,CAAC,WAAW,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,CAAC;SACP,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;SACrD,OAAO,CAAC,WAAW,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACpD,wCAAwC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC;QAClB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC,CAAC,QAAQ,EAAE;IACb,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;KACrC,CAAC,CAAC,QAAQ,EAAE;CACd,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC;IAC1C,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CACzD,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACjD,oBAAoB,EAAE,CAAC;SACpB,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,OAAO,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACxD,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CAC1D,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1D,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClC,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACpD,CAAC,CAAC;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,QAAQ,EAAE,oBAAoB;IAC9B,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,kBAAkB;IAC1B,EAAE,EAAE,cAAc;IAClB,OAAO,EAAE,mBAAmB;CAC7B,CAAC,CAAC;AAIH;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGlB;IACA;IAHlB,YACE,OAAe,EACC,MAAe,EACf,KAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,WAAM,GAAN,MAAM,CAAS;QACf,UAAK,GAAL,KAAK,CAAU;QAG/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,uCAAuC;YACvC,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC/C,MAAM,IAAI,WAAW,CACnB,iCAAiC,QAAQ,EAAE,EAC3C,QAAQ,EACR,KAAK,CACN,CAAC;YACJ,CAAC;YAED,mCAAmC;YACnC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,WAAW,CACnB,0BAA0B,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,EACtD,QAAQ,EACR,KAAK,CACN,CAAC;YACJ,CAAC;YAED,gBAAgB;YAChB,MAAM,IAAI,WAAW,CACnB,qCAAqC,QAAQ,KAAK,KAAK,CAAC,OAAO,EAAE,EACjE,QAAQ,EACR,KAAK,CACN,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,WAAW,CACnB,4CAA4C,QAAQ,EAAE,EACtD,QAAQ,EACR,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AA4BD;;;;GAIG;AACH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,MAAsB,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,KAAK,CAAC,KAA0B,CAAC;YAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,qBAAqB;IAC5B,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,yBAAyB;IACzB,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC;IAChF,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QACpC,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAoC,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,CAAoC,EAAE,CAAC;QACtE,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IAC1E,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;QACtD,CAAC;IACH,CAAC;IACD,+BAA+B;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC,sBAAsB;YAChE,MAAM,CAAC,QAAQ,GAAG;gBAChB,GAAG,MAAM,CAAC,QAAQ;gBAClB,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE;aACzF,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,WAAW,CACnB,iCAAiC,OAAO,CAAC,GAAG,CAAC,mBAAmB,sBAAsB,CACvF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,GAAG,EAAE,aAAa,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACrC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAU,CAAC;IAC7D,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACjC,IAAI,eAAe,CAAC,QAAQ,CAAC,CAAqC,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAqC,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;IACzE,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,OAAO,GAAG,EAAE,UAAU,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,KAAe;IACpC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,CAAC,QAAQ,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAU,CAAC;QAChF,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,QAA2C,CAAC,EAAE,CAAC;YAC/E,MAAM,CAAC,QAAQ,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,QAA2C,EAAE,CAAC;QACvG,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,WAAW,CACnB,qBAAqB,KAAK,CAAC,QAAQ,uBAAuB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,QAAQ,GAAG;YAChB,GAAG,MAAM,CAAC,QAAQ;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,sEAAsE;YACtE,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;YAC/B,UAAU,EAAE,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE;SACjE,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,IAAkB,EAAE,QAAsB;IACpE,OAAO;QACL,QAAQ,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,QAAQ,EAAE;QACpD,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE;QAC3C,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE;QAC9C,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,EAAE;QAClC,OAAO,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE;KAClD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CACxB,WAAmB,EACnB,QAAkB,EAAE;IAEpB,wBAAwB;IACxB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACvE,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAE/D,MAAM,UAAU,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAExC,0DAA0D;IAC1D,IAAI,MAAM,GAAiB,EAAE,CAAC;IAC9B,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACnD,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/C,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,IAAI,CAAC;QACH,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,MAAM,UAAU,GAAG;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE;YACnB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;SAC9B,CAAC;QACF,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM;iBACxB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;iBAC/D,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,MAAM,IAAI,WAAW,CACnB,qCAAqC,MAAM,EAAE,EAC7C,SAAS,EACT,KAAK,CACN,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,WAAW,CACnB,wCAAwC,EACxC,SAAS,EACT,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,WAAmB,EAAE,QAAkB,EAAE;IACjE,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC9C,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find Prisma Client usage in TypeScript/JavaScript files using ripgrep.
|
|
3
|
+
* No TypeScript compilation or AST parsing — fast regex-based search only.
|
|
4
|
+
*/
|
|
5
|
+
export interface PrismaClientUsage {
|
|
6
|
+
file: string;
|
|
7
|
+
line: number;
|
|
8
|
+
model: string;
|
|
9
|
+
operation: string;
|
|
10
|
+
snippet: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Search for Prisma Client calls in project code.
|
|
14
|
+
* Uses ripgrep for fast search, then simple regex for extraction.
|
|
15
|
+
*
|
|
16
|
+
* @param projectRoot - Absolute path to project root
|
|
17
|
+
* @param modelName - Optional model name filter (e.g. "user")
|
|
18
|
+
*/
|
|
19
|
+
export declare function findPrismaClientUsage(projectRoot: string, modelName?: string): Promise<PrismaClientUsage[]>;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find Prisma Client usage in TypeScript/JavaScript files using ripgrep.
|
|
3
|
+
* No TypeScript compilation or AST parsing — fast regex-based search only.
|
|
4
|
+
*/
|
|
5
|
+
import { execFileSync } from 'node:child_process';
|
|
6
|
+
import * as path from 'node:path';
|
|
7
|
+
// Prisma Client operations we recognise
|
|
8
|
+
const PRISMA_OPERATIONS = [
|
|
9
|
+
'findUnique',
|
|
10
|
+
'findUniqueOrThrow',
|
|
11
|
+
'findFirst',
|
|
12
|
+
'findFirstOrThrow',
|
|
13
|
+
'findMany',
|
|
14
|
+
'create',
|
|
15
|
+
'createMany',
|
|
16
|
+
'createManyAndReturn',
|
|
17
|
+
'update',
|
|
18
|
+
'updateMany',
|
|
19
|
+
'upsert',
|
|
20
|
+
'delete',
|
|
21
|
+
'deleteMany',
|
|
22
|
+
'count',
|
|
23
|
+
'aggregate',
|
|
24
|
+
'groupBy',
|
|
25
|
+
'$queryRaw',
|
|
26
|
+
'$executeRaw',
|
|
27
|
+
'$transaction',
|
|
28
|
+
];
|
|
29
|
+
const OPERATION_PATTERN = PRISMA_OPERATIONS.join('|');
|
|
30
|
+
/**
|
|
31
|
+
* Search for Prisma Client calls in project code.
|
|
32
|
+
* Uses ripgrep for fast search, then simple regex for extraction.
|
|
33
|
+
*
|
|
34
|
+
* @param projectRoot - Absolute path to project root
|
|
35
|
+
* @param modelName - Optional model name filter (e.g. "user")
|
|
36
|
+
*/
|
|
37
|
+
export async function findPrismaClientUsage(projectRoot, modelName) {
|
|
38
|
+
// Build ripgrep pattern — escape modelName to prevent regex injection
|
|
39
|
+
const escapedModel = modelName ? modelName.toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, '\\$&') : '\\w+';
|
|
40
|
+
const pattern = `prisma\\.${escapedModel}\\.(${OPERATION_PATTERN})\\(`;
|
|
41
|
+
const rgArgs = [
|
|
42
|
+
'--json',
|
|
43
|
+
'--max-count=200',
|
|
44
|
+
'--type=ts',
|
|
45
|
+
'--type=js',
|
|
46
|
+
'-e',
|
|
47
|
+
pattern,
|
|
48
|
+
projectRoot,
|
|
49
|
+
];
|
|
50
|
+
let output;
|
|
51
|
+
try {
|
|
52
|
+
output = execFileSync('rg', rgArgs, {
|
|
53
|
+
encoding: 'utf-8',
|
|
54
|
+
maxBuffer: 10 * 1024 * 1024,
|
|
55
|
+
cwd: projectRoot,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
// ripgrep exits 1 when no matches
|
|
60
|
+
if (err.status === 1)
|
|
61
|
+
return [];
|
|
62
|
+
// rg not installed — return empty gracefully
|
|
63
|
+
if (err.code === 'ENOENT' || err.message?.includes('not found') || err.message?.includes('not recognized'))
|
|
64
|
+
return [];
|
|
65
|
+
throw err;
|
|
66
|
+
}
|
|
67
|
+
const results = [];
|
|
68
|
+
const lines = output.trim().split('\n');
|
|
69
|
+
for (const line of lines) {
|
|
70
|
+
if (!line)
|
|
71
|
+
continue;
|
|
72
|
+
let parsed;
|
|
73
|
+
try {
|
|
74
|
+
parsed = JSON.parse(line);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (parsed.type !== 'match')
|
|
80
|
+
continue;
|
|
81
|
+
const filePath = path.relative(projectRoot, parsed.data.path.text);
|
|
82
|
+
const lineNumber = parsed.data.line_number;
|
|
83
|
+
const snippet = parsed.data.lines.text.trim();
|
|
84
|
+
// Extract model and operation from the matched text
|
|
85
|
+
const matchText = parsed.data.submatches?.[0]?.match?.text ?? snippet;
|
|
86
|
+
const extracted = extractModelAndOperation(matchText, snippet);
|
|
87
|
+
if (!extracted)
|
|
88
|
+
continue;
|
|
89
|
+
results.push({
|
|
90
|
+
file: filePath,
|
|
91
|
+
line: lineNumber,
|
|
92
|
+
model: extracted.model,
|
|
93
|
+
operation: extracted.operation,
|
|
94
|
+
snippet,
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
return results;
|
|
98
|
+
}
|
|
99
|
+
function extractModelAndOperation(matchText, fallback) {
|
|
100
|
+
// Try to match prisma.<model>.<operation>(
|
|
101
|
+
const re = /prisma\.(\w+)\.(\w+)\(/;
|
|
102
|
+
const m = re.exec(matchText) ?? re.exec(fallback);
|
|
103
|
+
if (!m)
|
|
104
|
+
return null;
|
|
105
|
+
return { model: m[1], operation: m[2] };
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=client-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client-usage.js","sourceRoot":"","sources":["../../src/db/client-usage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema change proposal helpers for aria db migrate.
|
|
3
|
+
* Validates proposed schema content and generates diffs.
|
|
4
|
+
* Never executes prisma migrate commands.
|
|
5
|
+
*/
|
|
6
|
+
import type { MutationSummary } from '../context.js';
|
|
7
|
+
export interface SchemaChangeProposal {
|
|
8
|
+
diffId: string;
|
|
9
|
+
diff: string;
|
|
10
|
+
summary: MutationSummary;
|
|
11
|
+
schemaPath: string;
|
|
12
|
+
newContent: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Validate that content is parseable as a Prisma schema.
|
|
16
|
+
* Returns null on success, error message on failure.
|
|
17
|
+
*/
|
|
18
|
+
export declare function validateSchemaContent(content: string): string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Build a SchemaChangeProposal from old and new schema content.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildSchemaChangeProposal(schemaPath: string, oldContent: string, newContent: string): SchemaChangeProposal;
|
|
23
|
+
/**
|
|
24
|
+
* Return the manual migration commands the user should run after schema update.
|
|
25
|
+
*/
|
|
26
|
+
export declare function manualMigrationInstructions(packageManager?: string): string;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema change proposal helpers for aria db migrate.
|
|
3
|
+
* Validates proposed schema content and generates diffs.
|
|
4
|
+
* Never executes prisma migrate commands.
|
|
5
|
+
*/
|
|
6
|
+
import { createPatch } from 'diff';
|
|
7
|
+
import { parsePrismaSchemaContent } from './schema.js';
|
|
8
|
+
import { randomUUID } from 'node:crypto';
|
|
9
|
+
/**
|
|
10
|
+
* Validate that content is parseable as a Prisma schema.
|
|
11
|
+
* Returns null on success, error message on failure.
|
|
12
|
+
*/
|
|
13
|
+
export function validateSchemaContent(content) {
|
|
14
|
+
try {
|
|
15
|
+
parsePrismaSchemaContent(content);
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
catch (err) {
|
|
19
|
+
return err instanceof Error ? err.message : String(err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Build a SchemaChangeProposal from old and new schema content.
|
|
24
|
+
*/
|
|
25
|
+
export function buildSchemaChangeProposal(schemaPath, oldContent, newContent) {
|
|
26
|
+
const diff = createPatch(schemaPath, oldContent, newContent, 'current', 'proposed');
|
|
27
|
+
const diffId = randomUUID();
|
|
28
|
+
const summary = {
|
|
29
|
+
action: 'db_migrate_schema',
|
|
30
|
+
affectedFiles: [schemaPath],
|
|
31
|
+
commandsToRun: [],
|
|
32
|
+
migrations: [],
|
|
33
|
+
riskLevel: 'high',
|
|
34
|
+
reversible: true,
|
|
35
|
+
rollbackHints: [`git checkout -- ${schemaPath}`],
|
|
36
|
+
diffId,
|
|
37
|
+
};
|
|
38
|
+
return { diffId, diff, summary, schemaPath, newContent };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Return the manual migration commands the user should run after schema update.
|
|
42
|
+
*/
|
|
43
|
+
export function manualMigrationInstructions(packageManager = 'npx') {
|
|
44
|
+
const pm = packageManager === 'pnpm' ? 'pnpm' : packageManager === 'yarn' ? 'yarn' : 'npx';
|
|
45
|
+
return [
|
|
46
|
+
'',
|
|
47
|
+
'To apply this migration, run:',
|
|
48
|
+
'',
|
|
49
|
+
' Development:',
|
|
50
|
+
` ${pm} prisma migrate dev --name <migration_name>`,
|
|
51
|
+
'',
|
|
52
|
+
' Production:',
|
|
53
|
+
` ${pm} prisma migrate deploy`,
|
|
54
|
+
'',
|
|
55
|
+
'Aria does not run migrations automatically.',
|
|
56
|
+
'Review the generated SQL before applying to production.',
|
|
57
|
+
].join('\n');
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/db/migrate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAUzC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,IAAI,CAAC;QACH,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAkB,EAClB,UAAkB,EAClB,UAAkB;IAElB,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,MAAM,OAAO,GAAoB;QAC/B,MAAM,EAAE,mBAAmB;QAC3B,aAAa,EAAE,CAAC,UAAU,CAAC;QAC3B,aAAa,EAAE,EAAE;QACjB,UAAU,EAAE,EAAE;QACd,SAAS,EAAE,MAAM;QACjB,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,CAAC,mBAAmB,UAAU,EAAE,CAAC;QAChD,MAAM;KACP,CAAC;IAEF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B,CAAC,iBAAyB,KAAK;IACxE,MAAM,EAAE,GAAG,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3F,OAAO;QACL,EAAE;QACF,+BAA+B;QAC/B,EAAE;QACF,gBAAgB;QAChB,OAAO,EAAE,6CAA6C;QACtD,EAAE;QACF,eAAe;QACf,OAAO,EAAE,wBAAwB;QACjC,EAAE;QACF,6CAA6C;QAC7C,yDAAyD;KAC1D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prisma schema parser — wraps @mrleebo/prisma-ast to provide a clean typed interface.
|
|
3
|
+
* Schema-aware only: no database connections, no DATABASE_URL parsing.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
export declare const PrismaFieldSchema: z.ZodObject<{
|
|
7
|
+
name: z.ZodString;
|
|
8
|
+
type: z.ZodString;
|
|
9
|
+
isList: z.ZodBoolean;
|
|
10
|
+
isOptional: z.ZodBoolean;
|
|
11
|
+
isId: z.ZodBoolean;
|
|
12
|
+
isUnique: z.ZodBoolean;
|
|
13
|
+
isRelation: z.ZodBoolean;
|
|
14
|
+
relationName: z.ZodNullable<z.ZodString>;
|
|
15
|
+
relationFields: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
16
|
+
relationReferences: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
17
|
+
defaultValue: z.ZodNullable<z.ZodString>;
|
|
18
|
+
attributes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
19
|
+
}, z.core.$strip>;
|
|
20
|
+
export declare const PrismaModelSchema: z.ZodObject<{
|
|
21
|
+
name: z.ZodString;
|
|
22
|
+
fields: z.ZodArray<z.ZodObject<{
|
|
23
|
+
name: z.ZodString;
|
|
24
|
+
type: z.ZodString;
|
|
25
|
+
isList: z.ZodBoolean;
|
|
26
|
+
isOptional: z.ZodBoolean;
|
|
27
|
+
isId: z.ZodBoolean;
|
|
28
|
+
isUnique: z.ZodBoolean;
|
|
29
|
+
isRelation: z.ZodBoolean;
|
|
30
|
+
relationName: z.ZodNullable<z.ZodString>;
|
|
31
|
+
relationFields: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
32
|
+
relationReferences: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
33
|
+
defaultValue: z.ZodNullable<z.ZodString>;
|
|
34
|
+
attributes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
35
|
+
}, z.core.$strip>>;
|
|
36
|
+
indexes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
37
|
+
fields: z.ZodArray<z.ZodString>;
|
|
38
|
+
type: z.ZodEnum<{
|
|
39
|
+
index: "index";
|
|
40
|
+
unique: "unique";
|
|
41
|
+
fulltext: "fulltext";
|
|
42
|
+
}>;
|
|
43
|
+
name: z.ZodNullable<z.ZodString>;
|
|
44
|
+
}, z.core.$strip>>>;
|
|
45
|
+
documentation: z.ZodNullable<z.ZodString>;
|
|
46
|
+
}, z.core.$strip>;
|
|
47
|
+
export declare const PrismaEnumSchema: z.ZodObject<{
|
|
48
|
+
name: z.ZodString;
|
|
49
|
+
values: z.ZodArray<z.ZodString>;
|
|
50
|
+
documentation: z.ZodNullable<z.ZodString>;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
export declare const PrismaSchemaInfoSchema: z.ZodObject<{
|
|
53
|
+
path: z.ZodString;
|
|
54
|
+
datasourceProvider: z.ZodNullable<z.ZodString>;
|
|
55
|
+
models: z.ZodArray<z.ZodObject<{
|
|
56
|
+
name: z.ZodString;
|
|
57
|
+
fields: z.ZodArray<z.ZodObject<{
|
|
58
|
+
name: z.ZodString;
|
|
59
|
+
type: z.ZodString;
|
|
60
|
+
isList: z.ZodBoolean;
|
|
61
|
+
isOptional: z.ZodBoolean;
|
|
62
|
+
isId: z.ZodBoolean;
|
|
63
|
+
isUnique: z.ZodBoolean;
|
|
64
|
+
isRelation: z.ZodBoolean;
|
|
65
|
+
relationName: z.ZodNullable<z.ZodString>;
|
|
66
|
+
relationFields: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
67
|
+
relationReferences: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
68
|
+
defaultValue: z.ZodNullable<z.ZodString>;
|
|
69
|
+
attributes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
70
|
+
}, z.core.$strip>>;
|
|
71
|
+
indexes: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
72
|
+
fields: z.ZodArray<z.ZodString>;
|
|
73
|
+
type: z.ZodEnum<{
|
|
74
|
+
index: "index";
|
|
75
|
+
unique: "unique";
|
|
76
|
+
fulltext: "fulltext";
|
|
77
|
+
}>;
|
|
78
|
+
name: z.ZodNullable<z.ZodString>;
|
|
79
|
+
}, z.core.$strip>>>;
|
|
80
|
+
documentation: z.ZodNullable<z.ZodString>;
|
|
81
|
+
}, z.core.$strip>>;
|
|
82
|
+
enums: z.ZodArray<z.ZodObject<{
|
|
83
|
+
name: z.ZodString;
|
|
84
|
+
values: z.ZodArray<z.ZodString>;
|
|
85
|
+
documentation: z.ZodNullable<z.ZodString>;
|
|
86
|
+
}, z.core.$strip>>;
|
|
87
|
+
generators: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
88
|
+
name: z.ZodString;
|
|
89
|
+
provider: z.ZodString;
|
|
90
|
+
}, z.core.$strip>>>;
|
|
91
|
+
}, z.core.$strip>;
|
|
92
|
+
export type PrismaField = z.infer<typeof PrismaFieldSchema>;
|
|
93
|
+
export type PrismaModel = z.infer<typeof PrismaModelSchema>;
|
|
94
|
+
export type PrismaEnum = z.infer<typeof PrismaEnumSchema>;
|
|
95
|
+
export type PrismaSchemaInfo = z.infer<typeof PrismaSchemaInfoSchema>;
|
|
96
|
+
export declare function findSchemaPath(projectRoot: string): string | null;
|
|
97
|
+
/**
|
|
98
|
+
* Parse schema.prisma file into structured format.
|
|
99
|
+
* Returns null if no schema found.
|
|
100
|
+
* Throws on parse errors so callers can distinguish "no schema" from "bad schema".
|
|
101
|
+
*/
|
|
102
|
+
export declare function parsePrismaSchema(projectRoot: string): PrismaSchemaInfo | null;
|
|
103
|
+
/**
|
|
104
|
+
* Parse schema.prisma from raw content string (for testing / propose_schema_change).
|
|
105
|
+
*/
|
|
106
|
+
export declare function parsePrismaSchemaContent(content: string): PrismaSchemaInfo;
|