@dexto/server 1.2.6 → 1.4.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 (60) 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 +2 -2
  8. package/dist/hono/__tests__/test-fixtures.d.ts.map +1 -1
  9. package/dist/hono/__tests__/test-fixtures.js +2 -2
  10. package/dist/hono/index.cjs +14 -2
  11. package/dist/hono/index.d.ts +486 -132
  12. package/dist/hono/index.d.ts.map +1 -1
  13. package/dist/hono/index.js +17 -2
  14. package/dist/hono/middleware/error.d.ts.map +1 -1
  15. package/dist/hono/routes/agents.cjs +8 -10
  16. package/dist/hono/routes/agents.d.ts +15 -8
  17. package/dist/hono/routes/agents.d.ts.map +1 -1
  18. package/dist/hono/routes/agents.js +10 -10
  19. package/dist/hono/routes/approvals.cjs +52 -1
  20. package/dist/hono/routes/approvals.d.ts +25 -0
  21. package/dist/hono/routes/approvals.d.ts.map +1 -1
  22. package/dist/hono/routes/approvals.js +52 -1
  23. package/dist/hono/routes/llm.cjs +110 -31
  24. package/dist/hono/routes/llm.d.ts +89 -37
  25. package/dist/hono/routes/llm.d.ts.map +1 -1
  26. package/dist/hono/routes/llm.js +108 -25
  27. package/dist/hono/routes/mcp.cjs +8 -4
  28. package/dist/hono/routes/mcp.d.ts +4 -1
  29. package/dist/hono/routes/mcp.d.ts.map +1 -1
  30. package/dist/hono/routes/mcp.js +9 -5
  31. package/dist/hono/routes/memory.d.ts +1 -1
  32. package/dist/hono/routes/messages.cjs +56 -64
  33. package/dist/hono/routes/messages.d.ts +101 -57
  34. package/dist/hono/routes/messages.d.ts.map +1 -1
  35. package/dist/hono/routes/messages.js +57 -65
  36. package/dist/hono/routes/prompts.cjs +2 -2
  37. package/dist/hono/routes/prompts.d.ts +7 -7
  38. package/dist/hono/routes/prompts.js +2 -2
  39. package/dist/hono/routes/queue.cjs +202 -0
  40. package/dist/hono/routes/queue.d.ts +171 -0
  41. package/dist/hono/routes/queue.d.ts.map +1 -0
  42. package/dist/hono/routes/queue.js +178 -0
  43. package/dist/hono/routes/resources.d.ts +1 -1
  44. package/dist/hono/routes/search.cjs +2 -24
  45. package/dist/hono/routes/search.d.ts +43 -15
  46. package/dist/hono/routes/search.d.ts.map +1 -1
  47. package/dist/hono/routes/search.js +3 -25
  48. package/dist/hono/routes/sessions.cjs +65 -11
  49. package/dist/hono/routes/sessions.d.ts +27 -5
  50. package/dist/hono/routes/sessions.d.ts.map +1 -1
  51. package/dist/hono/routes/sessions.js +65 -11
  52. package/dist/hono/routes/static.cjs +77 -0
  53. package/dist/hono/routes/static.d.ts +41 -0
  54. package/dist/hono/routes/static.d.ts.map +1 -0
  55. package/dist/hono/routes/static.js +52 -0
  56. package/dist/hono/schemas/responses.cjs +67 -25
  57. package/dist/hono/schemas/responses.d.ts +2076 -354
  58. package/dist/hono/schemas/responses.d.ts.map +1 -1
  59. package/dist/hono/schemas/responses.js +69 -35
  60. package/package.json +3 -3
