@deepagents/text2sql 0.11.0 → 0.12.1

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 (54) hide show
  1. package/dist/index.d.ts +3 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1334 -491
  4. package/dist/index.js.map +4 -4
  5. package/dist/lib/adapters/groundings/index.js +2034 -50
  6. package/dist/lib/adapters/groundings/index.js.map +4 -4
  7. package/dist/lib/adapters/groundings/report.grounding.d.ts.map +1 -1
  8. package/dist/lib/adapters/mysql/index.js +2034 -50
  9. package/dist/lib/adapters/mysql/index.js.map +4 -4
  10. package/dist/lib/adapters/postgres/index.js +2034 -50
  11. package/dist/lib/adapters/postgres/index.js.map +4 -4
  12. package/dist/lib/adapters/spreadsheet/index.js +35 -49
  13. package/dist/lib/adapters/spreadsheet/index.js.map +4 -4
  14. package/dist/lib/adapters/sqlite/index.js +2034 -50
  15. package/dist/lib/adapters/sqlite/index.js.map +4 -4
  16. package/dist/lib/adapters/sqlserver/column-stats.sqlserver.grounding.d.ts.map +1 -1
  17. package/dist/lib/adapters/sqlserver/index.js +2035 -53
  18. package/dist/lib/adapters/sqlserver/index.js.map +4 -4
  19. package/dist/lib/agents/developer.agent.d.ts.map +1 -1
  20. package/dist/lib/agents/explainer.agent.d.ts +4 -5
  21. package/dist/lib/agents/explainer.agent.d.ts.map +1 -1
  22. package/dist/lib/agents/question.agent.d.ts.map +1 -1
  23. package/dist/lib/agents/result-tools.d.ts +37 -0
  24. package/dist/lib/agents/result-tools.d.ts.map +1 -0
  25. package/dist/lib/agents/sql.agent.d.ts +1 -1
  26. package/dist/lib/agents/sql.agent.d.ts.map +1 -1
  27. package/dist/lib/agents/teachables.agent.d.ts.map +1 -1
  28. package/dist/lib/agents/text2sql.agent.d.ts +0 -21
  29. package/dist/lib/agents/text2sql.agent.d.ts.map +1 -1
  30. package/dist/lib/checkpoint.d.ts +1 -1
  31. package/dist/lib/checkpoint.d.ts.map +1 -1
  32. package/dist/lib/instructions.d.ts +9 -28
  33. package/dist/lib/instructions.d.ts.map +1 -1
  34. package/dist/lib/sql.d.ts +1 -1
  35. package/dist/lib/sql.d.ts.map +1 -1
  36. package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts +6 -7
  37. package/dist/lib/synthesis/extractors/base-contextual-extractor.d.ts.map +1 -1
  38. package/dist/lib/synthesis/extractors/last-query-extractor.d.ts.map +1 -1
  39. package/dist/lib/synthesis/extractors/segmented-context-extractor.d.ts +0 -6
  40. package/dist/lib/synthesis/extractors/segmented-context-extractor.d.ts.map +1 -1
  41. package/dist/lib/synthesis/extractors/sql-extractor.d.ts.map +1 -1
  42. package/dist/lib/synthesis/index.js +2394 -2132
  43. package/dist/lib/synthesis/index.js.map +4 -4
  44. package/dist/lib/synthesis/synthesizers/breadth-evolver.d.ts.map +1 -1
  45. package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts +3 -3
  46. package/dist/lib/synthesis/synthesizers/depth-evolver.d.ts.map +1 -1
  47. package/dist/lib/synthesis/synthesizers/persona-generator.d.ts.map +1 -1
  48. package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts +1 -1
  49. package/dist/lib/synthesis/synthesizers/schema-synthesizer.d.ts.map +1 -1
  50. package/package.json +9 -15
  51. package/dist/lib/instructions.js +0 -432
  52. package/dist/lib/instructions.js.map +0 -7
  53. package/dist/lib/teach/teachings.d.ts +0 -11
  54. package/dist/lib/teach/teachings.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"breadth-evolver.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/synthesizers/breadth-evolver.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,UAAU,EAKhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAmGD;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,YAAY;;IAQ5C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IANjB;;;OAGG;gBAEO,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,EACtC,OAAO,EAAE,qBAAqB;IAMxC;;;OAGG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;CAkClD"}
