@hachej/boring-agent 0.1.101 → 0.1.103
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/{DebugDrawer-2TO5SE2D.js → DebugDrawer-JNA43SVR.js} +2 -1
- package/dist/chunk-2BGLZZ7T.js +10 -0
- package/dist/{chunk-46HJK2ES.js → chunk-4XOW57KJ.js} +3 -8
- package/dist/{chunk-XTMY3PWI.js → chunk-6WKQ4FC4.js} +69 -11
- package/dist/{chunk-XCZBICZS.js → chunk-7QM22DU7.js} +1 -1
- package/dist/{chunk-3OEDBRKY.js → chunk-JNEKOVMJ.js} +1 -1
- package/dist/{chunk-VXF5DWS6.js → chunk-K25PK5EC.js} +1 -0
- package/dist/chunk-N6THTH7P.js +110 -0
- package/dist/{chunk-T37OVD6L.js → chunk-TW7G33QH.js} +1 -1
- package/dist/core/index.d.ts +5 -5
- package/dist/core/index.js +1 -1
- package/dist/{createHarness-7C2A5UVH.js → createHarness-4Q6DQBRT.js} +2 -2
- package/dist/{errors-Ci0dzmcP.d.ts → errors-szpcDUFQ.d.ts} +2 -2
- package/dist/{file-search-DmoDnMan.d.ts → file-search-BXdSm-Yq.d.ts} +5 -5
- package/dist/front/artifacts.d.ts +34 -0
- package/dist/front/artifacts.js +21 -0
- package/dist/front/index.d.ts +5 -14
- package/dist/front/index.js +595 -635
- package/dist/{harness-s-kEgJkK.d.ts → harness-erpL2SER.d.ts} +2 -2
- package/dist/{lease-D5-CBoPs.d.ts → lease-K-EZhdL-.d.ts} +3 -3
- package/dist/{middleware-Cq_cYHjJ.d.ts → middleware-CaAEXpi5.d.ts} +11 -2
- package/dist/{piChatEvent-Bzof4IEy.d.ts → piChatEvent-g1nIBh44.d.ts} +14 -14
- package/dist/{piChatSessionService-BU4L5hxM.d.ts → piChatSessionService-DugeRHzb.d.ts} +1 -1
- package/dist/{sandbox-KQiEdz4W.d.ts → sandbox-BMhut3kh.d.ts} +6 -1
- package/dist/server/agent-host/testing/gatewayConformance.d.ts +6 -6
- package/dist/server/agent-host/testing/gatewayConformance.js +3 -3
- package/dist/server/index.d.ts +19 -16
- package/dist/server/index.js +7 -5
- package/dist/server/worker/index.d.ts +3 -2
- package/dist/server/worker/index.js +25 -6
- package/dist/shared/index.d.ts +29 -29
- package/dist/shared/index.js +3 -3
- package/dist/{types-OwI_m-2p.d.ts → types-BnjMLAd5.d.ts} +13 -5
- package/docs/ERROR_CODES.md +1 -0
- package/package.json +16 -12
package/dist/server/index.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { P as ProvisionWorkspaceRuntimeOptions, W as WorkspaceProvisioningResult, a as PiPackageSource, R as RuntimeModeAdapter, b as RuntimeModeId, B as BuiltinRuntimeModeId, c as AgentRuntimeHostOperations, d as RuntimeBashStrategy, e as RuntimeFilesystemStrategy, M as ModeContext, f as WorkspaceProvisioningAdapter, g as AgentInstructionFileRef, C as ConfiguredAgentHostAgentSpec, h as AgentHostAgentSpec, i as RuntimeBundle, j as PiHarnessOptions, k as AgentMeteringSink, l as RuntimeFilesystemBinding, m as CreatedAgentHost, n as MeteringErrorLogger, o as ReadyStatusTracker, p as CreateAgentHostOptions, q as CompiledAgentHostAgentSpec, r as AgentRequestLedger, s as AgentEffectAdmission, t as AuthorizedEnvironmentIntent, u as AgentHostEnvironmentScope, v as ResolvedAgentRuntimeScope, w as AgentRequestKey, x as AgentRequestLedgerPrepareResult, y as AgentRequestFailure, z as AgentRequestLedgerRecord, D as AgentFleetCompiler, E as AgentRequestTarget, F as RuntimeFilesystemAccessDecision } from '../types-
|
|
2
|
-
export { A as AgentGatewayEffect, G as AgentHostDescription, H as AgentHostDirectProjectionOptions, I as AgentHostDispatcherRunInput, J as AgentHostEnvironmentLease, K as AgentHostHandle, L as LegacyDefaultAgentHostSpec, N as MeteringReleaseInput, O as MeteringReleaseReason, Q as MeteringReservationResult, S as MeteringReserveInput, T as MeteringRunKind, U as MeteringRunScope, V as MeteringRunStatus, X as MeteringSettleInput, Y as MeteringUsage, Z as MeteringUsageInput, _ as PI_PACKAGE_RESOURCE_FILTERS, $ as PiExtensionFactory, a0 as PluginSkillSource, a1 as ResolvedEnvironmentScope, a2 as RuntimeFilesystemBindingOperations, a3 as RuntimeNodePackageSpec, a4 as RuntimeProvisioningContribution, a5 as RuntimePythonSpec, a6 as RuntimeTemplateContribution, a7 as WorkspaceProvisioningExecResult, a8 as compactPiPackages, a9 as mergePiPackageSources, aa as normalizeMeteringUsage, ab as piPackageSourceKey } from '../types-
|
|
3
|
-
import {
|
|
4
|
-
export {
|
|
5
|
-
import { R as RemoteWorkerWorkspaceOp, a as RemoteWorkerWorkspaceResult,
|
|
6
|
-
export {
|
|
1
|
+
import { P as ProvisionWorkspaceRuntimeOptions, W as WorkspaceProvisioningResult, a as PiPackageSource, R as RuntimeModeAdapter, b as RuntimeModeId, B as BuiltinRuntimeModeId, c as AgentRuntimeHostOperations, d as RuntimeBashStrategy, e as RuntimeFilesystemStrategy, M as ModeContext, f as WorkspaceProvisioningAdapter, g as AgentInstructionFileRef, C as ConfiguredAgentHostAgentSpec, h as AgentHostAgentSpec, i as RuntimeBundle, j as PiHarnessOptions, k as AgentMeteringSink, l as RuntimeFilesystemBinding, m as CreatedAgentHost, n as MeteringErrorLogger, o as ReadyStatusTracker, p as CreateAgentHostOptions, q as CompiledAgentHostAgentSpec, r as AgentRequestLedger, s as AgentEffectAdmission, t as AuthorizedEnvironmentIntent, u as AgentHostEnvironmentScope, v as ResolvedAgentRuntimeScope, w as AgentRequestKey, x as AgentRequestLedgerPrepareResult, y as AgentRequestFailure, z as AgentRequestLedgerRecord, D as AgentFleetCompiler, E as AgentRequestTarget, F as RuntimeFilesystemAccessDecision } from '../types-BnjMLAd5.js';
|
|
2
|
+
export { A as AgentGatewayEffect, G as AgentHostDescription, H as AgentHostDirectProjectionOptions, I as AgentHostDispatcherRunInput, J as AgentHostEnvironmentLease, K as AgentHostHandle, L as LegacyDefaultAgentHostSpec, N as MeteringReleaseInput, O as MeteringReleaseReason, Q as MeteringReservationResult, S as MeteringReserveInput, T as MeteringRunKind, U as MeteringRunScope, V as MeteringRunStatus, X as MeteringSettleInput, Y as MeteringUsage, Z as MeteringUsageInput, _ as PI_PACKAGE_RESOURCE_FILTERS, $ as PiExtensionFactory, a0 as PluginSkillSource, a1 as ResolvedEnvironmentScope, a2 as RuntimeFilesystemBindingOperations, a3 as RuntimeNodePackageSpec, a4 as RuntimeProvisioningContribution, a5 as RuntimePythonSpec, a6 as RuntimeTemplateContribution, a7 as WorkspaceProvisioningExecResult, a8 as compactPiPackages, a9 as mergePiPackageSources, aa as normalizeMeteringUsage, ab as piPackageSourceKey } from '../types-BnjMLAd5.js';
|
|
3
|
+
import { d as ExecOptions, a as ExecResult, W as WorkspaceChangeEvent, b as Workspace, c as Sandbox } from '../sandbox-BMhut3kh.js';
|
|
4
|
+
export { h as RuntimeFilesystemCapability } from '../sandbox-BMhut3kh.js';
|
|
5
|
+
import { b as RemoteWorkerHealthResponse, R as RemoteWorkerWorkspaceOp, a as RemoteWorkerWorkspaceResult, c as RemoteWorkerExecRequest } from '../middleware-CaAEXpi5.js';
|
|
6
|
+
export { d as REMOTE_WORKER_EXCLUSIVE_BINARY_CREATE_CAPABILITY, e as REMOTE_WORKER_PROVIDER, f as REMOTE_WORKER_RUNTIME_CWD, g as RemoteWorkerErrorPayload, h as RemoteWorkerExecResponse, i as RemoteWorkerFsEventEnvelope, W as WORKER_INTERNAL_TOKEN_HEADER, j as WORKER_REQUEST_ID_HEADER, k as WORKER_WORKSPACE_ID_HEADER, l as createAgentAuthMiddleware } from '../middleware-CaAEXpi5.js';
|
|
7
7
|
import { SandboxProviderV1, WorkspaceSandboxPairV1 } from '@hachej/boring-sandbox/shared';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { d as AgentActor, j as AgentEvent,
|
|
12
|
-
export { u as AgentConfig,
|
|
8
|
+
import { F as SandboxHandleStore, k as CompiledAgentBundle, a as Sha256Digest, i as AgentDeployment, M as ShareEntryStore, y as ProviderId, c as CredentialFieldId, B as ResolvedCredentialMaterialV1, d as AuthorizedWorkspaceCredentialScopeV1, V as VerifiedWorkspaceCredentialAuthorityV1, X as WorkspaceCredentialAuthorityVerifierV1, n as CredentialConsumerBindingRegistryV1, z as ProviderRegistryV1, Y as WorkspaceCredentialResolverV1, P as ProviderCredentialRefV1, R as ResolvedCredentialLeaseV1 } from '../lease-K-EZhdL-.js';
|
|
9
|
+
import { y as ErrorCode, n as SessionCtx, c as PiChatEvent, S as SessionStore, a as SessionListOptions, b as SessionSummary, P as PiChatSnapshot, d as PromptPayload, e as PromptReceipt, F as FollowUpPayload, f as FollowUpReceipt, Q as QueueClearPayload, g as QueueClearReceipt, I as InterruptPayload, i as StopPayload, j as StopReceipt } from '../piChatEvent-g1nIBh44.js';
|
|
10
|
+
import { x as JsonValue, A as AgentGateway, a as AuthorizedAgentScope, b as AgentSessionRef, c as AgentSessionActivity, V as VerifiedAgentScopeClaim, i as AgentGatewayErrorDTO, p as AgentSessionSummary, o as AgentSessionStateSnapshot, l as AgentSessionConnection } from '../errors-szpcDUFQ.js';
|
|
11
|
+
import { d as AgentActor, j as AgentEvent, v as TelemetrySink, s as AgentTool, D as AgentHarnessFactory, A as AgentHarness } from '../harness-erpL2SER.js';
|
|
12
|
+
export { u as AgentConfig, E as AgentHarnessFactoryInput } from '../harness-erpL2SER.js';
|
|
13
13
|
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
14
14
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
15
15
|
import { FastifyRequest, FastifyInstance, FastifyPluginCallback } from 'fastify';
|
|
16
|
-
import { i as PiSessionRequestContext, g as PiChatSessionService, h as PiSessionCreateInit, e as PiChatEventSubscriber, P as PiChatEventStreamResult } from '../piChatSessionService-
|
|
17
|
-
import {
|
|
18
|
-
export { L as LeaseBoundWorkspaceAgent } from '../file-search-
|
|
16
|
+
import { i as PiSessionRequestContext, g as PiChatSessionService, h as PiSessionCreateInit, e as PiChatEventSubscriber, P as PiChatEventStreamResult } from '../piChatSessionService-DugeRHzb.js';
|
|
17
|
+
import { c as WorkspaceAgentDirectRunInput, W as WorkspaceAgentDirectRunCallback, f as WorkspaceAgentDispatcherContext, e as WorkspaceAgentDispatcher, i as WorkspaceAgentGatewayBinding } from '../file-search-BXdSm-Yq.js';
|
|
18
|
+
export { L as LeaseBoundWorkspaceAgent } from '../file-search-BXdSm-Yq.js';
|
|
19
19
|
import { SettingsManager } from '@mariozechner/pi-coding-agent';
|
|
20
20
|
import '@hachej/boring-bash/agent';
|
|
21
21
|
import '@hachej/boring-sandbox/providers/node-workspace';
|
|
@@ -95,7 +95,7 @@ declare class RemoteWorkerClient {
|
|
|
95
95
|
private timeoutError;
|
|
96
96
|
private abortedError;
|
|
97
97
|
private fetchWithTimeout;
|
|
98
|
-
health(): Promise<
|
|
98
|
+
health(): Promise<RemoteWorkerHealthResponse>;
|
|
99
99
|
workspace(op: RemoteWorkerWorkspaceOp): Promise<RemoteWorkerWorkspaceResult>;
|
|
100
100
|
exec(input: RemoteWorkerExecRequest, opts?: Pick<ExecOptions, 'signal'>): Promise<ExecResult>;
|
|
101
101
|
watch(onEvent: (event: WorkspaceChangeEvent) => void, onError?: (error: Error) => void): {
|
|
@@ -115,7 +115,7 @@ interface RemoteWorkerModeAdapterOptions {
|
|
|
115
115
|
}
|
|
116
116
|
declare function createRemoteWorkerModeAdapter(opts?: RemoteWorkerModeAdapterOptions): RuntimeModeAdapter;
|
|
117
117
|
|
|
118
|
-
declare function createRemoteWorkerWorkspace(client: RemoteWorkerClient): Workspace;
|
|
118
|
+
declare function createRemoteWorkerWorkspace(client: RemoteWorkerClient, supportsExclusiveBinaryCreate?: boolean): Workspace;
|
|
119
119
|
|
|
120
120
|
declare function createRemoteWorkerSandbox(client: RemoteWorkerClient): Sandbox;
|
|
121
121
|
|
|
@@ -1336,6 +1336,8 @@ interface PiResourceDigestInput {
|
|
|
1336
1336
|
readonly piUserHome: string;
|
|
1337
1337
|
/** Mirrors Pi's noSkills resource-loader option. */
|
|
1338
1338
|
readonly noSkills: boolean;
|
|
1339
|
+
/** Mirrors Pi's noContextFiles resource-loader option; omitted stays sealed. */
|
|
1340
|
+
readonly noContextFiles?: boolean;
|
|
1339
1341
|
readonly promptParts?: readonly (string | undefined)[];
|
|
1340
1342
|
readonly additionalSkillPaths?: readonly string[];
|
|
1341
1343
|
readonly packages?: readonly PiPackageSource[];
|
|
@@ -1356,6 +1358,7 @@ declare function createPiResourceDigestInput(input: {
|
|
|
1356
1358
|
readonly piAgentDir?: string;
|
|
1357
1359
|
readonly piUserHome?: string;
|
|
1358
1360
|
readonly noSkills?: boolean;
|
|
1361
|
+
readonly noContextFiles?: boolean;
|
|
1359
1362
|
readonly resourceSets: readonly PiResourceSet[];
|
|
1360
1363
|
readonly authorizedRoots: readonly string[];
|
|
1361
1364
|
readonly limits?: Partial<PiResourceDigestLimits>;
|
package/dist/server/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
MANAGED_AGENT_MCP_ORIGIN_SURFACE,
|
|
14
14
|
ManagedAgentMcpDelegateController,
|
|
15
15
|
ManagedAgentMcpError,
|
|
16
|
+
REMOTE_WORKER_EXCLUSIVE_BINARY_CREATE_CAPABILITY,
|
|
16
17
|
REMOTE_WORKER_PROVIDER,
|
|
17
18
|
REMOTE_WORKER_RUNTIME_CWD,
|
|
18
19
|
RUNTIME_FILESYSTEM_BINDING_DUPLICATE_CODE,
|
|
@@ -88,20 +89,20 @@ import {
|
|
|
88
89
|
shareResourceUri,
|
|
89
90
|
withResolvedCredential,
|
|
90
91
|
withRuntimeEnvContributions
|
|
91
|
-
} from "../chunk-
|
|
92
|
+
} from "../chunk-6WKQ4FC4.js";
|
|
92
93
|
import {
|
|
93
94
|
PI_PACKAGE_RESOURCE_FILTERS,
|
|
94
95
|
compactPiPackages,
|
|
95
96
|
createResourceSettingsManager,
|
|
96
97
|
mergePiPackageSources,
|
|
97
98
|
piPackageSourceKey
|
|
98
|
-
} from "../chunk-
|
|
99
|
-
import "../chunk-
|
|
99
|
+
} from "../chunk-TW7G33QH.js";
|
|
100
|
+
import "../chunk-JNEKOVMJ.js";
|
|
100
101
|
import "../chunk-4IQ4HHBG.js";
|
|
101
102
|
import "../chunk-WSQ5QNIY.js";
|
|
102
|
-
import "../chunk-
|
|
103
|
+
import "../chunk-7QM22DU7.js";
|
|
103
104
|
import "../chunk-YGRQ4Q5P.js";
|
|
104
|
-
import "../chunk-
|
|
105
|
+
import "../chunk-K25PK5EC.js";
|
|
105
106
|
export {
|
|
106
107
|
AgentDirectoryCompilerError,
|
|
107
108
|
AgentFleetCompilationError,
|
|
@@ -118,6 +119,7 @@ export {
|
|
|
118
119
|
ManagedAgentMcpDelegateController,
|
|
119
120
|
ManagedAgentMcpError,
|
|
120
121
|
PI_PACKAGE_RESOURCE_FILTERS,
|
|
122
|
+
REMOTE_WORKER_EXCLUSIVE_BINARY_CREATE_CAPABILITY,
|
|
121
123
|
REMOTE_WORKER_PROVIDER,
|
|
122
124
|
REMOTE_WORKER_RUNTIME_CWD,
|
|
123
125
|
RUNTIME_FILESYSTEM_BINDING_DUPLICATE_CODE,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FastifyInstance, FastifyRequest, FastifyReply, FastifyServerOptions } from 'fastify';
|
|
2
2
|
import { BwrapResourceLimits } from '@hachej/boring-sandbox/providers/bwrap';
|
|
3
3
|
import { SandboxProviderV1 } from '@hachej/boring-sandbox/shared';
|
|
4
|
-
import { b as Workspace,
|
|
5
|
-
import { R as RemoteWorkerWorkspaceOp, a as RemoteWorkerWorkspaceResult } from '../../middleware-
|
|
4
|
+
import { b as Workspace, c as Sandbox } from '../../sandbox-BMhut3kh.js';
|
|
5
|
+
import { R as RemoteWorkerWorkspaceOp, a as RemoteWorkerWorkspaceResult } from '../../middleware-CaAEXpi5.js';
|
|
6
6
|
|
|
7
7
|
interface WorkerConfig {
|
|
8
8
|
workspaceRoot: string;
|
|
@@ -22,6 +22,7 @@ declare const WORKER_ERROR_CODES: {
|
|
|
22
22
|
readonly VALIDATION_ERROR: "validation_error";
|
|
23
23
|
readonly INVALID_WORKSPACE_ID: "invalid_workspace_id";
|
|
24
24
|
readonly NOT_IMPLEMENTED: "not_implemented";
|
|
25
|
+
readonly ALREADY_EXISTS: "REMOTE_WORKER_ALREADY_EXISTS";
|
|
25
26
|
readonly EXEC_CONCURRENCY_LIMIT: "exec_concurrency_limit";
|
|
26
27
|
readonly UNSUPPORTED_WORKSPACE_OP: "unsupported_workspace_op";
|
|
27
28
|
};
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
+
REMOTE_WORKER_EXCLUSIVE_BINARY_CREATE_CAPABILITY,
|
|
2
3
|
WORKER_INTERNAL_TOKEN_HEADER,
|
|
3
4
|
constantTimeTokenEqual
|
|
4
|
-
} from "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
5
|
+
} from "../../chunk-6WKQ4FC4.js";
|
|
6
|
+
import "../../chunk-TW7G33QH.js";
|
|
7
|
+
import "../../chunk-JNEKOVMJ.js";
|
|
7
8
|
import "../../chunk-4IQ4HHBG.js";
|
|
8
9
|
import "../../chunk-WSQ5QNIY.js";
|
|
9
|
-
import "../../chunk-
|
|
10
|
+
import "../../chunk-7QM22DU7.js";
|
|
10
11
|
import "../../chunk-YGRQ4Q5P.js";
|
|
11
|
-
import "../../chunk-
|
|
12
|
+
import "../../chunk-K25PK5EC.js";
|
|
12
13
|
|
|
13
14
|
// src/server/worker/index.ts
|
|
14
15
|
import Fastify from "fastify";
|
|
@@ -58,6 +59,7 @@ var WORKER_ERROR_CODES = {
|
|
|
58
59
|
VALIDATION_ERROR: "validation_error",
|
|
59
60
|
INVALID_WORKSPACE_ID: "invalid_workspace_id",
|
|
60
61
|
NOT_IMPLEMENTED: "not_implemented",
|
|
62
|
+
ALREADY_EXISTS: "REMOTE_WORKER_ALREADY_EXISTS",
|
|
61
63
|
EXEC_CONCURRENCY_LIMIT: "exec_concurrency_limit",
|
|
62
64
|
UNSUPPORTED_WORKSPACE_OP: "unsupported_workspace_op"
|
|
63
65
|
};
|
|
@@ -154,6 +156,20 @@ async function runWorkspaceOp(workspace, op) {
|
|
|
154
156
|
if (!workspace.writeBinaryFile) throw Object.assign(new Error("binary write unsupported"), { statusCode: 501, code: WORKER_ERROR_CODES.NOT_IMPLEMENTED });
|
|
155
157
|
await workspace.writeBinaryFile(op.path, new Uint8Array(Buffer.from(op.dataBase64, "base64")));
|
|
156
158
|
return { ok: true };
|
|
159
|
+
case "createBinaryFile":
|
|
160
|
+
if (!workspace.createBinaryFile) throw Object.assign(new Error("exclusive binary create unsupported"), { statusCode: 501, code: WORKER_ERROR_CODES.NOT_IMPLEMENTED });
|
|
161
|
+
try {
|
|
162
|
+
await workspace.createBinaryFile(op.path, new Uint8Array(Buffer.from(op.dataBase64, "base64")));
|
|
163
|
+
} catch (error) {
|
|
164
|
+
if (error?.code === "EEXIST") {
|
|
165
|
+
throw Object.assign(new Error("exclusive binary create destination exists"), {
|
|
166
|
+
statusCode: 409,
|
|
167
|
+
code: WORKER_ERROR_CODES.ALREADY_EXISTS
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
throw error;
|
|
171
|
+
}
|
|
172
|
+
return { ok: true };
|
|
157
173
|
case "readFileWithStat":
|
|
158
174
|
if (!workspace.readFileWithStat) {
|
|
159
175
|
return { content: await workspace.readFile(op.path), stat: await workspace.stat(op.path) };
|
|
@@ -247,7 +263,10 @@ async function registerWorkerRoutes(app, config, runtimeProvider) {
|
|
|
247
263
|
}
|
|
248
264
|
});
|
|
249
265
|
app.get("/health", async () => ({ ok: true }));
|
|
250
|
-
app.get("/internal/health", async () => ({
|
|
266
|
+
app.get("/internal/health", async () => ({
|
|
267
|
+
ok: true,
|
|
268
|
+
capabilities: [REMOTE_WORKER_EXCLUSIVE_BINARY_CREATE_CAPABILITY]
|
|
269
|
+
}));
|
|
251
270
|
app.addHook("preHandler", async (request, reply) => {
|
|
252
271
|
if (request.method === "GET" && request.url === "/health") return;
|
|
253
272
|
if (!verifyInternalToken(request, reply, config.internalToken)) return reply;
|