@tianshu-ai/tianshu 0.67.1 → 0.68.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.
Files changed (83) hide show
  1. package/node_modules/@tianshu-ai/plugin-sdk/dist/index.d.ts +1 -0
  2. package/node_modules/@tianshu-ai/plugin-sdk/dist/index.d.ts.map +1 -1
  3. package/node_modules/@tianshu-ai/plugin-sdk/dist/index.js +1 -0
  4. package/node_modules/@tianshu-ai/plugin-sdk/dist/index.js.map +1 -1
  5. package/node_modules/@tianshu-ai/plugin-sdk/dist/toon.d.ts +36 -0
  6. package/node_modules/@tianshu-ai/plugin-sdk/dist/toon.d.ts.map +1 -0
  7. package/node_modules/@tianshu-ai/plugin-sdk/dist/toon.js +88 -0
  8. package/node_modules/@tianshu-ai/plugin-sdk/dist/toon.js.map +1 -0
  9. package/node_modules/@tianshu-ai/plugin-sdk/src/index.ts +1 -0
  10. package/node_modules/@tianshu-ai/plugin-sdk/src/toon.ts +84 -0
  11. package/package.json +1 -1
  12. package/packages/plugin-sdk/dist/index.d.ts +1 -0
  13. package/packages/plugin-sdk/dist/index.d.ts.map +1 -1
  14. package/packages/plugin-sdk/dist/index.js +1 -0
  15. package/packages/plugin-sdk/dist/index.js.map +1 -1
  16. package/packages/plugin-sdk/dist/toon.d.ts +36 -0
  17. package/packages/plugin-sdk/dist/toon.d.ts.map +1 -0
  18. package/packages/plugin-sdk/dist/toon.js +88 -0
  19. package/packages/plugin-sdk/dist/toon.js.map +1 -0
  20. package/packages/server/builtinConfig/plugins/datasource/manifest.json +1 -1
  21. package/packages/server/dist/chat/agent-tool-adapter.d.ts.map +1 -1
  22. package/packages/server/dist/chat/agent-tool-adapter.js +13 -1
  23. package/packages/server/dist/chat/agent-tool-adapter.js.map +1 -1
  24. package/packages/server/dist/chat/handler.d.ts.map +1 -1
  25. package/packages/server/dist/chat/handler.js +56 -2
  26. package/packages/server/dist/chat/handler.js.map +1 -1
  27. package/packages/server/dist/chat/host-tools/recall-tools.d.ts.map +1 -1
  28. package/packages/server/dist/chat/host-tools/recall-tools.js +3 -4
  29. package/packages/server/dist/chat/host-tools/recall-tools.js.map +1 -1
  30. package/packages/server/dist/chat/host-tools/solution-tool.d.ts.map +1 -1
  31. package/packages/server/dist/chat/host-tools/solution-tool.js +5 -4
  32. package/packages/server/dist/chat/host-tools/solution-tool.js.map +1 -1
  33. package/packages/web/dist/assets/DataSourceConfigForm-DZwpjn9T.js +1 -0
  34. package/packages/web/dist/assets/{bundle-web-CCSCC2uj.js → bundle-web-GZ-GMV8k.js} +1 -1
  35. package/packages/web/dist/assets/{index-3Rb4XL9Q.js → index-DF_F7aWZ.js} +6 -5
  36. package/packages/web/dist/assets/{react-force-graph-2d-DZFwZCFu.js → react-force-graph-2d-BkjVkSQz.js} +1 -1
  37. package/packages/web/dist/index.html +1 -1
  38. package/plugins/board/dist/server.d.ts.map +1 -1
  39. package/plugins/board/dist/server.js +4 -1
  40. package/plugins/board/dist/server.js.map +2 -2
  41. package/plugins/datasource/dist/client.d.ts.map +1 -1
  42. package/plugins/datasource/dist/client.js +3 -1
  43. package/plugins/datasource/dist/client.js.map +1 -1
  44. package/plugins/datasource/dist/connection-pool.d.ts +5 -5
  45. package/plugins/datasource/dist/connection-pool.d.ts.map +1 -1
  46. package/plugins/datasource/dist/connection-pool.js +34 -20
  47. package/plugins/datasource/dist/connection-pool.js.map +1 -1
  48. package/plugins/datasource/dist/drivers/index.d.ts.map +1 -1
  49. package/plugins/datasource/dist/drivers/index.js +4 -0
  50. package/plugins/datasource/dist/drivers/index.js.map +1 -1
  51. package/plugins/datasource/dist/drivers/interface.d.ts +3 -3
  52. package/plugins/datasource/dist/drivers/interface.d.ts.map +1 -1
  53. package/plugins/datasource/dist/drivers/mysql.js +1 -1
  54. package/plugins/datasource/dist/drivers/mysql.js.map +1 -1
  55. package/plugins/datasource/dist/drivers/neo4j.d.ts.map +1 -1
  56. package/plugins/datasource/dist/drivers/neo4j.js +2 -1
  57. package/plugins/datasource/dist/drivers/neo4j.js.map +1 -1
  58. package/plugins/datasource/dist/drivers/rest.d.ts +19 -0
  59. package/plugins/datasource/dist/drivers/rest.d.ts.map +1 -0
  60. package/plugins/datasource/dist/drivers/rest.js +312 -0
  61. package/plugins/datasource/dist/drivers/rest.js.map +1 -0
  62. package/plugins/datasource/dist/server.d.ts.map +1 -1
  63. package/plugins/datasource/dist/server.js +29 -5
  64. package/plugins/datasource/dist/server.js.map +1 -1
  65. package/plugins/datasource/dist/tools/execute.d.ts.map +1 -1
  66. package/plugins/datasource/dist/tools/execute.js +13 -7
  67. package/plugins/datasource/dist/tools/execute.js.map +1 -1
  68. package/plugins/datasource/dist/tools/list.d.ts.map +1 -1
  69. package/plugins/datasource/dist/tools/list.js +2 -2
  70. package/plugins/datasource/dist/tools/list.js.map +1 -1
  71. package/plugins/datasource/dist/tools/query.d.ts.map +1 -1
  72. package/plugins/datasource/dist/tools/query.js +27 -7
  73. package/plugins/datasource/dist/tools/query.js.map +1 -1
  74. package/plugins/datasource/dist/tools/schema.d.ts.map +1 -1
  75. package/plugins/datasource/dist/tools/schema.js +2 -2
  76. package/plugins/datasource/dist/tools/schema.js.map +1 -1
  77. package/plugins/datasource/manifest.json +1 -1
  78. package/plugins/wiki/dist/server.js +2 -1
  79. package/plugins/wiki/dist/server.js.map +2 -2
  80. package/plugins/wiki/dist/sessions.d.ts.map +1 -1
  81. package/plugins/wiki/dist/sessions.js +5 -1
  82. package/plugins/wiki/dist/sessions.js.map +1 -1
  83. package/packages/web/dist/assets/DataSourceConfigForm-h83wW9V0.js +0 -1
