@deepagents/text2sql 0.12.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.
@@ -1 +1 @@
1
- {"version":3,"file":"column-stats.sqlserver.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlserver/column-stats.sqlserver.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,KAAK,0BAA0B,EAChC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,oBAAoB;;gBAGzD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,0BAA+B;cAK5C,YAAY,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAsDpC"}
1
+ {"version":3,"file":"column-stats.sqlserver.grounding.d.ts","sourceRoot":"","sources":["../../../../src/lib/adapters/sqlserver/column-stats.sqlserver.grounding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EACL,oBAAoB,EACpB,KAAK,0BAA0B,EAChC,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD;;GAEG;AACH,qBAAa,6BAA8B,SAAQ,oBAAoB;;gBAGzD,OAAO,EAAE,OAAO,EAAE,MAAM,GAAE,0BAA+B;cAK5C,YAAY,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;CAqDpC"}
@@ -770,7 +770,7 @@ function message(content) {
770
770
  } : content;
771
771
  return {
772
772
  id: message2.id,
773
- name: "message",
773
+ name: message2.role,
774
774
  data: "content",
775
775
  type: "message",
776
776
  persist: true,
@@ -792,6 +792,22 @@ function assistantText(content, options) {
792
792
  parts: [{ type: "text", text: content }]
793
793
  });
794
794
  }
