@assemblyline-agents/node 5.0.10 → 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.
- package/dist/adapters.d.ts.map +1 -1
- package/dist/adapters.js +6 -5
- package/dist/adapters.js.map +1 -1
- package/dist/admin-http-routes.d.ts +3 -0
- package/dist/admin-http-routes.d.ts.map +1 -0
- package/dist/admin-http-routes.js +285 -0
- package/dist/admin-http-routes.js.map +1 -0
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +2 -16
- package/dist/auth.js.map +1 -1
- package/dist/conversation-http-routes.d.ts +3 -0
- package/dist/conversation-http-routes.d.ts.map +1 -0
- package/dist/conversation-http-routes.js +206 -0
- package/dist/conversation-http-routes.js.map +1 -0
- package/dist/core-http-routes.d.ts +3 -0
- package/dist/core-http-routes.d.ts.map +1 -0
- package/dist/core-http-routes.js +112 -0
- package/dist/core-http-routes.js.map +1 -0
- package/dist/http-io.d.ts +1 -1
- package/dist/http-io.d.ts.map +1 -1
- package/dist/index.d.ts +9 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -882
- package/dist/index.js.map +1 -1
- package/dist/ingress-http-routes.d.ts +3 -0
- package/dist/ingress-http-routes.d.ts.map +1 -0
- package/dist/ingress-http-routes.js +210 -0
- package/dist/ingress-http-routes.js.map +1 -0
- package/dist/model-auth.d.ts.map +1 -1
- package/dist/model-auth.js +22 -21
- package/dist/model-auth.js.map +1 -1
- package/dist/node-types.d.ts +24 -0
- package/dist/node-types.d.ts.map +1 -0
- package/dist/node-types.js +2 -0
- package/dist/node-types.js.map +1 -0
- package/dist/provider-resolver.d.ts +2 -2
- package/dist/provider-resolver.d.ts.map +1 -1
- package/dist/provider-resolver.js +2 -2
- package/dist/provider-resolver.js.map +1 -1
- package/dist/run-http-routes.d.ts +3 -0
- package/dist/run-http-routes.d.ts.map +1 -0
- package/dist/run-http-routes.js +252 -0
- package/dist/run-http-routes.js.map +1 -0
- package/dist/runtime-http-route.d.ts +14 -0
- package/dist/runtime-http-route.d.ts.map +1 -0
- package/dist/runtime-http-route.js +2 -0
- package/dist/runtime-http-route.js.map +1 -0
- package/dist/secrets.d.ts +3 -13
- package/dist/secrets.d.ts.map +1 -1
- package/dist/secrets.js +6 -16
- package/dist/secrets.js.map +1 -1
- package/dist/usage-http.d.ts +2 -2
- package/dist/usage-http.d.ts.map +1 -1
- package/dist/usage-http.js +14 -78
- package/dist/usage-http.js.map +1 -1
- package/package.json +11 -11
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { RunCapacityError, RunReplayError, retryAfterSeconds, } from "@assemblyline-agents/runtime";
|
|
2
|
+
import { loadRunTimeline, loadRunTimelinePage } from "./adapters.js";
|
|
3
|
+
import { authorizeOrSend, numberQueryValue, rateLimitOrSend, stringBodyValue, } from "./auth.js";
|
|
4
|
+
import { firstHeaderValue, maxRequestBodyBytes, readBody, send, summarizeRun, } from "./http-io.js";
|
|
5
|
+
import { startRunReplay } from "./run-replay-http.js";
|
|
6
|
+
import { serveRunEventStream } from "./run-stream-http.js";
|
|
7
|
+
import { parseRunFeedbackRoute, parseRunReplayRoute, parseRunResumeRoute, parseRunRoute, } from "./route-match.js";
|
|
8
|
+
export const handleRunHttpRoutes = async (request, response, url, context) => {
|
|
9
|
+
const { runtime, options, rateLimit } = context;
|
|
10
|
+
if (request.method === "GET" && url.pathname.startsWith("/runs/")) {
|
|
11
|
+
if (!(await authorizeOrSend(request, response, runtime, options, "admin-read", url.pathname)))
|
|
12
|
+
return true;
|
|
13
|
+
const runRoute = parseRunRoute(url.pathname);
|
|
14
|
+
if (!runRoute) {
|
|
15
|
+
send(response, 404, { error: "Not found." });
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
if (runRoute.kind === "stream") {
|
|
19
|
+
if (!(await runtime.state.getRun(runRoute.runId))) {
|
|
20
|
+
send(response, 404, { error: `Run not found: ${runRoute.runId}` });
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
const lastEventId = firstHeaderValue(request.headers["last-event-id"]) ??
|
|
24
|
+
url.searchParams.get("lastEventId") ??
|
|
25
|
+
undefined;
|
|
26
|
+
await serveRunEventStream(runtime, response, runRoute.runId, lastEventId);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
const paginatedTimeline = runRoute.kind === "timeline" && url.searchParams.has("limit");
|
|
30
|
+
const before = numberQueryValue(url.searchParams.get("before"));
|
|
31
|
+
const after = numberQueryValue(url.searchParams.get("after"));
|
|
32
|
+
const limit = numberQueryValue(url.searchParams.get("limit"));
|
|
33
|
+
if (paginatedTimeline && limit === undefined) {
|
|
34
|
+
send(response, 400, { error: "Run timeline limit must be a number." });
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
let timeline;
|
|
38
|
+
try {
|
|
39
|
+
timeline = paginatedTimeline
|
|
40
|
+
? await loadRunTimelinePage(runtime, runRoute.runId, {
|
|
41
|
+
...(before !== undefined ? { before } : {}),
|
|
42
|
+
...(after !== undefined ? { after } : {}),
|
|
43
|
+
limit: limit,
|
|
44
|
+
})
|
|
45
|
+
: await loadRunTimeline(runtime, runRoute.runId);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (!paginatedTimeline)
|
|
49
|
+
throw error;
|
|
50
|
+
send(response, 400, {
|
|
51
|
+
error: error instanceof Error ? error.message : String(error),
|
|
52
|
+
});
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
if (!timeline) {
|
|
56
|
+
send(response, 404, { error: `Run not found: ${runRoute.runId}` });
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
if (runRoute.kind === "events") {
|
|
60
|
+
send(response, 200, { runId: runRoute.runId, events: timeline.events });
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
if (runRoute.kind === "timeline") {
|
|
64
|
+
send(response, 200, timeline);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
send(response, 200, timeline);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if (request.method === "POST" && url.pathname.startsWith("/runs/")) {
|
|
71
|
+
const replayRoute = parseRunReplayRoute(url.pathname);
|
|
72
|
+
if (replayRoute) {
|
|
73
|
+
if (!(await authorizeOrSend(request, response, runtime, options, "agent-control", url.pathname)))
|
|
74
|
+
return true;
|
|
75
|
+
if (!(await rateLimitOrSend(request, response, rateLimit, "run-create", url.pathname)))
|
|
76
|
+
return true;
|
|
77
|
+
try {
|
|
78
|
+
const replay = await startRunReplay(runtime, replayRoute.runId);
|
|
79
|
+
void replay.completion.catch((error) => {
|
|
80
|
+
runtime.logger.error("replay run failed after durable creation", {
|
|
81
|
+
sourceRunId: replayRoute.runId,
|
|
82
|
+
runId: replay.run.id,
|
|
83
|
+
error: error instanceof Error ? error.message : String(error),
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
send(response, 202, {
|
|
87
|
+
runId: replay.run.id,
|
|
88
|
+
status: replay.run.status,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
if (error instanceof RunReplayError) {
|
|
93
|
+
send(response, error.code === "run_not_found" ? 404 : 409, {
|
|
94
|
+
error: error.message,
|
|
95
|
+
code: error.code,
|
|
96
|
+
});
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
if (error instanceof RunCapacityError) {
|
|
100
|
+
send(response, 429, {
|
|
101
|
+
error: "Run capacity exhausted. Retry later.",
|
|
102
|
+
retryAfterMs: error.retryAfterMs,
|
|
103
|
+
}, {
|
|
104
|
+
"retry-after": String(retryAfterSeconds(error.retryAfterMs)),
|
|
105
|
+
});
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
const feedbackRoute = parseRunFeedbackRoute(url.pathname);
|
|
113
|
+
if (feedbackRoute) {
|
|
114
|
+
if (!(await authorizeOrSend(request, response, runtime, options, "run-control", url.pathname)))
|
|
115
|
+
return true;
|
|
116
|
+
if (!(await rateLimitOrSend(request, response, rateLimit, "run-control", url.pathname)))
|
|
117
|
+
return true;
|
|
118
|
+
if (!(await runtime.state.getRun(feedbackRoute.runId))) {
|
|
119
|
+
send(response, 404, { error: `Run not found: ${feedbackRoute.runId}` });
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
const { body } = await readBody(request, maxRequestBodyBytes(runtime, options));
|
|
123
|
+
const rating = stringBodyValue(body.rating);
|
|
124
|
+
const comment = stringBodyValue(body.comment);
|
|
125
|
+
if (rating !== "positive" && rating !== "negative") {
|
|
126
|
+
send(response, 400, {
|
|
127
|
+
error: "Feedback rating must be 'positive' or 'negative'.",
|
|
128
|
+
});
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
const result = await runtime.recordRunFeedback(feedbackRoute.runId, {
|
|
132
|
+
rating,
|
|
133
|
+
...(comment ? { comment } : {}),
|
|
134
|
+
});
|
|
135
|
+
send(response, 202, result);
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
const resumeRoute = parseRunResumeRoute(url.pathname);
|
|
139
|
+
if (resumeRoute) {
|
|
140
|
+
const isHitlResume = resumeRoute.kind === "approve" || resumeRoute.kind === "answer";
|
|
141
|
+
const routeClass = isHitlResume || resumeRoute.kind === "resume"
|
|
142
|
+
? "run-resume"
|
|
143
|
+
: "run-control";
|
|
144
|
+
if (!(await authorizeOrSend(request, response, runtime, options, routeClass, url.pathname)))
|
|
145
|
+
return true;
|
|
146
|
+
if (!(await rateLimitOrSend(request, response, rateLimit, routeClass, url.pathname)))
|
|
147
|
+
return true;
|
|
148
|
+
const run = await runtime.state.getRun(resumeRoute.runId);
|
|
149
|
+
if (!run) {
|
|
150
|
+
send(response, 404, { error: `Run not found: ${resumeRoute.runId}` });
|
|
151
|
+
return true;
|
|
152
|
+
}
|
|
153
|
+
const expected = resumeRoute.kind === "approve"
|
|
154
|
+
? "waiting_for_approval"
|
|
155
|
+
: resumeRoute.kind === "answer"
|
|
156
|
+
? "waiting_for_input"
|
|
157
|
+
: resumeRoute.kind === "suspend"
|
|
158
|
+
? "running"
|
|
159
|
+
: resumeRoute.kind === "resume"
|
|
160
|
+
? "suspended"
|
|
161
|
+
: undefined;
|
|
162
|
+
if (expected && run.status !== expected) {
|
|
163
|
+
send(response, 409, {
|
|
164
|
+
error: `Run ${resumeRoute.runId} is not ${expected} (status: ${run.status}).`,
|
|
165
|
+
});
|
|
166
|
+
return true;
|
|
167
|
+
}
|
|
168
|
+
if (resumeRoute.kind === "cancel" && run.status === "cancelled") {
|
|
169
|
+
// Cancellation is an idempotent operator command. A retry may be
|
|
170
|
+
// the first response the client receives even when an earlier
|
|
171
|
+
// request already committed the terminal state.
|
|
172
|
+
send(response, 200, {
|
|
173
|
+
runId: run.id,
|
|
174
|
+
status: run.status,
|
|
175
|
+
controlIntent: run.controlIntent ?? null,
|
|
176
|
+
});
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
if (resumeRoute.kind === "cancel" &&
|
|
180
|
+
["completed", "failed"].includes(run.status)) {
|
|
181
|
+
send(response, 409, {
|
|
182
|
+
error: `Run ${resumeRoute.runId} is already terminal (status: ${run.status}).`,
|
|
183
|
+
});
|
|
184
|
+
return true;
|
|
185
|
+
}
|
|
186
|
+
let answer = "";
|
|
187
|
+
if (resumeRoute.kind === "answer") {
|
|
188
|
+
const { body } = await readBody(request, maxRequestBodyBytes(runtime, options));
|
|
189
|
+
answer = typeof body.answer === "string" ? body.answer : "";
|
|
190
|
+
if (!answer) {
|
|
191
|
+
send(response, 400, {
|
|
192
|
+
error: "An 'answer' string is required to resume a waiting run.",
|
|
193
|
+
});
|
|
194
|
+
return true;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
try {
|
|
198
|
+
if (resumeRoute.kind === "cancel" || resumeRoute.kind === "suspend") {
|
|
199
|
+
const controlled = resumeRoute.kind === "cancel"
|
|
200
|
+
? await runtime.cancelRun(resumeRoute.runId)
|
|
201
|
+
: await runtime.suspendRun(resumeRoute.runId);
|
|
202
|
+
send(response, controlled.status === "running" ? 202 : 200, {
|
|
203
|
+
runId: controlled.id,
|
|
204
|
+
status: controlled.status,
|
|
205
|
+
controlIntent: controlled.controlIntent ?? null,
|
|
206
|
+
});
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
const result = resumeRoute.kind === "approve"
|
|
210
|
+
? await runtime.resumeApproval(resumeRoute.runId)
|
|
211
|
+
: resumeRoute.kind === "answer"
|
|
212
|
+
? await runtime.resumeInput(resumeRoute.runId, answer)
|
|
213
|
+
: await runtime.resumeSuspended(resumeRoute.runId);
|
|
214
|
+
send(response, 200, summarizeRun(result));
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
if (error instanceof RunCapacityError) {
|
|
218
|
+
send(response, 429, {
|
|
219
|
+
error: "Run capacity exhausted. Retry later.",
|
|
220
|
+
retryAfterMs: error.retryAfterMs,
|
|
221
|
+
}, {
|
|
222
|
+
"retry-after": String(retryAfterSeconds(error.retryAfterMs)),
|
|
223
|
+
});
|
|
224
|
+
return true;
|
|
225
|
+
}
|
|
226
|
+
// The resume idempotency claim rejects a concurrent/replayed resume.
|
|
227
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
228
|
+
if (resumeRoute.kind === "cancel" &&
|
|
229
|
+
/already terminal/i.test(message)) {
|
|
230
|
+
const latest = await runtime.state.getRun(resumeRoute.runId);
|
|
231
|
+
if (latest?.status === "cancelled") {
|
|
232
|
+
send(response, 200, {
|
|
233
|
+
runId: latest.id,
|
|
234
|
+
status: latest.status,
|
|
235
|
+
controlIntent: latest.controlIntent ?? null,
|
|
236
|
+
});
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
if (/already in progress|not waiting|not suspended|not running|already terminal/i.test(message)) {
|
|
241
|
+
send(response, 409, { error: message });
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
throw error;
|
|
245
|
+
}
|
|
246
|
+
return true;
|
|
247
|
+
}
|
|
248
|
+
// Fall through: unknown POST /runs/... path.
|
|
249
|
+
}
|
|
250
|
+
return false;
|
|
251
|
+
};
|
|
252
|
+
//# sourceMappingURL=run-http-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-http-routes.js","sourceRoot":"","sources":["../src/run-http-routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import type { AssemblyLineRuntime } from "@assemblyline-agents/runtime";
|
|
3
|
+
import type { RuntimeDrainState } from "./lifecycle.js";
|
|
4
|
+
import type { NodeRuntimeServerOptions } from "./node-types.js";
|
|
5
|
+
import type { ResolvedIngressRateLimit } from "./rate-limit.js";
|
|
6
|
+
export interface RuntimeHttpRouteContext {
|
|
7
|
+
runtime: AssemblyLineRuntime;
|
|
8
|
+
options: NodeRuntimeServerOptions;
|
|
9
|
+
rateLimit: ResolvedIngressRateLimit | undefined;
|
|
10
|
+
drain: RuntimeDrainState;
|
|
11
|
+
setChannel(channel: string): void;
|
|
12
|
+
}
|
|
13
|
+
export type RuntimeHttpRouteHandler = (request: IncomingMessage, response: ServerResponse, url: URL, context: RuntimeHttpRouteContext) => Promise<boolean>;
|
|
14
|
+
//# sourceMappingURL=runtime-http-route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-http-route.d.ts","sourceRoot":"","sources":["../src/runtime-http-route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,wBAAwB,CAAC;IAClC,SAAS,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAChD,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,uBAAuB,GAAG,CACpC,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,cAAc,EACxB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,uBAAuB,KAC7B,OAAO,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-http-route.js","sourceRoot":"","sources":["../src/runtime-http-route.ts"],"names":[],"mappings":""}
|
package/dist/secrets.d.ts
CHANGED
|
@@ -10,27 +10,17 @@ export interface CreateCredentialBoundaryOptions {
|
|
|
10
10
|
fetch?: typeof fetch;
|
|
11
11
|
}
|
|
12
12
|
export interface CredentialBoundary {
|
|
13
|
-
/** Non-secret host configuration. Declared connection credentials are removed. */
|
|
14
13
|
config: NodeJS.ProcessEnv;
|
|
15
|
-
/** One-name-at-a-time store consumed only by the runtime credential broker. */
|
|
16
14
|
store: CredentialStore;
|
|
17
|
-
/** Credential names declared by active connections or the gateway store. */
|
|
18
15
|
declaredNames: readonly string[];
|
|
19
16
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Build the host credential boundary without resolving connection credentials.
|
|
22
|
-
* External stores are consulted just in time by the runtime broker and fall
|
|
23
|
-
* back to the boot environment only when the store does not hold that name.
|
|
24
|
-
*/
|
|
17
|
+
/** Build the host boundary without resolving connection credentials. */
|
|
25
18
|
export declare function createCredentialBoundary(options: CreateCredentialBoundaryOptions): Promise<CredentialBoundary>;
|
|
26
|
-
/**
|
|
27
|
-
* Resolve only gateway/bootstrap credentials required before the runtime owns
|
|
28
|
-
* connection creation. Connection credentials remain broker-only.
|
|
29
|
-
*/
|
|
19
|
+
/** Resolve only gateway/bootstrap credentials needed before runtime ownership. */
|
|
30
20
|
export declare function resolveGatewayEnvironment(boundary: CredentialBoundary, manifest: AgentManifest): Promise<NodeJS.ProcessEnv>;
|
|
31
21
|
/** Resolve the credential-only view supplied to trusted gateway capabilities. */
|
|
32
22
|
export declare function resolveGatewayCredentials(boundary: CredentialBoundary, manifest: AgentManifest): Promise<Readonly<Record<string, string>>>;
|
|
33
|
-
/** Resolve
|
|
23
|
+
/** Resolve values only for an explicit deployment secret-sync operation. */
|
|
34
24
|
export declare function resolveCredentialInventory(boundary: CredentialBoundary): Promise<{
|
|
35
25
|
env: NodeJS.ProcessEnv;
|
|
36
26
|
storeNames: string[];
|
package/dist/secrets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,aAAa,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,sFAAsF;IACtF,yBAAyB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,aAAa,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,sFAAsF;IACtF,yBAAyB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC;AAKD,wEAAwE;AACxE,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,kBAAkB,CAAC,CAkD7B;AAED,kFAAkF;AAClF,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAW5B;AAED,iFAAiF;AACjF,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,kBAAkB,EAC5B,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAO3C;AAED,4EAA4E;AAC5E,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,kBAAkB,GAC3B,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAY3D"}
|
package/dist/secrets.js
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
import { GATEWAY_BOOTSTRAP_CREDENTIAL_NAMES, gatewayDeclaredCredentialNames, gatewayCredentialNames, manifestCredentialNames, resolveNonSecretRuntimeConfig } from "@assemblyline-agents/core";
|
|
2
2
|
import { resolveProvider } from "./provider-resolver.js";
|
|
3
3
|
const boundaryResolvers = new WeakMap();
|
|
4
|
-
/**
|
|
5
|
-
* Build the host credential boundary without resolving connection credentials.
|
|
6
|
-
* External stores are consulted just in time by the runtime broker and fall
|
|
7
|
-
* back to the boot environment only when the store does not hold that name.
|
|
8
|
-
*/
|
|
4
|
+
/** Build the host boundary without resolving connection credentials. */
|
|
9
5
|
export async function createCredentialBoundary(options) {
|
|
10
6
|
const names = [...new Set([
|
|
11
7
|
...manifestCredentialNames(options.manifest),
|
|
@@ -54,17 +50,12 @@ export async function createCredentialBoundary(options) {
|
|
|
54
50
|
? { external: false }
|
|
55
51
|
: { value: environmentValue, external: false };
|
|
56
52
|
};
|
|
57
|
-
const store = {
|
|
58
|
-
resolve: async (name) => (await resolve(name)).value
|
|
59
|
-
};
|
|
53
|
+
const store = { resolve: async (name) => (await resolve(name)).value };
|
|
60
54
|
const boundary = { config, store, declaredNames: names };
|
|
61
55
|
boundaryResolvers.set(boundary, resolve);
|
|
62
56
|
return boundary;
|
|
63
57
|
}
|
|
64
|
-
/**
|
|
65
|
-
* Resolve only gateway/bootstrap credentials required before the runtime owns
|
|
66
|
-
* connection creation. Connection credentials remain broker-only.
|
|
67
|
-
*/
|
|
58
|
+
/** Resolve only gateway/bootstrap credentials needed before runtime ownership. */
|
|
68
59
|
export async function resolveGatewayEnvironment(boundary, manifest) {
|
|
69
60
|
const env = { ...boundary.config };
|
|
70
61
|
for (const name of [
|
|
@@ -88,7 +79,7 @@ export async function resolveGatewayCredentials(boundary, manifest) {
|
|
|
88
79
|
}
|
|
89
80
|
return Object.freeze(credentials);
|
|
90
81
|
}
|
|
91
|
-
/** Resolve
|
|
82
|
+
/** Resolve values only for an explicit deployment secret-sync operation. */
|
|
92
83
|
export async function resolveCredentialInventory(boundary) {
|
|
93
84
|
const env = { ...boundary.config };
|
|
94
85
|
const storeNames = [];
|
|
@@ -97,10 +88,9 @@ export async function resolveCredentialInventory(boundary) {
|
|
|
97
88
|
throw new Error("Credential inventory requires a boundary created by createCredentialBoundary().");
|
|
98
89
|
for (const name of boundary.declaredNames) {
|
|
99
90
|
const resolved = await resolve(name);
|
|
100
|
-
|
|
101
|
-
if (value === undefined)
|
|
91
|
+
if (resolved.value === undefined)
|
|
102
92
|
continue;
|
|
103
|
-
env[name] = value;
|
|
93
|
+
env[name] = resolved.value;
|
|
104
94
|
if (resolved.external)
|
|
105
95
|
storeNames.push(name);
|
|
106
96
|
}
|
package/dist/secrets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,EACvB,6BAA6B,EAG9B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAA2B,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../src/secrets.ts"],"names":[],"mappings":"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"}
|
package/dist/usage-http.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type { JsonObject } from "@assemblyline-agents/core";
|
|
1
|
+
import type { AgentManifest, JsonObject } from "@assemblyline-agents/core";
|
|
2
2
|
import { type ProviderReconciliationResult, type ResolvedStateAdapter, type UsageQuery, type UsageSummaryQuery } from "@assemblyline-agents/runtime";
|
|
3
3
|
export declare function usageHttpResult(state: ResolvedStateAdapter, url: URL): Promise<{
|
|
4
4
|
view: "records" | "summary";
|
|
5
5
|
query: UsageQuery | UsageSummaryQuery;
|
|
6
6
|
data: unknown[];
|
|
7
7
|
}>;
|
|
8
|
-
export declare function usageReconciliationHttpResult(state: ResolvedStateAdapter, env: Record<string, string | undefined>, body: JsonObject): Promise<ProviderReconciliationResult>;
|
|
8
|
+
export declare function usageReconciliationHttpResult(manifest: AgentManifest, state: ResolvedStateAdapter, env: Record<string, string | undefined>, body: JsonObject): Promise<ProviderReconciliationResult>;
|
|
9
9
|
//# sourceMappingURL=usage-http.d.ts.map
|
package/dist/usage-http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-http.d.ts","sourceRoot":"","sources":["../src/usage-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"usage-http.d.ts","sourceRoot":"","sources":["../src/usage-http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAIL,KAAK,4BAA4B,EACjC,KAAK,oBAAoB,EAEzB,KAAK,UAAU,EAEf,KAAK,iBAAiB,EACvB,MAAM,8BAA8B,CAAC;AAoBtC,wBAAsB,eAAe,CACnC,KAAK,EAAE,oBAAoB,EAC3B,GAAG,EAAE,GAAG,GACP,OAAO,CAAC;IAAE,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,iBAAiB,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAmBlG;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,oBAAoB,EAC3B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EACvC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,4BAA4B,CAAC,CAYvC"}
|
package/dist/usage-http.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { queryUsageRecords,
|
|
1
|
+
import { queryUsageRecords, summarizeUsageRecords, usageReconcilerModuleFromImport } from "@assemblyline-agents/runtime";
|
|
2
2
|
const GROUPS = new Set([
|
|
3
3
|
"agentId",
|
|
4
4
|
"agentRevision",
|
|
@@ -36,53 +36,21 @@ export async function usageHttpResult(state, url) {
|
|
|
36
36
|
: summarizeUsageRecords(await state.listUsage(), summary);
|
|
37
37
|
return { view, query: summary, data: aggregates };
|
|
38
38
|
}
|
|
39
|
-
export async function usageReconciliationHttpResult(state, env, body) {
|
|
39
|
+
export async function usageReconciliationHttpResult(manifest, state, env, body) {
|
|
40
40
|
const provider = bodyString(body, "provider");
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (
|
|
47
|
-
|
|
48
|
-
if (!adminKey) {
|
|
49
|
-
throw new Error("ASSEMBLY_LINE_OPENAI_ADMIN_KEY or OPENAI_ADMIN_KEY is required for OpenAI reconciliation.");
|
|
50
|
-
}
|
|
51
|
-
const projectIds = commaList(env.ASSEMBLY_LINE_OPENAI_USAGE_PROJECT_IDS);
|
|
52
|
-
const apiKeyIds = commaList(env.ASSEMBLY_LINE_OPENAI_USAGE_API_KEY_IDS);
|
|
53
|
-
const agentByProjectId = jsonStringMap(env.ASSEMBLY_LINE_OPENAI_AGENT_BY_PROJECT_ID);
|
|
54
|
-
const agentByApiKeyId = jsonStringMap(env.ASSEMBLY_LINE_OPENAI_AGENT_BY_API_KEY_ID);
|
|
55
|
-
const settlementLagHours = optionalNumber(env.ASSEMBLY_LINE_USAGE_RECONCILIATION_LAG_HOURS);
|
|
56
|
-
return reconcileOpenAIOrganization({
|
|
57
|
-
state,
|
|
58
|
-
adminKey,
|
|
59
|
-
from,
|
|
60
|
-
...(to ? { to } : {}),
|
|
61
|
-
...(providerLabel ? { provider: providerLabel } : {}),
|
|
62
|
-
...(projectIds ? { projectIds } : {}),
|
|
63
|
-
...(apiKeyIds ? { apiKeyIds } : {}),
|
|
64
|
-
...(agentByProjectId ? { agentByProjectId } : {}),
|
|
65
|
-
...(agentByApiKeyId ? { agentByApiKeyId } : {}),
|
|
66
|
-
...(settlementLagHours !== undefined ? { settlementLagHours } : {})
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
if (provider === "openrouter") {
|
|
70
|
-
const apiKey = env.OPENROUTER_API_KEY;
|
|
71
|
-
const managementKey = env.OPENROUTER_MANAGEMENT_KEY;
|
|
72
|
-
const apiKeyHash = env.ASSEMBLY_LINE_OPENROUTER_API_KEY_HASH;
|
|
73
|
-
const agentId = env.ASSEMBLY_LINE_OPENROUTER_CONTROL_AGENT_ID;
|
|
74
|
-
return reconcileOpenRouterUsage({
|
|
75
|
-
state,
|
|
76
|
-
from,
|
|
77
|
-
...(to ? { to } : {}),
|
|
78
|
-
...(providerLabel ? { provider: providerLabel } : {}),
|
|
79
|
-
...(apiKey ? { apiKey } : {}),
|
|
80
|
-
...(managementKey ? { managementKey } : {}),
|
|
81
|
-
...(apiKeyHash ? { apiKeyHash } : {}),
|
|
82
|
-
...(agentId ? { agentId } : {})
|
|
83
|
-
});
|
|
41
|
+
if (!provider)
|
|
42
|
+
throw new Error("Usage reconciliation requires a `provider` selected by the agent's model plugins.");
|
|
43
|
+
const metadata = manifest.modelProviders.find((entry) => entry.provider === provider);
|
|
44
|
+
if (!metadata)
|
|
45
|
+
throw new Error(`Model provider ${provider} is not selected by this agent.`);
|
|
46
|
+
if (!metadata.capabilities?.includes("usage-reconciliation")) {
|
|
47
|
+
throw new Error(`Model provider ${provider} does not declare usage-reconciliation capability.`);
|
|
84
48
|
}
|
|
85
|
-
|
|
49
|
+
const imported = await import(metadata.packageName);
|
|
50
|
+
const registration = usageReconcilerModuleFromImport(imported)?.providers.find((entry) => entry.provider === provider);
|
|
51
|
+
if (!registration)
|
|
52
|
+
throw new Error(`Model plugin ${metadata.packageName} declared usage reconciliation without exporting its reconciler.`);
|
|
53
|
+
return registration.reconcile({ state, env, input: body, fetch: globalThis.fetch });
|
|
86
54
|
}
|
|
87
55
|
function usageQuery(url) {
|
|
88
56
|
const query = { recordKind: recordKind(url.searchParams.get("recordKind")) };
|
|
@@ -149,36 +117,4 @@ function bodyString(body, key) {
|
|
|
149
117
|
const value = body[key];
|
|
150
118
|
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
151
119
|
}
|
|
152
|
-
function commaList(value) {
|
|
153
|
-
const values = value?.split(",").map((entry) => entry.trim()).filter(Boolean);
|
|
154
|
-
return values && values.length > 0 ? values : undefined;
|
|
155
|
-
}
|
|
156
|
-
function optionalNumber(value) {
|
|
157
|
-
if (value === undefined || value.trim() === "")
|
|
158
|
-
return undefined;
|
|
159
|
-
const parsed = Number(value);
|
|
160
|
-
if (!Number.isFinite(parsed) || parsed < 0) {
|
|
161
|
-
throw new Error("ASSEMBLY_LINE_USAGE_RECONCILIATION_LAG_HOURS must be non-negative.");
|
|
162
|
-
}
|
|
163
|
-
return parsed;
|
|
164
|
-
}
|
|
165
|
-
function jsonStringMap(value) {
|
|
166
|
-
if (!value?.trim())
|
|
167
|
-
return undefined;
|
|
168
|
-
let parsed;
|
|
169
|
-
try {
|
|
170
|
-
parsed = JSON.parse(value);
|
|
171
|
-
}
|
|
172
|
-
catch {
|
|
173
|
-
throw new Error("Usage attribution maps must be JSON objects with string values.");
|
|
174
|
-
}
|
|
175
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
176
|
-
throw new Error("Usage attribution maps must be JSON objects with string values.");
|
|
177
|
-
}
|
|
178
|
-
const entries = Object.entries(parsed);
|
|
179
|
-
if (!entries.every(([, entry]) => typeof entry === "string" && entry.trim())) {
|
|
180
|
-
throw new Error("Usage attribution maps must be JSON objects with string values.");
|
|
181
|
-
}
|
|
182
|
-
return Object.fromEntries(entries.map(([key, entry]) => [key, entry.trim()]));
|
|
183
|
-
}
|
|
184
120
|
//# sourceMappingURL=usage-http.js.map
|
package/dist/usage-http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usage-http.js","sourceRoot":"","sources":["../src/usage-http.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,
|
|
1
|
+
{"version":3,"file":"usage-http.js","sourceRoot":"","sources":["../src/usage-http.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assemblyline-agents/node",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
}
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@assemblyline-agents/core": "
|
|
13
|
-
"@assemblyline-agents/pi": "
|
|
14
|
-
"@assemblyline-agents/runtime": "
|
|
12
|
+
"@assemblyline-agents/core": "6.0.0",
|
|
13
|
+
"@assemblyline-agents/pi": "6.0.0",
|
|
14
|
+
"@assemblyline-agents/runtime": "6.0.0"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@assemblyline-agents/daytona": "*",
|
|
@@ -76,13 +76,13 @@
|
|
|
76
76
|
"access": "public"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
-
"@assemblyline-agents/
|
|
80
|
-
"@assemblyline-agents/
|
|
81
|
-
"@assemblyline-agents/e2b": "
|
|
82
|
-
"@assemblyline-agents/
|
|
83
|
-
"@assemblyline-agents/r2": "
|
|
84
|
-
"@assemblyline-agents/
|
|
85
|
-
"@assemblyline-agents/
|
|
79
|
+
"@assemblyline-agents/modal": "6.0.0",
|
|
80
|
+
"@assemblyline-agents/daytona": "6.0.0",
|
|
81
|
+
"@assemblyline-agents/e2b": "6.0.0",
|
|
82
|
+
"@assemblyline-agents/postgres": "6.0.0",
|
|
83
|
+
"@assemblyline-agents/r2": "6.0.0",
|
|
84
|
+
"@assemblyline-agents/s3": "6.0.0",
|
|
85
|
+
"@assemblyline-agents/docker": "6.0.0"
|
|
86
86
|
},
|
|
87
87
|
"scripts": {
|
|
88
88
|
"build": "tsc -p tsconfig.json",
|