@dexto/core 1.6.1 → 1.6.3

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 (140) hide show
  1. package/dist/agent/DextoAgent.cjs +54 -0
  2. package/dist/agent/DextoAgent.d.ts +12 -1
  3. package/dist/agent/DextoAgent.d.ts.map +1 -1
  4. package/dist/agent/DextoAgent.js +54 -0
  5. package/dist/agent/agent-options.d.ts +6 -1
  6. package/dist/agent/agent-options.d.ts.map +1 -1
  7. package/dist/events/index.d.ts +9 -1
  8. package/dist/events/index.d.ts.map +1 -1
  9. package/dist/llm/executor/provider-options.cjs +223 -28
  10. package/dist/llm/executor/provider-options.d.ts +3 -37
  11. package/dist/llm/executor/provider-options.d.ts.map +1 -1
  12. package/dist/llm/executor/provider-options.js +227 -27
  13. package/dist/llm/executor/stream-processor.cjs +54 -31
  14. package/dist/llm/executor/stream-processor.d.ts +9 -2
  15. package/dist/llm/executor/stream-processor.d.ts.map +1 -1
  16. package/dist/llm/executor/stream-processor.js +52 -29
  17. package/dist/llm/executor/turn-executor.cjs +63 -41
  18. package/dist/llm/executor/turn-executor.d.ts +2 -2
  19. package/dist/llm/executor/turn-executor.d.ts.map +1 -1
  20. package/dist/llm/executor/turn-executor.js +53 -31
  21. package/dist/llm/formatters/vercel.cjs +15 -3
  22. package/dist/llm/formatters/vercel.d.ts +1 -0
  23. package/dist/llm/formatters/vercel.d.ts.map +1 -1
  24. package/dist/llm/formatters/vercel.js +15 -3
  25. package/dist/llm/index.cjs +8 -0
  26. package/dist/llm/index.d.ts +2 -1
  27. package/dist/llm/index.d.ts.map +1 -1
  28. package/dist/llm/index.js +7 -0
  29. package/dist/llm/providers/local/schemas.d.ts +2 -2
  30. package/dist/llm/providers/openrouter-model-registry.cjs +66 -11
  31. package/dist/llm/providers/openrouter-model-registry.d.ts +26 -0
  32. package/dist/llm/providers/openrouter-model-registry.d.ts.map +1 -1
  33. package/dist/llm/providers/openrouter-model-registry.js +65 -11
  34. package/dist/{utils/user-info.cjs → llm/reasoning/anthropic-betas.cjs} +9 -8
  35. package/dist/llm/reasoning/anthropic-betas.d.ts +3 -0
  36. package/dist/llm/reasoning/anthropic-betas.d.ts.map +1 -0
  37. package/dist/llm/reasoning/anthropic-betas.js +7 -0
  38. package/dist/llm/reasoning/anthropic-thinking.cjs +79 -0
  39. package/dist/llm/reasoning/anthropic-thinking.d.ts +15 -0
  40. package/dist/llm/reasoning/anthropic-thinking.d.ts.map +1 -0
  41. package/dist/llm/reasoning/anthropic-thinking.js +52 -0
  42. package/dist/llm/reasoning/openai-reasoning-effort.cjs +86 -0
  43. package/dist/llm/reasoning/openai-reasoning-effort.d.ts +5 -0
  44. package/dist/llm/reasoning/openai-reasoning-effort.d.ts.map +1 -0
  45. package/dist/llm/reasoning/openai-reasoning-effort.js +61 -0
  46. package/dist/llm/reasoning/profile.cjs +113 -0
  47. package/dist/llm/reasoning/profile.d.ts +13 -0
  48. package/dist/llm/reasoning/profile.d.ts.map +1 -0
  49. package/dist/llm/reasoning/profile.js +92 -0
  50. package/dist/llm/reasoning/profiles/anthropic.cjs +61 -0
  51. package/dist/llm/reasoning/profiles/anthropic.d.ts +8 -0
  52. package/dist/llm/reasoning/profiles/anthropic.d.ts.map +1 -0
  53. package/dist/llm/reasoning/profiles/anthropic.js +45 -0
  54. package/dist/llm/reasoning/profiles/bedrock.cjs +54 -0
  55. package/dist/llm/reasoning/profiles/bedrock.d.ts +3 -0
  56. package/dist/llm/reasoning/profiles/bedrock.d.ts.map +1 -0
  57. package/dist/llm/reasoning/profiles/bedrock.js +36 -0
  58. package/dist/llm/reasoning/profiles/google.cjs +45 -0
  59. package/dist/llm/reasoning/profiles/google.d.ts +9 -0
  60. package/dist/llm/reasoning/profiles/google.d.ts.map +1 -0
  61. package/dist/llm/reasoning/profiles/google.js +21 -0
  62. package/dist/llm/reasoning/profiles/openai-compatible.cjs +39 -0
  63. package/dist/llm/reasoning/profiles/openai-compatible.d.ts +3 -0
  64. package/dist/llm/reasoning/profiles/openai-compatible.d.ts.map +1 -0
  65. package/dist/llm/reasoning/profiles/openai-compatible.js +16 -0
  66. package/dist/llm/reasoning/profiles/openai.cjs +41 -0
  67. package/dist/llm/reasoning/profiles/openai.d.ts +3 -0
  68. package/dist/llm/reasoning/profiles/openai.d.ts.map +1 -0
  69. package/dist/llm/reasoning/profiles/openai.js +18 -0
  70. package/dist/llm/reasoning/profiles/openrouter.cjs +83 -0
  71. package/dist/llm/reasoning/profiles/openrouter.d.ts +10 -0
  72. package/dist/llm/reasoning/profiles/openrouter.d.ts.map +1 -0
  73. package/dist/llm/reasoning/profiles/openrouter.js +59 -0
  74. package/dist/llm/reasoning/profiles/shared.cjs +80 -0
  75. package/dist/llm/reasoning/profiles/shared.d.ts +25 -0
  76. package/dist/llm/reasoning/profiles/shared.d.ts.map +1 -0
  77. package/dist/llm/reasoning/profiles/shared.js +53 -0
  78. package/dist/llm/reasoning/profiles/vertex.cjs +46 -0
  79. package/dist/llm/reasoning/profiles/vertex.d.ts +3 -0
  80. package/dist/llm/reasoning/profiles/vertex.d.ts.map +1 -0
  81. package/dist/llm/reasoning/profiles/vertex.js +23 -0
  82. package/dist/llm/registry/auto-update.cjs +18 -0
  83. package/dist/llm/registry/auto-update.d.ts.map +1 -1
  84. package/dist/llm/registry/auto-update.js +18 -0
  85. package/dist/llm/registry/index.cjs +126 -26
  86. package/dist/llm/registry/index.d.ts +48 -4
  87. package/dist/llm/registry/index.d.ts.map +1 -1
  88. package/dist/llm/registry/index.js +136 -28
  89. package/dist/llm/registry/models.generated.cjs +5198 -59
  90. package/dist/llm/registry/models.generated.d.ts +1893 -76
  91. package/dist/llm/registry/models.generated.d.ts.map +1 -1
  92. package/dist/llm/registry/models.generated.js +5196 -58
  93. package/dist/llm/registry/sync.cjs +72 -1
  94. package/dist/llm/registry/sync.d.ts +21 -1
  95. package/dist/llm/registry/sync.d.ts.map +1 -1
  96. package/dist/llm/registry/sync.js +72 -1
  97. package/dist/llm/resolver.cjs +13 -1
  98. package/dist/llm/resolver.d.ts.map +1 -1
  99. package/dist/llm/resolver.js +13 -1
  100. package/dist/llm/schemas.cjs +75 -14
  101. package/dist/llm/schemas.d.ts +80 -23
  102. package/dist/llm/schemas.d.ts.map +1 -1
  103. package/dist/llm/schemas.js +75 -14
  104. package/dist/llm/services/factory.cjs +55 -8
  105. package/dist/llm/services/factory.d.ts +1 -1
  106. package/dist/llm/services/factory.d.ts.map +1 -1
  107. package/dist/llm/services/factory.js +58 -8
  108. package/dist/llm/services/vercel.cjs +1 -1
  109. package/dist/llm/services/vercel.js +1 -1
  110. package/dist/llm/types.d.ts +9 -0
  111. package/dist/llm/types.d.ts.map +1 -1
  112. package/dist/prompts/index.cjs +9 -0
  113. package/dist/prompts/index.d.ts +1 -0
  114. package/dist/prompts/index.d.ts.map +1 -1
  115. package/dist/prompts/index.js +10 -0
  116. package/dist/prompts/prompt-manager.cjs +2 -0
  117. package/dist/prompts/prompt-manager.d.ts.map +1 -1
  118. package/dist/prompts/prompt-manager.js +2 -0
  119. package/dist/prompts/providers/config-prompt-provider.cjs +11 -1
  120. package/dist/prompts/providers/config-prompt-provider.d.ts.map +1 -1
  121. package/dist/prompts/providers/config-prompt-provider.js +11 -1
  122. package/dist/prompts/schemas.cjs +2 -2
  123. package/dist/prompts/schemas.js +2 -2
  124. package/dist/prompts/types.d.ts +6 -2
  125. package/dist/prompts/types.d.ts.map +1 -1
  126. package/dist/tools/confirmation/allowed-tools-provider/types.d.ts +1 -1
  127. package/dist/tools/tool-manager.cjs +88 -2
  128. package/dist/tools/tool-manager.d.ts +15 -1
  129. package/dist/tools/tool-manager.d.ts.map +1 -1
  130. package/dist/tools/tool-manager.js +88 -2
  131. package/dist/utils/service-initializer.d.ts +1 -0
  132. package/dist/utils/service-initializer.d.ts.map +1 -1
  133. package/package.json +7 -5
  134. package/dist/utils/schema-metadata.cjs +0 -235
  135. package/dist/utils/schema-metadata.d.ts +0 -82
  136. package/dist/utils/schema-metadata.d.ts.map +0 -1
  137. package/dist/utils/schema-metadata.js +0 -208
  138. package/dist/utils/user-info.d.ts +0 -2
  139. package/dist/utils/user-info.d.ts.map +0 -1
  140. package/dist/utils/user-info.js +0 -7
