@farmslot/protocol 0.73.2 → 0.74.1
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/CHANGELOG.md +22 -8
- package/README.md +9 -0
- package/dist/client-cache/cache.d.ts +4 -0
- package/dist/client-cache/cache.d.ts.map +1 -0
- package/dist/client-cache/cache.js +1102 -0
- package/dist/client-cache/cache.js.map +1 -0
- package/dist/client-cache/collector-admission.d.ts +29 -0
- package/dist/client-cache/collector-admission.d.ts.map +1 -0
- package/dist/client-cache/collector-admission.js +183 -0
- package/dist/client-cache/collector-admission.js.map +1 -0
- package/dist/client-cache/command-method.d.ts +5 -0
- package/dist/client-cache/command-method.d.ts.map +1 -0
- package/dist/client-cache/command-method.js +2 -0
- package/dist/client-cache/command-method.js.map +1 -0
- package/dist/client-cache/conformance.d.ts +36 -0
- package/dist/client-cache/conformance.d.ts.map +1 -0
- package/dist/client-cache/conformance.js +578 -0
- package/dist/client-cache/conformance.js.map +1 -0
- package/dist/client-cache/content.d.ts +29 -0
- package/dist/client-cache/content.d.ts.map +1 -0
- package/dist/client-cache/content.js +101 -0
- package/dist/client-cache/content.js.map +1 -0
- package/dist/client-cache/d07-domains.d.ts +17 -0
- package/dist/client-cache/d07-domains.d.ts.map +1 -0
- package/dist/client-cache/d07-domains.js +111 -0
- package/dist/client-cache/d07-domains.js.map +1 -0
- package/dist/client-cache/diff-apply.d.ts +29 -0
- package/dist/client-cache/diff-apply.d.ts.map +1 -0
- package/dist/client-cache/diff-apply.js +206 -0
- package/dist/client-cache/diff-apply.js.map +1 -0
- package/dist/client-cache/index.d.ts +14 -10
- package/dist/client-cache/index.d.ts.map +1 -1
- package/dist/client-cache/index.js +14 -1
- package/dist/client-cache/index.js.map +1 -1
- package/dist/client-cache/keys.d.ts +126 -0
- package/dist/client-cache/keys.d.ts.map +1 -0
- package/dist/client-cache/keys.js +25 -0
- package/dist/client-cache/keys.js.map +1 -0
- package/dist/client-cache/native-history.d.ts +64 -0
- package/dist/client-cache/native-history.d.ts.map +1 -0
- package/dist/client-cache/native-history.js +285 -0
- package/dist/client-cache/native-history.js.map +1 -0
- package/dist/client-cache/prefetch.d.ts +50 -0
- package/dist/client-cache/prefetch.d.ts.map +1 -0
- package/dist/client-cache/prefetch.js +507 -0
- package/dist/client-cache/prefetch.js.map +1 -0
- package/dist/client-cache/registry.d.ts +1365 -0
- package/dist/client-cache/registry.d.ts.map +1 -0
- package/dist/client-cache/registry.js +1038 -0
- package/dist/client-cache/registry.js.map +1 -0
- package/dist/client-cache/run-list-versions.d.ts +70 -0
- package/dist/client-cache/run-list-versions.d.ts.map +1 -0
- package/dist/client-cache/run-list-versions.js +309 -0
- package/dist/client-cache/run-list-versions.js.map +1 -0
- package/dist/client-cache/store.d.ts +128 -0
- package/dist/client-cache/store.d.ts.map +1 -0
- package/dist/client-cache/store.js +190 -0
- package/dist/client-cache/store.js.map +1 -0
- package/dist/client-cache/transport.d.ts +27 -0
- package/dist/client-cache/transport.d.ts.map +1 -0
- package/dist/client-cache/transport.js +56 -0
- package/dist/client-cache/transport.js.map +1 -0
- package/dist/client-cache/types.d.ts +116 -0
- package/dist/client-cache/types.d.ts.map +1 -0
- package/dist/client-cache/types.js +2 -0
- package/dist/client-cache/types.js.map +1 -0
- package/dist/client-cache/upstream-retention.d.ts +6 -0
- package/dist/client-cache/upstream-retention.d.ts.map +1 -0
- package/dist/client-cache/upstream-retention.js +28 -0
- package/dist/client-cache/upstream-retention.js.map +1 -0
- package/dist/client-cache/workspace-retention.d.ts +7 -0
- package/dist/client-cache/workspace-retention.d.ts.map +1 -0
- package/dist/client-cache/workspace-retention.js +46 -0
- package/dist/client-cache/workspace-retention.js.map +1 -0
- package/dist/contracts/acceptance-registration.d.ts +0 -6
- package/dist/contracts/acceptance-registration.d.ts.map +1 -1
- package/dist/contracts/provider-accounts.d.ts +31 -0
- package/dist/contracts/provider-accounts.d.ts.map +1 -1
- package/dist/contracts/provider-accounts.js +209 -1
- package/dist/contracts/provider-accounts.js.map +1 -1
- package/dist/contracts/run-bundles.d.ts.map +1 -1
- package/dist/contracts/run-bundles.js +2 -0
- package/dist/contracts/run-bundles.js.map +1 -1
- package/dist/contracts/runs.d.ts +5 -20
- package/dist/contracts/runs.d.ts.map +1 -1
- package/dist/contracts/runs.js +5 -21
- package/dist/contracts/runs.js.map +1 -1
- package/dist/contracts/worker-terminal.d.ts +0 -3
- package/dist/contracts/worker-terminal.d.ts.map +1 -1
- package/dist/contracts/worker-terminal.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/person-session-client.d.ts +4 -1
- package/dist/person-session-client.d.ts.map +1 -1
- package/dist/person-session-client.js.map +1 -1
- package/dist/rpc/auth.d.ts +17 -0
- package/dist/rpc/auth.d.ts.map +1 -1
- package/dist/rpc/auth.js.map +1 -1
- package/dist/rpc/config.d.ts +2 -0
- package/dist/rpc/config.d.ts.map +1 -1
- package/dist/rpc/config.js.map +1 -1
- package/dist/rpc/fs.d.ts +110 -4
- package/dist/rpc/fs.d.ts.map +1 -1
- package/dist/rpc/fs.js +7 -1
- package/dist/rpc/fs.js.map +1 -1
- package/dist/rpc/gateway.d.ts +3 -0
- package/dist/rpc/gateway.d.ts.map +1 -1
- package/dist/rpc/git.d.ts +42 -0
- package/dist/rpc/git.d.ts.map +1 -1
- package/dist/rpc/index.d.ts +1 -0
- package/dist/rpc/index.d.ts.map +1 -1
- package/dist/rpc/index.js +1 -0
- package/dist/rpc/index.js.map +1 -1
- package/dist/rpc/native-session.d.ts +2 -0
- package/dist/rpc/native-session.d.ts.map +1 -1
- package/dist/rpc/native-session.js.map +1 -1
- package/dist/rpc/nodes.d.ts +2 -0
- package/dist/rpc/nodes.d.ts.map +1 -1
- package/dist/rpc/nodes.js.map +1 -1
- package/dist/rpc/pr-observations.d.ts +22 -0
- package/dist/rpc/pr-observations.d.ts.map +1 -0
- package/dist/rpc/pr-observations.js +104 -0
- package/dist/rpc/pr-observations.js.map +1 -0
- package/dist/rpc/pr.d.ts +9 -0
- package/dist/rpc/pr.d.ts.map +1 -1
- package/dist/rpc/pr.js +1 -1
- package/dist/rpc/pr.js.map +1 -1
- package/dist/rpc/principal.d.ts +2 -0
- package/dist/rpc/principal.d.ts.map +1 -1
- package/dist/rpc/registry.d.ts +1 -0
- package/dist/rpc/registry.d.ts.map +1 -1
- package/dist/rpc/registry.js +2 -0
- package/dist/rpc/registry.js.map +1 -1
- package/dist/rpc/resource-observers.d.ts +32 -0
- package/dist/rpc/resource-observers.d.ts.map +1 -0
- package/dist/rpc/resource-observers.js +2 -0
- package/dist/rpc/resource-observers.js.map +1 -0
- package/dist/rpc/run.d.ts +23 -0
- package/dist/rpc/run.d.ts.map +1 -1
- package/dist/rpc/run.js.map +1 -1
- package/dist/rpc/runner-models.d.ts +15 -0
- package/dist/rpc/runner-models.d.ts.map +1 -1
- package/dist/rpc/runner-models.js +91 -0
- package/dist/rpc/runner-models.js.map +1 -1
- package/dist/runs/review-diff-identity.d.ts +15 -0
- package/dist/runs/review-diff-identity.d.ts.map +1 -0
- package/dist/runs/review-diff-identity.js +47 -0
- package/dist/runs/review-diff-identity.js.map +1 -0
- package/dist/runs/run-list-filter.d.ts +33 -0
- package/dist/runs/run-list-filter.d.ts.map +1 -0
- package/dist/runs/run-list-filter.js +116 -0
- package/dist/runs/run-list-filter.js.map +1 -0
- package/dist/runs/run-list-observation.d.ts +5 -0
- package/dist/runs/run-list-observation.d.ts.map +1 -0
- package/dist/runs/run-list-observation.js +36 -0
- package/dist/runs/run-list-observation.js.map +1 -0
- package/dist/runs/run-list-view.d.ts +6 -2
- package/dist/runs/run-list-view.d.ts.map +1 -1
- package/dist/runs/run-list-view.js +10 -4
- package/dist/runs/run-list-view.js.map +1 -1
- package/dist/slots/cancelled-run-slot.d.ts +2 -1
- package/dist/slots/cancelled-run-slot.d.ts.map +1 -1
- package/dist/sources/client.d.ts +10 -1
- package/dist/sources/client.d.ts.map +1 -1
- package/dist/sources/client.js +23 -4
- package/dist/sources/client.js.map +1 -1
- package/dist/sources/controller.d.ts +13 -14
- package/dist/sources/controller.d.ts.map +1 -1
- package/dist/sources/controller.js +87 -82
- package/dist/sources/controller.js.map +1 -1
- package/dist/sources/status-view.d.ts +2 -0
- package/dist/sources/status-view.d.ts.map +1 -1
- package/dist/sources/status-view.js +13 -0
- package/dist/sources/status-view.js.map +1 -1
- package/dist/transport/events.d.ts +1 -4
- package/dist/transport/events.d.ts.map +1 -1
- package/dist/transport/events.js +1 -0
- package/dist/transport/events.js.map +1 -1
- package/dist/transport/frames.d.ts +6 -0
- package/dist/transport/frames.d.ts.map +1 -1
- package/dist/transport/frames.js.map +1 -1
- package/dist/transport/observations.d.ts +24 -0
- package/dist/transport/observations.d.ts.map +1 -0
- package/dist/transport/observations.js +2 -0
- package/dist/transport/observations.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/dist/sources/changes.d.ts +0 -37
- package/dist/sources/changes.d.ts.map +0 -1
- package/dist/sources/changes.js +0 -79
- package/dist/sources/changes.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-models.js","sourceRoot":"","sources":["../../src/rpc/runner-models.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAE9B,4EAA4E;AAC5E,4EAA4E;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,yBAAyB;IACzB,2BAA2B;IAC3B,4BAA4B;IAC5B,4BAA4B;CACpB,CAAC;AAEX;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAgD;IAC/E,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;IAC5C,KAAK,EAAE;QACL,mBAAmB;QACnB,WAAW;QACX,aAAa;QACb,YAAY;QACZ,aAAa;QACb,eAAe;QACf,cAAc;KACf;IACD,6EAA6E;IAC7E,gDAAgD;IAChD,MAAM,EAAE;QACN,oBAAoB;QACpB,2BAA2B;QAC3B,cAAc;QACd,mBAAmB;QACnB,sBAAsB;QACtB,uBAAuB;QACvB,eAAe;QACf,gBAAgB;QAChB,oBAAoB;QACpB,kBAAkB;QAClB,iBAAiB;KAClB;IACD,IAAI,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC;IACtC,EAAE,EAAE,CAAC,gBAAgB,EAAE,GAAG,mBAAmB,CAAC;CAC/C,CAAC"}
|
|
1
|
+
{"version":3,"file":"runner-models.js","sourceRoot":"","sources":["../../src/rpc/runner-models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReviewDiffSnapshot } from '../contracts/runs.js';
|
|
2
|
+
type UntrackedReviewFile = NonNullable<ReviewDiffSnapshot['untrackedFiles']>[number];
|
|
3
|
+
/** Git may change its automatic object-ID abbreviation without any source change.
|
|
4
|
+
* Text hunks already contain the change; keep their modes but omit display-only
|
|
5
|
+
* blob IDs. Empty-file changes use the same rule; binary patches retain their
|
|
6
|
+
* complete index identity and payload.
|
|
7
|
+
* Callers also compare base/HEAD and include the untracked-file manifest.
|
|
8
|
+
*/
|
|
9
|
+
export declare function reviewDiffHash(diffIdentity: string): string;
|
|
10
|
+
/** Upgrade only a diff that verifies against its recorded legacy or current hash. */
|
|
11
|
+
export declare function verifiedReviewDiffHash(diffIdentity: string, recordedHash: string): string | undefined;
|
|
12
|
+
/** The text `reviewDiffHash` fingerprints: the diff, then its untracked-file manifest. */
|
|
13
|
+
export declare function reviewSnapshotIdentityText(diffText: string, files: ReadonlyArray<UntrackedReviewFile>): string;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=review-diff-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-diff-identity.d.ts","sourceRoot":"","sources":["../../src/runs/review-diff-identity.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,KAAK,mBAAmB,GAAG,WAAW,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAMrF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAc3D;AAED,qFAAqF;AACrF,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,GAAG,SAAS,CAKpB;AAED,0FAA0F;AAC1F,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,CAAC,mBAAmB,CAAC,GACxC,MAAM,CAWR"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { sha256 as sha256Bytes } from '@noble/hashes/sha256';
|
|
2
|
+
import { bytesToHex } from '@noble/hashes/utils';
|
|
3
|
+
function sha256(text) {
|
|
4
|
+
return bytesToHex(sha256Bytes(new TextEncoder().encode(text)));
|
|
5
|
+
}
|
|
6
|
+
/** Git may change its automatic object-ID abbreviation without any source change.
|
|
7
|
+
* Text hunks already contain the change; keep their modes but omit display-only
|
|
8
|
+
* blob IDs. Empty-file changes use the same rule; binary patches retain their
|
|
9
|
+
* complete index identity and payload.
|
|
10
|
+
* Callers also compare base/HEAD and include the untracked-file manifest.
|
|
11
|
+
*/
|
|
12
|
+
export function reviewDiffHash(diffIdentity) {
|
|
13
|
+
const canonical = diffIdentity
|
|
14
|
+
.split(/(?=^diff --git )/m)
|
|
15
|
+
.map((section) => {
|
|
16
|
+
if (/^(GIT binary patch|Binary files .* differ)$/m.test(section))
|
|
17
|
+
return section;
|
|
18
|
+
const hunk = section.search(/^@@ /m);
|
|
19
|
+
const headerEnd = hunk < 0 ? section.length : hunk;
|
|
20
|
+
const header = section
|
|
21
|
+
.slice(0, headerEnd)
|
|
22
|
+
.replace(/^index [0-9a-f]+\.\.[0-9a-f]+( [0-7]{6})?\n/gm, 'index text$1\n');
|
|
23
|
+
return header + section.slice(headerEnd);
|
|
24
|
+
})
|
|
25
|
+
.join('');
|
|
26
|
+
return sha256(canonical);
|
|
27
|
+
}
|
|
28
|
+
/** Upgrade only a diff that verifies against its recorded legacy or current hash. */
|
|
29
|
+
export function verifiedReviewDiffHash(diffIdentity, recordedHash) {
|
|
30
|
+
const canonicalHash = reviewDiffHash(diffIdentity);
|
|
31
|
+
return recordedHash === canonicalHash || recordedHash === sha256(diffIdentity)
|
|
32
|
+
? canonicalHash
|
|
33
|
+
: undefined;
|
|
34
|
+
}
|
|
35
|
+
/** The text `reviewDiffHash` fingerprints: the diff, then its untracked-file manifest. */
|
|
36
|
+
export function reviewSnapshotIdentityText(diffText, files) {
|
|
37
|
+
if (files.length === 0)
|
|
38
|
+
return diffText;
|
|
39
|
+
const separator = diffText && !diffText.endsWith('\n') ? '\n' : '';
|
|
40
|
+
const manifest = [
|
|
41
|
+
'# Farmslot untracked file manifest (Git mode, blob SHA, and JSON-encoded path)',
|
|
42
|
+
...files.map(({ path: filePath, blobSha, mode }) => `# ${mode}\t${blobSha}\t${JSON.stringify(filePath)}`),
|
|
43
|
+
'',
|
|
44
|
+
].join('\n');
|
|
45
|
+
return `${diffText}${separator}${manifest}`;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=review-diff-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-diff-identity.js","sourceRoot":"","sources":["../../src/runs/review-diff-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMjD,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,UAAU,CAAC,WAAW,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,YAAoB;IACjD,MAAM,SAAS,GAAG,YAAY;SAC3B,KAAK,CAAC,mBAAmB,CAAC;SAC1B,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QACf,IAAI,8CAA8C,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QACjF,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACnD,MAAM,MAAM,GAAG,OAAO;aACnB,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;aACnB,OAAO,CAAC,+CAA+C,EAAE,gBAAgB,CAAC,CAAC;QAC9E,OAAO,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3B,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,sBAAsB,CACpC,YAAoB,EACpB,YAAoB;IAEpB,MAAM,aAAa,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IACnD,OAAO,YAAY,KAAK,aAAa,IAAI,YAAY,KAAK,MAAM,CAAC,YAAY,CAAC;QAC5E,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,KAAyC;IAEzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACxC,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,MAAM,QAAQ,GAAG;QACf,gFAAgF;QAChF,GAAG,KAAK,CAAC,GAAG,CACV,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAC5F;QACD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type HumanGrade, type Run, type RunMetrics } from '../contracts/runs.js';
|
|
2
|
+
import type { RunListParams } from '../rpc/run.js';
|
|
3
|
+
/** The run fields `run.list` filters, search and sorting read, on a full run or a projection. */
|
|
4
|
+
export type RunListFields = Pick<Run, 'status' | 'flowType' | 'project' | 'ticketOrPr' | 'createdAt'> & Partial<Pick<Run, 'archivedAt' | 'prNumber' | 'familyId' | 'lane' | 'variant' | 'summary' | 'tags'>> & {
|
|
5
|
+
metrics: Pick<RunMetrics, 'outcome' | 'durationMs'>;
|
|
6
|
+
humanGrade?: Pick<HumanGrade, 'recipe_semantic'>;
|
|
7
|
+
};
|
|
8
|
+
/** What a run list keeps for every live run, with or without its row: filters, search, sorting, totals. */
|
|
9
|
+
export type RunListProjection = RunListFields & Pick<Run, 'id' | 'updatedAt'> & {
|
|
10
|
+
projected: true;
|
|
11
|
+
metrics: Pick<RunMetrics, 'outcome' | 'durationMs' | 'disposition'>;
|
|
12
|
+
/** `resolveRunSlotId` of the run. */
|
|
13
|
+
slotId: string | null;
|
|
14
|
+
/** `runLinkedTicketRefs` of the run. */
|
|
15
|
+
linkedTicketRefs: string[];
|
|
16
|
+
};
|
|
17
|
+
/** The `run.list` parameters that choose and order rows. */
|
|
18
|
+
export type RunListFilter = Pick<RunListParams, 'status' | 'active' | 'limit' | 'flowType' | 'project' | 'prNumber' | 'familyId' | 'lane' | 'variant' | 'outcome' | 'dateFrom' | 'dateTo' | 'search' | 'tags' | 'sort'>;
|
|
19
|
+
export declare function runListProjection(run: Run): RunListProjection;
|
|
20
|
+
/** The gateway's `run.list` filters, search included. Its `listRuns` and the client cache share it. */
|
|
21
|
+
export declare function matchesRunList(filter: RunListFilter): (run: RunListFields) => boolean;
|
|
22
|
+
/** A stable sort, so equal keys keep the input order: the gateway's live-map order. */
|
|
23
|
+
export declare function sortRunList<R extends RunListFields>(runs: readonly R[], sort?: RunListFilter['sort']): R[];
|
|
24
|
+
/** A `limit` that lists every matching run, where the open-ended list would page at 500. */
|
|
25
|
+
export declare const RUN_LIST_UNLIMITED: number;
|
|
26
|
+
/** Active, family, PR and tag lists are complete by default; only the open-ended list pages. */
|
|
27
|
+
export declare function runListLimit(filter: RunListFilter, matched: number): number;
|
|
28
|
+
/** One `run.list` page: matching rows, sorted and limited, and the count before the limit. */
|
|
29
|
+
export declare function runListPage<R extends RunListFields>(runs: readonly R[], filter: RunListFilter): {
|
|
30
|
+
runs: R[];
|
|
31
|
+
totalCount: number;
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=run-list-filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-list-filter.d.ts","sourceRoot":"","sources":["../../src/runs/run-list-filter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EAGf,KAAK,GAAG,EACR,KAAK,UAAU,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKnD,iGAAiG;AACjG,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,GAAG,EACH,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,WAAW,CAC/D,GACC,OAAO,CACL,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC,CAC5F,GAAG;IACF,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;CAClD,CAAC;AAEJ,2GAA2G;AAC3G,MAAM,MAAM,iBAAiB,GAAG,aAAa,GAC3C,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG;IAC9B,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,YAAY,GAAG,aAAa,CAAC,CAAC;IACpE,qCAAqC;IACrC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAAC;AAEJ,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,aAAa,EACX,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,UAAU,GACV,SAAS,GACT,UAAU,GACV,UAAU,GACV,MAAM,GACN,SAAS,GACT,SAAS,GACT,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,CACT,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,iBAAiB,CA0B7D;AAwCD,uGAAuG;AACvG,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAGrF;AAID,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EACjD,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,IAAI,GAAE,aAAa,CAAC,MAAM,CAAY,GACrC,CAAC,EAAE,CAgBL;AAED,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,QAA0B,CAAC;AAE1D,gGAAgG;AAChG,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAU3E;AAED,8FAA8F;AAC9F,wBAAgB,WAAW,CAAC,CAAC,SAAS,aAAa,EACjD,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,MAAM,EAAE,aAAa,GACpB;IAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAOnC"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { isActiveListRun, normalizeRunTags, } from '../contracts/runs.js';
|
|
2
|
+
import { runLinkedTicketRefs } from './linked-tickets.js';
|
|
3
|
+
import { resolveRunSlotId } from './slot-resolution.js';
|
|
4
|
+
export function runListProjection(run) {
|
|
5
|
+
return {
|
|
6
|
+
projected: true,
|
|
7
|
+
id: run.id,
|
|
8
|
+
status: run.status,
|
|
9
|
+
archivedAt: run.archivedAt,
|
|
10
|
+
flowType: run.flowType,
|
|
11
|
+
project: run.project,
|
|
12
|
+
prNumber: run.prNumber,
|
|
13
|
+
familyId: run.familyId,
|
|
14
|
+
lane: run.lane,
|
|
15
|
+
variant: run.variant,
|
|
16
|
+
createdAt: run.createdAt,
|
|
17
|
+
updatedAt: run.updatedAt,
|
|
18
|
+
ticketOrPr: run.ticketOrPr,
|
|
19
|
+
summary: run.summary,
|
|
20
|
+
tags: run.tags,
|
|
21
|
+
metrics: {
|
|
22
|
+
outcome: run.metrics.outcome,
|
|
23
|
+
durationMs: run.metrics.durationMs,
|
|
24
|
+
disposition: run.metrics.disposition,
|
|
25
|
+
},
|
|
26
|
+
...(run.humanGrade ? { humanGrade: { recipe_semantic: run.humanGrade.recipe_semantic } } : {}),
|
|
27
|
+
slotId: resolveRunSlotId(run),
|
|
28
|
+
linkedTicketRefs: runLinkedTicketRefs(run),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/** A `run.list` filter with its search and tags normalized once per list. */
|
|
32
|
+
function runListTerms(filter) {
|
|
33
|
+
return { filter, search: filter.search?.toLowerCase(), tags: normalizeRunTags(filter.tags) };
|
|
34
|
+
}
|
|
35
|
+
/** A declared predicate, not a returned closure, so the authorization guard can follow `run.list` into it. */
|
|
36
|
+
function runMatchesList(run, { filter, search, tags }) {
|
|
37
|
+
if (filter.status) {
|
|
38
|
+
if (run.status !== filter.status)
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
else if (filter.active && !isActiveListRun(run))
|
|
42
|
+
return false;
|
|
43
|
+
if (filter.flowType && run.flowType !== filter.flowType)
|
|
44
|
+
return false;
|
|
45
|
+
if (filter.project && run.project !== filter.project)
|
|
46
|
+
return false;
|
|
47
|
+
if (filter.prNumber != null && run.prNumber !== filter.prNumber)
|
|
48
|
+
return false;
|
|
49
|
+
if (filter.familyId && run.familyId !== filter.familyId)
|
|
50
|
+
return false;
|
|
51
|
+
if (filter.lane && run.lane !== filter.lane)
|
|
52
|
+
return false;
|
|
53
|
+
if (filter.variant !== undefined && (run.variant ?? null) !== (filter.variant ?? null))
|
|
54
|
+
return false;
|
|
55
|
+
if (filter.outcome && run.metrics.outcome !== filter.outcome)
|
|
56
|
+
return false;
|
|
57
|
+
if (filter.dateFrom && !(run.createdAt >= filter.dateFrom))
|
|
58
|
+
return false;
|
|
59
|
+
if (filter.dateTo && !(run.createdAt <= filter.dateTo))
|
|
60
|
+
return false;
|
|
61
|
+
// Tags are matched as stored, not lowercased, as the gateway always has.
|
|
62
|
+
if (search &&
|
|
63
|
+
!run.ticketOrPr.toLowerCase().includes(search) &&
|
|
64
|
+
!run.summary?.toLowerCase().includes(search) &&
|
|
65
|
+
!run.tags?.some((tag) => tag.includes(search)))
|
|
66
|
+
return false;
|
|
67
|
+
if (tags.length > 0) {
|
|
68
|
+
const own = new Set(normalizeRunTags(run.tags));
|
|
69
|
+
if (!tags.every((tag) => own.has(tag)))
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
/** The gateway's `run.list` filters, search included. Its `listRuns` and the client cache share it. */
|
|
75
|
+
export function matchesRunList(filter) {
|
|
76
|
+
const terms = runListTerms(filter);
|
|
77
|
+
return (run) => runMatchesList(run, terms);
|
|
78
|
+
}
|
|
79
|
+
const GRADE_ORDER = { good: 3, ok: 2, bad: 1 };
|
|
80
|
+
/** A stable sort, so equal keys keep the input order: the gateway's live-map order. */
|
|
81
|
+
export function sortRunList(runs, sort = 'newest') {
|
|
82
|
+
const result = [...runs];
|
|
83
|
+
switch (sort) {
|
|
84
|
+
case 'oldest':
|
|
85
|
+
return result.sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
|
86
|
+
case 'duration':
|
|
87
|
+
return result.sort((a, b) => (b.metrics.durationMs ?? 0) - (a.metrics.durationMs ?? 0));
|
|
88
|
+
case 'grade':
|
|
89
|
+
return result.sort((a, b) => (GRADE_ORDER[b.humanGrade?.recipe_semantic ?? ''] ?? 0) -
|
|
90
|
+
(GRADE_ORDER[a.humanGrade?.recipe_semantic ?? ''] ?? 0));
|
|
91
|
+
default:
|
|
92
|
+
return result.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** A `limit` that lists every matching run, where the open-ended list would page at 500. */
|
|
96
|
+
export const RUN_LIST_UNLIMITED = Number.MAX_SAFE_INTEGER;
|
|
97
|
+
/** Active, family, PR and tag lists are complete by default; only the open-ended list pages. */
|
|
98
|
+
export function runListLimit(filter, matched) {
|
|
99
|
+
return (filter.limit ??
|
|
100
|
+
(filter.active ||
|
|
101
|
+
filter.familyId ||
|
|
102
|
+
filter.prNumber != null ||
|
|
103
|
+
normalizeRunTags(filter.tags).length > 0
|
|
104
|
+
? matched
|
|
105
|
+
: 500));
|
|
106
|
+
}
|
|
107
|
+
/** One `run.list` page: matching rows, sorted and limited, and the count before the limit. */
|
|
108
|
+
export function runListPage(runs, filter) {
|
|
109
|
+
const terms = runListTerms(filter);
|
|
110
|
+
const matched = runs.filter((run) => runMatchesList(run, terms));
|
|
111
|
+
return {
|
|
112
|
+
runs: sortRunList(matched, filter.sort).slice(0, runListLimit(filter, matched.length)),
|
|
113
|
+
totalCount: matched.length,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=run-list-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-list-filter.js","sourceRoot":"","sources":["../../src/runs/run-list-filter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ResourceQueryState } from '../client-cache/types.js';
|
|
2
|
+
import type { RunListResult } from '../rpc/run.js';
|
|
3
|
+
/** A list's history and active queries remain individually owned by the shared cache. */
|
|
4
|
+
export declare function mergeRunListObservations(active: ResourceQueryState<RunListResult>, history?: ResourceQueryState<RunListResult>): ResourceQueryState<RunListResult>;
|
|
5
|
+
//# sourceMappingURL=run-list-observation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-list-observation.d.ts","sourceRoot":"","sources":["../../src/runs/run-list-observation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,yFAAyF;AACzF,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,kBAAkB,CAAC,aAAa,CAAC,EACzC,OAAO,CAAC,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAC1C,kBAAkB,CAAC,aAAa,CAAC,CAiCnC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { mergeRunsById } from './run-list-view.js';
|
|
2
|
+
/** A list's history and active queries remain individually owned by the shared cache. */
|
|
3
|
+
export function mergeRunListObservations(active, history) {
|
|
4
|
+
const states = history ? [history, active] : [active];
|
|
5
|
+
const data = history?.data ?? active.data;
|
|
6
|
+
const error = states.find((state) => state.error)?.error;
|
|
7
|
+
const storageNotice = states.find((state) => state.storageNotice)?.storageNotice;
|
|
8
|
+
const ready = states.every((state) => state.status === 'ready');
|
|
9
|
+
const status = ready
|
|
10
|
+
? 'ready'
|
|
11
|
+
: states.some((state) => state.status === 'unsupported')
|
|
12
|
+
? 'unsupported'
|
|
13
|
+
: data
|
|
14
|
+
? 'stale'
|
|
15
|
+
: states.some((state) => state.status === 'error')
|
|
16
|
+
? 'error'
|
|
17
|
+
: 'loading';
|
|
18
|
+
const rows = new Map();
|
|
19
|
+
for (const state of states) {
|
|
20
|
+
for (const run of state.data?.runs ?? []) {
|
|
21
|
+
const previous = rows.get(run.id);
|
|
22
|
+
// A late response to the other canonical query must not regress a newer row.
|
|
23
|
+
if (!previous || run.updatedAt >= previous.updatedAt)
|
|
24
|
+
rows.set(run.id, run);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const times = states.flatMap((state) => state.data && state.observedAt !== undefined ? [state.observedAt] : []);
|
|
28
|
+
return {
|
|
29
|
+
status,
|
|
30
|
+
...(data ? { data: { ...data, runs: mergeRunsById([], [...rows.values()]) } } : {}),
|
|
31
|
+
...(times.length ? { observedAt: Math.min(...times) } : {}),
|
|
32
|
+
...(error ? { error } : {}),
|
|
33
|
+
...(storageNotice ? { storageNotice } : {}),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=run-list-observation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-list-observation.js","sourceRoot":"","sources":["../../src/runs/run-list-observation.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,yFAAyF;AACzF,MAAM,UAAU,wBAAwB,CACtC,MAAyC,EACzC,OAA2C;IAE3C,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACzD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACjF,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,KAAK;QAClB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,aAAa,CAAC;YACtD,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,IAAI;gBACJ,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC;oBAChD,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,SAAS,CAAC;IACpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClC,6EAA6E;YAC7E,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,IAAI,QAAQ,CAAC,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACrC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CACvE,CAAC;IACF,OAAO;QACL,MAAM;QACN,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type FlowType, type Run, type RunLane, type RunStatus } from '../contracts/runs.js';
|
|
2
2
|
import type { SlotStatus } from '../contracts/slots.js';
|
|
3
|
+
import type { RunListProjection } from './run-list-filter.js';
|
|
3
4
|
/** `active` follows `isActiveListRun`, `history` keeps terminal runs, `all` keeps every run. */
|
|
4
5
|
export type RunListScope = 'active' | 'history' | 'all';
|
|
5
6
|
export interface RunListQuery {
|
|
@@ -14,8 +15,11 @@ export interface RunListQuery {
|
|
|
14
15
|
tag?: string;
|
|
15
16
|
search?: string;
|
|
16
17
|
}
|
|
17
|
-
/**
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* The runs a run list shows, in input order. Command Center and Companion both list through this.
|
|
20
|
+
* A version-list projection selects exactly as the run it was made from.
|
|
21
|
+
*/
|
|
22
|
+
export declare function selectRunList<R extends Run | RunListProjection>(runs: readonly R[], query: RunListQuery): R[];
|
|
19
23
|
/** The `slotMachines` map for a fleet snapshot. */
|
|
20
24
|
export declare function slotMachineMap(slots: readonly Pick<SlotStatus, 'slot' | 'machine'>[]): Map<string, string>;
|
|
21
25
|
/** Incoming runs replace stored runs with the same id; newest first. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-list-view.d.ts","sourceRoot":"","sources":["../../src/runs/run-list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAIb,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-list-view.d.ts","sourceRoot":"","sources":["../../src/runs/run-list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EAIb,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,gGAAgG;AAChG,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,+FAA+F;IAC/F,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,GAAG,GAAG,iBAAiB,EAC7D,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,KAAK,EAAE,YAAY,GAClB,CAAC,EAAE,CAcL;AAED,mDAAmD;AACnD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,GACrD,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAErB;AAED,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,GAAG,EAAE,GAAG,GAAG,EAAE,CAIvF"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { isActiveListRun, isTerminalRunStatus, normalizeRunTags, } from '../contracts/runs.js';
|
|
2
2
|
import { runLinkedTicketRefs } from './linked-tickets.js';
|
|
3
3
|
import { resolveRunSlotId } from './slot-resolution.js';
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* The runs a run list shows, in input order. Command Center and Companion both list through this.
|
|
6
|
+
* A version-list projection selects exactly as the run it was made from.
|
|
7
|
+
*/
|
|
5
8
|
export function selectRunList(runs, query) {
|
|
6
9
|
const [tag] = normalizeRunTags(query.tag ? [query.tag] : []);
|
|
7
10
|
const search = query.search?.trim().toLowerCase();
|
|
@@ -25,6 +28,9 @@ export function mergeRunsById(existing, incoming) {
|
|
|
25
28
|
byId.set(run.id, run);
|
|
26
29
|
return [...byId.values()].sort((left, right) => right.createdAt.localeCompare(left.createdAt));
|
|
27
30
|
}
|
|
31
|
+
function slotOf(run) {
|
|
32
|
+
return 'projected' in run ? run.slotId : resolveRunSlotId(run);
|
|
33
|
+
}
|
|
28
34
|
function inScope(run, scope) {
|
|
29
35
|
if (scope === 'active')
|
|
30
36
|
return isActiveListRun(run);
|
|
@@ -33,7 +39,7 @@ function inScope(run, scope) {
|
|
|
33
39
|
return true;
|
|
34
40
|
}
|
|
35
41
|
function onMachines(run, machines, slotMachines) {
|
|
36
|
-
const slotId =
|
|
42
|
+
const slotId = slotOf(run);
|
|
37
43
|
if (!slotId)
|
|
38
44
|
return false;
|
|
39
45
|
const machine = slotMachines?.get(slotId);
|
|
@@ -45,8 +51,8 @@ function matchesSearch(run, search) {
|
|
|
45
51
|
return [
|
|
46
52
|
run.ticketOrPr,
|
|
47
53
|
run.summary,
|
|
48
|
-
...runLinkedTicketRefs(run),
|
|
49
|
-
|
|
54
|
+
...('projected' in run ? run.linkedTicketRefs : runLinkedTicketRefs(run)),
|
|
55
|
+
slotOf(run),
|
|
50
56
|
run.metrics.disposition?.replace(/_/g, ' '),
|
|
51
57
|
...(run.tags ?? []),
|
|
52
58
|
].some((value) => value?.toLowerCase().includes(search));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-list-view.js","sourceRoot":"","sources":["../../src/runs/run-list-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GAIjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-list-view.js","sourceRoot":"","sources":["../../src/runs/run-list-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Run } from '../contracts/runs.js';
|
|
2
2
|
import type { SlotStatus } from '../contracts/slots.js';
|
|
3
|
+
import { Methods } from '../rpc/registry.js';
|
|
3
4
|
import type { SlotReleaseParams, SlotReleaseResult } from '../rpc/slot.js';
|
|
4
5
|
/**
|
|
5
6
|
* The held reason of a slot a cancelled run keeps for replay (ADR-054
|
|
@@ -35,6 +36,6 @@ export declare function cancelledRunSlotChoices(run: Pick<Run, 'id' | 'status' |
|
|
|
35
36
|
/** A release resets the checkout and runs the recycle hook, which takes minutes on a remote node. */
|
|
36
37
|
export declare const CANCELLED_RUN_SLOT_RELEASE_TIMEOUT_MS: number;
|
|
37
38
|
/** Releases the slot; returns why it was not released, or null once it was. */
|
|
38
|
-
export declare function releaseCancelledRunSlot(request: (method:
|
|
39
|
+
export declare function releaseCancelledRunSlot(request: (method: typeof Methods.SLOT_RELEASE, params: SlotReleaseParams, timeoutMs: number) => Promise<SlotReleaseResult>, hold: CancelledRunSlotHold): Promise<string | null>;
|
|
39
40
|
export {};
|
|
40
41
|
//# sourceMappingURL=cancelled-run-slot.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancelled-run-slot.d.ts","sourceRoot":"","sources":["../../src/slots/cancelled-run-slot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"cancelled-run-slot.d.ts","sourceRoot":"","sources":["../../src/slots/cancelled-run-slot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAE3E;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,sFAAsF;AACtF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,aAAa,EAAE,iBAAiB,CAAC;CAClC;AAED,KAAK,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,cAAc,GAAG,YAAY,CAAC,CAAC;AAEjG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,oBAAoB,GAAG,IAAI,CAYhF;AAED,8DAA8D;AAC9D,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,GAAG,QAAQ,GAAG,OAAO,CAAC,EACzC,KAAK,EAAE,SAAS,QAAQ,EAAE,GACzB,uBAAuB,GAAG,IAAI,CAUhC;AAED,qGAAqG;AACrG,eAAO,MAAM,qCAAqC,QAAa,CAAC;AAEhE,+EAA+E;AAC/E,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,CACP,MAAM,EAAE,OAAO,OAAO,CAAC,YAAY,EACnC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,iBAAiB,CAAC,EAC/B,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB"}
|
package/dist/sources/client.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { type GatewayResourceCache } from '../client-cache/index.js';
|
|
1
2
|
import { Methods } from '../rpc/registry.js';
|
|
2
3
|
import type { SourcesPinParams, SourcesPinResult, SourcesStatusParams, SourcesStatusResult, SourcesSyncParams, SourcesSyncResult, SourcesUnpinParams } from '../rpc/sources.js';
|
|
3
4
|
import { type SourcePinTarget } from './pins.js';
|
|
4
5
|
export type SourceRpcRequest = <T>(method: string, params: unknown) => Promise<T>;
|
|
6
|
+
/** A cache-backed client's transport: status comes from the shared cache, never this request. */
|
|
7
|
+
export type SourceCommandRequest = <T>(method: PreparedSourceCommand['method'], params: unknown) => Promise<T>;
|
|
5
8
|
export type SourcePinInput = Omit<SourcesPinParams, 'operationId' | 'expectedDeclarationRevision' | 'expectedPinRevision'>;
|
|
6
9
|
export type SourceUnpinInput = Omit<SourcePinInput, 'ref'>;
|
|
7
10
|
export type SourceSyncInput = Omit<SourcesSyncParams, 'operationId' | 'expectedDeclarationRevision'>;
|
|
@@ -23,10 +26,13 @@ interface SourceCommandResults {
|
|
|
23
26
|
export type SourceCommandResult<Command extends PreparedSourceCommand> = SourceCommandResults[Command['method']];
|
|
24
27
|
/** One target mapping serves SDK commands and every source status/picker context. */
|
|
25
28
|
export declare function sourceStatusParamsForTarget(sourceId?: string, target?: SourcePinTarget): SourcesStatusParams;
|
|
29
|
+
/** One registered query supplies source observations and command preconditions in both UIs. */
|
|
30
|
+
export declare function sourceStatusQuery(params?: SourcesStatusParams): import("../client-cache/registry.js").ResourceQuery<SourcesStatusResult>;
|
|
26
31
|
/** Existing authenticated transports own connectivity. This client never resolves refs. */
|
|
27
32
|
export declare class SourceCommandClient {
|
|
28
33
|
private readonly request;
|
|
29
|
-
|
|
34
|
+
private readonly readStatus;
|
|
35
|
+
constructor(request: SourceCommandRequest, readStatus: (params: SourcesStatusParams) => Promise<SourcesStatusResult>);
|
|
30
36
|
status(params?: SourcesStatusParams): Promise<SourcesStatusResult>;
|
|
31
37
|
private revisions;
|
|
32
38
|
preparePin(input: SourcePinInput, operationId?: string): Promise<Extract<PreparedSourceCommand, {
|
|
@@ -41,6 +47,9 @@ export declare class SourceCommandClient {
|
|
|
41
47
|
/** Retry this exact command after a lost response. Never recapture revisions or mint another ID. */
|
|
42
48
|
execute<Command extends PreparedSourceCommand>(command: Command): Promise<SourceCommandResult<Command>>;
|
|
43
49
|
}
|
|
50
|
+
/** The two UI clients supply the shared cache, so their transport carries commands only. */
|
|
51
|
+
export declare function createSourceCommandClient(request: SourceCommandRequest, resourceCache: () => GatewayResourceCache | undefined): SourceCommandClient;
|
|
52
|
+
/** CLI commands have no cache provider and remain direct status readers. */
|
|
44
53
|
export declare function createSourceCommandClient(request: SourceRpcRequest): SourceCommandClient;
|
|
45
54
|
export {};
|
|
46
55
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sources/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,KAAK,eAAe,EAA2B,MAAM,WAAW,CAAC;AAE1E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAClF,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,gBAAgB,EAChB,aAAa,GAAG,6BAA6B,GAAG,qBAAqB,CACtE,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,iBAAiB,EACjB,aAAa,GAAG,6BAA6B,CAC9C,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,MAAM,EAAE,OAAO,OAAO,CAAC,WAAW,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,OAAO,OAAO,CAAC,aAAa,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GACpE;IAAE,MAAM,EAAE,OAAO,OAAO,CAAC,YAAY,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAEvE,UAAU,oBAAoB;IAC5B,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAC;IACxC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC;IAC1C,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAC3C;AACD,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,qBAAqB,IACnE,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAW1C,qFAAqF;AACrF,wBAAgB,2BAA2B,CACzC,QAAQ,CAAC,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,eAAe,GACvB,mBAAmB,CAYrB;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/sources/client.ts"],"names":[],"mappings":"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"}
|
package/dist/sources/client.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { resourceQuery } from '../client-cache/index.js';
|
|
1
2
|
import { Methods } from '../rpc/registry.js';
|
|
2
3
|
import { validateSourceSelection } from './pins.js';
|
|
3
4
|
function pinRevisions(status) {
|
|
@@ -21,16 +22,30 @@ export function sourceStatusParamsForTarget(sourceId, target) {
|
|
|
21
22
|
params.runId = target.targetId;
|
|
22
23
|
return params;
|
|
23
24
|
}
|
|
25
|
+
/** One registered query supplies source observations and command preconditions in both UIs. */
|
|
26
|
+
export function sourceStatusQuery(params = {}) {
|
|
27
|
+
return resourceQuery(Methods.SOURCES_STATUS, params);
|
|
28
|
+
}
|
|
24
29
|
function newOperationId() {
|
|
25
30
|
return `sources-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
|
|
26
31
|
}
|
|
32
|
+
async function cachedSourceStatus(resourceCache, params) {
|
|
33
|
+
const cache = resourceCache();
|
|
34
|
+
if (!cache)
|
|
35
|
+
throw new Error('Wait for source facts from the selected gateway.');
|
|
36
|
+
const state = await cache.retry(sourceStatusQuery(params));
|
|
37
|
+
if (state.status !== 'ready' || !state.data)
|
|
38
|
+
throw Object.assign(new Error(state.error?.message ?? 'Connect to refresh source facts before this action.'), { code: state.error?.code ?? 'RESOURCE_STALE' });
|
|
39
|
+
return state.data;
|
|
40
|
+
}
|
|
27
41
|
/** Existing authenticated transports own connectivity. This client never resolves refs. */
|
|
28
42
|
export class SourceCommandClient {
|
|
29
|
-
constructor(request) {
|
|
43
|
+
constructor(request, readStatus) {
|
|
30
44
|
this.request = request;
|
|
45
|
+
this.readStatus = readStatus;
|
|
31
46
|
}
|
|
32
47
|
status(params = {}) {
|
|
33
|
-
return this.
|
|
48
|
+
return this.readStatus(params);
|
|
34
49
|
}
|
|
35
50
|
async revisions(sourceId, target) {
|
|
36
51
|
const status = await this.status(sourceStatusParamsForTarget(sourceId, target));
|
|
@@ -77,7 +92,11 @@ export class SourceCommandClient {
|
|
|
77
92
|
return result;
|
|
78
93
|
}
|
|
79
94
|
}
|
|
80
|
-
export function createSourceCommandClient(request) {
|
|
81
|
-
|
|
95
|
+
export function createSourceCommandClient(request, resourceCache) {
|
|
96
|
+
if (resourceCache)
|
|
97
|
+
return new SourceCommandClient(request, (params) => cachedSourceStatus(resourceCache, params));
|
|
98
|
+
// Only the overload without a cache provider accepts a transport that reads status.
|
|
99
|
+
const direct = request;
|
|
100
|
+
return new SourceCommandClient(request, (params) => direct(Methods.SOURCES_STATUS, params));
|
|
82
101
|
}
|
|
83
102
|
//# sourceMappingURL=client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sources/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAW7C,OAAO,EAAwB,uBAAuB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sources/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { GatewayResourceCache, ResourceQueryStatus } from '../client-cache/index.js';
|
|
2
2
|
import { type PreparedSourceCommand, type SourceCommandClient } from './client.js';
|
|
3
3
|
import type { SourceSelection } from './pins.js';
|
|
4
4
|
import { type SourceStatusViewContext, type SourceStatusViewModel, type SourceViewAction } from './status-view.js';
|
|
5
5
|
export interface SourceStatusSnapshot {
|
|
6
|
+
freshness: ResourceQueryStatus;
|
|
7
|
+
observedAt?: number;
|
|
6
8
|
loading: boolean;
|
|
7
9
|
busy: boolean;
|
|
8
10
|
view?: SourceStatusViewModel;
|
|
@@ -26,30 +28,27 @@ export interface SourceStatusSnapshot {
|
|
|
26
28
|
/** One context-bound controller serves thin web/native status and selection renderers. */
|
|
27
29
|
export declare class SourceStatusController {
|
|
28
30
|
private readonly client;
|
|
31
|
+
private cache?;
|
|
29
32
|
private context;
|
|
30
33
|
private status?;
|
|
31
34
|
private version;
|
|
32
35
|
private listeners;
|
|
33
36
|
private snapshot;
|
|
34
37
|
private pendingConnectionKey?;
|
|
35
|
-
private
|
|
36
|
-
private covered?;
|
|
37
|
-
/** The version of the read in flight; a context change abandons it. */
|
|
38
|
-
private readingVersion?;
|
|
39
|
-
private rereadAfterRead;
|
|
38
|
+
private stopQuery?;
|
|
40
39
|
private deniedRead;
|
|
41
|
-
|
|
40
|
+
private ageTimer?;
|
|
41
|
+
constructor(client: SourceCommandClient, context: SourceStatusViewContext, cache?: GatewayResourceCache | undefined);
|
|
42
42
|
getSnapshot: () => SourceStatusSnapshot;
|
|
43
43
|
subscribe: (listener: () => void) => (() => void);
|
|
44
|
+
/** Repaint relative age only; this clock never refreshes facts or changes selections. */
|
|
45
|
+
private updateAgeTimer;
|
|
44
46
|
private update;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
* revision passes what the last read covered. Reconnects stay with the host,
|
|
48
|
-
* which already rereads on every new connection.
|
|
49
|
-
*/
|
|
50
|
-
attachFeed(feed: SourceChangeFeed): () => void;
|
|
51
|
-
private observeFeed;
|
|
47
|
+
private observeQuery;
|
|
48
|
+
dispose(): void;
|
|
52
49
|
setContext(context: SourceStatusViewContext): boolean;
|
|
50
|
+
/** A retired cache must never observe a context from the replacement connection. */
|
|
51
|
+
bind(context: SourceStatusViewContext, cache: GatewayResourceCache | undefined): boolean;
|
|
53
52
|
refresh(): Promise<void>;
|
|
54
53
|
select(selection: SourceSelection): void;
|
|
55
54
|
clearSelection(sourceId: string): void;
|