@assemblyline-agents/node 5.0.9 → 6.0.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 (57) hide show
  1. package/dist/adapters.d.ts.map +1 -1
  2. package/dist/adapters.js +6 -5
  3. package/dist/adapters.js.map +1 -1
  4. package/dist/admin-http-routes.d.ts +3 -0
  5. package/dist/admin-http-routes.d.ts.map +1 -0
  6. package/dist/admin-http-routes.js +285 -0
  7. package/dist/admin-http-routes.js.map +1 -0
  8. package/dist/auth.d.ts +1 -1
  9. package/dist/auth.d.ts.map +1 -1
  10. package/dist/auth.js +2 -16
  11. package/dist/auth.js.map +1 -1
  12. package/dist/conversation-http-routes.d.ts +3 -0
  13. package/dist/conversation-http-routes.d.ts.map +1 -0
  14. package/dist/conversation-http-routes.js +206 -0
  15. package/dist/conversation-http-routes.js.map +1 -0
  16. package/dist/core-http-routes.d.ts +3 -0
  17. package/dist/core-http-routes.d.ts.map +1 -0
  18. package/dist/core-http-routes.js +112 -0
  19. package/dist/core-http-routes.js.map +1 -0
  20. package/dist/http-io.d.ts +1 -1
  21. package/dist/http-io.d.ts.map +1 -1
  22. package/dist/index.d.ts +9 -39
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +44 -882
  25. package/dist/index.js.map +1 -1
  26. package/dist/ingress-http-routes.d.ts +3 -0
  27. package/dist/ingress-http-routes.d.ts.map +1 -0
  28. package/dist/ingress-http-routes.js +210 -0
  29. package/dist/ingress-http-routes.js.map +1 -0
  30. package/dist/model-auth.d.ts.map +1 -1
  31. package/dist/model-auth.js +22 -21
  32. package/dist/model-auth.js.map +1 -1
  33. package/dist/node-types.d.ts +24 -0
  34. package/dist/node-types.d.ts.map +1 -0
  35. package/dist/node-types.js +2 -0
  36. package/dist/node-types.js.map +1 -0
  37. package/dist/provider-resolver.d.ts +2 -2
  38. package/dist/provider-resolver.d.ts.map +1 -1
  39. package/dist/provider-resolver.js +2 -2
  40. package/dist/provider-resolver.js.map +1 -1
  41. package/dist/run-http-routes.d.ts +3 -0
  42. package/dist/run-http-routes.d.ts.map +1 -0
  43. package/dist/run-http-routes.js +252 -0
  44. package/dist/run-http-routes.js.map +1 -0
  45. package/dist/runtime-http-route.d.ts +14 -0
  46. package/dist/runtime-http-route.d.ts.map +1 -0
  47. package/dist/runtime-http-route.js +2 -0
  48. package/dist/runtime-http-route.js.map +1 -0
  49. package/dist/secrets.d.ts +3 -13
  50. package/dist/secrets.d.ts.map +1 -1
  51. package/dist/secrets.js +6 -16
  52. package/dist/secrets.js.map +1 -1
  53. package/dist/usage-http.d.ts +2 -2
  54. package/dist/usage-http.d.ts.map +1 -1
  55. package/dist/usage-http.js +14 -78
  56. package/dist/usage-http.js.map +1 -1
  57. package/package.json +11 -11
@@ -0,0 +1,206 @@
1
+ import { RunCapacityError, retryAfterSeconds, } from "@assemblyline-agents/runtime";
2
+ import { apiRunCreationEnabled, authorizeOrSend, rateLimitOrSend, stringBodyValue, } from "./auth.js";
3
+ import { firstHeaderValue, maxRequestBodyBytes, readBody, send, summarizeRun, } from "./http-io.js";
4
+ import { serveStreamingRun } from "./run-stream-http.js";
5
+ import { DIRECT_CHANNEL, conversationBelongsToAgent, decodeConversationCursor, decodeMessageCursor, directAgentScope, directConversationPatch, directTurnFromBody, encodeConversationCursor, encodeMessageCursor, parseConversationHttpRoute, } from "./direct-conversations-http.js";
6
+ export const handleConversationHttpRoutes = async (request, response, url, context) => {
7
+ const { runtime, options, rateLimit } = context;
8
+ const conversationRoute = parseConversationHttpRoute(url.pathname);
9
+ if (conversationRoute?.kind === "collection" && request.method === "GET") {
10
+ if (!(await authorizeOrSend(request, response, runtime, options, "admin-read", url.pathname)))
11
+ return true;
12
+ if (!runtime.state.listConversations) {
13
+ send(response, 501, {
14
+ error: "The configured state adapter does not support conversation listing.",
15
+ });
16
+ return true;
17
+ }
18
+ const cursorValue = url.searchParams.get("cursor");
19
+ const before = decodeConversationCursor(cursorValue);
20
+ if (cursorValue && !before) {
21
+ send(response, 400, { error: "Invalid conversation cursor." });
22
+ return true;
23
+ }
24
+ const limitParam = Number(url.searchParams.get("limit"));
25
+ const limit = Number.isFinite(limitParam) && limitParam > 0
26
+ ? Math.min(Math.floor(limitParam), 100)
27
+ : 40;
28
+ const archivedValue = url.searchParams.get("archived");
29
+ const archived = archivedValue === "true"
30
+ ? true
31
+ : archivedValue === "all"
32
+ ? undefined
33
+ : false;
34
+ const listed = await runtime.state.listConversations({
35
+ agentScope: directAgentScope(options.manifest),
36
+ channel: url.searchParams.get("channel") || DIRECT_CHANNEL,
37
+ ...(url.searchParams.get("subject")
38
+ ? { subject: url.searchParams.get("subject") }
39
+ : {}),
40
+ ...(archived !== undefined ? { archived } : {}),
41
+ ...(before ? { before } : {}),
42
+ limit: limit + 1,
43
+ });
44
+ const hasMore = listed.length > limit;
45
+ const conversations = listed.slice(0, limit);
46
+ send(response, 200, {
47
+ conversations,
48
+ nextCursor: hasMore && conversations.length > 0
49
+ ? encodeConversationCursor(conversations[conversations.length - 1])
50
+ : null,
51
+ });
52
+ return true;
53
+ }
54
+ if (conversationRoute?.kind === "messages" && request.method === "GET") {
55
+ if (!(await authorizeOrSend(request, response, runtime, options, "admin-read", url.pathname)))
56
+ return true;
57
+ const conversation = await runtime.state.getConversation(conversationRoute.conversationId);
58
+ if (!conversation ||
59
+ !conversationBelongsToAgent(conversation, directAgentScope(options.manifest))) {
60
+ send(response, 404, { error: "Conversation not found." });
61
+ return true;
62
+ }
63
+ const cursorValue = url.searchParams.get("before");
64
+ const before = decodeMessageCursor(cursorValue);
65
+ if (cursorValue && !before) {
66
+ send(response, 400, { error: "Invalid message cursor." });
67
+ return true;
68
+ }
69
+ const limitParam = Number(url.searchParams.get("limit"));
70
+ const limit = Number.isFinite(limitParam) && limitParam > 0
71
+ ? Math.min(Math.floor(limitParam), 100)
72
+ : 50;
73
+ const listed = runtime.state.listMessages
74
+ ? await runtime.state.listMessages({
75
+ conversationId: conversation.id,
76
+ ...(before ? { before } : {}),
77
+ limit: limit + 1,
78
+ })
79
+ : before
80
+ ? []
81
+ : await runtime.state.listRecentMessages(conversation.id, limit + 1);
82
+ if (before && !runtime.state.listMessages) {
83
+ send(response, 501, {
84
+ error: "The configured state adapter does not support message pagination.",
85
+ });
86
+ return true;
87
+ }
88
+ const hasMore = listed.length > limit;
89
+ const messages = hasMore ? listed.slice(1) : listed;
90
+ send(response, 200, {
91
+ messages,
92
+ nextCursor: hasMore && messages.length > 0
93
+ ? encodeMessageCursor(messages[0])
94
+ : null,
95
+ });
96
+ return true;
97
+ }
98
+ if (conversationRoute?.kind === "record" && request.method === "PATCH") {
99
+ if (!(await authorizeOrSend(request, response, runtime, options, "agent-control", url.pathname)))
100
+ return true;
101
+ if (!runtime.state.updateConversation) {
102
+ send(response, 501, {
103
+ error: "The configured state adapter does not support conversation updates.",
104
+ });
105
+ return true;
106
+ }
107
+ const existing = await runtime.state.getConversation(conversationRoute.conversationId);
108
+ if (!existing ||
109
+ !conversationBelongsToAgent(existing, directAgentScope(options.manifest))) {
110
+ send(response, 404, { error: "Conversation not found." });
111
+ return true;
112
+ }
113
+ const { body } = await readBody(request, maxRequestBodyBytes(runtime, options));
114
+ const patch = directConversationPatch(body);
115
+ if (Object.keys(patch).length === 0) {
116
+ send(response, 400, {
117
+ error: "Provide a title, archived flag, or metadata patch.",
118
+ });
119
+ return true;
120
+ }
121
+ send(response, 200, await runtime.state.updateConversation(existing.id, patch));
122
+ return true;
123
+ }
124
+ if (conversationRoute?.kind === "turns" && request.method === "POST") {
125
+ context.setChannel(DIRECT_CHANNEL);
126
+ if (!apiRunCreationEnabled(runtime, options)) {
127
+ send(response, 403, { error: "API run creation is disabled." });
128
+ return true;
129
+ }
130
+ if (!(await authorizeOrSend(request, response, runtime, options, "run-create", url.pathname)))
131
+ return true;
132
+ if (!(await rateLimitOrSend(request, response, rateLimit, "run-create", url.pathname, DIRECT_CHANNEL)))
133
+ return true;
134
+ const existing = await runtime.state.getConversation(conversationRoute.conversationId);
135
+ if (existing &&
136
+ !conversationBelongsToAgent(existing, directAgentScope(options.manifest))) {
137
+ send(response, 404, { error: "Conversation not found." });
138
+ return true;
139
+ }
140
+ if (existing?.channel && existing.channel !== DIRECT_CHANNEL) {
141
+ send(response, 409, {
142
+ error: `Conversation belongs to channel ${existing.channel}.`,
143
+ });
144
+ return true;
145
+ }
146
+ if (existing?.archivedAt) {
147
+ send(response, 409, {
148
+ error: "Archived conversations cannot accept new turns.",
149
+ });
150
+ return true;
151
+ }
152
+ const { body } = await readBody(request, maxRequestBodyBytes(runtime, options));
153
+ const idempotencyKey = firstHeaderValue(request.headers["idempotency-key"]);
154
+ const direct = directTurnFromBody({
155
+ conversationId: conversationRoute.conversationId,
156
+ body,
157
+ ...(idempotencyKey ? { idempotencyKey } : {}),
158
+ });
159
+ if (!direct.turn.message && !direct.turn.attachments?.length) {
160
+ send(response, 400, { error: "A message or attachment is required." });
161
+ return true;
162
+ }
163
+ const workspaceId = stringBodyValue(body.workspaceId);
164
+ const projectId = stringBodyValue(body.projectId);
165
+ const tenantId = stringBodyValue(body.tenantId);
166
+ const runOptions = {
167
+ message: direct.turn.message,
168
+ channel: DIRECT_CHANNEL,
169
+ approve: direct.approve,
170
+ turn: direct.turn,
171
+ ...(workspaceId ? { workspaceId } : {}),
172
+ ...(projectId ? { projectId } : {}),
173
+ ...(tenantId ? { tenantId } : {}),
174
+ };
175
+ if (body.sandboxCredentials &&
176
+ typeof body.sandboxCredentials === "object" &&
177
+ !Array.isArray(body.sandboxCredentials)) {
178
+ Object.assign(runOptions, {
179
+ sandboxCredentials: body.sandboxCredentials,
180
+ });
181
+ }
182
+ try {
183
+ if (direct.stream) {
184
+ await serveStreamingRun(runtime, response, (onRunCreated) => runtime.run({ ...runOptions, onRunCreated }), (result) => summarizeRun(result));
185
+ return true;
186
+ }
187
+ const result = await runtime.run(runOptions);
188
+ send(response, 200, summarizeRun(result));
189
+ }
190
+ catch (error) {
191
+ if (error instanceof RunCapacityError) {
192
+ send(response, 429, {
193
+ error: "Run capacity exhausted. Retry later.",
194
+ retryAfterMs: error.retryAfterMs,
195
+ }, {
196
+ "retry-after": String(retryAfterSeconds(error.retryAfterMs)),
197
+ });
198
+ return true;
199
+ }
200
+ throw error;
201
+ }
202
+ return true;
203
+ }
204
+ return false;
205
+ };
206
+ //# sourceMappingURL=conversation-http-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-http-routes.js","sourceRoot":"","sources":["../src/conversation-http-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,IAAI,EACJ,YAAY,GACb,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,gCAAgC,CAAC;AAGxC,MAAM,CAAC,MAAM,4BAA4B,GAA4B,KAAK,EACxE,OAAO,EACP,QAAQ,EACR,GAAG,EACH,OAAO,EACP,EAAE;IACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAChD,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnE,IAAI,iBAAiB,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACzE,IACE,CAAC,CAAC,MAAM,eAAe,CACrB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,YAAY,EACZ,GAAG,CAAC,QAAQ,CACb,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAClB,KAAK,EACH,qEAAqE;aACxE,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,CAAC,CAAC;YAC/D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC;YACvC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACvD,MAAM,QAAQ,GACZ,aAAa,KAAK,MAAM;YACtB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,aAAa,KAAK,KAAK;gBACzB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,KAAK,CAAC;QACZ,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;YACnD,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9C,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,cAAc;YAC1D,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;gBACjC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAW,EAAE;gBACxD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,KAAK,EAAE,KAAK,GAAG,CAAC;SACjB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACtC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YAClB,aAAa;YACb,UAAU,EACR,OAAO,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;gBACjC,CAAC,CAAC,wBAAwB,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;gBACpE,CAAC,CAAC,IAAI;SACX,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,iBAAiB,EAAE,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACvE,IACE,CAAC,CAAC,MAAM,eAAe,CACrB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,YAAY,EACZ,GAAG,CAAC,QAAQ,CACb,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,eAAe,CACtD,iBAAiB,CAAC,cAAc,CACjC,CAAC;QACF,IACE,CAAC,YAAY;YACb,CAAC,0BAA0B,CACzB,YAAY,EACZ,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CACnC,EACD,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,MAAM,KAAK,GACT,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC;YAC3C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC;YACvC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY;YACvC,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC/B,cAAc,EAAE,YAAY,CAAC,EAAE;gBAC/B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,KAAK,EAAE,KAAK,GAAG,CAAC;aACjB,CAAC;YACJ,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAClB,KAAK,EACH,mEAAmE;aACtE,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;QACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACpD,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;YAClB,QAAQ;YACR,UAAU,EACR,OAAO,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAC5B,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;gBACnC,CAAC,CAAC,IAAI;SACX,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,iBAAiB,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACvE,IACE,CAAC,CAAC,MAAM,eAAe,CACrB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,eAAe,EACf,GAAG,CAAC,QAAQ,CACb,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAClB,KAAK,EACH,qEAAqE;aACxE,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,eAAe,CAClD,iBAAiB,CAAC,cAAc,CACjC,CAAC;QACF,IACE,CAAC,QAAQ;YACT,CAAC,0BAA0B,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EACzE,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAC7B,OAAO,EACP,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CACtC,CAAC;QACF,MAAM,KAAK,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAClB,KAAK,EAAE,oDAAoD;aAC5D,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CACF,QAAQ,EACR,GAAG,EACH,MAAM,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,CAC3D,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,iBAAiB,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACrE,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QACnC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IACE,CAAC,CAAC,MAAM,eAAe,CACrB,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACP,YAAY,EACZ,GAAG,CAAC,QAAQ,CACb,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,IACE,CAAC,CAAC,MAAM,eAAe,CACrB,OAAO,EACP,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,GAAG,CAAC,QAAQ,EACZ,cAAc,CACf,CAAC;YAEF,OAAO,IAAI,CAAC;QACd,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,eAAe,CAClD,iBAAiB,CAAC,cAAc,CACjC,CAAC;QACF,IACE,QAAQ;YACR,CAAC,0BAA0B,CAAC,QAAQ,EAAE,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EACzE,CAAC;YACD,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAClB,KAAK,EAAE,mCAAmC,QAAQ,CAAC,OAAO,GAAG;aAC9D,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,EAAE,UAAU,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE;gBAClB,KAAK,EAAE,iDAAiD;aACzD,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAC7B,OAAO,EACP,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CACtC,CAAC;QACF,MAAM,cAAc,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,kBAAkB,CAAC;YAChC,cAAc,EAAE,iBAAiB,CAAC,cAAc;YAChD,IAAI;YACJ,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YAC7D,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACvE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG;YACjB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;YAC5B,OAAO,EAAE,cAAc;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClC,CAAC;QACF,IACE,IAAI,CAAC,kBAAkB;YACvB,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ;YAC3C,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,EACvC,CAAC;YACD,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;gBACxB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;aAC5C,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC;YACH,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,iBAAiB,CACrB,OAAO,EACP,QAAQ,EACR,CAAC,YAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,GAAG,UAAU,EAAE,YAAY,EAAE,CAAC,EAC9D,CAAC,MAAM,EAAE,EAAE,CACT,YAAY,CAAC,MAAiD,CAAC,CAClE,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,gBAAgB,EAAE,CAAC;gBACtC,IAAI,CACF,QAAQ,EACR,GAAG,EACH;oBACE,KAAK,EAAE,sCAAsC;oBAC7C,YAAY,EAAE,KAAK,CAAC,YAAY;iBACjC,EACD;oBACE,aAAa,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;iBAC7D,CACF,CAAC;gBACF,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { RuntimeHttpRouteHandler } from "./runtime-http-route.js";
2
+ export declare const handleCoreHttpRoutes: RuntimeHttpRouteHandler;
3
+ //# sourceMappingURL=core-http-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-http-routes.d.ts","sourceRoot":"","sources":["../src/core-http-routes.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,eAAO,MAAM,oBAAoB,EAAE,uBAiNlC,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { authorizeOrSend, evalRunsEnabled, rateLimitOrSend } from "./auth.js";
2
+ import { firstHeaderValue, maxRequestBodyBytes, readBody, send, } from "./http-io.js";
3
+ import { parseAgentControlRoute } from "./route-match.js";
4
+ import { isWorkspaceAdminPath, workspaceAdminHttpResult, } from "./workspace-admin-http.js";
5
+ export const handleCoreHttpRoutes = async (request, response, url, context) => {
6
+ const { runtime, options, rateLimit, drain } = context;
7
+ if (request.method === "GET" && url.pathname === "/health") {
8
+ if (!(await authorizeOrSend(request, response, runtime, options, "public-health", url.pathname)))
9
+ return true;
10
+ send(response, 200, revisionHealth(options.manifest));
11
+ return true;
12
+ }
13
+ if (request.method === "GET" && url.pathname === "/healthz") {
14
+ if (!(await authorizeOrSend(request, response, runtime, options, "public-health", url.pathname)))
15
+ return true;
16
+ send(response, 200, {
17
+ ok: true,
18
+ agentRevision: options.manifest.agentRevision,
19
+ buildRevision: options.manifest.buildRevision ?? options.manifest.agentRevision,
20
+ capabilities: evalRunsEnabled(runtime, options) ? ["eval-runs"] : [],
21
+ });
22
+ return true;
23
+ }
24
+ if (request.method === "GET" && url.pathname === "/readyz") {
25
+ // Readiness (vs /health liveness): 503 while draining so load
26
+ // balancers stop routing new traffic during graceful shutdown.
27
+ if (!(await authorizeOrSend(request, response, runtime, options, "public-health", url.pathname)))
28
+ return true;
29
+ if (drain.draining) {
30
+ send(response, 503, {
31
+ ...revisionHealth(options.manifest),
32
+ ok: false,
33
+ draining: true,
34
+ });
35
+ return true;
36
+ }
37
+ send(response, 200, revisionHealth(options.manifest));
38
+ return true;
39
+ }
40
+ if (request.method === "GET" && url.pathname === "/manifest") {
41
+ if (!(await authorizeOrSend(request, response, runtime, options, "admin-read", url.pathname)))
42
+ return true;
43
+ send(response, 200, options.manifest);
44
+ return true;
45
+ }
46
+ if (request.method === "GET" && url.pathname === "/routes") {
47
+ if (!(await authorizeOrSend(request, response, runtime, options, "admin-read", url.pathname)))
48
+ return true;
49
+ send(response, 200, options.manifest.routeTable);
50
+ return true;
51
+ }
52
+ const agentControlRoute = parseAgentControlRoute(url.pathname);
53
+ if (agentControlRoute &&
54
+ request.method === "GET" &&
55
+ agentControlRoute.kind === "control") {
56
+ if (!(await authorizeOrSend(request, response, runtime, options, "agent-control", url.pathname)))
57
+ return true;
58
+ send(response, 200, await runtime.getAgentControl());
59
+ return true;
60
+ }
61
+ if (agentControlRoute &&
62
+ request.method === "POST" &&
63
+ agentControlRoute.kind !== "control") {
64
+ if (!(await authorizeOrSend(request, response, runtime, options, "agent-control", url.pathname)))
65
+ return true;
66
+ if (!(await rateLimitOrSend(request, response, rateLimit, "agent-control", url.pathname)))
67
+ return true;
68
+ const requestId = firstHeaderValue(request.headers["x-request-id"]);
69
+ const metadata = {
70
+ source: "http",
71
+ path: url.pathname,
72
+ ...(requestId ? { requestId } : {}),
73
+ };
74
+ const result = agentControlRoute.kind === "quiesce" ||
75
+ agentControlRoute.kind === "resume"
76
+ ? await runtime.setAgentMaintenance(agentControlRoute.kind === "quiesce", metadata)
77
+ : await runtime.setAgentEnabled(agentControlRoute.kind === "enable", metadata);
78
+ send(response, 200, result);
79
+ return true;
80
+ }
81
+ if (isWorkspaceAdminPath(url.pathname)) {
82
+ const method = request.method ?? "GET";
83
+ if (!["GET", "POST", "DELETE"].includes(method)) {
84
+ send(response, 405, { error: "Method not allowed." });
85
+ return true;
86
+ }
87
+ if (!(await authorizeOrSend(request, response, runtime, options, method === "GET" ? "admin-read" : "agent-control", url.pathname)))
88
+ return true;
89
+ try {
90
+ const body = method === "POST"
91
+ ? (await readBody(request, maxRequestBodyBytes(runtime, options)))
92
+ .body
93
+ : {};
94
+ send(response, 200, await workspaceAdminHttpResult(runtime, method, url.pathname, body, url.searchParams));
95
+ }
96
+ catch (error) {
97
+ send(response, 400, {
98
+ error: error instanceof Error ? error.message : String(error),
99
+ });
100
+ }
101
+ return true;
102
+ }
103
+ return false;
104
+ };
105
+ function revisionHealth(manifest) {
106
+ return {
107
+ ok: true,
108
+ agentRevision: manifest.agentRevision,
109
+ buildRevision: manifest.buildRevision ?? manifest.agentRevision,
110
+ };
111
+ }
112
+ //# sourceMappingURL=core-http-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-http-routes.js","sourceRoot":"","sources":["../src/core-http-routes.ts"],"names":[],"mappings":"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"}
package/dist/http-io.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { IncomingMessage, ServerResponse } from "node:http";
2
2
  import type { JsonObject } from "@assemblyline-agents/core";
