@mmnto/cli 1.114.0 → 1.116.0
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/doctor-compliance.test.js +17 -0
- package/dist/commands/doctor-compliance.test.js.map +1 -1
- package/dist/commands/doctor-seat-identity.d.ts +87 -0
- package/dist/commands/doctor-seat-identity.d.ts.map +1 -0
- package/dist/commands/doctor-seat-identity.js +427 -0
- package/dist/commands/doctor-seat-identity.js.map +1 -0
- package/dist/commands/doctor-seat-identity.test.d.ts +13 -0
- package/dist/commands/doctor-seat-identity.test.d.ts.map +1 -0
- package/dist/commands/doctor-seat-identity.test.js +390 -0
- package/dist/commands/doctor-seat-identity.test.js.map +1 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +3 -0
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +1 -0
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/ecl-gc.d.ts.map +1 -1
- package/dist/commands/ecl-gc.js +18 -7
- package/dist/commands/ecl-gc.js.map +1 -1
- package/dist/commands/ecl-gc.test.js +63 -1
- package/dist/commands/ecl-gc.test.js.map +1 -1
- package/dist/commands/eject.d.ts +62 -3
- package/dist/commands/eject.d.ts.map +1 -1
- package/dist/commands/eject.js +382 -47
- package/dist/commands/eject.js.map +1 -1
- package/dist/commands/eject.test.js +557 -7
- package/dist/commands/eject.test.js.map +1 -1
- package/dist/commands/gemini-beforetool-contract.test.d.ts +2 -0
- package/dist/commands/gemini-beforetool-contract.test.d.ts.map +1 -0
- package/dist/commands/gemini-beforetool-contract.test.js +106 -0
- package/dist/commands/gemini-beforetool-contract.test.js.map +1 -0
- package/dist/commands/gemini-sessionstart-contract.test.d.ts +2 -0
- package/dist/commands/gemini-sessionstart-contract.test.d.ts.map +1 -0
- package/dist/commands/gemini-sessionstart-contract.test.js +199 -0
- package/dist/commands/gemini-sessionstart-contract.test.js.map +1 -0
- package/dist/commands/init-templates.d.ts +4 -4
- package/dist/commands/init-templates.d.ts.map +1 -1
- package/dist/commands/init-templates.js +279 -16
- package/dist/commands/init-templates.js.map +1 -1
- package/dist/commands/init.test.js +25 -7
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/install-hooks-exit-contract.test.js +5 -0
- package/dist/commands/install-hooks-exit-contract.test.js.map +1 -1
- package/dist/commands/mail-degraded-e4.test.js +126 -0
- package/dist/commands/mail-degraded-e4.test.js.map +1 -1
- package/dist/commands/mail.d.ts +19 -1
- package/dist/commands/mail.d.ts.map +1 -1
- package/dist/commands/mail.js +195 -30
- package/dist/commands/mail.js.map +1 -1
- package/dist/commands/mail.test.js +291 -3
- package/dist/commands/mail.test.js.map +1 -1
- package/dist/commands/orient.d.ts.map +1 -1
- package/dist/commands/orient.js +82 -0
- package/dist/commands/orient.js.map +1 -1
- package/dist/commands/orient.test.js +144 -1
- package/dist/commands/orient.test.js.map +1 -1
- package/dist/commands/retrospect.d.ts.map +1 -1
- package/dist/commands/retrospect.js +7 -3
- package/dist/commands/retrospect.js.map +1 -1
- package/dist/commands/seat-cli-wiring.test.d.ts +20 -0
- package/dist/commands/seat-cli-wiring.test.d.ts.map +1 -0
- package/dist/commands/seat-cli-wiring.test.js +147 -0
- package/dist/commands/seat-cli-wiring.test.js.map +1 -0
- package/dist/commands/seat-poll-chain.test.d.ts +13 -0
- package/dist/commands/seat-poll-chain.test.d.ts.map +1 -0
- package/dist/commands/seat-poll-chain.test.js +103 -0
- package/dist/commands/seat-poll-chain.test.js.map +1 -0
- package/dist/commands/seat.d.ts +92 -0
- package/dist/commands/seat.d.ts.map +1 -0
- package/dist/commands/seat.js +649 -0
- package/dist/commands/seat.js.map +1 -0
- package/dist/commands/seat.test.d.ts +19 -0
- package/dist/commands/seat.test.d.ts.map +1 -0
- package/dist/commands/seat.test.js +532 -0
- package/dist/commands/seat.test.js.map +1 -0
- package/dist/commands/sessionstart-manifest-contract.test.d.ts +2 -0
- package/dist/commands/sessionstart-manifest-contract.test.d.ts.map +1 -0
- package/dist/commands/sessionstart-manifest-contract.test.js +186 -0
- package/dist/commands/sessionstart-manifest-contract.test.js.map +1 -0
- package/dist/commands/triage-pr.d.ts.map +1 -1
- package/dist/commands/triage-pr.js +2 -0
- package/dist/commands/triage-pr.js.map +1 -1
- package/dist/hooks/__tests__/auto-context.test.js +20 -0
- package/dist/hooks/__tests__/auto-context.test.js.map +1 -1
- package/dist/hooks/auto-context.d.ts +19 -0
- package/dist/hooks/auto-context.d.ts.map +1 -1
- package/dist/hooks/auto-context.js +22 -4
- package/dist/hooks/auto-context.js.map +1 -1
- package/dist/index.js +71 -0
- package/dist/index.js.map +1 -1
- package/dist/parsers/bot-review-parser.d.ts +8 -1
- package/dist/parsers/bot-review-parser.d.ts.map +1 -1
- package/dist/parsers/bot-review-parser.js +21 -1
- package/dist/parsers/bot-review-parser.js.map +1 -1
- package/dist/parsers/bot-review-parser.test.js +23 -0
- package/dist/parsers/bot-review-parser.test.js.map +1 -1
- package/dist/parsers/triage-severity-mapper.d.ts.map +1 -1
- package/dist/parsers/triage-severity-mapper.js +32 -1
- package/dist/parsers/triage-severity-mapper.js.map +1 -1
- package/dist/parsers/triage-severity-mapper.test.js +57 -0
- package/dist/parsers/triage-severity-mapper.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -37,6 +37,23 @@ describe('parseSearchLog', () => {
|
|
|
37
37
|
expect(result.entries[0].agent_source).toBe('claude');
|
|
38
38
|
expect(result.malformedCount).toBe(0);
|
|
39
39
|
});
|
|
40
|
+
it('tolerates the #2629 provenance/conflict fields on a row — invariant 5, compliance-parser half', () => {
|
|
41
|
+
const sensorRow = JSON.stringify({
|
|
42
|
+
timestamp: iso(BASE),
|
|
43
|
+
agent_source: 'totem-claude',
|
|
44
|
+
agent_source_provenance: 'env',
|
|
45
|
+
attribution_conflict: {
|
|
46
|
+
env_seat: 'totem-gemini',
|
|
47
|
+
minting_seat: 'totem-claude',
|
|
48
|
+
pointer_session_id: '550e8400-e29b-41d4-a716-446655440000',
|
|
49
|
+
},
|
|
50
|
+
attribution_probe_error: 'probe failed',
|
|
51
|
+
});
|
|
52
|
+
const result = parseSearchLog(sensorRow);
|
|
53
|
+
expect(result.malformedCount).toBe(0);
|
|
54
|
+
expect(result.entries).toHaveLength(1);
|
|
55
|
+
expect(result.entries[0].agent_source).toBe('totem-claude');
|
|
56
|
+
});
|
|
40
57
|
it('skips a corrupt JSONL line with a warn count, still parses the rest', () => {
|
|
41
58
|
const good1 = JSON.stringify({ timestamp: iso(BASE), agent_source: 'claude' });
|
|
42
59
|
const good2 = JSON.stringify({ timestamp: iso(BASE + H), agent_source: 'gemini' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor-compliance.test.js","sourceRoot":"","sources":["../../src/commands/doctor-compliance.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"doctor-compliance.test.js","sourceRoot":"","sources":["../../src/commands/doctor-compliance.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `totem doctor` — the seat-identity-binding SENSE (mmnto-ai/totem#2511).
|
|
3
|
+
*
|
|
4
|
+
* Tenet 9/13: this row senses, it never enforces. It carries `gateExempt: true`
|
|
5
|
+
* and never emits `fail`, so no `--strict` tier can give it teeth — the
|
|
6
|
+
* exemption is a property of the row (`doctor.ts` DiagnosticResult), not of the
|
|
7
|
+
* tier a later change might widen.
|
|
8
|
+
*
|
|
9
|
+
* Four post-hoc contradiction arms are sensed:
|
|
10
|
+
*
|
|
11
|
+
* (a) `from-mismatch` — an outbox dispatch whose frontmatter `from:` names a
|
|
12
|
+
* DIFFERENT seat than the directory it sits in. The dir is the
|
|
13
|
+
* registration (the mmnto-ai/totem#2141 dirs-union invariant), so the two
|
|
14
|
+
* disagreeing is an identity contradiction on its face.
|
|
15
|
+
* (b) `writing-while-excluded` — a seat whose PARSED lifecycle marker says
|
|
16
|
+
* `suspended`/`retired` yet whose outbox carries filename-stamped writes
|
|
17
|
+
* newer than the marker's `since`: declared lifecycle contradicted by
|
|
18
|
+
* observed behaviour.
|
|
19
|
+
* (c) `env-names-excluded-seat` / `env-names-unknown-seat` — `TOTEM_SELF_AGENT`
|
|
20
|
+
* naming a non-active seat, or naming no seat directory in this repo.
|
|
21
|
+
* (d) `env-ambient-scope` (win32 only; mmnto-ai/totem#2629) —
|
|
22
|
+
* `TOTEM_SELF_AGENT` present at a PERSISTENT registry scope (user or
|
|
23
|
+
* machine). A per-SEAT identity at either scope is inherited by every
|
|
24
|
+
* seat's processes on the machine — the #2629 cross-seat fallthrough
|
|
25
|
+
* root cause. Doctor-time only, never the stamp hot path; the stamp-seam
|
|
26
|
+
* counterpart (provenance + fail-closed conflict) lives in core's
|
|
27
|
+
* `senseAgentAttribution`.
|
|
28
|
+
*
|
|
29
|
+
* A corrupt marker degrades to `active` by core's contract
|
|
30
|
+
* (`seat-lifecycle.ts` — fail open on visibility), so (b) is NEVER evaluated
|
|
31
|
+
* against it: this sense refuses to build a finding on an unparsed marker.
|
|
32
|
+
* The core warning (which names the marker file) is relayed instead, as its own
|
|
33
|
+
* `unreadable-marker` row — a scan hole disclosed rather than a clean line that
|
|
34
|
+
* hides it.
|
|
35
|
+
*
|
|
36
|
+
* THE HONEST LIMIT is stated in every verdict, pass included: a CONSISTENT fake
|
|
37
|
+
* defeats all three arms, and that is precisely why write-time binding was
|
|
38
|
+
* judged infeasible for v1 and this doctor tier is the chartered fallback.
|
|
39
|
+
*
|
|
40
|
+
* Core is dynamic-imported so `@mmnto/totem` stays off the CLI cold-start
|
|
41
|
+
* graph, matching every other doctor check.
|
|
42
|
+
*/
|
|
43
|
+
import type { DiagnosticResult } from './doctor.js';
|
|
44
|
+
/** Row label, `padEnd(18)`-safe in the doctor render. */
|
|
45
|
+
export declare const SEAT_IDENTITY_CHECK_NAME = "Seat Identity";
|
|
46
|
+
/**
|
|
47
|
+
* Newest-N outbox files scanned per seat, by filename sort. Dispatch basenames
|
|
48
|
+
* are stamp-prefixed (`YYYY-MM-DDTHHMMZ-`), so the lexical tail IS the newest
|
|
49
|
+
* tail. A bound is required — cohort outboxes grow without limit and this row
|
|
50
|
+
* runs on every `totem doctor` — and whenever it bites, the verdict SAYS so
|
|
51
|
+
* (never a silently partial scan).
|
|
52
|
+
*/
|
|
53
|
+
export declare const OUTBOX_SCAN_LIMIT = 200;
|
|
54
|
+
/**
|
|
55
|
+
* The verbatim limit clause. Exported so the test pins it against drift: the
|
|
56
|
+
* whole justification for shipping a doctor-tier sense instead of write-time
|
|
57
|
+
* binding rides on this sentence staying true and staying said.
|
|
58
|
+
*/
|
|
59
|
+
export declare const SEAT_IDENTITY_HONEST_LIMIT = "honest limit: a CONSISTENT fake \u2014 writing from the wrong seat dir with a matching forged `from:`, the agy shape \u2014 is NOT detectable post-hoc, which is why full write-time binding was judged infeasible for v1 and this doctor tier is the chartered fallback; this check does not discharge the 2026-06-18 seat-identity precondition.";
|
|
60
|
+
/** The contradiction classes this row can report. */
|
|
61
|
+
export type SeatIdentityFindingClass = 'from-mismatch' | 'writing-while-excluded' | 'env-names-excluded-seat' | 'env-names-unknown-seat' | 'env-ambient-scope' | 'registry-scope-unreadable' | 'unreadable-marker' | 'outbox-unreadable';
|
|
62
|
+
export interface SeatIdentitySeams {
|
|
63
|
+
/**
|
|
64
|
+
* Test seam — production reads `process.env`. Injected so the env arm is
|
|
65
|
+
* exercisable without mutating real env state (the `resolveSelfAgents`
|
|
66
|
+
* convention).
|
|
67
|
+
*/
|
|
68
|
+
env?: Record<string, string | undefined>;
|
|
69
|
+
/** Test seam — overrides {@link OUTBOX_SCAN_LIMIT} so truncation is testable. */
|
|
70
|
+
outboxScanLimit?: number;
|
|
71
|
+
/** Test seam — production reads `process.platform`. Arm (d) is win32-only. */
|
|
72
|
+
platform?: NodeJS.Platform;
|
|
73
|
+
/**
|
|
74
|
+
* Test seam — production spawns `reg query <hive> /v TOTEM_SELF_AGENT` via
|
|
75
|
+
* core's `safeExec`. Implementations keep the `reg` contract this arm reads
|
|
76
|
+
* through: return stdout on a hit; throw with `.status === 1` when the value
|
|
77
|
+
* is absent at that hive (the healthy state).
|
|
78
|
+
*/
|
|
79
|
+
regQuery?: (hive: string) => string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Sense seat-identity binding across every registered seat dir. Report-only:
|
|
83
|
+
* `gateExempt: true` on every arm, `fail` on none, and an unexpected throw
|
|
84
|
+
* lands as a warn row rather than taking `totem doctor` down (Tenet 13).
|
|
85
|
+
*/
|
|
86
|
+
export declare function checkSeatIdentity(cwd: string, seams?: SeatIdentitySeams): Promise<DiagnosticResult>;
|
|
87
|
+
//# sourceMappingURL=doctor-seat-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-seat-identity.d.ts","sourceRoot":"","sources":["../../src/commands/doctor-seat-identity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAOH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,yDAAyD;AACzD,eAAO,MAAM,wBAAwB,kBAAkB,CAAC;AAExD;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAErC;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,uVACqS,CAAC;AAwC7U,qDAAqD;AACrD,MAAM,MAAM,wBAAwB,GAChC,eAAe,GACf,wBAAwB,GACxB,yBAAyB,GACzB,wBAAwB,GACxB,mBAAmB,GACnB,2BAA2B,GAC3B,mBAAmB,GACnB,mBAAmB,CAAC;AAqBxB,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACzC,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACrC;AAqHD;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,iBAAsB,GAC5B,OAAO,CAAC,gBAAgB,CAAC,CAiP3B"}
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `totem doctor` — the seat-identity-binding SENSE (mmnto-ai/totem#2511).
|
|
3
|
+
*
|
|
4
|
+
* Tenet 9/13: this row senses, it never enforces. It carries `gateExempt: true`
|
|
5
|
+
* and never emits `fail`, so no `--strict` tier can give it teeth — the
|
|
6
|
+
* exemption is a property of the row (`doctor.ts` DiagnosticResult), not of the
|
|
7
|
+
* tier a later change might widen.
|
|
8
|
+
*
|
|
9
|
+
* Four post-hoc contradiction arms are sensed:
|
|
10
|
+
*
|
|
11
|
+
* (a) `from-mismatch` — an outbox dispatch whose frontmatter `from:` names a
|
|
12
|
+
* DIFFERENT seat than the directory it sits in. The dir is the
|
|
13
|
+
* registration (the mmnto-ai/totem#2141 dirs-union invariant), so the two
|
|
14
|
+
* disagreeing is an identity contradiction on its face.
|
|
15
|
+
* (b) `writing-while-excluded` — a seat whose PARSED lifecycle marker says
|
|
16
|
+
* `suspended`/`retired` yet whose outbox carries filename-stamped writes
|
|
17
|
+
* newer than the marker's `since`: declared lifecycle contradicted by
|
|
18
|
+
* observed behaviour.
|
|
19
|
+
* (c) `env-names-excluded-seat` / `env-names-unknown-seat` — `TOTEM_SELF_AGENT`
|
|
20
|
+
* naming a non-active seat, or naming no seat directory in this repo.
|
|
21
|
+
* (d) `env-ambient-scope` (win32 only; mmnto-ai/totem#2629) —
|
|
22
|
+
* `TOTEM_SELF_AGENT` present at a PERSISTENT registry scope (user or
|
|
23
|
+
* machine). A per-SEAT identity at either scope is inherited by every
|
|
24
|
+
* seat's processes on the machine — the #2629 cross-seat fallthrough
|
|
25
|
+
* root cause. Doctor-time only, never the stamp hot path; the stamp-seam
|
|
26
|
+
* counterpart (provenance + fail-closed conflict) lives in core's
|
|
27
|
+
* `senseAgentAttribution`.
|
|
28
|
+
*
|
|
29
|
+
* A corrupt marker degrades to `active` by core's contract
|
|
30
|
+
* (`seat-lifecycle.ts` — fail open on visibility), so (b) is NEVER evaluated
|
|
31
|
+
* against it: this sense refuses to build a finding on an unparsed marker.
|
|
32
|
+
* The core warning (which names the marker file) is relayed instead, as its own
|
|
33
|
+
* `unreadable-marker` row — a scan hole disclosed rather than a clean line that
|
|
34
|
+
* hides it.
|
|
35
|
+
*
|
|
36
|
+
* THE HONEST LIMIT is stated in every verdict, pass included: a CONSISTENT fake
|
|
37
|
+
* defeats all three arms, and that is precisely why write-time binding was
|
|
38
|
+
* judged infeasible for v1 and this doctor tier is the chartered fallback.
|
|
39
|
+
*
|
|
40
|
+
* Core is dynamic-imported so `@mmnto/totem` stays off the CLI cold-start
|
|
41
|
+
* graph, matching every other doctor check.
|
|
42
|
+
*/
|
|
43
|
+
import * as fs from 'node:fs';
|
|
44
|
+
import * as path from 'node:path';
|
|
45
|
+
/** Row label, `padEnd(18)`-safe in the doctor render. */
|
|
46
|
+
export const SEAT_IDENTITY_CHECK_NAME = 'Seat Identity';
|
|
47
|
+
/**
|
|
48
|
+
* Newest-N outbox files scanned per seat, by filename sort. Dispatch basenames
|
|
49
|
+
* are stamp-prefixed (`YYYY-MM-DDTHHMMZ-`), so the lexical tail IS the newest
|
|
50
|
+
* tail. A bound is required — cohort outboxes grow without limit and this row
|
|
51
|
+
* runs on every `totem doctor` — and whenever it bites, the verdict SAYS so
|
|
52
|
+
* (never a silently partial scan).
|
|
53
|
+
*/
|
|
54
|
+
export const OUTBOX_SCAN_LIMIT = 200;
|
|
55
|
+
/**
|
|
56
|
+
* The verbatim limit clause. Exported so the test pins it against drift: the
|
|
57
|
+
* whole justification for shipping a doctor-tier sense instead of write-time
|
|
58
|
+
* binding rides on this sentence staying true and staying said.
|
|
59
|
+
*/
|
|
60
|
+
export const SEAT_IDENTITY_HONEST_LIMIT = 'honest limit: a CONSISTENT fake — writing from the wrong seat dir with a matching forged `from:`, the agy shape — is NOT detectable post-hoc, which is why full write-time binding was judged infeasible for v1 and this doctor tier is the chartered fallback; this check does not discharge the 2026-06-18 seat-identity precondition.';
|
|
61
|
+
/**
|
|
62
|
+
* Bytes read from the head of each dispatch. Sized to the mail reader's own
|
|
63
|
+
* frontmatter search window (`mail.ts` MAX_HEADER_SEARCH_BYTES, 16 KiB, sized
|
|
64
|
+
* ~4x the largest observed live header) so this sensor sees exactly the header
|
|
65
|
+
* the mail reader sees — one wire, one reading.
|
|
66
|
+
*/
|
|
67
|
+
const HEAD_READ_BYTES = 16_384;
|
|
68
|
+
/** Example filenames carried per finding before the remainder is summarized. */
|
|
69
|
+
const MAX_EVIDENCE_FILES = 3;
|
|
70
|
+
/** Rendered cap for a token that came off the wire (a `from:` value, an env id). */
|
|
71
|
+
const MAX_TOKEN_CHARS = 120;
|
|
72
|
+
/** Errnos that PROVE an outbox is absent rather than unreadable. */
|
|
73
|
+
const OUTBOX_ABSENT_ERRNOS = new Set(['ENOENT', 'ENOTDIR']);
|
|
74
|
+
const TOTEM_DIR = '.totem';
|
|
75
|
+
const ORCHESTRATION_DIR = 'orchestration';
|
|
76
|
+
const OUTBOX_DIR = 'outbox';
|
|
77
|
+
/** The frontmatter opener every ADR-098 dispatch starts with. */
|
|
78
|
+
const FRONTMATTER_OPENER = '---';
|
|
79
|
+
/**
|
|
80
|
+
* Closing frontmatter delimiter — a `---` line after the opener (LF/CRLF/EOF),
|
|
81
|
+
* tolerating trailing whitespace. Copied in shape from `mail.ts` deliberately:
|
|
82
|
+
* a file the mail reader rejects as unparseable is not a dispatch whose `from:`
|
|
83
|
+
* binds anything, so both readers must agree on where the header ends.
|
|
84
|
+
*/
|
|
85
|
+
const CLOSING_DELIMITER = /\r?\n---[ \t]*(?:\r?\n|$)/;
|
|
86
|
+
/** `from:` inside the delimited header only — a body line can never fabricate one. */
|
|
87
|
+
const FROM_FIELD = /^from:\s*(.+)$/im;
|
|
88
|
+
/** The stamped-dispatch basename prefix: `YYYY-MM-DDTHHMMZ-`. */
|
|
89
|
+
const STAMPED_BASENAME = /^(\d{4})-(\d{2})-(\d{2})T(\d{2})(\d{2})Z-/;
|
|
90
|
+
/**
|
|
91
|
+
* The two persistent Windows env scopes arm (d) probes (mmnto-ai/totem#2629).
|
|
92
|
+
* Launch-shell env is NOT in the registry, so a hit at either hive is ambient
|
|
93
|
+
* by definition — no value comparison needed to make it a finding.
|
|
94
|
+
*/
|
|
95
|
+
const REGISTRY_SCOPES = [
|
|
96
|
+
{ scope: 'user', hive: 'HKCU\\Environment' },
|
|
97
|
+
{
|
|
98
|
+
scope: 'machine',
|
|
99
|
+
hive: 'HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment',
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
/** One-line, ANSI-stripped, length-capped rendering of an off-the-wire token. */
|
|
103
|
+
function capToken(value) {
|
|
104
|
+
return value.length > MAX_TOKEN_CHARS ? `${value.slice(0, MAX_TOKEN_CHARS)}…` : value;
|
|
105
|
+
}
|
|
106
|
+
/** Message text for an unknown throwable (checkEstate's shape). */
|
|
107
|
+
function messageOf(err) {
|
|
108
|
+
return err instanceof Error ? err.message : String(err);
|
|
109
|
+
}
|
|
110
|
+
/** Errno of a throwable, when it carries one. */
|
|
111
|
+
function errnoOf(err) {
|
|
112
|
+
return err !== null && typeof err === 'object' && 'code' in err
|
|
113
|
+
? err.code
|
|
114
|
+
: undefined;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Strip a single pair of matching surrounding quotes. `composeDispatch` leaves
|
|
118
|
+
* a valid kebab agent-id unquoted (`yamlScalar` quotes only when the raw value
|
|
119
|
+
* would mis-parse), but hand-authored dispatches quote freely, and an
|
|
120
|
+
* unquote-blind compare would read every quoted `from:` as a mismatch.
|
|
121
|
+
*/
|
|
122
|
+
function unquoteScalar(value) {
|
|
123
|
+
const trimmed = value.trim();
|
|
124
|
+
if (trimmed.length >= 2) {
|
|
125
|
+
const first = trimmed[0];
|
|
126
|
+
const last = trimmed[trimmed.length - 1];
|
|
127
|
+
if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
|
|
128
|
+
return trimmed.slice(1, -1).trim();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return trimmed;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* The `from:` value declared in a dispatch's frontmatter, or `null` when the
|
|
135
|
+
* file is not header-shaped or declares none. A missing `from:` is NOT a
|
|
136
|
+
* finding: the mail reader falls back to the outbox dir name, which is the
|
|
137
|
+
* binding this row is checking — absence agrees with the dir by construction.
|
|
138
|
+
*/
|
|
139
|
+
function frontmatterFrom(content) {
|
|
140
|
+
if (!content.startsWith(FRONTMATTER_OPENER))
|
|
141
|
+
return null;
|
|
142
|
+
const window = content.slice(FRONTMATTER_OPENER.length);
|
|
143
|
+
const close = CLOSING_DELIMITER.exec(window);
|
|
144
|
+
if (close === null)
|
|
145
|
+
return null;
|
|
146
|
+
const match = FROM_FIELD.exec(window.slice(0, close.index));
|
|
147
|
+
return match === null ? null : unquoteScalar(match[1]);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* The UTC instant encoded in a stamped basename, or `null` when the name
|
|
151
|
+
* carries no stamp. Minute granularity is the wire's own resolution
|
|
152
|
+
* (`compactStamp`), so a write in the SAME minute as a transition compares as
|
|
153
|
+
* not-newer — the conservative direction for a sensor that must not invent
|
|
154
|
+
* contradictions.
|
|
155
|
+
*/
|
|
156
|
+
function stampedInstantMs(basename) {
|
|
157
|
+
const m = STAMPED_BASENAME.exec(basename);
|
|
158
|
+
if (m === null)
|
|
159
|
+
return null;
|
|
160
|
+
const ms = Date.parse(`${m[1]}-${m[2]}-${m[3]}T${m[4]}:${m[5]}:00.000Z`);
|
|
161
|
+
return Number.isNaN(ms) ? null : ms;
|
|
162
|
+
}
|
|
163
|
+
function listOutbox(outboxDir, limit) {
|
|
164
|
+
let entries;
|
|
165
|
+
// totem-context: intentional degradation — the catch IS the answer: ENOENT/ENOTDIR PROVE a seat has never written (the steady state of a fresh seat dir, silent by contract), and every other errno is a scan hole this row DISCLOSES as an outbox-unreadable finding rather than reporting a clean seat it never looked inside.
|
|
166
|
+
try {
|
|
167
|
+
entries = fs.readdirSync(outboxDir, { withFileTypes: true });
|
|
168
|
+
// totem-context: intentional degradation — see directive above the try; dual placement so the rule fires on either the catch-keyword line or the catch-body line.
|
|
169
|
+
}
|
|
170
|
+
catch (err) {
|
|
171
|
+
const code = errnoOf(err);
|
|
172
|
+
if (code !== undefined && OUTBOX_ABSENT_ERRNOS.has(code)) {
|
|
173
|
+
return { files: [], total: 0 };
|
|
174
|
+
}
|
|
175
|
+
return { files: [], total: 0, readFailure: messageOf(err) };
|
|
176
|
+
}
|
|
177
|
+
const all = entries
|
|
178
|
+
.filter((entry) => entry.isFile() && entry.name.endsWith('.md'))
|
|
179
|
+
.map((entry) => entry.name)
|
|
180
|
+
.sort();
|
|
181
|
+
return { files: all.length > limit ? all.slice(all.length - limit) : all, total: all.length };
|
|
182
|
+
}
|
|
183
|
+
/** Read at most `HEAD_READ_BYTES` from the head of a file. */
|
|
184
|
+
function readHead(filePath) {
|
|
185
|
+
const fd = fs.openSync(filePath, 'r');
|
|
186
|
+
try {
|
|
187
|
+
const buf = Buffer.alloc(HEAD_READ_BYTES);
|
|
188
|
+
const bytesRead = fs.readSync(fd, buf, 0, HEAD_READ_BYTES, 0);
|
|
189
|
+
return buf.toString('utf-8', 0, bytesRead);
|
|
190
|
+
}
|
|
191
|
+
finally {
|
|
192
|
+
fs.closeSync(fd);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/** `N file(s): a, b, c (+M more)` — every count stated, nothing silently dropped. */
|
|
196
|
+
function evidenceList(items) {
|
|
197
|
+
const shown = items.slice(0, MAX_EVIDENCE_FILES);
|
|
198
|
+
const more = items.length - shown.length;
|
|
199
|
+
const listed = more > 0 ? `${shown.join(', ')} (+${more} more)` : shown.join(', ');
|
|
200
|
+
return `${items.length} file(s): ${listed}`;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Sense seat-identity binding across every registered seat dir. Report-only:
|
|
204
|
+
* `gateExempt: true` on every arm, `fail` on none, and an unexpected throw
|
|
205
|
+
* lands as a warn row rather than taking `totem doctor` down (Tenet 13).
|
|
206
|
+
*/
|
|
207
|
+
export async function checkSeatIdentity(cwd, seams = {}) {
|
|
208
|
+
const name = SEAT_IDENTITY_CHECK_NAME;
|
|
209
|
+
const limit = seams.outboxScanLimit ?? OUTBOX_SCAN_LIMIT;
|
|
210
|
+
const env = seams.env ?? process.env;
|
|
211
|
+
// Sanitize-at-interpolation: `from:` values, env values, and errno text are
|
|
212
|
+
// all off-process bytes, and this row's message reaches the terminal
|
|
213
|
+
// unsanitized downstream. `sanitizeForTerminal` is core-owned and must not be
|
|
214
|
+
// imported statically here, so it is captured after the dynamic import; until
|
|
215
|
+
// then the fallback still FLATTENS (the line-forging vector) and only lacks
|
|
216
|
+
// the ANSI strip — a pre-import failure carries loader text, not wire bytes.
|
|
217
|
+
let sanitize = (text) => text;
|
|
218
|
+
const render = (text) => sanitize(text)
|
|
219
|
+
.replace(/[\t\n\r]+/g, ' ')
|
|
220
|
+
.replace(/ {2,}/g, ' ')
|
|
221
|
+
.trim();
|
|
222
|
+
// totem-context: a scan failure is reported as a warn row — the seat-identity sensor must never take `totem doctor` down with it (report-only, Tenet 13; the checkEstate precedent).
|
|
223
|
+
try {
|
|
224
|
+
const { deriveSeatStatuses, resolveTotemRepoRootSync, safeExec, sanitizeForTerminal } = await import('@mmnto/totem');
|
|
225
|
+
sanitize = sanitizeForTerminal;
|
|
226
|
+
// The shared walk-start-is-not-the-root contract (`pollMail` / `eclGc` /
|
|
227
|
+
// `eclCompact`, mmnto-ai/totem#2312): a doctor run from a subdirectory must
|
|
228
|
+
// still resolve the real orchestration tree, or this row renders a
|
|
229
|
+
// false-clean "seats sensed: 0".
|
|
230
|
+
const repoRoot = resolveTotemRepoRootSync(undefined, cwd);
|
|
231
|
+
const statuses = deriveSeatStatuses(repoRoot);
|
|
232
|
+
const bySeat = new Map(statuses.map((status) => [status.seat, status]));
|
|
233
|
+
const findings = [];
|
|
234
|
+
const truncations = [];
|
|
235
|
+
for (const status of statuses) {
|
|
236
|
+
// A degraded marker read is a HOLE in this sense, not a clean seat: core
|
|
237
|
+
// fails open to `active`, so arm (b) cannot be evaluated here at all. Say
|
|
238
|
+
// so, with core's own warning (it names the marker file — the one-step
|
|
239
|
+
// recovery target).
|
|
240
|
+
if (status.warning !== undefined) {
|
|
241
|
+
findings.push({
|
|
242
|
+
seat: status.seat,
|
|
243
|
+
cls: 'unreadable-marker',
|
|
244
|
+
evidence: render(status.warning),
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
const outboxDir = path.join(repoRoot, TOTEM_DIR, ORCHESTRATION_DIR, status.seat, OUTBOX_DIR);
|
|
248
|
+
const listing = listOutbox(outboxDir, limit);
|
|
249
|
+
if (listing.readFailure !== undefined) {
|
|
250
|
+
findings.push({
|
|
251
|
+
seat: status.seat,
|
|
252
|
+
cls: 'outbox-unreadable',
|
|
253
|
+
evidence: render(listing.readFailure),
|
|
254
|
+
});
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
if (listing.total > listing.files.length) {
|
|
258
|
+
truncations.push(`${status.seat}: newest ${listing.files.length} of ${listing.total} outbox file(s) scanned`);
|
|
259
|
+
}
|
|
260
|
+
// Arm (b) arms ONLY on a successfully PARSED exclusion marker. A corrupt
|
|
261
|
+
// marker reads as `default-active` and is deliberately skipped here: this
|
|
262
|
+
// sense never builds a finding on an unparsed marker.
|
|
263
|
+
const excluded = status.source === 'marker' && (status.state === 'suspended' || status.state === 'retired');
|
|
264
|
+
const sinceMs = excluded && status.since !== undefined ? Date.parse(status.since) : Number.NaN;
|
|
265
|
+
const mismatched = [];
|
|
266
|
+
const postSince = [];
|
|
267
|
+
const unreadable = [];
|
|
268
|
+
for (const file of listing.files) {
|
|
269
|
+
if (!Number.isNaN(sinceMs)) {
|
|
270
|
+
const stamped = stampedInstantMs(file);
|
|
271
|
+
if (stamped !== null && stamped > sinceMs) {
|
|
272
|
+
postSince.push(render(file));
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
let head;
|
|
276
|
+
// totem-context: intentional degradation — a per-file read failure (mid-rename race, EACCES) is collected into an outbox-unreadable finding for this seat and the scan continues; dropping the file silently would let an unreadable dispatch read as a checked one.
|
|
277
|
+
try {
|
|
278
|
+
head = readHead(path.join(outboxDir, file));
|
|
279
|
+
// totem-context: intentional degradation — see directive above the try; dual placement so the rule fires on either the catch-keyword line or the catch-body line.
|
|
280
|
+
}
|
|
281
|
+
catch (err) {
|
|
282
|
+
unreadable.push(`${render(file)} (${render(messageOf(err))})`);
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
const declared = frontmatterFrom(head);
|
|
286
|
+
if (declared !== null && declared !== status.seat) {
|
|
287
|
+
mismatched.push(`${render(file)} declares from: ${capToken(render(declared))}`);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (mismatched.length > 0) {
|
|
291
|
+
findings.push({
|
|
292
|
+
seat: status.seat,
|
|
293
|
+
cls: 'from-mismatch',
|
|
294
|
+
evidence: evidenceList(mismatched),
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
if (postSince.length > 0) {
|
|
298
|
+
findings.push({
|
|
299
|
+
seat: status.seat,
|
|
300
|
+
cls: 'writing-while-excluded',
|
|
301
|
+
evidence: `${status.state} since ${render(status.since ?? 'unknown')} — ${evidenceList(postSince)} stamped after it`,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
if (unreadable.length > 0) {
|
|
305
|
+
findings.push({
|
|
306
|
+
seat: status.seat,
|
|
307
|
+
cls: 'outbox-unreadable',
|
|
308
|
+
evidence: evidenceList(unreadable),
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
// Arm (c). Same comma-split as `resolveSelfAgents`' env layer, and the same
|
|
313
|
+
// parsed-marker-only rule as arm (b): a corrupt marker reads active and
|
|
314
|
+
// earns no env finding.
|
|
315
|
+
const envRaw = env['TOTEM_SELF_AGENT'];
|
|
316
|
+
if (typeof envRaw === 'string' && envRaw.trim().length > 0) {
|
|
317
|
+
for (const named of envRaw
|
|
318
|
+
.split(',')
|
|
319
|
+
.map((entry) => entry.trim())
|
|
320
|
+
.filter((entry) => entry.length > 0)) {
|
|
321
|
+
const status = bySeat.get(named);
|
|
322
|
+
if (status === undefined) {
|
|
323
|
+
findings.push({
|
|
324
|
+
seat: capToken(render(named)),
|
|
325
|
+
cls: 'env-names-unknown-seat',
|
|
326
|
+
evidence: `TOTEM_SELF_AGENT names a seat with no directory under ${TOTEM_DIR}/${ORCHESTRATION_DIR}/ in this repo`,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
else if (status.source === 'marker' && status.state !== 'active') {
|
|
330
|
+
findings.push({
|
|
331
|
+
seat: status.seat,
|
|
332
|
+
cls: 'env-names-excluded-seat',
|
|
333
|
+
evidence: `TOTEM_SELF_AGENT names a ${status.state} seat (since ${render(status.since ?? 'unknown')})`,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// Arm (d) — the win32 registry scope-sense (mmnto-ai/totem#2629).
|
|
339
|
+
// Doctor-time only: two `reg query` spawns per explicit doctor run, never
|
|
340
|
+
// the stamp hot path. A NON-BLANK value at either persistent scope is the
|
|
341
|
+
// finding — user/machine scope turns a per-seat identity into a
|
|
342
|
+
// per-machine stamp inherited by every seat's processes. A key whose value
|
|
343
|
+
// is BLANK is the post-remediation live shape (`reg` still exits 0 when a
|
|
344
|
+
// clear left the key behind); a blank stamps nothing downstream
|
|
345
|
+
// (resolveQbdAgentSource normalizes '' to undefined), so it is inert — no
|
|
346
|
+
// contradiction, no finding.
|
|
347
|
+
const platform = seams.platform ?? process.platform;
|
|
348
|
+
if (platform === 'win32') {
|
|
349
|
+
const regQuery = seams.regQuery ??
|
|
350
|
+
((hive) => safeExec('reg', ['query', hive, '/v', 'TOTEM_SELF_AGENT']));
|
|
351
|
+
for (const { scope, hive } of REGISTRY_SCOPES) {
|
|
352
|
+
let output;
|
|
353
|
+
// totem-context: intentional degradation — `reg query` exits 1 when the value is absent at that hive (the healthy state, silent by contract); any OTHER failure is a scan hole this row DISCLOSES as a registry-scope-unreadable finding rather than a clean line it never verified.
|
|
354
|
+
try {
|
|
355
|
+
output = regQuery(hive);
|
|
356
|
+
// totem-context: intentional degradation — see directive above the try; dual placement so the rule fires on either the catch-keyword line or the catch-body line.
|
|
357
|
+
}
|
|
358
|
+
catch (err) {
|
|
359
|
+
const status = err.status;
|
|
360
|
+
if (status !== 1) {
|
|
361
|
+
findings.push({
|
|
362
|
+
seat: `${scope}-scope`,
|
|
363
|
+
cls: 'registry-scope-unreadable',
|
|
364
|
+
evidence: render(`${hive} probe failed: ${messageOf(err)}`),
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
continue;
|
|
368
|
+
}
|
|
369
|
+
// Rest-of-line capture, deliberately possibly-empty: the blank-value
|
|
370
|
+
// shape must parse (and be skipped as inert) rather than degrade to
|
|
371
|
+
// "unparsed". An exit-0 output whose shape resists this parse entirely
|
|
372
|
+
// stays a finding — present but unprovably inert: disclose, not guess.
|
|
373
|
+
const valueMatch = /TOTEM_SELF_AGENT\s+REG_\w+[ \t]*(.*)/i.exec(output);
|
|
374
|
+
if (valueMatch !== null && valueMatch[1].trim().length === 0) {
|
|
375
|
+
// Inert ONLY when nothing follows the match either: a value whose
|
|
376
|
+
// data begins past a line break (programmatically-set CR/LF-leading
|
|
377
|
+
// values) captures '' here yet still stamps downstream — that shape
|
|
378
|
+
// must stay a finding, not vanish into the blank-skip (fold re-arm
|
|
379
|
+
// leg catch on this PR).
|
|
380
|
+
const rest = output.slice(valueMatch.index + valueMatch[0].length);
|
|
381
|
+
if (rest.trim().length === 0)
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
384
|
+
const value = valueMatch === null || valueMatch[1].trim().length === 0
|
|
385
|
+
? '(value present, unparsed)'
|
|
386
|
+
: valueMatch[1];
|
|
387
|
+
findings.push({
|
|
388
|
+
seat: capToken(render(value)),
|
|
389
|
+
cls: 'env-ambient-scope',
|
|
390
|
+
evidence: `TOTEM_SELF_AGENT is set at ${scope} scope (${hive}) — a per-seat identity must be launch-shell-scoped, never user/machine scope (mmnto-ai/totem#2629)`,
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
const parts = [`seats sensed: ${statuses.length}`];
|
|
395
|
+
parts.push(findings.length === 0
|
|
396
|
+
? 'no identity contradictions sensed'
|
|
397
|
+
: `${findings.length} finding(s): ${findings
|
|
398
|
+
.map((f) => `${f.seat} [${f.cls}] ${f.evidence}`)
|
|
399
|
+
.join(' | ')}`);
|
|
400
|
+
if (truncations.length > 0) {
|
|
401
|
+
parts.push(`scan bounded at ${limit}/outbox — ${truncations.join('; ')}`);
|
|
402
|
+
}
|
|
403
|
+
parts.push(SEAT_IDENTITY_HONEST_LIMIT);
|
|
404
|
+
return {
|
|
405
|
+
name,
|
|
406
|
+
status: findings.length === 0 ? 'pass' : 'warn',
|
|
407
|
+
message: parts.join(' · '),
|
|
408
|
+
...(findings.length > 0
|
|
409
|
+
? {
|
|
410
|
+
remediation: 'Inspect the named files and `totem seat list` — this row senses only and never gates.',
|
|
411
|
+
}
|
|
412
|
+
: {}),
|
|
413
|
+
gateExempt: true,
|
|
414
|
+
};
|
|
415
|
+
// totem-context: intentional degradation — see directive above the try; dual placement so the rule fires on either the catch-keyword line or the catch-body line.
|
|
416
|
+
}
|
|
417
|
+
catch (err) {
|
|
418
|
+
return {
|
|
419
|
+
name,
|
|
420
|
+
status: 'warn',
|
|
421
|
+
message: `Seat-identity scan failed: ${render(messageOf(err))} · ${SEAT_IDENTITY_HONEST_LIMIT}`,
|
|
422
|
+
remediation: 'Check .totem/orchestration/ readability, then re-run `totem doctor`.',
|
|
423
|
+
gateExempt: true,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
//# sourceMappingURL=doctor-seat-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-seat-identity.js","sourceRoot":"","sources":["../../src/commands/doctor-seat-identity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sense-tier contract for the seat-identity doctor row (mmnto-ai/totem#2511).
|
|
3
|
+
*
|
|
4
|
+
* Real temp trees, because every arm this row senses is literally a filesystem
|
|
5
|
+
* shape (a dir, a marker, a stamped basename). Fixture roots stay SHORT — the
|
|
6
|
+
* orchestration paths nest four levels deep before the dispatch basename, and
|
|
7
|
+
* MAX_PATH bites on win32.
|
|
8
|
+
*
|
|
9
|
+
* The two invariants asserted on EVERY arm: `gateExempt: true` and never
|
|
10
|
+
* `fail`. A sense that could gate is not a sense.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=doctor-seat-identity.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor-seat-identity.test.d.ts","sourceRoot":"","sources":["../../src/commands/doctor-seat-identity.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|