@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.
Files changed (111) hide show
  1. package/dist/a2a/jsonrpc/methods.cjs +1 -1
  2. package/dist/a2a/jsonrpc/methods.d.ts +14 -4
  3. package/dist/a2a/jsonrpc/methods.d.ts.map +1 -1
  4. package/dist/a2a/jsonrpc/methods.js +1 -1
  5. package/dist/hono/index.cjs +39 -8
  6. package/dist/hono/index.d.ts +43 -4503
  7. package/dist/hono/index.d.ts.map +1 -1
  8. package/dist/hono/index.js +42 -9
  9. package/dist/hono/routes/a2a-jsonrpc.d.ts.map +1 -1
  10. package/dist/hono/routes/a2a-tasks.cjs +173 -34
  11. package/dist/hono/routes/a2a-tasks.d.ts +1 -498
  12. package/dist/hono/routes/a2a-tasks.d.ts.map +1 -1
  13. package/dist/hono/routes/a2a-tasks.js +177 -34
  14. package/dist/hono/routes/a2a.d.ts.map +1 -1
  15. package/dist/hono/routes/agents.cjs +410 -329
  16. package/dist/hono/routes/agents.d.ts +16048 -73
  17. package/dist/hono/routes/agents.d.ts.map +1 -1
  18. package/dist/hono/routes/agents.js +418 -330
  19. package/dist/hono/routes/approvals.cjs +103 -78
  20. package/dist/hono/routes/approvals.d.ts +2090 -112
  21. package/dist/hono/routes/approvals.d.ts.map +1 -1
  22. package/dist/hono/routes/approvals.js +108 -78
  23. package/dist/hono/routes/dexto-auth.cjs +40 -33
  24. package/dist/hono/routes/dexto-auth.d.ts +401 -2
  25. package/dist/hono/routes/dexto-auth.d.ts.map +1 -1
  26. package/dist/hono/routes/dexto-auth.js +40 -33
  27. package/dist/hono/routes/discovery.cjs +16 -14
  28. package/dist/hono/routes/discovery.d.ts +586 -1
  29. package/dist/hono/routes/discovery.d.ts.map +1 -1
  30. package/dist/hono/routes/discovery.js +16 -14
  31. package/dist/hono/routes/greeting.cjs +26 -22
  32. package/dist/hono/routes/greeting.d.ts +787 -3
  33. package/dist/hono/routes/greeting.d.ts.map +1 -1
  34. package/dist/hono/routes/greeting.js +26 -22
  35. package/dist/hono/routes/health.d.ts +1 -1
  36. package/dist/hono/routes/key.cjs +60 -52
  37. package/dist/hono/routes/key.d.ts +1597 -1
  38. package/dist/hono/routes/key.d.ts.map +1 -1
  39. package/dist/hono/routes/key.js +60 -52
  40. package/dist/hono/routes/llm.cjs +381 -348
  41. package/dist/hono/routes/llm.d.ts +12137 -87
  42. package/dist/hono/routes/llm.d.ts.map +1 -1
  43. package/dist/hono/routes/llm.js +385 -348
  44. package/dist/hono/routes/mcp.cjs +273 -212
  45. package/dist/hono/routes/mcp.d.ts +6605 -316
  46. package/dist/hono/routes/mcp.d.ts.map +1 -1
  47. package/dist/hono/routes/mcp.js +287 -213
  48. package/dist/hono/routes/memory.cjs +102 -89
  49. package/dist/hono/routes/memory.d.ts +5368 -4
  50. package/dist/hono/routes/memory.d.ts.map +1 -1
  51. package/dist/hono/routes/memory.js +108 -90
  52. package/dist/hono/routes/messages.cjs +171 -164
  53. package/dist/hono/routes/messages.d.ts +3899 -10
  54. package/dist/hono/routes/messages.d.ts.map +1 -1
  55. package/dist/hono/routes/messages.js +181 -165
  56. package/dist/hono/routes/models.cjs +106 -64
  57. package/dist/hono/routes/models.d.ts +2874 -1
  58. package/dist/hono/routes/models.d.ts.map +1 -1
  59. package/dist/hono/routes/models.js +108 -64
  60. package/dist/hono/routes/openrouter.cjs +79 -65
  61. package/dist/hono/routes/openrouter.d.ts +854 -1
  62. package/dist/hono/routes/openrouter.d.ts.map +1 -1
  63. package/dist/hono/routes/openrouter.js +79 -65
  64. package/dist/hono/routes/prompts.cjs +137 -104
  65. package/dist/hono/routes/prompts.d.ts +2820 -12
  66. package/dist/hono/routes/prompts.d.ts.map +1 -1
  67. package/dist/hono/routes/prompts.js +144 -105
  68. package/dist/hono/routes/queue.cjs +158 -132
  69. package/dist/hono/routes/queue.d.ts +5148 -13
  70. package/dist/hono/routes/queue.d.ts.map +1 -1
  71. package/dist/hono/routes/queue.js +168 -133
  72. package/dist/hono/routes/resources.cjs +65 -46
  73. package/dist/hono/routes/resources.d.ts +1983 -5
  74. package/dist/hono/routes/resources.d.ts.map +1 -1
  75. package/dist/hono/routes/resources.js +72 -47
  76. package/dist/hono/routes/schedules.cjs +233 -226
  77. package/dist/hono/routes/schedules.d.ts +4202 -26
  78. package/dist/hono/routes/schedules.d.ts.map +1 -1
  79. package/dist/hono/routes/schedules.js +233 -226
  80. package/dist/hono/routes/search.cjs +34 -30
  81. package/dist/hono/routes/search.d.ts +2837 -14
  82. package/dist/hono/routes/search.d.ts.map +1 -1
  83. package/dist/hono/routes/search.js +40 -31
  84. package/dist/hono/routes/sessions.cjs +404 -392
  85. package/dist/hono/routes/sessions.d.ts +16585 -30
  86. package/dist/hono/routes/sessions.d.ts.map +1 -1
  87. package/dist/hono/routes/sessions.js +408 -393
  88. package/dist/hono/routes/static.d.ts.map +1 -1
  89. package/dist/hono/routes/system-prompt.cjs +57 -61
  90. package/dist/hono/routes/system-prompt.d.ts +1228 -2
  91. package/dist/hono/routes/system-prompt.d.ts.map +1 -1
  92. package/dist/hono/routes/system-prompt.js +58 -62
  93. package/dist/hono/routes/tools.cjs +29 -34
  94. package/dist/hono/routes/tools.d.ts +1756 -7
  95. package/dist/hono/routes/tools.d.ts.map +1 -1
  96. package/dist/hono/routes/tools.js +33 -33
  97. package/dist/hono/routes/webhooks.cjs +159 -132
  98. package/dist/hono/routes/webhooks.d.ts +2504 -14
  99. package/dist/hono/routes/webhooks.d.ts.map +1 -1
  100. package/dist/hono/routes/webhooks.js +163 -132
  101. package/dist/hono/routes/workspaces.cjs +84 -79
  102. package/dist/hono/routes/workspaces.d.ts +2093 -2
  103. package/dist/hono/routes/workspaces.d.ts.map +1 -1
  104. package/dist/hono/routes/workspaces.js +89 -80
  105. package/dist/hono/schemas/responses.cjs +492 -235
  106. package/dist/hono/schemas/responses.d.ts +1461 -146
  107. package/dist/hono/schemas/responses.d.ts.map +1 -1
  108. package/dist/hono/schemas/responses.js +247 -9
  109. package/dist/hono/types.d.ts +11 -0
  110. package/dist/hono/types.d.ts.map +1 -1
  111. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../../src/hono/routes/approvals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,KAAK,UAAU,EAA+C,MAAM,aAAa,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACpC,KAAK,UAAU,GAAG,CAAC,GAAG,EAAE,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAqIrE,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,UAAU,EACpB,mBAAmB,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmL5C"}
