@claudexor/control-api 3.24.0 → 4.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/account-resource-routes.d.ts +13 -0
- package/dist/account-resource-routes.d.ts.map +1 -0
- package/dist/account-resource-routes.js +131 -0
- package/dist/account-resource-routes.js.map +1 -0
- package/dist/catalog-query.d.ts +5 -0
- package/dist/catalog-query.d.ts.map +1 -1
- package/dist/catalog-query.js +24 -6
- package/dist/catalog-query.js.map +1 -1
- package/dist/daemon-server.d.ts +15 -3
- package/dist/daemon-server.d.ts.map +1 -1
- package/dist/daemon-server.js +14 -18
- package/dist/daemon-server.js.map +1 -1
- package/dist/http-server-options.d.ts +28 -0
- package/dist/http-server-options.d.ts.map +1 -0
- package/dist/http-server-options.js +35 -0
- package/dist/http-server-options.js.map +1 -0
- package/dist/operation-catalog.d.ts.map +1 -1
- package/dist/operation-catalog.js +3 -16
- package/dist/operation-catalog.js.map +1 -1
- package/dist/operation-summaries.d.ts.map +1 -1
- package/dist/operation-summaries.js +1 -1
- package/dist/operation-summaries.js.map +1 -1
- package/dist/project-routes.d.ts.map +1 -1
- package/dist/project-routes.js +5 -2
- package/dist/project-routes.js.map +1 -1
- package/dist/run-events-stream.d.ts +2 -0
- package/dist/run-events-stream.d.ts.map +1 -1
- package/dist/run-events-stream.js +17 -6
- package/dist/run-events-stream.js.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import type { DaemonControlApiOptions } from "./daemon-server.js";
|
|
3
|
+
import type { OperationDraft } from "./operation-draft.js";
|
|
4
|
+
export declare const ACCOUNT_RESOURCE_OPERATION_DRAFTS: OperationDraft[];
|
|
5
|
+
interface Context {
|
|
6
|
+
services?: Pick<NonNullable<DaemonControlApiOptions["services"]>, "quota" | "refreshQuota" | "createAccountReset" | "accountReset">;
|
|
7
|
+
readBody: (req: IncomingMessage) => Promise<unknown>;
|
|
8
|
+
json: (res: ServerResponse, status: number, body: unknown) => void;
|
|
9
|
+
requestError: (res: ServerResponse, error: unknown) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function handleAccountResourceRoute(ctx: Context, method: string, path: string, url: URL, req: IncomingMessage, res: ServerResponse): Promise<boolean>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=account-resource-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-resource-routes.d.ts","sourceRoot":"","sources":["../src/account-resource-routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AASjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAqB3D,eAAO,MAAM,iCAAiC,EAAE,cAAc,EA2D7D,CAAC;AACF,UAAU,OAAO;IACf,QAAQ,CAAC,EAAE,IAAI,CACb,WAAW,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,EAChD,OAAO,GAAG,cAAc,GAAG,oBAAoB,GAAG,cAAc,CACjE,CAAC;IACF,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACnE,YAAY,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7D;AAQD,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,OAAO,CAAC,CA6ClB"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { ControlAccountResourcesResponse, ControlQuotaFreshnessResponse, ControlQuotaResponse, ControlQuotaRefreshRequest, ControlAccountResetRequest, ControlAccountResetResponse, } from "@claudexor/schema";
|
|
2
|
+
import { quotaReadViewQuery, resourceViewQuery } from "./catalog-query.js";
|
|
3
|
+
import { assertOnlyQueryParams } from "./query.js";
|
|
4
|
+
import { requiredIdempotencyKey } from "./run-start.js";
|
|
5
|
+
import { queryParam } from "./operation-parameters.js";
|
|
6
|
+
const parameters = [
|
|
7
|
+
queryParam({
|
|
8
|
+
name: "view",
|
|
9
|
+
enum: ["resources"],
|
|
10
|
+
description: "Opt in to typed account resources alongside quota.",
|
|
11
|
+
}),
|
|
12
|
+
];
|
|
13
|
+
const readParameters = [
|
|
14
|
+
queryParam({
|
|
15
|
+
name: "view",
|
|
16
|
+
enum: ["resources", "constraint_freshness"],
|
|
17
|
+
description: "Opt in to typed account resources alongside quota, or to per-constraint freshness from raw snapshot evidence, observation TTL, and each window's own reset; omitted preserves the legacy shape. Does not refresh quota.",
|
|
18
|
+
}),
|
|
19
|
+
];
|
|
20
|
+
export const ACCOUNT_RESOURCE_OPERATION_DRAFTS = [
|
|
21
|
+
{
|
|
22
|
+
method: "GET",
|
|
23
|
+
path: "/v2/credential-profiles",
|
|
24
|
+
mutability: "read_only",
|
|
25
|
+
requestSchema: null,
|
|
26
|
+
responseSchema: "ControlCredentialProfilesQueryResponse",
|
|
27
|
+
responseKind: "json",
|
|
28
|
+
parameters: [
|
|
29
|
+
queryParam({
|
|
30
|
+
name: "view",
|
|
31
|
+
enum: ["resources"],
|
|
32
|
+
description: "Include typed resources in quota; requires snapshot=true.",
|
|
33
|
+
}),
|
|
34
|
+
queryParam({
|
|
35
|
+
name: "snapshot",
|
|
36
|
+
enum: ["true", "false"],
|
|
37
|
+
description: "Return one fresh server-authored Accounts snapshot epoch.",
|
|
38
|
+
}),
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
method: "GET",
|
|
43
|
+
path: "/v2/quota",
|
|
44
|
+
mutability: "read_only",
|
|
45
|
+
requestSchema: null,
|
|
46
|
+
responseSchema: "ControlQuotaQueryResponse",
|
|
47
|
+
responseKind: "json",
|
|
48
|
+
parameters: readParameters,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
method: "POST",
|
|
52
|
+
path: "/v2/quota",
|
|
53
|
+
mutability: "mutating",
|
|
54
|
+
idempotency: "natural",
|
|
55
|
+
requestSchema: "ControlQuotaRefreshRequest",
|
|
56
|
+
responseSchema: "ControlQuotaQueryResponse",
|
|
57
|
+
responseKind: "json",
|
|
58
|
+
parameters,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
method: "POST",
|
|
62
|
+
path: "/v2/account-resets",
|
|
63
|
+
mutability: "mutating",
|
|
64
|
+
requestSchema: "ControlAccountResetRequest",
|
|
65
|
+
responseSchema: "ControlAccountResetResponse",
|
|
66
|
+
responseKind: "json",
|
|
67
|
+
idempotency: "key_required",
|
|
68
|
+
summary: "Explicitly consume a native account reset and read back its resources.",
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
method: "GET",
|
|
72
|
+
path: "/v2/account-resets/:id",
|
|
73
|
+
mutability: "read_only",
|
|
74
|
+
requestSchema: null,
|
|
75
|
+
responseSchema: "ControlAccountResetResponse",
|
|
76
|
+
responseKind: "json",
|
|
77
|
+
summary: "Read a durable account reset receipt.",
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
function required(service) {
|
|
81
|
+
if (service)
|
|
82
|
+
return service;
|
|
83
|
+
throw Object.assign(new Error("Account resource service is unavailable"), {
|
|
84
|
+
status: 501,
|
|
85
|
+
code: "not_implemented",
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
export async function handleAccountResourceRoute(ctx, method, path, url, req, res) {
|
|
89
|
+
try {
|
|
90
|
+
if ((method === "GET" && path === "/quota") || (method === "POST" && path === "/quota")) {
|
|
91
|
+
assertOnlyQueryParams(url, ["view"]);
|
|
92
|
+
const view = method === "GET" ? quotaReadViewQuery(url) : resourceViewQuery(url);
|
|
93
|
+
const schema = view === "resources"
|
|
94
|
+
? ControlAccountResourcesResponse
|
|
95
|
+
: view === "constraint_freshness"
|
|
96
|
+
? ControlQuotaFreshnessResponse
|
|
97
|
+
: ControlQuotaResponse;
|
|
98
|
+
const payload = method === "GET"
|
|
99
|
+
? await required(ctx.services?.quota)(view ? { view } : undefined)
|
|
100
|
+
: await required(ctx.services?.refreshQuota)({
|
|
101
|
+
...ControlQuotaRefreshRequest.parse(await ctx.readBody(req)),
|
|
102
|
+
...(view === "resources" ? { view } : {}),
|
|
103
|
+
});
|
|
104
|
+
ctx.json(res, 200, schema.parse(payload));
|
|
105
|
+
return true;
|
|
106
|
+
}
|
|
107
|
+
if (method === "POST" && path === "/account-resets") {
|
|
108
|
+
const request = ControlAccountResetRequest.parse(await ctx.readBody(req));
|
|
109
|
+
const idempotencyKey = requiredIdempotencyKey(req);
|
|
110
|
+
const payload = await required(ctx.services?.createAccountReset)({
|
|
111
|
+
request,
|
|
112
|
+
idempotencyKey,
|
|
113
|
+
clientId: "control-api",
|
|
114
|
+
});
|
|
115
|
+
ctx.json(res, 200, ControlAccountResetResponse.parse(payload));
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
const accountResetMatch = /^\/account-resets\/([^/]+)$/.exec(path);
|
|
119
|
+
if (method === "GET" && accountResetMatch) {
|
|
120
|
+
const payload = await required(ctx.services?.accountReset)(decodeURIComponent(accountResetMatch[1]));
|
|
121
|
+
ctx.json(res, 200, ControlAccountResetResponse.parse(payload));
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
ctx.requestError(res, error);
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=account-resource-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-resource-routes.js","sourceRoot":"","sources":["../src/account-resource-routes.ts"],"names":[],"mappings":"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"}
|
package/dist/catalog-query.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type ControlQuotaReadRequest } from "@claudexor/schema";
|
|
1
2
|
export interface HarnessListQuery {
|
|
2
3
|
fresh?: boolean;
|
|
3
4
|
includeFakes?: boolean;
|
|
@@ -7,6 +8,7 @@ export declare function parseHarnessListQuery(url: URL): HarnessListQuery;
|
|
|
7
8
|
export declare function parseCredentialProfilesSnapshotQuery(url: URL): {
|
|
8
9
|
input: {
|
|
9
10
|
snapshot: boolean;
|
|
11
|
+
view?: "resources" | undefined;
|
|
10
12
|
};
|
|
11
13
|
schema: import("zod/v3").ZodObject<{
|
|
12
14
|
profiles: import("zod/v3").ZodArray<import("zod/v3").ZodObject<{
|
|
@@ -409,4 +411,7 @@ export declare function parseCredentialProfilesSnapshotQuery(url: URL): {
|
|
|
409
411
|
export declare function parseRunApplicabilityQuery(url: URL): {
|
|
410
412
|
repoRoot: string;
|
|
411
413
|
};
|
|
414
|
+
export declare function resourceViewQuery(url: URL): "resources" | undefined;
|
|
415
|
+
/** GET-only quota read selector; POST refresh keeps resourceViewQuery. */
|
|
416
|
+
export declare function quotaReadViewQuery(url: URL): ControlQuotaReadRequest["view"];
|
|
412
417
|
//# sourceMappingURL=catalog-query.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-query.d.ts","sourceRoot":"","sources":["../src/catalog-query.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"catalog-query.d.ts","sourceRoot":"","sources":["../src/catalog-query.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,gBAAgB,CAchE;AAED,wBAAgB,oCAAoC,CAAC,GAAG,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa5D;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,GAAG,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAOzE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,WAAW,GAAG,SAAS,CAInE;AAED,0EAA0E;AAC1E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAK5E"}
|
package/dist/catalog-query.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { assertOnlyQueryParams, optionalBooleanQuery, singleQuery } from "./query.js";
|
|
2
|
-
import { ControlCredentialProfilesResponse, ControlCredentialProfilesSnapshotResponse, } from "@claudexor/schema";
|
|
2
|
+
import { ControlCredentialProfilesResponse, ControlCredentialProfilesSnapshotResponse, ControlCredentialProfilesResourcesResponse, } from "@claudexor/schema";
|
|
3
3
|
export function parseHarnessListQuery(url) {
|
|
4
4
|
assertOnlyQueryParams(url, ["fresh", "all", "harness"]);
|
|
5
5
|
const fresh = optionalBooleanQuery(url, "fresh");
|
|
@@ -16,13 +16,18 @@ export function parseHarnessListQuery(url) {
|
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
18
|
export function parseCredentialProfilesSnapshotQuery(url) {
|
|
19
|
-
assertOnlyQueryParams(url, ["snapshot"]);
|
|
19
|
+
assertOnlyQueryParams(url, ["snapshot", "view"]);
|
|
20
20
|
const snapshot = optionalBooleanQuery(url, "snapshot") ?? false;
|
|
21
|
+
const view = resourceViewQuery(url);
|
|
22
|
+
if (view && !snapshot)
|
|
23
|
+
throw new Error("view=resources requires snapshot=true");
|
|
21
24
|
return {
|
|
22
|
-
input: { snapshot },
|
|
23
|
-
schema:
|
|
24
|
-
?
|
|
25
|
-
:
|
|
25
|
+
input: { snapshot, ...(view ? { view } : {}) },
|
|
26
|
+
schema: view
|
|
27
|
+
? ControlCredentialProfilesResourcesResponse
|
|
28
|
+
: snapshot
|
|
29
|
+
? ControlCredentialProfilesSnapshotResponse
|
|
30
|
+
: ControlCredentialProfilesResponse,
|
|
26
31
|
};
|
|
27
32
|
}
|
|
28
33
|
export function parseRunApplicabilityQuery(url) {
|
|
@@ -33,4 +38,17 @@ export function parseRunApplicabilityQuery(url) {
|
|
|
33
38
|
}
|
|
34
39
|
return { repoRoot };
|
|
35
40
|
}
|
|
41
|
+
export function resourceViewQuery(url) {
|
|
42
|
+
const view = singleQuery(url, "view");
|
|
43
|
+
if (view !== undefined && view !== "resources")
|
|
44
|
+
throw new Error("view must be resources");
|
|
45
|
+
return view;
|
|
46
|
+
}
|
|
47
|
+
/** GET-only quota read selector; POST refresh keeps resourceViewQuery. */
|
|
48
|
+
export function quotaReadViewQuery(url) {
|
|
49
|
+
const view = singleQuery(url, "view");
|
|
50
|
+
if (view !== undefined && view !== "resources" && view !== "constraint_freshness")
|
|
51
|
+
throw new Error("view must be resources or constraint_freshness");
|
|
52
|
+
return view;
|
|
53
|
+
}
|
|
36
54
|
//# sourceMappingURL=catalog-query.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-query.js","sourceRoot":"","sources":["../src/catalog-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EACL,iCAAiC,EACjC,yCAAyC,
|
|
1
|
+
{"version":3,"file":"catalog-query.js","sourceRoot":"","sources":["../src/catalog-query.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon-server.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ControlAccountResetRequest } from "@claudexor/schema";
|
|
1
2
|
import { verifyAndDeliver } from "@claudexor/delivery";
|
|
2
3
|
import { type ControlOperatorDecisionRecord, type DaemonFacadeClient } from "./run-record.js";
|
|
3
4
|
export { type ControlOperatorDecisionRecord, type DaemonFacadeClient, type DaemonRunRecord, } from "./run-record.js";
|
|
@@ -9,7 +10,7 @@ import { type MaintenanceRouteServices } from "./maintenance-routes.js";
|
|
|
9
10
|
import { type ResourceRouteServices } from "./resource-routes.js";
|
|
10
11
|
import { type ModelRouteServices } from "./model-routes.js";
|
|
11
12
|
export { resetRunListFingerprintProbeCountForTests, runListFingerprintProbeCountForTests, } from "./run-list-fingerprint.js";
|
|
12
|
-
import { ControlAuthReadinessRefreshRequest, ResourceAttachmentRef, ControlSetupJobCreateRequest, type ControlRunStartRequest, ControlQuotaRefreshRequest, ControlTrustUpdateRequest, type ControlPendingInteraction, type LiveMessageDelivery, type LiveMessageInput } from "@claudexor/schema";
|
|
13
|
+
import { ControlAuthReadinessRefreshRequest, ResourceAttachmentRef, ControlSetupJobCreateRequest, type ControlRunStartRequest, ControlQuotaRefreshRequest, type ControlQuotaReadRequest, ControlTrustUpdateRequest, type ControlPendingInteraction, type LiveMessageDelivery, type LiveMessageInput } from "@claudexor/schema";
|
|
13
14
|
import { type ControlServingMode } from "./control-protocol.js";
|
|
14
15
|
export interface DaemonControlApiOptions {
|
|
15
16
|
token: string;
|
|
@@ -26,6 +27,8 @@ export interface DaemonControlApiOptions {
|
|
|
26
27
|
run_id: string;
|
|
27
28
|
}) => void): () => void;
|
|
28
29
|
};
|
|
30
|
+
/** Internal storage fact; a committed terminal may still need its file effects. */
|
|
31
|
+
terminalFilesPending?: (runIdOrCommandId: string) => boolean;
|
|
29
32
|
services?: DeliveryCommandServices & Partial<ModelRouteServices> & Partial<ResourceRouteServices> & Partial<MaintenanceRouteServices> & Partial<ProjectRouteServices> & {
|
|
30
33
|
harnesses?: (input?: {
|
|
31
34
|
fresh?: boolean;
|
|
@@ -65,12 +68,21 @@ export interface DaemonControlApiOptions {
|
|
|
65
68
|
journalEvents?: (partition: string, afterCursor?: string) => Promise<unknown>;
|
|
66
69
|
settings?: () => Promise<unknown>;
|
|
67
70
|
updateSettings?: (patch: unknown) => Promise<unknown>;
|
|
68
|
-
quota?: () => Promise<unknown>;
|
|
69
|
-
|
|
71
|
+
quota?: (input?: ControlQuotaReadRequest) => Promise<unknown>;
|
|
72
|
+
createAccountReset?: (input: {
|
|
73
|
+
request: ControlAccountResetRequest;
|
|
74
|
+
idempotencyKey: string;
|
|
75
|
+
clientId: string;
|
|
76
|
+
}) => Promise<unknown>;
|
|
77
|
+
accountReset?: (id: string) => Promise<unknown>;
|
|
78
|
+
refreshQuota?: (input?: ControlQuotaRefreshRequest & {
|
|
79
|
+
view?: "resources";
|
|
80
|
+
}) => Promise<unknown>;
|
|
70
81
|
accountPools?: () => Promise<unknown>;
|
|
71
82
|
rollbackAccountsMigration?: (input: unknown) => Promise<unknown>;
|
|
72
83
|
credentialProfiles?: (input?: {
|
|
73
84
|
snapshot?: boolean;
|
|
85
|
+
view?: "resources";
|
|
74
86
|
}) => Promise<unknown>;
|
|
75
87
|
runApplicability?: (input: {
|
|
76
88
|
repoRoot: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon-server.d.ts","sourceRoot":"","sources":["../src/daemon-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"daemon-server.d.ts","sourceRoot":"","sources":["../src/daemon-server.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon-server.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { handleAccountResourceRoute } from "./account-resource-routes.js";
|
|
1
2
|
import { readThreadCommands } from "./command-reads.js";
|
|
2
3
|
import { recoverInterruptedOutput } from "./retained-output.js";
|
|
3
4
|
import { recordedExecutionRoot } from "./run-delivery-state.js";
|
|
@@ -9,7 +10,7 @@ import { existsSync, lstatSync, mkdirSync, readdirSync, writeFileSync } from "no
|
|
|
9
10
|
import { createServer } from "node:http";
|
|
10
11
|
import { basename, extname, join } from "node:path";
|
|
11
12
|
import { deriveApplyEligibility, revertInPlaceFromAnchor, validateApplyGate, verifyAndDeliver, } from "@claudexor/delivery";
|
|
12
|
-
import {
|
|
13
|
+
import { lastRunEventSeq } from "@claudexor/event-log";
|
|
13
14
|
import { isVanishedErrno, safeArtifactPath, safeArtifactRoot } from "./artifact-paths.js";
|
|
14
15
|
import { TERMINAL_STATES } from "./sse-shared.js";
|
|
15
16
|
import { readFilesWorkProduct } from "./files-work-product.js";
|
|
@@ -59,9 +60,10 @@ export { resetRunListFingerprintProbeCountForTests, runListFingerprintProbeCount
|
|
|
59
60
|
import { controlProblemError, normalizeRequestValidationError, revertRefusedProblem, thrownProblemCode, } from "./problem-response.js";
|
|
60
61
|
import { handleSecurityRoute } from "./security-routes.js";
|
|
61
62
|
import { effectiveTerminalFacts, expectedRunFacts, projectRunFactsForDetail, } from "./run-facts-projection.js";
|
|
62
|
-
import { PlanQuestionsArtifact, CouncilProjection, derivePlanReadiness, directDelegatedChildrenFromRecords, ControlAuthReadinessRefreshRequest, ControlAuthReadinessRefreshResponse, ControlProblem, AccessProfile, ControlApplyRequest, AgentCapabilityCatalog, ControlHarnessListResponse, ControlHarnessModelsQueryResponse, ControlSetupJob, ControlSetupJobCreateRequest, ControlSetupJobInputRequest, ControlSetupJobEvent, ControlSetupJobSnapshot, isTerminalControlSetupJobState, ControlSetupJobListFilter, ControlSetupJobListResponse, ControlRunStartInfo, ControlRunControlRequest, ControlRunControlResponse, ControlReviewerPanelEntry, ControlRunDetail, ControlRunListResponse, ControlRunSummary, ControlBudgetSnapshot, PaidBudget, ControlSettingsSnapshot, ControlSettingsUpdateRequest,
|
|
63
|
+
import { PlanQuestionsArtifact, CouncilProjection, derivePlanReadiness, directDelegatedChildrenFromRecords, ControlAuthReadinessRefreshRequest, ControlAuthReadinessRefreshResponse, ControlProblem, AccessProfile, ControlApplyRequest, AgentCapabilityCatalog, ControlHarnessListResponse, ControlHarnessModelsQueryResponse, ControlSetupJob, ControlSetupJobCreateRequest, ControlSetupJobInputRequest, ControlSetupJobEvent, ControlSetupJobSnapshot, isTerminalControlSetupJobState, ControlSetupJobListFilter, ControlSetupJobListResponse, ControlRunStartInfo, ControlRunControlRequest, ControlRunControlResponse, ControlReviewerPanelEntry, ControlRunDetail, ControlRunListResponse, ControlRunSummary, ControlBudgetSnapshot, PaidBudget, ControlSettingsSnapshot, ControlSettingsUpdateRequest, ControlAccountPoolsResponse, ControlAccountsMigrationRollbackRequest, ControlAccountsMigrationRollbackResponse, ControlCredentialProfileCreateRequest, ControlCredentialProfileCreateResponse, ControlCredentialProfileUpdateRequest, ControlCredentialProfileUpdateResponse, ControlCredentialProfileDeleteResponse, ControlInteractionAnswerRequest, ControlInteractionAnswerResponse, ControlRunDecisionRequest, ControlRunDecisionResponse, ControlRunApplicabilityResponse, ControlThreadTurnRequest, ControlThreadUpdateRequest, ControlThreadDetail, ControlThreadListResponse, DecisionRecord, Id, ModeKind, RoutingGoal, ReviewFinding, RunFailure, RunTelemetry, StructuredOutputConformance, TaskContract, ProtectedPathApproval, isTerminalLifecycle, needsDecision, needsOperatorAttention, outcomeBanner, outcomeFactsFromFailure, TestCommandInvocation, WorkProduct, } from "@claudexor/schema";
|
|
63
64
|
import { resolveControlProtocol } from "./control-protocol.js";
|
|
64
65
|
import { readControlRequestBody } from "./request-body.js";
|
|
66
|
+
import { withControlHttpTimeouts } from "./http-server-options.js";
|
|
65
67
|
import { assertNoInlineSecretValues, errorCode, noProjectRepoRoot, redactSecrets, safeProblemContext, safeProblemRequiredActions, sha256, } from "@claudexor/util";
|
|
66
68
|
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
|
|
67
69
|
const LOOPBACK_HOSTS = new Set(["127.0.0.1", "localhost", "::1"]);
|
|
@@ -216,7 +218,7 @@ export class DaemonControlApiServer {
|
|
|
216
218
|
const host = this.opts.host ?? "127.0.0.1";
|
|
217
219
|
const port = this.opts.port ?? 0;
|
|
218
220
|
await new Promise((resolve, reject) => {
|
|
219
|
-
this.server = createServer((req, res) => this.onRequest(req, res));
|
|
221
|
+
this.server = withControlHttpTimeouts(createServer((req, res) => this.onRequest(req, res)));
|
|
220
222
|
this.server.once("error", reject);
|
|
221
223
|
this.server.listen(port, host, () => resolve());
|
|
222
224
|
});
|
|
@@ -429,7 +431,7 @@ export class DaemonControlApiServer {
|
|
|
429
431
|
return this.json(res, 404, { error: "no such run" });
|
|
430
432
|
// Fence order: cursor FIRST, every projection (pending interactions
|
|
431
433
|
// included) after it — see the detailFor doc comment.
|
|
432
|
-
const lastSeq = rec.runDir ?
|
|
434
|
+
const lastSeq = rec.runDir ? lastRunEventSeq(join(rec.runDir, "events.jsonl")) : 0;
|
|
433
435
|
const parentRunId = rec.runId ?? rec.id;
|
|
434
436
|
// Addressed child read: the daemon selects this parent's direct children
|
|
435
437
|
// before it projects, so parent detail never pays for the params of every
|
|
@@ -956,23 +958,17 @@ export class DaemonControlApiServer {
|
|
|
956
958
|
}
|
|
957
959
|
return this.service(res, "updateSettings", body, ControlSettingsSnapshot);
|
|
958
960
|
}
|
|
959
|
-
if (
|
|
960
|
-
|
|
961
|
+
if (await handleAccountResourceRoute({
|
|
962
|
+
services: this.opts.services,
|
|
963
|
+
readBody: (request) => this.readBody(request),
|
|
964
|
+
json: (response, status, body) => this.json(response, status, body),
|
|
965
|
+
requestError: (response, error) => this.requestError(response, error),
|
|
966
|
+
}, method, path, url, req, res))
|
|
967
|
+
return;
|
|
961
968
|
// Unified account model: the pool-authority read (also the feature marker
|
|
962
969
|
// clients detect through the operation catalog).
|
|
963
970
|
if (method === "GET" && path === "/account-pools")
|
|
964
971
|
return this.service(res, "accountPools", undefined, ControlAccountPoolsResponse);
|
|
965
|
-
if (method === "POST" && path === "/quota") {
|
|
966
|
-
let body;
|
|
967
|
-
try {
|
|
968
|
-
// An absent/empty body keeps the model-agnostic projection.
|
|
969
|
-
body = ControlQuotaRefreshRequest.parse(await this.readBody(req));
|
|
970
|
-
}
|
|
971
|
-
catch (err) {
|
|
972
|
-
return this.requestError(res, err);
|
|
973
|
-
}
|
|
974
|
-
return this.service(res, "refreshQuota", body, ControlQuotaResponse);
|
|
975
|
-
}
|
|
976
972
|
if (method === "GET" && path === "/credential-profiles") {
|
|
977
973
|
try {
|
|
978
974
|
const query = parseCredentialProfilesSnapshotQuery(url);
|
|
@@ -1893,7 +1889,7 @@ function detailFor(rec, pendingInteractions = [], cursor, operator = null, child
|
|
|
1893
1889
|
// that cursor would never see it). A pre-projection cursor errs the other
|
|
1894
1890
|
// way: an in-between event is both reflected AND replayed, which clients
|
|
1895
1891
|
// absorb (event application is reconciled against the newer snapshot).
|
|
1896
|
-
const lastSeq = cursor ?? (rec.runDir ?
|
|
1892
|
+
const lastSeq = cursor ?? (rec.runDir ? lastRunEventSeq(join(rec.runDir, "events.jsonl")) : 0);
|
|
1897
1893
|
const failure = readFailure(rec);
|
|
1898
1894
|
const decision = safeReadStructuredArtifact(rec, "arbitration/decision.yaml", DecisionRecord);
|
|
1899
1895
|
const operatorDecisionRaw = operator
|