@telora/daemon 0.15.37 → 0.15.42
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/build-info.json +2 -2
- package/dist/assembly-resolvers.d.ts +1 -1
- package/dist/assembly-resolvers.d.ts.map +1 -1
- package/dist/feeds/ghsa.d.ts +97 -0
- package/dist/feeds/ghsa.d.ts.map +1 -0
- package/dist/feeds/ghsa.js +226 -0
- package/dist/feeds/ghsa.js.map +1 -0
- package/dist/feeds/local.d.ts +55 -0
- package/dist/feeds/local.d.ts.map +1 -0
- package/dist/feeds/local.js +196 -0
- package/dist/feeds/local.js.map +1 -0
- package/dist/feeds/osv.d.ts +98 -0
- package/dist/feeds/osv.d.ts.map +1 -0
- package/dist/feeds/osv.js +277 -0
- package/dist/feeds/osv.js.map +1 -0
- package/dist/focus-engine.d.ts.map +1 -1
- package/dist/focus-engine.js +47 -0
- package/dist/focus-engine.js.map +1 -1
- package/dist/focus-executor.d.ts +53 -0
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +41 -26
- package/dist/focus-executor.js.map +1 -1
- package/dist/scanners/deps.d.ts +101 -0
- package/dist/scanners/deps.d.ts.map +1 -0
- package/dist/scanners/deps.js +242 -0
- package/dist/scanners/deps.js.map +1 -0
- package/dist/scanners/signatures.d.ts +44 -0
- package/dist/scanners/signatures.d.ts.map +1 -0
- package/dist/scanners/signatures.js +140 -0
- package/dist/scanners/signatures.js.map +1 -0
- package/dist/scanners/workflow.d.ts +42 -0
- package/dist/scanners/workflow.d.ts.map +1 -0
- package/dist/scanners/workflow.js +325 -0
- package/dist/scanners/workflow.js.map +1 -0
- package/dist/security-auto-inject.d.ts +114 -0
- package/dist/security-auto-inject.d.ts.map +1 -0
- package/dist/security-auto-inject.js +148 -0
- package/dist/security-auto-inject.js.map +1 -0
- package/dist/security-rescan-resolution.d.ts +84 -0
- package/dist/security-rescan-resolution.d.ts.map +1 -0
- package/dist/security-rescan-resolution.js +114 -0
- package/dist/security-rescan-resolution.js.map +1 -0
- package/dist/security-scan-engine.d.ts +102 -0
- package/dist/security-scan-engine.d.ts.map +1 -0
- package/dist/security-scan-engine.js +202 -0
- package/dist/security-scan-engine.js.map +1 -0
- package/package.json +3 -2
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OSV advisory feed adapter.
|
|
3
|
+
*
|
|
4
|
+
* Cross-references installed dependencies against OSV.dev (Open Source
|
|
5
|
+
* Vulnerabilities) and returns enriched advisory metadata. Used by the
|
|
6
|
+
* deps scanner to enrich raw npm-audit output with full advisory bodies
|
|
7
|
+
* (summary, references, severity vectors, affected ranges).
|
|
8
|
+
*
|
|
9
|
+
* Resilience contract: any network or parsing failure is captured as a
|
|
10
|
+
* string in `warnings`. The function ALWAYS resolves; it never throws.
|
|
11
|
+
* OSV downtime degrades the scanner to "raw npm-audit only", not failure.
|
|
12
|
+
*
|
|
13
|
+
* Two-stage protocol:
|
|
14
|
+
* 1. POST /v1/querybatch -- one round-trip lists matching advisory ids
|
|
15
|
+
* per query (package@version pair).
|
|
16
|
+
* 2. GET /v1/vulns/{id} -- per-advisory body fetch; ids are deduped
|
|
17
|
+
* across the batch before the fan-out.
|
|
18
|
+
*
|
|
19
|
+
* TTL caches:
|
|
20
|
+
* - Querybatch results are cached per ${name}@${version}@${ecosystem}
|
|
21
|
+
* for 15 minutes -- the typical scan cadence.
|
|
22
|
+
* - Advisory bodies are cached per id separately so a freshly-seen
|
|
23
|
+
* package that maps to an already-known advisory skips the body GET.
|
|
24
|
+
*
|
|
25
|
+
* @module feeds/osv
|
|
26
|
+
*/
|
|
27
|
+
export interface OsvAdvisory {
|
|
28
|
+
id: string;
|
|
29
|
+
summary: string;
|
|
30
|
+
details?: string;
|
|
31
|
+
aliases: string[];
|
|
32
|
+
severity?: Array<{
|
|
33
|
+
type: string;
|
|
34
|
+
score: string;
|
|
35
|
+
}>;
|
|
36
|
+
affected: Array<{
|
|
37
|
+
package: {
|
|
38
|
+
name: string;
|
|
39
|
+
ecosystem: string;
|
|
40
|
+
};
|
|
41
|
+
versions?: string[];
|
|
42
|
+
ranges?: unknown[];
|
|
43
|
+
}>;
|
|
44
|
+
references?: Array<{
|
|
45
|
+
type: string;
|
|
46
|
+
url: string;
|
|
47
|
+
}>;
|
|
48
|
+
modified: string;
|
|
49
|
+
published: string;
|
|
50
|
+
}
|
|
51
|
+
export interface OsvQueryResult {
|
|
52
|
+
advisories: OsvAdvisory[];
|
|
53
|
+
warnings: string[];
|
|
54
|
+
}
|
|
55
|
+
export interface OsvQueryInput {
|
|
56
|
+
packages: Array<{
|
|
57
|
+
name: string;
|
|
58
|
+
version: string;
|
|
59
|
+
ecosystem: 'npm' | 'PyPI' | 'Go' | 'crates.io';
|
|
60
|
+
}>;
|
|
61
|
+
}
|
|
62
|
+
export type FetchFn = (input: string, init?: {
|
|
63
|
+
method?: string;
|
|
64
|
+
headers?: Record<string, string>;
|
|
65
|
+
body?: string;
|
|
66
|
+
signal?: AbortSignal;
|
|
67
|
+
}) => Promise<{
|
|
68
|
+
ok: boolean;
|
|
69
|
+
status: number;
|
|
70
|
+
statusText: string;
|
|
71
|
+
json: () => Promise<unknown>;
|
|
72
|
+
}>;
|
|
73
|
+
export interface OsvClient {
|
|
74
|
+
queryOsv(input: OsvQueryInput): Promise<OsvQueryResult>;
|
|
75
|
+
/**
|
|
76
|
+
* Drop every cached querybatch hit and advisory body so the next
|
|
77
|
+
* `queryOsv` call refetches from OSV. Used by manual-trigger refreshes
|
|
78
|
+
* so a user clicking "Refresh feeds" actually re-pulls upstream data
|
|
79
|
+
* instead of replaying the 15-minute TTL cache.
|
|
80
|
+
*/
|
|
81
|
+
clearCache(): void;
|
|
82
|
+
}
|
|
83
|
+
export interface OsvClientOptions {
|
|
84
|
+
fetchFn?: FetchFn;
|
|
85
|
+
/** Override the wall clock (testing). */
|
|
86
|
+
now?: () => number;
|
|
87
|
+
/** Override the per-request timeout. */
|
|
88
|
+
timeoutMs?: number;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Build an OSV client with an injectable fetch. The default `queryOsv`
|
|
92
|
+
* export uses `globalThis.fetch`.
|
|
93
|
+
*/
|
|
94
|
+
export declare function createOsvClient(opts?: OsvClientOptions): OsvClient;
|
|
95
|
+
export declare function queryOsv(input: OsvQueryInput): Promise<OsvQueryResult>;
|
|
96
|
+
/** Flush the default OSV client's in-memory TTL cache. */
|
|
97
|
+
export declare function clearOsvCache(): void;
|
|
98
|
+
//# sourceMappingURL=osv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"osv.d.ts","sourceRoot":"","sources":["../../src/feeds/osv.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAYH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,QAAQ,EAAE,KAAK,CAAC;QACd,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;KACpB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,KAAK,GAAG,MAAM,GAAG,IAAI,GAAG,WAAW,CAAC;KAChD,CAAC,CAAC;CACJ;AAQD,MAAM,MAAM,OAAO,GAAG,CACpB,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAC9F,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC;AA2JhG,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACxD;;;;;OAKG;IACH,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,GAAE,gBAAqB,GAAG,SAAS,CA2GtE;AAQD,wBAAsB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAE5E;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OSV advisory feed adapter.
|
|
3
|
+
*
|
|
4
|
+
* Cross-references installed dependencies against OSV.dev (Open Source
|
|
5
|
+
* Vulnerabilities) and returns enriched advisory metadata. Used by the
|
|
6
|
+
* deps scanner to enrich raw npm-audit output with full advisory bodies
|
|
7
|
+
* (summary, references, severity vectors, affected ranges).
|
|
8
|
+
*
|
|
9
|
+
* Resilience contract: any network or parsing failure is captured as a
|
|
10
|
+
* string in `warnings`. The function ALWAYS resolves; it never throws.
|
|
11
|
+
* OSV downtime degrades the scanner to "raw npm-audit only", not failure.
|
|
12
|
+
*
|
|
13
|
+
* Two-stage protocol:
|
|
14
|
+
* 1. POST /v1/querybatch -- one round-trip lists matching advisory ids
|
|
15
|
+
* per query (package@version pair).
|
|
16
|
+
* 2. GET /v1/vulns/{id} -- per-advisory body fetch; ids are deduped
|
|
17
|
+
* across the batch before the fan-out.
|
|
18
|
+
*
|
|
19
|
+
* TTL caches:
|
|
20
|
+
* - Querybatch results are cached per ${name}@${version}@${ecosystem}
|
|
21
|
+
* for 15 minutes -- the typical scan cadence.
|
|
22
|
+
* - Advisory bodies are cached per id separately so a freshly-seen
|
|
23
|
+
* package that maps to an already-known advisory skips the body GET.
|
|
24
|
+
*
|
|
25
|
+
* @module feeds/osv
|
|
26
|
+
*/
|
|
27
|
+
const OSV_BASE_URL = 'https://api.osv.dev';
|
|
28
|
+
const QUERY_BATCH_PATH = '/v1/querybatch';
|
|
29
|
+
const VULNS_PATH = '/v1/vulns';
|
|
30
|
+
const REQUEST_TIMEOUT_MS = 10_000;
|
|
31
|
+
const CACHE_TTL_MS = 15 * 60 * 1000; // 15 minutes
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
// Internal helpers
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
function isRecord(value) {
|
|
36
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
37
|
+
}
|
|
38
|
+
function cacheKey(name, version, ecosystem) {
|
|
39
|
+
return `${name}@${version}@${ecosystem}`;
|
|
40
|
+
}
|
|
41
|
+
class TtlCache {
|
|
42
|
+
ttlMs;
|
|
43
|
+
now;
|
|
44
|
+
store = new Map();
|
|
45
|
+
constructor(ttlMs, now = () => Date.now()) {
|
|
46
|
+
this.ttlMs = ttlMs;
|
|
47
|
+
this.now = now;
|
|
48
|
+
}
|
|
49
|
+
get(key) {
|
|
50
|
+
const entry = this.store.get(key);
|
|
51
|
+
if (!entry)
|
|
52
|
+
return undefined;
|
|
53
|
+
if (entry.expiresAt <= this.now()) {
|
|
54
|
+
this.store.delete(key);
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
return entry.value;
|
|
58
|
+
}
|
|
59
|
+
set(key, value) {
|
|
60
|
+
this.store.set(key, { value, expiresAt: this.now() + this.ttlMs });
|
|
61
|
+
}
|
|
62
|
+
clear() {
|
|
63
|
+
this.store.clear();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Wrap fetch with an AbortSignal-based timeout. Resolves to the response
|
|
68
|
+
* on success; throws on timeout, network error, or non-2xx status.
|
|
69
|
+
*/
|
|
70
|
+
async function fetchWithTimeout(fetchFn, url, init, timeoutMs) {
|
|
71
|
+
const controller = new AbortController();
|
|
72
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
73
|
+
try {
|
|
74
|
+
const res = await fetchFn(url, { ...init, signal: controller.signal });
|
|
75
|
+
if (!res.ok) {
|
|
76
|
+
throw new Error(`HTTP ${res.status} ${res.statusText}`);
|
|
77
|
+
}
|
|
78
|
+
return await res.json();
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
clearTimeout(timer);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
// Response parsing -- shallow, defensive narrowing on the unknown payload.
|
|
86
|
+
// ---------------------------------------------------------------------------
|
|
87
|
+
/** Extract advisory ids from one querybatch result entry. */
|
|
88
|
+
function parseQuerybatchEntry(entry) {
|
|
89
|
+
if (!isRecord(entry))
|
|
90
|
+
return [];
|
|
91
|
+
const vulns = entry.vulns;
|
|
92
|
+
if (!Array.isArray(vulns))
|
|
93
|
+
return [];
|
|
94
|
+
const ids = [];
|
|
95
|
+
for (const v of vulns) {
|
|
96
|
+
if (isRecord(v) && typeof v.id === 'string' && v.id.length > 0) {
|
|
97
|
+
ids.push(v.id);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return ids;
|
|
101
|
+
}
|
|
102
|
+
/** Parse a single OSV advisory body. */
|
|
103
|
+
function parseAdvisory(payload) {
|
|
104
|
+
if (!isRecord(payload))
|
|
105
|
+
return null;
|
|
106
|
+
if (typeof payload.id !== 'string')
|
|
107
|
+
return null;
|
|
108
|
+
const aliases = [];
|
|
109
|
+
if (Array.isArray(payload.aliases)) {
|
|
110
|
+
for (const a of payload.aliases) {
|
|
111
|
+
if (typeof a === 'string')
|
|
112
|
+
aliases.push(a);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const affected = [];
|
|
116
|
+
if (Array.isArray(payload.affected)) {
|
|
117
|
+
for (const a of payload.affected) {
|
|
118
|
+
if (!isRecord(a))
|
|
119
|
+
continue;
|
|
120
|
+
const pkg = a.package;
|
|
121
|
+
if (!isRecord(pkg) || typeof pkg.name !== 'string' || typeof pkg.ecosystem !== 'string') {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const entry = {
|
|
125
|
+
package: { name: pkg.name, ecosystem: pkg.ecosystem },
|
|
126
|
+
};
|
|
127
|
+
if (Array.isArray(a.versions)) {
|
|
128
|
+
entry.versions = a.versions.filter((v) => typeof v === 'string');
|
|
129
|
+
}
|
|
130
|
+
if (Array.isArray(a.ranges)) {
|
|
131
|
+
entry.ranges = a.ranges;
|
|
132
|
+
}
|
|
133
|
+
affected.push(entry);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
let severity;
|
|
137
|
+
if (Array.isArray(payload.severity)) {
|
|
138
|
+
const out = [];
|
|
139
|
+
for (const s of payload.severity) {
|
|
140
|
+
if (isRecord(s) && typeof s.type === 'string' && typeof s.score === 'string') {
|
|
141
|
+
out.push({ type: s.type, score: s.score });
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (out.length > 0)
|
|
145
|
+
severity = out;
|
|
146
|
+
}
|
|
147
|
+
let references;
|
|
148
|
+
if (Array.isArray(payload.references)) {
|
|
149
|
+
const out = [];
|
|
150
|
+
for (const r of payload.references) {
|
|
151
|
+
if (isRecord(r) && typeof r.type === 'string' && typeof r.url === 'string') {
|
|
152
|
+
out.push({ type: r.type, url: r.url });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
if (out.length > 0)
|
|
156
|
+
references = out;
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
id: payload.id,
|
|
160
|
+
summary: typeof payload.summary === 'string' ? payload.summary : '',
|
|
161
|
+
details: typeof payload.details === 'string' ? payload.details : undefined,
|
|
162
|
+
aliases,
|
|
163
|
+
severity,
|
|
164
|
+
affected,
|
|
165
|
+
references,
|
|
166
|
+
modified: typeof payload.modified === 'string' ? payload.modified : '',
|
|
167
|
+
published: typeof payload.published === 'string' ? payload.published : '',
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Build an OSV client with an injectable fetch. The default `queryOsv`
|
|
172
|
+
* export uses `globalThis.fetch`.
|
|
173
|
+
*/
|
|
174
|
+
export function createOsvClient(opts = {}) {
|
|
175
|
+
const fetchFn = opts.fetchFn ?? globalThis.fetch;
|
|
176
|
+
const now = opts.now ?? (() => Date.now());
|
|
177
|
+
const timeoutMs = opts.timeoutMs ?? REQUEST_TIMEOUT_MS;
|
|
178
|
+
// Two caches:
|
|
179
|
+
// - querybatchCache: package@version@ecosystem -> advisory id list
|
|
180
|
+
// - advisoryCache: id -> OsvAdvisory body
|
|
181
|
+
const querybatchCache = new TtlCache(CACHE_TTL_MS, now);
|
|
182
|
+
const advisoryCache = new TtlCache(CACHE_TTL_MS, now);
|
|
183
|
+
async function queryOsv(input) {
|
|
184
|
+
const warnings = [];
|
|
185
|
+
if (input.packages.length === 0) {
|
|
186
|
+
return { advisories: [], warnings };
|
|
187
|
+
}
|
|
188
|
+
// Stage 1: determine advisory ids per package, using the cache where
|
|
189
|
+
// possible. Build the uncached subset for the batch POST.
|
|
190
|
+
const idsByIndex = new Array(input.packages.length);
|
|
191
|
+
const uncached = [];
|
|
192
|
+
input.packages.forEach((p, i) => {
|
|
193
|
+
const cached = querybatchCache.get(cacheKey(p.name, p.version, p.ecosystem));
|
|
194
|
+
if (cached !== undefined) {
|
|
195
|
+
idsByIndex[i] = cached;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
uncached.push({ index: i, name: p.name, ecosystem: p.ecosystem, version: p.version });
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
if (uncached.length > 0) {
|
|
202
|
+
const body = JSON.stringify({
|
|
203
|
+
queries: uncached.map((q) => ({
|
|
204
|
+
package: { name: q.name, ecosystem: q.ecosystem },
|
|
205
|
+
version: q.version,
|
|
206
|
+
})),
|
|
207
|
+
});
|
|
208
|
+
try {
|
|
209
|
+
const payload = await fetchWithTimeout(fetchFn, `${OSV_BASE_URL}${QUERY_BATCH_PATH}`, { method: 'POST', headers: { 'content-type': 'application/json' }, body }, timeoutMs);
|
|
210
|
+
if (!isRecord(payload) || !Array.isArray(payload.results)) {
|
|
211
|
+
warnings.push('OSV querybatch returned unexpected response shape');
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
// Results align positionally with the queries we sent.
|
|
215
|
+
const results = payload.results;
|
|
216
|
+
uncached.forEach((q, batchIdx) => {
|
|
217
|
+
const ids = parseQuerybatchEntry(results[batchIdx]);
|
|
218
|
+
idsByIndex[q.index] = ids;
|
|
219
|
+
querybatchCache.set(cacheKey(q.name, q.version, q.ecosystem), ids);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
catch (err) {
|
|
224
|
+
warnings.push(`OSV querybatch failed: ${err.message}`);
|
|
225
|
+
// Leave uncached entries as undefined -- they contribute no ids
|
|
226
|
+
// but the function still returns whatever cached hits we have.
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// Stage 2: dedupe ids across all queries and fetch each advisory body.
|
|
230
|
+
const uniqueIds = new Set();
|
|
231
|
+
for (const ids of idsByIndex) {
|
|
232
|
+
if (!ids)
|
|
233
|
+
continue;
|
|
234
|
+
for (const id of ids)
|
|
235
|
+
uniqueIds.add(id);
|
|
236
|
+
}
|
|
237
|
+
const advisories = [];
|
|
238
|
+
for (const id of uniqueIds) {
|
|
239
|
+
const cachedAdvisory = advisoryCache.get(id);
|
|
240
|
+
if (cachedAdvisory) {
|
|
241
|
+
advisories.push(cachedAdvisory);
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
try {
|
|
245
|
+
const payload = await fetchWithTimeout(fetchFn, `${OSV_BASE_URL}${VULNS_PATH}/${encodeURIComponent(id)}`, { method: 'GET' }, timeoutMs);
|
|
246
|
+
const advisory = parseAdvisory(payload);
|
|
247
|
+
if (!advisory) {
|
|
248
|
+
warnings.push(`OSV advisory ${id} returned unexpected response shape`);
|
|
249
|
+
continue;
|
|
250
|
+
}
|
|
251
|
+
advisoryCache.set(id, advisory);
|
|
252
|
+
advisories.push(advisory);
|
|
253
|
+
}
|
|
254
|
+
catch (err) {
|
|
255
|
+
warnings.push(`OSV advisory ${id} lookup failed: ${err.message}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return { advisories, warnings };
|
|
259
|
+
}
|
|
260
|
+
function clearCache() {
|
|
261
|
+
querybatchCache.clear();
|
|
262
|
+
advisoryCache.clear();
|
|
263
|
+
}
|
|
264
|
+
return { queryOsv, clearCache };
|
|
265
|
+
}
|
|
266
|
+
// ---------------------------------------------------------------------------
|
|
267
|
+
// Default singleton -- uses global fetch.
|
|
268
|
+
// ---------------------------------------------------------------------------
|
|
269
|
+
const defaultClient = createOsvClient();
|
|
270
|
+
export async function queryOsv(input) {
|
|
271
|
+
return defaultClient.queryOsv(input);
|
|
272
|
+
}
|
|
273
|
+
/** Flush the default OSV client's in-memory TTL cache. */
|
|
274
|
+
export function clearOsvCache() {
|
|
275
|
+
defaultClient.clearCache();
|
|
276
|
+
}
|
|
277
|
+
//# sourceMappingURL=osv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"osv.js","sourceRoot":"","sources":["../../src/feeds/osv.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-engine.d.ts","sourceRoot":"","sources":["../src/focus-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA2B,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-engine.d.ts","sourceRoot":"","sources":["../src/focus-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,aAAa,EACb,UAAU,EACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAA2B,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AA2DhF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAKT;AAMD,qBAAa,WAAY,YAAW,eAAe;IACjD,QAAQ,CAAC,IAAI,WAAW;IAExB,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAA6B;IAE3C,kEAAkE;IAClE,OAAO,CAAC,QAAQ,CAAiC;IAEjD,sEAAsE;IACtE,OAAO,CAAC,SAAS,CAAwC;IAEzD,8EAA8E;IAC9E,OAAO,CAAC,qBAAqB,CAA6B;IAE1D;;;OAGG;IACH,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAUlC,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCjE,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsEjC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAoMd,aAAa;YA8Bb,wBAAwB;IA+BtC,IAAI,IAAI,IAAI;IAeN,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAqG/B,WAAW,IAAI,YAAY;IA0D3B,gBAAgB,IAAI,aAAa;IAwBjC;;;OAGG;IACH,OAAO,CAAC,aAAa;CAStB"}
|
package/dist/focus-engine.js
CHANGED
|
@@ -37,6 +37,15 @@ import { runFocusLoopOnce } from './focus-loop.js';
|
|
|
37
37
|
import { runVerificationTick } from './verification-engine.js';
|
|
38
38
|
import { runMergeBackTick } from './merge-back-loop.js';
|
|
39
39
|
import { runDriftEvalTick, runPendingDriftEvalRequestsTick } from './drift-eval-loop.js';
|
|
40
|
+
import { buildDefaultSecurityScanDeps, registerScanner, runSecurityScanTick, } from './security-scan-engine.js';
|
|
41
|
+
import { depsScanner } from './scanners/deps.js';
|
|
42
|
+
import { signaturesScanner } from './scanners/signatures.js';
|
|
43
|
+
import { workflowScanner } from './scanners/workflow.js';
|
|
44
|
+
import { buildDefaultSuppressionExpirySweepDeps, runSuppressionExpirySweep, } from './security-rescan-resolution.js';
|
|
45
|
+
// Self-register built-in scanners so the default deps surface them.
|
|
46
|
+
registerScanner(depsScanner);
|
|
47
|
+
registerScanner(signaturesScanner);
|
|
48
|
+
registerScanner(workflowScanner);
|
|
40
49
|
// ---------------------------------------------------------------------------
|
|
41
50
|
// Loop activation helper
|
|
42
51
|
// ---------------------------------------------------------------------------
|
|
@@ -286,6 +295,44 @@ export class FocusEngine {
|
|
|
286
295
|
else {
|
|
287
296
|
console.log('Drift-eval loop tick: disabled (TELORA_DRIFT_EVAL_LOOP=0)');
|
|
288
297
|
}
|
|
298
|
+
// Security scan loop (per-product cron cadence inside).
|
|
299
|
+
// Pluggable scanner engine: deps / signatures / workflow.
|
|
300
|
+
// Opt-out via TELORA_SECURITY_SCAN_LOOP=0; default ON.
|
|
301
|
+
// Cadence configurable via TELORA_SECURITY_SCAN_INTERVAL_HOURS; default 24 (daily).
|
|
302
|
+
if (shouldRunLoop('TELORA_SECURITY_SCAN_LOOP')) {
|
|
303
|
+
const intervalHoursRaw = process.env.TELORA_SECURITY_SCAN_INTERVAL_HOURS;
|
|
304
|
+
const parsedHours = intervalHoursRaw !== undefined ? Number(intervalHoursRaw) : NaN;
|
|
305
|
+
const intervalHours = Number.isFinite(parsedHours) && parsedHours > 0 ? parsedHours : 24;
|
|
306
|
+
const intervalMs = Math.round(intervalHours * 3_600_000);
|
|
307
|
+
console.log(`Security scan loop tick: enabled, every ${intervalHours}h ` +
|
|
308
|
+
'(set TELORA_SECURITY_SCAN_LOOP=0 to disable, ' +
|
|
309
|
+
'TELORA_SECURITY_SCAN_INTERVAL_HOURS=<hours> to retune)');
|
|
310
|
+
const securityScanDeps = buildDefaultSecurityScanDeps(config);
|
|
311
|
+
this.intervals.push(safeInterval(async () => {
|
|
312
|
+
try {
|
|
313
|
+
await runSecurityScanTick(securityScanDeps);
|
|
314
|
+
}
|
|
315
|
+
catch (err) {
|
|
316
|
+
console.warn('[security-scan-loop] tick failed:', err.message);
|
|
317
|
+
}
|
|
318
|
+
}, intervalMs, 'security-scan-loop'));
|
|
319
|
+
// Suppression-expiry sweep -- piggybacks on the security scan
|
|
320
|
+
// loop activation so a single env flag controls the full surface.
|
|
321
|
+
// Runs every 5 minutes: any suppression whose expires_at has
|
|
322
|
+
// passed is flipped back to status='open' with an audit row.
|
|
323
|
+
const suppressionSweepDeps = buildDefaultSuppressionExpirySweepDeps();
|
|
324
|
+
this.intervals.push(safeInterval(async () => {
|
|
325
|
+
try {
|
|
326
|
+
await runSuppressionExpirySweep(suppressionSweepDeps);
|
|
327
|
+
}
|
|
328
|
+
catch (err) {
|
|
329
|
+
console.warn('[security-suppression-expiry-sweep] tick failed:', err.message);
|
|
330
|
+
}
|
|
331
|
+
}, 300_000, 'security-suppression-expiry-sweep'));
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
console.log('Security scan loop tick: disabled (TELORA_SECURITY_SCAN_LOOP=0)');
|
|
335
|
+
}
|
|
289
336
|
console.log('Focus engine started');
|
|
290
337
|
}
|
|
291
338
|
// -----------------------------------------------------------------------
|
package/dist/focus-engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-engine.js","sourceRoot":"","sources":["../src/focus-engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,OAAO,EAAE,YAAY,EAAE,SAAS,EAAoB,MAAM,qBAAqB,CAAC;AAEhF,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACtH,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,YAAY,GACb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,YAAY,IAAI,oBAAoB,GACrC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,YAAY,IAAI,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,+BAA+B,EAAE,MAAM,sBAAsB,CAAC;AAEzF,8EAA8E;AAC9E,yBAAyB;AACzB,8EAA8E;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,aAAa,CAC3B,UAAkB,EAClB,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,GAAG,KAAK,GAAG,CAAC;AACrB,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,OAAO,WAAW;IACb,IAAI,GAAG,OAAO,CAAC;IAExB,wCAAwC;IAChC,MAAM,GAAwB,IAAI,CAAC;IAE3C,kEAAkE;IAC1D,QAAQ,GAA4B,IAAI,CAAC;IAEjD,sEAAsE;IAC9D,SAAS,GAAqC,EAAE,CAAC;IAEzD,8EAA8E;IACtE,qBAAqB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1D;;;OAGG;IACH,WAAW,CAAC,GAAqB;QAC/B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1B,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,0EAA0E;IAC1E,OAAO;IACP,0EAA0E;IAE1E,KAAK,CAAC,IAAI,CAAC,MAA4C;QACrD,oEAAoE;QACpE,sEAAsE;QACtE,IAAI,CAAC,MAAM,GAAG,MAAiC,CAAC;QAEhD,yBAAyB;QACzB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5B,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC/C,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE1B,gDAAgD;QAChD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,MAAM,mBAAmB,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAE5C,+CAA+C;QAC/C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;QAED,qDAAqD;QACrD,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEjC,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACxC,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,0EAA0E;IAC1E,mBAAmB;IACnB,0EAA0E;IAE1E,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAEtD,sEAAsE;QACtE,wEAAwE;QACxE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC7C,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CACV,qCAAqC,OAAO,CAAC,EAAE,eAAe,EAC9D,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAClC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CACV,+CAA+C,OAAO,CAAC,EAAE,eAAe,EACxE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,wFAAwF;QACxF,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC7C,MAAM,yBAAyB,CAAC,EAAE,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CACV,6CAA6C,OAAO,CAAC,EAAE,eAAe,EACtE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC7C,MAAM,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CACV,+CAA+C,OAAO,CAAC,EAAE,eAAe,EACxE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,kCAAkC;QAClC,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CACV,yCAAyC,EACzC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACjD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,QAAQ;IACR,0EAA0E;IAE1E,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAE3C,kBAAkB;QAClB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACrC,qBAAqB,EAAE,CAAC;QACxB,oBAAoB,EAAE,CAAC;QAEvB,kBAAkB;QAClB,MAAM,cAAc,EAAE,CAAC;QAEvB,8CAA8C;QAC9C,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,KAAK,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC/D,IAAI,CAAC,EAAE,aAAa;gBAAE,yBAAyB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAEnB,wCAAwC;QACxC,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,mBAAmB,EAAE,CAAC;QAE5B,6DAA6D;QAC7D,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,YAAY,CAAC,KAAK,IAAI,EAAE;YACtB,MAAM,YAAY,EAAE,CAAC;YACrB,MAAM,mBAAmB,EAAE,CAAC;QAC9B,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAC3B,CAAC;QAEF,gFAAgF;QAChF,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,YAAY,CAAC,KAAK,IAAI,EAAE;YACtB,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACtC,MAAM,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAC7C,MAAM,YAAY,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,CAC3B,CAAC;QAEF,sCAAsC;QACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,YAAY,CAAC,KAAK,IAAI,EAAE;YACtB,MAAM,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACvD,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAC7B,CAAC;QAEF,6CAA6C;QAC7C,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,YAAY,CAAC,KAAK,IAAI,EAAE;YACtB,MAAM,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC9C,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CACjC,CAAC;QAEF,2CAA2C;QAC3C,KAAK,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE3D,uDAAuD;QACvD,qFAAqF;QACrF,IAAI,aAAa,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,YAAY,CAAC,KAAK,IAAI,EAAE;gBACtB,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CACzB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QACjE,CAAC;QAED,uEAAuE;QACvE,4FAA4F;QAC5F,IAAI,aAAa,CAAC,0BAA0B,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;YAC3F,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,YAAY,CAAC,KAAK,IAAI,EAAE;gBACtB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;oBACjD,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;wBACvB,OAAO,CAAC,GAAG,CACT,gCAAgC,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,OAAO,cAAc,MAAM,CAAC,SAAS,EAAE,CACzJ,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,6BAA6B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAChC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC/E,CAAC;QAED,uEAAuE;QACvE,qEAAqE;QACrE,mEAAmE;QACnE,wCAAwC;QACxC,IAAI,aAAa,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,YAAY,CAAC,KAAK,IAAI,EAAE;gBACtB,IAAI,CAAC;oBACH,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAC9B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAC3E,CAAC;QAED,4DAA4D;QAC5D,sEAAsE;QACtE,yEAAyE;QACzE,cAAc;QACd,IAAI,aAAa,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;YACvF,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,YAAY,CAAC,KAAK,IAAI,EAAE;gBACtB,IAAI,CAAC;oBACH,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAC/B,CAAC;YAEF,+CAA+C;YAC/C,iEAAiE;YACjE,oEAAoE;YACpE,mDAAmD;YACnD,IAAI,CAAC,SAAS,CAAC,IAAI,CACjB,YAAY,CAAC,KAAK,IAAI,EAAE;gBACtB,IAAI,CAAC;oBACH,MAAM,+BAA+B,CAAC,MAAM,CAAC,CAAC;gBAChD,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,IAAI,CAAC,wCAAwC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAClC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACtC,CAAC;IAED,0EAA0E;IAC1E,4CAA4C;IAC5C,0EAA0E;IAElE,KAAK,CAAC,aAAa,CAAC,MAAoB;QAC9C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC1E,qEAAqE;gBACrE,+CAA+C;gBAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,KAAK,IAAI,CAAC,CAAC;gBACtE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC;wBACH,MAAM,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBACzC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,IAAI,CACV,sCAAsC,KAAK,CAAC,QAAQ,GAAG,EACtD,GAAa,CAAC,OAAO,CACvB,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CACV,sDAAsD,OAAO,CAAC,EAAE,GAAG,EAClE,GAAa,CAAC,OAAO,CACvB,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,wBAAwB;IACxB,0EAA0E;IAElE,KAAK,CAAC,wBAAwB,CAAC,MAAoB;QACzD,8DAA8D;QAC9D,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,0CAA0C;gBAC1C,IAAI,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;oBAC/D,QAAQ,GAAG,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,WAAW,EAAE,CAAC;oBACrE,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBACvD,CAAC;gBAED,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBAC5D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;wBACpD,GAAG,CAAC;wBACJ,eAAe,EAAE,EAAE;qBACpB,CAAC,CAAC,CAAC,CAAC;oBACL,2CAA2C;oBAC3C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,uDAAuD,OAAO,CAAC,EAAE,GAAG,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;YAC9G,CAAC;QACH,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,OAAO;IACP,0EAA0E;IAE1E,IAAI;QACF,2BAA2B;QAC3B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,iCAAiC;QACjC,aAAa,EAAE,CAAC;IAClB,CAAC;IAED,0EAA0E;IAC1E,WAAW;IACX,0EAA0E;IAE1E,KAAK,CAAC,QAAQ;QACZ,4CAA4C;QAC5C,MAAM,aAAa,EAAE,CAAC;QAEtB,uDAAuD;QACvD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QACrC,IAAI,WAAW,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACzB,yEAAyE;YACzE,MAAM,aAAa,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpE,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;aAClC,CAAC,CAAC,CAAC;YAEJ,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,IAAI,wBAAwB,CAAC,CAAC;YACrE,iBAAiB,EAAE,CAAC;YAEpB,0DAA0D;YAC1D,MAAM,OAAO,CAAC,UAAU,CACtB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAC7D,CAAC;YAEF,gEAAgE;YAChE,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,IAAI,CAAC;wBACH,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACtD,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,IAAI,CACV,0BAA0B,IAAI,CAAC,SAAS,MAAO,GAAa,CAAC,OAAO,EAAE,CACvE,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,0EAA0E;YAC1E,MAAM,cAAc,GAAG,cAAc,EAAE,CAAC;YACxC,IAAI,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBAC5B,OAAO,CAAC,GAAG,CACT,kBAAkB,cAAc,CAAC,IAAI,oCAAoC,CAC1E,CAAC;gBACF,MAAM,OAAO,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC;qBACzC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC;qBACpC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,SAAS,CACP,GAAG,EAAE,CACH,aAAa,CAAC,IAAI,CAAC,aAAc,EAAE;oBACjC,MAAM,EAAE,QAAQ;oBAChB,WAAW,EACT,mDAAmD;oBACrD,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACnC,CAAC,EACJ;oBACE,WAAW,EAAE,CAAC;oBACd,WAAW,EAAE,IAAI;oBACjB,KAAK,EAAE,oBAAoB,IAAI,CAAC,aAAa,EAAE;iBAChD,CACF,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACd,OAAO,CAAC,IAAI,CACV,4BAA4B,IAAI,CAAC,aAAa,GAAG,EAChD,GAAa,CAAC,OAAO,CACvB,CACF,CACF,CAAC;gBACJ,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;QACzC,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CACT,eAAe,aAAa,CAAC,IAAI,gCAAgC,CAClE,CAAC;YAEF,+CAA+C;YAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;gBAChE,kBAAkB,EAAE,CAAC;YACvB,CAAC,EAAE,MAAM,CAAC,CAAC;YAEX,sBAAsB;YACtB,OAAO,gBAAgB,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;YAC5D,CAAC;YAED,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,sDAAsD;QACtD,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACnD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAE1D,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAED,0EAA0E;IAC1E,cAAc;IACd,0EAA0E;IAE1E,WAAW;QACT,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEjD,2BAA2B;QAC3B,IAAI,MAAM,GAA2B,SAAS,CAAC;QAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YACzB,MAAM,GAAG,WAAW,CAAC;QACvB,CAAC;QAED,gBAAgB;QAChB,MAAM,WAAW,GAAmC,EAAE,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAC/C,CAAC;YACF,WAAW,CAAC,IAAI,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,WAAW;gBACX,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI;aAC1C,CAAC,CAAC;QACL,CAAC;QAED,MAAM,YAAY,GAAmC,EAAE,CAAC;QACxD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAChD,CAAC;YACF,YAAY,CAAC,IAAI,CAAC;gBAChB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,WAAW;gBACX,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,MAAM;YACN,eAAe;YACf,OAAO,EAAE;gBACP,WAAW,EAAE,KAAK,CAAC,IAAI;gBACvB,kBAAkB,EAAE,MAAM,CAAC,IAAI;gBAC/B,KAAK,EAAE,WAAW;gBAClB,MAAM,EAAE,YAAY;aACrB;SACF,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,mBAAmB;IACnB,0EAA0E;IAE1E,gBAAgB;QACd,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,oBAAoB,EAAE,CAAC;QAEzC,wEAAwE;QACxE,IAAI,qBAAqB,GAAG,CAAC,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAClC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,qBAAqB,EAAE,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,qBAAqB,IAAI,MAAM,CAAC,IAAI,CAAC;QAErC,OAAO;YACL,qBAAqB;YACrB,eAAe,EAAE,SAAS,CAAC,IAAI;SAChC,CAAC;IACJ,CAAC;IAED,0EAA0E;IAC1E,kBAAkB;IAClB,0EAA0E;IAE1E;;;OAGG;IACK,aAAa,CAAC,MAAc;QAClC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,eAAe,MAAM,2BAA2B;gBAC9C,iDAAiD,CACpD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"focus-engine.js","sourceRoot":"","sources":["../src/focus-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/focus-executor.d.ts
CHANGED
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
*/
|
|
23
23
|
import type { DaemonConfig, AgentRole, PipelineConfig } from './types.js';
|
|
24
24
|
import { type ResourceGovernor } from '@telora/daemon-core';
|
|
25
|
+
import { getFocusDeliveries } from './queries/focuses.js';
|
|
25
26
|
import './assembly-resolvers.js';
|
|
26
27
|
export { getActiveTeams, hasActiveTeam, getActiveTeamCount, } from './focus-team-state.js';
|
|
27
28
|
export { mergeFocusBranch, } from './focus-merge.js';
|
|
@@ -31,6 +32,58 @@ export { terminateTeam, waitForTeamExit, terminateAllTeams, detectDeactivatedFoc
|
|
|
31
32
|
export type { CompletionEventContext } from './focus-completion-event.js';
|
|
32
33
|
/** Inject the resource governor for global concurrency limiting. */
|
|
33
34
|
export declare function initGovernor(gov: ResourceGovernor): void;
|
|
35
|
+
/**
|
|
36
|
+
* Result of the pre-spawn guard. Discriminated union so the caller can
|
|
37
|
+
* distinguish between "no work yet, spawn a planning team" and "actionable
|
|
38
|
+
* deliveries are queued, run them" without conflating null with empty.
|
|
39
|
+
*/
|
|
40
|
+
export type SpawnDecision = {
|
|
41
|
+
kind: 'planning';
|
|
42
|
+
} | {
|
|
43
|
+
kind: 'execute';
|
|
44
|
+
deliveries: Awaited<ReturnType<typeof getFocusDeliveries>>;
|
|
45
|
+
} | {
|
|
46
|
+
kind: 'skip';
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Pre-spawn guard: rank-ordered walk that collects every agent-actionable
|
|
50
|
+
* delivery into the spawn set.
|
|
51
|
+
*
|
|
52
|
+
* "Actionable" and "blocking" are independent properties of a status:
|
|
53
|
+
*
|
|
54
|
+
* - actionable = `isStatusAgentActionable(status)` -- queued | coding |
|
|
55
|
+
* awaiting_verify. Work the team can pick up.
|
|
56
|
+
* - blocking = `isStatusBlocking(status)` -- statuses that gate
|
|
57
|
+
* subsequent ranks (queued, coding, planning, paused).
|
|
58
|
+
*
|
|
59
|
+
* A delivery may be actionable and blocking (queued, coding -- the common
|
|
60
|
+
* case), actionable and non-blocking (`awaiting_verify` -- has remediation
|
|
61
|
+
* work from a review pass, but the next-ranked queued delivery should not
|
|
62
|
+
* wait on it), or non-actionable and blocking (planning, paused -- gates
|
|
63
|
+
* the queue and the team has nothing to do here).
|
|
64
|
+
*
|
|
65
|
+
* Walk semantics:
|
|
66
|
+
* - Collect every actionable delivery into the spawn set.
|
|
67
|
+
* - Stop the walk when we hit the first blocking-and-not-actionable status
|
|
68
|
+
* (planning, paused). Lower-ranked deliveries past this point are gated.
|
|
69
|
+
* - Skip past non-blocking non-actionable statuses (done, cancelled, verify,
|
|
70
|
+
* in_review) without breaking the walk.
|
|
71
|
+
*
|
|
72
|
+
* Returns:
|
|
73
|
+
* - 'planning' when the focus has zero deliveries (agent will scope them).
|
|
74
|
+
* - 'execute' with the collected actionable deliveries.
|
|
75
|
+
* - 'skip' when the walk found zero actionable deliveries.
|
|
76
|
+
*
|
|
77
|
+
* Why awaiting_verify must be in the spawn set: the auto-review loop
|
|
78
|
+
* routes a delivery from `in_review` -> `awaiting_verify` when the review
|
|
79
|
+
* agent finds remediation work, clears `review_requested_at`, and emits a
|
|
80
|
+
* `review_completed` loop trigger. The next poll re-derives phase from
|
|
81
|
+
* `ACTIVE_STATUSES` (which includes awaiting_verify), so the focus is
|
|
82
|
+
* eligible to spawn. If this guard then skips past `awaiting_verify`, no
|
|
83
|
+
* team ever picks up the remediation issues and the loop dies after the
|
|
84
|
+
* first pass. See delivery ac5c69f7.
|
|
85
|
+
*/
|
|
86
|
+
export declare function findActionableDeliveries(deliveries: Awaited<ReturnType<typeof getFocusDeliveries>>, focusName: string): SpawnDecision;
|
|
34
87
|
/**
|
|
35
88
|
* Generate branch name for focus-level work.
|
|
36
89
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"focus-executor.d.ts","sourceRoot":"","sources":["../src/focus-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EAET,cAAc,EACf,MAAM,YAAY,CAAC;AASpB,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"focus-executor.d.ts","sourceRoot":"","sources":["../src/focus-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EAET,cAAc,EACf,MAAM,YAAY,CAAC;AASpB,OAAO,EAAwC,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAIlG,OAAO,EAAE,kBAAkB,EAAsG,MAAM,sBAAsB,CAAC;AAM9J,OAAO,yBAAyB,CAAC;AAyBjC,OAAO,EACL,cAAc,EACd,aAAa,EACb,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAM1E,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAExD;AAID;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAA;CAAE,GAC/E;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,EAC1D,SAAS,EAAE,MAAM,GAChB,aAAa,CA6Bf;AAID;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAKnG;AA+BD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA2df"}
|