1
+ {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../../src/hono/routes/approvals.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,16 @@
1
1
  import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
2
2
  import { DenialReason, ApprovalStatus, ApprovalError } from "@dexto/core";
3
+ import {
4
+ ApiErrorResponseSchema,
5
+ BadRequestErrorResponse,
6
+ InternalErrorResponse,
7
+ JsonObjectSchema
8
+ } from "../schemas/responses.js";
3
9
  const ApprovalBodySchema = z.object({
4
10
  status: z.enum([ApprovalStatus.APPROVED, ApprovalStatus.DENIED, ApprovalStatus.CANCELLED]).describe("The user decision"),
5
- formData: z.record(z.unknown()).optional().describe("Optional form data provided by the user (for elicitation)"),
11
+ formData: JsonObjectSchema.optional().describe(
12
+ "Optional form data provided by the user (for elicitation)"
13
+ ),
6
14
  rememberChoice: z.boolean().optional().describe("Whether to remember this choice for future requests"),
7
15
  rememberPattern: z.string().optional().describe("Optional approval pattern to remember for future requests"),
8
16
  rememberDirectory: z.boolean().optional().describe("Whether to remember the approved directory for future requests"),
@@ -87,91 +95,111 @@ const PendingApprovalSchema = z.object({
87
95
  sessionId: z.string().optional().describe("The session ID if applicable"),
88
96
  timeout: z.number().optional().describe("Timeout in milliseconds"),
89
97
  timestamp: z.string().describe("ISO timestamp when the request was created"),
90
- metadata: z.record(z.unknown()).describe("Type-specific metadata")
98
+ metadata: JsonObjectSchema.describe("Type-specific metadata for the pending approval")
91
99
  }).describe("A pending approval request");
92
100
  const PendingApprovalsResponseSchema = z.object({
93
101
  ok: z.literal(true).describe("Success indicator"),
94
102
  approvals: z.array(PendingApprovalSchema).describe("List of pending approval requests")
95
103
  }).describe("Response containing pending approval requests");
96
- function createApprovalsRouter(getAgent, approvalCoordinator) {
97
- const app = new OpenAPIHono();
98
- const getPendingApprovalsRoute = createRoute({
99
- method: "get",
100
- path: "/approvals",
101
- summary: "Get Pending Approvals",
102
- description: "Fetch all pending approval requests for a session. Use this to restore UI state after page refresh.",
103
- tags: ["approvals"],
104
- request: {
105
- query: z.object({
106
- sessionId: z.string().describe("The session ID to fetch pending approvals for")
107
- })
108
- },
109
- responses: {
110
- 200: {
111
- description: "List of pending approval requests",
112
- content: {
113
- "application/json": {
114
- schema: PendingApprovalsResponseSchema
115
- }
104
+ const GetPendingApprovalsQuerySchema = z.object({
105
+ sessionId: z.string().describe("The session ID to fetch pending approvals for")
106
+ }).describe("Query parameters for fetching pending approvals");
107
+ const ApprovalIdParamSchema = z.object({
108
+ approvalId: z.string().describe("The ID of the approval request")
109
+ }).describe("Approval identifier params");
110
+ const ApprovalHeadersSchema = z.object({
111
+ "Idempotency-Key": z.string().optional().describe("Optional key to ensure idempotent processing")
112
+ }).describe("Approval request headers");
113
+ const getPendingApprovalsRoute = createRoute({
114
+ method: "get",
115
+ path: "/approvals",
116
+ summary: "Get Pending Approvals",
117
+ description: "Fetch all pending approval requests for a session. Use this to restore UI state after page refresh.",
118
+ tags: ["approvals"],
119
+ request: {
120
+ query: GetPendingApprovalsQuerySchema
121
+ },
122
+ responses: {
123
+ 200: {
124
+ description: "List of pending approval requests",
125
+ content: {
126
+ "application/json": {
127
+ schema: PendingApprovalsResponseSchema
116
128
  }
117
129
  }
118
- }
119
- });
120
- const submitApprovalRoute = createRoute({
121
- method: "post",
122
- path: "/approvals/{approvalId}",
123
- summary: "Submit Approval Decision",
124
- description: "Submit a user decision for a pending approval request",
125
- tags: ["approvals"],
126
- request: {
127
- params: z.object({
128
- approvalId: z.string().describe("The ID of the approval request")
129
- }),
130
- body: {
131
- content: { "application/json": { schema: ApprovalBodySchema } }
132
- },
133
- headers: z.object({
134
- "Idempotency-Key": z.string().optional().describe("Optional key to ensure idempotent processing")
135
- })
136
130
  },
137
- responses: {
138
- 200: {
139
- description: "Approval processed successfully",
140
- content: {
141
- "application/json": {
142
- schema: ApprovalResponseSchema
143
- }
131
+ 400: BadRequestErrorResponse,
132
+ 500: InternalErrorResponse
133
+ }
134
+ });
135
+ const submitApprovalRoute = createRoute({
136
+ method: "post",
137
+ path: "/approvals/{approvalId}",
138
+ summary: "Submit Approval Decision",
139
+ description: "Submit a user decision for a pending approval request",
140
+ tags: ["approvals"],
141
+ request: {
142
+ params: ApprovalIdParamSchema,
143
+ body: {
144
+ content: { "application/json": { schema: ApprovalBodySchema } }
145
+ },
146
+ headers: ApprovalHeadersSchema
147
+ },
148
+ responses: {
149
+ 200: {
150
+ description: "Approval processed successfully",
151
+ content: {
152
+ "application/json": {
153
+ schema: ApprovalResponseSchema
144
154
  }
145
- },
146
- 404: {
147
- description: "Approval request not found or expired"
148
- },
149
- 400: {
150
- description: "Validation error"
151
- },
152
- 503: {
153
- description: "Approval coordinator unavailable (server not initialized for approvals)"
154
155
  }
156
+ },
157
+ 404: {
158
+ description: "Approval request not found or expired",
159
+ content: { "application/json": { schema: ApiErrorResponseSchema } }
160
+ },
161
+ 400: {
162
+ description: "Validation error",
163
+ content: { "application/json": { schema: ApiErrorResponseSchema } }
164
+ },
165
+ 503: {
166
+ description: "Approval coordinator unavailable (server not initialized for approvals)",
167
+ content: { "application/json": { schema: ApprovalResponseSchema } }
168
+ },
169
+ 500: {
170
+ description: "Approval processing failed",
171
+ content: { "application/json": { schema: ApprovalResponseSchema } }
155
172
  }
156
- });
157
- return app.openapi(getPendingApprovalsRoute, async (ctx) => {
173
+ }
174
+ });
175
+ function mountApprovalsSubrouter(app, router) {
176
+ app.route("/", router);
177
+ }
178
+ function createApprovalsRouter(getAgent, approvalCoordinator) {
179
+ const app = new OpenAPIHono();
180
+ const getPendingApprovalsRouter = new OpenAPIHono();
181
+ getPendingApprovalsRouter.openapi(getPendingApprovalsRoute, async (ctx) => {
158
182
  const agent = await getAgent(ctx);
159
183
  const { sessionId } = ctx.req.valid("query");
160
184
  agent.logger.debug(`Fetching pending approvals for session ${sessionId}`);
161
- const pendingIds = agent.services.approvalManager.getPendingApprovals();
162
- const approvals = pendingIds.map((approvalId) => ({
163
- approvalId,
164
- type: "tool_confirmation",
165
- // Default type
166
- sessionId,
167
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
168
- metadata: {}
185
+ const approvals = agent.services.approvalManager.getPendingApprovalRequests().filter((approvalRequest) => approvalRequest.sessionId === sessionId).map((approvalRequest) => ({
186
+ approvalId: approvalRequest.approvalId,
187
+ type: approvalRequest.type,
188
+ sessionId: approvalRequest.sessionId,
189
+ timeout: approvalRequest.timeout,
190
+ timestamp: approvalRequest.timestamp.toISOString(),
191
+ metadata: JsonObjectSchema.parse(approvalRequest.metadata)
169
192
  }));
170
- return ctx.json({
171
- ok: true,
172
- approvals
173
- });
174
- }).openapi(submitApprovalRoute, async (ctx) => {
193
+ return ctx.json(
194
+ {
195
+ ok: true,
196
+ approvals
197
+ },
198
+ 200
199
+ );
200
+ });
201
+ const submitApprovalRouter = new OpenAPIHono();
202
+ submitApprovalRouter.openapi(submitApprovalRoute, async (ctx) => {
175
203
  const agent = await getAgent(ctx);
176
204
  const { approvalId } = ctx.req.valid("param");
177
205
  const {
@@ -186,7 +214,8 @@ function createApprovalsRouter(getAgent, approvalCoordinator) {
186
214
  agent.logger.info(`Received approval decision for ${approvalId}: ${status}`);
187
215
  if (!approvalCoordinator) {
188
216
  agent.logger.error("ApprovalCoordinator not available");
189
- return ctx.json({ ok: false, approvalId, status }, 503);
217
+ const response = { ok: false, approvalId, status };
218
+ return ctx.json(response, 503);
190
219
  }
191
220
  const pendingApprovals = agent.services.approvalManager.getPendingApprovals();
192
221
  if (!pendingApprovals.includes(approvalId)) {
@@ -224,16 +253,17 @@ function createApprovalsRouter(getAgent, approvalCoordinator) {
224
253
  ...Object.keys(data).length > 0 ? { data } : {}
225
254
  };
226
255
  approvalCoordinator.emitResponse(responsePayload);
227
- return ctx.json({
228
- ok: true,
229
- approvalId,
230
- status
231
- });
256
+ const response = { ok: true, approvalId, status };
257
+ return ctx.json(response, 200);
232
258
  } catch (error) {
233
259
  agent.logger.error("Error processing approval", { approvalId, error });
234
- return ctx.json({ ok: false, approvalId, status }, 500);
260
+ const response = { ok: false, approvalId, status };
261
+ return ctx.json(response, 500);
235
262
  }
236
263
  });
264
+ mountApprovalsSubrouter(app, getPendingApprovalsRouter);
265
+ mountApprovalsSubrouter(app, submitApprovalRouter);
266
+ return app;
237
267
  }
238
268
  export {
239
269
  createApprovalsRouter
@@ -22,48 +22,55 @@ __export(dexto_auth_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(dexto_auth_exports);
24
24
  var import_zod_openapi = require("@hono/zod-openapi");
25
+ var import_responses = require("../schemas/responses.js");
25
26
  var import_agent_management = require("@dexto/agent-management");
26
- function createDextoAuthRouter(_getAgent) {
27
- const app = new import_zod_openapi.OpenAPIHono();
28
- const statusRoute = (0, import_zod_openapi.createRoute)({
29
- method: "get",
30
- path: "/dexto-auth/status",
31
- summary: "Dexto Auth Status",
32
- description: "Returns dexto authentication status. Used by Web UI to check if user can use dexto features.",
33
- tags: ["auth"],
34
- responses: {
35
- 200: {
36
- description: "Dexto auth status",
37
- content: {
38
- "application/json": {
39
- schema: import_zod_openapi.z.object({
40
- enabled: import_zod_openapi.z.boolean().describe("Whether dexto auth feature is enabled"),
41
- authenticated: import_zod_openapi.z.boolean().describe("Whether user is authenticated with dexto"),
42
- canUse: import_zod_openapi.z.boolean().describe(
43
- "Whether user can use dexto (authenticated AND has API key)"
44
- )
45
- })
46
- }
27
+ const DextoAuthStatusResponseSchema = import_zod_openapi.z.object({
28
+ enabled: import_zod_openapi.z.boolean().describe("Whether dexto auth feature is enabled"),
29
+ authenticated: import_zod_openapi.z.boolean().describe("Whether user is authenticated with dexto"),
30
+ canUse: import_zod_openapi.z.boolean().describe("Whether user can use dexto (authenticated AND has API key)")
31
+ }).describe("Dexto auth status response");
32
+ const statusRoute = (0, import_zod_openapi.createRoute)({
33
+ method: "get",
34
+ path: "/dexto-auth/status",
35
+ summary: "Dexto Auth Status",
36
+ description: "Returns dexto authentication status. Used by Web UI to check if user can use dexto features.",
37
+ tags: ["auth"],
38
+ responses: {
39
+ 200: {
40
+ description: "Dexto auth status",
41
+ content: {
42
+ "application/json": {
43
+ schema: DextoAuthStatusResponseSchema
47
44
  }
48
45
  }
49
- }
50
- });
46
+ },
47
+ 500: import_responses.InternalErrorResponse
48
+ }
49
+ });
50
+ function createDextoAuthRouter(_getAgent) {
51
+ const app = new import_zod_openapi.OpenAPIHono();
51
52
  return app.openapi(statusRoute, async (c) => {
52
53
  const enabled = (0, import_agent_management.isDextoAuthEnabled)();
53
54
  if (!enabled) {
54
- return c.json({
55
- enabled: false,
56
- authenticated: false,
57
- canUse: false
58
- });
55
+ return c.json(
56
+ {
57
+ enabled: false,
58
+ authenticated: false,
59
+ canUse: false
60
+ },
61
+ 200
62
+ );
59
63
  }
60
64
  const authenticated = await (0, import_agent_management.isDextoAuthenticated)();
61
65
  const canUse = await (0, import_agent_management.canUseDextoProvider)();
62
- return c.json({
63
- enabled,
64
- authenticated,
65
- canUse
66
- });
66
+ return c.json(
67
+ {
68
+ enabled,
69
+ authenticated,
70
+ canUse
71
+ },
72
+ 200
73
+ );
67
74
  });
68
75
  }
69
76
  // Annotate the CommonJS export names for ESM import in node: