instar 1.2.77 → 1.2.79

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/commands/server.d.ts.map +1 -1
  2. package/dist/commands/server.js +23 -1
  3. package/dist/commands/server.js.map +1 -1
  4. package/dist/providers/adapters/openai-codex/canary/codexHookContractCanary.d.ts +20 -0
  5. package/dist/providers/adapters/openai-codex/canary/codexHookContractCanary.d.ts.map +1 -1
  6. package/dist/providers/adapters/openai-codex/canary/codexHookContractCanary.js +46 -0
  7. package/dist/providers/adapters/openai-codex/canary/codexHookContractCanary.js.map +1 -1
  8. package/dist/server/AgentServer.d.ts +1 -0
  9. package/dist/server/AgentServer.d.ts.map +1 -1
  10. package/dist/server/AgentServer.js +1 -0
  11. package/dist/server/AgentServer.js.map +1 -1
  12. package/dist/server/routes.d.ts +2 -0
  13. package/dist/server/routes.d.ts.map +1 -1
  14. package/dist/server/routes.js +14 -0
  15. package/dist/server/routes.js.map +1 -1
  16. package/dist/threadline/CollaborationSurfacer.d.ts +72 -0
  17. package/dist/threadline/CollaborationSurfacer.d.ts.map +1 -0
  18. package/dist/threadline/CollaborationSurfacer.js +122 -0
  19. package/dist/threadline/CollaborationSurfacer.js.map +1 -0
  20. package/dist/threadline/TopicLinkageHandler.d.ts.map +1 -1
  21. package/dist/threadline/TopicLinkageHandler.js +16 -11
  22. package/dist/threadline/TopicLinkageHandler.js.map +1 -1
  23. package/package.json +1 -1
  24. package/scripts/pre-push-e2e-scope.mjs +83 -0
  25. package/scripts/safe-merge.mjs +87 -0
  26. package/src/data/builtin-manifest.json +47 -47
  27. package/upgrades/1.2.78.md +49 -0
  28. package/upgrades/1.2.79.md +68 -0
  29. package/upgrades/side-effects/codex-parity-c4-canary-drift.md +33 -0
