@groundnuty/macf 0.2.38 → 0.2.39
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/.build-info.json +2 -2
- package/dist/cli/claude-sh.d.ts.map +1 -1
- package/dist/cli/claude-sh.js +13 -0
- package/dist/cli/claude-sh.js.map +1 -1
- package/dist/cli/commands/fleet-doctor-inject.d.ts +52 -0
- package/dist/cli/commands/fleet-doctor-inject.d.ts.map +1 -0
- package/dist/cli/commands/fleet-doctor-inject.js +100 -0
- package/dist/cli/commands/fleet-doctor-inject.js.map +1 -0
- package/dist/cli/commands/fleet-doctor.d.ts +236 -0
- package/dist/cli/commands/fleet-doctor.d.ts.map +1 -0
- package/dist/cli/commands/fleet-doctor.js +481 -0
- package/dist/cli/commands/fleet-doctor.js.map +1 -0
- package/dist/cli/commands/fleet.d.ts +83 -0
- package/dist/cli/commands/fleet.d.ts.map +1 -0
- package/dist/cli/commands/fleet.js +225 -0
- package/dist/cli/commands/fleet.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +8 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts +1 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/registry-prune.d.ts +43 -6
- package/dist/cli/commands/registry-prune.d.ts.map +1 -1
- package/dist/cli/commands/registry-prune.js +53 -14
- package/dist/cli/commands/registry-prune.js.map +1 -1
- package/dist/cli/commands/restart-self.d.ts +111 -0
- package/dist/cli/commands/restart-self.d.ts.map +1 -0
- package/dist/cli/commands/restart-self.js +312 -0
- package/dist/cli/commands/restart-self.js.map +1 -0
- package/dist/cli/commands/routing-doctor-gh.d.ts +29 -0
- package/dist/cli/commands/routing-doctor-gh.d.ts.map +1 -0
- package/dist/cli/commands/routing-doctor-gh.js +103 -0
- package/dist/cli/commands/routing-doctor-gh.js.map +1 -0
- package/dist/cli/commands/routing-doctor.d.ts +183 -0
- package/dist/cli/commands/routing-doctor.d.ts.map +1 -0
- package/dist/cli/commands/routing-doctor.js +504 -0
- package/dist/cli/commands/routing-doctor.js.map +1 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +9 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/host-prelude.d.ts +50 -0
- package/dist/cli/host-prelude.d.ts.map +1 -0
- package/dist/cli/host-prelude.js +256 -0
- package/dist/cli/host-prelude.js.map +1 -0
- package/dist/cli/index.js +89 -0
- package/dist/cli/index.js.map +1 -1
- package/package.json +2 -2
- package/plugin/rules/coordination.md +10 -0
- package/plugin/rules/silent-fallback-hazards.md +19 -4
- package/scripts/emit-turn-receipt.sh +44 -4
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `macf routing doctor` — ROUTING-INFRA-layer interconnect check (DR-030 phase-2,
|
|
3
|
+
* macf#568). Sibling to the mesh `macf fleet doctor`.
|
|
4
|
+
*
|
|
5
|
+
* Where `fleet doctor` proves the AGENTS reach EACH OTHER over the mTLS channel
|
|
6
|
+
* mesh, `routing doctor` proves the GitHub *delivery plane that CARRIES them* is
|
|
7
|
+
* wired right. These are STATIC GitHub-plane checks — they prove the routing
|
|
8
|
+
* *plumbing* (caller pins, registry-as-routing-source, certs, repo-set), NOT that
|
|
9
|
+
* a message was actually delivered end-to-end (that is `--e2e`, a LATER increment,
|
|
10
|
+
* NOT built here). The honesty legend states this loudly.
|
|
11
|
+
*
|
|
12
|
+
* The five checks (DR-030 §4, harvested from the 2026-06-26 Stage-3 outage):
|
|
13
|
+
*
|
|
14
|
+
* 1. CALLER-PIN consistency — every fleet repo's `agent-router.yml`
|
|
15
|
+
* `uses: groundnuty/macf-actions/...@<pin>` is on the SAME version. A mixed
|
|
16
|
+
* `@v1.3.x` / `@v3.3.0` set = an incomplete cutover — *this would have caught
|
|
17
|
+
* the outage*. Repo-set source (DR-030 Q3): the App INSTALL-SET, not a new
|
|
18
|
+
* config file.
|
|
19
|
+
* 2. The #538 split — TWO independent checks per agent:
|
|
20
|
+
* (a) ROUTABILITY — each routing label has a `MACF_AGENT_<LABEL>` key in the
|
|
21
|
+
* registry (the router resolves BY LABEL; a bot-name key is silently
|
|
22
|
+
* unrouteable).
|
|
23
|
+
* (b) SELF-SKIP correctness — `agent-config.json[label].app_name` is the
|
|
24
|
+
* bot-LOGIN, not the bare routing label (the #566 root cause:
|
|
25
|
+
* `repo-init.ts` wrote the agent-name). Independent of (a): a wrong
|
|
26
|
+
* `app_name` still ROUTES (resolution never touches it) — it breaks the
|
|
27
|
+
* actor-skip instead.
|
|
28
|
+
* 3. REGISTRATION freshness — `registry.instance_id == /health.instance_id`
|
|
29
|
+
* (precise current-vs-stale; disambiguates the #553 dying-server race). A
|
|
30
|
+
* reassigned port surfaces as unreachability; an aged `last_heartbeat` is a
|
|
31
|
+
* definitive stale (DR-031 `isStaleEntry`).
|
|
32
|
+
* 4. CA material — `MACF_CA_CERT` (a readable VARIABLE) is present AND
|
|
33
|
+
* base64/PEM-parses (the #563 malformed-base64 class — present ≠ valid).
|
|
34
|
+
* 5. SESSION-name drift — `agent-config.json.tmux_session` follows the canonical
|
|
35
|
+
* `<project>@<agent>` convention (the silent Stage-2-routing-drop class).
|
|
36
|
+
*
|
|
37
|
+
* Every GitHub read (install-set, caller-pins, agent-config), the registry list,
|
|
38
|
+
* the mTLS `/health` probe, and the CA-var read are INJECTABLE (`RoutingDoctorDeps`)
|
|
39
|
+
* so tests run fully offline. The `gh` shell-outs live in `routing-doctor-gh.ts`.
|
|
40
|
+
*/
|
|
41
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
42
|
+
import { join } from 'node:path';
|
|
43
|
+
import { readAgentConfig, tokenSourceFromConfig, agentCertPath, agentKeyPath, } from '../config.js';
|
|
44
|
+
import { createClientFromConfig } from '../registry-helper.js';
|
|
45
|
+
import { createRegistryFromConfig, generateToken, pingAgentHealth, toVariableSegment, isStaleEntry, DEFAULT_REGISTRY_TTL_MS, } from '@groundnuty/macf-core';
|
|
46
|
+
import { formatTable } from './ps.js';
|
|
47
|
+
import { createInstallRepoLister, createCallerPinReader, createRoutingConfigGhReader, } from './routing-doctor-gh.js';
|
|
48
|
+
// --- Pure check primitives ---
|
|
49
|
+
/** Normalize a GitHub login for comparison: lowercase, strip `app/` + `[bot]`. */
|
|
50
|
+
export function normalizeLogin(s) {
|
|
51
|
+
return s.trim().toLowerCase().replace(/^app\//, '').replace(/\[bot\]$/, '');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* The expected fleet caller-pin: an explicit override, else the MODAL (most
|
|
55
|
+
* common) pin among the repos that ARE routing callers. `null` when no repo pins
|
|
56
|
+
* macf-actions (nothing to be consistent about).
|
|
57
|
+
*/
|
|
58
|
+
export function computeExpectedPin(pinned, override) {
|
|
59
|
+
if (override)
|
|
60
|
+
return override;
|
|
61
|
+
if (pinned.length === 0)
|
|
62
|
+
return null;
|
|
63
|
+
const counts = new Map();
|
|
64
|
+
for (const p of pinned)
|
|
65
|
+
counts.set(p, (counts.get(p) ?? 0) + 1);
|
|
66
|
+
let best = pinned[0];
|
|
67
|
+
let bestN = 0;
|
|
68
|
+
for (const [p, n] of counts) {
|
|
69
|
+
if (n > bestN) {
|
|
70
|
+
best = p;
|
|
71
|
+
bestN = n;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return best;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Self-skip correctness (#538 check b / #566). `app_name` must be the bot-LOGIN.
|
|
78
|
+
* When an authoritative `expectedBotLogin` is known (the running agent's own
|
|
79
|
+
* `github_app.bot_login`, macf#535), compare exactly (normalized). Otherwise fall
|
|
80
|
+
* back to the structural heuristic: the #566 bug is literally `app_name === <bare
|
|
81
|
+
* routing label>`, so flag that — anything else passes (we can't prove the exact
|
|
82
|
+
* bot-login without an authoritative actor source; stated in the legend).
|
|
83
|
+
*/
|
|
84
|
+
export function evaluateSelfSkip(label, appName, expectedBotLogin) {
|
|
85
|
+
if (!appName || appName.trim() === '') {
|
|
86
|
+
return { ok: false, reason: 'app_name missing' };
|
|
87
|
+
}
|
|
88
|
+
if (expectedBotLogin) {
|
|
89
|
+
return normalizeLogin(appName) === normalizeLogin(expectedBotLogin)
|
|
90
|
+
? { ok: true }
|
|
91
|
+
: { ok: false, reason: `app_name "${appName}" != bot-login "${expectedBotLogin}"` };
|
|
92
|
+
}
|
|
93
|
+
if (normalizeLogin(appName) === normalizeLogin(label)) {
|
|
94
|
+
return {
|
|
95
|
+
ok: false,
|
|
96
|
+
reason: `app_name "${appName}" is the bare routing label, not a bot-login (#566)`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return { ok: true };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Session-name drift (#? Stage-2 fallback). The CONVENTION check: `tmux_session`
|
|
103
|
+
* must equal `<project>@<label>`. This is a STATIC convention check — it proves the
|
|
104
|
+
* config follows the canonical naming, NOT that it matches the LIVE tmux session
|
|
105
|
+
* (a runtime fact this command can't see). Stated in the legend.
|
|
106
|
+
*/
|
|
107
|
+
export function evaluateSession(label, tmuxSession, project) {
|
|
108
|
+
const expected = `${project}@${label}`;
|
|
109
|
+
if (!tmuxSession || tmuxSession.trim() === '') {
|
|
110
|
+
return { ok: false, expected, reason: 'tmux_session missing' };
|
|
111
|
+
}
|
|
112
|
+
if (tmuxSession === expected)
|
|
113
|
+
return { ok: true, expected };
|
|
114
|
+
return {
|
|
115
|
+
ok: false,
|
|
116
|
+
expected,
|
|
117
|
+
reason: `tmux_session "${tmuxSession}" != "${expected}" (<project>@<agent> convention)`,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/** Strict base64: only the base64 alphabet, padded to a multiple of 4. */
|
|
121
|
+
export function isStrictBase64(s) {
|
|
122
|
+
const t = s.replace(/\s+/g, '');
|
|
123
|
+
if (t.length === 0 || t.length % 4 !== 0)
|
|
124
|
+
return false;
|
|
125
|
+
return /^[A-Za-z0-9+/]*={0,2}$/.test(t);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* CA material check (#563). `MACF_CA_CERT` is a readable VARIABLE; validate it is
|
|
129
|
+
* present AND parses — either as a PEM cert block whose body is strict base64, or
|
|
130
|
+
* as a base64-of-PEM blob that decodes to a cert. A present-but-malformed value
|
|
131
|
+
* (truncated / garbled base64) is the #563 class: present ≠ valid.
|
|
132
|
+
*/
|
|
133
|
+
export function evaluateCaCert(raw) {
|
|
134
|
+
if (raw === null || raw === undefined || raw.trim() === '') {
|
|
135
|
+
return { present: false, valid: false, reason: 'MACF_CA_CERT absent or empty' };
|
|
136
|
+
}
|
|
137
|
+
const text = raw.trim();
|
|
138
|
+
const pem = /-----BEGIN CERTIFICATE-----([\s\S]+?)-----END CERTIFICATE-----/.exec(text);
|
|
139
|
+
if (pem) {
|
|
140
|
+
return isStrictBase64(pem[1])
|
|
141
|
+
? { present: true, valid: true }
|
|
142
|
+
: { present: true, valid: false, reason: 'PEM body is not valid base64 (#563 malformed)' };
|
|
143
|
+
}
|
|
144
|
+
// No PEM markers — maybe the whole value is base64-of-PEM (#563 storage form).
|
|
145
|
+
if (isStrictBase64(text)) {
|
|
146
|
+
const decoded = Buffer.from(text, 'base64').toString('utf-8');
|
|
147
|
+
if (/-----BEGIN CERTIFICATE-----/.test(decoded))
|
|
148
|
+
return { present: true, valid: true };
|
|
149
|
+
return { present: true, valid: false, reason: 'base64 decodes but is not a certificate' };
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
present: true,
|
|
153
|
+
valid: false,
|
|
154
|
+
reason: 'present but not a parseable PEM/base64 certificate (#563 malformed-base64)',
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Classify a registry entry's freshness against the LIVE `/health`:
|
|
159
|
+
* - `/health` answers + instance_id MATCHES → `fresh`.
|
|
160
|
+
* - `/health` answers + instance_id MISMATCH → `stale` (registry points at an
|
|
161
|
+
* older instance; a newer one answered).
|
|
162
|
+
* - `/health` answers but reports no instance_id (older cs) → `unknown`.
|
|
163
|
+
* - `/health` unreachable + heartbeat aged past TTL (DR-031) → `stale` (definitively
|
|
164
|
+
* dead — ungraceful death).
|
|
165
|
+
* - `/health` unreachable, heartbeat fresh/absent → `unreachable` (can't confirm;
|
|
166
|
+
* NOT a verdict failure — liveness is
|
|
167
|
+
* `fleet doctor`'s job, not the plane's).
|
|
168
|
+
*/
|
|
169
|
+
export function classifyFreshness(info, health, now, ttlMs) {
|
|
170
|
+
if (health === null) {
|
|
171
|
+
return isStaleEntry(info, ttlMs, now) ? 'stale' : 'unreachable';
|
|
172
|
+
}
|
|
173
|
+
const hid = health.instance_id ?? null;
|
|
174
|
+
if (!hid)
|
|
175
|
+
return 'unknown';
|
|
176
|
+
return hid === info.instance_id ? 'fresh' : 'stale';
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Run all five checks. PURE w.r.t. the injected deps — tests pass fakes so nothing
|
|
180
|
+
* hits gh / the registry / the network.
|
|
181
|
+
*/
|
|
182
|
+
export async function gatherRoutingDoctor(deps) {
|
|
183
|
+
const now = deps.now ?? Date.now();
|
|
184
|
+
// 1. Caller-pin sweep across the install-set.
|
|
185
|
+
const repos = await deps.listRepos();
|
|
186
|
+
const pinResults = [];
|
|
187
|
+
for (const repo of repos)
|
|
188
|
+
pinResults.push(await deps.readCallerPin(repo));
|
|
189
|
+
const pinnedVals = pinResults.filter((r) => r.status === 'pinned' && r.pin).map((r) => r.pin);
|
|
190
|
+
const expectedPin = computeExpectedPin(pinnedVals, deps.expectedPin);
|
|
191
|
+
const repoPins = pinResults.map((r) => ({
|
|
192
|
+
repo: r.repo,
|
|
193
|
+
pin: r.pin,
|
|
194
|
+
status: r.status,
|
|
195
|
+
consistent: r.status === 'pinned' ? r.pin === expectedPin : null,
|
|
196
|
+
}));
|
|
197
|
+
// Registry index (routability + freshness).
|
|
198
|
+
const registry = await deps.listRegistry();
|
|
199
|
+
const registryByName = new Map(registry.map((e) => [e.name, e.info]));
|
|
200
|
+
// 2 + 3 + 5. Per-agent checks from the routing config.
|
|
201
|
+
const config = await deps.readRoutingConfig();
|
|
202
|
+
const hasRoutingConfig = config !== null;
|
|
203
|
+
const agents = [];
|
|
204
|
+
for (const [label, entry] of Object.entries(config?.agents ?? {})) {
|
|
205
|
+
const regKey = toVariableSegment(label);
|
|
206
|
+
const info = registryByName.get(regKey) ?? null;
|
|
207
|
+
const routable = info !== null;
|
|
208
|
+
const selfSkip = evaluateSelfSkip(label, entry.app_name, deps.botLogins?.[label]);
|
|
209
|
+
const session = evaluateSession(label, entry.tmux_session, deps.project);
|
|
210
|
+
let freshness = 'unregistered';
|
|
211
|
+
let healthInstanceId;
|
|
212
|
+
if (info) {
|
|
213
|
+
const health = await deps.probe(info.host, info.port);
|
|
214
|
+
freshness = classifyFreshness(info, health, now, DEFAULT_REGISTRY_TTL_MS);
|
|
215
|
+
healthInstanceId = health?.instance_id ?? null;
|
|
216
|
+
}
|
|
217
|
+
agents.push({
|
|
218
|
+
label,
|
|
219
|
+
appName: entry.app_name ?? null,
|
|
220
|
+
tmuxSession: entry.tmux_session ?? null,
|
|
221
|
+
routable,
|
|
222
|
+
selfSkipOk: selfSkip.ok,
|
|
223
|
+
selfSkipReason: selfSkip.reason,
|
|
224
|
+
sessionOk: session.ok,
|
|
225
|
+
sessionExpected: session.expected,
|
|
226
|
+
sessionReason: session.reason,
|
|
227
|
+
freshness,
|
|
228
|
+
registryInstanceId: info?.instance_id ?? null,
|
|
229
|
+
healthInstanceId,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
// 4. CA material.
|
|
233
|
+
const ca = evaluateCaCert(await deps.readCaCert());
|
|
234
|
+
return { project: deps.project, repoPins, expectedPin, hasRoutingConfig, agents, ca };
|
|
235
|
+
}
|
|
236
|
+
/** A registry entry's freshness fails the verdict only when definitively `stale`. */
|
|
237
|
+
function freshnessFails(s) {
|
|
238
|
+
return s === 'stale';
|
|
239
|
+
}
|
|
240
|
+
export function routingVerdict(report) {
|
|
241
|
+
if (report.repoPins.length === 0 && report.agents.length === 0)
|
|
242
|
+
return 'EMPTY';
|
|
243
|
+
const participating = report.repoPins.filter((r) => r.consistent !== null);
|
|
244
|
+
const pinFail = participating.some((r) => !r.consistent);
|
|
245
|
+
const agentFail = report.agents.some((a) => !a.routable || !a.selfSkipOk || !a.sessionOk || (a.routable && freshnessFails(a.freshness)));
|
|
246
|
+
const caFail = !report.ca.present || !report.ca.valid;
|
|
247
|
+
return pinFail || agentFail || caFail ? 'DEGRADED' : 'HEALTHY';
|
|
248
|
+
}
|
|
249
|
+
/** `4 fleet repos (pins consistent); 3 agents (2 routing-OK); CA ✓; routing plane: HEALTHY`. */
|
|
250
|
+
export function summaryLine(report) {
|
|
251
|
+
const participating = report.repoPins.filter((r) => r.consistent !== null);
|
|
252
|
+
const pinsOk = participating.length > 0 && participating.every((r) => r.consistent);
|
|
253
|
+
const agentOk = report.agents.filter((a) => a.routable && a.selfSkipOk && a.sessionOk && !freshnessFails(a.freshness)).length;
|
|
254
|
+
const pinClause = participating.length > 0
|
|
255
|
+
? `${participating.length} routing repo(s) (${pinsOk ? 'pins consistent' : 'PIN DIVERGENCE'})`
|
|
256
|
+
: 'no routing-caller repos discovered';
|
|
257
|
+
return (`${pinClause}; ${agentOk}/${report.agents.length} agents routing-OK; ` +
|
|
258
|
+
`CA ${report.ca.valid ? '✓' : '✗'}; routing plane: ${routingVerdict(report)}`);
|
|
259
|
+
}
|
|
260
|
+
// --- Render ---
|
|
261
|
+
function boolGlyph(ok) {
|
|
262
|
+
return ok ? '✓' : '✗';
|
|
263
|
+
}
|
|
264
|
+
/** ✓ consistent / ✗ divergent / `— n/a` (non-caller). */
|
|
265
|
+
export function pinGlyph(consistent) {
|
|
266
|
+
if (consistent === null)
|
|
267
|
+
return '— n/a';
|
|
268
|
+
return consistent ? '✓' : '✗';
|
|
269
|
+
}
|
|
270
|
+
/** Freshness → short glyph: fresh ✓, stale ✗, unreachable/unknown ?, unregistered —. */
|
|
271
|
+
export function freshnessGlyph(s) {
|
|
272
|
+
switch (s) {
|
|
273
|
+
case 'fresh':
|
|
274
|
+
return '✓';
|
|
275
|
+
case 'stale':
|
|
276
|
+
return '✗ stale';
|
|
277
|
+
case 'unreachable':
|
|
278
|
+
return '? unreach';
|
|
279
|
+
case 'unknown':
|
|
280
|
+
return '? unkn';
|
|
281
|
+
case 'unregistered':
|
|
282
|
+
return '—';
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
const REPO_HEADERS = ['REPO', 'CALLER-PIN', 'CONSISTENT'];
|
|
286
|
+
const AGENT_HEADERS = ['AGENT', 'ROUTABLE', 'SELF-SKIP', 'SESSION', 'FRESH'];
|
|
287
|
+
export function buildRepoRows(rows) {
|
|
288
|
+
return rows.map((r) => [r.repo, r.pin ?? (r.status === 'error' ? '(read error)' : '—'), pinGlyph(r.consistent)]);
|
|
289
|
+
}
|
|
290
|
+
export function buildAgentRows(rows) {
|
|
291
|
+
return rows.map((a) => [
|
|
292
|
+
a.label,
|
|
293
|
+
boolGlyph(a.routable),
|
|
294
|
+
boolGlyph(a.selfSkipOk),
|
|
295
|
+
boolGlyph(a.sessionOk),
|
|
296
|
+
freshnessGlyph(a.freshness),
|
|
297
|
+
]);
|
|
298
|
+
}
|
|
299
|
+
export function formatRepoTable(rows) {
|
|
300
|
+
return formatTable(REPO_HEADERS, buildRepoRows(rows));
|
|
301
|
+
}
|
|
302
|
+
export function formatAgentTable(rows) {
|
|
303
|
+
return formatTable(AGENT_HEADERS, buildAgentRows(rows));
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* The honesty legend — these are STATIC GitHub-plane checks: they prove the
|
|
307
|
+
* routing PLUMBING is wired right, NOT that a message was delivered (that is
|
|
308
|
+
* `--e2e`, a later increment). Carried verbatim in the `--json` `disclaimer`.
|
|
309
|
+
*/
|
|
310
|
+
export const HONESTY_LEGEND = [
|
|
311
|
+
'Legend: CALLER-PIN = the macf-actions @version each routing repo pins (must all match).',
|
|
312
|
+
' ROUTABLE = a MACF_AGENT_<LABEL> registry key exists (router resolves by LABEL).',
|
|
313
|
+
' SELF-SKIP = agent-config.json app_name is the bot-LOGIN, not the bare label (#566).',
|
|
314
|
+
' SESSION = tmux_session follows the <project>@<agent> convention (a STATIC convention',
|
|
315
|
+
' check, NOT a match against the live tmux session). FRESH = registry',
|
|
316
|
+
' instance_id == live /health instance_id (✗ stale / ? unreachable-or-unknown).',
|
|
317
|
+
'NOTE: these are STATIC GitHub-plane checks — they prove the routing PLUMBING is wired right,',
|
|
318
|
+
' NOT that a message was delivered end-to-end (that is `macf routing doctor --e2e`, a',
|
|
319
|
+
' later increment). Mesh delivery is `macf fleet doctor`.',
|
|
320
|
+
].join('\n');
|
|
321
|
+
const HONESTY_DISCLAIMER = 'Static GitHub-plane checks: they prove the routing plumbing (caller-pins, registry-as-routing-' +
|
|
322
|
+
'source, CA material, session-name convention) is wired right, NOT that a message was delivered ' +
|
|
323
|
+
'end-to-end (that is --e2e, a later increment). Mesh delivery is `macf fleet doctor`.';
|
|
324
|
+
// --- JSON contract (DR-031 watchdog input; same hard-version discipline as fleet doctor) ---
|
|
325
|
+
/**
|
|
326
|
+
* `schema_version` is the HARD version contract (DR-006 watchdog, devops #118):
|
|
327
|
+
* a consumer asserts `schema_version === <known>` and refuses an unknown value,
|
|
328
|
+
* so ANY breaking change (rename / removal / a same-name SEMANTIC shift) fails
|
|
329
|
+
* LOUD rather than silently misreading. BUMP on any breaking change; additive-
|
|
330
|
+
* optional fields do NOT bump it. Independent from fleet doctor's schema_version
|
|
331
|
+
* (a separate command, a separate contract).
|
|
332
|
+
*/
|
|
333
|
+
export const ROUTING_DOCTOR_JSON_SCHEMA_VERSION = 1;
|
|
334
|
+
export function routingDoctorToJson(report) {
|
|
335
|
+
const participating = report.repoPins.filter((r) => r.consistent !== null);
|
|
336
|
+
return {
|
|
337
|
+
schema_version: ROUTING_DOCTOR_JSON_SCHEMA_VERSION,
|
|
338
|
+
project: report.project,
|
|
339
|
+
summary: {
|
|
340
|
+
verdict: routingVerdict(report),
|
|
341
|
+
routing_repos: participating.length,
|
|
342
|
+
pins_consistent: participating.length > 0 && participating.every((r) => r.consistent),
|
|
343
|
+
expected_pin: report.expectedPin,
|
|
344
|
+
agents_total: report.agents.length,
|
|
345
|
+
agents_routing_ok: report.agents.filter((a) => a.routable && a.selfSkipOk && a.sessionOk && !freshnessFails(a.freshness)).length,
|
|
346
|
+
ca_ok: report.ca.present && report.ca.valid,
|
|
347
|
+
},
|
|
348
|
+
caller_pins: report.repoPins.map((r) => ({
|
|
349
|
+
repo: r.repo,
|
|
350
|
+
pin: r.pin,
|
|
351
|
+
status: r.status,
|
|
352
|
+
consistent: r.consistent,
|
|
353
|
+
})),
|
|
354
|
+
agents: report.agents.map((a) => ({
|
|
355
|
+
label: a.label,
|
|
356
|
+
app_name: a.appName,
|
|
357
|
+
tmux_session: a.tmuxSession,
|
|
358
|
+
routable: a.routable,
|
|
359
|
+
self_skip_ok: a.selfSkipOk,
|
|
360
|
+
self_skip_reason: a.selfSkipReason ?? null,
|
|
361
|
+
session_ok: a.sessionOk,
|
|
362
|
+
session_expected: a.sessionExpected,
|
|
363
|
+
session_reason: a.sessionReason ?? null,
|
|
364
|
+
freshness: a.freshness,
|
|
365
|
+
registry_instance_id: a.registryInstanceId ?? null,
|
|
366
|
+
health_instance_id: a.healthInstanceId ?? null,
|
|
367
|
+
})),
|
|
368
|
+
ca_cert: {
|
|
369
|
+
present: report.ca.present,
|
|
370
|
+
valid: report.ca.valid,
|
|
371
|
+
reason: report.ca.reason ?? null,
|
|
372
|
+
},
|
|
373
|
+
disclaimer: HONESTY_DISCLAIMER,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
// --- Production dep wiring ---
|
|
377
|
+
/** Read the CURRENT project repo's `.github/agent-config.json` from disk. */
|
|
378
|
+
function readLocalRoutingConfig(projectDir) {
|
|
379
|
+
const path = join(projectDir, '.github', 'agent-config.json');
|
|
380
|
+
if (!existsSync(path))
|
|
381
|
+
return null;
|
|
382
|
+
try {
|
|
383
|
+
const parsed = JSON.parse(readFileSync(path, 'utf-8'));
|
|
384
|
+
if (!parsed || typeof parsed !== 'object' || typeof parsed.agents !== 'object')
|
|
385
|
+
return null;
|
|
386
|
+
return parsed;
|
|
387
|
+
}
|
|
388
|
+
catch {
|
|
389
|
+
return null;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
async function resolveDepsFromRegistry(projectDir) {
|
|
393
|
+
const config = readAgentConfig(projectDir);
|
|
394
|
+
if (!config) {
|
|
395
|
+
console.error('No macf-agent.json found. Run `macf init` first.');
|
|
396
|
+
return { ok: false, code: 1 };
|
|
397
|
+
}
|
|
398
|
+
if (config.registry.type === 'local') {
|
|
399
|
+
console.error('`macf routing doctor` checks the GitHub routing plane; local-registry mode has none.');
|
|
400
|
+
return { ok: false, code: 1 };
|
|
401
|
+
}
|
|
402
|
+
const token = await generateToken(tokenSourceFromConfig(projectDir, config));
|
|
403
|
+
const registry = createRegistryFromConfig(config.registry, config.project, token);
|
|
404
|
+
const client = createClientFromConfig(config.registry, token);
|
|
405
|
+
const caVarName = `${toVariableSegment(config.project)}_CA_CERT`;
|
|
406
|
+
// Read the CA cert ONCE: it's both the freshness-probe trust anchor AND the
|
|
407
|
+
// subject of the CA-material check. A malformed value just makes the probe fail
|
|
408
|
+
// (→ unreachable), which is itself a correct signal.
|
|
409
|
+
const caCertPem = await client.readVariable(caVarName);
|
|
410
|
+
const certPath = agentCertPath(projectDir);
|
|
411
|
+
const keyPath = agentKeyPath(projectDir);
|
|
412
|
+
// Authoritative bot-login for THIS agent's own routing label (macf#535). Other
|
|
413
|
+
// labels fall back to the #566 bare-label heuristic in evaluateSelfSkip.
|
|
414
|
+
const ownLabel = config.routing_label ?? config.agent_name;
|
|
415
|
+
const ownBotLogin = config.github_app?.bot_login;
|
|
416
|
+
const botLogins = ownBotLogin ? { [ownLabel]: ownBotLogin } : undefined;
|
|
417
|
+
// The GitHub reader fallback for the routing config: prefer the local file (we
|
|
418
|
+
// are usually IN the project repo), else read the current repo via gh.
|
|
419
|
+
const ghRoutingReader = createRoutingConfigGhReader(token);
|
|
420
|
+
const localRouting = readLocalRoutingConfig(projectDir);
|
|
421
|
+
return {
|
|
422
|
+
ok: true,
|
|
423
|
+
deps: {
|
|
424
|
+
project: config.project,
|
|
425
|
+
botLogins,
|
|
426
|
+
listRepos: createInstallRepoLister(token),
|
|
427
|
+
readCallerPin: createCallerPinReader(token),
|
|
428
|
+
readRoutingConfig: async () => localRouting ?? (await ghRoutingReader(detectCurrentRepo(projectDir) ?? '')),
|
|
429
|
+
listRegistry: () => registry.list(''),
|
|
430
|
+
probe: (host, port) => pingAgentHealth({ host, port, caCertPem: caCertPem ?? '', certPath, keyPath }),
|
|
431
|
+
readCaCert: async () => caCertPem,
|
|
432
|
+
},
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
/** Best-effort `owner/repo` from the project's git remote (for the gh routing-config fallback). */
|
|
436
|
+
function detectCurrentRepo(projectDir) {
|
|
437
|
+
try {
|
|
438
|
+
const path = join(projectDir, '.git', 'config');
|
|
439
|
+
if (!existsSync(path))
|
|
440
|
+
return null;
|
|
441
|
+
const m = /github\.com[:/]([^/\s]+\/[^/\s.]+)(?:\.git)?/.exec(readFileSync(path, 'utf-8'));
|
|
442
|
+
return m ? m[1] : null;
|
|
443
|
+
}
|
|
444
|
+
catch {
|
|
445
|
+
return null;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
/**
|
|
449
|
+
* `macf routing doctor` entry point. Returns the shell exit code — 1 when the
|
|
450
|
+
* routing plane is DEGRADED, 0 when HEALTHY or EMPTY (matching `fleet doctor` /
|
|
451
|
+
* `macf doctor` "non-zero on problem"). The `--json` body prints regardless; the
|
|
452
|
+
* watchdog reads `summary.verdict`. `deps` is injected by tests.
|
|
453
|
+
*/
|
|
454
|
+
export async function runRoutingDoctor(projectDir, opts = {}, deps) {
|
|
455
|
+
let resolved = deps;
|
|
456
|
+
if (!resolved) {
|
|
457
|
+
const r = await resolveDepsFromRegistry(projectDir);
|
|
458
|
+
if (!r.ok)
|
|
459
|
+
return r.code;
|
|
460
|
+
resolved = r.deps;
|
|
461
|
+
}
|
|
462
|
+
if (opts.expectedPin && !resolved.expectedPin) {
|
|
463
|
+
resolved = { ...resolved, expectedPin: opts.expectedPin };
|
|
464
|
+
}
|
|
465
|
+
const report = await gatherRoutingDoctor(resolved);
|
|
466
|
+
const verdict = routingVerdict(report);
|
|
467
|
+
if (opts.json) {
|
|
468
|
+
console.log(JSON.stringify(routingDoctorToJson(report), null, 2));
|
|
469
|
+
return verdict === 'DEGRADED' ? 1 : 0;
|
|
470
|
+
}
|
|
471
|
+
const header = `macf routing doctor — ${report.project}`;
|
|
472
|
+
if (verdict === 'EMPTY') {
|
|
473
|
+
console.log(`${header}\n\nNo fleet repos discovered and no routing config agents. Nothing to check.`);
|
|
474
|
+
if (!report.ca.present)
|
|
475
|
+
console.log('Note: MACF_CA_CERT not found in the registry.');
|
|
476
|
+
return 0;
|
|
477
|
+
}
|
|
478
|
+
console.log(`${header}\n`);
|
|
479
|
+
if (report.repoPins.length > 0) {
|
|
480
|
+
console.log('Caller-pin consistency (App install-set):');
|
|
481
|
+
console.log(formatRepoTable(report.repoPins));
|
|
482
|
+
if (report.expectedPin)
|
|
483
|
+
console.log(`Expected pin (modal): ${report.expectedPin}`);
|
|
484
|
+
console.log('');
|
|
485
|
+
}
|
|
486
|
+
else {
|
|
487
|
+
console.log('Caller-pin consistency: no fleet repos discovered (App install-set unavailable).\n');
|
|
488
|
+
}
|
|
489
|
+
if (report.hasRoutingConfig) {
|
|
490
|
+
console.log('Per-agent routing checks (current project routing config):');
|
|
491
|
+
console.log(formatAgentTable(report.agents));
|
|
492
|
+
console.log('');
|
|
493
|
+
}
|
|
494
|
+
else {
|
|
495
|
+
console.log('Per-agent routing checks: no .github/agent-config.json found for this project.\n');
|
|
496
|
+
}
|
|
497
|
+
console.log(`MACF_CA_CERT: ${report.ca.present ? (report.ca.valid ? '✓ present + parses' : `✗ ${report.ca.reason}`) : '✗ absent'}`);
|
|
498
|
+
console.log('');
|
|
499
|
+
console.log(summaryLine(report));
|
|
500
|
+
console.log('');
|
|
501
|
+
console.log(HONESTY_LEGEND);
|
|
502
|
+
return verdict === 'DEGRADED' ? 1 : 0;
|
|
503
|
+
}
|
|
504
|
+
//# sourceMappingURL=routing-doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/routing-doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AA8DA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,KAAK,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AAa9C,UAAU,OAAO;IACf,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAKxB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,cAAc,GAAG,kBAAkB,CAAC;CAC9G;AAED,wBAAgB,SAAS,CACvB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,gBAAgB,GACzB,SAAS,OAAO,EAAE,CAepB;AAgCD,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAM3D;AA+BD;;GAEG;AACH,wBAAsB,MAAM,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,MAAM,CAAC,CAiWjB"}
|
|
@@ -49,6 +49,7 @@ import { installGhTokenHook, installPluginSkillPermissions, installSandboxFdAllo
|
|
|
49
49
|
import { detectStaleDist, detectUnknownFreshness } from '../build-info.js';
|
|
50
50
|
import { fetchPluginToWorkspace, workspacePluginDir, pinChannelServerVersion } from '../plugin-fetcher.js';
|
|
51
51
|
import { writeClaudeSh } from '../claude-sh.js';
|
|
52
|
+
import { writeHostPrelude } from '../host-prelude.js';
|
|
52
53
|
import { refreshEnvFiles, migrateMonolithicClaudeSh, detectSettingsLocalEnvKeys, formatDeprecationWarning, } from '../env-files-update.js';
|
|
53
54
|
import { createClientFromConfig } from '../registry-helper.js';
|
|
54
55
|
import { generateToken } from '@groundnuty/macf-core';
|
|
@@ -302,6 +303,14 @@ export async function update(projectDir, opts) {
|
|
|
302
303
|
`preserved ${refresh.preserved.length} operator-managed file(s); ` +
|
|
303
304
|
`warned on ${refresh.warnedHandEdits.length} hand-edit(s)`;
|
|
304
305
|
console.log(summary);
|
|
306
|
+
// Host-toolchain bootstrap (DR-031 piece 4). Re-detect the backend +
|
|
307
|
+
// regenerate .claude/.macf/host-prelude.sh in lockstep with claude.sh.
|
|
308
|
+
// This is macf-managed + RE-DETECTED (never preserve-existing) — the
|
|
309
|
+
// host's toolchain may have changed since the last update, and the
|
|
310
|
+
// dynamic re-source the file emits must reflect the current backend.
|
|
311
|
+
// The thin claude.sh sources it FIRST (before the env.* loop).
|
|
312
|
+
writeHostPrelude(projectDir);
|
|
313
|
+
console.log(`Refreshed host-prelude.sh from current toolchain detection`);
|
|
305
314
|
}
|
|
306
315
|
// macf#342 PR-C deprecation surface: settings.local.json env keys
|
|
307
316
|
// matching MACF_* / OTEL_* are now redundant with the per-concern
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
|