795
+ var LAZY_ID = Symbol("lazy-id");
796
+ function isLazyFragment(fragment2) {
797
+ return LAZY_ID in fragment2;
798
+ }
799
+ function lastAssistantMessage(content) {
800
+ return {
801
+ name: "assistant",
802
+ type: "message",
803
+ persist: true,
804
+ data: "content",
805
+ [LAZY_ID]: {
806
+ type: "last-assistant",
807
+ content
808
+ }
809
+ };
810
+ }
795
811
  var ContextRenderer = class {
796
812
  options;
797
813
  constructor(options = {}) {
@@ -1288,6 +1304,12 @@ var ContextEngine = class {
1288
1304
  if (this.#pendingMessages.length === 0) {
1289
1305
  return;
1290
1306
  }
1307
+ for (let i = 0; i < this.#pendingMessages.length; i++) {
1308
+ const fragment2 = this.#pendingMessages[i];
1309
+ if (isLazyFragment(fragment2)) {
1310
+ this.#pendingMessages[i] = await this.#resolveLazyFragment(fragment2);
1311
+ }
1312
+ }
1291
1313
  let parentId = this.#branch.headMessageId;
1292
1314
  const now = Date.now();
1293
1315
  for (const fragment2 of this.#pendingMessages) {
@@ -1307,6 +1329,39 @@ var ContextEngine = class {
1307
1329
  this.#branch.headMessageId = parentId;
1308
1330
  this.#pendingMessages = [];
1309
1331
  }
1332
+ /**
1333
+ * Resolve a lazy fragment by finding the appropriate ID.
1334
+ */
1335
+ async #resolveLazyFragment(fragment2) {
1336
+ const lazy = fragment2[LAZY_ID];
1337
+ if (lazy.type === "last-assistant") {
1338
+ const lastId = await this.#getLastAssistantId();
1339
+ return assistantText(lazy.content, { id: lastId ?? crypto.randomUUID() });
1340
+ }
1341
+ throw new Error(`Unknown lazy fragment type: ${lazy.type}`);
1342
+ }
1343
+ /**
1344
+ * Find the most recent assistant message ID (pending or persisted).
1345
+ */
1346
+ async #getLastAssistantId() {
1347
+ for (let i = this.#pendingMessages.length - 1; i >= 0; i--) {
1348
+ const msg = this.#pendingMessages[i];
1349
+ if (msg.name === "assistant" && !isLazyFragment(msg)) {
1350
+ return msg.id;
1351
+ }
1352
+ }
1353
+ if (this.#branch?.headMessageId) {
1354
+ const chain = await this.#store.getMessageChain(
1355
+ this.#branch.headMessageId
1356
+ );
1357
+ for (let i = chain.length - 1; i >= 0; i--) {
1358
+ if (chain[i].name === "assistant") {
1359
+ return chain[i].id;
1360
+ }
1361
+ }
1362
+ }
1363
+ return void 0;
1364
+ }
1310
1365
  /**
1311
1366
  * Estimate token count and cost for the full context.
1312
1367
  *
@@ -1586,6 +1641,35 @@ var ContextEngine = class {
1586
1641
  consolidate() {
1587
1642
  return void 0;
1588
1643
  }
1644
+ /**
1645
+ * Extract skill path mappings from available_skills fragments.
1646
+ * Returns array of { host, sandbox } for mounting in sandbox filesystem.
1647
+ *
1648
+ * Reads the original `paths` configuration stored in fragment metadata
1649
+ * by the skills() fragment helper.
1650
+ *
1651
+ * @example
1652
+ * ```ts
1653
+ * const context = new ContextEngine({ store, chatId, userId })
1654
+ * .set(skills({ paths: [{ host: './skills', sandbox: '/skills' }] }));
1655
+ *
1656
+ * const mounts = context.getSkillMounts();
1657
+ * // [{ host: './skills', sandbox: '/skills' }]
1658
+ * ```
1659
+ */
1660
+ getSkillMounts() {
1661
+ const mounts = [];
1662
+ for (const fragment2 of this.#fragments) {
1663
+ if (fragment2.name === "available_skills" && fragment2.metadata && Array.isArray(fragment2.metadata.paths)) {
1664
+ for (const mapping of fragment2.metadata.paths) {
1665
+ if (typeof mapping === "object" && mapping !== null && typeof mapping.host === "string" && typeof mapping.sandbox === "string") {
1666
+ mounts.push({ host: mapping.host, sandbox: mapping.sandbox });
1667
+ }
1668
+ }
1669
+ }
1670
+ }
1671
+ return mounts;
1672
+ }
1589
1673
  /**
1590
1674
  * Inspect the full context state for debugging.
1591
1675
  * Returns a JSON-serializable object with context information.
@@ -1904,18 +1988,19 @@ var SqliteContextStore = class extends ContextStore {
1904
1988
  // Message Operations (Graph Nodes)
1905
1989
  // ==========================================================================
1906
1990
  async addMessage(message2) {
1991
+ const existingParent = message2.parentId === message2.id ? this.#db.prepare("SELECT parentId FROM messages WHERE id = ?").get(message2.id) : void 0;
1992
+ const parentId = message2.parentId === message2.id ? existingParent?.parentId ?? null : message2.parentId;
1907
1993
  this.#db.prepare(
1908
1994
  `INSERT INTO messages (id, chatId, parentId, name, type, data, createdAt)
1909
1995
  VALUES (?, ?, ?, ?, ?, ?, ?)
1910
1996
  ON CONFLICT(id) DO UPDATE SET
1911
- parentId = excluded.parentId,
1912
1997
  name = excluded.name,
1913
1998
  type = excluded.type,
1914
1999
  data = excluded.data`
1915
2000
  ).run(
1916
2001
  message2.id,
1917
2002
  message2.chatId,
1918
- message2.parentId,
2003
+ parentId,
1919
2004
  message2.name,
1920
2005
  message2.type ?? null,
1921
2006
  JSON.stringify(message2.data),
@@ -2383,13 +2468,9 @@ var Agent = class _Agent {
2383
2468
  writer.write({ type: "finish" });
2384
2469
  return;
2385
2470
  }
2386
- writer.write({
2387
- type: "text-delta",
2388
- id: generateId2(),
2389
- delta: ` ${failureFeedback}`
2390
- });
2471
+ writeText(writer, failureFeedback);
2391
2472
  const selfCorrectionText = accumulatedText + " " + failureFeedback;
2392
- context.set(assistantText(selfCorrectionText));
2473
+ context.set(lastAssistantMessage(selfCorrectionText));
2393
2474
  await context.save();
2394
2475
  currentResult = await this.#createRawStream(
2395
2476
  contextVariables,
@@ -2442,6 +2523,22 @@ var repairToolCall = async ({
2442
2523
  });
2443
2524
  return { ...toolCall, input: JSON.stringify(output) };
2444
2525
  };
2526
+ function writeText(writer, text) {
2527
+ const feedbackPartId = generateId2();
2528
+ writer.write({
2529
+ id: feedbackPartId,
2530
+ type: "text-start"
2531
+ });
2532
+ writer.write({
2533
+ id: feedbackPartId,
2534
+ type: "text-delta",
2535
+ delta: ` ${text}`
2536
+ });
2537
+ writer.write({
2538
+ id: feedbackPartId,
2539
+ type: "text-end"
2540
+ });
2541
+ }
2445
2542
 
2446
2543
  // packages/text2sql/src/lib/adapters/groundings/report.grounding.ts
2447
2544
  var ReportGrounding = class extends AbstractGrounding {
@@ -2713,9 +2810,7 @@ var SqlServerColumnStatsGrounding = class extends ColumnStatsGrounding {
2713
2810
  return false;
2714
2811
  }
2715
2812
  const normalized = type.toLowerCase();
2716
- return /int|real|numeric|float|decimal|date|time|bit|money/.test(
2717
- normalized
2718
- );
2813
+ return /int|real|numeric|float|decimal|date|time|money/.test(normalized);
2719
2814
  }
2720
2815
  };
2721
2816