@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.
Files changed (133) 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/approval/wire-approval-events.cjs +44 -0
  6. package/dist/approval/wire-approval-events.d.ts +4 -0
  7. package/dist/approval/wire-approval-events.d.ts.map +1 -0
  8. package/dist/approval/wire-approval-events.js +20 -0
  9. package/dist/events/session-sse-subscriber.cjs +167 -0
  10. package/dist/events/session-sse-subscriber.d.ts +13 -0
  11. package/dist/events/session-sse-subscriber.d.ts.map +1 -0
  12. package/dist/events/session-sse-subscriber.js +143 -0
  13. package/dist/hono/__tests__/test-fixtures.cjs +8 -0
  14. package/dist/hono/__tests__/test-fixtures.d.ts +1 -0
  15. package/dist/hono/__tests__/test-fixtures.d.ts.map +1 -1
  16. package/dist/hono/__tests__/test-fixtures.js +8 -0
  17. package/dist/hono/index.cjs +40 -8
  18. package/dist/hono/index.d.ts +45 -4531
  19. package/dist/hono/index.d.ts.map +1 -1
  20. package/dist/hono/index.js +43 -9
  21. package/dist/hono/node/index.cjs +51 -6
  22. package/dist/hono/node/index.d.ts.map +1 -1
  23. package/dist/hono/node/index.js +51 -6
  24. package/dist/hono/routes/a2a-jsonrpc.d.ts.map +1 -1
  25. package/dist/hono/routes/a2a-tasks.cjs +158 -32
  26. package/dist/hono/routes/a2a-tasks.d.ts +1 -502
  27. package/dist/hono/routes/a2a-tasks.d.ts.map +1 -1
  28. package/dist/hono/routes/a2a-tasks.js +162 -32
  29. package/dist/hono/routes/a2a.d.ts.map +1 -1
  30. package/dist/hono/routes/agents.cjs +410 -329
  31. package/dist/hono/routes/agents.d.ts +16043 -68
  32. package/dist/hono/routes/agents.d.ts.map +1 -1
  33. package/dist/hono/routes/agents.js +418 -330
  34. package/dist/hono/routes/approvals.cjs +102 -88
  35. package/dist/hono/routes/approvals.d.ts +2089 -142
  36. package/dist/hono/routes/approvals.d.ts.map +1 -1
  37. package/dist/hono/routes/approvals.js +108 -89
  38. package/dist/hono/routes/dexto-auth.cjs +40 -33
  39. package/dist/hono/routes/dexto-auth.d.ts +401 -2
  40. package/dist/hono/routes/dexto-auth.d.ts.map +1 -1
  41. package/dist/hono/routes/dexto-auth.js +40 -33
  42. package/dist/hono/routes/discovery.cjs +16 -14
  43. package/dist/hono/routes/discovery.d.ts +586 -1
  44. package/dist/hono/routes/discovery.d.ts.map +1 -1
  45. package/dist/hono/routes/discovery.js +16 -14
  46. package/dist/hono/routes/greeting.cjs +26 -22
  47. package/dist/hono/routes/greeting.d.ts +787 -3
  48. package/dist/hono/routes/greeting.d.ts.map +1 -1
  49. package/dist/hono/routes/greeting.js +26 -22
  50. package/dist/hono/routes/health.d.ts +1 -1
  51. package/dist/hono/routes/key.cjs +60 -52
  52. package/dist/hono/routes/key.d.ts +1597 -1
  53. package/dist/hono/routes/key.d.ts.map +1 -1
  54. package/dist/hono/routes/key.js +60 -52
  55. package/dist/hono/routes/llm.cjs +382 -349
  56. package/dist/hono/routes/llm.d.ts +12148 -98
  57. package/dist/hono/routes/llm.d.ts.map +1 -1
  58. package/dist/hono/routes/llm.js +386 -349
  59. package/dist/hono/routes/mcp.cjs +257 -226
  60. package/dist/hono/routes/mcp.d.ts +6605 -309
  61. package/dist/hono/routes/mcp.d.ts.map +1 -1
  62. package/dist/hono/routes/mcp.js +263 -225
  63. package/dist/hono/routes/memory.cjs +102 -89
  64. package/dist/hono/routes/memory.d.ts +5368 -4
  65. package/dist/hono/routes/memory.d.ts.map +1 -1
  66. package/dist/hono/routes/memory.js +108 -90
  67. package/dist/hono/routes/messages.cjs +189 -191
  68. package/dist/hono/routes/messages.d.ts +3900 -12
  69. package/dist/hono/routes/messages.d.ts.map +1 -1
  70. package/dist/hono/routes/messages.js +192 -191
  71. package/dist/hono/routes/models.cjs +106 -64
  72. package/dist/hono/routes/models.d.ts +2875 -2
  73. package/dist/hono/routes/models.d.ts.map +1 -1
  74. package/dist/hono/routes/models.js +108 -64
  75. package/dist/hono/routes/openrouter.cjs +79 -65
  76. package/dist/hono/routes/openrouter.d.ts +854 -1
  77. package/dist/hono/routes/openrouter.d.ts.map +1 -1
  78. package/dist/hono/routes/openrouter.js +79 -65
  79. package/dist/hono/routes/prompts.cjs +136 -109
  80. package/dist/hono/routes/prompts.d.ts +2818 -10
  81. package/dist/hono/routes/prompts.d.ts.map +1 -1
  82. package/dist/hono/routes/prompts.js +138 -109
  83. package/dist/hono/routes/queue.cjs +133 -120
  84. package/dist/hono/routes/queue.d.ts +5240 -11
  85. package/dist/hono/routes/queue.d.ts.map +1 -1
  86. package/dist/hono/routes/queue.js +136 -120
  87. package/dist/hono/routes/resources.cjs +65 -46
  88. package/dist/hono/routes/resources.d.ts +1983 -5
  89. package/dist/hono/routes/resources.d.ts.map +1 -1
  90. package/dist/hono/routes/resources.js +72 -47
  91. package/dist/hono/routes/schedules.cjs +233 -226
  92. package/dist/hono/routes/schedules.d.ts +4198 -22
  93. package/dist/hono/routes/schedules.d.ts.map +1 -1
  94. package/dist/hono/routes/schedules.js +233 -226
  95. package/dist/hono/routes/search.cjs +34 -30
  96. package/dist/hono/routes/search.d.ts +3094 -17
  97. package/dist/hono/routes/search.d.ts.map +1 -1
  98. package/dist/hono/routes/search.js +40 -31
  99. package/dist/hono/routes/sessions.cjs +491 -393
  100. package/dist/hono/routes/sessions.d.ts +18263 -65
  101. package/dist/hono/routes/sessions.d.ts.map +1 -1
  102. package/dist/hono/routes/sessions.js +497 -395
  103. package/dist/hono/routes/static.d.ts.map +1 -1
  104. package/dist/hono/routes/system-prompt.cjs +57 -61
  105. package/dist/hono/routes/system-prompt.d.ts +1228 -2
  106. package/dist/hono/routes/system-prompt.d.ts.map +1 -1
  107. package/dist/hono/routes/system-prompt.js +58 -62
  108. package/dist/hono/routes/tools.cjs +29 -34
  109. package/dist/hono/routes/tools.d.ts +1755 -6
  110. package/dist/hono/routes/tools.d.ts.map +1 -1
  111. package/dist/hono/routes/tools.js +33 -33
  112. package/dist/hono/routes/webhooks.cjs +115 -123
  113. package/dist/hono/routes/webhooks.d.ts +2501 -11
  114. package/dist/hono/routes/webhooks.d.ts.map +1 -1
  115. package/dist/hono/routes/webhooks.js +120 -124
  116. package/dist/hono/routes/workspaces.cjs +84 -79
  117. package/dist/hono/routes/workspaces.d.ts +2093 -2
  118. package/dist/hono/routes/workspaces.d.ts.map +1 -1
  119. package/dist/hono/routes/workspaces.js +89 -80
  120. package/dist/hono/schemas/responses.cjs +463 -260
  121. package/dist/hono/schemas/responses.d.ts +1893 -209
  122. package/dist/hono/schemas/responses.d.ts.map +1 -1
  123. package/dist/hono/schemas/responses.js +203 -14
  124. package/dist/hono/start-server.cjs +9 -0
  125. package/dist/hono/start-server.d.ts.map +1 -1
  126. package/dist/hono/start-server.js +9 -0
  127. package/dist/hono/types.d.ts +11 -0
  128. package/dist/hono/types.d.ts.map +1 -1
  129. package/dist/index.cjs +5 -1
  130. package/dist/index.d.ts +2 -0
  131. package/dist/index.d.ts.map +1 -1
  132. package/dist/index.js +2 -0
  133. 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;AAElF,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6L5C"}