@@ -0,0 +1,72 @@
1
+ /**
2
+ * CollaborationSurfacer — makes PARENTLESS Threadline conversations visible to
3
+ * the operator (CMT-509 §2).
4
+ *
5
+ * Routing spine (operator directive 2026-05-25):
6
+ * - A conversation WITH a parent topic (it was started from / is bound to a
7
+ * Telegram topic) surfaces THERE via TopicLinkageHandler — this surfacer does
8
+ * NOT touch it.
9
+ * - A PARENTLESS conversation (a peer reached out cold, no topic association)
10
+ * surfaces to a SINGLE dedicated "Threadline" Telegram topic — created on
11
+ * demand once and reused, NEVER the generic attention list, NEVER a per-thread
12
+ * topic.
13
+ *
14
+ * Near-silent by design: surfaces only a warranted (per the warrants-a-reply
15
+ * gate) FIRST contact, exactly ONE post per conversation (follow-ups on an
16
+ * already-surfaced thread do not re-post). Never emits raw envelope/JSON.
17
+ */
18
+ export interface SurfacerTelegram {
19
+ findOrCreateForumTopic(name: string, iconColor?: number): Promise<{
20
+ topicId: number;
21
+ name: string;
22
+ reused: boolean;
23
+ }>;
24
+ sendToTopic(topicId: number, text: string, options?: {
25
+ silent?: boolean;
26
+ skipStallClear?: boolean;
27
+ }): Promise<unknown>;
28
+ }
29
+ export interface CollaborationSurfacerConfig {
30
+ telegram: SurfacerTelegram;
31
+ stateDir: string;
32
+ /** Override the state filename (tests). */
33
+ stateFilename?: string;
34
+ /** Dedicated topic display name. */
35
+ topicName?: string;
36
+ log?: {
37
+ warn: (m: string) => void;
38
+ };
39
+ }
40
+ export interface SurfaceInput {
41
+ threadId: string;
42
+ senderName: string;
43
+ text: string;
44
+ /** True if the conversation is bound to a parent topic (→ surfaced elsewhere). */
45
+ hasParentTopic: boolean;
46
+ /** The warrants-a-reply gate verdict (substantive content). */
47
+ warrants: boolean;
48
+ }
49
+ export interface SurfaceResult {
50
+ surfaced: boolean;
51
+ reason: string;
52
+ topicId?: number;
53
+ }
54
+ export declare class CollaborationSurfacer {
55
+ private telegram;
56
+ private filePath;
57
+ private topicName;
58
+ private log;
59
+ constructor(config: CollaborationSurfacerConfig);
60
+ /**
61
+ * Decide + surface a parentless conversation. Idempotent per thread. Never
62
+ * throws to the caller (surfacing is best-effort; a failure must not break the
63
+ * inbound path) — returns a structured result.
64
+ */
65
+ surface(input: SurfaceInput): Promise<SurfaceResult>;
66
+ /** A readable, capped gist of the peer's message — NEVER raw envelope/JSON. */
67
+ private readableGist;
68
+ private readablePeer;
69
+ private load;
70
+ private save;
71
+ }
72
+ //# sourceMappingURL=CollaborationSurfacer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollaborationSurfacer.d.ts","sourceRoot":"","sources":["../../src/threadline/CollaborationSurfacer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,MAAM,WAAW,gBAAgB;IAC/B,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACtH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACxH;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;CACrC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,cAAc,EAAE,OAAO,CAAC;IACxB,+DAA+D;IAC/D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,GAAG,CAAgC;gBAE/B,MAAM,EAAE,2BAA2B;IAS/C;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAkC1D,+EAA+E;IAC/E,OAAO,CAAC,YAAY;IAkBpB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,IAAI;CASb"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * CollaborationSurfacer — makes PARENTLESS Threadline conversations visible to
3
+ * the operator (CMT-509 §2).
4
+ *
5
+ * Routing spine (operator directive 2026-05-25):
6
+ * - A conversation WITH a parent topic (it was started from / is bound to a
7
+ * Telegram topic) surfaces THERE via TopicLinkageHandler — this surfacer does
8
+ * NOT touch it.
9
+ * - A PARENTLESS conversation (a peer reached out cold, no topic association)
10
+ * surfaces to a SINGLE dedicated "Threadline" Telegram topic — created on
11
+ * demand once and reused, NEVER the generic attention list, NEVER a per-thread
12
+ * topic.
13
+ *
14
+ * Near-silent by design: surfaces only a warranted (per the warrants-a-reply
15
+ * gate) FIRST contact, exactly ONE post per conversation (follow-ups on an
16
+ * already-surfaced thread do not re-post). Never emits raw envelope/JSON.
17
+ */
18
+ import fs from 'node:fs';
19
+ import path from 'node:path';
20
+ const MAX_GIST_LEN = 240;
21
+ const MAX_SURFACED_THREADS = 500; // bound the dedupe list
22
+ export class CollaborationSurfacer {
23
+ telegram;
24
+ filePath;
25
+ topicName;
26
+ log;
27
+ constructor(config) {
28
+ this.telegram = config.telegram;
29
+ const dir = path.join(config.stateDir, 'threadline');
30
+ fs.mkdirSync(dir, { recursive: true });
31
+ this.filePath = path.join(dir, config.stateFilename ?? 'collaboration-surface.json');
32
+ this.topicName = config.topicName ?? 'Threadline';
33
+ this.log = config.log ?? console;
34
+ }
35
+ /**
36
+ * Decide + surface a parentless conversation. Idempotent per thread. Never
37
+ * throws to the caller (surfacing is best-effort; a failure must not break the
38
+ * inbound path) — returns a structured result.
39
+ */
40
+ async surface(input) {
41
+ try {
42
+ if (input.hasParentTopic)
43
+ return { surfaced: false, reason: 'has-parent-topic' };
44
+ if (!input.warrants)
45
+ return { surfaced: false, reason: 'not-warranted' };
46
+ const state = this.load();
47
+ if (state.surfacedThreads.includes(input.threadId)) {
48
+ return { surfaced: false, reason: 'already-surfaced' };
49
+ }
50
+ let topicId = state.dedicatedTopicId;
51
+ if (typeof topicId !== 'number') {
52
+ const t = await this.telegram.findOrCreateForumTopic(this.topicName);
53
+ topicId = t.topicId;
54
+ state.dedicatedTopicId = topicId;
55
+ }
56
+ const gist = this.readableGist(input.text);
57
+ const peer = this.readablePeer(input.senderName);
58
+ const body = `🧵 ${peer} started a Threadline conversation:\n${gist}\n\n(reply in-thread, or say "open this" to engage)`;
59
+ await this.telegram.sendToTopic(topicId, body, { silent: true });
60
+ state.surfacedThreads.push(input.threadId);
61
+ if (state.surfacedThreads.length > MAX_SURFACED_THREADS) {
62
+ state.surfacedThreads = state.surfacedThreads.slice(-MAX_SURFACED_THREADS);
63
+ }
64
+ this.save(state);
65
+ return { surfaced: true, reason: 'posted', topicId };
66
+ }
67
+ catch (err) {
68
+ this.log.warn(`[CollaborationSurfacer] surface failed (non-fatal): ${err instanceof Error ? err.message : String(err)}`);
69
+ return { surfaced: false, reason: 'error' };
70
+ }
71
+ }
72
+ /** A readable, capped gist of the peer's message — NEVER raw envelope/JSON. */
73
+ readableGist(text) {
74
+ let t = (text ?? '').trim();
75
+ // Defend against the funnel's JSON.stringify(content) path reaching the user.
76
+ if ((t.startsWith('{') && t.endsWith('}')) || (t.startsWith('[') && t.endsWith(']'))) {
77
+ try {
78
+ const parsed = JSON.parse(t);
79
+ const extracted = (parsed && (parsed.text ?? parsed.content ?? parsed.body ?? parsed.message));
80
+ t = typeof extracted === 'string' && extracted.trim() ? extracted.trim() : '(structured message)';
81
+ }
82
+ catch {
83
+ t = '(message)';
84
+ }
85
+ }
86
+ t = t.replace(/\s+/g, ' ').trim();
87
+ if (!t)
88
+ return '(no preview)';
89
+ return t.length > MAX_GIST_LEN ? t.slice(0, MAX_GIST_LEN - 1) + '…' : t;
90
+ }
91
+ readablePeer(name) {
92
+ const n = (name ?? '').trim();
93
+ if (!n)
94
+ return 'An agent';
95
+ // Fingerprint-looking → shorten.
96
+ if (/^[a-f0-9]{16,}$/i.test(n))
97
+ return n.slice(0, 8);
98
+ return n;
99
+ }
100
+ load() {
101
+ try {
102
+ if (fs.existsSync(this.filePath)) {
103
+ const data = JSON.parse(fs.readFileSync(this.filePath, 'utf-8'));
104
+ if (data && Array.isArray(data.surfacedThreads))
105
+ return data;
106
+ }
107
+ }
108
+ catch { /* corrupt — start fresh */ }
109
+ return { surfacedThreads: [] };
110
+ }
111
+ save(state) {
112
+ try {
113
+ const tmp = `${this.filePath}.${process.pid}.tmp`;
114
+ fs.writeFileSync(tmp, JSON.stringify(state, null, 2) + '\n');
115
+ fs.renameSync(tmp, this.filePath);
116
+ }
117
+ catch (err) {
118
+ this.log.warn(`[CollaborationSurfacer] state persist failed: ${err instanceof Error ? err.message : String(err)}`);
119
+ }
120
+ }
121
+ }
122
+ //# sourceMappingURL=CollaborationSurfacer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CollaborationSurfacer.js","sourceRoot":"","sources":["../../src/threadline/CollaborationSurfacer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TopicLinkageHandler.d.ts","sourceRoot":"","sources":["../../src/threadline/TopicLinkageHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TopicLinkageHandler.d.ts","sourceRoot":"","sources":["../../src/threadline/TopicLinkageHandler.ts"],"names":[],"mappings":"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"}
@@ -352,18 +352,23 @@ export class TopicLinkageHandler {
352
352
  console.warn(`[TopicLinkageHandler] markReplyArrived failed for ${commitment.id}: ${err instanceof Error ? err.message : String(err)}`);
353
353
  }
