@dexto/server 1.6.19 → 1.6.21
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/a2a/jsonrpc/methods.cjs +1 -1
- package/dist/a2a/jsonrpc/methods.d.ts +14 -4
- package/dist/a2a/jsonrpc/methods.d.ts.map +1 -1
- package/dist/a2a/jsonrpc/methods.js +1 -1
- package/dist/hono/index.cjs +39 -8
- package/dist/hono/index.d.ts +43 -4503
- package/dist/hono/index.d.ts.map +1 -1
- package/dist/hono/index.js +42 -9
- package/dist/hono/routes/a2a-jsonrpc.d.ts.map +1 -1
- package/dist/hono/routes/a2a-tasks.cjs +173 -34
- package/dist/hono/routes/a2a-tasks.d.ts +1 -498
- package/dist/hono/routes/a2a-tasks.d.ts.map +1 -1
- package/dist/hono/routes/a2a-tasks.js +177 -34
- package/dist/hono/routes/a2a.d.ts.map +1 -1
- package/dist/hono/routes/agents.cjs +410 -329
- package/dist/hono/routes/agents.d.ts +16048 -73
- package/dist/hono/routes/agents.d.ts.map +1 -1
- package/dist/hono/routes/agents.js +418 -330
- package/dist/hono/routes/approvals.cjs +103 -78
- package/dist/hono/routes/approvals.d.ts +2090 -112
- package/dist/hono/routes/approvals.d.ts.map +1 -1
- package/dist/hono/routes/approvals.js +108 -78
- package/dist/hono/routes/dexto-auth.cjs +40 -33
- package/dist/hono/routes/dexto-auth.d.ts +401 -2
- package/dist/hono/routes/dexto-auth.d.ts.map +1 -1
- package/dist/hono/routes/dexto-auth.js +40 -33
- package/dist/hono/routes/discovery.cjs +16 -14
- package/dist/hono/routes/discovery.d.ts +586 -1
- package/dist/hono/routes/discovery.d.ts.map +1 -1
- package/dist/hono/routes/discovery.js +16 -14
- package/dist/hono/routes/greeting.cjs +26 -22
- package/dist/hono/routes/greeting.d.ts +787 -3
- package/dist/hono/routes/greeting.d.ts.map +1 -1
- package/dist/hono/routes/greeting.js +26 -22
- package/dist/hono/routes/health.d.ts +1 -1
- package/dist/hono/routes/key.cjs +60 -52
- package/dist/hono/routes/key.d.ts +1597 -1
- package/dist/hono/routes/key.d.ts.map +1 -1
- package/dist/hono/routes/key.js +60 -52
- package/dist/hono/routes/llm.cjs +381 -348
- package/dist/hono/routes/llm.d.ts +12137 -87
- package/dist/hono/routes/llm.d.ts.map +1 -1
- package/dist/hono/routes/llm.js +385 -348
- package/dist/hono/routes/mcp.cjs +273 -212
- package/dist/hono/routes/mcp.d.ts +6605 -316
- package/dist/hono/routes/mcp.d.ts.map +1 -1
- package/dist/hono/routes/mcp.js +287 -213
- package/dist/hono/routes/memory.cjs +102 -89
- package/dist/hono/routes/memory.d.ts +5368 -4
- package/dist/hono/routes/memory.d.ts.map +1 -1
- package/dist/hono/routes/memory.js +108 -90
- package/dist/hono/routes/messages.cjs +171 -164
- package/dist/hono/routes/messages.d.ts +3899 -10
- package/dist/hono/routes/messages.d.ts.map +1 -1
- package/dist/hono/routes/messages.js +181 -165
- package/dist/hono/routes/models.cjs +106 -64
- package/dist/hono/routes/models.d.ts +2874 -1
- package/dist/hono/routes/models.d.ts.map +1 -1
- package/dist/hono/routes/models.js +108 -64
- package/dist/hono/routes/openrouter.cjs +79 -65
- package/dist/hono/routes/openrouter.d.ts +854 -1
- package/dist/hono/routes/openrouter.d.ts.map +1 -1
- package/dist/hono/routes/openrouter.js +79 -65
- package/dist/hono/routes/prompts.cjs +137 -104
- package/dist/hono/routes/prompts.d.ts +2820 -12
- package/dist/hono/routes/prompts.d.ts.map +1 -1
- package/dist/hono/routes/prompts.js +144 -105
- package/dist/hono/routes/queue.cjs +158 -132
- package/dist/hono/routes/queue.d.ts +5148 -13
- package/dist/hono/routes/queue.d.ts.map +1 -1
- package/dist/hono/routes/queue.js +168 -133
- package/dist/hono/routes/resources.cjs +65 -46
- package/dist/hono/routes/resources.d.ts +1983 -5
- package/dist/hono/routes/resources.d.ts.map +1 -1
- package/dist/hono/routes/resources.js +72 -47
- package/dist/hono/routes/schedules.cjs +233 -226
- package/dist/hono/routes/schedules.d.ts +4202 -26
- package/dist/hono/routes/schedules.d.ts.map +1 -1
- package/dist/hono/routes/schedules.js +233 -226
- package/dist/hono/routes/search.cjs +34 -30
- package/dist/hono/routes/search.d.ts +2837 -14
- package/dist/hono/routes/search.d.ts.map +1 -1
- package/dist/hono/routes/search.js +40 -31
- package/dist/hono/routes/sessions.cjs +404 -392
- package/dist/hono/routes/sessions.d.ts +16585 -30
- package/dist/hono/routes/sessions.d.ts.map +1 -1
- package/dist/hono/routes/sessions.js +408 -393
- package/dist/hono/routes/static.d.ts.map +1 -1
- package/dist/hono/routes/system-prompt.cjs +57 -61
- package/dist/hono/routes/system-prompt.d.ts +1228 -2
- package/dist/hono/routes/system-prompt.d.ts.map +1 -1
- package/dist/hono/routes/system-prompt.js +58 -62
- package/dist/hono/routes/tools.cjs +29 -34
- package/dist/hono/routes/tools.d.ts +1756 -7
- package/dist/hono/routes/tools.d.ts.map +1 -1
- package/dist/hono/routes/tools.js +33 -33
- package/dist/hono/routes/webhooks.cjs +159 -132
- package/dist/hono/routes/webhooks.d.ts +2504 -14
- package/dist/hono/routes/webhooks.d.ts.map +1 -1
- package/dist/hono/routes/webhooks.js +163 -132
- package/dist/hono/routes/workspaces.cjs +84 -79
- package/dist/hono/routes/workspaces.d.ts +2093 -2
- package/dist/hono/routes/workspaces.d.ts.map +1 -1
- package/dist/hono/routes/workspaces.js +89 -80
- package/dist/hono/schemas/responses.cjs +492 -235
- package/dist/hono/schemas/responses.d.ts +1461 -146
- package/dist/hono/schemas/responses.d.ts.map +1 -1
- package/dist/hono/schemas/responses.js +247 -9
- package/dist/hono/types.d.ts +11 -0
- package/dist/hono/types.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/hono/routes/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/hono/routes/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAYhE,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAelE,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKwB,CAAC;AAmCrD,QAAA,MAAM,uBAAuB;;;;;;EAIQ,CAAC;AAEtC,QAAA,MAAM,uBAAuB;;;;;;;;;EAKmB,CAAC;AAEjD,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBjB,CAAC;AAEH,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BrB,CAAC;AAEH,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyB5B,CAAC;AAEH,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBnB,CAAC;AAEH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAsErD;AAED,KAAK,sBAAsB,GAAG;IAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;CAAE,CAAC;AACjF,KAAK,sBAAsB,GAAG;IAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAA;CAAE,CAAC;AAEjF,KAAK,mBAAmB,GAAG,kBAAkB,CAAC,OAAO,aAAa,EAAE,sBAAsB,CAAC,CAAC;AAC5F,KAAK,uBAAuB,GAAG,kBAAkB,CAC7C,OAAO,iBAAiB,EACxB,sBAAsB,GAAG;IAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;CAAE,CAC5E,CAAC;AACF,KAAK,8BAA8B,GAAG,kBAAkB,CACpD,OAAO,wBAAwB,EAC/B,sBAAsB,CACzB,CAAC;AACF,KAAK,qBAAqB,GAAG,kBAAkB,CAAC,OAAO,eAAe,EAAE,sBAAsB,CAAC,CAAC;AAEhG,MAAM,MAAM,iBAAiB,GACvB,mBAAmB,GACnB,uBAAuB,GACvB,8BAA8B,GAC9B,qBAAqB,CAAC"}
|
|
@@ -1,167 +1,193 @@
|
|
|
1
1
|
import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
|
|
2
|
-
import {
|
|
2
|
+
import { DextoRuntimeError, ErrorType } from "@dexto/core";
|
|
3
|
+
import {
|
|
4
|
+
ApiErrorResponseSchema,
|
|
5
|
+
BadRequestErrorResponse,
|
|
6
|
+
ContentPartSchema,
|
|
7
|
+
InternalErrorResponse,
|
|
8
|
+
JsonObjectSchema,
|
|
9
|
+
RequestContentSchema,
|
|
10
|
+
toApiContentPart,
|
|
11
|
+
toContentInput
|
|
12
|
+
} from "../schemas/responses.js";
|
|
3
13
|
const QueuedMessageSchema = z.object({
|
|
4
14
|
id: z.string().describe("Unique identifier for the queued message"),
|
|
5
15
|
content: z.array(ContentPartSchema).describe("Message content parts"),
|
|
6
16
|
queuedAt: z.number().describe("Unix timestamp when message was queued"),
|
|
7
|
-
metadata:
|
|
17
|
+
metadata: JsonObjectSchema.optional().describe("Optional metadata"),
|
|
8
18
|
kind: z.enum(["default", "background"]).optional().describe("Optional queued message kind")
|
|
9
19
|
}).strict().describe("A message waiting in the queue");
|
|
10
|
-
const TextPartSchema = z.object({
|
|
11
|
-
type: z.literal("text").describe("Content type identifier"),
|
|
12
|
-
text: z.string().describe("Text content")
|
|
13
|
-
}).describe("Text content part");
|
|
14
|
-
const ImagePartSchema = z.object({
|
|
15
|
-
type: z.literal("image").describe("Content type identifier"),
|
|
16
|
-
image: z.string().describe("Base64-encoded image data or URL"),
|
|
17
|
-
mimeType: z.string().optional().describe("MIME type (e.g., image/png)")
|
|
18
|
-
}).describe("Image content part");
|
|
19
|
-
const FilePartSchema = z.object({
|
|
20
|
-
type: z.literal("file").describe("Content type identifier"),
|
|
21
|
-
data: z.string().describe("Base64-encoded file data or URL"),
|
|
22
|
-
mimeType: z.string().describe("MIME type (e.g., application/pdf)"),
|
|
23
|
-
filename: z.string().optional().describe("Optional filename")
|
|
24
|
-
}).describe("File content part");
|
|
25
|
-
const QueueContentPartSchema = z.discriminatedUnion("type", [TextPartSchema, ImagePartSchema, FilePartSchema]).describe("Content part - text, image, or file");
|
|
26
20
|
const QueueMessageBodySchema = z.object({
|
|
27
|
-
content:
|
|
21
|
+
content: RequestContentSchema,
|
|
28
22
|
kind: z.enum(["default", "background"]).optional().describe("Optional queued message kind")
|
|
29
23
|
}).describe("Request body for queueing a message");
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
24
|
+
const GetQueueResponseSchema = z.object({
|
|
25
|
+
messages: z.array(QueuedMessageSchema).describe("Queued messages"),
|
|
26
|
+
count: z.number().describe("Number of messages in queue")
|
|
27
|
+
}).strict().describe("Get queue response");
|
|
28
|
+
const QueueMessageResponseSchema = z.object({
|
|
29
|
+
queued: z.literal(true).describe("Indicates message was queued"),
|
|
30
|
+
id: z.string().describe("ID of the queued message"),
|
|
31
|
+
position: z.number().describe("Position in the queue (1-based)")
|
|
32
|
+
}).strict().describe("Queue message response");
|
|
33
|
+
const RemoveQueuedMessageResponseSchema = z.object({
|
|
34
|
+
removed: z.literal(true).describe("Indicates message was removed"),
|
|
35
|
+
id: z.string().describe("ID of the removed message")
|
|
36
|
+
}).strict().describe("Remove queued message response");
|
|
37
|
+
const ClearQueueResponseSchema = z.object({
|
|
38
|
+
cleared: z.literal(true).describe("Indicates queue was cleared"),
|
|
39
|
+
count: z.number().describe("Number of messages that were removed")
|
|
40
|
+
}).strict().describe("Clear queue response");
|
|
41
|
+
const QueueSessionParamSchema = z.object({
|
|
42
|
+
sessionId: z.string().min(1).describe("Session ID")
|
|
43
|
+
}).describe("Queue session params");
|
|
44
|
+
const QueueMessageParamSchema = z.object({
|
|
45
|
+
sessionId: z.string().min(1).describe("Session ID"),
|
|
46
|
+
messageId: z.string().min(1).describe("ID of the queued message to remove")
|
|
47
|
+
}).describe("Queue message identifier params");
|
|
48
|
+
const getQueueRoute = createRoute({
|
|
49
|
+
method: "get",
|
|
50
|
+
path: "/queue/{sessionId}",
|
|
51
|
+
summary: "Get queued messages",
|
|
52
|
+
description: "Returns all messages waiting in the queue for a session",
|
|
53
|
+
tags: ["queue"],
|
|
54
|
+
request: {
|
|
55
|
+
params: QueueSessionParamSchema
|
|
56
|
+
},
|
|
57
|
+
responses: {
|
|
58
|
+
200: {
|
|
59
|
+
description: "List of queued messages",
|
|
60
|
+
content: {
|
|
61
|
+
"application/json": {
|
|
62
|
+
schema: GetQueueResponseSchema
|
|
53
63
|
}
|
|
54
|
-
},
|
|
55
|
-
404: { description: "Session not found" }
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
const queueMessageRoute = createRoute({
|
|
59
|
-
method: "post",
|
|
60
|
-
path: "/queue/{sessionId}",
|
|
61
|
-
summary: "Queue a message",
|
|
62
|
-
description: "Adds a message to the queue for processing when the session is no longer busy",
|
|
63
|
-
tags: ["queue"],
|
|
64
|
-
request: {
|
|
65
|
-
params: z.object({
|
|
66
|
-
sessionId: z.string().min(1).describe("Session ID")
|
|
67
|
-
}),
|
|
68
|
-
body: {
|
|
69
|
-
content: { "application/json": { schema: QueueMessageBodySchema } }
|
|
70
64
|
}
|
|
71
65
|
},
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
66
|
+
404: {
|
|
67
|
+
description: "Session not found",
|
|
68
|
+
content: { "application/json": { schema: ApiErrorResponseSchema } }
|
|
69
|
+
},
|
|
70
|
+
400: BadRequestErrorResponse,
|
|
71
|
+
500: InternalErrorResponse
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const queueMessageRoute = createRoute({
|
|
75
|
+
method: "post",
|
|
76
|
+
path: "/queue/{sessionId}",
|
|
77
|
+
summary: "Queue a message",
|
|
78
|
+
description: "Adds a message to the queue for processing when the session is no longer busy",
|
|
79
|
+
tags: ["queue"],
|
|
80
|
+
request: {
|
|
81
|
+
params: QueueSessionParamSchema,
|
|
82
|
+
body: {
|
|
83
|
+
content: { "application/json": { schema: QueueMessageBodySchema } }
|
|
86
84
|
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
85
|
+
},
|
|
86
|
+
responses: {
|
|
87
|
+
201: {
|
|
88
|
+
description: "Message queued successfully",
|
|
89
|
+
content: {
|
|
90
|
+
"application/json": {
|
|
91
|
+
schema: QueueMessageResponseSchema
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
404: {
|
|
96
|
+
description: "Session not found",
|
|
97
|
+
content: { "application/json": { schema: ApiErrorResponseSchema } }
|
|
99
98
|
},
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
99
|
+
400: BadRequestErrorResponse,
|
|
100
|
+
500: InternalErrorResponse
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
const removeQueuedMessageRoute = createRoute({
|
|
104
|
+
method: "delete",
|
|
105
|
+
path: "/queue/{sessionId}/{messageId}",
|
|
106
|
+
summary: "Remove queued message",
|
|
107
|
+
description: "Removes a specific message from the queue",
|
|
108
|
+
tags: ["queue"],
|
|
109
|
+
request: {
|
|
110
|
+
params: QueueMessageParamSchema
|
|
111
|
+
},
|
|
112
|
+
responses: {
|
|
113
|
+
200: {
|
|
114
|
+
description: "Message removed successfully",
|
|
115
|
+
content: {
|
|
116
|
+
"application/json": {
|
|
117
|
+
schema: RemoveQueuedMessageResponseSchema
|
|
110
118
|
}
|
|
111
|
-
}
|
|
112
|
-
404: { description: "Session or message not found" }
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
const clearQueueRoute = createRoute({
|
|
116
|
-
method: "delete",
|
|
117
|
-
path: "/queue/{sessionId}",
|
|
118
|
-
summary: "Clear message queue",
|
|
119
|
-
description: "Removes all messages from the queue for a session",
|
|
120
|
-
tags: ["queue"],
|
|
121
|
-
request: {
|
|
122
|
-
params: z.object({
|
|
123
|
-
sessionId: z.string().min(1).describe("Session ID")
|
|
124
|
-
})
|
|
119
|
+
}
|
|
125
120
|
},
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
121
|
+
404: {
|
|
122
|
+
description: "Session or message not found",
|
|
123
|
+
content: { "application/json": { schema: ApiErrorResponseSchema } }
|
|
124
|
+
},
|
|
125
|
+
400: BadRequestErrorResponse,
|
|
126
|
+
500: InternalErrorResponse
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
const clearQueueRoute = createRoute({
|
|
130
|
+
method: "delete",
|
|
131
|
+
path: "/queue/{sessionId}",
|
|
132
|
+
summary: "Clear message queue",
|
|
133
|
+
description: "Removes all messages from the queue for a session",
|
|
134
|
+
tags: ["queue"],
|
|
135
|
+
request: {
|
|
136
|
+
params: QueueSessionParamSchema
|
|
137
|
+
},
|
|
138
|
+
responses: {
|
|
139
|
+
200: {
|
|
140
|
+
description: "Queue cleared successfully",
|
|
141
|
+
content: {
|
|
142
|
+
"application/json": {
|
|
143
|
+
schema: ClearQueueResponseSchema
|
|
136
144
|
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
404: {
|
|
148
|
+
description: "Session not found",
|
|
149
|
+
content: { "application/json": { schema: ApiErrorResponseSchema } }
|
|
150
|
+
},
|
|
151
|
+
400: BadRequestErrorResponse,
|
|
152
|
+
500: InternalErrorResponse
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
function createQueueRouter(getAgent) {
|
|
156
|
+
const app = new OpenAPIHono();
|
|
141
157
|
return app.openapi(getQueueRoute, async (ctx) => {
|
|
142
158
|
const agent = await getAgent(ctx);
|
|
143
159
|
const { sessionId } = ctx.req.valid("param");
|
|
144
160
|
const messages = await agent.getQueuedMessages(sessionId);
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
161
|
+
const responseMessages = messages.map((message) => ({
|
|
162
|
+
id: message.id,
|
|
163
|
+
content: message.content.map(toApiContentPart),
|
|
164
|
+
queuedAt: message.queuedAt,
|
|
165
|
+
...message.metadata !== void 0 ? { metadata: message.metadata } : {},
|
|
166
|
+
...message.kind !== void 0 ? { kind: message.kind } : {}
|
|
167
|
+
}));
|
|
168
|
+
return ctx.json(
|
|
169
|
+
GetQueueResponseSchema.parse({
|
|
170
|
+
messages: responseMessages,
|
|
171
|
+
count: responseMessages.length
|
|
172
|
+
}),
|
|
173
|
+
200
|
|
174
|
+
);
|
|
149
175
|
}).openapi(queueMessageRoute, async (ctx) => {
|
|
150
176
|
const agent = await getAgent(ctx);
|
|
151
177
|
const { sessionId } = ctx.req.valid("param");
|
|
152
178
|
const { content: rawContent } = ctx.req.valid("json");
|
|
153
|
-
const content =
|
|
179
|
+
const content = toContentInput(rawContent);
|
|
154
180
|
const { kind } = ctx.req.valid("json");
|
|
155
181
|
const result = await agent.queueMessage(sessionId, {
|
|
156
182
|
content,
|
|
157
183
|
...kind !== void 0 && { kind }
|
|
158
184
|
});
|
|
159
185
|
return ctx.json(
|
|
160
|
-
{
|
|
161
|
-
queued:
|
|
186
|
+
QueueMessageResponseSchema.parse({
|
|
187
|
+
queued: true,
|
|
162
188
|
id: result.id,
|
|
163
189
|
position: result.position
|
|
164
|
-
},
|
|
190
|
+
}),
|
|
165
191
|
201
|
|
166
192
|
);
|
|
167
193
|
}).openapi(removeQueuedMessageRoute, async (ctx) => {
|
|
@@ -169,14 +195,23 @@ function createQueueRouter(getAgent) {
|
|
|
169
195
|
const { sessionId, messageId } = ctx.req.valid("param");
|
|
170
196
|
const removed = await agent.removeQueuedMessage(sessionId, messageId);
|
|
171
197
|
if (!removed) {
|
|
172
|
-
|
|
198
|
+
throw new DextoRuntimeError(
|
|
199
|
+
"queued_message_not_found",
|
|
200
|
+
"queue",
|
|
201
|
+
ErrorType.NOT_FOUND,
|
|
202
|
+
"Message not found in queue",
|
|
203
|
+
{ sessionId, messageId }
|
|
204
|
+
);
|
|
173
205
|
}
|
|
174
|
-
return ctx.json(
|
|
206
|
+
return ctx.json(
|
|
207
|
+
RemoveQueuedMessageResponseSchema.parse({ removed: true, id: messageId }),
|
|
208
|
+
200
|
|
209
|
+
);
|
|
175
210
|
}).openapi(clearQueueRoute, async (ctx) => {
|
|
176
211
|
const agent = await getAgent(ctx);
|
|
177
212
|
const { sessionId } = ctx.req.valid("param");
|
|
178
213
|
const count = await agent.clearMessageQueue(sessionId);
|
|
179
|
-
return ctx.json({ cleared: true, count });
|
|
214
|
+
return ctx.json(ClearQueueResponseSchema.parse({ cleared: true, count }), 200);
|
|
180
215
|
});
|
|
181
216
|
}
|
|
182
217
|
export {
|
|
@@ -40,63 +40,82 @@ const ReadResourceResponseSchema = import_zod_openapi.z.object({
|
|
|
40
40
|
ok: import_zod_openapi.z.literal(true).describe("Indicates successful response"),
|
|
41
41
|
content: import_zod_openapi.z.object({
|
|
42
42
|
contents: import_zod_openapi.z.array(ResourceContentItemSchema).describe("Array of content items (typically one item)"),
|
|
43
|
-
_meta:
|
|
43
|
+
_meta: import_responses.JsonObjectSchema.optional().describe("Optional metadata about the resource")
|
|
44
44
|
}).strict().describe("Resource content from MCP ReadResourceResult")
|
|
45
45
|
}).strict().describe("Resource content response");
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
description: "List all resources",
|
|
57
|
-
content: { "application/json": { schema: ListResourcesResponseSchema } }
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
const getContentRoute = (0, import_zod_openapi.createRoute)({
|
|
62
|
-
method: "get",
|
|
63
|
-
path: "/resources/{resourceId}/content",
|
|
64
|
-
summary: "Read Resource Content",
|
|
65
|
-
description: "Reads the content of a specific resource by its URI. The resource ID in the URL must be URI-encoded",
|
|
66
|
-
tags: ["resources"],
|
|
67
|
-
request: {
|
|
68
|
-
params: ResourceIdParamSchema
|
|
46
|
+
const listRoute = (0, import_zod_openapi.createRoute)({
|
|
47
|
+
method: "get",
|
|
48
|
+
path: "/resources",
|
|
49
|
+
summary: "List All Resources",
|
|
50
|
+
description: "Retrieves a list of all available resources from all sources (MCP servers and internal providers)",
|
|
51
|
+
tags: ["resources"],
|
|
52
|
+
responses: {
|
|
53
|
+
200: {
|
|
54
|
+
description: "List all resources",
|
|
55
|
+
content: { "application/json": { schema: ListResourcesResponseSchema } }
|
|
69
56
|
},
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
57
|
+
500: import_responses.InternalErrorResponse
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
const getContentRoute = (0, import_zod_openapi.createRoute)({
|
|
61
|
+
method: "get",
|
|
62
|
+
path: "/resources/{resourceId}/content",
|
|
63
|
+
summary: "Read Resource Content",
|
|
64
|
+
description: "Reads the content of a specific resource by its URI. The resource ID in the URL must be URI-encoded",
|
|
65
|
+
tags: ["resources"],
|
|
66
|
+
request: {
|
|
67
|
+
params: ResourceIdParamSchema
|
|
68
|
+
},
|
|
69
|
+
responses: {
|
|
70
|
+
200: {
|
|
71
|
+
description: "Resource content",
|
|
72
|
+
content: { "application/json": { schema: ReadResourceResponseSchema } }
|
|
85
73
|
},
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
74
|
+
400: import_responses.BadRequestErrorResponse,
|
|
75
|
+
404: import_responses.NotFoundErrorResponse,
|
|
76
|
+
500: import_responses.InternalErrorResponse
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
const headRoute = (0, import_zod_openapi.createRoute)({
|
|
80
|
+
method: "head",
|
|
81
|
+
path: "/resources/{resourceId}",
|
|
82
|
+
summary: "Check Resource Exists",
|
|
83
|
+
description: "Checks if a resource exists by its URI without retrieving its content",
|
|
84
|
+
tags: ["resources"],
|
|
85
|
+
request: {
|
|
86
|
+
params: ResourceIdParamSchema
|
|
87
|
+
},
|
|
88
|
+
responses: {
|
|
89
|
+
200: { description: "Resource exists" },
|
|
90
|
+
404: { description: "Resource not found" }
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
function toJsonValue(value) {
|
|
94
|
+
return JSON.parse(JSON.stringify(value));
|
|
95
|
+
}
|
|
96
|
+
function createResourcesRouter(getAgent) {
|
|
97
|
+
const app = new import_zod_openapi.OpenAPIHono();
|
|
91
98
|
return app.openapi(listRoute, async (ctx) => {
|
|
92
99
|
const agent = await getAgent(ctx);
|
|
93
100
|
const resources = await agent.listResources();
|
|
94
|
-
return ctx.json(
|
|
101
|
+
return ctx.json(
|
|
102
|
+
ListResourcesResponseSchema.parse({
|
|
103
|
+
ok: true,
|
|
104
|
+
resources: toJsonValue(Object.values(resources))
|
|
105
|
+
}),
|
|
106
|
+
200
|
|
107
|
+
);
|
|
95
108
|
}).openapi(getContentRoute, async (ctx) => {
|
|
96
109
|
const agent = await getAgent(ctx);
|
|
97
110
|
const { resourceId } = ctx.req.valid("param");
|
|
98
111
|
const content = await agent.readResource(resourceId);
|
|
99
|
-
return ctx.json(
|
|
112
|
+
return ctx.json(
|
|
113
|
+
ReadResourceResponseSchema.parse({
|
|
114
|
+
ok: true,
|
|
115
|
+
content: toJsonValue(content)
|
|
116
|
+
}),
|
|
117
|
+
200
|
|
118
|
+
);
|
|
100
119
|
}).openapi(headRoute, async (ctx) => {
|
|
101
120
|
const agent = await getAgent(ctx);
|
|
102
121
|
const { resourceId } = ctx.req.valid("param");
|