@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.
Files changed (51) hide show
  1. package/dist/monitor-ui/assets/{GraphView-BILt_jGR.js → GraphView-Dvqux-3b.js} +3 -3
  2. package/dist/monitor-ui/assets/ValidationView-ksCr_lB7.css +1 -0
  3. package/dist/monitor-ui/assets/ValidationView-qhnNfj00.js +1 -0
  4. package/dist/monitor-ui/assets/{elk-api-CW6DDhyE.js → elk-api-D1k8qsLm.js} +1 -1
  5. package/dist/monitor-ui/assets/{elk.bundled-WR-av3nY.js → elk.bundled-DgeQWR_s.js} +1 -1
  6. package/dist/monitor-ui/assets/{index-Drtw0yLv.js → index-beXagC6U.js} +3 -3
  7. package/dist/monitor-ui/index.html +1 -1
  8. package/dist/src/broker/admission.d.ts +19 -0
  9. package/dist/src/broker/admission.js +33 -0
  10. package/dist/src/broker/admission.js.map +1 -0
  11. package/dist/src/broker/changes.d.ts +25 -0
  12. package/dist/src/broker/changes.js +27 -0
  13. package/dist/src/broker/changes.js.map +1 -0
  14. package/dist/src/broker/coalescing.d.ts +1 -0
  15. package/dist/src/broker/coalescing.js +5 -3
  16. package/dist/src/broker/coalescing.js.map +1 -1
  17. package/dist/src/broker/graph.d.ts +1 -1
  18. package/dist/src/broker/graph.js +1 -1
  19. package/dist/src/broker/graph.js.map +1 -1
  20. package/dist/src/broker/index.d.ts +28 -3
  21. package/dist/src/broker/index.js +238 -299
  22. package/dist/src/broker/index.js.map +1 -1
  23. package/dist/src/broker/readiness.d.ts +17 -0
  24. package/dist/src/broker/readiness.js +230 -0
  25. package/dist/src/broker/readiness.js.map +1 -0
  26. package/dist/src/broker/storage.d.ts +65 -0
  27. package/dist/src/broker/storage.js +178 -0
  28. package/dist/src/broker/storage.js.map +1 -0
  29. package/dist/src/contracts.d.ts +1 -1
  30. package/dist/src/monitor/store.js +6 -4
  31. package/dist/src/monitor/store.js.map +1 -1
  32. package/dist/src/monitor/ui/format.js +1 -1
  33. package/dist/src/monitor/ui/format.js.map +1 -1
  34. package/dist/src/project/cli.js +8 -7
  35. package/dist/src/project/cli.js.map +1 -1
  36. package/dist/src/project/gates.d.ts +6 -0
  37. package/dist/src/project/gates.js +33 -0
  38. package/dist/src/project/gates.js.map +1 -0
  39. package/dist/src/project/index.d.ts +2 -1
  40. package/dist/src/project/index.js +2 -2
  41. package/dist/src/project/index.js.map +1 -1
  42. package/dist/src/project/query.js +35 -8
  43. package/dist/src/project/query.js.map +1 -1
  44. package/dist/src/project/store.d.ts +1 -1
  45. package/dist/src/project/store.js +29 -17
  46. package/dist/src/project/store.js.map +1 -1
  47. package/dist/src/project/types.d.ts +7 -3
  48. package/dist/src/state-format.js +2 -2
  49. package/package.json +2 -2
  50. package/dist/monitor-ui/assets/ValidationView-D18mwExY.css +0 -1
  51. 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 (request.status !== 'QUEUED' || typeof grace !== 'number' || !Number.isSafeInteger(grace) || grace <= 0 || grace > 300_000)
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, '$.validationInput.key') = ? AND json_extract(data, '$.validationInput.version') = 3 ORDER BY rowid").all(criticId, inputKey);
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":"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"}
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. Cycles express shared validation obligations, never scheduling gates. */
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. */
@@ -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. Cycles express shared validation obligations, never scheduling gates. */
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":"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"}
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: () => NonNullable<import("../result-view.js").ResultView<D, RunView, import("../result-view.js").RequesterRun | null>>[];
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;