354
354
  }
355
- // Mark commitment delivered on live-inject AND resume-pending both
356
- // paths represent successful awaited-reply resolution from the user's
357
- // point of view. live-inject hands the payload to a running session;
358
- // resume-pending durably stored the reply and the topic's standard wake
359
- // path will surface it on next interaction. In both cases PromiseBeacon
360
- // should stop heartbeating "still waiting" the wait is over.
361
- //
362
- // Only `failure-visible` (the actually-wedged path: injection error or
363
- // delivery breakdown) leaves the commitment open, so the beacon keeps
364
- // surfacing the unresolved state.
355
+ // CMT-509 §1: a "report back" commitment must NOT resolve until the reply was
356
+ // actually surfaced TO THE USER. The user is surfaced when either:
357
+ // - `telegramSent` a user-facing post landed in the topic, OR
358
+ // - `live-inject` — the payload went into the topic's LIVE session, which
359
+ // relays to the user per the Telegram-reply rule.
360
+ // Previously this also resolved on `resume-pending` unconditionally but a
361
+ // resume-pending whose Telegram surface failed or was rate-limited (so
362
+ // `telegramSent === false`) means the user saw NOTHING, yet the commitment
363
+ // closed. That is the premature-resolution bug the 2026-05-25 incident
364
+ // exposed. Now resume-pending only resolves if its surface actually posted.
365
+ // `failure-visible` (and any un-surfaced path) leaves the commitment OPEN so
366
+ // PromiseBeacon keeps heartbeating; the 7-day commitment TTL +
367
+ // expireCommitments() sweep is the backstop against a permanent hang.
368
+ const surfacedToUser = deliveryMode === 'live-inject' ||
369
+ (deliveryMode === 'resume-pending' && telegramSent);
365
370
  let commitmentDelivered = false;
