@dexto/server 1.3.0 → 1.5.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 (109) hide show
  1. package/dist/approval/manual-approval-handler.cjs +23 -15
  2. package/dist/approval/manual-approval-handler.d.ts.map +1 -1
  3. package/dist/approval/manual-approval-handler.js +23 -15
  4. package/dist/events/webhook-subscriber.cjs +1 -1
  5. package/dist/events/webhook-subscriber.d.ts.map +1 -1
  6. package/dist/events/webhook-subscriber.js +1 -1
  7. package/dist/hono/__tests__/test-fixtures.cjs +3 -3
  8. package/dist/hono/__tests__/test-fixtures.d.ts.map +1 -1
  9. package/dist/hono/__tests__/test-fixtures.js +3 -3
  10. package/dist/hono/index.cjs +46 -5
  11. package/dist/hono/index.d.ts +928 -584
  12. package/dist/hono/index.d.ts.map +1 -1
  13. package/dist/hono/index.js +46 -5
  14. package/dist/hono/middleware/error.d.ts.map +1 -1
  15. package/dist/hono/routes/a2a-jsonrpc.cjs +3 -3
  16. package/dist/hono/routes/a2a-jsonrpc.d.ts +4 -1
  17. package/dist/hono/routes/a2a-jsonrpc.d.ts.map +1 -1
  18. package/dist/hono/routes/a2a-jsonrpc.js +3 -3
  19. package/dist/hono/routes/a2a-tasks.cjs +5 -5
  20. package/dist/hono/routes/a2a-tasks.d.ts +13 -10
  21. package/dist/hono/routes/a2a-tasks.d.ts.map +1 -1
  22. package/dist/hono/routes/a2a-tasks.js +5 -5
  23. package/dist/hono/routes/agents.cjs +30 -42
  24. package/dist/hono/routes/agents.d.ts +7 -401
  25. package/dist/hono/routes/agents.d.ts.map +1 -1
  26. package/dist/hono/routes/agents.js +32 -42
  27. package/dist/hono/routes/approvals.cjs +53 -2
  28. package/dist/hono/routes/approvals.d.ts +29 -1
  29. package/dist/hono/routes/approvals.d.ts.map +1 -1
  30. package/dist/hono/routes/approvals.js +53 -2
  31. package/dist/hono/routes/discovery.cjs +67 -0
  32. package/dist/hono/routes/discovery.d.ts +44 -0
  33. package/dist/hono/routes/discovery.d.ts.map +1 -0
  34. package/dist/hono/routes/discovery.js +43 -0
  35. package/dist/hono/routes/greeting.cjs +2 -2
  36. package/dist/hono/routes/greeting.d.ts +2 -2
  37. package/dist/hono/routes/greeting.d.ts.map +1 -1
  38. package/dist/hono/routes/greeting.js +2 -2
  39. package/dist/hono/routes/health.d.ts +2 -2
  40. package/dist/hono/routes/health.d.ts.map +1 -1
  41. package/dist/hono/routes/key.cjs +110 -0
  42. package/dist/hono/routes/key.d.ts +48 -0
  43. package/dist/hono/routes/key.d.ts.map +1 -0
  44. package/dist/hono/routes/key.js +90 -0
  45. package/dist/hono/routes/llm.cjs +119 -62
  46. package/dist/hono/routes/llm.d.ts +242 -42
  47. package/dist/hono/routes/llm.d.ts.map +1 -1
  48. package/dist/hono/routes/llm.js +118 -58
  49. package/dist/hono/routes/mcp.cjs +16 -12
  50. package/dist/hono/routes/mcp.d.ts +6 -3
  51. package/dist/hono/routes/mcp.d.ts.map +1 -1
  52. package/dist/hono/routes/mcp.js +17 -13
  53. package/dist/hono/routes/memory.cjs +5 -5
  54. package/dist/hono/routes/memory.d.ts +5 -2
  55. package/dist/hono/routes/memory.d.ts.map +1 -1
  56. package/dist/hono/routes/memory.js +5 -5
  57. package/dist/hono/routes/messages.cjs +58 -66
  58. package/dist/hono/routes/messages.d.ts +99 -55
  59. package/dist/hono/routes/messages.d.ts.map +1 -1
  60. package/dist/hono/routes/messages.js +59 -67
  61. package/dist/hono/routes/models.cjs +319 -0
  62. package/dist/hono/routes/models.d.ts +107 -0
  63. package/dist/hono/routes/models.d.ts.map +1 -0
  64. package/dist/hono/routes/models.js +305 -0
  65. package/dist/hono/routes/openrouter.cjs +153 -0
  66. package/dist/hono/routes/openrouter.d.ts +54 -0
  67. package/dist/hono/routes/openrouter.d.ts.map +1 -0
  68. package/dist/hono/routes/openrouter.js +134 -0
  69. package/dist/hono/routes/prompts.cjs +5 -5
  70. package/dist/hono/routes/prompts.d.ts +10 -7
  71. package/dist/hono/routes/prompts.d.ts.map +1 -1
  72. package/dist/hono/routes/prompts.js +5 -5
  73. package/dist/hono/routes/queue.cjs +202 -0
  74. package/dist/hono/routes/queue.d.ts +174 -0
  75. package/dist/hono/routes/queue.d.ts.map +1 -0
  76. package/dist/hono/routes/queue.js +178 -0
  77. package/dist/hono/routes/resources.cjs +3 -3
  78. package/dist/hono/routes/resources.d.ts +3 -3
  79. package/dist/hono/routes/resources.d.ts.map +1 -1
  80. package/dist/hono/routes/resources.js +3 -3
  81. package/dist/hono/routes/search.cjs +2 -2
  82. package/dist/hono/routes/search.d.ts +39 -10
  83. package/dist/hono/routes/search.d.ts.map +1 -1
  84. package/dist/hono/routes/search.js +2 -2
  85. package/dist/hono/routes/sessions.cjs +74 -20
  86. package/dist/hono/routes/sessions.d.ts +25 -4
  87. package/dist/hono/routes/sessions.d.ts.map +1 -1
  88. package/dist/hono/routes/sessions.js +74 -20
  89. package/dist/hono/routes/tools.cjs +126 -0
  90. package/dist/hono/routes/tools.d.ts +42 -0
  91. package/dist/hono/routes/tools.d.ts.map +1 -0
  92. package/dist/hono/routes/tools.js +102 -0
  93. package/dist/hono/routes/webhooks.cjs +4 -4
  94. package/dist/hono/routes/webhooks.d.ts +4 -1
  95. package/dist/hono/routes/webhooks.d.ts.map +1 -1
  96. package/dist/hono/routes/webhooks.js +4 -4
  97. package/dist/hono/schemas/responses.cjs +24 -5
  98. package/dist/hono/schemas/responses.d.ts +838 -120
  99. package/dist/hono/schemas/responses.d.ts.map +1 -1
  100. package/dist/hono/schemas/responses.js +24 -10
  101. package/dist/hono/start-server.cjs +102 -0
  102. package/dist/hono/start-server.d.ts +61 -0
  103. package/dist/hono/start-server.d.ts.map +1 -0
  104. package/dist/hono/start-server.js +78 -0
  105. package/dist/index.cjs +2 -0
  106. package/dist/index.d.ts +1 -0
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +1 -0
  109. package/package.json +5 -4
