@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
package/dist/.build-info.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-sh.d.ts","sourceRoot":"","sources":["../../src/cli/claude-sh.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAuBnD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CA4B/D;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAejD;AA0ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,CAgEV;AA4BD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CAkBhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CAiB1D;AAiBD;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CAgC1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"claude-sh.d.ts","sourceRoot":"","sources":["../../src/cli/claude-sh.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAuBnD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CA4B/D;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,EAAE,CAejD;AA0ED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,EAAE,CAgEV;AA4BD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CAkBhE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CAiB1D;AAiBD;;;;;;;;;GASG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,EAAE,CAgC1E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CA+GhE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,MAAM,CAUnF"}
|
package/dist/cli/claude-sh.js
CHANGED
|
@@ -488,6 +488,19 @@ export function generateClaudeSh(config) {
|
|
|
488
488
|
'SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"',
|
|
489
489
|
'cd "$SCRIPT_DIR"',
|
|
490
490
|
'',
|
|
491
|
+
'# Host toolchain bootstrap (DR-031 piece 4). Source host-prelude.sh',
|
|
492
|
+
'# FIRST — before the env.* loop, the tmux self-wrap, and the final claude',
|
|
493
|
+
'# launch — so the toolchain (claude / jq / node / tmux) is on PATH when the',
|
|
494
|
+
'# launch context has a MINIMAL env that did not inherit the operator',
|
|
495
|
+
'# login-shell PATH: cron, a detached restart-self relauncher, or a',
|
|
496
|
+
'# container entrypoint. The env.* files (token mint needs gh/jq/openssl)',
|
|
497
|
+
'# and claude itself depend on the toolchain this re-establishes; it is',
|
|
498
|
+
'# macf-managed + re-detected (devbox/brew/none) on every `macf update`.',
|
|
499
|
+
'# The `[ -f ] &&` form is set -e safe (the left of && is not the final',
|
|
500
|
+
"# command) and lets a workspace lacking the file (older init) still",
|
|
501
|
+
"# launch. The same path is consumed by restart-self's relauncher.",
|
|
502
|
+
'[ -f "$SCRIPT_DIR/.claude/.macf/host-prelude.sh" ] && source "$SCRIPT_DIR/.claude/.macf/host-prelude.sh"',
|
|
503
|
+
'',
|
|
491
504
|
'# Source per-concern env files (macf#342). Shell glob sorts',
|
|
492
505
|
'# alphabetically, so env._helpers (underscore prefix sorts before',
|
|
493
506
|
'# letters) loads first and defines macf_settings_get used by',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-sh.js","sourceRoot":"","sources":["../../src/cli/claude-sh.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-sh.js","sourceRoot":"","sources":["../../src/cli/claude-sh.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { HealthResponse } from '@groundnuty/macf-core';
|
|
2
|
+
/** Outcome of the inject `/notify` POST (the real mention probe). */
|
|
3
|
+
export interface InjectPostResult {
|
|
4
|
+
/** HTTP 200 — the probe entered the receiver (onNotify ran). */
|
|
5
|
+
readonly delivered: boolean;
|
|
6
|
+
/** Short reason when not delivered (transport error / non-200). */
|
|
7
|
+
readonly error?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* POST the REAL inject `/notify` mention (marker in `message`). Injectable for
|
|
11
|
+
* tests. `runId` is the digits-only correlation id embedded in the marker;
|
|
12
|
+
* `markerAgent` is the kebab agent slug the marker carries.
|
|
13
|
+
*/
|
|
14
|
+
export type FleetInjectPostFn = (host: string, port: number, runId: string, markerAgent: string) => Promise<InjectPostResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Poll the target's `/health` ONCE and return the CURRENT
|
|
17
|
+
* `last_processed.correlation_token` (the most-recent processed receipt's
|
|
18
|
+
* `run_id`), or `null` when absent. Injectable for tests.
|
|
19
|
+
*/
|
|
20
|
+
export type FleetInjectPollFn = (host: string, port: number) => Promise<string | null>;
|
|
21
|
+
/**
|
|
22
|
+
* The REAL inject `/notify` POST. Mirrors `postDiagnosticNotify`'s mTLS request
|
|
23
|
+
* shape (same CA + client cert/key, `rejectUnauthorized`, timeout) but sends a
|
|
24
|
+
* NON-diagnostic `mention` whose `message` carries the
|
|
25
|
+
* `[macf-route:<runId>:<markerAgent>]` marker. Resolves `{ delivered: true }`
|
|
26
|
+
* only on HTTP 200; never throws (failures become `{ delivered:false, error }`).
|
|
27
|
+
*/
|
|
28
|
+
export declare function postInjectNotify(config: {
|
|
29
|
+
readonly host: string;
|
|
30
|
+
readonly port: number;
|
|
31
|
+
readonly caCertPem: string;
|
|
32
|
+
readonly certPath: string;
|
|
33
|
+
readonly keyPath: string;
|
|
34
|
+
readonly runId: string;
|
|
35
|
+
readonly markerAgent: string;
|
|
36
|
+
readonly timeoutMs?: number;
|
|
37
|
+
}): Promise<InjectPostResult>;
|
|
38
|
+
/** Extract `last_processed.correlation_token` from a parsed `/health` body. */
|
|
39
|
+
export declare function readCorrelationToken(health: HealthResponse | null): string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Poll one agent's `/health` (reusing the shared mTLS probe) and return its
|
|
42
|
+
* CURRENT `last_processed.correlation_token`, or `null`. Production
|
|
43
|
+
* `FleetInjectPollFn`.
|
|
44
|
+
*/
|
|
45
|
+
export declare function pollLastProcessedToken(config: {
|
|
46
|
+
readonly host: string;
|
|
47
|
+
readonly port: number;
|
|
48
|
+
readonly caCertPem: string;
|
|
49
|
+
readonly certPath: string;
|
|
50
|
+
readonly keyPath: string;
|
|
51
|
+
}): Promise<string | null>;
|
|
52
|
+
//# sourceMappingURL=fleet-doctor-inject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-doctor-inject.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/fleet-doctor-inject.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAK5D,qEAAqE;AACrE,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,KAChB,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE/B;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAEvF;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoD5B;AAaD,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGjF;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGzB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `macf fleet doctor --inject` — the network I/O leaf for the INVASIVE
|
|
3
|
+
* Processed-now delivery-proof tier (DR-030 §3, macf#568 final increment).
|
|
4
|
+
*
|
|
5
|
+
* Split out of `fleet-doctor.ts` so the mTLS request shapes live in one small,
|
|
6
|
+
* dependency-free module (this file imports NOTHING from `fleet-doctor.ts` — the
|
|
7
|
+
* dependency is strictly one-directional, `fleet-doctor.ts` → here). The pure
|
|
8
|
+
* orchestration (per-agent poll loop, glyphs, JSON, legends) stays in
|
|
9
|
+
* `fleet-doctor.ts`.
|
|
10
|
+
*
|
|
11
|
+
* The load-bearing mechanism — verified against `notify-formatter.ts` +
|
|
12
|
+
* `server.ts` + `comms-ledger.ts` + `emit-turn-receipt.sh`:
|
|
13
|
+
*
|
|
14
|
+
* POST /notify { type:'mention', message:'… [macf-route:<runId>:<agent>] …' }
|
|
15
|
+
* → https.ts (NON-diagnostic → falls through to onNotify)
|
|
16
|
+
* → formatNotifyContent(mention) returns { content: payload.message } VERBATIM
|
|
17
|
+
* → server.ts feeds `content` to BOTH mcp.pushNotification AND wakeViaTmux
|
|
18
|
+
* (decideWake → 'mention' is a standard type → WAKE), which types `content`
|
|
19
|
+
* into the agent's TUI input buffer → submitted as the agent's next TURN
|
|
20
|
+
* → emit-turn-receipt.sh (UserPromptSubmit hook) greps the marker out of the
|
|
21
|
+
* prompt and appends {ts, run_id, agent} to processed-receipts.jsonl
|
|
22
|
+
* → /health.last_processed.correlation_token === <runId> (mapReceiptToLast-
|
|
23
|
+
* Processed sets correlation_token = receipt.run_id — comms-ledger.ts).
|
|
24
|
+
*
|
|
25
|
+
* Matching the echoed run_id proves the full deliver→process chain. The
|
|
26
|
+
* `mention` `message` field is the carrier because `formatNotifyContent` passes
|
|
27
|
+
* it through unchanged (a `diagnostic:true` payload would short-circuit at the
|
|
28
|
+
* server BEFORE any push — so we must NOT set it).
|
|
29
|
+
*/
|
|
30
|
+
import { request } from 'node:https';
|
|
31
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
32
|
+
import { pingAgentHealth } from '@groundnuty/macf-core';
|
|
33
|
+
/** Same per-request timeout as the non-invasive tiers' mTLS calls. */
|
|
34
|
+
const DEFAULT_TIMEOUT_MS = 5000;
|
|
35
|
+
/**
|
|
36
|
+
* The REAL inject `/notify` POST. Mirrors `postDiagnosticNotify`'s mTLS request
|
|
37
|
+
* shape (same CA + client cert/key, `rejectUnauthorized`, timeout) but sends a
|
|
38
|
+
* NON-diagnostic `mention` whose `message` carries the
|
|
39
|
+
* `[macf-route:<runId>:<markerAgent>]` marker. Resolves `{ delivered: true }`
|
|
40
|
+
* only on HTTP 200; never throws (failures become `{ delivered:false, error }`).
|
|
41
|
+
*/
|
|
42
|
+
export async function postInjectNotify(config) {
|
|
43
|
+
const { host, port, caCertPem, certPath, keyPath, runId, markerAgent, timeoutMs = DEFAULT_TIMEOUT_MS } = config;
|
|
44
|
+
if (!existsSync(certPath) || !existsSync(keyPath)) {
|
|
45
|
+
return { delivered: false, error: 'client cert/key missing' };
|
|
46
|
+
}
|
|
47
|
+
const payload = JSON.stringify({
|
|
48
|
+
type: 'mention',
|
|
49
|
+
source: 'fleet-doctor',
|
|
50
|
+
message: `fleet-doctor --inject probe (run_id=${runId}) — no action needed; this verifies ` +
|
|
51
|
+
`delivery is processed end-to-end. [macf-route:${runId}:${markerAgent}]`,
|
|
52
|
+
});
|
|
53
|
+
return new Promise((resolve) => {
|
|
54
|
+
const req = request({
|
|
55
|
+
hostname: host,
|
|
56
|
+
port,
|
|
57
|
+
method: 'POST',
|
|
58
|
+
path: '/notify',
|
|
59
|
+
ca: Buffer.from(caCertPem),
|
|
60
|
+
cert: readFileSync(certPath),
|
|
61
|
+
key: readFileSync(keyPath),
|
|
62
|
+
rejectUnauthorized: true,
|
|
63
|
+
timeout: timeoutMs,
|
|
64
|
+
headers: {
|
|
65
|
+
'content-type': 'application/json',
|
|
66
|
+
'content-length': Buffer.byteLength(payload),
|
|
67
|
+
},
|
|
68
|
+
}, (res) => {
|
|
69
|
+
const status = res.statusCode ?? null;
|
|
70
|
+
res.on('data', () => { });
|
|
71
|
+
res.on('end', () => {
|
|
72
|
+
resolve(status === 200
|
|
73
|
+
? { delivered: true }
|
|
74
|
+
: { delivered: false, error: status === null ? 'no response' : `http ${status}` });
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
req.on('error', (e) => resolve({ delivered: false, error: e.message }));
|
|
78
|
+
req.on('timeout', () => {
|
|
79
|
+
req.destroy();
|
|
80
|
+
resolve({ delivered: false, error: 'timeout' });
|
|
81
|
+
});
|
|
82
|
+
req.write(payload);
|
|
83
|
+
req.end();
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/** Extract `last_processed.correlation_token` from a parsed `/health` body. */
|
|
87
|
+
export function readCorrelationToken(health) {
|
|
88
|
+
const lp = health?.last_processed;
|
|
89
|
+
return lp?.correlation_token ?? null;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Poll one agent's `/health` (reusing the shared mTLS probe) and return its
|
|
93
|
+
* CURRENT `last_processed.correlation_token`, or `null`. Production
|
|
94
|
+
* `FleetInjectPollFn`.
|
|
95
|
+
*/
|
|
96
|
+
export async function pollLastProcessedToken(config) {
|
|
97
|
+
const health = await pingAgentHealth(config);
|
|
98
|
+
return readCorrelationToken(health);
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=fleet-doctor-inject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-doctor-inject.js","sourceRoot":"","sources":["../../../src/cli/commands/fleet-doctor-inject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import type { AgentInfo, HealthResponse } from '@groundnuty/macf-core';
|
|
2
|
+
import type { FleetInjectPostFn, FleetInjectPollFn } from './fleet-doctor-inject.js';
|
|
3
|
+
/**
|
|
4
|
+
* The diagnostic `/notify` ACK body (the wire contract a SIBLING increment adds
|
|
5
|
+
* server-side; pinned here EXACTLY). The server short-circuits a `diagnostic:
|
|
6
|
+
* true` payload to this ACK before any MCP push and echoes the token back.
|
|
7
|
+
*/
|
|
8
|
+
export interface DiagnosticAckBody {
|
|
9
|
+
readonly ack?: boolean;
|
|
10
|
+
readonly agent?: string;
|
|
11
|
+
readonly instance_id?: string;
|
|
12
|
+
readonly correlation_token?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Raw result of the diagnostic POST — what the server returned (or why not). */
|
|
15
|
+
export interface DiagnosticAck {
|
|
16
|
+
/** HTTP status, or null when no response arrived (refused / timeout / cert). */
|
|
17
|
+
readonly status: number | null;
|
|
18
|
+
/** Parsed ACK body, or null on non-JSON / no response. */
|
|
19
|
+
readonly body: DiagnosticAckBody | null;
|
|
20
|
+
/** Short failure reason for diagnostics, when not a clean ACK. */
|
|
21
|
+
readonly error?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Probe a single endpoint's `/health`; null on any failure. Injectable for tests. */
|
|
24
|
+
export type FleetProbeFn = (host: string, port: number) => Promise<HealthResponse | null>;
|
|
25
|
+
/** POST the diagnostic `/notify` and collect the ACK. Injectable for tests. */
|
|
26
|
+
export type FleetDiagnosticFn = (host: string, port: number, correlationToken: string) => Promise<DiagnosticAck>;
|
|
27
|
+
/** Tuning + injectable seams for the Processed-now inject tier. */
|
|
28
|
+
export interface FleetInjectConfig {
|
|
29
|
+
readonly post: FleetInjectPostFn;
|
|
30
|
+
readonly poll: FleetInjectPollFn;
|
|
31
|
+
/** Generate a unique DIGITS-ONLY run id (marker regex requires `[0-9]+`). */
|
|
32
|
+
readonly genRunId?: () => string;
|
|
33
|
+
/** How many times to poll `/health` after the POST (default 7). */
|
|
34
|
+
readonly maxPolls?: number;
|
|
35
|
+
/** Delay between polls, ms (default 4000 → ~24s total at 7 polls). */
|
|
36
|
+
readonly pollIntervalMs?: number;
|
|
37
|
+
/** Injectable delay (tests pass a no-op for instant, deterministic runs). */
|
|
38
|
+
readonly sleep?: (ms: number) => Promise<void>;
|
|
39
|
+
}
|
|
40
|
+
/** Default digits-only run id: epoch-ms + 6 random digits → unique, `[0-9]+`. */
|
|
41
|
+
export declare function defaultRunId(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Sanitize a registry name into a marker-legal agent slug. The
|
|
44
|
+
* `emit-turn-receipt.sh` grep is `\[macf-route:[0-9]+:[a-z0-9-]+\]`, so an
|
|
45
|
+
* UNsanitized label with an underscore/uppercase would fail the whole-marker
|
|
46
|
+
* match → no receipt written → a false UNCONFIRMED. Lowercase + map any
|
|
47
|
+
* out-of-class char to `-`; fall back to `agent` if the result is empty.
|
|
48
|
+
*/
|
|
49
|
+
export declare function sanitizeMarkerAgent(name: string): string;
|
|
50
|
+
/** One agent's two-tier ladder result. */
|
|
51
|
+
export interface FleetDoctorResult {
|
|
52
|
+
readonly name: string;
|
|
53
|
+
readonly host: string;
|
|
54
|
+
readonly port: number;
|
|
55
|
+
/** mTLS `/health` answered. */
|
|
56
|
+
readonly reachable: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Diagnostic `/notify` ACK'd (200 + ack + token-echo match). `null` when NOT
|
|
59
|
+
* attempted (agent unreachable — the ladder stops at tier 1).
|
|
60
|
+
*/
|
|
61
|
+
readonly accepted: boolean | null;
|
|
62
|
+
/** `agent` (routing label) echoed by the ACK, when present. */
|
|
63
|
+
readonly ackAgent?: string;
|
|
64
|
+
/** `instance_id` echoed by the ACK, when present. */
|
|
65
|
+
readonly instanceId?: string;
|
|
66
|
+
/** Why the Accepted tier was not green, when attempted-but-failed. */
|
|
67
|
+
readonly acceptError?: string;
|
|
68
|
+
/**
|
|
69
|
+
* Processed-now (`--inject`) tier — TRI-STATE, and ONLY populated when
|
|
70
|
+
* `--inject` runs against a REACHABLE agent:
|
|
71
|
+
* - `true` → the probe's `run_id` echoed back via `/health.last_processed`
|
|
72
|
+
* within the poll window (full deliver→process chain proven).
|
|
73
|
+
* - `false` → UNCONFIRMED: delivered but the echo didn't appear in the
|
|
74
|
+
* window (a busy agent legitimately may not process in time —
|
|
75
|
+
* NOT proof of a gap), OR the inject POST itself wasn't delivered.
|
|
76
|
+
* - `null` → NOT attempted (agent unreachable, or `--inject` not passed).
|
|
77
|
+
*/
|
|
78
|
+
readonly processedInject?: boolean | null;
|
|
79
|
+
/** The marker `run_id` routed for this agent (diagnostics; inject mode only). */
|
|
80
|
+
readonly injectRunId?: string;
|
|
81
|
+
/** Why Processed was not green (unconfirmed within window / POST not delivered). */
|
|
82
|
+
readonly injectError?: string;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Accepted = HTTP 200 AND `ack === true` AND the echoed `correlation_token`
|
|
86
|
+
* matches what we sent. The token echo is the load-bearing check — it proves
|
|
87
|
+
* the 200 is a real round-trip of OUR request, not a coincidental success.
|
|
88
|
+
*/
|
|
89
|
+
export declare function isAccepted(sentToken: string, ack: DiagnosticAck): boolean;
|
|
90
|
+
/** Human-readable reason the Accepted tier failed (used in `--json`/diagnostics). */
|
|
91
|
+
export declare function acceptFailureReason(sentToken: string, ack: DiagnosticAck): string;
|
|
92
|
+
/**
|
|
93
|
+
* Run the Processed-now (`--inject`) tier for ONE reachable agent: route a real
|
|
94
|
+
* marker-bearing mention, then poll `/health.last_processed.correlation_token`
|
|
95
|
+
* for our `run_id`. Returns the tri-state outcome + diagnostics. PURE w.r.t.
|
|
96
|
+
* `inject.post`/`inject.poll`/`inject.sleep` — tests inject fakes (and a no-op
|
|
97
|
+
* sleep) so nothing hits the network and there are no real waits.
|
|
98
|
+
*/
|
|
99
|
+
export declare function runProcessedInject(peer: {
|
|
100
|
+
readonly name: string;
|
|
101
|
+
readonly info: AgentInfo;
|
|
102
|
+
}, ackAgent: string | undefined, inject: FleetInjectConfig): Promise<{
|
|
103
|
+
readonly processedInject: boolean;
|
|
104
|
+
readonly injectRunId: string;
|
|
105
|
+
readonly injectError?: string;
|
|
106
|
+
}>;
|
|
107
|
+
/**
|
|
108
|
+
* Run the ladder per peer: probe `/health`, then (only if reachable) POST the
|
|
109
|
+
* diagnostic `/notify`. When `inject` is supplied (`--inject`), ALSO run the
|
|
110
|
+
* INVASIVE Processed-now tier on each reachable agent (routes a real prompt +
|
|
111
|
+
* wakes the agent). PURE w.r.t. `probe`/`diagnose`/`genToken`/`inject` — tests
|
|
112
|
+
* inject fakes so nothing hits the network.
|
|
113
|
+
*/
|
|
114
|
+
export declare function gatherFleetDoctor(peers: readonly {
|
|
115
|
+
readonly name: string;
|
|
116
|
+
readonly info: AgentInfo;
|
|
117
|
+
}[], probe: FleetProbeFn, diagnose: FleetDiagnosticFn, genToken?: () => string, inject?: FleetInjectConfig): Promise<readonly FleetDoctorResult[]>;
|
|
118
|
+
/** ✓ / ✗ for a boolean reachability flag. */
|
|
119
|
+
export declare function reachableGlyph(reachable: boolean): string;
|
|
120
|
+
/** ✓ / ✗ / — for the tri-state Accepted (null = not attempted). */
|
|
121
|
+
export declare function acceptedGlyph(accepted: boolean | null): string;
|
|
122
|
+
/**
|
|
123
|
+
* Processed glyph (inject tier). ✓ = run_id echoed (processed end-to-end);
|
|
124
|
+
* `?` = UNCONFIRMED within the window (delivered but not echoed — possibly a
|
|
125
|
+
* busy agent, NOT necessarily a gap — deliberately NOT `✗`); `—` = not
|
|
126
|
+
* attempted (unreachable / inject off).
|
|
127
|
+
*/
|
|
128
|
+
export declare function processedGlyph(processed: boolean | null | undefined): string;
|
|
129
|
+
/**
|
|
130
|
+
* Build one display row per agent (pure — exported for tests). When `inject`
|
|
131
|
+
* is true, append the PROCESSED column.
|
|
132
|
+
*/
|
|
133
|
+
export declare function buildDoctorRows(results: readonly FleetDoctorResult[], inject?: boolean): readonly (readonly string[])[];
|
|
134
|
+
/** Full rendered table (pure — exported for tests). */
|
|
135
|
+
export declare function formatDoctorTable(results: readonly FleetDoctorResult[], inject?: boolean): string;
|
|
136
|
+
/** Mesh verdict: all-green → HEALTHY, any-fail → DEGRADED, no agents → EMPTY. */
|
|
137
|
+
export type MeshVerdict = 'HEALTHY' | 'DEGRADED' | 'EMPTY';
|
|
138
|
+
export declare function meshVerdict(results: readonly FleetDoctorResult[]): MeshVerdict;
|
|
139
|
+
/** `3/4 agents reachable + accepting; mesh interconnect: DEGRADED`. */
|
|
140
|
+
export declare function summaryLine(results: readonly FleetDoctorResult[]): string;
|
|
141
|
+
/**
|
|
142
|
+
* The honesty footnote — non-invasive checks prove protocol-to-server ONLY.
|
|
143
|
+
* Kept as a single block so it renders identically in the table output and is
|
|
144
|
+
* carried verbatim in the `--json` `disclaimer` field.
|
|
145
|
+
*/
|
|
146
|
+
export declare const HONESTY_LEGEND: string;
|
|
147
|
+
/**
|
|
148
|
+
* The `--inject` Processed-tier legend. INVASIVE: it routes a real probe to each
|
|
149
|
+
* reachable agent + costs it a turn. A `?` (UNCONFIRMED) is NOT "deaf" — a busy
|
|
150
|
+
* agent mid-long-turn legitimately won't process the probe within the window.
|
|
151
|
+
*/
|
|
152
|
+
export declare const INJECT_LEGEND: string;
|
|
153
|
+
/** `2/3 reachable agents processed an injected probe (1 unconfirmed — possibly busy)`. */
|
|
154
|
+
export declare function injectSummaryLine(results: readonly FleetDoctorResult[]): string;
|
|
155
|
+
/** Count of reachable agents an `--inject` run will WAKE (for the up-front warning). */
|
|
156
|
+
export declare function injectableCount(results: readonly FleetDoctorResult[]): number;
|
|
157
|
+
/**
|
|
158
|
+
* Structured `--json` shape for automation. THIS IS THE INPUT CONTRACT the
|
|
159
|
+
* DR-031 watchdog consumes — keep it clean + stable. `accepted` is tri-state
|
|
160
|
+
* (`true`/`false`/`null`); `summary.verdict` is the machine-readable health.
|
|
161
|
+
*
|
|
162
|
+
* `schema_version` is the HARD version contract (DR-006 watchdog request,
|
|
163
|
+
* macf-devops-toolkit#115): a consumer asserts `schema_version === <known>`
|
|
164
|
+
* and refuses an unknown value, so it fails LOUD on ANY breaking change —
|
|
165
|
+
* not just a renamed key (which a presence-check catches) but a same-name
|
|
166
|
+
* SEMANTIC change (e.g. `accepted` going tri-state-bool → string-enum) that
|
|
167
|
+
* would otherwise parse clean and silently misread (the Instance-13-adjacent
|
|
168
|
+
* silent-fallback at the supervisor's own input). BUMP this on any breaking
|
|
169
|
+
* change (rename / removal / semantic shift); additive-optional fields do NOT
|
|
170
|
+
* bump it.
|
|
171
|
+
*/
|
|
172
|
+
export declare const FLEET_DOCTOR_JSON_SCHEMA_VERSION = 1;
|
|
173
|
+
/**
|
|
174
|
+
* `--inject` ADDS `processed_inject` (+ `inject_run_id` / `inject_error` /
|
|
175
|
+
* top-level `inject`) WITHOUT a `schema_version` bump. Per the documented policy
|
|
176
|
+
* above, additive-OPTIONAL fields do NOT bump the version (a bump is reserved
|
|
177
|
+
* for rename / removal / a same-name SEMANTIC shift). `processed_inject` is
|
|
178
|
+
* present ONLY when `--inject` ran (`opts.inject`); a watchdog that pins
|
|
179
|
+
* `schema_version === 1` keeps parsing clean and simply ignores the new key —
|
|
180
|
+
* exactly the additive-tolerance the version contract is built for.
|
|
181
|
+
*/
|
|
182
|
+
export declare function fleetDoctorToJson(results: readonly FleetDoctorResult[], project?: string, opts?: {
|
|
183
|
+
readonly inject?: boolean;
|
|
184
|
+
}): unknown;
|
|
185
|
+
/**
|
|
186
|
+
* The real mTLS diagnostic POST. Mirrors `pingAgentHealth`'s request shape
|
|
187
|
+
* (same CA + client cert/key, `rejectUnauthorized`, timeout) but POSTs the
|
|
188
|
+
* diagnostic body to `/notify`. Resolves with a `DiagnosticAck` describing the
|
|
189
|
+
* outcome; never throws (failures become `{ status: null, error }`).
|
|
190
|
+
*/
|
|
191
|
+
export declare function postDiagnosticNotify(config: {
|
|
192
|
+
readonly host: string;
|
|
193
|
+
readonly port: number;
|
|
194
|
+
readonly caCertPem: string;
|
|
195
|
+
readonly certPath: string;
|
|
196
|
+
readonly keyPath: string;
|
|
197
|
+
readonly correlationToken: string;
|
|
198
|
+
readonly timeoutMs?: number;
|
|
199
|
+
}): Promise<DiagnosticAck>;
|
|
200
|
+
/** Options for `runFleetDoctor`. */
|
|
201
|
+
export interface RunFleetDoctorOptions {
|
|
202
|
+
/** Emit the structured per-agent result as JSON instead of a table. */
|
|
203
|
+
readonly json?: boolean;
|
|
204
|
+
/** Run the INVASIVE Processed-now tier — routes a real probe + wakes each agent. */
|
|
205
|
+
readonly inject?: boolean;
|
|
206
|
+
/** Inject poll budget (seconds) → derives maxPolls at a fixed ~4s interval. */
|
|
207
|
+
readonly injectTimeoutSec?: number;
|
|
208
|
+
}
|
|
209
|
+
/** Injectable seam so tests drive the command without touching the registry/network. */
|
|
210
|
+
export interface FleetDoctorDeps {
|
|
211
|
+
readonly listPeers: () => Promise<readonly {
|
|
212
|
+
readonly name: string;
|
|
213
|
+
readonly info: AgentInfo;
|
|
214
|
+
}[]>;
|
|
215
|
+
readonly probe: FleetProbeFn;
|
|
216
|
+
readonly diagnose: FleetDiagnosticFn;
|
|
217
|
+
readonly genToken?: () => string;
|
|
218
|
+
readonly project?: string;
|
|
219
|
+
/** Inject-tier POST (only used under `--inject`). Wired by resolveDeps; faked in tests. */
|
|
220
|
+
readonly injectPost?: FleetInjectPostFn;
|
|
221
|
+
/** Inject-tier `/health` poll (only used under `--inject`). Wired by resolveDeps; faked in tests. */
|
|
222
|
+
readonly injectPoll?: FleetInjectPollFn;
|
|
223
|
+
/** Inject run-id generator + sleep override (tests pass deterministic fakes). */
|
|
224
|
+
readonly injectGenRunId?: () => string;
|
|
225
|
+
readonly injectSleep?: (ms: number) => Promise<void>;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* `macf fleet doctor` entry point. Returns the shell exit code — 1 when the
|
|
229
|
+
* mesh is DEGRADED (any agent unreachable or not-accepting), 0 when HEALTHY or
|
|
230
|
+
* when no agents are registered (matching the `macf doctor` "non-zero on
|
|
231
|
+
* problem" convention). The `--json` body still prints to stdout regardless of
|
|
232
|
+
* exit code; the watchdog reads `summary.verdict` from it. `deps` is injected
|
|
233
|
+
* by tests; production resolves it from the project's registry config.
|
|
234
|
+
*/
|
|
235
|
+
export declare function runFleetDoctor(projectDir: string, opts?: RunFleetDoctorOptions, deps?: FleetDoctorDeps): Promise<number>;
|
|
236
|
+
//# sourceMappingURL=fleet-doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fleet-doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/fleet-doctor.ts"],"names":[],"mappings":"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"}
|