1
+ {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../../src/hono/routes/approvals.ts"],"names":[],"mappings":"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"}
@@ -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 { ApiErrorResponseSchema } from "../schemas/responses.js";
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: 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
+ ),
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: z.record(z.unknown()).describe("Type-specific 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
- function createApprovalsRouter(getAgent, approvalCoordinator) {
98
- const app = new OpenAPIHono();
99
- const getPendingApprovalsRoute = createRoute({
100
- method: "get",
101
- path: "/approvals",
102
- summary: "Get Pending Approvals",
103
- description: "Fetch all pending approval requests for a session. Use this to restore UI state after page refresh.",
104
- tags: ["approvals"],
105
- request: {
106
- query: z.object({
107
- sessionId: z.string().describe("The session ID to fetch pending approvals for")
108
- })
109
- },
110
- responses: {
111
- 200: {
112
- description: "List of pending approval requests",
113
- content: {
114
- "application/json": {
115
- schema: PendingApprovalsResponseSchema
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
- responses: {
139
- 200: {
140
- description: "Approval processed successfully",
141
- content: {
142
- "application/json": {
143
- schema: ApprovalResponseSchema
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
- 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) => {
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 pendingIds = agent.services.approvalManager.getPendingApprovals();
170
- const approvals = pendingIds.map((approvalId) => ({
171
- approvalId,
172
- type: "tool_confirmation",
173
- // Default type
174
- sessionId,
175
- timestamp: (/* @__PURE__ */ new Date()).toISOString(),
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
- ok: true,
180
- approvals
181
- });
182
- }).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) => {
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
- return ctx.json({ ok: false, approvalId, status }, 503);
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
- return ctx.json(
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
- return ctx.json({ ok: false, approvalId, status }, 500);
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
- 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: