@ccdd/project 5.1.2 → 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/monitor-ui/assets/{GraphView-BILt_jGR.js → GraphView-Dvqux-3b.js} +3 -3
- package/dist/monitor-ui/assets/ValidationView-ksCr_lB7.css +1 -0
- package/dist/monitor-ui/assets/ValidationView-qhnNfj00.js +1 -0
- package/dist/monitor-ui/assets/{elk-api-CW6DDhyE.js → elk-api-D1k8qsLm.js} +1 -1
- package/dist/monitor-ui/assets/{elk.bundled-WR-av3nY.js → elk.bundled-DgeQWR_s.js} +1 -1
- package/dist/monitor-ui/assets/{index-Drtw0yLv.js → index-beXagC6U.js} +3 -3
- package/dist/monitor-ui/index.html +1 -1
- package/dist/src/broker/admission.d.ts +19 -0
- package/dist/src/broker/admission.js +33 -0
- package/dist/src/broker/admission.js.map +1 -0
- package/dist/src/broker/changes.d.ts +25 -0
- package/dist/src/broker/changes.js +27 -0
- package/dist/src/broker/changes.js.map +1 -0
- package/dist/src/broker/coalescing.d.ts +1 -0
- package/dist/src/broker/coalescing.js +5 -3
- package/dist/src/broker/coalescing.js.map +1 -1
- package/dist/src/broker/graph.d.ts +1 -1
- package/dist/src/broker/graph.js +1 -1
- package/dist/src/broker/graph.js.map +1 -1
- package/dist/src/broker/index.d.ts +28 -3
- package/dist/src/broker/index.js +238 -299
- package/dist/src/broker/index.js.map +1 -1
- package/dist/src/broker/readiness.d.ts +17 -0
- package/dist/src/broker/readiness.js +230 -0
- package/dist/src/broker/readiness.js.map +1 -0
- package/dist/src/broker/storage.d.ts +65 -0
- package/dist/src/broker/storage.js +178 -0
- package/dist/src/broker/storage.js.map +1 -0
- package/dist/src/contracts.d.ts +1 -1
- package/dist/src/monitor/store.js +6 -4
- package/dist/src/monitor/store.js.map +1 -1
- package/dist/src/monitor/ui/format.js +1 -1
- package/dist/src/monitor/ui/format.js.map +1 -1
- package/dist/src/project/cli.js +8 -7
- package/dist/src/project/cli.js.map +1 -1
- package/dist/src/project/gates.d.ts +6 -0
- package/dist/src/project/gates.js +33 -0
- package/dist/src/project/gates.js.map +1 -0
- package/dist/src/project/index.d.ts +2 -1
- package/dist/src/project/index.js +2 -2
- package/dist/src/project/index.js.map +1 -1
- package/dist/src/project/query.js +35 -8
- package/dist/src/project/query.js.map +1 -1
- package/dist/src/project/store.d.ts +1 -1
- package/dist/src/project/store.js +29 -17
- package/dist/src/project/store.js.map +1 -1
- package/dist/src/project/types.d.ts +7 -3
- package/dist/src/state-format.js +2 -2
- package/package.json +2 -2
- package/dist/monitor-ui/assets/ValidationView-D18mwExY.css +0 -1
- package/dist/monitor-ui/assets/ValidationView-L-a3hI_A.js +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** FIFO local slots. Canceled waiters never consume or strand a slot. */
|
|
2
|
+
export function localAdmission(limit) {
|
|
3
|
+
let active = 0;
|
|
4
|
+
const pending = [];
|
|
5
|
+
const drain = () => {
|
|
6
|
+
while (active < limit && pending.length) {
|
|
7
|
+
const waiter = pending.shift();
|
|
8
|
+
waiter.signal.removeEventListener('abort', waiter.abort);
|
|
9
|
+
if (waiter.signal.aborted) {
|
|
10
|
+
waiter.reject(waiter.signal.reason);
|
|
11
|
+
continue;
|
|
12
|
+
}
|
|
13
|
+
active++;
|
|
14
|
+
let released = false;
|
|
15
|
+
waiter.resolve({ release() { if (released)
|
|
16
|
+
return; released = true; active--; drain(); } });
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
return { acquire(_request, { signal, waiting }) {
|
|
20
|
+
signal.throwIfAborted();
|
|
21
|
+
if (active >= limit || pending.length)
|
|
22
|
+
waiting('Waiting for executor admission slot.');
|
|
23
|
+
signal.throwIfAborted();
|
|
24
|
+
return new Promise((resolve, reject) => {
|
|
25
|
+
const waiter = { signal, resolve, reject, abort: () => { const index = pending.indexOf(waiter); if (index >= 0)
|
|
26
|
+
pending.splice(index, 1); reject(signal.reason); } };
|
|
27
|
+
pending.push(waiter);
|
|
28
|
+
signal.addEventListener('abort', waiter.abort, { once: true });
|
|
29
|
+
drain();
|
|
30
|
+
});
|
|
31
|
+
} };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=admission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admission.js","sourceRoot":"","sources":["../../../src/broker/admission.ts"],"names":[],"mappings":"AAMA,yEAAyE;AACzE,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,OAAO,GAA6H,EAAE,CAAC;IAC7I,MAAM,KAAK,GAAG,GAAG,EAAE;QACjB,OAAO,MAAM,GAAG,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAG,CAAC;YAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1F,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC7E,MAAM,EAAE,CAAC;YAAC,IAAI,QAAQ,GAAG,KAAK,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,QAAQ;oBAAE,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC,CAAC;IACF,OAAO,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;YAC5C,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,CAAC,MAAM;gBAAE,OAAO,CAAC,sCAAsC,CAAC,CAAC;YACvF,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;wBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrK,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAC,KAAK,EAAE,CAAC;YAChG,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
export interface ChangeOptions {
|
|
3
|
+
after?: number;
|
|
4
|
+
limit?: number;
|
|
5
|
+
}
|
|
6
|
+
/** Indexed keyset pagination. Telemetry does not advance this lifecycle cursor. */
|
|
7
|
+
export declare function readChanges(db: DatabaseSync, runId: string, stateDir: string, { after, limit }?: ChangeOptions): {
|
|
8
|
+
runId: string;
|
|
9
|
+
status: string;
|
|
10
|
+
cursor: number;
|
|
11
|
+
hasMore: boolean;
|
|
12
|
+
changes: {
|
|
13
|
+
cursor: number;
|
|
14
|
+
requestId: string;
|
|
15
|
+
criticId: string;
|
|
16
|
+
status: string;
|
|
17
|
+
blockedReason: string | number | bigint | NodeJS.NonSharedUint8Array | null;
|
|
18
|
+
result: {
|
|
19
|
+
verdict: string;
|
|
20
|
+
reference: import("../result-view.js").ReviewReference;
|
|
21
|
+
} | null;
|
|
22
|
+
error: import("node:sqlite").SQLOutputValue;
|
|
23
|
+
errorCode: import("node:sqlite").SQLOutputValue;
|
|
24
|
+
}[];
|
|
25
|
+
} | null;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { records } from './storage.js';
|
|
2
|
+
import { reviewReference } from '../result-view.js';
|
|
3
|
+
import { semanticResult } from '../response-schema.js';
|
|
4
|
+
/** Indexed keyset pagination. Telemetry does not advance this lifecycle cursor. */
|
|
5
|
+
export function readChanges(db, runId, stateDir, { after = 0, limit = 100 } = {}) {
|
|
6
|
+
if (!Number.isSafeInteger(after) || after < 0 || !Number.isSafeInteger(limit) || limit < 1 || limit > 1000)
|
|
7
|
+
throw new Error('Invalid change cursor or limit.');
|
|
8
|
+
const row = db.prepare('SELECT status FROM runs WHERE id=?').get(runId);
|
|
9
|
+
if (!row)
|
|
10
|
+
return null;
|
|
11
|
+
const store = records(db);
|
|
12
|
+
const rows = db.prepare('SELECT * FROM request_changes WHERE run_id=? AND cursor>? ORDER BY cursor LIMIT ?').all(runId, after, limit + 1);
|
|
13
|
+
const resultFor = (row) => {
|
|
14
|
+
if (!row.result_ref)
|
|
15
|
+
return null;
|
|
16
|
+
const result = store.get(String(row.result_ref));
|
|
17
|
+
if (!result || result.verdict !== row.status || !['GREEN', 'RED'].includes(String(row.status)))
|
|
18
|
+
throw new Error('Stored result/status mismatch.');
|
|
19
|
+
return { ...semanticResult(result), verdict: String(row.status), reference: reviewReference(stateDir, String(db.prepare('SELECT run_id FROM requests WHERE id=?').get(row.request_id).run_id), String(row.request_id)) };
|
|
20
|
+
};
|
|
21
|
+
const changes = rows.slice(0, limit).map(row => ({ cursor: Number(row.cursor), requestId: String(row.request_id), criticId: String(row.critic_id), status: String(row.status),
|
|
22
|
+
blockedReason: row.status === 'BLOCKED' || row.status === 'WAIT_DEPENDENCY' || row.status === 'QUEUED' ? (db.prepare("SELECT json_extract(data,'$.blockedReason') AS reason FROM requests WHERE id=?").get(row.request_id)?.reason ?? null) : null,
|
|
23
|
+
result: resultFor(row),
|
|
24
|
+
error: row.error, errorCode: row.error_code }));
|
|
25
|
+
return { runId, status: String(row.status), cursor: changes.at(-1)?.cursor ?? after, hasMore: rows.length > limit, changes };
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=changes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changes.js","sourceRoot":"","sources":["../../../src/broker/changes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { DatabaseSync } from 'node:sqlite';
|
|
2
2
|
import type { ReviewRequest } from '../contracts.js';
|
|
3
3
|
interface CoalescingOptions {
|
|
4
|
+
ignoreGates?: boolean;
|
|
4
5
|
/** Submission reconciles durably; readonly inspection leaves this absent. */
|
|
5
6
|
reconcile?: (runId: string) => void;
|
|
6
7
|
/** A waiting Broker retains monotonic lease bounds; a fresh quote has no prior observations. */
|
|
@@ -3,7 +3,9 @@ import { ownerAlive } from './ownership.js';
|
|
|
3
3
|
const terminal = new Set(['GREEN', 'RED', 'ERROR', 'INCOMPLETE']);
|
|
4
4
|
/** One adoption rule. A dead owner is ineligible even without writing WORKER_EXITED. */
|
|
5
5
|
export function coalescingEligibility(database, request, options = {}) {
|
|
6
|
-
if (!['QUEUED', 'RUNNING', 'WAITING_HUMAN'].includes(request.status))
|
|
6
|
+
if (!['QUEUED', 'RUNNING', 'WAITING_HUMAN', 'WAIT_DEPENDENCY', 'BLOCKED'].includes(request.status))
|
|
7
|
+
return null;
|
|
8
|
+
if (options.ignoreGates && ['WAIT_DEPENDENCY', 'BLOCKED'].includes(request.status))
|
|
7
9
|
return null;
|
|
8
10
|
options.reconcile?.(request.runId);
|
|
9
11
|
const row = database.prepare("SELECT json_object('id',json_extract(data,'$.id'),'status',json_extract(data,'$.status'),'createdAt',json_extract(data,'$.createdAt'),'coalescingGraceMs',json_extract(data,'$.coalescingGraceMs')) AS data FROM runs WHERE id = ?").get(request.runId);
|
|
@@ -18,7 +20,7 @@ export function coalescingEligibility(database, request, options = {}) {
|
|
|
18
20
|
if (owner)
|
|
19
21
|
return ownerAlive(owner) ? {} : null;
|
|
20
22
|
const grace = source.coalescingGraceMs;
|
|
21
|
-
if (
|
|
23
|
+
if (!['QUEUED', 'WAIT_DEPENDENCY', 'BLOCKED'].includes(request.status) || typeof grace !== 'number' || !Number.isSafeInteger(grace) || grace <= 0 || grace > 300_000)
|
|
22
24
|
return null;
|
|
23
25
|
const submitted = typeof source.createdAt === 'string' ? Date.parse(source.createdAt) : NaN;
|
|
24
26
|
const elapsed = Date.now() - submitted;
|
|
@@ -31,7 +33,7 @@ export function coalescingEligibility(database, request, options = {}) {
|
|
|
31
33
|
}
|
|
32
34
|
/** Stable candidate order is shared by readonly quotes and transactional adoption. */
|
|
33
35
|
export function findCoalescibleRequest(database, criticId, inputKey, options = {}) {
|
|
34
|
-
const rows = database.prepare("SELECT data FROM requests WHERE status IN ('QUEUED','RUNNING','WAITING_HUMAN') AND json_extract(data, '$.criticId') = ? AND json_extract(data, '$.
|
|
36
|
+
const rows = database.prepare("SELECT data FROM requests WHERE status IN ('QUEUED','RUNNING','WAITING_HUMAN','WAIT_DEPENDENCY','BLOCKED') AND json_extract(data, '$.criticId') = ? AND json_extract(data, '$.inputKey') = ? AND json_extract(data,'$.inputVersion')=3 ORDER BY rowid").all(criticId, inputKey);
|
|
35
37
|
for (const row of rows) {
|
|
36
38
|
const request = JSON.parse(String(row.data));
|
|
37
39
|
const eligibility = coalescingEligibility(database, request, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coalescing.js","sourceRoot":"","sources":["../../../src/broker/coalescing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,OAAO,EAAE,UAAU,EAAoB,MAAM,gBAAgB,CAAC;AAE9D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"coalescing.js","sourceRoot":"","sources":["../../../src/broker/coalescing.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,7 +58,7 @@ export interface GraphProjection {
|
|
|
58
58
|
cyclic: boolean;
|
|
59
59
|
}[];
|
|
60
60
|
}
|
|
61
|
-
/** Static graph metadata only.
|
|
61
|
+
/** Static graph metadata only. SCC peers share validation obligations and execute together; external dependencies gate by default. */
|
|
62
62
|
export declare function validateGraphDefinition(value: unknown): asserts value is GraphDefinition;
|
|
63
63
|
export declare function createGraphDefinition(config: RepoConfig, copy?: boolean): GraphDefinition;
|
|
64
64
|
/** Tarjan components turn a cyclic Artifact graph into a finite condensation graph. */
|
package/dist/src/broker/graph.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const object = (value) => value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
2
2
|
const identifier = /^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/;
|
|
3
3
|
const qualified = /^[A-Za-z0-9][A-Za-z0-9_-]{0,63}\/[A-Za-z0-9][A-Za-z0-9_-]{0,63}$/;
|
|
4
|
-
/** Static graph metadata only.
|
|
4
|
+
/** Static graph metadata only. SCC peers share validation obligations and execute together; external dependencies gate by default. */
|
|
5
5
|
export function validateGraphDefinition(value) {
|
|
6
6
|
if (!object(value) || value.version !== 2 || !object(value.artifacts) || !Array.isArray(value.critics) || !Array.isArray(value.relations))
|
|
7
7
|
throw new Error('Invalid Artifact graph definition.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/broker/graph.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,GAAG,CAAC,KAAc,EAAgC,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACtI,MAAM,UAAU,GAAG,kCAAkC,CAAC;AACtD,MAAM,SAAS,GAAG,kEAAkE,CAAC;AAErF,
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/broker/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { type ResultDetail, type ResultOptions } from '../result-view.js';
|
|
2
2
|
import { type GraphDefinition } from './graph.js';
|
|
3
|
+
import { type Admission } from './admission.js';
|
|
4
|
+
export type { Admission, AdmissionLease, AdmissionRequest } from './admission.js';
|
|
5
|
+
import { type ChangeOptions } from './changes.js';
|
|
3
6
|
import { prepareWorkspace, reopenWorkspace, type WorkspaceDescriptor, type WorkspaceIntegrity } from '../workspaces/index.js';
|
|
4
7
|
import type { ProjectRunDefinition, ProjectSelection } from '../project/types.js';
|
|
5
8
|
import type { RunStatus } from '../contracts.js';
|
|
@@ -68,6 +71,7 @@ export interface BrokerOptions {
|
|
|
68
71
|
repoId?: string;
|
|
69
72
|
coalescingGraceMs?: number;
|
|
70
73
|
maxConcurrentExecutors?: number;
|
|
74
|
+
admission?: Admission;
|
|
71
75
|
identityConcurrency?: number;
|
|
72
76
|
executors?: BrokerExecutors;
|
|
73
77
|
workspaceIntegrity?: WorkspaceIntegrity;
|
|
@@ -83,7 +87,7 @@ export declare function readStateContext(stateDir: string): {
|
|
|
83
87
|
stateDir: string;
|
|
84
88
|
};
|
|
85
89
|
/** Durable broker operations. Merely opening the store never starts a worker. */
|
|
86
|
-
export declare function createBroker<D extends ResultDetail = 'compact'>({ detail, repoPath, stateDir, repoId, coalescingGraceMs, maxConcurrentExecutors, identityConcurrency, executors, workspaceIntegrity, workspaceAdapter }: BrokerOptions & ResultOptions<D>): {
|
|
90
|
+
export declare function createBroker<D extends ResultDetail = 'compact'>({ detail, repoPath, stateDir, repoId, coalescingGraceMs, maxConcurrentExecutors, admission, identityConcurrency, executors, workspaceIntegrity, workspaceAdapter }: BrokerOptions & ResultOptions<D>): {
|
|
87
91
|
reconcile: (runId?: string) => void;
|
|
88
92
|
tryClaimHuman(requestId: string, reviewerId: string, options?: {
|
|
89
93
|
leaseMs?: number;
|
|
@@ -96,13 +100,34 @@ export declare function createBroker<D extends ResultDetail = 'compact'>({ detai
|
|
|
96
100
|
arguments?: unknown;
|
|
97
101
|
signal?: AbortSignal;
|
|
98
102
|
}): Promise<import("../sdk.js").ToolResult>;
|
|
103
|
+
retryRequest(requestId: string): import("../result-view.js").ResultView<D, ReviewRequest | null, import("../result-view.js").RequesterRequest | null>;
|
|
104
|
+
changes(runId: string, options?: ChangeOptions): {
|
|
105
|
+
runId: string;
|
|
106
|
+
status: string;
|
|
107
|
+
cursor: number;
|
|
108
|
+
hasMore: boolean;
|
|
109
|
+
changes: {
|
|
110
|
+
cursor: number;
|
|
111
|
+
requestId: string;
|
|
112
|
+
criticId: string;
|
|
113
|
+
status: string;
|
|
114
|
+
blockedReason: string | number | bigint | NodeJS.NonSharedUint8Array | null;
|
|
115
|
+
result: {
|
|
116
|
+
verdict: string;
|
|
117
|
+
reference: import("../result-view.js").ReviewReference;
|
|
118
|
+
} | null;
|
|
119
|
+
error: import("node:sqlite").SQLOutputValue;
|
|
120
|
+
errorCode: import("node:sqlite").SQLOutputValue;
|
|
121
|
+
}[];
|
|
122
|
+
} | null;
|
|
99
123
|
onChange(callback: () => void): () => boolean;
|
|
100
124
|
close(): Promise<void>;
|
|
101
|
-
submitProject: (...args: Parameters<({ requesterId, selection, recursive, force, signal, identityConcurrency: submissionIdentityConcurrency, ...removed }: {
|
|
125
|
+
submitProject: (...args: Parameters<({ requesterId, selection, recursive, force, ignoreGates, signal, identityConcurrency: submissionIdentityConcurrency, ...removed }: {
|
|
102
126
|
requesterId?: string;
|
|
103
127
|
selection: ProjectSelection;
|
|
104
128
|
recursive?: boolean;
|
|
105
129
|
force?: boolean;
|
|
130
|
+
ignoreGates?: boolean;
|
|
106
131
|
signal?: AbortSignal;
|
|
107
132
|
identityConcurrency?: number;
|
|
108
133
|
}) => Promise<RunView>>) => Promise<NonNullable<import("../result-view.js").ResultView<D, RunView, import("../result-view.js").RequesterRun | null>>>;
|
|
@@ -118,7 +143,7 @@ export declare function createBroker<D extends ResultDetail = 'compact'>({ detai
|
|
|
118
143
|
requests: ReviewRequest[];
|
|
119
144
|
}) | null, import("../result-view.js").RequesterRun | null>>;
|
|
120
145
|
getRun: (id: string) => import("../result-view.js").ResultView<D, RunView | null, import("../result-view.js").RequesterRun | null>;
|
|
121
|
-
listRuns: () =>
|
|
146
|
+
listRuns: () => import("../result-view.js").ResultView<D, RunView, import("../result-view.js").RequesterRun>[];
|
|
122
147
|
getRequest: (id: string) => import("../result-view.js").ResultView<D, ReviewRequest | null, import("../result-view.js").RequesterRequest | null>;
|
|
123
148
|
claimHuman: (...args: Parameters<(requestId: string, reviewerId: unknown, { signal }?: {
|
|
124
149
|
signal?: AbortSignal;
|