@@ -103,6 +103,20 @@ let _ToolManager = class _ToolManager {
103
103
  }
104
104
  this.invalidateCache();
105
105
  }
106
+ addTools(tools) {
107
+ const added = [];
108
+ for (const tool of tools) {
109
+ if (this.agentTools.has(tool.id)) {
110
+ continue;
111
+ }
112
+ this.agentTools.set(tool.id, tool);
113
+ added.push(tool.id);
114
+ }
115
+ if (added.length > 0) {
116
+ this.invalidateCache();
117
+ }
118
+ return added;
119
+ }
106
120
  setToolExecutionContextFactory(factory) {
107
121
  this.toolExecutionContextFactory = factory;
108
122
  }
@@ -192,6 +206,37 @@ let _ToolManager = class _ToolManager {
192
206
  );
193
207
  this.logger.debug(`Auto-approve tools: ${normalized.join(", ")}`);
194
208
  }
209
+ /**
210
+ * Add session-level auto-approve tools.
211
+ * Merges into the existing list instead of replacing it.
212
+ *
213
+ * @param sessionId The session ID
214
+ * @param autoApproveTools Array of tool names to auto-approve (e.g., ['bash_exec', 'mcp--read_file'])
215
+ */
216
+ addSessionAutoApproveTools(sessionId, autoApproveTools) {
217
+ if (autoApproveTools.length === 0) {
218
+ return;
219
+ }
220
+ const normalized = autoApproveTools.map(
221
+ (pattern) => this.normalizeToolPolicyPattern(pattern)
222
+ );
223
+ const existing = this.sessionAutoApproveTools.get(sessionId) ?? [];
224
+ const merged = [...existing];
225
+ const seen = new Set(existing);
226
+ for (const toolName of normalized) {
227
+ if (seen.has(toolName)) {
228
+ continue;
229
+ }
230
+ merged.push(toolName);
231
+ seen.add(toolName);
232
+ }
233
+ const actuallyAdded = Math.max(0, merged.length - existing.length);
234
+ this.sessionAutoApproveTools.set(sessionId, merged);
235
+ this.logger.info(
236
+ `Session auto-approve tools updated for '${sessionId}': +${actuallyAdded} tools`
237
+ );
238
+ this.logger.debug(`Auto-approve tools: ${merged.join(", ")}`);
239
+ }
195
240
  /**
196
241
  * Set session-level auto-approve tools chosen by the user.
197
242
  */
