askdb 1.0.0-beta.48 → 1.0.0-beta.49

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.
Files changed (45) hide show
  1. package/dist/ask.d.ts +15 -0
  2. package/dist/ask.d.ts.map +1 -0
  3. package/dist/ask.js +168 -0
  4. package/dist/ask.js.map +1 -0
  5. package/dist/bundle.d.ts +10 -0
  6. package/dist/bundle.d.ts.map +1 -0
  7. package/dist/bundle.js +51 -0
  8. package/dist/bundle.js.map +1 -0
  9. package/dist/cli-error.d.ts +10 -0
  10. package/dist/cli-error.d.ts.map +1 -0
  11. package/dist/cli-error.js +39 -0
  12. package/dist/cli-error.js.map +1 -0
  13. package/dist/cli.js +27 -308
  14. package/dist/cli.js.map +1 -1
  15. package/dist/command.d.ts +56 -0
  16. package/dist/command.d.ts.map +1 -0
  17. package/dist/command.js +139 -0
  18. package/dist/command.js.map +1 -0
  19. package/dist/dispatch.d.ts +6 -0
  20. package/dist/dispatch.d.ts.map +1 -0
  21. package/dist/dispatch.js +65 -0
  22. package/dist/dispatch.js.map +1 -0
  23. package/dist/init.d.ts +33 -20
  24. package/dist/init.d.ts.map +1 -1
  25. package/dist/init.js +273 -591
  26. package/dist/init.js.map +1 -1
  27. package/dist/introspect.d.ts +21 -1
  28. package/dist/introspect.d.ts.map +1 -1
  29. package/dist/introspect.js +57 -156
  30. package/dist/introspect.js.map +1 -1
  31. package/dist/logger.d.ts +3 -0
  32. package/dist/logger.d.ts.map +1 -1
  33. package/dist/logger.js +34 -1
  34. package/dist/logger.js.map +1 -1
  35. package/dist/prisma-install.d.ts +1 -1
  36. package/dist/prisma-install.js +1 -1
  37. package/dist/rag.d.ts +31 -0
  38. package/dist/rag.d.ts.map +1 -1
  39. package/dist/rag.js +175 -185
  40. package/dist/rag.js.map +1 -1
  41. package/dist/version.d.ts +1 -1
  42. package/dist/version.d.ts.map +1 -1
  43. package/dist/version.js +1 -1
  44. package/dist/version.js.map +1 -1
  45. package/package.json +13 -14
