@dexto/server 1.6.20 → 1.6.22
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/approval/wire-approval-events.cjs +44 -0
- package/dist/approval/wire-approval-events.d.ts +4 -0
- package/dist/approval/wire-approval-events.d.ts.map +1 -0
- package/dist/approval/wire-approval-events.js +20 -0
- package/dist/events/session-sse-subscriber.cjs +167 -0
- package/dist/events/session-sse-subscriber.d.ts +13 -0
- package/dist/events/session-sse-subscriber.d.ts.map +1 -0
- package/dist/events/session-sse-subscriber.js +143 -0
- package/dist/hono/__tests__/test-fixtures.cjs +8 -0
- package/dist/hono/__tests__/test-fixtures.d.ts +1 -0
- package/dist/hono/__tests__/test-fixtures.d.ts.map +1 -1
- package/dist/hono/__tests__/test-fixtures.js +8 -0
- package/dist/hono/index.cjs +40 -8
- package/dist/hono/index.d.ts +45 -4531
- package/dist/hono/index.d.ts.map +1 -1
- package/dist/hono/index.js +43 -9
- package/dist/hono/node/index.cjs +51 -6
- package/dist/hono/node/index.d.ts.map +1 -1
- package/dist/hono/node/index.js +51 -6
- package/dist/hono/routes/a2a-jsonrpc.d.ts.map +1 -1
- package/dist/hono/routes/a2a-tasks.cjs +158 -32
- package/dist/hono/routes/a2a-tasks.d.ts +1 -502
- package/dist/hono/routes/a2a-tasks.d.ts.map +1 -1
- package/dist/hono/routes/a2a-tasks.js +162 -32
- 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 +16043 -68
- package/dist/hono/routes/agents.d.ts.map +1 -1
- package/dist/hono/routes/agents.js +418 -330
- package/dist/hono/routes/approvals.cjs +102 -88
- package/dist/hono/routes/approvals.d.ts +2089 -142
- package/dist/hono/routes/approvals.d.ts.map +1 -1
- package/dist/hono/routes/approvals.js +108 -89
- 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 +382 -349
- package/dist/hono/routes/llm.d.ts +12148 -98
- package/dist/hono/routes/llm.d.ts.map +1 -1
- package/dist/hono/routes/llm.js +386 -349
- package/dist/hono/routes/mcp.cjs +257 -226
- package/dist/hono/routes/mcp.d.ts +6605 -309
- package/dist/hono/routes/mcp.d.ts.map +1 -1
- package/dist/hono/routes/mcp.js +263 -225
- 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 +189 -191
- package/dist/hono/routes/messages.d.ts +3900 -12
- package/dist/hono/routes/messages.d.ts.map +1 -1
- package/dist/hono/routes/messages.js +192 -191
- package/dist/hono/routes/models.cjs +106 -64
- package/dist/hono/routes/models.d.ts +2875 -2
- 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 +136 -109
- package/dist/hono/routes/prompts.d.ts +2818 -10
- package/dist/hono/routes/prompts.d.ts.map +1 -1
- package/dist/hono/routes/prompts.js +138 -109
- package/dist/hono/routes/queue.cjs +133 -120
- package/dist/hono/routes/queue.d.ts +5240 -11
- package/dist/hono/routes/queue.d.ts.map +1 -1
- package/dist/hono/routes/queue.js +136 -120
- 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 +4198 -22
- 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 +3094 -17
- package/dist/hono/routes/search.d.ts.map +1 -1
- package/dist/hono/routes/search.js +40 -31
- package/dist/hono/routes/sessions.cjs +491 -393
- package/dist/hono/routes/sessions.d.ts +18263 -65
- package/dist/hono/routes/sessions.d.ts.map +1 -1
- package/dist/hono/routes/sessions.js +497 -395
- 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 +1755 -6
- package/dist/hono/routes/tools.d.ts.map +1 -1
- package/dist/hono/routes/tools.js +33 -33
- package/dist/hono/routes/webhooks.cjs +115 -123
- package/dist/hono/routes/webhooks.d.ts +2501 -11
- package/dist/hono/routes/webhooks.d.ts.map +1 -1
- package/dist/hono/routes/webhooks.js +120 -124
- 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 +463 -260
- package/dist/hono/schemas/responses.d.ts +1893 -209
- package/dist/hono/schemas/responses.d.ts.map +1 -1
- package/dist/hono/schemas/responses.js +203 -14
- package/dist/hono/start-server.cjs +9 -0
- package/dist/hono/start-server.d.ts.map +1 -1
- package/dist/hono/start-server.js +9 -0
- package/dist/hono/types.d.ts +11 -0
- package/dist/hono/types.d.ts.map +1 -1
- package/dist/index.cjs +5 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- 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,
|
|
1
|
+
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../../src/hono/routes/approvals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAe,CAAC,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAOlF,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAElE,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoGyC,CAAC;AAwClE,QAAA,MAAM,8BAA8B;;;;;;EAI4B,CAAC;AAEjE,QAAA,MAAM,qBAAqB;;;;;;EAIgB,CAAC;AAE5C,QAAA,MAAM,qBAAqB;;;;;;EAOc,CAAC;AAE1C,QAAA,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsB5B,CAAC;AAEH,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCvB,CAAC;AASH,wBAAgB,qBAAqB,CACjC,QAAQ,EAAE,UAAU,EACpB,mBAAmB,CAAC,EAAE,mBAAmB,GAC1C,WAAW,CAuHb;AAED,KAAK,8BAA8B,GAAG,kBAAkB,CACpD,OAAO,wBAAwB,EAC/B;IAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAA;CAAE,CAC5D,CAAC;AAEF,KAAK,yBAAyB,GAAG,kBAAkB,CAC/C,OAAO,mBAAmB,EAC1B;IACI,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;CACjD,CACJ,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,8BAA8B,GAAG,yBAAyB,CAAC"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
|
|
2
2
|
import { DenialReason, ApprovalStatus, ApprovalError } from "@dexto/core";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
ApiErrorResponseSchema,
|
|
5
|
+
BadRequestErrorResponse,
|
|
6
|
+
InternalErrorResponse,
|
|
7
|
+
JsonObjectSchema
|
|
8
|
+
} from "../schemas/responses.js";
|
|
4
9
|
const ApprovalBodySchema = z.object({
|
|
5
10
|
status: z.enum([ApprovalStatus.APPROVED, ApprovalStatus.DENIED, ApprovalStatus.CANCELLED]).describe("The user decision"),
|
|
6
|
-
formData:
|
|
11
|
+
formData: JsonObjectSchema.optional().describe(
|
|
12
|
+
"Optional form data provided by the user (for elicitation)"
|
|
13
|
+
),
|
|
7
14
|
rememberChoice: z.boolean().optional().describe("Whether to remember this choice for future requests"),
|
|
8
15
|
rememberPattern: z.string().optional().describe("Optional approval pattern to remember for future requests"),
|
|
9
16
|
rememberDirectory: z.boolean().optional().describe("Whether to remember the approved directory for future requests"),
|
|
@@ -88,98 +95,111 @@ const PendingApprovalSchema = z.object({
|
|
|
88
95
|
sessionId: z.string().optional().describe("The session ID if applicable"),
|
|
89
96
|
timeout: z.number().optional().describe("Timeout in milliseconds"),
|
|
90
97
|
timestamp: z.string().describe("ISO timestamp when the request was created"),
|
|
91
|
-
metadata:
|
|
98
|
+
metadata: JsonObjectSchema.describe("Type-specific metadata for the pending approval")
|
|
92
99
|
}).describe("A pending approval request");
|
|
93
100
|
const PendingApprovalsResponseSchema = z.object({
|
|
94
101
|
ok: z.literal(true).describe("Success indicator"),
|
|
95
102
|
approvals: z.array(PendingApprovalSchema).describe("List of pending approval requests")
|
|
96
103
|
}).describe("Response containing pending approval requests");
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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
|
|
117
128
|
}
|
|
118
129
|
}
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
const submitApprovalRoute = createRoute({
|
|
122
|
-
method: "post",
|
|
123
|
-
path: "/approvals/{approvalId}",
|
|
124
|
-
summary: "Submit Approval Decision",
|
|
125
|
-
description: "Submit a user decision for a pending approval request",
|
|
126
|
-
tags: ["approvals"],
|
|
127
|
-
request: {
|
|
128
|
-
params: z.object({
|
|
129
|
-
approvalId: z.string().describe("The ID of the approval request")
|
|
130
|
-
}),
|
|
131
|
-
body: {
|
|
132
|
-
content: { "application/json": { schema: ApprovalBodySchema } }
|
|
133
|
-
},
|
|
134
|
-
headers: z.object({
|
|
135
|
-
"Idempotency-Key": z.string().optional().describe("Optional key to ensure idempotent processing")
|
|
136
|
-
})
|
|
137
130
|
},
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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
|
|
145
154
|
}
|
|
146
|
-
},
|
|
147
|
-
404: {
|
|
148
|
-
description: "Approval request not found or expired",
|
|
149
|
-
content: { "application/json": { schema: ApiErrorResponseSchema } }
|
|
150
|
-
},
|
|
151
|
-
400: {
|
|
152
|
-
description: "Validation error",
|
|
153
|
-
content: { "application/json": { schema: ApiErrorResponseSchema } }
|
|
154
|
-
},
|
|
155
|
-
503: {
|
|
156
|
-
description: "Approval coordinator unavailable (server not initialized for approvals)",
|
|
157
|
-
content: { "application/json": { schema: ApprovalResponseSchema } }
|
|
158
|
-
},
|
|
159
|
-
500: {
|
|
160
|
-
description: "Approval processing failed",
|
|
161
|
-
content: { "application/json": { schema: ApprovalResponseSchema } }
|
|
162
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 } }
|
|
163
172
|
}
|
|
164
|
-
}
|
|
165
|
-
|
|
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) => {
|
|
166
182
|
const agent = await getAgent(ctx);
|
|
167
183
|
const { sessionId } = ctx.req.valid("query");
|
|
168
184
|
agent.logger.debug(`Fetching pending approvals for session ${sessionId}`);
|
|
169
|
-
const
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
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)
|
|
177
192
|
}));
|
|
178
|
-
return ctx.json(
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
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) => {
|
|
183
203
|
const agent = await getAgent(ctx);
|
|
184
204
|
const { approvalId } = ctx.req.valid("param");
|
|
185
205
|
const {
|
|
@@ -194,7 +214,8 @@ function createApprovalsRouter(getAgent, approvalCoordinator) {
|
|
|
194
214
|
agent.logger.info(`Received approval decision for ${approvalId}: ${status}`);
|
|
195
215
|
if (!approvalCoordinator) {
|
|
196
216
|
agent.logger.error("ApprovalCoordinator not available");
|
|
197
|
-
|
|
217
|
+
const response = { ok: false, approvalId, status };
|
|
218
|
+
return ctx.json(response, 503);
|
|
198
219
|
}
|
|
199
220
|
const pendingApprovals = agent.services.approvalManager.getPendingApprovals();
|
|
200
221
|
if (!pendingApprovals.includes(approvalId)) {
|
|
@@ -232,19 +253,17 @@ function createApprovalsRouter(getAgent, approvalCoordinator) {
|
|
|
232
253
|
...Object.keys(data).length > 0 ? { data } : {}
|
|
233
254
|
};
|
|
234
255
|
approvalCoordinator.emitResponse(responsePayload);
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
ok: true,
|
|
238
|
-
approvalId,
|
|
239
|
-
status
|
|
240
|
-
},
|
|
241
|
-
200
|
|
242
|
-
);
|
|
256
|
+
const response = { ok: true, approvalId, status };
|
|
257
|
+
return ctx.json(response, 200);
|
|
243
258
|
} catch (error) {
|
|
244
259
|
agent.logger.error("Error processing approval", { approvalId, error });
|
|
245
|
-
|
|
260
|
+
const response = { ok: false, approvalId, status };
|
|
261
|
+
return ctx.json(response, 500);
|
|
246
262
|
}
|
|
247
263
|
});
|
|
264
|
+
mountApprovalsSubrouter(app, getPendingApprovalsRouter);
|
|
265
|
+
mountApprovalsSubrouter(app, submitApprovalRouter);
|
|
266
|
+
return app;
|
|
248
267
|
}
|
|
249
268
|
export {
|
|
250
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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:
|