@@ -596,7 +641,10 @@ let _ToolManager = class _ToolManager {
596
641
  if (request.sessionId !== sessionId) {
597
642
  return false;
598
643
  }
599
- return request.metadata.toolName === toolName;
644
+ if (request.metadata.toolName !== toolName) {
645
+ return false;
646
+ }
647
+ return request.metadata.directoryAccess === void 0;
600
648
  },
601
649
  { rememberChoice: false }
602
650
  // Don't propagate remember choice to auto-approved requests
@@ -630,6 +678,9 @@ let _ToolManager = class _ToolManager {
630
678
  if (request.metadata.toolName !== toolName) {
631
679
  return false;
632
680
  }
681
+ if (request.metadata.directoryAccess !== void 0) {
682
+ return false;
683
+ }
633
684
  const args = request.metadata.args;
634
685
  if (typeof args !== "object" || args === null) {
635
686
  return false;
@@ -656,6 +707,37 @@ let _ToolManager = class _ToolManager {
656
707
  );
657
708
  }
658
709
  }
710
+ /**
711
+ * Auto-approve pending tool approval requests that are now covered by a remembered directory.
712
+ * Called after a user selects "remember directory" for a directory-access prompt.
713
+ */
714
+ autoApprovePendingDirectoryRequests(toolName, sessionId) {
715
+ const count = this.approvalManager.autoApprovePendingRequests(
716
+ (request) => {
717
+ if (request.type !== ApprovalType.TOOL_APPROVAL) {
718
+ return false;
719
+ }
720
+ if (request.sessionId !== sessionId) {
721
+ return false;
722
+ }
723
+ if (request.metadata.toolName !== toolName) {
724
+ return false;
725
+ }
726
+ const directoryAccess = request.metadata.directoryAccess;
727
+ if (!directoryAccess) {
728
+ return false;
729
+ }
730
+ return this.approvalManager.isDirectorySessionApproved(directoryAccess.parentDir);
731
+ },
732
+ { rememberDirectory: false }
733
+ );
734
+ if (count > 0) {
735
+ this.logger.info(
736
+ 'Auto-approved parallel request(s) after user selected "remember directory"',
737
+ { count, toolName }
738
+ );
739
+ }
740
+ }
659
741
  getMcpManager() {
660
742
  return this.mcpManager;
661
743
  }
