instar 1.3.993 → 1.3.995
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/ProjectRoundExecution.d.ts +48 -6
- package/dist/core/ProjectRoundExecution.d.ts.map +1 -1
- package/dist/core/ProjectRoundExecution.js +134 -30
- package/dist/core/ProjectRoundExecution.js.map +1 -1
- package/dist/core/channelRegistry.d.ts +17 -0
- package/dist/core/channelRegistry.d.ts.map +1 -1
- package/dist/core/channelRegistry.js +7 -1
- package/dist/core/channelRegistry.js.map +1 -1
- package/dist/core/instarChannels.d.ts.map +1 -1
- package/dist/core/instarChannels.js +4 -0
- package/dist/core/instarChannels.js.map +1 -1
- package/dist/core/userChannels.d.ts +73 -0
- package/dist/core/userChannels.d.ts.map +1 -0
- package/dist/core/userChannels.js +138 -0
- package/dist/core/userChannels.js.map +1 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +27 -52
- package/dist/server/routes.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +46 -46
- package/upgrades/1.3.994.md +69 -0
- package/upgrades/1.3.995.md +75 -0
- package/upgrades/side-effects/round-completion-verifies-merged.md +137 -0
- package/upgrades/side-effects/user-channel-liveness.md +116 -0
|
@@ -73,14 +73,39 @@ export interface RunRoundInput {
|
|
|
73
73
|
/** Max resume attempts on transient failures; defaults to 3. */
|
|
74
74
|
maxResumeAttempts?: number;
|
|
75
75
|
/**
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
76
|
+
* Seam for verifying per-item artifacts. Defaults to the REAL git-backed
|
|
77
|
+
* `verifyMergedItemsViaGit`; tests inject a stub.
|
|
78
|
+
*
|
|
79
|
+
* It returns the three-state verdict deliberately — `verified` /
|
|
80
|
+
* `regressed` / `unverifiable`. A flat `Set<string>` cannot express "I
|
|
81
|
+
* could not check", so every item merely absent from it reads as
|
|
82
|
+
* not-merged, and this runner would respawn a child to redo work that may
|
|
83
|
+
* already be done. See the verdict handling in `runRound` below.
|
|
84
|
+
*
|
|
85
|
+
* HISTORY: this defaulted to a no-op that returned an EMPTY SET
|
|
86
|
+
* unconditionally, documented in place as "production callers should pass
|
|
87
|
+
* a real one". No production caller ever did. The consequence was that the
|
|
88
|
+
* all-items-merged stop condition could never fire, `outcome: 'complete'`
|
|
89
|
+
* was unreachable, and a round whose items were all merged still spawned a
|
|
90
|
+
* child to redo them. The default is now the real verifier precisely so a
|
|
91
|
+
* caller cannot forget: a seam whose default silently reports "nothing
|
|
92
|
+
* verified" is indistinguishable, to its caller, from "nothing is merged".
|
|
93
|
+
*/
|
|
94
|
+
verifyMergedItems?: (childIds: string[]) => Promise<MergedVerificationResult>;
|
|
95
|
+
/**
|
|
96
|
+
* Canonical-main ref for the merge-base check. Defaults to the resolved
|
|
97
|
+
* canonical ref (see `resolveCanonicalMainRef`), which matters on a
|
|
98
|
+
* fork-origin agent home where `origin/main` does not contain the merge
|
|
99
|
+
* commit and every healthy item would otherwise read as regressed.
|
|
80
100
|
*/
|
|
81
|
-
|
|
101
|
+
mergeBaseBranch?: string;
|
|
82
102
|
}
|
|
83
|
-
|
|
103
|
+
/**
|
|
104
|
+
* `unverifiable` is NOT a soft `partially-complete`. It means the runner could
|
|
105
|
+
* not establish whether the round's work is done, so it has no verdict to
|
|
106
|
+
* record and no basis to redo the work either.
|
|
107
|
+
*/
|
|
108
|
+
export type RoundOutcome = 'complete' | 'partially-complete' | 'failed' | 'halted' | 'unverifiable';
|
|
84
109
|
export interface RunRoundResult {
|
|
85
110
|
outcome: RoundOutcome;
|
|
86
111
|
/** Verified-merged itemIds. */
|
|
@@ -106,6 +131,23 @@ export interface RunRoundDeps {
|
|
|
106
131
|
* Run one round to completion. Caller is expected to preflight first.
|
|
107
132
|
*/
|
|
108
133
|
export declare function runRound(input: RunRoundInput, deps: RunRoundDeps): Promise<RunRoundResult>;
|
|
134
|
+
/**
|
|
135
|
+
* Resolve the ref that actually holds canonical `main` for this checkout.
|
|
136
|
+
*
|
|
137
|
+
* On a fork-origin agent home `origin/main` does NOT contain the canonical
|
|
138
|
+
* merge commit, so a merge-base check against it reports every healthy item
|
|
139
|
+
* as regressed. Falls back to the documented `origin/main` when `gh` or the
|
|
140
|
+
* remote mapping is unavailable (canonical-origin installs).
|
|
141
|
+
*
|
|
142
|
+
* Lives here rather than in the server layer because BOTH consumers — the
|
|
143
|
+
* lazy reconciler in `routes.ts` and this round runner — need the same
|
|
144
|
+
* resolution, and a core module must not import from `server/`.
|
|
145
|
+
*
|
|
146
|
+
* READ-ONLY: `gh repo view` + `git remote -v` (the latter via
|
|
147
|
+
* SafeGitExecutor.readSync — `remote` is a READONLY_GIT_VERB, shape-checked
|
|
148
|
+
* to list/get-url only).
|
|
149
|
+
*/
|
|
150
|
+
export declare function resolveCanonicalMainRef(repoPath: string): string;
|
|
109
151
|
/**
|
|
110
152
|
* Three-state outcome. `unverifiable` is NOT a soft `regressed`: it means the
|
|
111
153
|
* check could not be run at all, and collapsing the two is how a refusal becomes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectRoundExecution.d.ts","sourceRoot":"","sources":["../../src/core/ProjectRoundExecution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAIH,OAAO,KAAK,EAAc,iBAAiB,EAAe,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectRoundExecution.d.ts","sourceRoot":"","sources":["../../src/core/ProjectRoundExecution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAIH,OAAO,KAAK,EAAc,iBAAiB,EAAe,MAAM,wBAAwB,CAAC;AAMzF,sEAAsE;AACtE,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAC9C,gDAAgD;AAChD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAErB,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;;;;;;;;;;;;;;;OAkBG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAE9E;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,oBAAoB,GACpB,QAAQ,GACR,QAAQ,GACR,cAAc,CAAC;AAEnB,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,YAAY,CAAC;IACtB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,oFAAoF;IACpF,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,mFAAmF;IACnF,aAAa,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,CA0NhG;AAiLD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2ChE;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,gEAAgE;IAChE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,gFAAgF;IAChF,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE,iBAAiB;AAC1B;mFACmF;AACnF,eAAe,GAAE,MAAsB,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAmCnC"}
|
|
@@ -33,10 +33,11 @@
|
|
|
33
33
|
* for group signals) targets only the child's group — never reaps
|
|
34
34
|
* the runner.
|
|
35
35
|
*/
|
|
36
|
-
import { spawn } from 'node:child_process';
|
|
36
|
+
import { spawn, execFileSync } from 'node:child_process';
|
|
37
37
|
import { ProjectRoundLock } from './ProjectRoundLock.js';
|
|
38
38
|
import { ProjectRoundWorktrees } from './ProjectRoundWorktrees.js';
|
|
39
39
|
import { SafeGitExecutor } from './SafeGitExecutor.js';
|
|
40
|
+
import { withSyncOp } from './InFlightSyncOpMarker.js';
|
|
40
41
|
/** Per-spec defaults. Tests dial both down to keep the suite fast. */
|
|
41
42
|
export const DEFAULT_POLL_INTERVAL_MS = 60_000;
|
|
42
43
|
export const DEFAULT_SIGTERM_GRACE_MS = 5_000;
|
|
@@ -49,7 +50,25 @@ export async function runRound(input, deps) {
|
|
|
49
50
|
const pollIntervalMs = input.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
|
|
50
51
|
const sigtermGraceMs = input.sigtermGraceMs ?? DEFAULT_SIGTERM_GRACE_MS;
|
|
51
52
|
const maxResumeAttempts = input.maxResumeAttempts ?? DEFAULT_MAX_RESUME_ATTEMPTS;
|
|
52
|
-
|
|
53
|
+
/**
|
|
54
|
+
* The items that are GENUINELY uncheckable: absent from `verified` for a
|
|
55
|
+
* reason the runner could not establish, AND carrying a merge commit that
|
|
56
|
+
* says work may already have landed.
|
|
57
|
+
*
|
|
58
|
+
* An item with no `mergeCommitOid` is also reported `unverifiable` by the
|
|
59
|
+
* git verifier, but that is not the same claim — it means nothing has landed
|
|
60
|
+
* yet, which is ordinary. Splitting on EVIDENCE rather than on the reason
|
|
61
|
+
* text keeps a reworded message from silently changing control flow.
|
|
62
|
+
*
|
|
63
|
+
* Defined once and used at BOTH decision points. The first draft of this
|
|
64
|
+
* change inlined it at the pre-spawn check only, and the post-exit check
|
|
65
|
+
* kept the old conflation — caught by the test that asserts a fresh round
|
|
66
|
+
* still spawns.
|
|
67
|
+
*/
|
|
68
|
+
const uncheckable = (ids, v) => ids.filter((id) => v.unverifiable.has(id) && Boolean(input.tracker.get(id)?.mergeCommitOid));
|
|
69
|
+
const mergeBaseBranch = input.mergeBaseBranch ?? resolveCanonicalMainRef(input.targetRepoPath);
|
|
70
|
+
const verifyMergedItems = input.verifyMergedItems ??
|
|
71
|
+
((ids) => verifyMergedItemsViaGit(input.targetRepoPath, ids, input.tracker, mergeBaseBranch));
|
|
53
72
|
const lock = new ProjectRoundLock({ stateDir: deps.stateDir });
|
|
54
73
|
// Step 1: acquire lock.
|
|
55
74
|
const acquired = lock.acquire(input.projectId, input.roundIndex);
|
|
@@ -112,12 +131,36 @@ export async function runRound(input, deps) {
|
|
|
112
131
|
break;
|
|
113
132
|
}
|
|
114
133
|
// Compute current stop condition: itemIds verified-merged.
|
|
115
|
-
const
|
|
116
|
-
if (lastItemIds.every((id) => verified.has(id))) {
|
|
134
|
+
const verdict = await verifyMergedItems(lastItemIds);
|
|
135
|
+
if (lastItemIds.every((id) => verdict.verified.has(id))) {
|
|
117
136
|
outcome = 'complete';
|
|
118
137
|
mergedItemIds = [...lastItemIds];
|
|
119
138
|
break;
|
|
120
139
|
}
|
|
140
|
+
// "I could not check" is not "not done" — but neither is it a reason to
|
|
141
|
+
// stall a round that has simply not been worked yet.
|
|
142
|
+
//
|
|
143
|
+
// `verifyMergedItemsViaGit` reports `unverifiable` for BOTH of these:
|
|
144
|
+
// (a) the item records no mergeCommitOid at all — nothing has landed
|
|
145
|
+
// yet, which is the ordinary state of a fresh round. Spawning is
|
|
146
|
+
// exactly right here.
|
|
147
|
+
// (b) the item DOES record a merge commit, but git could not answer
|
|
148
|
+
// (guard refusal, missing binary, bad ref). Here the work may
|
|
149
|
+
// already be done, and spawning would redo it.
|
|
150
|
+
//
|
|
151
|
+
// They are told apart by EVIDENCE — whether the item carries a
|
|
152
|
+
// mergeCommitOid — not by matching the reason text, which would make a
|
|
153
|
+
// reworded message silently change the control flow.
|
|
154
|
+
const uncheckableWithEvidence = uncheckable(lastItemIds, verdict);
|
|
155
|
+
if (uncheckableWithEvidence.length > 0) {
|
|
156
|
+
outcome = 'unverifiable';
|
|
157
|
+
unmergedItemIds = lastItemIds.filter((id) => !verdict.verified.has(id));
|
|
158
|
+
reason =
|
|
159
|
+
`could not verify ${uncheckableWithEvidence.length} item(s) that DO record a merge commit ` +
|
|
160
|
+
`(${uncheckableWithEvidence.join(', ')}); refusing to respawn work that may already be done, ` +
|
|
161
|
+
'and recording no round verdict';
|
|
162
|
+
break;
|
|
163
|
+
}
|
|
121
164
|
// Spawn the autonomous child with stop condition + ids in env.
|
|
122
165
|
const child = spawnAutonomousChild(input, lastItemIds);
|
|
123
166
|
const exit = await waitForExitOrPollChange(child, input.tracker, input.projectId, input.roundIndex, lastItemIds, pollIntervalMs, sigtermGraceMs);
|
|
@@ -143,13 +186,29 @@ export async function runRound(input, deps) {
|
|
|
143
186
|
// Natural exit.
|
|
144
187
|
if (exit.kind === 'exited' && exit.code === 0) {
|
|
145
188
|
// Step 6: verify per-item artifacts.
|
|
146
|
-
const
|
|
147
|
-
mergedItemIds = lastItemIds.filter((id) =>
|
|
148
|
-
unmergedItemIds = lastItemIds.filter((id) => !
|
|
149
|
-
|
|
189
|
+
const final = await verifyMergedItems(lastItemIds);
|
|
190
|
+
mergedItemIds = lastItemIds.filter((id) => final.verified.has(id));
|
|
191
|
+
unmergedItemIds = lastItemIds.filter((id) => !final.verified.has(id));
|
|
192
|
+
const finalUncheckable = uncheckable(unmergedItemIds, final);
|
|
193
|
+
if (unmergedItemIds.length === 0) {
|
|
150
194
|
outcome = 'complete';
|
|
151
|
-
|
|
195
|
+
}
|
|
196
|
+
else if (finalUncheckable.length > 0) {
|
|
197
|
+
// At least one item RECORDS a merge commit the runner could not
|
|
198
|
+
// check. `partially-complete` asserts "this genuinely did not land",
|
|
199
|
+
// which that item cannot support — so no verdict is recorded.
|
|
200
|
+
//
|
|
201
|
+
// An item with no merge commit at all, by contrast, genuinely did
|
|
202
|
+
// not land after a clean child exit, and falls through to
|
|
203
|
+
// partially-complete below where it belongs.
|
|
204
|
+
outcome = 'unverifiable';
|
|
205
|
+
reason =
|
|
206
|
+
`child exited 0 but ${finalUncheckable.length} item(s) recording a merge commit ` +
|
|
207
|
+
`could not be checked (${finalUncheckable.join(', ')}); no round verdict recorded`;
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
152
210
|
outcome = 'partially-complete';
|
|
211
|
+
}
|
|
153
212
|
break;
|
|
154
213
|
}
|
|
155
214
|
// Non-zero exit → resume attempt.
|
|
@@ -201,12 +260,19 @@ async function recordOutcome(tracker, projectId, roundIndex, outcome) {
|
|
|
201
260
|
const proj = tracker.get(projectId);
|
|
202
261
|
if (!proj)
|
|
203
262
|
return;
|
|
263
|
+
// `unverifiable` has NO status. Every other outcome is a verdict the runner
|
|
264
|
+
// actually reached; this one is the absence of one, so the round keeps the
|
|
265
|
+
// status it had and gets asked again later. Mapping it onto `failed` or
|
|
266
|
+
// `partially-complete` would record a conclusion nothing established — the
|
|
267
|
+
// precise move that made a no-op verifier look like a healthy answer.
|
|
204
268
|
const map = {
|
|
205
269
|
complete: 'complete',
|
|
206
270
|
'partially-complete': 'partially-complete',
|
|
207
271
|
failed: 'failed',
|
|
208
272
|
halted: 'failed',
|
|
209
273
|
};
|
|
274
|
+
if (outcome === 'unverifiable')
|
|
275
|
+
return;
|
|
210
276
|
const newStatus = map[outcome];
|
|
211
277
|
const completedAt = new Date().toISOString();
|
|
212
278
|
const rounds = (proj.rounds ?? []).map((r, i) => i === roundIndex ? { ...r, status: newStatus, completedAt } : r);
|
|
@@ -315,29 +381,67 @@ function sleep(ms) {
|
|
|
315
381
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
316
382
|
}
|
|
317
383
|
/**
|
|
318
|
-
*
|
|
319
|
-
*
|
|
320
|
-
*
|
|
321
|
-
*
|
|
384
|
+
* Resolve the ref that actually holds canonical `main` for this checkout.
|
|
385
|
+
*
|
|
386
|
+
* On a fork-origin agent home `origin/main` does NOT contain the canonical
|
|
387
|
+
* merge commit, so a merge-base check against it reports every healthy item
|
|
388
|
+
* as regressed. Falls back to the documented `origin/main` when `gh` or the
|
|
389
|
+
* remote mapping is unavailable (canonical-origin installs).
|
|
322
390
|
*
|
|
323
|
-
*
|
|
324
|
-
*
|
|
325
|
-
*
|
|
326
|
-
*
|
|
327
|
-
*
|
|
328
|
-
*
|
|
391
|
+
* Lives here rather than in the server layer because BOTH consumers — the
|
|
392
|
+
* lazy reconciler in `routes.ts` and this round runner — need the same
|
|
393
|
+
* resolution, and a core module must not import from `server/`.
|
|
394
|
+
*
|
|
395
|
+
* READ-ONLY: `gh repo view` + `git remote -v` (the latter via
|
|
396
|
+
* SafeGitExecutor.readSync — `remote` is a READONLY_GIT_VERB, shape-checked
|
|
397
|
+
* to list/get-url only).
|
|
329
398
|
*/
|
|
330
|
-
function
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
//
|
|
334
|
-
//
|
|
335
|
-
//
|
|
336
|
-
//
|
|
337
|
-
//
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
399
|
+
export function resolveCanonicalMainRef(repoPath) {
|
|
400
|
+
const FALLBACK = 'origin/main';
|
|
401
|
+
try {
|
|
402
|
+
// `gh repo view` is a BLOCKING spawn and this runs inside the server
|
|
403
|
+
// process (the auto-advance poller calls runRound). It funnels through
|
|
404
|
+
// withSyncOp so the in-flight marker sees the stall instead of it looking
|
|
405
|
+
// like an unexplained event-loop freeze.
|
|
406
|
+
//
|
|
407
|
+
// In `routes.ts` this callsite sat on the chokepoint lint's frozen
|
|
408
|
+
// baseline — grandfathered, not blessed. Moving it into core made it a NEW
|
|
409
|
+
// violation, and the lint refused it. That refusal is the useful part: it
|
|
410
|
+
// stopped a pre-existing blocking hazard from spreading into a module the
|
|
411
|
+
// round runner calls on every pass.
|
|
412
|
+
const GH_ARGS = ['repo', 'view', '--json', 'nameWithOwner', '-q', '.nameWithOwner'];
|
|
413
|
+
const GH_OPTS = {
|
|
414
|
+
cwd: repoPath,
|
|
415
|
+
encoding: 'utf-8',
|
|
416
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
417
|
+
};
|
|
418
|
+
// The wrap must sit on the SAME LINE as the spawn: the chokepoint lint is a
|
|
419
|
+
// deliberately lexical, same-line matcher (it documents that it cannot prove
|
|
420
|
+
// runtime wrapping — that is the marker's own unit test's job). A cheap
|
|
421
|
+
// signal, not an authority, so it is satisfied literally.
|
|
422
|
+
const ghRepo = withSyncOp(() => execFileSync('gh', GH_ARGS, GH_OPTS)).trim();
|
|
423
|
+
if (!ghRepo)
|
|
424
|
+
return FALLBACK;
|
|
425
|
+
const remotesOut = SafeGitExecutor.readSync(['remote', '-v'], {
|
|
426
|
+
cwd: repoPath,
|
|
427
|
+
operation: 'ProjectRoundExecution.resolveCanonicalMainRef',
|
|
428
|
+
encoding: 'utf-8',
|
|
429
|
+
});
|
|
430
|
+
for (const line of remotesOut.split('\n')) {
|
|
431
|
+
// format: "<name>\t<url> (fetch)"
|
|
432
|
+
const m = /^(\S+)\s+(\S+)\s+\(fetch\)/.exec(line.trim());
|
|
433
|
+
if (!m)
|
|
434
|
+
continue;
|
|
435
|
+
const [, name, url] = m;
|
|
436
|
+
if (url.includes(ghRepo) || url.includes(`${ghRepo}.git`)) {
|
|
437
|
+
return `${name}/main`;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
return FALLBACK;
|
|
441
|
+
}
|
|
442
|
+
catch { /* @silent-fallback-ok: resolving the canonical-main ref is best-effort — gh missing / not-a-gh-repo / git error falls back to the documented `origin/main` default (the prior behavior), which the merge-base gate then re-validates. Not a degradation: it's the conservative default this resolver exists to refine, not replace. */
|
|
443
|
+
return FALLBACK;
|
|
444
|
+
}
|
|
341
445
|
}
|
|
342
446
|
/**
|
|
343
447
|
* Helper exported so callers can wire a SafeGit-backed verifier.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectRoundExecution.js","sourceRoot":"","sources":["../../src/core/ProjectRoundExecution.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectRoundExecution.js","sourceRoot":"","sources":["../../src/core/ProjectRoundExecution.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,8 +55,24 @@ export type ChannelState =
|
|
|
55
55
|
| 'unknown';
|
|
56
56
|
/** Which direction(s) a channel can actually carry traffic — the half-built case made explicit. */
|
|
57
57
|
export type ChannelDirection = 'bidirectional' | 'send-only' | 'receive-only' | 'none';
|
|
58
|
+
/**
|
|
59
|
+
* Who is on the other end. This exists because "which channel should I use?" is ONE question with
|
|
60
|
+
* two very different answers, and splitting it across two surfaces recreates the arbitrariness this
|
|
61
|
+
* registry was built to remove — a caller would have to already know which list to consult.
|
|
62
|
+
*
|
|
63
|
+
* The distinction is kept as DATA rather than as two registries because the choice between them is
|
|
64
|
+
* itself a routing decision: reaching a peer costs latency, reaching the operator costs their
|
|
65
|
+
* attention. A caller cannot weigh that trade-off if it can only see one side of it.
|
|
66
|
+
*/
|
|
67
|
+
export type ChannelAudience =
|
|
68
|
+
/** Another agent. */
|
|
69
|
+
'peer'
|
|
70
|
+
/** A human operator, on the surface they actually read. */
|
|
71
|
+
| 'user';
|
|
58
72
|
export interface ChannelDefinition {
|
|
59
73
|
id: string;
|
|
74
|
+
/** Who is on the other end — see ChannelAudience for why this is data, not two registries. */
|
|
75
|
+
audience: ChannelAudience;
|
|
60
76
|
/** What it is for, in the operator's terms. */
|
|
61
77
|
purpose: string;
|
|
62
78
|
/** When this channel is the right choice over the others. */
|
|
@@ -77,6 +93,7 @@ export interface ChannelProbeResult {
|
|
|
77
93
|
}
|
|
78
94
|
export interface ChannelReport extends ChannelProbeResult {
|
|
79
95
|
id: string;
|
|
96
|
+
audience: ChannelAudience;
|
|
80
97
|
purpose: string;
|
|
81
98
|
whenPreferred: string;
|
|
82
99
|
cost: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channelRegistry.d.ts","sourceRoot":"","sources":["../../src/core/channelRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH;;;GAGG;AACH,MAAM,MAAM,YAAY;AACtB,mCAAmC;AACjC,SAAS;AACX,4DAA4D;GAC1D,QAAQ;AACV,sFAAsF;GACpF,YAAY;AACd,6FAA6F;GAC3F,yBAAyB;AAC3B,8EAA8E;GAC5E,gBAAgB;AAClB,8EAA8E;GAC5E,SAAS,CAAC;AAEd,mGAAmG;AACnG,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC;AAEvF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,gGAAgG;IAChG,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,WAAW,EAAE,MAAM,CAAC;CACrB;AAmBD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,SAAS,iBAAiB,EAAE,EACzC,GAAG,GAAE,MAAM,MAAuC,GACjD,OAAO,CAAC,qBAAqB,CAAC,
|
|
1
|
+
{"version":3,"file":"channelRegistry.d.ts","sourceRoot":"","sources":["../../src/core/channelRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH;;;GAGG;AACH,MAAM,MAAM,YAAY;AACtB,mCAAmC;AACjC,SAAS;AACX,4DAA4D;GAC1D,QAAQ;AACV,sFAAsF;GACpF,YAAY;AACd,6FAA6F;GAC3F,yBAAyB;AAC3B,8EAA8E;GAC5E,gBAAgB;AAClB,8EAA8E;GAC5E,SAAS,CAAC;AAEd,mGAAmG;AACnG,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,WAAW,GAAG,cAAc,GAAG,MAAM,CAAC;AAEvF;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe;AACzB,qBAAqB;AACnB,MAAM;AACR,2DAA2D;GACzD,MAAM,CAAC;AAEX,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,8FAA8F;IAC9F,QAAQ,EAAE,eAAe,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,qGAAqG;IACrG,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,oFAAoF;IACpF,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,gGAAgG;IAChG,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,WAAW,EAAE,MAAM,CAAC;CACrB;AAmBD;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,SAAS,iBAAiB,EAAE,EACzC,GAAG,GAAE,MAAM,MAAuC,GACjD,OAAO,CAAC,qBAAqB,CAAC,CAkChC"}
|
|
@@ -60,7 +60,13 @@ async function withTimeout(p) {
|
|
|
60
60
|
*/
|
|
61
61
|
export async function resolveChannels(definitions, now = () => new Date().toISOString()) {
|
|
62
62
|
const channels = await Promise.all(definitions.map(async (def) => {
|
|
63
|
-
const base = {
|
|
63
|
+
const base = {
|
|
64
|
+
id: def.id,
|
|
65
|
+
audience: def.audience,
|
|
66
|
+
purpose: def.purpose,
|
|
67
|
+
whenPreferred: def.whenPreferred,
|
|
68
|
+
cost: def.cost,
|
|
69
|
+
};
|
|
64
70
|
try {
|
|
65
71
|
const result = await withTimeout(def.probe());
|
|
66
72
|
// A probe returning a shape we do not recognise is a failed probe, not a healthy channel.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channelRegistry.js","sourceRoot":"","sources":["../../src/core/channelRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;
|
|
1
|
+
{"version":3,"file":"channelRegistry.js","sourceRoot":"","sources":["../../src/core/channelRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instarChannels.d.ts","sourceRoot":"","sources":["../../src/core/instarChannels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,sBAAsB,CAAC;AAElF,kGAAkG;AAClG,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,WAAW,EAAE,MAAM;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACjE,8FAA8F;IAC9F,oBAAoB,EAAE,MAAM,OAAO,CAAC;IACpC,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,+FAA+F;IAC/F,QAAQ,EAAE,MAAM,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1F;AAeD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,mBAAmB,GAAG,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"instarChannels.d.ts","sourceRoot":"","sources":["../../src/core/instarChannels.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAsB,MAAM,sBAAsB,CAAC;AAElF,kGAAkG;AAClG,MAAM,WAAW,mBAAmB;IAClC,iFAAiF;IACjF,WAAW,EAAE,MAAM;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACjE,8FAA8F;IAC9F,oBAAoB,EAAE,MAAM,OAAO,CAAC;IACpC,+DAA+D;IAC/D,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,+FAA+F;IAC/F,QAAQ,EAAE,MAAM,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1F;AAeD,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,mBAAmB,GAAG,iBAAiB,EAAE,CAuErF;AAED,uCAAuC;AACvC,eAAO,MAAM,kBAAkB,QAA0B,CAAC"}
|
|
@@ -22,6 +22,7 @@ export function buildChannelDefinitions(ctx) {
|
|
|
22
22
|
return [
|
|
23
23
|
{
|
|
24
24
|
id: 'threadline-relay',
|
|
25
|
+
audience: 'peer',
|
|
25
26
|
purpose: 'Direct agent-to-agent messaging over the shared relay.',
|
|
26
27
|
whenPreferred: 'The default for peer work: fastest, and invisible to the operator, so it does not spend their attention.',
|
|
27
28
|
cost: 'Requires the relay to be connected. Invisible when it fails, which is its main hazard.',
|
|
@@ -41,6 +42,7 @@ export function buildChannelDefinitions(ctx) {
|
|
|
41
42
|
},
|
|
42
43
|
{
|
|
43
44
|
id: 'a2a-telegram',
|
|
45
|
+
audience: 'peer',
|
|
44
46
|
purpose: 'Agent-to-agent messages carried over the operator-visible Telegram channel, with a marker and anti-loop machinery.',
|
|
45
47
|
whenPreferred: 'When the exchange should be reviewable by the operator, or as a fallback the relay cannot provide — ONCE its sender is wired.',
|
|
46
48
|
cost: 'Consumes operator attention; slower; the conversation is visible.',
|
|
@@ -49,6 +51,7 @@ export function buildChannelDefinitions(ctx) {
|
|
|
49
51
|
},
|
|
50
52
|
{
|
|
51
53
|
id: 'mutual-ssh',
|
|
54
|
+
audience: 'peer',
|
|
52
55
|
purpose: 'Machine-to-machine execution between paired hosts over a restricted SSH endpoint.',
|
|
53
56
|
whenPreferred: 'Peer work that needs to run ON the other machine rather than be asked for.',
|
|
54
57
|
cost: 'Requires paired keys and a listening endpoint; heaviest of the three to set up.',
|
|
@@ -71,6 +74,7 @@ export function buildChannelDefinitions(ctx) {
|
|
|
71
74
|
},
|
|
72
75
|
{
|
|
73
76
|
id: 'peer-http',
|
|
77
|
+
audience: 'peer',
|
|
74
78
|
purpose: "Direct HTTP to a peer agent's own server on this machine.",
|
|
75
79
|
whenPreferred: 'Last resort when the relay is down and the peer is co-located.',
|
|
76
80
|
cost: 'Needs a credential for the peer\'s authenticated routes; on-box only.',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instarChannels.js","sourceRoot":"","sources":["../../src/core/instarChannels.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"instarChannels.js","sourceRoot":"","sources":["../../src/core/instarChannels.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DIRECT USER channels — the surfaces a human operator actually reads — wired into the same
|
|
3
|
+
* channel registry as the peer channels.
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS (2026-07-27, topic 29723). The peer registry answered "which ways of reaching a
|
|
6
|
+
* PEER work right now?". Asked the same question about the operator, the only available answer was
|
|
7
|
+
* `/capabilities` reporting `telegram: { configured: true }`. That is a SETTING, not a STATE: a
|
|
8
|
+
* Telegram whose polling loop died on a 401 four hours ago still reports `configured: true`, because
|
|
9
|
+
* the config file still says so. Reaching for that number during an outage would produce exactly the
|
|
10
|
+
* false confidence the peer registry was built to prevent — one layer over, on the channel that
|
|
11
|
+
* matters most, because it is the one carrying messages to a person.
|
|
12
|
+
*
|
|
13
|
+
* So every probe here reads LIVE RUNTIME STATE and never configuration:
|
|
14
|
+
*
|
|
15
|
+
* - Telegram exposes `getStatus()`, whose `started` field is `this.polling` — whether the loop is
|
|
16
|
+
* running NOW — plus `fatalReason` distinguishing a rejected credential from a dropped network.
|
|
17
|
+
* A comment on its `lastPollError` field says it is kept "so health probes can explain WHY
|
|
18
|
+
* polling stopped". That consumer was never built. This is it.
|
|
19
|
+
*
|
|
20
|
+
* - Slack exposes `isConnected()`, which returns `_connected` — cleared on disconnect. It
|
|
21
|
+
* deliberately does NOT return `started`, which its own source annotates as "ever connected".
|
|
22
|
+
* `started` is the trap: a workspace that connected once at boot and dropped an hour later
|
|
23
|
+
* reports `started === true` forever. Liveness must come from the field that clears.
|
|
24
|
+
*
|
|
25
|
+
* ── THE ROUTING JUDGEMENT THIS ENCODES ─────────────────────────────────────────────────────────
|
|
26
|
+
*
|
|
27
|
+
* `whenPreferred` for a user channel is not merely "when the message is for the operator". A user
|
|
28
|
+
* channel is the ONLY surface that shows what the user genuinely experiences — a proxy cannot. That
|
|
29
|
+
* makes deliberately using it a legitimate REASON to choose it, not just a cost to be minimised.
|
|
30
|
+
* The constitution's "Live-User-Channel Proof Before Done" standard rests on exactly this, and the
|
|
31
|
+
* cost side is real and opposite: operator attention is finite and every automated message competes
|
|
32
|
+
* with the ones that matter. Both halves are recorded so a caller can weigh them.
|
|
33
|
+
*/
|
|
34
|
+
import type { ChannelDefinition, ChannelProbeResult } from './channelRegistry.js';
|
|
35
|
+
/**
|
|
36
|
+
* Live Telegram adapter state. Mirrors the subset of `TelegramAdapter.getStatus()` this needs.
|
|
37
|
+
* `null` means the adapter was never constructed on this agent — which is `not-configured`, a
|
|
38
|
+
* distinct verdict from broken, and must never be an omitted row.
|
|
39
|
+
*/
|
|
40
|
+
export interface TelegramLiveStatus {
|
|
41
|
+
/** `this.polling` — whether the long-poll loop is running RIGHT NOW. Not "was ever started". */
|
|
42
|
+
started: boolean;
|
|
43
|
+
/** Why polling stopped, when it stopped for a reason the adapter could classify. */
|
|
44
|
+
fatalReason: '401' | 'network' | 'no-usable-bot-token' | null;
|
|
45
|
+
/** Consecutive poll errors. Non-zero while still polling is degraded-but-working, not broken. */
|
|
46
|
+
consecutivePollErrors: number;
|
|
47
|
+
/** Last poll error text, if any. */
|
|
48
|
+
lastError: string | null;
|
|
49
|
+
/** ISO instant polling stopped, when it has. */
|
|
50
|
+
stoppedAt: string | null;
|
|
51
|
+
}
|
|
52
|
+
export interface UserChannelProbeContext {
|
|
53
|
+
/** Live Telegram state, or null when the adapter was never constructed here. */
|
|
54
|
+
telegramStatus: () => TelegramLiveStatus | null;
|
|
55
|
+
/**
|
|
56
|
+
* Whether the Slack socket is up RIGHT NOW (`isConnected()`), or null when no Slack adapter was
|
|
57
|
+
* constructed. Deliberately not `started` — see the module docstring.
|
|
58
|
+
*/
|
|
59
|
+
slackConnected: () => boolean | null;
|
|
60
|
+
/** Whether Slack is switched on for this agent at all. Off is not broken. */
|
|
61
|
+
slackEnabled: () => boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Map live Telegram state onto the registry's vocabulary.
|
|
65
|
+
*
|
|
66
|
+
* Extracted and exported so the mapping is testable WITHOUT constructing an adapter — the mapping is
|
|
67
|
+
* where a wrong verdict would come from, so it is the part that must be pinned.
|
|
68
|
+
*/
|
|
69
|
+
export declare function telegramStateFrom(status: TelegramLiveStatus | null): ChannelProbeResult;
|
|
70
|
+
/** Map live Slack state onto the registry's vocabulary. Exported for the same reason as above. */
|
|
71
|
+
export declare function slackStateFrom(enabled: boolean, connected: boolean | null): ChannelProbeResult;
|
|
72
|
+
export declare function buildUserChannelDefinitions(ctx: UserChannelProbeContext): ChannelDefinition[];
|
|
73
|
+
//# sourceMappingURL=userChannels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"userChannels.d.ts","sourceRoot":"","sources":["../../src/core/userChannels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAElF;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,gGAAgG;IAChG,OAAO,EAAE,OAAO,CAAC;IACjB,oFAAoF;IACpF,WAAW,EAAE,KAAK,GAAG,SAAS,GAAG,qBAAqB,GAAG,IAAI,CAAC;IAC9D,iGAAiG;IACjG,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oCAAoC;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gDAAgD;IAChD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,uBAAuB;IACtC,gFAAgF;IAChF,cAAc,EAAE,MAAM,kBAAkB,GAAG,IAAI,CAAC;IAChD;;;OAGG;IACH,cAAc,EAAE,MAAM,OAAO,GAAG,IAAI,CAAC;IACrC,6EAA6E;IAC7E,YAAY,EAAE,MAAM,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,GAAG,kBAAkB,CAqDvF;AAED,kGAAkG;AAClG,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,kBAAkB,CAyB9F;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,uBAAuB,GAAG,iBAAiB,EAAE,CA6B7F"}
|