@dsh-enhanced/assistant-actions 0.1.30
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/LICENSE +21 -0
- package/README.md +247 -0
- package/cordis.patch.yml +3 -0
- package/lib/broker-cli.d.ts +70 -0
- package/lib/broker-cli.d.ts.map +1 -0
- package/lib/broker-cli.js +255 -0
- package/lib/broker-cli.js.map +1 -0
- package/lib/broker-client.d.ts +54 -0
- package/lib/broker-client.d.ts.map +1 -0
- package/lib/broker-client.js +266 -0
- package/lib/broker-client.js.map +1 -0
- package/lib/broker-core.d.ts +51 -0
- package/lib/broker-core.d.ts.map +1 -0
- package/lib/broker-core.js +441 -0
- package/lib/broker-core.js.map +1 -0
- package/lib/broker-ledger.d.ts +131 -0
- package/lib/broker-ledger.d.ts.map +1 -0
- package/lib/broker-ledger.js +925 -0
- package/lib/broker-ledger.js.map +1 -0
- package/lib/broker-peer-linux.d.ts +23 -0
- package/lib/broker-peer-linux.d.ts.map +1 -0
- package/lib/broker-peer-linux.js +68 -0
- package/lib/broker-peer-linux.js.map +1 -0
- package/lib/broker-protocol.d.ts +419 -0
- package/lib/broker-protocol.d.ts.map +1 -0
- package/lib/broker-protocol.js +786 -0
- package/lib/broker-protocol.js.map +1 -0
- package/lib/broker-server.d.ts +77 -0
- package/lib/broker-server.d.ts.map +1 -0
- package/lib/broker-server.js +467 -0
- package/lib/broker-server.js.map +1 -0
- package/lib/cli.d.ts +3 -0
- package/lib/cli.d.ts.map +1 -0
- package/lib/cli.js +36 -0
- package/lib/cli.js.map +1 -0
- package/lib/config.d.ts +54 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +165 -0
- package/lib/config.js.map +1 -0
- package/lib/external-delivery-receipt.d.ts +11 -0
- package/lib/external-delivery-receipt.d.ts.map +1 -0
- package/lib/external-delivery-receipt.js +25 -0
- package/lib/external-delivery-receipt.js.map +1 -0
- package/lib/github.d.ts +78 -0
- package/lib/github.d.ts.map +1 -0
- package/lib/github.js +611 -0
- package/lib/github.js.map +1 -0
- package/lib/index.d.ts +19 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +23 -0
- package/lib/index.js.map +1 -0
- package/lib/ledger.d.ts +78 -0
- package/lib/ledger.d.ts.map +1 -0
- package/lib/ledger.js +1064 -0
- package/lib/ledger.js.map +1 -0
- package/lib/repository-readback.d.ts +34 -0
- package/lib/repository-readback.d.ts.map +1 -0
- package/lib/repository-readback.js +193 -0
- package/lib/repository-readback.js.map +1 -0
- package/lib/service.d.ts +86 -0
- package/lib/service.d.ts.map +1 -0
- package/lib/service.js +1259 -0
- package/lib/service.js.map +1 -0
- package/lib/types.d.ts +174 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +2 -0
- package/lib/types.js.map +1 -0
- package/lib/verified-delivery.d.ts +104 -0
- package/lib/verified-delivery.d.ts.map +1 -0
- package/lib/verified-delivery.js +262 -0
- package/lib/verified-delivery.js.map +1 -0
- package/lib/version.d.ts +2 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/version.js +2 -0
- package/lib/version.js.map +1 -0
- package/package.json +123 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker-client.js","sourceRoot":"","sources":["../src/broker-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { commitOnGitHub, createPullRequestOnGitHub, inspectGitHub } from './github.js';
|
|
2
|
+
import { type BrokerAdminRequest, type BrokerAdminResponseUnsigned, type BrokerClientRequest, type BrokerServerResponseUnsigned } from './broker-protocol.js';
|
|
3
|
+
import { type BrokerControlSnapshot, type ExternalGitHubGrant } from './broker-ledger.js';
|
|
4
|
+
type BrokerResponse = Pick<BrokerServerResponseUnsigned, 'status' | 'dispatched' | 'result' | 'error' | 'completedAt'>;
|
|
5
|
+
type BrokerAdminResponse = Pick<BrokerAdminResponseUnsigned, 'status' | 'state' | 'error' | 'completedAt'>;
|
|
6
|
+
type GitHubTransport = typeof commitOnGitHub;
|
|
7
|
+
type InspectTransport = typeof inspectGitHub;
|
|
8
|
+
type PullRequestTransport = typeof createPullRequestOnGitHub;
|
|
9
|
+
export interface BrokerProtectedFileCredential {
|
|
10
|
+
id: string;
|
|
11
|
+
provider: 'linux-protected-file';
|
|
12
|
+
path: string;
|
|
13
|
+
maxLeaseMs: number;
|
|
14
|
+
}
|
|
15
|
+
export interface ExternalBrokerCoreConfig {
|
|
16
|
+
instanceId: string;
|
|
17
|
+
statePath: string;
|
|
18
|
+
credentials: readonly BrokerProtectedFileCredential[];
|
|
19
|
+
grants: readonly ExternalGitHubGrant[];
|
|
20
|
+
policyEpoch: number;
|
|
21
|
+
expectedGeneration?: number;
|
|
22
|
+
controllerTtlMs?: number;
|
|
23
|
+
credentialMaxBytes?: number;
|
|
24
|
+
now?: () => number;
|
|
25
|
+
}
|
|
26
|
+
export interface ExternalBrokerCoreTransports {
|
|
27
|
+
commit?: GitHubTransport;
|
|
28
|
+
inspect?: InspectTransport;
|
|
29
|
+
pullRequest?: PullRequestTransport;
|
|
30
|
+
/** Deterministic race hook used only by filesystem-boundary tests. */
|
|
31
|
+
beforeCredentialOpen?: () => void | Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export declare function normalizeExternalBrokerCoreConfig(value: unknown): ExternalBrokerCoreConfig;
|
|
34
|
+
export declare class BrokerCoreError extends Error {
|
|
35
|
+
readonly code: 'aborted' | 'broker-draining' | 'credential-unavailable' | 'deadline-exceeded' | 'grant-invalid' | 'internal-error' | 'policy-changed' | 'request-conflict' | 'request-invalid' | 'transport-failed' | 'unsupported-operation';
|
|
36
|
+
readonly dispatched: boolean;
|
|
37
|
+
constructor(code: 'aborted' | 'broker-draining' | 'credential-unavailable' | 'deadline-exceeded' | 'grant-invalid' | 'internal-error' | 'policy-changed' | 'request-conflict' | 'request-invalid' | 'transport-failed' | 'unsupported-operation', dispatched?: boolean);
|
|
38
|
+
}
|
|
39
|
+
export declare class ExternalBrokerCore {
|
|
40
|
+
#private;
|
|
41
|
+
constructor(input: ExternalBrokerCoreConfig, transports?: ExternalBrokerCoreTransports);
|
|
42
|
+
snapshot(): BrokerControlSnapshot;
|
|
43
|
+
execute: (request: BrokerClientRequest, signal: AbortSignal) => Promise<BrokerResponse>;
|
|
44
|
+
admin: (request: BrokerAdminRequest, signal: AbortSignal) => Promise<BrokerAdminResponse>;
|
|
45
|
+
beginDrain: (reason?: "sigterm" | "sigint" | "admin" | "lifecycle") => void;
|
|
46
|
+
drain: (deadlineAt: number) => Promise<void>;
|
|
47
|
+
close: () => Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
export declare function createExternalBrokerCore(config: ExternalBrokerCoreConfig, transports?: ExternalBrokerCoreTransports): ExternalBrokerCore;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=broker-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker-core.d.ts","sourceRoot":"","sources":["../src/broker-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
+
import { constants } from 'node:fs';
|
|
3
|
+
import { lstat, open, realpath } from 'node:fs/promises';
|
|
4
|
+
import { basename, dirname, isAbsolute, normalize } from 'node:path';
|
|
5
|
+
import { commitOnGitHub, createPullRequestOnGitHub, inspectGitHub } from './github.js';
|
|
6
|
+
import { brokerAdminRequestDigest, canonicalBrokerJson, normalizeBrokerInspectObservation, } from './broker-protocol.js';
|
|
7
|
+
import { BrokerLedgerError, ExternalBrokerLedger, brokerLedgerRequestDigest, normalizeBrokerGrant, } from './broker-ledger.js';
|
|
8
|
+
const FORCED_TEARDOWN_GRACE_MS = 100;
|
|
9
|
+
export function normalizeExternalBrokerCoreConfig(value) {
|
|
10
|
+
if (!plain(value) || Object.keys(value).some(key => !['instanceId', 'statePath', 'credentials', 'grants', 'policyEpoch', 'expectedGeneration', 'controllerTtlMs', 'credentialMaxBytes', 'now'].includes(key)))
|
|
11
|
+
fail('request-invalid');
|
|
12
|
+
const instanceId = text(value.instanceId, 128), statePath = text(value.statePath, 1_024), policyEpoch = integer(value.policyEpoch, 0);
|
|
13
|
+
if (!isAbsolute(statePath) || normalize(statePath) !== statePath || !Array.isArray(value.credentials) || !Array.isArray(value.grants))
|
|
14
|
+
fail('request-invalid');
|
|
15
|
+
const credentials = value.credentials.map(normalizeCredential);
|
|
16
|
+
if (credentials.length > 256 || new Set(credentials.map(item => item.id)).size !== credentials.length)
|
|
17
|
+
fail('request-invalid');
|
|
18
|
+
const grants = value.grants.map(normalizeBrokerGrant);
|
|
19
|
+
if (grants.length > 1_000 || new Set(grants.map(item => item.id)).size !== grants.length || grants.some(grant => !credentials.some(item => item.id === grant.credentialId)))
|
|
20
|
+
fail('request-invalid');
|
|
21
|
+
return Object.freeze({ instanceId, statePath, credentials: Object.freeze(credentials), grants: Object.freeze(grants), policyEpoch,
|
|
22
|
+
...(value.expectedGeneration === undefined ? {} : { expectedGeneration: integer(value.expectedGeneration, 1) }),
|
|
23
|
+
...(value.controllerTtlMs === undefined ? {} : { controllerTtlMs: integer(value.controllerTtlMs, 1_000, 300_000) }),
|
|
24
|
+
...(value.credentialMaxBytes === undefined ? {} : { credentialMaxBytes: integer(value.credentialMaxBytes, 1, 65_536) }),
|
|
25
|
+
...(value.now === undefined ? {} : typeof value.now === 'function' ? { now: value.now } : fail('request-invalid')) });
|
|
26
|
+
}
|
|
27
|
+
export class BrokerCoreError extends Error {
|
|
28
|
+
code;
|
|
29
|
+
dispatched;
|
|
30
|
+
constructor(code, dispatched = false) {
|
|
31
|
+
super('assistant-actions external broker: ' + code);
|
|
32
|
+
this.code = code;
|
|
33
|
+
this.dispatched = dispatched;
|
|
34
|
+
this.name = 'BrokerCoreError';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function fail(code, dispatched = false) { throw new BrokerCoreError(code, dispatched); }
|
|
38
|
+
function plain(value) { return value !== null && typeof value === 'object' && !Array.isArray(value) && Object.getPrototypeOf(value) === Object.prototype; }
|
|
39
|
+
function text(value, maximum = 4_096) { if (typeof value !== 'string' || value.length < 1 || value.length > maximum || /[\p{Cc}]/u.test(value))
|
|
40
|
+
fail('request-invalid'); return value; }
|
|
41
|
+
function integer(value, minimum, maximum = Number.MAX_SAFE_INTEGER) { if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < minimum || value > maximum)
|
|
42
|
+
fail('request-invalid'); return value; }
|
|
43
|
+
function safeCode(error) {
|
|
44
|
+
if (error instanceof BrokerLedgerError) {
|
|
45
|
+
if (error.code === 'conflict')
|
|
46
|
+
return 'request-conflict';
|
|
47
|
+
if (error.code === 'grant' || error.code === 'limit')
|
|
48
|
+
return 'grant-invalid';
|
|
49
|
+
if (error.code === 'stopped')
|
|
50
|
+
return 'broker-draining';
|
|
51
|
+
if (error.code === 'controller')
|
|
52
|
+
return 'policy-changed';
|
|
53
|
+
if (error.code === 'invalid-input')
|
|
54
|
+
return 'request-invalid';
|
|
55
|
+
}
|
|
56
|
+
return 'internal-error';
|
|
57
|
+
}
|
|
58
|
+
async function settleWithin(promises, timeoutMs) {
|
|
59
|
+
if (promises.length === 0)
|
|
60
|
+
return true;
|
|
61
|
+
return await new Promise(resolve => {
|
|
62
|
+
let settled = false;
|
|
63
|
+
const finish = (value) => { if (settled)
|
|
64
|
+
return; settled = true; clearTimeout(timer); resolve(value); };
|
|
65
|
+
const timer = setTimeout(() => finish(false), Math.max(1, timeoutMs));
|
|
66
|
+
timer.unref();
|
|
67
|
+
void Promise.allSettled(promises).then(() => finish(true));
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
async function abortable(operation, signal) {
|
|
71
|
+
if (signal.aborted)
|
|
72
|
+
throw signal.reason;
|
|
73
|
+
return await new Promise((resolve, reject) => {
|
|
74
|
+
let settled = false;
|
|
75
|
+
const finish = (callback) => { if (settled)
|
|
76
|
+
return; settled = true; signal.removeEventListener('abort', onAbort); callback(); };
|
|
77
|
+
const onAbort = () => finish(() => reject(signal.reason));
|
|
78
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
79
|
+
if (signal.aborted) {
|
|
80
|
+
onAbort();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
operation.then(value => finish(() => resolve(value)), error => finish(() => reject(error)));
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
function normalizeCredential(value) {
|
|
87
|
+
if (!plain(value) || Object.keys(value).length !== 4 || Object.keys(value).some(key => !['id', 'provider', 'path', 'maxLeaseMs'].includes(key)) || value.provider !== 'linux-protected-file')
|
|
88
|
+
fail('request-invalid');
|
|
89
|
+
const path = text(value.path, 1_024);
|
|
90
|
+
if (process.platform !== 'linux' || !isAbsolute(path) || normalize(path) !== path || path === '/')
|
|
91
|
+
fail('request-invalid');
|
|
92
|
+
return Object.freeze({ id: text(value.id, 128), provider: 'linux-protected-file', path, maxLeaseMs: integer(value.maxLeaseMs, 1_000, 86_400_000) });
|
|
93
|
+
}
|
|
94
|
+
function sameNode(left, right) { return left.dev === right.dev && left.ino === right.ino && left.uid === right.uid && left.gid === right.gid && left.mode === right.mode && left.nlink === right.nlink; }
|
|
95
|
+
async function safeCredentialAncestors(value, uid, gid) {
|
|
96
|
+
let cursor = value, leaf = true;
|
|
97
|
+
for (;;) {
|
|
98
|
+
const [canonical, stat] = await Promise.all([realpath(cursor), lstat(cursor, { bigint: true })]);
|
|
99
|
+
const mode = Number(stat.mode & 4095n), owner = Number(stat.uid), group = Number(stat.gid), stickyRoot = owner === 0 && (mode & 0o1000) !== 0 && (mode & 0o022) !== 0;
|
|
100
|
+
if (canonical !== cursor || stat.isSymbolicLink() || !stat.isDirectory() || !stickyRoot && (mode & 0o022) !== 0 || leaf && (owner !== uid || group !== gid || mode !== 0o700))
|
|
101
|
+
fail('credential-unavailable');
|
|
102
|
+
const parent = dirname(cursor);
|
|
103
|
+
if (parent === cursor)
|
|
104
|
+
return;
|
|
105
|
+
cursor = parent;
|
|
106
|
+
leaf = false;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async function readProtectedCredential(credential, maximum, beforeOpen) {
|
|
110
|
+
const uid = process.geteuid?.(), gid = process.getegid?.();
|
|
111
|
+
if (process.platform !== 'linux' || uid === undefined || gid === undefined)
|
|
112
|
+
fail('credential-unavailable');
|
|
113
|
+
const parentPath = dirname(credential.path);
|
|
114
|
+
try {
|
|
115
|
+
await safeCredentialAncestors(parentPath, uid, gid);
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
return fail('credential-unavailable');
|
|
119
|
+
}
|
|
120
|
+
let parent;
|
|
121
|
+
try {
|
|
122
|
+
parent = await open(parentPath, constants.O_RDONLY | constants.O_DIRECTORY | constants.O_NOFOLLOW);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return fail('credential-unavailable');
|
|
126
|
+
}
|
|
127
|
+
let descriptor;
|
|
128
|
+
try {
|
|
129
|
+
const parentBefore = await parent.stat({ bigint: true }), visibleParent = await lstat(parentPath, { bigint: true });
|
|
130
|
+
if (!parentBefore.isDirectory() || !sameNode(parentBefore, visibleParent))
|
|
131
|
+
fail('credential-unavailable');
|
|
132
|
+
await beforeOpen?.();
|
|
133
|
+
descriptor = await open('/proc/self/fd/' + parent.fd + '/' + basename(credential.path), constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
|
|
134
|
+
const pathParent = await lstat(parentPath, { bigint: true });
|
|
135
|
+
if (!sameNode(parentBefore, await parent.stat({ bigint: true })) || !sameNode(parentBefore, pathParent))
|
|
136
|
+
fail('credential-unavailable');
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
await descriptor?.close().catch(() => undefined);
|
|
140
|
+
await parent.close().catch(() => undefined);
|
|
141
|
+
return fail('credential-unavailable');
|
|
142
|
+
}
|
|
143
|
+
const bytes = Buffer.alloc(maximum + 1);
|
|
144
|
+
try {
|
|
145
|
+
const before = await descriptor.stat({ bigint: true });
|
|
146
|
+
if (!before.isFile() || before.uid !== BigInt(uid) || before.nlink !== 1n || Number(before.mode & 4095n) !== 0o600 || before.size > BigInt(maximum))
|
|
147
|
+
fail('credential-unavailable');
|
|
148
|
+
let offset = 0;
|
|
149
|
+
while (offset < bytes.length) {
|
|
150
|
+
const read = await descriptor.read(bytes, offset, bytes.length - offset, offset);
|
|
151
|
+
if (read.bytesRead === 0)
|
|
152
|
+
break;
|
|
153
|
+
offset += read.bytesRead;
|
|
154
|
+
}
|
|
155
|
+
const after = await descriptor.stat({ bigint: true }), visible = await lstat(credential.path, { bigint: true }), parentAfter = await parent.stat({ bigint: true }), visibleParent = await lstat(parentPath, { bigint: true });
|
|
156
|
+
if (offset > maximum || BigInt(offset) !== after.size || !sameNode(before, after) || !sameNode(after, visible) || !sameNode(parentAfter, visibleParent) || !after.isFile())
|
|
157
|
+
fail('credential-unavailable');
|
|
158
|
+
await safeCredentialAncestors(parentPath, uid, gid);
|
|
159
|
+
const token = bytes.subarray(0, offset).toString('utf8').replace(/[\r\n]+$/u, '');
|
|
160
|
+
if (!token || token.includes('\0') || Buffer.from(token, 'utf8').length > maximum || !/^[\x21-\x7e]+$/u.test(token))
|
|
161
|
+
fail('credential-unavailable');
|
|
162
|
+
return token;
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
if (error instanceof BrokerCoreError)
|
|
166
|
+
throw error;
|
|
167
|
+
return fail('credential-unavailable');
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
bytes.fill(0);
|
|
171
|
+
await descriptor.close().catch(() => undefined);
|
|
172
|
+
await parent.close().catch(() => undefined);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function containsSecret(value, secret) {
|
|
176
|
+
if (typeof value === 'string')
|
|
177
|
+
return secret.length > 0 && value.includes(secret);
|
|
178
|
+
if (Array.isArray(value))
|
|
179
|
+
return value.some(item => containsSecret(item, secret));
|
|
180
|
+
if (plain(value))
|
|
181
|
+
return Object.entries(value).some(([key, item]) => key.includes(secret) || containsSecret(item, secret));
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
function containsCredentialShape(value) {
|
|
185
|
+
if (typeof value === 'string')
|
|
186
|
+
return /(?:\bbearer\s+[A-Za-z0-9._~-]+|\bbasic\s+[A-Za-z0-9+/=]+|github_pat_|gh[pousr]_|-----BEGIN [A-Z ]*PRIVATE KEY-----|\bauthorization\s*:|\bcookie\s*:)/iu.test(value);
|
|
187
|
+
if (Array.isArray(value))
|
|
188
|
+
return value.some(containsCredentialShape);
|
|
189
|
+
if (plain(value))
|
|
190
|
+
return Object.entries(value).some(([key, item]) => /^(?:authorization|cookie|password|secret|token)$/iu.test(key) || containsCredentialShape(item));
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
function inspectProjection(payload, observed, grant) {
|
|
194
|
+
try {
|
|
195
|
+
// The protocol normalizer is the single wire DTO boundary. In particular,
|
|
196
|
+
// it binds PR number, head, repository, and base branch before an untrusted
|
|
197
|
+
// GitHub response can enter the signed broker result.
|
|
198
|
+
return normalizeBrokerInspectObservation(payload, observed, grant.destination);
|
|
199
|
+
}
|
|
200
|
+
catch {
|
|
201
|
+
return undefined;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function githubGrant(grant, allowPullRequest = false) {
|
|
205
|
+
return Object.freeze({ id: grant.id, revision: grant.revision, principalDigest: grant.owner.principalDigest, principalRecordId: grant.owner.principalRecordId, principalVersion: grant.owner.principalVersion, workspace: grant.owner.workspace, agentPreset: grant.owner.preset, repository: grant.destination.repository, branch: grant.destination.branch, paths: [...grant.destination.paths], credentialHandle: grant.credentialId, expiresAt: grant.expiresAt, maxActions: grant.maxActions, maxTotalBytes: grant.maxTotalBytes,
|
|
206
|
+
...(grant.destination.baseBranch === undefined ? {} : { repoWorkflow: Object.freeze({ baseBranch: grant.destination.baseBranch, allowBranchCreate: false, allowPullRequest }) }) });
|
|
207
|
+
}
|
|
208
|
+
function response(record) {
|
|
209
|
+
const value = record.outcome;
|
|
210
|
+
if (!value)
|
|
211
|
+
return { status: 'unknown', dispatched: record.status === 'dispatched', result: null, error: { code: 'transport-failed' }, completedAt: Date.now() };
|
|
212
|
+
return { status: value.status, dispatched: value.dispatched, result: value.result, error: value.error, completedAt: value.completedAt };
|
|
213
|
+
}
|
|
214
|
+
export class ExternalBrokerCore {
|
|
215
|
+
#ledger;
|
|
216
|
+
#authority;
|
|
217
|
+
#credentials;
|
|
218
|
+
#commit;
|
|
219
|
+
#inspect;
|
|
220
|
+
#pullRequest;
|
|
221
|
+
#beforeCredentialOpen;
|
|
222
|
+
#now;
|
|
223
|
+
#credentialMaxBytes;
|
|
224
|
+
#pending = new Map();
|
|
225
|
+
#renewal;
|
|
226
|
+
#active = true;
|
|
227
|
+
#closing;
|
|
228
|
+
constructor(input, transports = {}) {
|
|
229
|
+
const config = normalizeExternalBrokerCoreConfig(input);
|
|
230
|
+
const { instanceId, statePath, policyEpoch } = config;
|
|
231
|
+
const controllerTtlMs = config.controllerTtlMs ?? 30_000;
|
|
232
|
+
this.#credentialMaxBytes = config.credentialMaxBytes ?? 8_192;
|
|
233
|
+
this.#now = config.now ?? Date.now;
|
|
234
|
+
const credentials = [...config.credentials];
|
|
235
|
+
this.#credentials = new Map(credentials.map(item => [item.id, item]));
|
|
236
|
+
const grants = [...config.grants];
|
|
237
|
+
this.#commit = transports.commit ?? commitOnGitHub;
|
|
238
|
+
this.#inspect = transports.inspect ?? inspectGitHub;
|
|
239
|
+
this.#pullRequest = transports.pullRequest ?? createPullRequestOnGitHub;
|
|
240
|
+
this.#beforeCredentialOpen = transports.beforeCredentialOpen;
|
|
241
|
+
this.#ledger = new ExternalBrokerLedger(statePath, instanceId, { now: this.#now });
|
|
242
|
+
try {
|
|
243
|
+
this.#authority = this.#ledger.claimController(randomUUID(), controllerTtlMs);
|
|
244
|
+
if (config.expectedGeneration !== undefined && this.#authority.generation !== config.expectedGeneration)
|
|
245
|
+
fail('policy-changed');
|
|
246
|
+
this.#ledger.syncGrants(grants, policyEpoch, this.#authority);
|
|
247
|
+
}
|
|
248
|
+
catch (error) {
|
|
249
|
+
this.#ledger.close();
|
|
250
|
+
throw error;
|
|
251
|
+
}
|
|
252
|
+
this.#renewal = setInterval(() => {
|
|
253
|
+
try {
|
|
254
|
+
this.#ledger.renewController(this.#authority, controllerTtlMs);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
this.#active = false;
|
|
258
|
+
for (const pending of this.#pending.values())
|
|
259
|
+
pending.controller.abort();
|
|
260
|
+
}
|
|
261
|
+
}, Math.max(100, Math.floor(controllerTtlMs / 3)));
|
|
262
|
+
this.#renewal.unref();
|
|
263
|
+
}
|
|
264
|
+
snapshot() { return this.#ledger.snapshot(); }
|
|
265
|
+
execute = async (request, signal) => {
|
|
266
|
+
if (!this.#active || signal.aborted)
|
|
267
|
+
fail('aborted');
|
|
268
|
+
let prepared;
|
|
269
|
+
try {
|
|
270
|
+
prepared = this.#ledger.prepare(request, this.#authority);
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
return fail(safeCode(error));
|
|
274
|
+
}
|
|
275
|
+
if (!prepared.created) {
|
|
276
|
+
if (prepared.record.outcome)
|
|
277
|
+
return response(prepared.record);
|
|
278
|
+
const pending = this.#pending.get(prepared.record.actionId);
|
|
279
|
+
return pending ? await pending.done : fail('request-conflict', prepared.record.status === 'dispatched');
|
|
280
|
+
}
|
|
281
|
+
const controller = new AbortController();
|
|
282
|
+
const done = this.#executePrepared(request, prepared.record, AbortSignal.any([signal, controller.signal]));
|
|
283
|
+
this.#pending.set(prepared.record.actionId, { controller, done });
|
|
284
|
+
try {
|
|
285
|
+
return await done;
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
this.#pending.delete(prepared.record.actionId);
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
async #executePrepared(request, initial, signal) {
|
|
292
|
+
let record = initial;
|
|
293
|
+
const requestDigestValue = brokerLedgerRequestDigest(request);
|
|
294
|
+
try {
|
|
295
|
+
const grant = this.#ledger.grant(record.grantId), credential = grant && this.#credentials.get(grant.credentialId);
|
|
296
|
+
if (!grant || !credential)
|
|
297
|
+
return response(this.#ledger.failPrepared(record.actionId, record.version, requestDigestValue, 'credential-unavailable', this.#authority));
|
|
298
|
+
if (signal.aborted || request.deadline <= this.#now())
|
|
299
|
+
return response(this.#ledger.failPrepared(record.actionId, record.version, requestDigestValue, 'deadline-exceeded', this.#authority));
|
|
300
|
+
const token = await readProtectedCredential(credential, this.#credentialMaxBytes, this.#beforeCredentialOpen);
|
|
301
|
+
const secrets = [];
|
|
302
|
+
try {
|
|
303
|
+
for (const configured of this.#credentials.values())
|
|
304
|
+
secrets.push(configured.id === credential.id ? token : await readProtectedCredential(configured, this.#credentialMaxBytes, this.#beforeCredentialOpen));
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
return response(this.#ledger.failPrepared(record.actionId, record.version, requestDigestValue, 'credential-unavailable', this.#authority));
|
|
308
|
+
}
|
|
309
|
+
if (secrets.some(secret => containsSecret(request.payload, secret)) || containsCredentialShape(request.payload))
|
|
310
|
+
return response(this.#ledger.failPrepared(record.actionId, record.version, requestDigestValue, 'request-invalid', this.#authority));
|
|
311
|
+
const leaseExpiresAt = Math.min(request.deadline, grant.expiresAt, this.#now() + credential.maxLeaseMs);
|
|
312
|
+
record = this.#ledger.dispatch(record.actionId, record.version, requestDigestValue, credential.id, leaseExpiresAt, this.#authority);
|
|
313
|
+
const deadline = AbortSignal.timeout(Math.max(1, leaseExpiresAt - this.#now()));
|
|
314
|
+
const combined = AbortSignal.any([signal, deadline]);
|
|
315
|
+
let result = null;
|
|
316
|
+
if (request.operation === 'commit') {
|
|
317
|
+
const payload = request.payload;
|
|
318
|
+
const commit = await abortable(this.#commit({ actionId: request.actionId, grant: githubGrant(grant), request: { grantId: grant.id, idempotencyKey: request.actionId, expectedHeadOid: payload.expectedHeadOid, headline: payload.headline, files: payload.files.map(file => ({ ...file })) }, token, signal: combined }), combined);
|
|
319
|
+
if (commit.status === 'succeeded' && commit.commitOid)
|
|
320
|
+
result = { operation: 'commit', repository: grant.destination.repository, branch: grant.destination.branch, parentOid: payload.expectedHeadOid, commitOid: commit.commitOid };
|
|
321
|
+
}
|
|
322
|
+
else if (request.operation === 'pull-request') {
|
|
323
|
+
const payload = request.payload;
|
|
324
|
+
const created = await abortable(this.#pullRequest({ actionId: request.actionId, grant: githubGrant(grant, true), expectedHeadOid: payload.expectedHeadOid, title: payload.title, body: payload.body, token, signal: combined }), combined);
|
|
325
|
+
if (created.status === 'succeeded' && created.pullRequestNumber && grant.destination.baseBranch !== undefined)
|
|
326
|
+
result = { operation: 'pull-request', repository: grant.destination.repository, branch: grant.destination.branch, baseBranch: grant.destination.baseBranch, expectedHeadOid: payload.expectedHeadOid, pullRequestNumber: created.pullRequestNumber };
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
const payload = request.payload;
|
|
330
|
+
const inspected = await abortable(this.#inspect({ grant: githubGrant(grant), kind: payload.kind, ...(payload.path === undefined ? {} : { path: payload.path }), ...(payload.pullRequestNumber === undefined ? {} : { pullRequestNumber: payload.pullRequestNumber }), token, signal: combined }), combined);
|
|
331
|
+
if (inspected) {
|
|
332
|
+
const projected = inspectProjection(payload, inspected.observed, grant);
|
|
333
|
+
if (projected && !secrets.some(secret => containsSecret(projected, secret)) && !containsCredentialShape(projected)) {
|
|
334
|
+
const canonical = canonicalBrokerJson(projected);
|
|
335
|
+
result = { operation: 'inspect', repository: grant.destination.repository, branch: grant.destination.branch, kind: payload.kind, observed: projected, observedDigest: createHash('sha256').update(canonical).digest('hex') };
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
if (combined.aborted || signal.aborted || this.#now() >= leaseExpiresAt)
|
|
340
|
+
return response(this.#settle(record, requestDigestValue, null, 'aborted'));
|
|
341
|
+
return response(result ? this.#ledger.settle(record.actionId, record.version, requestDigestValue, { status: 'succeeded', dispatched: true, result, error: null, completedAt: Math.max(1, this.#now()) }, this.#authority) : this.#settle(record, requestDigestValue, null, 'transport-failed'));
|
|
342
|
+
}
|
|
343
|
+
catch (error) {
|
|
344
|
+
if (record.status === 'dispatched') {
|
|
345
|
+
try {
|
|
346
|
+
return response(this.#settle(record, requestDigestValue, null, error instanceof BrokerCoreError ? error.code : 'transport-failed'));
|
|
347
|
+
}
|
|
348
|
+
catch {
|
|
349
|
+
return fail('transport-failed', true);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
try {
|
|
353
|
+
return response(this.#ledger.failPrepared(record.actionId, record.version, requestDigestValue, error instanceof BrokerCoreError ? error.code : safeCode(error), this.#authority));
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
356
|
+
return fail(safeCode(error));
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
#settle(record, requestDigestValue, result, code) {
|
|
361
|
+
const value = result
|
|
362
|
+
? { status: 'succeeded', dispatched: true, result, error: null, completedAt: Math.max(1, this.#now()) }
|
|
363
|
+
: { status: 'unknown', dispatched: true, result: null, error: { code }, completedAt: Math.max(1, this.#now()) };
|
|
364
|
+
return this.#ledger.settle(record.actionId, record.version, requestDigestValue, value, this.#authority);
|
|
365
|
+
}
|
|
366
|
+
admin = async (request, signal) => {
|
|
367
|
+
if (signal.aborted)
|
|
368
|
+
fail('aborted');
|
|
369
|
+
// The signed request digest is deliberately evaluated even for status so
|
|
370
|
+
// malformed or secret-bearing admin input cannot reach the control plane.
|
|
371
|
+
const adminDigest = brokerAdminRequestDigest(request);
|
|
372
|
+
try {
|
|
373
|
+
let mutation;
|
|
374
|
+
if (request.operation === 'stop') {
|
|
375
|
+
const body = request.body;
|
|
376
|
+
mutation = this.#ledger.applyAdminMutation({ adminKeyId: request.adminKeyId, nonce: request.nonce, requestDigest: adminDigest, expiresAt: request.deadline, mutation: { operation: 'stop', expectedControlVersion: body.expectedControlVersion, reason: body.reason }, authority: this.#authority });
|
|
377
|
+
}
|
|
378
|
+
else if (request.operation === 'resume') {
|
|
379
|
+
const body = request.body;
|
|
380
|
+
mutation = this.#ledger.applyAdminMutation({ adminKeyId: request.adminKeyId, nonce: request.nonce, requestDigest: adminDigest, expiresAt: request.deadline, mutation: { operation: 'resume', expectedControlVersion: body.expectedControlVersion, expectedGeneration: body.expectedGeneration, reason: 'operator-resume' }, authority: this.#authority });
|
|
381
|
+
}
|
|
382
|
+
else if (request.operation === 'revoke') {
|
|
383
|
+
const body = request.body;
|
|
384
|
+
mutation = this.#ledger.applyAdminMutation({ adminKeyId: request.adminKeyId, nonce: request.nonce, requestDigest: adminDigest, expiresAt: request.deadline, mutation: { operation: 'revoke', expectedControlVersion: body.expectedControlVersion, grantId: body.grantId, grantRevision: body.grantRevision, grantDigest: body.grantDigest, policyEpoch: body.policyEpoch, emergencyEpoch: body.emergencyEpoch, reason: body.reason }, authority: this.#authority });
|
|
385
|
+
}
|
|
386
|
+
else
|
|
387
|
+
this.#ledger.consumeAdminNonce(request.adminKeyId, request.nonce, adminDigest, request.deadline, this.#authority);
|
|
388
|
+
if (mutation)
|
|
389
|
+
for (const actionId of mutation.abortActionIds)
|
|
390
|
+
this.#pending.get(actionId)?.controller.abort();
|
|
391
|
+
const state = this.#adminState();
|
|
392
|
+
return { status: 'succeeded', state, error: null, completedAt: Math.max(1, this.#now()) };
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
return { status: 'failed', state: this.#adminState(), error: { code: safeCode(error) }, completedAt: Math.max(1, this.#now()) };
|
|
396
|
+
}
|
|
397
|
+
};
|
|
398
|
+
#adminState() {
|
|
399
|
+
const snapshot = this.#ledger.snapshot();
|
|
400
|
+
return { admission: snapshot.stopped ? 'stopped' : snapshot.draining ? 'draining' : 'accepting', generation: snapshot.generation, controlVersion: snapshot.controlVersion, activeRequests: this.#pending.size, revocationEpoch: snapshot.emergencyEpoch };
|
|
401
|
+
}
|
|
402
|
+
beginDrain = (reason = 'lifecycle') => { if (!this.#active)
|
|
403
|
+
return; this.#ledger.beginDrain(this.#ledger.snapshot().controlVersion, reason, this.#authority); };
|
|
404
|
+
drain = async (deadlineAt) => {
|
|
405
|
+
integer(deadlineAt, 1);
|
|
406
|
+
if (this.#pending.size === 0)
|
|
407
|
+
return;
|
|
408
|
+
const pending = [...this.#pending.values()];
|
|
409
|
+
if (await settleWithin(pending.map(value => value.done), Math.max(1, deadlineAt - this.#now())))
|
|
410
|
+
return;
|
|
411
|
+
for (const pending of this.#pending.values())
|
|
412
|
+
pending.controller.abort();
|
|
413
|
+
try {
|
|
414
|
+
this.#ledger.terminalizeActive('drain-deadline', this.#authority);
|
|
415
|
+
}
|
|
416
|
+
catch { /* Startup recovery keeps no-replay if the fence was lost. */ }
|
|
417
|
+
await settleWithin(pending.map(value => value.done), FORCED_TEARDOWN_GRACE_MS);
|
|
418
|
+
};
|
|
419
|
+
close = () => this.#closing ??= this.#close();
|
|
420
|
+
async #close() {
|
|
421
|
+
this.#active = false;
|
|
422
|
+
clearInterval(this.#renewal);
|
|
423
|
+
const pending = [...this.#pending.values()];
|
|
424
|
+
for (const pending of this.#pending.values())
|
|
425
|
+
pending.controller.abort();
|
|
426
|
+
try {
|
|
427
|
+
this.#ledger.terminalizeActive('core-close', this.#authority);
|
|
428
|
+
}
|
|
429
|
+
catch { /* A successor will recover if the fence was lost. */ }
|
|
430
|
+
await settleWithin(pending.map(value => value.done), FORCED_TEARDOWN_GRACE_MS);
|
|
431
|
+
try {
|
|
432
|
+
if (this.#ledger.hasController(this.#authority))
|
|
433
|
+
this.#ledger.releaseController(this.#authority);
|
|
434
|
+
}
|
|
435
|
+
finally {
|
|
436
|
+
this.#ledger.close();
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
export function createExternalBrokerCore(config, transports = {}) { return new ExternalBrokerCore(config, transports); }
|
|
441
|
+
//# sourceMappingURL=broker-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"broker-core.js","sourceRoot":"","sources":["../src/broker-core.ts"],"names":[],"mappings":"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"}
|