@@ -27,23 +27,28 @@ function createManualApprovalHandler(coordinator) {
27
27
  const handleApproval = (request) => {
28
28
  return new Promise((resolve) => {
29
29
  const effectiveTimeout = request.timeout;
30
- const timer = setTimeout(() => {
31
- cleanup();
32
- pendingApprovals.delete(request.approvalId);
33
- const timeoutResponse = {
34
- approvalId: request.approvalId,
35
- status: import_core.ApprovalStatus.CANCELLED,
36
- sessionId: request.sessionId,
37
- reason: import_core.DenialReason.TIMEOUT,
38
- message: `Approval request timed out after ${effectiveTimeout}ms`,
39
- timeoutMs: effectiveTimeout
40
- };
41
- coordinator.emitResponse(timeoutResponse);
42
- resolve(timeoutResponse);
43
- }, effectiveTimeout);
30
+ let timer;
31
+ if (effectiveTimeout !== void 0) {
32
+ timer = setTimeout(() => {
33
+ cleanup();
34
+ pendingApprovals.delete(request.approvalId);
35
+ const timeoutResponse = {
36
+ approvalId: request.approvalId,
37
+ status: import_core.ApprovalStatus.CANCELLED,
38
+ sessionId: request.sessionId,
39
+ reason: import_core.DenialReason.TIMEOUT,
40
+ message: `Approval request timed out after ${effectiveTimeout}ms`,
41
+ timeoutMs: effectiveTimeout
42
+ };
43
+ coordinator.emitResponse(timeoutResponse);
44
+ resolve(timeoutResponse);
45
+ }, effectiveTimeout);
46
+ }
44
47
  let cleanupListener = null;
45
48
  const cleanup = () => {
46
- clearTimeout(timer);
49
+ if (timer !== void 0) {
50
+ clearTimeout(timer);
51
+ }
47
52
  if (cleanupListener) {
48
53
  cleanupListener();
49
54
  cleanupListener = null;
@@ -90,6 +95,9 @@ function createManualApprovalHandler(coordinator) {
90
95
  },
91
96
  getPending: () => {
92
97
  return Array.from(pendingApprovals.keys());
98
+ },
99
+ getPendingRequests: () => {
100
+ return Array.from(pendingApprovals.values()).map((p) => p.request);
93
101
  }
94
102
  });
95
103
  return handler;
@@ -1 +1 @@
1
- {"version":3,"file":"manual-approval-handler.d.ts","sourceRoot":"","sources":["../../src/approval/manual-approval-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAqC,MAAM,aAAa,CAAC;AAEtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,mBAAmB,GAAG,eAAe,CAiH7F"}
1
+ {"version":3,"file":"manual-approval-handler.d.ts","sourceRoot":"","sources":["../../src/approval/manual-approval-handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAqC,MAAM,aAAa,CAAC;AAEtF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,2BAA2B,CAAC,WAAW,EAAE,mBAAmB,GAAG,eAAe,CA2H7F"}
@@ -4,23 +4,28 @@ function createManualApprovalHandler(coordinator) {
4
4
  const handleApproval = (request) => {
5
5
  return new Promise((resolve) => {
6
6
  const effectiveTimeout = request.timeout;
7
- const timer = setTimeout(() => {
8
- cleanup();
9
- pendingApprovals.delete(request.approvalId);
10
- const timeoutResponse = {
11
- approvalId: request.approvalId,
12
- status: ApprovalStatus.CANCELLED,
13
- sessionId: request.sessionId,
14
- reason: DenialReason.TIMEOUT,
15
- message: `Approval request timed out after ${effectiveTimeout}ms`,
16
- timeoutMs: effectiveTimeout
17
- };
18
- coordinator.emitResponse(timeoutResponse);
19
- resolve(timeoutResponse);
20
- }, effectiveTimeout);
7
+ let timer;
8
+ if (effectiveTimeout !== void 0) {
9
+ timer = setTimeout(() => {
10
+ cleanup();
11
+ pendingApprovals.delete(request.approvalId);
12
+ const timeoutResponse = {
13
+ approvalId: request.approvalId,
14
+ status: ApprovalStatus.CANCELLED,
15
+ sessionId: request.sessionId,
16
+ reason: DenialReason.TIMEOUT,
17
+ message: `Approval request timed out after ${effectiveTimeout}ms`,
18
+ timeoutMs: effectiveTimeout
19
+ };
20
+ coordinator.emitResponse(timeoutResponse);
21
+ resolve(timeoutResponse);
22
+ }, effectiveTimeout);
23
+ }
21
24
  let cleanupListener = null;
22
25
  const cleanup = () => {
23
- clearTimeout(timer);
26
+ if (timer !== void 0) {
27
+ clearTimeout(timer);
28
+ }
24
29
  if (cleanupListener) {
25
30
  cleanupListener();
26
31
  cleanupListener = null;
@@ -67,6 +72,9 @@ function createManualApprovalHandler(coordinator) {
67
72
  },
68
73
  getPending: () => {
69
74
  return Array.from(pendingApprovals.keys());
75
+ },
76
+ getPendingRequests: () => {
77
+ return Array.from(pendingApprovals.values()).map((p) => p.request);
70
78
  }
71
79
  });
72
80
  return handler;
@@ -61,7 +61,7 @@ class WebhookEventSubscriber {
61
61
  this.abortController?.abort();
62
62
  this.abortController = new AbortController();
63
63
  const { signal } = this.abortController;
64
- const MAX_SHARED_SIGNAL_LISTENERS = 20;
64
+ const MAX_SHARED_SIGNAL_LISTENERS = 50;
65
65
  (0, import_events.setMaxListeners)(MAX_SHARED_SIGNAL_LISTENERS, signal);
66
66
  import_core.INTEGRATION_EVENTS.forEach((eventName) => {
67
67
  eventBus.on(
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-subscriber.d.ts","sourceRoot":"","sources":["../../src/events/webhook-subscriber.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,aAAa,EAIhB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACH,KAAK,aAAa,EAElB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC9B,MAAM,oBAAoB,CAAC;AAW5B;;GAEG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,OAAO,CAA0B;gBAE7B,EACR,OAAO,EACP,GAAG,eAAe,EACrB,GAAE,sBAAsB,GAAG;QAAE,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;KAAO;IAOtE;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IA4BxC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKxC;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAUzC;;OAEG;IACH,WAAW,IAAI,aAAa,EAAE;IAI9B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIxD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAoBpE;;OAEG;IACH,OAAO,IAAI,IAAI;IAUf;;OAEG;IACH,WAAW,IAAI,IAAI;IAsBnB;;OAEG;YACW,YAAY;IA+C1B;;OAEG;YACW,gBAAgB;IAoD9B;;OAEG;YACW,kBAAkB;IA+DhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAK5B"}
1
+ {"version":3,"file":"webhook-subscriber.d.ts","sourceRoot":"","sources":["../../src/events/webhook-subscriber.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,aAAa,EAIhB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EACH,KAAK,aAAa,EAElB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC9B,MAAM,oBAAoB,CAAC;AAW5B;;GAEG;AACH,qBAAa,sBAAuB,YAAW,eAAe;IAC1D,OAAO,CAAC,QAAQ,CAAyC;IACzD,OAAO,CAAC,eAAe,CAAC,CAAkB;IAC1C,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,OAAO,CAA0B;gBAE7B,EACR,OAAO,EACP,GAAG,eAAe,EACrB,GAAE,sBAAsB,GAAG;QAAE,OAAO,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;KAAO;IAOtE;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI;IA6BxC;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IAKxC;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAUzC;;OAEG;IACH,WAAW,IAAI,aAAa,EAAE;IAI9B;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIxD;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAoBpE;;OAEG;IACH,OAAO,IAAI,IAAI;IAUf;;OAEG;IACH,WAAW,IAAI,IAAI;IAsBnB;;OAEG;YACW,YAAY;IA+C1B;;OAEG;YACW,gBAAgB;IAoD9B;;OAEG;YACW,kBAAkB;IA+DhC;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAK5B"}
@@ -30,7 +30,7 @@ class WebhookEventSubscriber {
30
30
  this.abortController?.abort();
31
31
  this.abortController = new AbortController();
32
32
  const { signal } = this.abortController;
33
- const MAX_SHARED_SIGNAL_LISTENERS = 20;
33
+ const MAX_SHARED_SIGNAL_LISTENERS = 50;
34
34
  setMaxListeners(MAX_SHARED_SIGNAL_LISTENERS, signal);
35
35
  INTEGRATION_EVENTS.forEach((eventName) => {
36
36
  eventBus.on(
@@ -47,7 +47,6 @@ function createTestAgentConfig() {
47
47
  model: "gpt-5-nano",
48
48
  apiKey: "test-key-123",
49
49
  // Mock key for testing
50
- router: "vercel",
51
50
  maxIterations: 10
52
51
  },
53
52
  mcpServers: {},
@@ -57,7 +56,8 @@ function createTestAgentConfig() {
57
56
  blob: { type: "local", storePath: "/tmp/test-blobs" }
58
57
  },
59
58
  sessions: {
60
- maxSessions: 10,
59
+ maxSessions: 50,
60
+ // Increased to accommodate all integration tests
61
61
  sessionTTL: 3600
62
62
  },
63
63
  toolConfirmation: {
@@ -83,7 +83,7 @@ async function startTestServer(agent, port, agentsContext) {
83
83
  defaultVersion: "1.0.0",
84
84
  defaultBaseUrl: `http://localhost:${serverPort}`
85
85
  });
86
- const getAgent = () => agent;
86
+ const getAgent = (_ctx) => agent;
87
87
  const getAgentCard = () => agentCard;
88
88
  const { WebhookEventSubscriber } = await import("../../events/webhook-subscriber.js");
89
89
  const { A2ASseEventSubscriber } = await import("../../events/a2a-sse-subscriber.js");
@@ -1 +1 @@
1
- {"version":3,"file":"test-fixtures.d.ts","sourceRoot":"","sources":["../../../src/hono/__tests__/test-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CA6BnD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAK/E;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACjC,KAAK,EAAE,UAAU,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,qBAAqB,CAAC,eAAe,CAAC,GACvD,OAAO,CAAC,UAAU,CAAC,CAwFrB;AAmCD;;GAEG;AACH,wBAAsB,WAAW,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC,CAmCD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,GACpD,IAAI,CAgBN;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;oBACH,OAAO,KAAG,OAAO;oBACjB,OAAO,KAAG,OAAO;qBAChB,OAAO,KAAG,OAAO;mBACnB,OAAO,KAAG,OAAO;oBAChB,OAAO,KAAG,OAAO;4BAET,OAAO,KAAG,OAAO;4BACjB,OAAO,KAAG,OAAO;2BAClB,OAAO,KAAG,OAAO;4BAChB,OAAO,KAAG,OAAO;CAG5C,CAAC"}
1
+ {"version":3,"file":"test-fixtures.d.ts","sourceRoot":"","sources":["../../../src/hono/__tests__/test-fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CA4BnD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAK/E;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,QAAQ,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACjC,KAAK,EAAE,UAAU,EACjB,IAAI,CAAC,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,qBAAqB,CAAC,eAAe,CAAC,GACvD,OAAO,CAAC,UAAU,CAAC,CAwFrB;AAmCD;;GAEG;AACH,wBAAsB,WAAW,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,OAAO,CAAC;IACP,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC,CAmCD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACnC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,GACpD,IAAI,CAgBN;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;oBACH,OAAO,KAAG,OAAO;oBACjB,OAAO,KAAG,OAAO;qBAChB,OAAO,KAAG,OAAO;mBACnB,OAAO,KAAG,OAAO;oBAChB,OAAO,KAAG,OAAO;4BAET,OAAO,KAAG,OAAO;4BACjB,OAAO,KAAG,OAAO;2BAClB,OAAO,KAAG,OAAO;4BAChB,OAAO,KAAG,OAAO;CAG5C,CAAC"}
@@ -9,7 +9,6 @@ function createTestAgentConfig() {
9
9
  model: "gpt-5-nano",
10
10
  apiKey: "test-key-123",
11
11
  // Mock key for testing
12
- router: "vercel",
13
12
  maxIterations: 10
14
13
  },
15
14
  mcpServers: {},
@@ -19,7 +18,8 @@ function createTestAgentConfig() {
19
18
  blob: { type: "local", storePath: "/tmp/test-blobs" }
20
19
  },
21
20
  sessions: {
22
- maxSessions: 10,
21
+ maxSessions: 50,
22
+ // Increased to accommodate all integration tests
23
23
  sessionTTL: 3600
24
24
  },
25
25
  toolConfirmation: {
@@ -45,7 +45,7 @@ async function startTestServer(agent, port, agentsContext) {
45
45
  defaultVersion: "1.0.0",
46
46
  defaultBaseUrl: `http://localhost:${serverPort}`
47
47
  });
48
- const getAgent = () => agent;
48
+ const getAgent = (_ctx) => agent;
49
49
  const getAgentCard = () => agentCard;
50
50
  const { WebhookEventSubscriber } = await import("../../events/webhook-subscriber.js");
51
51
  const { A2ASseEventSubscriber } = await import("../../events/a2a-sse-subscriber.js");
@@ -22,6 +22,7 @@ __export(hono_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(hono_exports);
24
24
  var import_zod_openapi = require("@hono/zod-openapi");
25
+ var import_core = require("@dexto/core");
25
26
  var import_health = require("./routes/health.js");
26
27
  var import_greeting = require("./routes/greeting.js");
27
28
  var import_messages = require("./routes/messages.js");
@@ -38,6 +39,12 @@ var import_resources = require("./routes/resources.js");
38
39
  var import_memory = require("./routes/memory.js");
39
40
  var import_agents = require("./routes/agents.js");
40
41
  var import_approvals = require("./routes/approvals.js");
42
+ var import_queue = require("./routes/queue.js");
43
+ var import_openrouter = require("./routes/openrouter.js");
44
+ var import_key = require("./routes/key.js");
45
+ var import_tools = require("./routes/tools.js");
46
+ var import_discovery = require("./routes/discovery.js");
47
+ var import_models = require("./routes/models.js");
41
48
  var import_static = require("./routes/static.js");
42
49
  var import_error = require("./middleware/error.js");
43
50
  var import_redaction = require("./middleware/redaction.js");
@@ -64,8 +71,10 @@ const dummyAgentsContext = {
64
71
  },
65
72
  getActiveAgentId: () => void 0
66
73
  };
74
+ const DEFAULT_API_PREFIX = "/api";
67
75
  function createDextoApp(options) {
68
76
  const {
77
+ apiPrefix,
69
78
  getAgent,
70
79
  getAgentCard,
71
80
  approvalCoordinator,
@@ -73,15 +82,27 @@ function createDextoApp(options) {
73
82
  sseSubscriber,
74
83
  agentsContext,
75
84
  webRoot,
76
- webUIConfig
85
+ webUIConfig,
86
+ disableAuth = false
77
87
  } = options;
88
+ if (disableAuth) {
89
+ import_core.logger.warn(
90
+ `\u26A0\uFE0F Authentication disabled (disableAuth=true). createAuthMiddleware() skipped. Ensure external auth is in place.`
91
+ );
92
+ }
78
93
  const app = new import_zod_openapi.OpenAPIHono({ strict: false });
79
94
  app.use("*", (0, import_cors.createCorsMiddleware)());
80
- app.use("*", (0, import_auth.createAuthMiddleware)());
95
+ if (!disableAuth) {
96
+ app.use("*", (0, import_auth.createAuthMiddleware)());
97
+ }
81
98
  app.onError((err, ctx) => (0, import_error.handleHonoError)(ctx, err));
82
- app.use("/api/*", import_redaction.prettyJsonMiddleware);
83
- app.use("/api/*", import_redaction.redactionMiddleware);
84
- const fullApp = app.route("/health", (0, import_health.createHealthRouter)(getAgent)).route("/", (0, import_a2a.createA2aRouter)(getAgentCard)).route("/", (0, import_a2a_jsonrpc.createA2AJsonRpcRouter)(getAgent, sseSubscriber)).route("/", (0, import_a2a_tasks.createA2ATasksRouter)(getAgent, sseSubscriber)).route("/api", (0, import_greeting.createGreetingRouter)(getAgent)).route("/api", (0, import_messages.createMessagesRouter)(getAgent, approvalCoordinator)).route("/api", (0, import_llm.createLlmRouter)(getAgent)).route("/api", (0, import_sessions.createSessionsRouter)(getAgent)).route("/api", (0, import_search.createSearchRouter)(getAgent)).route("/api", (0, import_mcp.createMcpRouter)(getAgent)).route("/api", (0, import_webhooks.createWebhooksRouter)(getAgent, webhookSubscriber)).route("/api", (0, import_prompts.createPromptsRouter)(getAgent)).route("/api", (0, import_resources.createResourcesRouter)(getAgent)).route("/api", (0, import_memory.createMemoryRouter)(getAgent)).route("/api", (0, import_approvals.createApprovalsRouter)(getAgent, approvalCoordinator)).route("/api", (0, import_agents.createAgentsRouter)(getAgent, agentsContext || dummyAgentsContext));
99
+ const rawPrefix = apiPrefix ?? DEFAULT_API_PREFIX;
100
+ const normalizedPrefix = rawPrefix === "" ? "/" : rawPrefix.replace(/\/+$/, "") || "/";
101
+ const middlewarePattern = normalizedPrefix === "/" ? "/*" : `${normalizedPrefix}/*`;
102
+ app.use(middlewarePattern, import_redaction.prettyJsonMiddleware);
103
+ app.use(middlewarePattern, import_redaction.redactionMiddleware);
104
+ const routePrefix = normalizedPrefix;
105
+ const fullApp = app.route("/health", (0, import_health.createHealthRouter)(getAgent)).route("/", (0, import_a2a.createA2aRouter)(getAgentCard)).route("/", (0, import_a2a_jsonrpc.createA2AJsonRpcRouter)(getAgent, sseSubscriber)).route("/", (0, import_a2a_tasks.createA2ATasksRouter)(getAgent, sseSubscriber)).route(routePrefix, (0, import_greeting.createGreetingRouter)(getAgent)).route(routePrefix, (0, import_messages.createMessagesRouter)(getAgent, approvalCoordinator)).route(routePrefix, (0, import_llm.createLlmRouter)(getAgent)).route(routePrefix, (0, import_sessions.createSessionsRouter)(getAgent)).route(routePrefix, (0, import_search.createSearchRouter)(getAgent)).route(routePrefix, (0, import_mcp.createMcpRouter)(getAgent)).route(routePrefix, (0, import_webhooks.createWebhooksRouter)(getAgent, webhookSubscriber)).route(routePrefix, (0, import_prompts.createPromptsRouter)(getAgent)).route(routePrefix, (0, import_resources.createResourcesRouter)(getAgent)).route(routePrefix, (0, import_memory.createMemoryRouter)(getAgent)).route(routePrefix, (0, import_approvals.createApprovalsRouter)(getAgent, approvalCoordinator)).route(routePrefix, (0, import_agents.createAgentsRouter)(getAgent, agentsContext || dummyAgentsContext)).route(routePrefix, (0, import_queue.createQueueRouter)(getAgent)).route(routePrefix, (0, import_openrouter.createOpenRouterRouter)()).route(routePrefix, (0, import_key.createKeyRouter)()).route(routePrefix, (0, import_tools.createToolsRouter)(getAgent)).route(routePrefix, (0, import_discovery.createDiscoveryRouter)()).route(routePrefix, (0, import_models.createModelsRouter)());
85
106
  fullApp.doc("/openapi.json", {
86
107
  openapi: "3.0.0",
87
108
  info: {
@@ -157,6 +178,26 @@ function createDextoApp(options) {
157
178
  {
158
179
  name: "agents",
159
180
  description: "Install, switch, and manage agent configurations"
181
+ },
182
+ {
183
+ name: "queue",
184
+ description: "Manage message queue for busy sessions"
185
+ },
186
+ {
187
+ name: "openrouter",
188
+ description: "OpenRouter model validation and cache management"
189
+ },
190
+ {
191
+ name: "discovery",
192
+ description: "Discover available providers and capabilities"
193
+ },
194
+ {
195
+ name: "tools",
196
+ description: "List and inspect available tools from internal, custom, and MCP sources"
197
+ },
198
+ {
199
+ name: "models",
200
+ description: "List and manage local GGUF models and Ollama models"
160
201
  }
161
202
  ]
162
203
  });