366
- if (commitment && (deliveryMode === 'live-inject' || deliveryMode === 'resume-pending')) {
371
+ if (commitment && surfacedToUser) {
367
372
  try {
368
373
  commitmentTracker.deliver(commitment.id);
369
374
  commitmentDelivered = true;
@@ -1 +1 @@
1
- {"version":3,"file":"TopicLinkageHandler.js","sourceRoot":"","sources":["../../src/threadline/TopicLinkageHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TopicLinkageHandler.js","sourceRoot":"","sources":["../../src/threadline/TopicLinkageHandler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "instar",
3
- "version": "1.2.77",
3
+ "version": "1.2.79",
4
4
  "description": "Coherence infrastructure for self-evolving AI agents — on the Claude Code or Codex subscription you already have.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env node
2
+ // safe-git-allow: pre-push bootstrap — read-only git only (merge-base / rev-parse
3
+ // / diff --name-only); runs before TS is compiled, so it can't use SafeGitExecutor.
4
+ /**
5
+ * pre-push-e2e-scope — run the END-TO-END suite for the area being pushed.
6
+ *
7
+ * Why: the pre-push smoke tier (`test:push` / `test:smoke`) uses
8
+ * `vitest.push.config.ts`, which EXCLUDES `tests/e2e/**`. So a change can pass
9
+ * pre-push + the watched CI checks yet break the separate `E2E Tests` CI job —
10
+ * exactly what turned main red in PR #381 (the threadline single-store refactor
11
+ * left two e2e test harnesses stale; fixed in #383). A red e2e job blocks the
12
+ * whole merge queue.
13
+ *
14
+ * This gate closes that hole structurally: when the push touches an
15
+ * "e2e-load-bearing" source area, it runs that area's e2e suite BEFORE the push
16
+ * is allowed — automatically, not by memory. It is PATH-SCOPED, so unrelated
17
+ * pushes pay nothing.
18
+ *
19
+ * Opt out: INSTAR_PRE_PUSH_E2E_SKIP=1 git push (CI still runs the full e2e job)
20
+ */
21
+
22
+ import { execSync, spawnSync } from 'node:child_process';
23
+
24
+ if (process.env.INSTAR_PRE_PUSH_E2E_SKIP === '1' || process.env.INSTAR_PRE_PUSH_SKIP === '1') {
25
+ console.log('⏭️ pre-push e2e scope skipped (env) — CI still runs the full e2e job.');
26
+ process.exit(0);
27
+ }
28
+
29
+ /**
30
+ * Map a changed-source-path matcher → the e2e suite path(s) that exercise it.
31
+ * Extend this as more areas gain e2e coverage. Keep entries narrow so the gate
32
+ * stays fast and only fires for the area actually changed.
33
+ */
34
+ const SCOPE_MAP = [
35
+ { match: /^src\/threadline\//, e2e: ['tests/e2e/threadline/'] },
36
+ { match: /^tests\/e2e\/threadline\//, e2e: ['tests/e2e/threadline/'] },
37
+ { match: /^tests\/helpers\/TestThreadResumeMap\.ts$/, e2e: ['tests/e2e/threadline/'] },
38
+ ];
39
+
40
+ let changed = [];
41
+ try {
42
+ // Changes on this branch since it diverged from origin/main. The pre-push
43
+ // hook already fetched origin/main; fall back to HEAD~1 if the ref is absent.
44
+ let base = '';
45
+ try {
46
+ base = execSync('git merge-base origin/main HEAD', { encoding: 'utf-8' }).trim();
47
+ } catch {
48
+ base = execSync('git rev-parse HEAD~1', { encoding: 'utf-8' }).trim();
49
+ }
50
+ const out = execSync(`git diff --name-only ${base} HEAD`, { encoding: 'utf-8' });
51
+ changed = out.split('\n').map(s => s.trim()).filter(Boolean);
52
+ } catch (err) {
53
+ console.warn(`pre-push-e2e-scope: could not compute changed files (${err instanceof Error ? err.message : err}) — skipping (CI still runs e2e).`);
54
+ process.exit(0);
55
+ }
56
+
57
+ const suites = new Set();
58
+ for (const file of changed) {
59
+ for (const rule of SCOPE_MAP) {
60
+ if (rule.match.test(file)) rule.e2e.forEach(s => suites.add(s));
61
+ }
62
+ }
63
+
64
+ if (suites.size === 0) {
65
+ process.exit(0); // nothing e2e-load-bearing changed — fast path
66
+ }
67
+
68
+ const suiteList = [...suites];
69
+ console.log(`🧪 pre-push e2e scope: changed files touch ${suiteList.join(', ')} — running their e2e suite(s)...`);
70
+ console.log(' Opt out: INSTAR_PRE_PUSH_E2E_SKIP=1 git push (CI still runs the full e2e job)');
71
+
72
+ const res = spawnSync(
73
+ 'npx',
74
+ ['vitest', 'run', '--config', 'vitest.e2e.config.ts', ...suiteList],
75
+ { stdio: 'inherit', encoding: 'utf-8' },
76
+ );
77
+
78
+ if (res.status !== 0) {
79
+ console.error('❌ Scoped e2e suite failed. Fix before pushing, or INSTAR_PRE_PUSH_E2E_SKIP=1 to bypass (CI will still catch it).');
80
+ process.exit(1);
81
+ }
82
+ console.log('✅ Scoped e2e suite passed.');
83
+ process.exit(0);
@@ -0,0 +1,87 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * safe-merge — merge a PR ONLY after every check (incl. the e2e job) is green.
4
+ *
5
+ * Why: we merge with `gh pr merge --admin` to jump the hot-branch queue, but
6
+ * `--admin` BYPASSES branch-protection's required-checks enforcement — which is
7
+ * how PR #381 merged while the `E2E Tests` job was red and turned main red for
8
+ * everyone. This wrapper re-imposes the requirement that `--admin` removes:
9
+ * it waits for all checks to finish, refuses the merge if ANY check failed (and
10
+ * specifically verifies an e2e check ran + passed), and only then merges.
11
+ *
12
+ * Usage: node scripts/safe-merge.mjs <PR#> [--admin] [--squash|--merge|--rebase]
13
+ * --admin still allowed (for the BEHIND/hot-branch case) — but ONLY
14
+ * reached AFTER this script has confirmed every check is green.
15
+ * default merge method: --merge
16
+ *
17
+ * Exit non-zero (and do NOT merge) on any red/failed check.
18
+ */
19
+
20
+ import { execSync, spawnSync } from 'node:child_process';
21
+
22
+ const REPO = 'JKHeadley/instar';
23
+ const args = process.argv.slice(2);
24
+ const pr = args.find(a => /^\d+$/.test(a));
25
+ const useAdmin = args.includes('--admin');
26
+ const method = args.find(a => ['--squash', '--merge', '--rebase'].includes(a)) || '--merge';
27
+
28
+ if (!pr) {
29
+ console.error('usage: node scripts/safe-merge.mjs <PR#> [--admin] [--squash|--merge|--rebase]');
30
+ process.exit(2);
31
+ }
32
+
33
+ function checks() {
34
+ // gh pr checks exits non-zero when checks are failing/pending; capture either way.
35
+ const r = spawnSync('gh', ['pr', 'checks', pr, '--repo', REPO], { encoding: 'utf-8' });
36
+ return (r.stdout || '') + (r.stderr || '');
37
+ }
38
+
39
+ // Poll until nothing is pending (cap ~20 min).
40
+ console.log(`safe-merge: waiting for PR #${pr} checks to finish...`);
41
+ const deadline = Date.now() + 20 * 60 * 1000;
42
+ let out = checks();
43
+ while (/\bpending\b/.test(out)) {
44
+ if (Date.now() > deadline) {
45
+ console.error('safe-merge: timed out waiting for checks. NOT merging.');
46
+ process.exit(1);
47
+ }
48
+ execSync('sleep 15');
49
+ out = checks();
50
+ }
51
+
52
+ // Parse rows: "<name>\t<state>\t<elapsed>\t<url>". States: pass | fail | skipping | ...
53
+ const rows = out.split('\n').map(l => l.trim()).filter(Boolean);
54
+ const failed = [];
55
+ let sawE2e = false;
56
+ let e2ePassed = false;
57
+ for (const line of rows) {
58
+ const cols = line.split('\t').map(c => c.trim());
59
+ const name = cols[0] || '';
60
+ const state = (cols[1] || '').toLowerCase();
61
+ if (!name || !state) continue;
62
+ const ok = state === 'pass' || state === 'skipping' || state === 'neutral';
63
+ if (/e2e/i.test(name)) {
64
+ sawE2e = true;
65
+ if (state === 'pass') e2ePassed = true;
66
+ }
67
+ if (!ok) failed.push(`${name}: ${state}`);
68
+ }
69
+
70
+ if (failed.length > 0) {
71
+ console.error(`safe-merge: REFUSING — ${failed.length} check(s) not green:\n ${failed.join('\n ')}`);
72
+ process.exit(1);
73
+ }
74
+ if (!sawE2e) {
75
+ console.error('safe-merge: REFUSING — no e2e check found in the PR checks. The e2e job is the one --admin bypasses; do not merge without it. (Override only with explicit human sign-off.)');
76
+ process.exit(1);
77
+ }
78
+ if (!e2ePassed) {
79
+ console.error('safe-merge: REFUSING — an e2e check is present but did not report pass.');
80
+ process.exit(1);
81
+ }
82
+
83
+ console.log(`safe-merge: all checks green (e2e confirmed). Merging PR #${pr} (${method}${useAdmin ? ' --admin' : ''})...`);
84
+ const mergeArgs = ['pr', 'merge', pr, '--repo', REPO, method];
85
+ if (useAdmin) mergeArgs.push('--admin');
86
+ const m = spawnSync('gh', mergeArgs, { stdio: 'inherit', encoding: 'utf-8' });
87
+ process.exit(m.status ?? 0);