3
3
  import type { AssemblyLineRuntime, RunAgentResult } from "@assemblyline-agents/runtime";
4
- import type { NodeRuntimeServerOptions } from "./index.js";
4
+ import type { NodeRuntimeServerOptions } from "./node-types.js";
5
5
  export declare class HttpRequestError extends Error {
6
6
  readonly status: number;
7
7
  constructor(status: number, message: string);
@@ -1 +1 @@
1
- {"version":3,"file":"http-io.d.ts","sourceRoot":"","sources":["../src/http-io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAK3D,qBAAa,gBAAiB,SAAQ,KAAK;IAEvC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM;CAKlB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAI3G;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAiCnJ;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO5F;AAMD,wBAAgB,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,IAAI,CAWxH;AAOD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAW/D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAGxE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGzF"}
1
+ {"version":3,"file":"http-io.d.ts","sourceRoot":"","sources":["../src/http-io.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACxF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAKhE,qBAAa,gBAAiB,SAAQ,KAAK;IAEvC,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM;CAKlB;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAI3G;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAiCnJ;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO5F;AAMD,wBAAgB,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,IAAI,CAWxH;AAOD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,UAAU,CAW/D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,CAGxE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGzF"}
package/dist/index.d.ts CHANGED
@@ -1,46 +1,16 @@
1
1
  import { type Server } from "node:http";
2
- import { type AdapterDefinition, type JsonObject } from "@assemblyline-agents/core";
3
- import { AssemblyLineRuntime, type RuntimeOptions } from "@assemblyline-agents/runtime";
4
- import { type RuntimeAuthPolicy } from "./auth.js";
5
- import { type IngressRateLimitPolicy } from "./rate-limit.js";
2
+ import { type JsonObject } from "@assemblyline-agents/core";
3
+ import { type RuntimeOptions } from "@assemblyline-agents/runtime";
6
4
  import { type NodeRuntimeHandle } from "./lifecycle.js";
7
- export { resolveProvider, type ProviderResolution } from "./provider-resolver.js";
5
+ import type { NodeAdapter, NodeRuntimeServerOptions, ProductionRuntimeOptions } from "./node-types.js";
6
+ export type { NodeAdapter, NodeRuntimeServerOptions, ProductionRuntimeOptions, } from "./node-types.js";
7
+ export { resolveProvider, type ProviderResolution, } from "./provider-resolver.js";
8
+ export { createCredentialBoundary, resolveCredentialInventory, resolveGatewayCredentials, resolveGatewayEnvironment, type CreateCredentialBoundaryOptions, type CredentialBoundary, } from "./secrets.js";
8
9
  export { createModelCredentialStore } from "./adapters.js";
10
+ export { createMemoryRateLimiterStore, parseRateLimitSpec, resolveIngressRateLimit, type IngressRateLimitClass, type IngressRateLimitPolicy, type IngressRateLimitRequest, type RateLimitDecision, type RateLimitTakeOptions, type RateLimiterStore, type ResolvedIngressRateLimit, } from "./rate-limit.js";
11
+ export { createNodeRuntimeHandle, installSignalHandlers, type NodeRuntimeHandle, type NodeRuntimeHandleInput, type NodeRuntimeShutdownOptions, type RuntimeDrainState, type SignalHandlerOptions, } from "./lifecycle.js";
12
+ export type { RuntimeAuthDecision, RuntimeAuthPolicy, RuntimeAuthRequest, RuntimeRouteClass, } from "./auth.js";
9
13
  export { runModelProviderAuth, type ModelProviderAuthOptions, type ModelProviderAuthStatus } from "./model-auth.js";
10
- export { createCredentialBoundary, resolveCredentialInventory, resolveGatewayCredentials, resolveGatewayEnvironment, type CreateCredentialBoundaryOptions, type CredentialBoundary } from "./secrets.js";
11
- export { createMemoryRateLimiterStore, parseRateLimitSpec, resolveIngressRateLimit, type IngressRateLimitClass, type IngressRateLimitPolicy, type IngressRateLimitRequest, type RateLimitDecision, type RateLimitTakeOptions, type RateLimiterStore, type ResolvedIngressRateLimit } from "./rate-limit.js";
12
- export { createNodeRuntimeHandle, installSignalHandlers, type NodeRuntimeHandle, type NodeRuntimeHandleInput, type NodeRuntimeShutdownOptions, type RuntimeDrainState, type SignalHandlerOptions } from "./lifecycle.js";
13
- export type { RuntimeAuthDecision, RuntimeAuthPolicy, RuntimeAuthRequest, RuntimeRouteClass } from "./auth.js";
14
- export interface NodeAdapter extends AdapterDefinition {
15
- kind: "node";
16
- }
17
- export interface NodeRuntimeServerOptions extends RuntimeOptions {
18
- port?: number;
19
- host?: string;
20
- runtime?: AssemblyLineRuntime;
21
- auth?: RuntimeAuthPolicy;
22
- allowApiRuns?: boolean;
23
- /** Accept the POST /runs `eval` block (stubs/auto-approve/record-only). Env: ASSEMBLY_LINE_ENABLE_EVAL_RUNS. */
24
- allowEvalRuns?: boolean;
25
- maxRequestBodyBytes?: number;
26
- /**
27
- * Ingress rate limiting for provider-channel/run-create/scheduler routes.
28
- * Default off; `false` disables even the `ASSEMBLY_LINE_*_RATE_LIMIT` env config.
29
- */
30
- rateLimit?: IngressRateLimitPolicy | false;
31
- /**
32
- * Install SIGTERM/SIGINT graceful-shutdown handlers so a redeploy/restart
33
- * drains in-flight runs instead of hard-killing them. Default on; set to
34
- * `false` (or `ASSEMBLY_LINE_SIGNAL_HANDLERS=false`) to opt out, e.g. when the host
35
- * process manages signals itself.
36
- */
37
- installSignalHandlers?: boolean;
38
- }
39
- export interface ProductionRuntimeOptions {
40
- artifactRoot: string;
41
- env?: NodeJS.ProcessEnv;
42
- devMode?: boolean;
43
- }
44
14
  export declare function nodeAdapter(options?: JsonObject): NodeAdapter;
45
15
  export declare function createProductionRuntimeOptions(options: ProductionRuntimeOptions): Promise<RuntimeOptions>;
46
16
  export declare function createNodeRuntimeServer(options: NodeRuntimeServerOptions): Server;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAGL,KAAK,iBAAiB,EAItB,KAAK,UAAU,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,mBAAmB,EAQnB,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAkBtC,OAAO,EAUL,KAAK,iBAAiB,EACvB,MAAM,WAAW,CAAC;AAsBnB,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,gBAAgB,CAAC;AAgBxB,OAAO,EAAE,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,+BAA+B,EACpC,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,WAAW,CAAC;AAEnB,MAAM,WAAW,WAAY,SAAQ,iBAAiB;IACpD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAyB,SAAQ,cAAc;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gHAAgH;IAChH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,SAAS,CAAC,EAAE,sBAAsB,GAAG,KAAK,CAAC;IAC3C;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,OAAO,GAAE,UAAe,GAAG,WAAW,CAMjE;AAED,wBAAsB,8BAA8B,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC,CA6C/G;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAKjF;AA0zBD,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2DrG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AActC,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,gBAAgB,CAAC;AAMxB,OAAO,KAAK,EACV,WAAW,EACX,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,iBAAiB,CAAC;AAEzB,YAAY,EACV,WAAW,EACX,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,GACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,KAAK,+BAA+B,EACpC,KAAK,kBAAkB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EACL,4BAA4B,EAC5B,kBAAkB,EAClB,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,GAC9B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC7B,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,WAAW,CAAC,OAAO,GAAE,UAAe,GAAG,WAAW,CAMjE;AAED,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,cAAc,CAAC,CAuEzB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,wBAAwB,GAChC,MAAM,CAKR;AAkED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CA+D5B"}