@@ -11,5 +11,6 @@ export * from "./channel-bindings.js";
11
11
  export * from "./wiki-ingest.js";
12
12
  export * from "./workforce-snapshot.js";
13
13
  export * from "./solution.js";
14
+ export * from "./toon.js";
14
15
  export { McpToolset, textOfMcpContent, extractMcpUiResources, type McpUiResource, type McpEndpointResolver, type McpToolDescriptor, type McpToolFilter, type McpToolsetEntry, type McpToolsetOptions, type McpToolsetSnapshot, type ToolsetProvider, } from "./mcp-toolset.js";
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC"}
@@ -21,5 +21,6 @@ export * from "./channel-bindings.js";
21
21
  export * from "./wiki-ingest.js";
22
22
  export * from "./workforce-snapshot.js";
23
23
  export * from "./solution.js";
24
+ export * from "./toon.js";
24
25
  export { McpToolset, textOfMcpContent, extractMcpUiResources, } from "./mcp-toolset.js";
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,qEAAqE;AACrE,iCAAiC;AACjC,EAAE;AACF,wEAAwE;AACxE,iEAAiE;AACjE,0BAA0B;AAE1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,GAStB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,qEAAqE;AACrE,iCAAiC;AACjC,EAAE;AACF,wEAAwE;AACxE,iEAAiE;AACjE,0BAA0B;AAE1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,GAStB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * TOON — Token-Optimised Object Notation.
3
+ *
4
+ * Compact human/LLM-readable serialisation that drops JSON's quotes,
5
+ * braces, and brackets. Designed for agent tool results where the
6
+ * consumer is an LLM, not a JSON parser.
7
+ *
8
+ * toon({ id: 1, user: { name: "Yu" }, tags: [1,2] })
9
+ * → "id:1, user.name:Yu, tags:1, 2"
10
+ *
11
+ * Rules:
12
+ * - Plain objects → "key:value" pairs, comma-separated.
13
+ * - Nested objects → dot-notation keys (user.name:Yu).
14
+ * - Arrays → comma-separated values (no brackets).
15
+ * - Strings without commas/colons → unquoted.
16
+ * - Strings with commas/colons → double-quoted.
17
+ * - null/undefined → empty string.
18
+ * - Max depth 4 to prevent runaway recursion.
19
+ */
20
+ /**
21
+ * Convert any value to TOON string for tool result text.
22
+ *
23
+ * For arrays of objects (table-like data), use `toonRows()` which
24
+ * produces a more readable multi-line format.
25
+ */
26
+ export declare function toon(data: unknown): string;
27
+ /**
28
+ * Format an array of objects as a compact multi-line table.
29
+ * First line is column headers, rest are values.
30
+ * Falls back to toon() for non-tabular data.
31
+ *
32
+ * toonRows([{ name: "a", score: 1 }, { name: "b", score: 2 }])
33
+ * → "name | score\na | 1\nb | 2"
34
+ */
35
+ export declare function toonRows(rows: unknown[], columns?: string[]): string;
36
+ //# sourceMappingURL=toon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toon.d.ts","sourceRoot":"","sources":["../src/toon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyBH;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAc1C;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAUpE"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * TOON — Token-Optimised Object Notation.
3
+ *
4
+ * Compact human/LLM-readable serialisation that drops JSON's quotes,
5
+ * braces, and brackets. Designed for agent tool results where the
6
+ * consumer is an LLM, not a JSON parser.
7
+ *
8
+ * toon({ id: 1, user: { name: "Yu" }, tags: [1,2] })
9
+ * → "id:1, user.name:Yu, tags:1, 2"
10
+ *
11
+ * Rules:
12
+ * - Plain objects → "key:value" pairs, comma-separated.
13
+ * - Nested objects → dot-notation keys (user.name:Yu).
14
+ * - Arrays → comma-separated values (no brackets).
15
+ * - Strings without commas/colons → unquoted.
16
+ * - Strings with commas/colons → double-quoted.
17
+ * - null/undefined → empty string.
18
+ * - Max depth 4 to prevent runaway recursion.
19
+ */
20
+ const NEEDS_QUOTE = /[,:\n]/;
21
+ function formatValue(v, depth) {
22
+ if (v === null || v === undefined)
23
+ return "";
24
+ if (Array.isArray(v))
25
+ return v.map((item) => formatValue(item, depth)).join(", ");
26
+ if (typeof v === "object")
27
+ return toonPairs(v, "", depth);
28
+ const s = String(v);
29
+ return NEEDS_QUOTE.test(s) ? `"${s}"` : s;
30
+ }
31
+ function toonPairs(obj, prefix, depth) {
32
+ const parts = [];
33
+ for (const [k, v] of Object.entries(obj)) {
34
+ const key = prefix ? `${prefix}.${k}` : k;
35
+ if (v !== null && typeof v === "object" && !Array.isArray(v) && depth < 4) {
36
+ parts.push(toonPairs(v, key, depth + 1));
37
+ }
38
+ else {
39
+ parts.push(`${key}:${formatValue(v, depth + 1)}`);
40
+ }
41
+ }
42
+ return parts.join(", ");
43
+ }
44
+ /**
45
+ * Convert any value to TOON string for tool result text.
46
+ *
47
+ * For arrays of objects (table-like data), use `toonRows()` which
48
+ * produces a more readable multi-line format.
49
+ */
50
+ export function toon(data) {
51
+ if (data === null || data === undefined)
52
+ return "";
53
+ if (Array.isArray(data)) {
54
+ if (data.length === 0)
55
+ return "[]";
56
+ if (typeof data[0] === "object" && data[0] !== null) {
57
+ // Array of objects → one line per item
58
+ return data.map((item) => toon(item)).join("\n");
59
+ }
60
+ return data.map((item) => formatValue(item, 0)).join(", ");
61
+ }
62
+ if (typeof data === "object") {
63
+ return toonPairs(data, "", 0);
64
+ }
65
+ return String(data);
66
+ }
67
+ /**
68
+ * Format an array of objects as a compact multi-line table.
69
+ * First line is column headers, rest are values.
70
+ * Falls back to toon() for non-tabular data.
71
+ *
72
+ * toonRows([{ name: "a", score: 1 }, { name: "b", score: 2 }])
73
+ * → "name | score\na | 1\nb | 2"
74
+ */
75
+ export function toonRows(rows, columns) {
76
+ if (rows.length === 0)
77
+ return "(empty)";
78
+ if (typeof rows[0] !== "object" || rows[0] === null)
79
+ return toon(rows);
80
+ const cols = columns ?? [...new Set(rows.flatMap((r) => Object.keys(r)))];
81
+ const header = cols.join(" | ");
82
+ const body = rows.map((r) => {
83
+ const obj = r;
84
+ return cols.map((c) => formatValue(obj[c], 0)).join(" | ");
85
+ });
86
+ return [header, ...body].join("\n");
87
+ }
88
+ //# sourceMappingURL=toon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toon.js","sourceRoot":"","sources":["../src/toon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,WAAW,GAAG,QAAQ,CAAC;AAE7B,SAAS,WAAW,CAAC,CAAU,EAAE,KAAa;IAC5C,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClF,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,CAA4B,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACrF,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,GAA4B,EAAE,MAAc,EAAE,KAAa;IAC5E,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC1E,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAA4B,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,IAAI,CAAC,IAAa;IAChC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,uCAAuC;YACvC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,SAAS,CAAC,IAA+B,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAe,EAAE,OAAkB;IAC1D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,CAA4B,CAAC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
@@ -22,6 +22,7 @@ export * from "./channel-bindings.js";
22
22
  export * from "./wiki-ingest.js";