@@ -0,0 +1,65 @@
1
+ import { askCommand, runAskCli } from "./ask.js";
2
+ import { bundleCommand, runBundleCli } from "./bundle.js";
3
+ import { formatOptionSections, GENERAL_OPTION_LINES, HELP_FLAGS, VERSION_FLAGS } from "./command.js";
4
+ import { labelled } from "./error-values.js";
5
+ import { initCommand, runInitCli } from "./init.js";
6
+ import { introspectCommand, runIntrospectCli } from "./introspect.js";
7
+ import { ragCommand, runRagCli } from "./rag.js";
8
+ import { readCliVersion } from "./version.js";
9
+ async function runStudio(argv) {
10
+ // Studio owns config loading and its own help: a missing config opens the setup wizard.
11
+ const { runStudioBin } = await import("@askdb/studio");
12
+ return runStudioBin(argv);
13
+ }
14
+ const COMMANDS = [
15
+ { name: "init", summary: initCommand().summary, run: runInitCli },
16
+ { name: "introspect", summary: introspectCommand().summary, run: runIntrospectCli },
17
+ { name: "studio", summary: "Start the local browser UI for Schema v2 enrichment", run: runStudio },
18
+ { name: "enrich", summary: "Open Studio for Schema v2 enrichment (alias of `askdb studio`)", run: runStudio },
19
+ { name: "bundle", summary: bundleCommand().summary, run: runBundleCli },
20
+ { name: "ask", summary: askCommand().summary, run: runAskCli },
21
+ { name: "rag", summary: ragCommand().summary, run: runRagCli },
22
+ ];
23
+ function formatTopLevelHelp() {
24
+ return [
25
+ "AskDB — natural language → validated SQL for your database",
26
+ "",
27
+ "Usage:",
28
+ " askdb <command> [options]",
29
+ " askdb help <command> Same as askdb <command> --help",
30
+ "",
31
+ ...formatOptionSections(new Map([
32
+ ["Commands", COMMANDS.map((command) => ({ usage: command.name, help: command.summary }))],
33
+ ["Options", GENERAL_OPTION_LINES],
34
+ ])),
35
+ ].join("\n");
36
+ }
37
+ /**
38
+ * `askdb <command> …`, `askdb help <command>`, `--help` and `--version`. Returns the exit code.
39
+ * With no command, prints the help to stderr and returns 1.
40
+ */
41
+ export async function runCli(argv) {
42
+ const [first, ...rest] = argv;
43
+ if (first === undefined) {
44
+ process.stderr.write(formatTopLevelHelp());
45
+ return 1;
46
+ }
47
+ if (HELP_FLAGS.includes(first) || (first === "help" && rest.length === 0)) {
48
+ process.stdout.write(formatTopLevelHelp());
49
+ return 0;
50
+ }
51
+ if (VERSION_FLAGS.includes(first)) {
52
+ process.stdout.write(`${readCliVersion()}\n`);
53
+ return 0;
54
+ }
55
+ if (first === "help")
56
+ return runCli([rest[0], "--help"]);
57
+ const command = COMMANDS.find((candidate) => candidate.name === first);
58
+ if (!command) {
59
+ const kind = first.startsWith("-") ? "Unknown option" : "Unknown command";
60
+ process.stderr.write(`${labelled(kind, first)}. Run \`askdb --help\` for the commands.\n`);
61
+ return 1;
62
+ }
63
+ return command.run(rest);
64
+ }
65
+ //# sourceMappingURL=dispatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../src/dispatch.ts"],"names":[],"mappings":"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"}
package/dist/init.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- import { type AskDbAiProviderId } from "@askdb/config";
1
+ import { type AskDbAiProviderId, type AskDbRagStore } from "@askdb/config";
2
+ import { type AskDbScaffoldPlan, type PackageManager } from "@askdb/config/scaffold";
3
+ import { type CommandSpec } from "./command.js";
2
4
  export type InitAnswers = {
3
5
  database: "postgres" | "mysql" | "sqlite" | "sqlserver" | "prisma";
4
6
  connectionEnv?: string;
@@ -8,7 +10,7 @@ export type InitAnswers = {
8
10
  aiProvider: AskDbAiProviderId;
9
11
  aiKeyEnv: string;
10
12
  aiModelEnv?: string;
11
- ragStore: "file" | "memory" | "pgvector";
13
+ ragStore: AskDbRagStore;
12
14
  pgvectorEnv?: string;
13
15
  studioExecute: {
14
16
  enabled: false;
@@ -38,9 +40,12 @@ export type InitPrompter = {
38
40
  default?: boolean;
39
41
  }): Promise<boolean>;
40
42
  };
41
- /** Every id `--ai-provider` accepts; `cli.ts` builds its help text from this list too. */
42
- export declare const VALID_AI_PROVIDERS: ("openai" | "azure" | "foundry" | "anthropic" | "google" | "gateway")[];
43
- export declare function renderInitConfig(answers: InitAnswers): string;
43
+ /**
44
+ * The config, `.env.example` and installs for `answers`, from `@askdb/config/scaffold`'s
45
+ * planner (shared with Studio's setup wizard). A bad answer fails with an error that names
46
+ * its flag, before anything is written.
47
+ */
48
+ export declare function planInitScaffold(answers: InitAnswers, specs: InitDepSpecs): AskDbScaffoldPlan;
44
49
  type InitAnswerOverrides = Partial<{
45
50
  database: InitAnswers["database"];
46
51
  connectionEnv: string;
@@ -58,23 +63,10 @@ type InitAnswerOverrides = Partial<{
58
63
  studioExecuteSqliteFile: string;
59
64
  }>;
60
65
  export declare function resolveDefaultInitAnswers(overrides?: InitAnswerOverrides): InitAnswers;
61
- export type InitInstallPlan = {
62
- packages: string[];
63
- labels: string[];
64
- /** Dependencies whose install scripts pnpm must be told to run (`pnpm add --allow-build=<name>`). */
65
- allowBuilds: string[];
66
- };
67
66
  export type InitDepSpecs = {
68
67
  configSpec: string;
69
68
  prismaSpec: string;
70
69
  };
71
- export declare function buildInitInstallPlan(answers: InitAnswers, specs: InitDepSpecs): InitInstallPlan;
72
- /** Walk upward from `startDir` to find a directory containing `package.json`. */
73
- export declare function findNearestPackageJsonDir(startDir: string): string | undefined;
74
- /** Monorepo / workspace root — avoid mutating root `package.json` from `askdb init`. */
75
- export declare function isLikelyWorkspaceRoot(packageDir: string): boolean;
76
- export type PackageManager = "pnpm" | "npm" | "yarn" | "bun";
77
- export declare function detectPackageManager(packageDir: string): PackageManager;
78
70
  /**
79
71
  * The versions `askdb init` installs: `@askdb/config` and `@askdb/prisma` at the versions
80
72
  * this CLI was built with. Published, those are its `@askdb/config` dependency and the floor
@@ -83,7 +75,28 @@ export declare function detectPackageManager(packageDir: string): PackageManager
83
75
  export declare function resolveInitDepSpecs(): InitDepSpecs;
84
76
  /** Runs the package manager's add command; `allowBuilds` are the pnpm build approvals it passes. */
85
77
  type InstallFn = (pm: PackageManager, packageDir: string, packages: string[], allowBuilds: string[]) => boolean;
86
- export declare function runWizard(prompter: InitPrompter): Promise<InitAnswers | null>;
87
- export declare function runInitCli(argv: readonly string[], _installer?: InstallFn): Promise<number>;
78
+ type InitOptions = {
79
+ force: boolean;
80
+ path: string;
81
+ skipInstall: boolean;
82
+ yes: boolean;
83
+ interactive: boolean | undefined;
84
+ noInteractive: boolean;
85
+ database?: InitAnswers["database"];
86
+ connectionEnv?: string;
87
+ sqliteFile?: string;
88
+ prismaSchema?: string;
89
+ schemaOut?: string;
90
+ aiProvider?: InitAnswers["aiProvider"];
91
+ aiKeyEnv?: string;
92
+ aiModelEnv?: string;
93
+ ragStore?: InitAnswers["ragStore"];
94
+ pgvectorEnv?: string;
95
+ studioExecute?: boolean;
96
+ };
97
+ /** `askdb init`, installing packages with `installer`. It never reads askdb.config. */
98
+ export declare function initCommand(installer?: InstallFn): CommandSpec<InitOptions>;
99
+ export declare function runWizard(prompter: InitPrompter): Promise<InitAnswers>;
100
+ export declare function runInitCli(argv: readonly string[], installer?: InstallFn): Promise<number>;
88
101
  export {};
89
102
  //# sourceMappingURL=init.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAMA,OAAO,EAAwC,KAAK,iBAAiB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACjH,OAAO,EAYL,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEpB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAc,KAAK,WAAW,EAAa,MAAM,cAAc,CAAC;AAKvE,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IACnE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EACT;QAAE,OAAO,EAAE,KAAK,CAAA;KAAE,GAClB;QACE,OAAO,EAAE,IAAI,CAAC;QACd,QAAQ,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;QACxD,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACP,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE;QAC7B,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,CAAC,CAAA;SAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,EAAE,CAAC,CAAC;KACb,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;KAC7C,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtB,CAAC;AAqEF;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,iBAAiB,CAO7F;AAED,KAAK,mBAAmB,GAAG,OAAO,CAAC;IACjC,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,qBAAqB,EAAE,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;IACrE,0BAA0B,EAAE,MAAM,CAAC;IACnC,uBAAuB,EAAE,MAAM,CAAC;CACjC,CAAC,CAAC;AAEH,wBAAgB,yBAAyB,CAAC,SAAS,GAAE,mBAAwB,GAAG,WAAW,CA0C1F;AAID,MAAM,MAAM,YAAY,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtE;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAUlD;AAeD,oGAAoG;AACpG,KAAK,SAAS,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC;AAShH,KAAK,WAAW,GAAG;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;IACb,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAoHF,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,SAAS,GAAE,SAA4B,GAAG,WAAW,CAAC,WAAW,CAAC,CAgC7F;AAOD,wBAAsB,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA2I5E;AA6BD,wBAAsB,UAAU,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhG"}