@@ -0,0 +1,202 @@
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 queue_exports = {};
20
+ __export(queue_exports, {
21
+ createQueueRouter: () => createQueueRouter
22
+ });
23
+ module.exports = __toCommonJS(queue_exports);
24
+ var import_zod_openapi = require("@hono/zod-openapi");
25
+ var import_responses = require("../schemas/responses.js");
26
+ const QueuedMessageSchema = import_zod_openapi.z.object({
27
+ id: import_zod_openapi.z.string().describe("Unique identifier for the queued message"),
28
+ content: import_zod_openapi.z.array(import_responses.ContentPartSchema).describe("Message content parts"),
29
+ queuedAt: import_zod_openapi.z.number().describe("Unix timestamp when message was queued"),
30
+ metadata: import_zod_openapi.z.record(import_zod_openapi.z.unknown()).optional().describe("Optional metadata")
31
+ }).strict().describe("A message waiting in the queue");
32
+ const TextPartSchema = import_zod_openapi.z.object({
33
+ type: import_zod_openapi.z.literal("text").describe("Content type identifier"),
34
+ text: import_zod_openapi.z.string().describe("Text content")
35
+ }).describe("Text content part");
36
+ const ImagePartSchema = import_zod_openapi.z.object({
37
+ type: import_zod_openapi.z.literal("image").describe("Content type identifier"),
38
+ image: import_zod_openapi.z.string().describe("Base64-encoded image data or URL"),
39
+ mimeType: import_zod_openapi.z.string().optional().describe("MIME type (e.g., image/png)")
40
+ }).describe("Image content part");
41
+ const FilePartSchema = import_zod_openapi.z.object({
42
+ type: import_zod_openapi.z.literal("file").describe("Content type identifier"),
43
+ data: import_zod_openapi.z.string().describe("Base64-encoded file data or URL"),
44
+ mimeType: import_zod_openapi.z.string().describe("MIME type (e.g., application/pdf)"),
45
+ filename: import_zod_openapi.z.string().optional().describe("Optional filename")
46
+ }).describe("File content part");
47
+ const QueueContentPartSchema = import_zod_openapi.z.discriminatedUnion("type", [TextPartSchema, ImagePartSchema, FilePartSchema]).describe("Content part - text, image, or file");
48
+ const QueueMessageBodySchema = import_zod_openapi.z.object({
49
+ content: import_zod_openapi.z.union([import_zod_openapi.z.string(), import_zod_openapi.z.array(QueueContentPartSchema)]).describe("Message content - string for text, or ContentPart[] for multimodal")
50
+ }).describe("Request body for queueing a message");
51
+ function createQueueRouter(getAgent) {
52
+ const app = new import_zod_openapi.OpenAPIHono();
53
+ const getQueueRoute = (0, import_zod_openapi.createRoute)({
54
+ method: "get",
55
+ path: "/queue/{sessionId}",
56
+ summary: "Get queued messages",
57
+ description: "Returns all messages waiting in the queue for a session",
58
+ tags: ["queue"],
59
+ request: {
60
+ params: import_zod_openapi.z.object({
61
+ sessionId: import_zod_openapi.z.string().min(1).describe("Session ID")
62
+ })
63
+ },
64
+ responses: {
65
+ 200: {
66
+ description: "List of queued messages",
67
+ content: {
68
+ "application/json": {
69
+ schema: import_zod_openapi.z.object({
70
+ messages: import_zod_openapi.z.array(QueuedMessageSchema).describe("Queued messages"),
71
+ count: import_zod_openapi.z.number().describe("Number of messages in queue")
72
+ }).strict()
73
+ }
74
+ }
75
+ },
76
+ 404: { description: "Session not found" }
77
+ }
78
+ });
79
+ const queueMessageRoute = (0, import_zod_openapi.createRoute)({
80
+ method: "post",
81
+ path: "/queue/{sessionId}",
82
+ summary: "Queue a message",
83
+ description: "Adds a message to the queue for processing when the session is no longer busy",
84
+ tags: ["queue"],
85
+ request: {
86
+ params: import_zod_openapi.z.object({
87
+ sessionId: import_zod_openapi.z.string().min(1).describe("Session ID")
88
+ }),
89
+ body: {
90
+ content: { "application/json": { schema: QueueMessageBodySchema } }
91
+ }
92
+ },
93
+ responses: {
94
+ 201: {
95
+ description: "Message queued successfully",
96
+ content: {
97
+ "application/json": {
98
+ schema: import_zod_openapi.z.object({
99
+ queued: import_zod_openapi.z.literal(true).describe("Indicates message was queued"),
100
+ id: import_zod_openapi.z.string().describe("ID of the queued message"),
101
+ position: import_zod_openapi.z.number().describe("Position in the queue (1-based)")
102
+ }).strict()
103
+ }
104
+ }
105
+ },
106
+ 404: { description: "Session not found" }
107
+ }
108
+ });
109
+ const removeQueuedMessageRoute = (0, import_zod_openapi.createRoute)({
110
+ method: "delete",
111
+ path: "/queue/{sessionId}/{messageId}",
112
+ summary: "Remove queued message",
113
+ description: "Removes a specific message from the queue",
114
+ tags: ["queue"],
115
+ request: {
116
+ params: import_zod_openapi.z.object({
117
+ sessionId: import_zod_openapi.z.string().min(1).describe("Session ID"),
118
+ messageId: import_zod_openapi.z.string().min(1).describe("ID of the queued message to remove")
119
+ })
120
+ },
121
+ responses: {
122
+ 200: {
123
+ description: "Message removed successfully",
124
+ content: {
125
+ "application/json": {
126
+ schema: import_zod_openapi.z.object({
127
+ removed: import_zod_openapi.z.literal(true).describe("Indicates message was removed"),
128
+ id: import_zod_openapi.z.string().describe("ID of the removed message")
129
+ }).strict()
130
+ }
131
+ }
132
+ },
133
+ 404: { description: "Session or message not found" }
134
+ }
135
+ });
136
+ const clearQueueRoute = (0, import_zod_openapi.createRoute)({
137
+ method: "delete",
138
+ path: "/queue/{sessionId}",
139
+ summary: "Clear message queue",
140
+ description: "Removes all messages from the queue for a session",
141
+ tags: ["queue"],
142
+ request: {
143
+ params: import_zod_openapi.z.object({
144
+ sessionId: import_zod_openapi.z.string().min(1).describe("Session ID")
145
+ })
146
+ },
147
+ responses: {
148
+ 200: {
149
+ description: "Queue cleared successfully",
150
+ content: {
151
+ "application/json": {
152
+ schema: import_zod_openapi.z.object({
153
+ cleared: import_zod_openapi.z.literal(true).describe("Indicates queue was cleared"),
154
+ count: import_zod_openapi.z.number().describe("Number of messages that were removed")
155
+ }).strict()
156
+ }
157
+ }
158
+ },
159
+ 404: { description: "Session not found" }
160
+ }
161
+ });
162
+ return app.openapi(getQueueRoute, async (ctx) => {
163
+ const agent = getAgent();
164
+ const { sessionId } = ctx.req.valid("param");
165
+ const messages = await agent.getQueuedMessages(sessionId);
166
+ return ctx.json({
167
+ messages,
168
+ count: messages.length
169
+ });
170
+ }).openapi(queueMessageRoute, async (ctx) => {
171
+ const agent = getAgent();
172
+ const { sessionId } = ctx.req.valid("param");
173
+ const { content: rawContent } = ctx.req.valid("json");
174
+ const content = typeof rawContent === "string" ? [{ type: "text", text: rawContent }] : rawContent;
175
+ const result = await agent.queueMessage(sessionId, { content });
176
+ return ctx.json(
177
+ {
178
+ queued: result.queued,
179
+ id: result.id,
180
+ position: result.position
181
+ },
182
+ 201
183
+ );
184
+ }).openapi(removeQueuedMessageRoute, async (ctx) => {
185
+ const agent = getAgent();
186
+ const { sessionId, messageId } = ctx.req.valid("param");
187
+ const removed = await agent.removeQueuedMessage(sessionId, messageId);
188
+ if (!removed) {
189
+ return ctx.json({ error: "Message not found in queue" }, 404);
190
+ }
191
+ return ctx.json({ removed: true, id: messageId });
192
+ }).openapi(clearQueueRoute, async (ctx) => {
193
+ const agent = getAgent();
194
+ const { sessionId } = ctx.req.valid("param");
195
+ const count = await agent.clearMessageQueue(sessionId);
196
+ return ctx.json({ cleared: true, count });
197
+ });
198
+ }
199
+ // Annotate the CommonJS export names for ESM import in node:
200
+ 0 && (module.exports = {
201
+ createQueueRouter
202
+ });
@@ -0,0 +1,171 @@
1
+ import { OpenAPIHono } from '@hono/zod-openapi';
2
+ import type { DextoAgent } from '@dexto/core';
3
+ export declare function createQueueRouter(getAgent: () => DextoAgent): OpenAPIHono<import("hono").Env, {
4
+ "/queue/:sessionId": {
5
+ $get: {
6
+ input: {
7
+ param: {
8
+ sessionId: string;
9
+ };
10
+ };
11
+ output: {};
12
+ outputFormat: string;
13
+ status: 404;
14
+ } | {
15
+ input: {
16
+ param: {
17
+ sessionId: string;
18
+ };
19
+ };
20
+ output: {
21
+ messages: {
22
+ content: ({
23
+ type: "text";
24
+ text: string;
25
+ } | {
26
+ type: "image";
27
+ image: string;
28
+ mimeType?: string | undefined;
29
+ } | {
30
+ type: "file";
31
+ mimeType: string;
32
+ data: string;
33
+ filename?: string | undefined;
34
+ } | {
35
+ type: "ui-resource";
36
+ mimeType: string;
37
+ uri: string;
38
+ content?: string | undefined;
39
+ blob?: string | undefined;
40
+ metadata?: {
41
+ title?: string | undefined;
42
+ preferredSize?: {
43
+ width: number;
44
+ height: number;
45
+ } | undefined;
46
+ } | undefined;
47
+ })[];
48
+ id: string;
49
+ queuedAt: number;
50
+ metadata?: {
51
+ [x: string]: import("hono/utils/types").JSONValue;
52
+ } | undefined;
53
+ }[];
54
+ count: number;
55
+ };
56
+ outputFormat: "json";
57
+ status: 200;
58
+ };
59
+ };
60
+ } & {
61
+ "/queue/:sessionId": {
62
+ $post: {
63
+ input: {
64
+ param: {
65
+ sessionId: string;
66
+ };
67
+ } & {
68
+ json: {
69
+ content: string | ({
70
+ type: "text";
71
+ text: string;
72
+ } | {
73
+ type: "image";
74
+ image: string;
75
+ mimeType?: string | undefined;
76
+ } | {
77
+ type: "file";
78
+ mimeType: string;
79
+ data: string;
80
+ filename?: string | undefined;
81
+ })[];
82
+ };
83
+ };
84
+ output: {};
85
+ outputFormat: string;
86
+ status: 404;
87
+ } | {
88
+ input: {
89
+ param: {
90
+ sessionId: string;
91
+ };
92
+ } & {
93
+ json: {
94
+ content: string | ({
95
+ type: "text";
96
+ text: string;
97
+ } | {
98
+ type: "image";
99
+ image: string;
100
+ mimeType?: string | undefined;
101
+ } | {
102
+ type: "file";
103
+ mimeType: string;
104
+ data: string;
105
+ filename?: string | undefined;
106
+ })[];
107
+ };
108
+ };
109
+ output: {
110
+ id: string;
111
+ queued: true;
112
+ position: number;
113
+ };
114
+ outputFormat: "json";
115
+ status: 201;
116
+ };
117
+ };
118
+ } & {
119
+ "/queue/:sessionId/:messageId": {
120
+ $delete: {
121
+ input: {
122
+ param: {
123
+ sessionId: string;
124
+ messageId: string;
125
+ };
126
+ };
127
+ output: {};
128
+ outputFormat: string;
129
+ status: 404;
130
+ } | {
131
+ input: {
132
+ param: {
133
+ sessionId: string;
134
+ messageId: string;
135
+ };
136
+ };
137
+ output: {
138
+ id: string;
139
+ removed: true;
140
+ };
141
+ outputFormat: "json";
142
+ status: 200;
143
+ };
144
+ };
145
+ } & {
146
+ "/queue/:sessionId": {
147
+ $delete: {
148
+ input: {
149
+ param: {
150
+ sessionId: string;
151
+ };
152
+ };
153
+ output: {};
154
+ outputFormat: string;
155
+ status: 404;
156
+ } | {
157
+ input: {
158
+ param: {
159
+ sessionId: string;
160
+ };
161
+ };
162
+ output: {
163
+ count: number;
164
+ cleared: true;
165
+ };
166
+ outputFormat: "json";
167
+ status: 200;
168
+ };
169
+ };
170
+ }, "/">;
171
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/hono/routes/queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAsD3D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAoL3D"}
@@ -0,0 +1,178 @@
1
+ import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
2
+ import { ContentPartSchema } from "../schemas/responses.js";
3
+ const QueuedMessageSchema = z.object({
4
+ id: z.string().describe("Unique identifier for the queued message"),
5
+ content: z.array(ContentPartSchema).describe("Message content parts"),
6
+ queuedAt: z.number().describe("Unix timestamp when message was queued"),
7
+ metadata: z.record(z.unknown()).optional().describe("Optional metadata")
8
+ }).strict().describe("A message waiting in the queue");
9
+ const TextPartSchema = z.object({
10
+ type: z.literal("text").describe("Content type identifier"),
11
+ text: z.string().describe("Text content")
12
+ }).describe("Text content part");
13
+ const ImagePartSchema = z.object({
14
+ type: z.literal("image").describe("Content type identifier"),
15
+ image: z.string().describe("Base64-encoded image data or URL"),
16
+ mimeType: z.string().optional().describe("MIME type (e.g., image/png)")
17
+ }).describe("Image content part");
18
+ const FilePartSchema = z.object({
19
+ type: z.literal("file").describe("Content type identifier"),
20
+ data: z.string().describe("Base64-encoded file data or URL"),
21
+ mimeType: z.string().describe("MIME type (e.g., application/pdf)"),
22
+ filename: z.string().optional().describe("Optional filename")
23
+ }).describe("File content part");
24
+ const QueueContentPartSchema = z.discriminatedUnion("type", [TextPartSchema, ImagePartSchema, FilePartSchema]).describe("Content part - text, image, or file");
25
+ const QueueMessageBodySchema = z.object({
26
+ content: z.union([z.string(), z.array(QueueContentPartSchema)]).describe("Message content - string for text, or ContentPart[] for multimodal")
27
+ }).describe("Request body for queueing a message");
28
+ function createQueueRouter(getAgent) {
29
+ const app = new OpenAPIHono();
30
+ const getQueueRoute = createRoute({
31
+ method: "get",
32
+ path: "/queue/{sessionId}",
33
+ summary: "Get queued messages",
34
+ description: "Returns all messages waiting in the queue for a session",
35
+ tags: ["queue"],
36
+ request: {
37
+ params: z.object({
38
+ sessionId: z.string().min(1).describe("Session ID")
39
+ })
40
+ },
41
+ responses: {
42
+ 200: {
43
+ description: "List of queued messages",
44
+ content: {
45
+ "application/json": {
46
+ schema: z.object({
47
+ messages: z.array(QueuedMessageSchema).describe("Queued messages"),
48
+ count: z.number().describe("Number of messages in queue")
49
+ }).strict()
50
+ }
51
+ }
52
+ },
53
+ 404: { description: "Session not found" }
54
+ }
55
+ });
56
+ const queueMessageRoute = createRoute({
57
+ method: "post",
58
+ path: "/queue/{sessionId}",
59
+ summary: "Queue a message",
60
+ description: "Adds a message to the queue for processing when the session is no longer busy",
61
+ tags: ["queue"],
62
+ request: {
63
+ params: z.object({
64
+ sessionId: z.string().min(1).describe("Session ID")
65
+ }),
66
+ body: {
67
+ content: { "application/json": { schema: QueueMessageBodySchema } }
68
+ }
69
+ },
70
+ responses: {
71
+ 201: {
72
+ description: "Message queued successfully",
73
+ content: {
74
+ "application/json": {
75
+ schema: z.object({
76
+ queued: z.literal(true).describe("Indicates message was queued"),
77
+ id: z.string().describe("ID of the queued message"),
78
+ position: z.number().describe("Position in the queue (1-based)")
79
+ }).strict()
80
+ }
81
+ }
82
+ },
83
+ 404: { description: "Session not found" }
84
+ }
85
+ });
86
+ const removeQueuedMessageRoute = createRoute({
87
+ method: "delete",
88
+ path: "/queue/{sessionId}/{messageId}",
89
+ summary: "Remove queued message",
90
+ description: "Removes a specific message from the queue",
91
+ tags: ["queue"],
92
+ request: {
93
+ params: z.object({
94
+ sessionId: z.string().min(1).describe("Session ID"),
95
+ messageId: z.string().min(1).describe("ID of the queued message to remove")
96
+ })
97
+ },
98
+ responses: {
99
+ 200: {
100
+ description: "Message removed successfully",
101
+ content: {
102
+ "application/json": {
103
+ schema: z.object({
104
+ removed: z.literal(true).describe("Indicates message was removed"),
105
+ id: z.string().describe("ID of the removed message")
106
+ }).strict()
107
+ }
108
+ }
109
+ },
110
+ 404: { description: "Session or message not found" }
111
+ }
112
+ });
113
+ const clearQueueRoute = createRoute({
114
+ method: "delete",
115
+ path: "/queue/{sessionId}",
116
+ summary: "Clear message queue",
117
+ description: "Removes all messages from the queue for a session",
118
+ tags: ["queue"],
119
+ request: {
120
+ params: z.object({
121
+ sessionId: z.string().min(1).describe("Session ID")
122
+ })
123
+ },
124
+ responses: {
125
+ 200: {
126
+ description: "Queue cleared successfully",
127
+ content: {
128
+ "application/json": {
129
+ schema: z.object({
130
+ cleared: z.literal(true).describe("Indicates queue was cleared"),
131
+ count: z.number().describe("Number of messages that were removed")
132
+ }).strict()
133
+ }
134
+ }
135
+ },
136
+ 404: { description: "Session not found" }
137
+ }
138
+ });
139
+ return app.openapi(getQueueRoute, async (ctx) => {
140
+ const agent = getAgent();
141
+ const { sessionId } = ctx.req.valid("param");
142
+ const messages = await agent.getQueuedMessages(sessionId);
143
+ return ctx.json({
144
+ messages,
145
+ count: messages.length
146
+ });
147
+ }).openapi(queueMessageRoute, async (ctx) => {
148
+ const agent = getAgent();
149
+ const { sessionId } = ctx.req.valid("param");
150
+ const { content: rawContent } = ctx.req.valid("json");
151
+ const content = typeof rawContent === "string" ? [{ type: "text", text: rawContent }] : rawContent;
152
+ const result = await agent.queueMessage(sessionId, { content });
153
+ return ctx.json(
154
+ {
155
+ queued: result.queued,
156
+ id: result.id,
157
+ position: result.position
158
+ },
159
+ 201
160
+ );
161
+ }).openapi(removeQueuedMessageRoute, async (ctx) => {
162
+ const agent = getAgent();
163
+ const { sessionId, messageId } = ctx.req.valid("param");
164
+ const removed = await agent.removeQueuedMessage(sessionId, messageId);
165
+ if (!removed) {
166
+ return ctx.json({ error: "Message not found in queue" }, 404);
167
+ }
168
+ return ctx.json({ removed: true, id: messageId });
169
+ }).openapi(clearQueueRoute, async (ctx) => {
170
+ const agent = getAgent();
171
+ const { sessionId } = ctx.req.valid("param");
172
+ const count = await agent.clearMessageQueue(sessionId);
173
+ return ctx.json({ cleared: true, count });
174
+ });
175
+ }
176
+ export {
177
+ createQueueRouter
178
+ };
@@ -11,10 +11,10 @@ export declare function createResourcesRouter(getAgent: () => DextoAgent): OpenA
11
11
  source: "mcp" | "internal";
