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.
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +23 -1
- package/dist/commands/server.js.map +1 -1
- package/dist/providers/adapters/openai-codex/canary/codexHookContractCanary.d.ts +20 -0
- package/dist/providers/adapters/openai-codex/canary/codexHookContractCanary.d.ts.map +1 -1
- package/dist/providers/adapters/openai-codex/canary/codexHookContractCanary.js +46 -0
- package/dist/providers/adapters/openai-codex/canary/codexHookContractCanary.js.map +1 -1
- package/dist/server/AgentServer.d.ts +1 -0
- package/dist/server/AgentServer.d.ts.map +1 -1
- package/dist/server/AgentServer.js +1 -0
- package/dist/server/AgentServer.js.map +1 -1
- package/dist/server/routes.d.ts +2 -0
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +14 -0
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/CollaborationSurfacer.d.ts +72 -0
- package/dist/threadline/CollaborationSurfacer.d.ts.map +1 -0
- package/dist/threadline/CollaborationSurfacer.js +122 -0
- package/dist/threadline/CollaborationSurfacer.js.map +1 -0
- package/dist/threadline/TopicLinkageHandler.d.ts.map +1 -1
- package/dist/threadline/TopicLinkageHandler.js +16 -11
- package/dist/threadline/TopicLinkageHandler.js.map +1 -1
- package/package.json +1 -1
- package/scripts/pre-push-e2e-scope.mjs +83 -0
- package/scripts/safe-merge.mjs +87 -0
- package/src/data/builtin-manifest.json +47 -47
- package/upgrades/1.2.78.md +49 -0
- package/upgrades/1.2.79.md +68 -0
- 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
|
-
//
|
|
356
|
-
//
|
|
357
|
-
//
|
|
358
|
-
//
|
|
359
|
-
//
|
|
360
|
-
//
|
|
361
|
-
//
|
|
362
|
-
//
|
|
363
|
-
//
|
|
364
|
-
//
|
|
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 &&
|
|
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
|
@@ -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);
|