@@ -1371,13 +1453,14 @@ let _ToolManager = class _ToolManager {
1371
1453
  }
1372
1454
  }
1373
1455
  /**
1374
- * Handle "remember choice" or "remember pattern" when user approves a tool.
1456
+ * Handle "remember" actions when user approves a tool.
1375
1457
  */
1376
1458
  async handleRememberChoice(toolName, response, sessionId) {
1377
1459
  const data = response.data;
1378
1460
  if (!data) return;
1379
1461
  const rememberChoice = data.rememberChoice;
1380
1462
  const rememberPattern = data.rememberPattern;
1463
+ const rememberDirectory = data.rememberDirectory;
1381
1464
  if (rememberChoice) {
1382
1465
  const allowSessionId = sessionId ?? response.sessionId;
1383
1466
  await this.allowedToolsProvider.allowTool(toolName, allowSessionId);
@@ -1389,6 +1472,9 @@ let _ToolManager = class _ToolManager {
1389
1472
  this.approvalManager.addPattern(toolName, rememberPattern);
1390
1473
  this.logger.info(`Pattern '${rememberPattern}' added for tool '${toolName}' approval`);
1391
1474
  this.autoApprovePendingPatternRequests(toolName, sessionId);
1475
+ } else if (rememberDirectory) {
1476
+ const allowSessionId = sessionId ?? response.sessionId;
1477
+ this.autoApprovePendingDirectoryRequests(toolName, allowSessionId);
1392
1478
  }
1393
1479
  }
1394
1480
  /**
@@ -47,6 +47,7 @@ export type ToolManagerFactoryOptions = {
47
47
  logger: Logger;
48
48
  };
49
49
  export type ToolManagerFactory = (options: ToolManagerFactoryOptions) => ToolManager;
50
+ export type ToolkitLoader = (toolkits: string[]) => Promise<Tool[]>;
50
51
  export type InitializeServicesOptions = {
51
52
  sessionLoggerFactory?: import('../session/session-manager.js').SessionLoggerFactory;
52
53
  mcpAuthProviderFactory?: import('../mcp/types.js').McpAuthProviderFactory | null;
@@ -1 +1 @@
1
- {"version":3,"file":"service-initializer.d.ts","sourceRoot":"","sources":["../../src/utils/service-initializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service-initializer.d.ts","sourceRoot":"","sources":["../../src/utils/service-initializer.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,iBAAiB,CAAC;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,WAAW,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACpC,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,YAAY,EAAE,QAAQ,GAAG,cAAc,GAAG,WAAW,CAAC;IACtD,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,yBAAyB,KAAK,WAAW,CAAC;AAErF,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAEpE,MAAM,MAAM,yBAAyB,GAAG;IACpC,oBAAoB,CAAC,EAAE,OAAO,+BAA+B,EAAE,oBAAoB,CAAC;IACpF,sBAAsB,CAAC,EAAE,OAAO,iBAAiB,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACjF,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,SAAS,CAAC;CAC9B,CAAC;AAGF;;;;;;;GAOG;AACH,wBAAsB,mBAAmB,CACrC,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,SAAS,CAAC,EAAE,yBAAyB,EACrC,kBAAkB,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,SAAS,GAC3D,OAAO,CAAC,aAAa,CAAC,CAgNxB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dexto/core",
3
- "version": "1.6.1",
3
+ "version": "1.6.3",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -25,22 +25,24 @@
25
25
  },
26
26
  "dependencies": {
27
27
  "@ai-sdk/amazon-bedrock": "^3.0.71",
28
- "@ai-sdk/anthropic": "^2.0.56",
28
+ "@ai-sdk/anthropic": "^2.0.65",
29
29
  "@ai-sdk/cohere": "^2.0.0",
30
30
  "@ai-sdk/google": "^2.0.0",
31
31
  "@ai-sdk/google-vertex": "^3.0.94",
32
32
  "@ai-sdk/groq": "^2.0.0",
33
33
  "@ai-sdk/openai": "^2.0.0",
34
+ "@ai-sdk/openai-compatible": "^1.0.30",
34
35
  "@ai-sdk/provider": "^2.0.0",
35
36
  "@ai-sdk/xai": "^2.0.0",
36
- "@modelcontextprotocol/sdk": "^1.25.2",
37
+ "@modelcontextprotocol/sdk": "^1.26.0",
38
+ "@openrouter/ai-sdk-provider": "^1.5.4",
37
39
  "@opentelemetry/api": "^1.9.0",
38
40
  "ai": "^5.0.0",
39
41
  "boxen": "^7.1.1",
40
42
  "chalk": "^5.4.1",
41
- "diff": "^8.0.2",
43
+ "diff": "^8.0.3",
42
44
  "dotenv": "^16.4.7",
43
- "glob": "^11.0.3",
45
+ "glob": "^12.0.0",
44
46
  "nanoid": "^5.1.6",
45
47
  "winston": "^3.17.0",
46
48
  "yaml": "^2.7.1",
@@ -1,235 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var schema_metadata_exports = {};
20
- __export(schema_metadata_exports, {
21
- extractCommonFields: () => extractCommonFields,
22
- extractDiscriminatedUnionMetadata: () => extractDiscriminatedUnionMetadata,
23
- extractSchemaMetadata: () => extractSchemaMetadata,
24
- getFieldDefault: () => getFieldDefault,
25
- isFieldRequiredInVariant: () => isFieldRequiredInVariant
26
- });
27
- module.exports = __toCommonJS(schema_metadata_exports);
28
- function extractDefault(def) {
29
- if (def.defaultValue !== void 0) {
30
- return typeof def.defaultValue === "function" ? def.defaultValue() : def.defaultValue;
31
- }
32
- if (def.typeName === "ZodBranded" && def.type) {
33
- return extractDefault(def.type._def);
34
- }
35
- if (def.typeName === "ZodOptional" && def.innerType) {
36
- return extractDefault(def.innerType._def);
37
- }
38
- if (def.typeName === "ZodNullable" && def.innerType) {
39
- return extractDefault(def.innerType._def);
40
- }
41
- return void 0;
42
- }
43
- function extractEnumValues(def) {
44
- if (def.typeName === "ZodBranded" && def.type) {
45
- return extractEnumValues(def.type._def);
46
- }
47
- if (def.typeName === "ZodOptional" && def.innerType) {
48
- return extractEnumValues(def.innerType._def);
49
- }
50
- if (def.typeName === "ZodNullable" && def.innerType) {
51
- return extractEnumValues(def.innerType._def);
52
- }
53
- if (def.typeName === "ZodEffects" && def.schema) {
54
- return extractEnumValues(def.schema._def);
55
- }
56
- if (def.typeName === "ZodEnum") {
57
- return def.values;
58
- }
59
- if (def.typeName === "ZodLiteral") {
60
- return [String(def.value)];
61
- }
62
- return void 0;
63
- }
64
- function extractTypeName(def) {
65
- if (def.typeName === "ZodBranded" && def.type) {
66
- return extractTypeName(def.type._def);
67
- }
68
- if (def.typeName === "ZodOptional" && def.innerType) {
69
- return extractTypeName(def.innerType._def) + "?";
70
- }
71
- if (def.typeName === "ZodNullable" && def.innerType) {
72
- return extractTypeName(def.innerType._def) + "?";
73
- }
74
- if (def.typeName === "ZodLiteral") {
75
- return `literal(${JSON.stringify(def.value)})`;
76
- }
77
- if (def.typeName === "ZodEnum") {
78
- return `enum(${def.values.join("|")})`;
79
- }
80
- if (def.typeName === "ZodArray") {
81
- return `array<${extractTypeName(def.type._def)}>`;
82
- }
83
- if (def.typeName === "ZodRecord") {
84
- return `record<${extractTypeName(def.valueType._def)}>`;
85
- }
86
- if (def.typeName === "ZodEffects" && def.schema) {
87
- return extractTypeName(def.schema._def);
88
- }
89
- const typeMap = {
90
- ZodString: "string",
91
- ZodNumber: "number",
92
- ZodBoolean: "boolean",
93
- ZodObject: "object",
94
- ZodArray: "array",
95
- ZodRecord: "record",
96
- ZodUnion: "union",
97
- ZodDiscriminatedUnion: "discriminatedUnion"
98
- };
99
- return typeMap[def.typeName] || def.typeName?.replace("Zod", "").toLowerCase() || "unknown";
100
- }
101
- function isFieldRequired(def) {
102
- if (def.defaultValue !== void 0) {
103
- return false;
104
- }
105
- if (def.typeName === "ZodOptional") {
106
- return false;
107
- }
108
- if (def.typeName === "ZodNullable") {
109
- return false;
110
- }
111
- if (def.typeName === "ZodBranded" && def.type) {
112
- return isFieldRequired(def.type._def);
113
- }
114
- return true;
115
- }
116
- function extractSchemaMetadata(schema) {
117
- const metadata = {
118
- defaults: {},
119
- requiredFields: [],
120
- fieldTypes: {},
121
- descriptions: {},
122
- enumValues: {}
123
- };
124
- let def = schema._def;
125
- if (def.typeName === "ZodBranded" && def.type) {
126
- def = def.type._def;
127
- }
128
- if (def.typeName !== "ZodObject") {
129
- throw new Error(`Expected ZodObject, got ${def.typeName}`);
130
- }
131
- const shape = def.shape();
132
- for (const [fieldName, fieldSchema] of Object.entries(shape)) {
133
- const fieldDef = fieldSchema._def;
134
- const defaultValue = extractDefault(fieldDef);
135
- if (defaultValue !== void 0) {
136
- metadata.defaults[fieldName] = defaultValue;
137
- }
138
- if (isFieldRequired(fieldDef)) {
139
- metadata.requiredFields.push(fieldName);
140
- }
141
- metadata.fieldTypes[fieldName] = extractTypeName(fieldDef);
142
- if (fieldDef.description) {
143
- metadata.descriptions[fieldName] = fieldDef.description;
144
- }
145
- const enumVals = extractEnumValues(fieldDef);
146
- if (enumVals) {
147
- metadata.enumValues[fieldName] = enumVals;
148
- }
149
- }
150
- return metadata;
151
- }
152
- function extractDiscriminatedUnionMetadata(schema) {
153
- let def = schema._def;
154
- if (def.typeName === "ZodBranded" && def.type) {
155
- def = def.type._def;
156
- }
157
- if (def.typeName === "ZodEffects" && def.schema) {
158
- def = def.schema._def;
159
- }
160
- if (def.typeName !== "ZodDiscriminatedUnion") {
161
- throw new Error(`Expected ZodDiscriminatedUnion, got ${def.typeName}`);
162
- }
163
- const discriminator = def.discriminator;
164
- const optionsMap = def.optionsMap;
165
- const metadata = {
166
- discriminator,
167
- options: Array.from(optionsMap.keys()),
168
- schemas: {}
169
- };
170
- for (const [optionValue, optionSchema] of optionsMap.entries()) {
171
- metadata.schemas[optionValue] = extractSchemaMetadata(optionSchema);
172
- }
173
- return metadata;
174
- }
175
- function extractCommonFields(metadata) {
176
- const schemas = Object.values(metadata.schemas);
177
- if (schemas.length === 0) {
178
- return {
179
- defaults: {},
180
- requiredFields: [],
181
- fieldTypes: {},
182
- descriptions: {},
183
- enumValues: {}
184
- };
185
- }
186
- const first = schemas[0];
187
- const rest = schemas.slice(1);
188
- const common = {
189
- defaults: { ...first.defaults },
190
- requiredFields: [...first.requiredFields],
191
- fieldTypes: { ...first.fieldTypes },
192
- descriptions: { ...first.descriptions },
193
- enumValues: { ...first.enumValues }
194
- };
195
- for (const schema of rest) {
196
- for (const key of Object.keys(common.defaults)) {
197
- if (!(key in schema.defaults) || schema.defaults[key] !== common.defaults[key]) {
198
- delete common.defaults[key];
199
- }
200
- }
201
- common.requiredFields = common.requiredFields.filter(
202
- (field) => schema.requiredFields.includes(field)
203
- );
204
- for (const key of Object.keys(common.fieldTypes)) {
205
- if (!(key in schema.fieldTypes) || schema.fieldTypes[key] !== common.fieldTypes[key]) {
206
- delete common.fieldTypes[key];
207
- }
208
- }
209
- for (const key of Object.keys(common.descriptions)) {
210
- if (!(key in schema.descriptions) || schema.descriptions[key] !== common.descriptions[key]) {
211
- delete common.descriptions[key];
212
- }
213
- }
214
- for (const key of Object.keys(common.enumValues)) {
215
- if (!(key in schema.enumValues) || JSON.stringify(schema.enumValues[key]) !== JSON.stringify(common.enumValues[key])) {
216
- delete common.enumValues[key];
217
- }
218
- }
219
- }
220
- return common;
221
- }
222
- function getFieldDefault(metadata, discriminatorValue, fieldName) {
223
- return metadata.schemas[discriminatorValue]?.defaults[fieldName];
224
- }
225
- function isFieldRequiredInVariant(metadata, discriminatorValue, fieldName) {
226
- return metadata.schemas[discriminatorValue]?.requiredFields.includes(fieldName) ?? false;
227
- }
228
- // Annotate the CommonJS export names for ESM import in node:
229
- 0 && (module.exports = {
230
- extractCommonFields,
231
- extractDiscriminatedUnionMetadata,
232
- extractSchemaMetadata,
233
- getFieldDefault,
234
- isFieldRequiredInVariant
235
- });
@@ -1,82 +0,0 @@
1
- /**
2
- * Schema metadata extraction utilities for Zod schemas
3
- *
4
- * This module provides utilities to extract metadata from Zod schemas at runtime.
5
- *
6
- * IMPORTANT: This uses Zod's private `._def` API which is not officially supported
7
- * and may break in future Zod versions. We use this approach because:
8
- * 1. No public Zod API exists for runtime schema introspection
9
- * 2. Benefits of schema-driven UI metadata outweigh version risk
10
- * 3. Changes would be caught by TypeScript/tests during upgrades
11
- *
12
- * TODO: Update web UI to use these helpers to reduce total code volume and improve maintainability. Also fix these helpers if needed.
13
- * See packages/webui/components/AgentEditor/CustomizePanel.tsx for the UI side TODO tracking this same goal.
14
- *
15
- * If Zod provides official introspection APIs in the future, migrate to those.
16
- */
17
- import { z } from 'zod';
18
- /**
19
- * Metadata extracted from a Zod schema
20
- */
21
- export interface SchemaMetadata {
22
- /** Default values for each field */
23
- defaults: Record<string, unknown>;
24
- /** Required fields (not optional, not with defaults) */
25
- requiredFields: string[];
26
- /** Field type information */
27
- fieldTypes: Record<string, string>;
28
- /** Field descriptions from .describe() calls */
29
- descriptions: Record<string, string>;
30
- /** Enum values for enum fields (e.g., provider: ['openai', 'anthropic']) */
31
- enumValues: Record<string, string[]>;
32
- }
33
- /**
34
- * Extract metadata from a discriminated union schema
35
- * Handles schemas like McpServerConfigSchema (stdio | sse | http)
36
- */
37
- export interface DiscriminatedUnionMetadata {
38
- /** The discriminator field name (e.g., "type") */
39
- discriminator: string;
40
- /** Possible discriminator values (e.g., ["stdio", "sse", "http"]) */
41
- options: string[];
42
- /** Metadata for each option */
43
- schemas: Record<string, SchemaMetadata>;
44
- }
45
- /**
46
- * Extract metadata from a Zod object schema
47
- *
48
- * @param schema - Zod schema to extract metadata from
49
- * @returns SchemaMetadata object with defaults, required fields, types, and descriptions
50
- */
51
- export declare function extractSchemaMetadata(schema: z.ZodTypeAny): SchemaMetadata;
52
- /**
53
- * Extract metadata from a discriminated union schema
54
- *
55
- * @param schema - Zod discriminated union schema
56
- * @returns DiscriminatedUnionMetadata with info about each variant
57
- */
58
- export declare function extractDiscriminatedUnionMetadata(schema: z.ZodTypeAny): DiscriminatedUnionMetadata;
59
- /**
60
- * Extract common fields from a discriminated union (fields present in all variants)
61
- * Useful for extracting shared defaults like 'timeout' or 'connectionMode'
62
- */
63
- export declare function extractCommonFields(metadata: DiscriminatedUnionMetadata): SchemaMetadata;
64
- /**
65
- * Get default value for a specific field in a discriminated union variant
66
- *
67
- * @param metadata - Discriminated union metadata
68
- * @param discriminatorValue - The discriminator value (e.g., 'stdio', 'http')
69
- * @param fieldName - The field to get default for
70
- * @returns The default value or undefined
71
- */
72
- export declare function getFieldDefault(metadata: DiscriminatedUnionMetadata, discriminatorValue: string, fieldName: string): unknown;
73
- /**
74
- * Check if a field is required in a specific discriminated union variant
75
- *
76
- * @param metadata - Discriminated union metadata
77
- * @param discriminatorValue - The discriminator value (e.g., 'stdio', 'http')
78
- * @param fieldName - The field to check
79
- * @returns true if required, false otherwise
80
- */
81
- export declare function isFieldRequiredInVariant(metadata: DiscriminatedUnionMetadata, discriminatorValue: string, fieldName: string): boolean;
82
- //# sourceMappingURL=schema-metadata.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"schema-metadata.d.ts","sourceRoot":"","sources":["../../src/utils/schema-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,wDAAwD;IACxD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,4EAA4E;IAC5E,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IACvC,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC3C;AA0JD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,cAAc,CAqD1E;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC7C,MAAM,EAAE,CAAC,CAAC,UAAU,GACrB,0BAA0B,CAgC5B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,cAAc,CAiExF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC3B,QAAQ,EAAE,0BAA0B,EACpC,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,GAClB,OAAO,CAET;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACpC,QAAQ,EAAE,0BAA0B,EACpC,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,GAClB,OAAO,CAET"}