12
12
  description?: string | undefined;
13
13
  mimeType?: string | undefined;
14
- name?: string | undefined;
15
14
  metadata?: {
16
15
  [x: string]: import("hono/utils/types").JSONValue;
17
16
  } | undefined;
17
+ name?: string | undefined;
18
18
  serverName?: string | undefined;
19
19
  size?: number | undefined;
20
20
  lastModified?: string | undefined;
@@ -45,18 +45,7 @@ function createSearchRouter(getAgent) {
45
45
  responses: {
46
46
  200: {
47
47
  description: "Message search results",
48
- content: {
49
- "application/json": {
50
- schema: import_zod_openapi.z.object({
51
- results: import_zod_openapi.z.array(import_responses.SearchResultSchema).describe("Array of search results"),
52
- total: import_zod_openapi.z.number().int().nonnegative().describe("Total number of results available"),
53
- hasMore: import_zod_openapi.z.boolean().describe(
54
- "Whether there are more results beyond the current page"
55
- ),
56
- query: import_zod_openapi.z.string().describe("Query that was searched")
57
- }).strict().describe("Message search response")
58
- }
59
- }
48
+ content: { "application/json": { schema: import_responses.MessageSearchResponseSchema } }
60
49
  }
61
50
  }
62
51
  });
@@ -70,18 +59,7 @@ function createSearchRouter(getAgent) {
70
59
  responses: {
71
60
  200: {
72
61
  description: "Session search results",
73
- content: {
74
- "application/json": {
75
- schema: import_zod_openapi.z.object({
76
- results: import_zod_openapi.z.array(import_responses.SessionSearchResultSchema).describe("Array of session search results"),
77
- total: import_zod_openapi.z.number().int().nonnegative().describe("Total number of sessions with matches"),
78
- hasMore: import_zod_openapi.z.boolean().describe(
79
- "Always false - session search returns all matching sessions without pagination"
80
- ),
81
- query: import_zod_openapi.z.string().describe("Query that was searched")
82
- }).strict().describe("Session search response")
83
- }
84
- }
62
+ content: { "application/json": { schema: import_responses.SessionSearchResponseSchema } }
85
63
  }
86
64
  }
87
65
  });