@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.
- package/dist/approval/manual-approval-handler.cjs +23 -15
- package/dist/approval/manual-approval-handler.d.ts.map +1 -1
- package/dist/approval/manual-approval-handler.js +23 -15
- package/dist/events/webhook-subscriber.cjs +1 -1
- package/dist/events/webhook-subscriber.d.ts.map +1 -1
- package/dist/events/webhook-subscriber.js +1 -1
- package/dist/hono/__tests__/test-fixtures.cjs +3 -3
- package/dist/hono/__tests__/test-fixtures.d.ts.map +1 -1
- package/dist/hono/__tests__/test-fixtures.js +3 -3
- package/dist/hono/index.cjs +46 -5
- package/dist/hono/index.d.ts +928 -584
- package/dist/hono/index.d.ts.map +1 -1
- package/dist/hono/index.js +46 -5
- package/dist/hono/middleware/error.d.ts.map +1 -1
- package/dist/hono/routes/a2a-jsonrpc.cjs +3 -3
- package/dist/hono/routes/a2a-jsonrpc.d.ts +4 -1
- package/dist/hono/routes/a2a-jsonrpc.d.ts.map +1 -1
- package/dist/hono/routes/a2a-jsonrpc.js +3 -3
- package/dist/hono/routes/a2a-tasks.cjs +5 -5
- package/dist/hono/routes/a2a-tasks.d.ts +13 -10
- package/dist/hono/routes/a2a-tasks.d.ts.map +1 -1
- package/dist/hono/routes/a2a-tasks.js +5 -5
- package/dist/hono/routes/agents.cjs +30 -42
- package/dist/hono/routes/agents.d.ts +7 -401
- package/dist/hono/routes/agents.d.ts.map +1 -1
- package/dist/hono/routes/agents.js +32 -42
- package/dist/hono/routes/approvals.cjs +53 -2
- package/dist/hono/routes/approvals.d.ts +29 -1
- package/dist/hono/routes/approvals.d.ts.map +1 -1
- package/dist/hono/routes/approvals.js +53 -2
- package/dist/hono/routes/discovery.cjs +67 -0
- package/dist/hono/routes/discovery.d.ts +44 -0
- package/dist/hono/routes/discovery.d.ts.map +1 -0
- package/dist/hono/routes/discovery.js +43 -0
- package/dist/hono/routes/greeting.cjs +2 -2
- package/dist/hono/routes/greeting.d.ts +2 -2
- package/dist/hono/routes/greeting.d.ts.map +1 -1
- package/dist/hono/routes/greeting.js +2 -2
- package/dist/hono/routes/health.d.ts +2 -2
- package/dist/hono/routes/health.d.ts.map +1 -1
- package/dist/hono/routes/key.cjs +110 -0
- package/dist/hono/routes/key.d.ts +48 -0
- package/dist/hono/routes/key.d.ts.map +1 -0
- package/dist/hono/routes/key.js +90 -0
- package/dist/hono/routes/llm.cjs +119 -62
- package/dist/hono/routes/llm.d.ts +242 -42
- package/dist/hono/routes/llm.d.ts.map +1 -1
- package/dist/hono/routes/llm.js +118 -58
- package/dist/hono/routes/mcp.cjs +16 -12
- package/dist/hono/routes/mcp.d.ts +6 -3
- package/dist/hono/routes/mcp.d.ts.map +1 -1
- package/dist/hono/routes/mcp.js +17 -13
- package/dist/hono/routes/memory.cjs +5 -5
- package/dist/hono/routes/memory.d.ts +5 -2
- package/dist/hono/routes/memory.d.ts.map +1 -1
- package/dist/hono/routes/memory.js +5 -5
- package/dist/hono/routes/messages.cjs +58 -66
- package/dist/hono/routes/messages.d.ts +99 -55
- package/dist/hono/routes/messages.d.ts.map +1 -1
- package/dist/hono/routes/messages.js +59 -67
- package/dist/hono/routes/models.cjs +319 -0
- package/dist/hono/routes/models.d.ts +107 -0
- package/dist/hono/routes/models.d.ts.map +1 -0
- package/dist/hono/routes/models.js +305 -0
- package/dist/hono/routes/openrouter.cjs +153 -0
- package/dist/hono/routes/openrouter.d.ts +54 -0
- package/dist/hono/routes/openrouter.d.ts.map +1 -0
- package/dist/hono/routes/openrouter.js +134 -0
- package/dist/hono/routes/prompts.cjs +5 -5
- package/dist/hono/routes/prompts.d.ts +10 -7
- package/dist/hono/routes/prompts.d.ts.map +1 -1
- package/dist/hono/routes/prompts.js +5 -5
- package/dist/hono/routes/queue.cjs +202 -0
- package/dist/hono/routes/queue.d.ts +174 -0
- package/dist/hono/routes/queue.d.ts.map +1 -0
- package/dist/hono/routes/queue.js +178 -0
- package/dist/hono/routes/resources.cjs +3 -3
- package/dist/hono/routes/resources.d.ts +3 -3
- package/dist/hono/routes/resources.d.ts.map +1 -1
- package/dist/hono/routes/resources.js +3 -3
- package/dist/hono/routes/search.cjs +2 -2
- package/dist/hono/routes/search.d.ts +39 -10
- package/dist/hono/routes/search.d.ts.map +1 -1
- package/dist/hono/routes/search.js +2 -2
- package/dist/hono/routes/sessions.cjs +74 -20
- package/dist/hono/routes/sessions.d.ts +25 -4
- package/dist/hono/routes/sessions.d.ts.map +1 -1
- package/dist/hono/routes/sessions.js +74 -20
- package/dist/hono/routes/tools.cjs +126 -0
- package/dist/hono/routes/tools.d.ts +42 -0
- package/dist/hono/routes/tools.d.ts.map +1 -0
- package/dist/hono/routes/tools.js +102 -0
- package/dist/hono/routes/webhooks.cjs +4 -4
- package/dist/hono/routes/webhooks.d.ts +4 -1
- package/dist/hono/routes/webhooks.d.ts.map +1 -1
- package/dist/hono/routes/webhooks.js +4 -4
- package/dist/hono/schemas/responses.cjs +24 -5
- package/dist/hono/schemas/responses.d.ts +838 -120
- package/dist/hono/schemas/responses.d.ts.map +1 -1
- package/dist/hono/schemas/responses.js +24 -10
- package/dist/hono/start-server.cjs +102 -0
- package/dist/hono/start-server.d.ts +61 -0
- package/dist/hono/start-server.d.ts.map +1 -0
- package/dist/hono/start-server.js +78 -0
- package/dist/index.cjs +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- 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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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 =
|
|
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;
|
|
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 =
|
|
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:
|
|
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;
|
|
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:
|
|
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");
|
package/dist/hono/index.cjs
CHANGED
|
@@ -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
|
-
|
|
95
|
+
if (!disableAuth) {
|
|
96
|
+
app.use("*", (0, import_auth.createAuthMiddleware)());
|
|
97
|
+
}
|
|
81
98
|
app.onError((err, ctx) => (0, import_error.handleHonoError)(ctx, err));
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const
|
|
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
|
});
|