23
23
  export * from "./workforce-snapshot.js";
24
24
  export * from "./solution.js";
25
+ export * from "./toon.js";
25
26
  export {
26
27
  McpToolset,
27
28
  textOfMcpContent,
@@ -0,0 +1,84 @@
1
+ /**
2
+ * TOON — Token-Optimised Object Notation.
3
+ *
4
+ * Compact human/LLM-readable serialisation that drops JSON's quotes,
5
+ * braces, and brackets. Designed for agent tool results where the
6
+ * consumer is an LLM, not a JSON parser.
7
+ *
8
+ * toon({ id: 1, user: { name: "Yu" }, tags: [1,2] })
9
+ * → "id:1, user.name:Yu, tags:1, 2"
10
+ *
11
+ * Rules:
12
+ * - Plain objects → "key:value" pairs, comma-separated.
13
+ * - Nested objects → dot-notation keys (user.name:Yu).
14
+ * - Arrays → comma-separated values (no brackets).
15
+ * - Strings without commas/colons → unquoted.
16
+ * - Strings with commas/colons → double-quoted.
17
+ * - null/undefined → empty string.
18
+ * - Max depth 4 to prevent runaway recursion.
19
+ */
20
+
21
+ const NEEDS_QUOTE = /[,:\n]/;
22
+
23
+ function formatValue(v: unknown, depth: number): string {
24
+ if (v === null || v === undefined) return "";
25
+ if (Array.isArray(v)) return v.map((item) => formatValue(item, depth)).join(", ");
26
+ if (typeof v === "object") return toonPairs(v as Record<string, unknown>, "", depth);
27
+ const s = String(v);
28
+ return NEEDS_QUOTE.test(s) ? `"${s}"` : s;
29
+ }
30
+
31
+ function toonPairs(obj: Record<string, unknown>, prefix: string, depth: number): string {
32
+ const parts: string[] = [];
33
+ for (const [k, v] of Object.entries(obj)) {
34
+ const key = prefix ? `${prefix}.${k}` : k;
35
+ if (v !== null && typeof v === "object" && !Array.isArray(v) && depth < 4) {
36
+ parts.push(toonPairs(v as Record<string, unknown>, key, depth + 1));
37
+ } else {
38
+ parts.push(`${key}:${formatValue(v, depth + 1)}`);
39
+ }
40
+ }
41
+ return parts.join(", ");
42
+ }
43
+
44
+ /**
45
+ * Convert any value to TOON string for tool result text.
46
+ *
47
+ * For arrays of objects (table-like data), use `toonRows()` which
48
+ * produces a more readable multi-line format.
49
+ */
50
+ export function toon(data: unknown): string {
51
+ if (data === null || data === undefined) return "";
52
+ if (Array.isArray(data)) {
53
+ if (data.length === 0) return "[]";
54
+ if (typeof data[0] === "object" && data[0] !== null) {
55
+ // Array of objects → one line per item
56
+ return data.map((item) => toon(item)).join("\n");
57
+ }
58
+ return data.map((item) => formatValue(item, 0)).join(", ");
59
+ }
60
+ if (typeof data === "object") {
61
+ return toonPairs(data as Record<string, unknown>, "", 0);
62
+ }
63
+ return String(data);
64
+ }
65
+
66
+ /**
67
+ * Format an array of objects as a compact multi-line table.
68
+ * First line is column headers, rest are values.
69
+ * Falls back to toon() for non-tabular data.
70
+ *
71
+ * toonRows([{ name: "a", score: 1 }, { name: "b", score: 2 }])
72
+ * → "name | score\na | 1\nb | 2"
73
+ */
74
+ export function toonRows(rows: unknown[], columns?: string[]): string {
75
+ if (rows.length === 0) return "(empty)";
76
+ if (typeof rows[0] !== "object" || rows[0] === null) return toon(rows);
77
+ const cols = columns ?? [...new Set(rows.flatMap((r) => Object.keys(r as object)))];
78
+ const header = cols.join(" | ");
79
+ const body = rows.map((r) => {
80
+ const obj = r as Record<string, unknown>;
81
+ return cols.map((c) => formatValue(obj[c], 0)).join(" | ");
82
+ });
83
+ return [header, ...body].join("\n");
84
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tianshu-ai/tianshu",
3
- "version": "0.67.1",
3
+ "version": "0.68.0",
4
4
  "description": "An open AI agent platform with a sidecar browser. Built in public.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/tianshu-ai/tianshu",
@@ -11,5 +11,6 @@ export * from "./channel-bindings.js";
11
11
  export * from "./wiki-ingest.js";
12
12
  export * from "./workforce-snapshot.js";
13
13
  export * from "./solution.js";
14
+ export * from "./toon.js";
14
15
  export { McpToolset, textOfMcpContent, extractMcpUiResources, type McpUiResource, type McpEndpointResolver, type McpToolDescriptor, type McpToolFilter, type McpToolsetEntry, type McpToolsetOptions, type McpToolsetSnapshot, type ToolsetProvider, } from "./mcp-toolset.js";
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAWA,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC"}
@@ -21,5 +21,6 @@ export * from "./channel-bindings.js";
21
21
  export * from "./wiki-ingest.js";
22
22
  export * from "./workforce-snapshot.js";
23
23
  export * from "./solution.js";
24
+ export * from "./toon.js";
24
25
  export { McpToolset, textOfMcpContent, extractMcpUiResources, } from "./mcp-toolset.js";
25
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,qEAAqE;AACrE,iCAAiC;AACjC,EAAE;AACF,wEAAwE;AACxE,iEAAiE;AACjE,0BAA0B;AAE1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,GAStB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,mEAAmE;AACnE,oEAAoE;AACpE,qEAAqE;AACrE,iCAAiC;AACjC,EAAE;AACF,wEAAwE;AACxE,iEAAiE;AACjE,0BAA0B;AAE1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,qBAAqB,GAStB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * TOON — Token-Optimised Object Notation.
3
+ *
4
+ * Compact human/LLM-readable serialisation that drops JSON's quotes,
5
+ * braces, and brackets. Designed for agent tool results where the
6
+ * consumer is an LLM, not a JSON parser.
7
+ *
8
+ * toon({ id: 1, user: { name: "Yu" }, tags: [1,2] })
9
+ * → "id:1, user.name:Yu, tags:1, 2"
10
+ *
11
+ * Rules:
12
+ * - Plain objects → "key:value" pairs, comma-separated.
13
+ * - Nested objects → dot-notation keys (user.name:Yu).
14
+ * - Arrays → comma-separated values (no brackets).
15
+ * - Strings without commas/colons → unquoted.
16
+ * - Strings with commas/colons → double-quoted.
17
+ * - null/undefined → empty string.
18
+ * - Max depth 4 to prevent runaway recursion.
19
+ */
20
+ /**
21
+ * Convert any value to TOON string for tool result text.
22
+ *
23
+ * For arrays of objects (table-like data), use `toonRows()` which
24
+ * produces a more readable multi-line format.
25
+ */
26
+ export declare function toon(data: unknown): string;
27
+ /**
28
+ * Format an array of objects as a compact multi-line table.
29
+ * First line is column headers, rest are values.
30
+ * Falls back to toon() for non-tabular data.
31
+ *
32
+ * toonRows([{ name: "a", score: 1 }, { name: "b", score: 2 }])
33
+ * → "name | score\na | 1\nb | 2"
34
+ */
35
+ export declare function toonRows(rows: unknown[], columns?: string[]): string;
36
+ //# sourceMappingURL=toon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toon.d.ts","sourceRoot":"","sources":["../src/toon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyBH;;;;;GAKG;AACH,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAc1C;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAUpE"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * TOON — Token-Optimised Object Notation.
3
+ *
4
+ * Compact human/LLM-readable serialisation that drops JSON's quotes,
5
+ * braces, and brackets. Designed for agent tool results where the
6
+ * consumer is an LLM, not a JSON parser.
7
+ *
8
+ * toon({ id: 1, user: { name: "Yu" }, tags: [1,2] })
9
+ * → "id:1, user.name:Yu, tags:1, 2"
10
+ *
11
+ * Rules:
12
+ * - Plain objects → "key:value" pairs, comma-separated.
13
+ * - Nested objects → dot-notation keys (user.name:Yu).
14
+ * - Arrays → comma-separated values (no brackets).
15
+ * - Strings without commas/colons → unquoted.
16
+ * - Strings with commas/colons → double-quoted.
17
+ * - null/undefined → empty string.
18
+ * - Max depth 4 to prevent runaway recursion.
19
+ */
20
+ const NEEDS_QUOTE = /[,:\n]/;
21
+ function formatValue(v, depth) {
22
+ if (v === null || v === undefined)
23
+ return "";
24
+ if (Array.isArray(v))
25
+ return v.map((item) => formatValue(item, depth)).join(", ");
26
+ if (typeof v === "object")
27
+ return toonPairs(v, "", depth);
28
+ const s = String(v);
29
+ return NEEDS_QUOTE.test(s) ? `"${s}"` : s;
30
+ }
31
+ function toonPairs(obj, prefix, depth) {
32
+ const parts = [];
33
+ for (const [k, v] of Object.entries(obj)) {
34
+ const key = prefix ? `${prefix}.${k}` : k;
35
+ if (v !== null && typeof v === "object" && !Array.isArray(v) && depth < 4) {
36
+ parts.push(toonPairs(v, key, depth + 1));
37
+ }
38
+ else {
39
+ parts.push(`${key}:${formatValue(v, depth + 1)}`);
40
+ }
41
+ }
42
+ return parts.join(", ");
43
+ }
44
+ /**
45
+ * Convert any value to TOON string for tool result text.
46
+ *
47
+ * For arrays of objects (table-like data), use `toonRows()` which
48
+ * produces a more readable multi-line format.
49
+ */
50
+ export function toon(data) {
51
+ if (data === null || data === undefined)
52
+ return "";
53
+ if (Array.isArray(data)) {
54
+ if (data.length === 0)
55
+ return "[]";
56
+ if (typeof data[0] === "object" && data[0] !== null) {
57
+ // Array of objects → one line per item
58
+ return data.map((item) => toon(item)).join("\n");
59
+ }
60
+ return data.map((item) => formatValue(item, 0)).join(", ");
61
+ }
62
+ if (typeof data === "object") {
63
+ return toonPairs(data, "", 0);
64
+ }
65
+ return String(data);
66
+ }
67
+ /**
68
+ * Format an array of objects as a compact multi-line table.
69
+ * First line is column headers, rest are values.
70
+ * Falls back to toon() for non-tabular data.
71
+ *
72
+ * toonRows([{ name: "a", score: 1 }, { name: "b", score: 2 }])
73
+ * → "name | score\na | 1\nb | 2"
74
+ */
75
+ export function toonRows(rows, columns) {
76
+ if (rows.length === 0)
77
+ return "(empty)";
78
+ if (typeof rows[0] !== "object" || rows[0] === null)
79
+ return toon(rows);
80
+ const cols = columns ?? [...new Set(rows.flatMap((r) => Object.keys(r)))];
81
+ const header = cols.join(" | ");
82
+ const body = rows.map((r) => {
83
+ const obj = r;
84
+ return cols.map((c) => formatValue(obj[c], 0)).join(" | ");
85
+ });
86
+ return [header, ...body].join("\n");
87
+ }
88
+ //# sourceMappingURL=toon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toon.js","sourceRoot":"","sources":["../src/toon.ts"],"names":[],"mappings":"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"}
@@ -36,7 +36,7 @@
36
36
  "systemPromptFragments": [
37
37
  {
38
38
  "id": "datasource-tools",
39
- "text": "Data Source tools: ds_list (list connections), ds_query (read query), ds_execute (write query), ds_schema (inspect schema), ds_panel (push query to UI panel).\n\nWhen creating Board apps (HTML dashboards), use the injected board.ds() API to query databases directly from the board:\n\n const { connections } = await board.dsList()\n // connections: [{name, type, description}]\n\n const { columns, rows, rowCount, error } = await board.ds(source, query, params?)\n // source: data source name from dsList()\n // query: SQL or Cypher string\n // params: optional query parameters object\n\nExample:\n const { rows } = await board.ds('helu-graph', 'MATCH (p:Product) RETURN p.title, p.price LIMIT 10');\n rows.forEach(r => console.log(r['p.title']));\n\nboard.ds() and board.dsList() are available globally on window.board in any board app. No API keys needed."
39
+ "text": "Data Source tools: ds_list (list connections), ds_query (read query), ds_execute (write query), ds_schema (inspect schema), ds_panel (push query to UI panel).\nSupported types: MySQL (SQL), Neo4j (Cypher), REST API (HTTP method + path, e.g. 'GET /users?limit=10').\n\nWhen creating Board apps (HTML dashboards), use the injected board.ds() API to query databases directly from the board:\n\n const { connections } = await board.dsList()\n // connections: [{name, type, description}]\n\n const { columns, rows, rowCount, error } = await board.ds(source, query, params?)\n // source: data source name from dsList()\n // query: SQL or Cypher string\n // params: optional query parameters object\n\nExample:\n const { rows } = await board.ds('helu-graph', 'MATCH (p:Product) RETURN p.title, p.price LIMIT 10');\n rows.forEach(r => console.log(r['p.title']));\n\nboard.ds() and board.dsList() are available globally on window.board in any board app. No API keys needed."
40
40
  }
41
41
  ],
42
42
  "apiRoutes": [
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tool-adapter.d.ts","sourceRoot":"","sources":["../../src/chat/agent-tool-adapter.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,SAAS,IAAI,WAAW,EAEzB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb;;;gEAG4D;IAC5D,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;AAsBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAoB/D;AAED,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;mEAC+D;IAC/D,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACjC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAoH7D;AAED;;qEAEqE;AACrE,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAIvD"}
1
+ {"version":3,"file":"agent-tool-adapter.d.ts","sourceRoot":"","sources":["../../src/chat/agent-tool-adapter.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACV,SAAS,IAAI,WAAW,EAEzB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb;;;gEAG4D;IAC5D,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvD;AAsBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CA+B/D;AAED,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB;mEAC+D;IAC/D,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACjC;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAoH7D;AAED;;qEAEqE;AACrE,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAIvD"}
@@ -22,6 +22,7 @@
22
22
  // "soft failures" via the ToolResultMessage's `isError` flag, but
23
23
  // tianshu plugins want them to be visible to the LLM verbatim.
24
24
  // Tracked in workers.md §7.2.
25
+ import { toon } from "@tianshu-ai/plugin-sdk";
25
26
  /** Normalise a plugin-returned `images` field (each entry may be a
26
27
  * `{ base64, mimeType }` or a data: URL string) into the internal
27
28
  * shape. Silently drops malformed entries. */
@@ -66,6 +67,17 @@ export function normaliseToolResult(out) {
66
67
  const r = out;
67
68
  return { ok: r.ok, text: r.text, images: extractImages(out) };
68
69
  }
70
+ // pi-style { content: [{ type: "text", text }], isError? } — extract
71
+ // text from content blocks instead of JSON-stringifying the wrapper.
72
+ if (out && typeof out === "object" && Array.isArray(out.content)) {
73
+ const r = out;
74
+ const text = r.content
75
+ .filter((b) => b.type === "text" && typeof b.text === "string")
76
+ .map((b) => b.text)
77
+ .join("\n");
78
+ const ok = r.isError !== true;
79
+ return { ok, text, images: extractImages(out) };
80
+ }
69
81
  if (out && typeof out === "object") {
70
82
  const r = out;
71
83
  let ok = true;
@@ -75,7 +87,7 @@ export function normaliseToolResult(out) {
75
87
  ok = r.exit_code === 0;
76
88
  else if (typeof r.state === "string")
77
89
  ok = r.state !== "error" && r.state !== "failed";
78
- return { ok, text: JSON.stringify(out) };
90
+ return { ok, text: toon(out) };
79
91
  }
80
92
  return { ok: true, text: String(out ?? "") };
81
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tool-adapter.js","sourceRoot":"","sources":["../../src/chat/agent-tool-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-tool-adapter.js","sourceRoot":"","sources":["../../src/chat/agent-tool-adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"AAqDA,OAAO,EACL,mBAAmB,EACnB,cAAc,EAGd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,CAAC;AAGF,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAQL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AA6B1B,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAOL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAYvB,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AA6B1B,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAkQ7D;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;4BAGwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAC9C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+vClE;AAsWD,wBAAgB,uBAAuB,CACrC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC3D,2BAA2B,CAAC,EAAE,MAAM,GACnC,MAAM,CAuCR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3E;AA0ED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA0Ef;AA2XD,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAkC9C;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/chat/handler.ts"],"names":[],"mappings":"AAqDA,OAAO,EACL,mBAAmB,EACnB,cAAc,EAGd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC9B,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,CAAC;AAGF,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,2BAA2B,EAC3B,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,KAAK,oBAAoB,GAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAQL,KAAK,aAAa,EACnB,MAAM,kBAAkB,CAAC;AA6B1B,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAOL,KAAK,WAAW,EAEjB,MAAM,eAAe,CAAC;AAYvB,OAAO,EAGL,KAAK,SAAS,EAEd,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AA6B1B,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAqQ7D;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,6BAA6B,EAAE,cAAc,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;4BAGwB;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAC9C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAwzClE;AAsWD,wBAAgB,uBAAuB,CACrC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EAC3D,2BAA2B,CAAC,EAAE,MAAM,GACnC,MAAM,CAuCR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,MAAM,EAAE,CAgB3E;AA0ED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CA0Ef;AA2XD,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAkC9C;AAGD,YAAY,EAAE,WAAW,EAAE,CAAC"}
@@ -195,6 +195,7 @@ export function attachChatHandler(opts) {
195
195
  modelId: parsed.modelId,
196
196
  signal: aborter.signal,
197
197
  }).catch((err) => {
198
+ console.error(`[handler] runPrompt FAILED`, err?.stack ?? err);
198
199
  send({
199
200
  type: "stream_error",
200
201
  reason: err instanceof Error ? err.message : String(err),
@@ -220,6 +221,7 @@ export function attachChatHandler(opts) {
220
221
  session: explicitSession,
221
222
  voiceMode: parsed.voiceMode === true,
222
223
  }).catch((err) => {
224
+ console.error(`[handler] runPrompt(explicit) FAILED`, err?.stack ?? err);
223
225
  send({
224
226
  type: "stream_error",
225
227
  reason: err instanceof Error ? err.message : String(err),
@@ -247,6 +249,7 @@ export function attachChatHandler(opts) {
247
249
  pluginRegistry,
248
250
  homeDir,
249
251
  }).catch((err) => {
252
+ console.error(`[handler] runPrompt(retry) FAILED`, err?.stack ?? err);
250
253
  send({
251
254
  type: "stream_error",
252
255
  reason: err instanceof Error ? err.message : String(err),
@@ -650,6 +653,48 @@ export async function runPrompt(args) {
650
653
  // class. Returns `{ harness, open }`; `open` lists any operations
651
654
  // that were mid-flight in a previously persisted session — for chat
652
655
  // we start fresh each turn, so we ignore it.
656
+ // ── repair stale lane operations ─────────────────────────
657
+ // When a turn is interrupted (abort, crash, SIGTERM), the lane
658
+ // state may record a currentOperationId whose op.meta / op.state
659
+ // KV entries were never written. pi-agent-core's restoreLaneState
660
+ // treats this as a fatal SessionInvariantError → HarnessFault,
661
+ // permanently bricking the session. Fix: before harness restore,
662
+ // scan lane states and null out any currentOperationId that points
663
+ // to a missing op.meta. This is a runtime-state repair, not a
664
+ // history rewrite.
665
+ try {
666
+ const laneRows = ctx.db
667
+ .prepare(`SELECT key, value FROM session_values
668
+ WHERE session_id = ? AND namespace = ?`)
669
+ .all(session.id, "pi.lane.state");
670
+ for (const row of laneRows) {
671
+ try {
672
+ const parsed = JSON.parse(row.value);
673
+ const opId = parsed.currentOperationId;
674
+ if (!opId)
675
+ continue;
676
+ const metaRow = ctx.db
677
+ .prepare(`SELECT value FROM session_values
678
+ WHERE session_id = ? AND namespace = ? AND key = ?`)
679
+ .get(session.id, "pi.op.meta", opId);
680
+ if (!metaRow) {
681
+ console.warn(`[handler] repairing stale operation ref session=${session.id} lane=${row.key} operationId=${opId} (op.meta missing)`);
682
+ parsed.currentOperationId = null;
683
+ ctx.db
684
+ .prepare(`UPDATE session_values SET value = ?
685
+ WHERE session_id = ? AND namespace = ? AND key = ?`)
686
+ .run(JSON.stringify(parsed), session.id, "pi.lane.state", row.key);
687
+ }
688
+ }
689
+ catch (parseErr) {
690
+ // Malformed JSON in lane state — skip, harness will handle it.
691
+ }
692
+ }
693
+ }
694
+ catch (repairErr) {
695
+ console.warn(`[handler] lane-state repair failed session=${session.id}`, repairErr);
696
+ }
697
+ console.log(`[handler] AgentHarness.create starting session=${session.id}`);
653
698
  const { harness } = await AgentHarness.create({
654
699
  session: piSession,
655
700
  // pi 0.85 typed AgentHarnessTool[] more strictly than our
@@ -688,11 +733,20 @@ export async function runPrompt(args) {
688
733
  });
689
734
  },
690
735
  }),
691
- }, piContext);
736
+ }, piContext).catch((err) => {
737
+ console.error(`[handler] AgentHarness.create FAILED session=${session.id}`, err);
738
+ throw err;
739
+ });
740
+ console.log(`[handler] AgentHarness.create OK session=${session.id}`);
692
741
  // pi 0.85: all lane-scoped operations (prompt, abort, waitForIdle,
693
742
  // compact, followUp, etc.) moved from harness onto AgentLane. Use
694
743
  // one "main" lane for the whole chat session.
695
- const lane = await harness.lane("main", piContext);
744
+ console.log(`[handler] harness.lane("main") starting session=${session.id}`);
745
+ const lane = await harness.lane("main", piContext).catch((err) => {
746
+ console.error(`[handler] harness.lane("main") FAILED session=${session.id}`, err);
747
+ throw err;
748
+ });
749
+ console.log(`[handler] harness.lane("main") OK session=${session.id}`);
696
750
  // Structured compaction: intercept pi's default free-form summary
697
751
  // with a turn-numbered markdown block that lets the model use
698
752
  // recall_range(A, B) against exact session turns. Falls through