1
+ {"version":3,"file":"breadth-evolver.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/synthesizers/breadth-evolver.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAWpD,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAGtD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA0GD;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,YAAY;;IAQ5C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IANjB;;;OAGG;gBAEO,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,EACtC,OAAO,EAAE,qBAAqB;IAMxC;;;OAGG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;CAyBlD"}
@@ -9,7 +9,7 @@ export type DepthTechnique = 'add-aggregation' | 'add-filter' | 'add-join' | 'ad
9
9
  export interface DepthEvolverOptions {
10
10
  techniques?: DepthTechnique[];
11
11
  count?: number;
12
- model?: AgentModel;
12
+ model: AgentModel;
13
13
  concurrency?: number;
14
14
  }
15
15
  /**
@@ -25,13 +25,13 @@ export declare class DepthEvolver extends PairProducer {
25
25
  #private;
26
26
  private source;
27
27
  private adapter;
28
- private options?;
28
+ private options;
29
29
  /**
30
30
  * @param source - Source pairs or producer to evolve
31
31
  * @param adapter - Database adapter for SQL generation
32
32
  * @param options - Evolution options including techniques, count, and concurrency
33
33
  */
34
- constructor(source: PairProducer | ExtractedPair[], adapter: Adapter, options?: DepthEvolverOptions | undefined);
34
+ constructor(source: PairProducer | ExtractedPair[], adapter: Adapter, options: DepthEvolverOptions);
35
35
  /**
36
36
  * Yields evolved pairs as each completes (streaming pattern).
37
37
  * Removes batch barrier - no longer waits for all evolutions before yielding.
@@ -1 +1 @@
1
- {"version":3,"file":"depth-evolver.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/synthesizers/depth-evolver.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,UAAU,EAAyB,MAAM,mBAAmB,CAAC;AAE3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,YAAY,GACZ,UAAU,GACV,eAAe,GACf,cAAc,CAAC;AA6CnB,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAiFD;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,YAAY;;IAS1C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO,CAAC;IARlB;;;;OAIG;gBAEO,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,EACtC,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,mBAAmB,YAAA;IAMvC;;;OAGG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;CAgFlD"}
1
+ {"version":3,"file":"depth-evolver.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/synthesizers/depth-evolver.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAWpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE/D;;;GAGG;AACH,MAAM,MAAM,cAAc,GACtB,iBAAiB,GACjB,YAAY,GACZ,UAAU,GACV,eAAe,GACf,cAAc,CAAC;AA6CnB,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAyFD;;;;;;;;GAQG;AACH,qBAAa,YAAa,SAAQ,YAAY;;IAS1C,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IARjB;;;;OAIG;gBAEO,MAAM,EAAE,YAAY,GAAG,aAAa,EAAE,EACtC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,mBAAmB;IAMtC;;;OAGG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;CA2ElD"}
@@ -1 +1 @@
1
- {"version":3,"file":"persona-generator.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/synthesizers/persona-generator.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAEL,KAAK,eAAe,EAOrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAyBD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,eAAe,EAAE,EAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,OAAO,EAAE,CAAC,CAyFpB"}
1
+ {"version":3,"file":"persona-generator.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/synthesizers/persona-generator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAEL,KAAK,eAAe,EAQrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAc,KAAK,OAAO,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAyBD;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,eAAe,EAAE,eAAe,EAAE,EAClC,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,CAAC,OAAO,EAAE,CAAC,CA2FpB"}
@@ -9,7 +9,7 @@ export interface SchemaSynthesizerOptions {
9
9
  complexity?: QuestionComplexity | QuestionComplexity[];
10
10
  personas?: Persona[];
11
11
  teachings?: ContextFragment[];
12
- model?: AgentModel;
12
+ model: AgentModel;
13
13
  concurrency?: number;
14
14
  }
15
15
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"schema-synthesizer.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/synthesizers/schema-synthesizer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;IACvD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;;IAU/C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IANjB;;;OAGG;gBAEO,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,wBAAwB;IAW3C;;;;;OAKG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;CAuFlD"}
1
+ {"version":3,"file":"schema-synthesizer.d.ts","sourceRoot":"","sources":["../../../../src/lib/synthesis/synthesizers/schema-synthesizer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EACL,KAAK,kBAAkB,EAExB,MAAM,gCAAgC,CAAC;AAMxC,OAAO,EAAE,KAAK,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;IACvD,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AACD;;;;;;GAMG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;;IAU/C,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,OAAO;IANjB;;;OAGG;gBAEO,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,wBAAwB;IAW3C;;;;;OAKG;IACI,OAAO,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;CAuFlD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deepagents/text2sql",
3
- "version": "0.11.0",
3
+ "version": "0.12.1",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -23,12 +23,6 @@
23
23
  "import": "./dist/index.js",
24
24
  "default": "./dist/index.js"
25
25
  },
26
- "./instructions": {
27
- "development": "./src/lib/instructions.ts",
28
- "types": "./dist/lib/instructions.d.ts",
29
- "import": "./dist/lib/instructions.js",
30
- "default": "./dist/lib/instructions.js"
31
- },
32
26
  "./grounding": {
33
27
  "development": "./src/lib/adapters/groundings/index.ts",
34
28
  "types": "./dist/lib/adapters/groundings/index.d.ts",
@@ -81,21 +75,21 @@
81
75
  "access": "public"
82
76
  },
83
77
  "dependencies": {
84
- "@ai-sdk/groq": "2.0.26",
85
- "@deepagents/agent": "0.11.0",
86
- "@deepagents/context": "0.11.0",
87
- "@deepagents/toolbox": "0.11.0",
88
- "ai": "^5.0.102",
78
+ "@ai-sdk/groq": "^3.0.10",
79
+ "@deepagents/agent": "0.12.1",
80
+ "@deepagents/context": "0.12.1",
81
+ "@deepagents/toolbox": "0.12.1",
82
+ "ai": "^6.0.39",
89
83
  "autoevals": "^0.0.131",
84
+ "bash-tool": "^1.1.0",
90
85
  "dedent": "1.7.0",
91
86
  "evalite": "^0.19.0",
87
+ "just-bash": "^2.5.2",
92
88
  "openai": "5.12.2",
93
89
  "p-limit": "^6.2.0",
94
- "pluralize": "^8.0.0",
95
- "uuid": "^13.0.0",
96
90
  "zod": "^3.25.76 || ^4.0.0",
97
91
  "chalk": "^5.6.0",
98
- "@ai-sdk/openai": "2.0.76",
92
+ "@ai-sdk/openai": "^3.0.12",
99
93
  "nano-spawn": "^1.0.3",
100
94
  "p-retry": "^7.1.1",
101
95
  "pg": "^8.16.3",
@@ -1,432 +0,0 @@
1
- // packages/context/dist/index.js
2
- import { encode } from "gpt-tokenizer";
3
- import { generateId } from "ai";
4
- import pluralize from "pluralize";
5
- import { titlecase } from "stringcase";
6
- import { defineCommand } from "just-bash";
7
- import spawn from "nano-spawn";
8
- import "bash-tool";
9
- import spawn2 from "nano-spawn";
10
- import {
11
- createBashTool
12
- } from "bash-tool";
13
- import YAML from "yaml";
14
- import { DatabaseSync } from "node:sqlite";
15
- import {
16
- Output,
17
- convertToModelMessages,
18
- createUIMessageStream,
19
- generateId as generateId2,
20
- generateText,
21
- smoothStream,
22
- stepCountIs,
23
- streamText
24
- } from "ai";
25
- import chalk from "chalk";
26
- import "zod";
27
- import "@deepagents/agent";
28
- function isFragment(data) {
29
- return typeof data === "object" && data !== null && "name" in data && "data" in data && typeof data.name === "string";
30
- }
31
- function isFragmentObject(data) {
32
- return typeof data === "object" && data !== null && !Array.isArray(data) && !isFragment(data);
33
- }
34
- function fragment(name, ...children) {
35
- return {
36
- name,
37
- data: children
38
- };
39
- }
40
- function role(content) {
41
- return {
42
- name: "role",
43
- data: content
44
- };
45
- }
46
- var ContextRenderer = class {
47
- options;
48
- constructor(options = {}) {
49
- this.options = options;
50
- }
51
- /**
52
- * Check if data is a primitive (string, number, boolean).
53
- */
54
- isPrimitive(data) {
55
- return typeof data === "string" || typeof data === "number" || typeof data === "boolean";
56
- }
57
- /**
58
- * Group fragments by name for groupFragments option.
59
- */
60
- groupByName(fragments) {
61
- const groups = /* @__PURE__ */ new Map();
62
- for (const fragment2 of fragments) {
63
- const existing = groups.get(fragment2.name) ?? [];
64
- existing.push(fragment2);
65
- groups.set(fragment2.name, existing);
66
- }
67
- return groups;
68
- }
69
- /**
70
- * Template method - dispatches value to appropriate handler.
71
- */
72
- renderValue(key, value, ctx) {
73
- if (value == null) {
74
- return "";
75
- }
76
- if (isFragment(value)) {
77
- return this.renderFragment(value, ctx);
78
- }
79
- if (Array.isArray(value)) {
80
- return this.renderArray(key, value, ctx);
81
- }
82
- if (isFragmentObject(value)) {
83
- return this.renderObject(key, value, ctx);
84
- }
85
- return this.renderPrimitive(key, String(value), ctx);
86
- }
87
- /**
88
- * Render all entries of an object.
89
- */
90
- renderEntries(data, ctx) {
91
- return Object.entries(data).map(([key, value]) => this.renderValue(key, value, ctx)).filter(Boolean);
92
- }
93
- };
94
- var XmlRenderer = class extends ContextRenderer {
95
- render(fragments) {
96
- return fragments.map((f) => this.#renderTopLevel(f)).filter(Boolean).join("\n");
97
- }
98
- #renderTopLevel(fragment2) {
99
- if (this.isPrimitive(fragment2.data)) {
100
- return this.#leafRoot(fragment2.name, String(fragment2.data));
101
- }
102
- if (Array.isArray(fragment2.data)) {
103
- return this.#renderArray(fragment2.name, fragment2.data, 0);
104
- }
105
- if (isFragment(fragment2.data)) {
106
- const child = this.renderFragment(fragment2.data, { depth: 1, path: [] });
107
- return this.#wrap(fragment2.name, [child]);
108
- }
109
- return this.#wrap(
110
- fragment2.name,
111
- this.renderEntries(fragment2.data, { depth: 1, path: [] })
112
- );
113
- }
114
- #renderArray(name, items, depth) {
115
- const fragmentItems = items.filter(isFragment);
116
- const nonFragmentItems = items.filter((item) => !isFragment(item));
117
- const children = [];
118
- for (const item of nonFragmentItems) {
119
- if (item != null) {
120
- children.push(
121
- this.#leaf(pluralize.singular(name), String(item), depth + 1)
122
- );
123
- }
124
- }
125
- if (this.options.groupFragments && fragmentItems.length > 0) {
126
- const groups = this.groupByName(fragmentItems);
127
- for (const [groupName, groupFragments] of groups) {
128
- const groupChildren = groupFragments.map(
129
- (frag) => this.renderFragment(frag, { depth: depth + 2, path: [] })
130
- );
131
- const pluralName = pluralize.plural(groupName);
132
- children.push(this.#wrapIndented(pluralName, groupChildren, depth + 1));
133
- }
134
- } else {
135
- for (const frag of fragmentItems) {
136
- children.push(
137
- this.renderFragment(frag, { depth: depth + 1, path: [] })
138
- );
139
- }
140
- }
141
- return this.#wrap(name, children);
142
- }
143
- #leafRoot(tag, value) {
144
- const safe = this.#escape(value);
145
- if (safe.includes("\n")) {
146
- return `<${tag}>
147
- ${this.#indent(safe, 2)}
148
- </${tag}>`;
149
- }
150
- return `<${tag}>${safe}</${tag}>`;
151
- }
152
- renderFragment(fragment2, ctx) {
153
- const { name, data } = fragment2;
154
- if (this.isPrimitive(data)) {
155
- return this.#leaf(name, String(data), ctx.depth);
156
- }
157
- if (isFragment(data)) {
158
- const child = this.renderFragment(data, { ...ctx, depth: ctx.depth + 1 });
159
- return this.#wrapIndented(name, [child], ctx.depth);
160
- }
161
- if (Array.isArray(data)) {
162
- return this.#renderArrayIndented(name, data, ctx.depth);
163
- }
164
- const children = this.renderEntries(data, { ...ctx, depth: ctx.depth + 1 });
165
- return this.#wrapIndented(name, children, ctx.depth);
166
- }
167
- #renderArrayIndented(name, items, depth) {
168
- const fragmentItems = items.filter(isFragment);
169
- const nonFragmentItems = items.filter((item) => !isFragment(item));
170
- const children = [];
171
- for (const item of nonFragmentItems) {
172
- if (item != null) {
173
- children.push(
174
- this.#leaf(pluralize.singular(name), String(item), depth + 1)
175
- );
176
- }
177
- }
178
- if (this.options.groupFragments && fragmentItems.length > 0) {
179
- const groups = this.groupByName(fragmentItems);
180
- for (const [groupName, groupFragments] of groups) {
181
- const groupChildren = groupFragments.map(
182
- (frag) => this.renderFragment(frag, { depth: depth + 2, path: [] })
183
- );
184
- const pluralName = pluralize.plural(groupName);
185
- children.push(this.#wrapIndented(pluralName, groupChildren, depth + 1));
186
- }
187
- } else {
188
- for (const frag of fragmentItems) {
189
- children.push(
190
- this.renderFragment(frag, { depth: depth + 1, path: [] })
191
- );
192
- }
193
- }
194
- return this.#wrapIndented(name, children, depth);
195
- }
196
- renderPrimitive(key, value, ctx) {
197
- return this.#leaf(key, value, ctx.depth);
198
- }
199
- renderArray(key, items, ctx) {
200
- if (!items.length) {
201
- return "";
202
- }
203
- const itemTag = pluralize.singular(key);
204
- const children = items.filter((item) => item != null).map((item) => this.#leaf(itemTag, String(item), ctx.depth + 1));
205
- return this.#wrapIndented(key, children, ctx.depth);
206
- }
207
- renderObject(key, obj, ctx) {
208
- const children = this.renderEntries(obj, { ...ctx, depth: ctx.depth + 1 });
209
- return this.#wrapIndented(key, children, ctx.depth);
210
- }
211
- #escape(value) {
212
- if (value == null) {
213
- return "";
214
- }
215
- return value.replaceAll(/&/g, "&amp;").replaceAll(/</g, "&lt;").replaceAll(/>/g, "&gt;").replaceAll(/"/g, "&quot;").replaceAll(/'/g, "&apos;");
216
- }
217
- #indent(text, spaces) {
218
- if (!text.trim()) {
219
- return "";
220
- }
221
- const padding = " ".repeat(spaces);
222
- return text.split("\n").map((line) => line.length ? padding + line : padding).join("\n");
223
- }
224
- #leaf(tag, value, depth) {
225
- const safe = this.#escape(value);
226
- const pad = " ".repeat(depth);
227
- if (safe.includes("\n")) {
228
- return `${pad}<${tag}>
229
- ${this.#indent(safe, (depth + 1) * 2)}
230
- ${pad}</${tag}>`;
231
- }
232
- return `${pad}<${tag}>${safe}</${tag}>`;
233
- }
234
- #wrap(tag, children) {
235
- const content = children.filter(Boolean).join("\n");
236
- if (!content) {
237
- return "";
238
- }
239
- return `<${tag}>
240
- ${content}
241
- </${tag}>`;
242
- }
243
- #wrapIndented(tag, children, depth) {
244
- const content = children.filter(Boolean).join("\n");
245
- if (!content) {
246
- return "";
247
- }
248
- const pad = " ".repeat(depth);
249
- return `${pad}<${tag}>
250
- ${content}
251
- ${pad}</${tag}>`;
252
- }
253
- };
254
- function term(name, definition) {
255
- return {
256
- name: "term",
257
- data: { name, definition }
258
- };
259
- }
260
- function hint(text) {
261
- return {
262
- name: "hint",
263
- data: text
264
- };
265
- }
266
- function guardrail(input) {
267
- return {
268
- name: "guardrail",
269
- data: {
270
- rule: input.rule,
271
- ...input.reason && { reason: input.reason },
272
- ...input.action && { action: input.action }
273
- }
274
- };
275
- }
276
- function explain(input) {
277
- return {
278
- name: "explain",
279
- data: {
280
- concept: input.concept,
281
- explanation: input.explanation,
282
- ...input.therefore && { therefore: input.therefore }
283
- }
284
- };
285
- }
286
- function example(input) {
287
- return {
288
- name: "example",
289
- data: {
290
- question: input.question,
291
- answer: input.answer,
292
- ...input.note && { note: input.note }
293
- }
294
- };
295
- }
296
- function clarification(input) {
297
- return {
298
- name: "clarification",
299
- data: {
300
- when: input.when,
301
- ask: input.ask,
302
- reason: input.reason
303
- }
304
- };
305
- }
306
- function workflow(input) {
307
- return {
308
- name: "workflow",
309
- data: {
310
- task: input.task,
311
- steps: input.steps,
312
- ...input.triggers?.length && { triggers: input.triggers },
313
- ...input.notes && { notes: input.notes }
314
- }
315
- };
316
- }
317
- function quirk(input) {
318
- return {
319
- name: "quirk",
320
- data: {
321
- issue: input.issue,
322
- workaround: input.workaround
323
- }
324
- };
325
- }
326
- function styleGuide(input) {
327
- return {
328
- name: "styleGuide",
329
- data: {
330
- prefer: input.prefer,
331
- ...input.never && { never: input.never },
332
- ...input.always && { always: input.always }
333
- }
334
- };
335
- }
336
- function analogy(input) {
337
- return {
338
- name: "analogy",
339
- data: {
340
- concepts: input.concepts,
341
- relationship: input.relationship,
342
- ...input.insight && { insight: input.insight },
343
- ...input.therefore && { therefore: input.therefore },
344
- ...input.pitfall && { pitfall: input.pitfall }
345
- }
346
- };
347
- }
348
- function glossary(entries) {
349
- return {
350
- name: "glossary",
351
- data: Object.entries(entries).map(([term2, expression]) => ({
352
- term: term2,
353
- expression
354
- }))
355
- };
356
- }
357
- function identity(input) {
358
- return {
359
- name: "identity",
360
- data: {
361
- ...input.name && { name: input.name },
362
- ...input.role && { role: input.role }
363
- }
364
- };
365
- }
366
- function persona(input) {
367
- return {
368
- name: "persona",
369
- data: {
370
- name: input.name,
371
- role: input.role,
372
- ...input.tone && { tone: input.tone }
373
- }
374
- };
375
- }
376
- function alias(term2, meaning) {
377
- return {
378
- name: "alias",
379
- data: { term: term2, meaning }
380
- };
381
- }
382
- function preference(aspect, value) {
383
- return {
384
- name: "preference",
385
- data: { aspect, value }
386
- };
387
- }
388
- function userContext(description) {
389
- return {
390
- name: "userContext",
391
- data: description
392
- };
393
- }
394
- function correction(subject, clarification2) {
395
- return {
396
- name: "correction",
397
- data: { subject, clarification: clarification2 }
398
- };
399
- }
400
-
401
- // packages/text2sql/src/lib/instructions.ts
402
- function toInstructions(tag, ...fragments) {
403
- if (fragments.length === 0) {
404
- return "";
405
- }
406
- const renderer = new XmlRenderer({ groupFragments: true });
407
- const wrapped = fragment(tag, ...fragments);
408
- return renderer.render([wrapped]);
409
- }
410
- export {
411
- alias,
412
- analogy,
413
- clarification,
414
- correction,
415
- example,
416
- explain,
417
- fragment,
418
- glossary,
419
- guardrail,
420
- hint,
421
- identity,
422
- persona,
423
- preference,
424
- quirk,
425
- role,
426
- styleGuide,
427
- term,
428
- toInstructions,
429
- userContext,
430
- workflow
431
- };
432
- //# sourceMappingURL=instructions.js.map