@mmnto/cli 1.55.1 → 1.56.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.
@@ -27,7 +27,7 @@ export interface MailEntry {
27
27
  from: string;
28
28
  /** Recipient (from frontmatter `to:`, preserved verbatim). */
29
29
  to: string;
30
- /** ISO timestamp from frontmatter `date:`, or null if absent. */
30
+ /** ISO timestamp from frontmatter `timestamp:` (ADR-098 v0.4 canonical), falling back to legacy `date:`; null if absent. */
31
31
  date: string | null;
32
32
  /** Subject line from frontmatter, or `(no subject)` if absent. */
33
33
  subject: string;
@@ -74,4 +74,122 @@ export interface MailCommandOptions {
74
74
  */
75
75
  export declare function pollMail(opts?: MailCommandOptions): MailPollResult;
76
76
  export declare function mailCommand(opts?: MailCommandOptions): Promise<MailPollResult>;
77
+ /**
78
+ * Structurally-complete dispatch header. ADR-098 v0.4 compliance is enforced
79
+ * *by construction*: you cannot build this object without `schema` / `from` /
80
+ * `to` / `timestamp` / `subject` / `expectedAction`, so a structurally invalid
81
+ * dispatch is unrepresentable rather than rejected after the fact — the
82
+ * strongest form of "enforce via substrate" (inv2 realized). The content
83
+ * predicates that CANNOT be guaranteed at construction time (is the recipient
84
+ * a known agent? do refs resolve?) are the validator's job, and warn rather
85
+ * than block (inv6).
86
+ */
87
+ export interface DispatchHeader {
88
+ schema: string;
89
+ from: string;
90
+ to: string;
91
+ /** Full RFC3339 UTC, e.g. `2026-06-09T17:34:37.127Z` (ADR-098 v0.4). */
92
+ timestamp: string;
93
+ subject: string;
94
+ /** ADR-098 v0.4 mandatory; the `none` literal for informational dispatches. */
95
+ expectedAction: string;
96
+ inReplyTo?: string;
97
+ priority?: string;
98
+ related?: string[];
99
+ }
100
+ export interface MailSendOptions {
101
+ /** Recipient agent-id (or `broadcast`). */
102
+ to: string;
103
+ /** Subject line (the cohort convention carries the gist here). */
104
+ subject: string;
105
+ /** Sender agent-id; default resolves from self, erroring if ambiguous. */
106
+ from?: string;
107
+ /** Read the dispatch body from this file (hard error if unreadable). */
108
+ bodyFile?: string;
109
+ /** Direct body text (test/stdin seam); `bodyFile` overrides when both set. */
110
+ body?: string;
111
+ /** `in-reply-to:` frontmatter — the source dispatch path. */
112
+ inReplyTo?: string;
113
+ /** `priority:` frontmatter. */
114
+ priority?: string;
115
+ /** `related-issues:` frontmatter list. */
116
+ related?: string[];
117
+ /** `expected-action:` frontmatter; defaults to the `none` literal. */
118
+ expectedAction?: string;
119
+ /** Filename slug override; default derived from the subject. */
120
+ slug?: string;
121
+ /** Repo root (default: cwd). Test injection point. */
122
+ repoRoot?: string;
123
+ /** Env override (default: process.env). Test injection point. */
124
+ env?: Record<string, string | undefined>;
125
+ /** Clock injection for deterministic timestamps/filenames in tests. */
126
+ now?: () => Date;
127
+ /** Known-recipient set override (default: `knownCohortAgents()`). */
128
+ knownAgents?: readonly string[];
129
+ }
130
+ export interface MailSendResult {
131
+ /** Absolute path of the written dispatch. */
132
+ filePath: string;
133
+ /** Basename of the written dispatch. */
134
+ fileName: string;
135
+ /** The composed (structurally-valid-by-construction) header. */
136
+ header: DispatchHeader;
137
+ /** Content-class warnings surfaced at emit-time; dispatch still written. */
138
+ warnings: string[];
139
+ }
140
+ /**
141
+ * Serialize a dispatch header + body to ADR-098 v0.4 markdown. Pure +
142
+ * deterministic — the round-trip anchor: its output MUST parse back through
143
+ * `parseHeader` (the sensor↔actuator "one enumeration, two readers" pairing).
144
+ * Frontmatter keys are kebab-case wire form, the surface the reader greps.
145
+ */
146
+ export declare function composeDispatch(header: DispatchHeader, body: string): string;
147
+ /**
148
+ * Content-class validation (inv1: exact predicates only — set membership and
149
+ * non-emptiness, never judgment). NEVER throws, NEVER blocks: returns warnings
150
+ * the caller surfaces at emit-time and writes anyway (inv6). The headline check
151
+ * is the unknown-recipient typo class (strategy-claude 2026-06-09): a typo'd
152
+ * recipient writes under a wrong name and is undelivered-but-not-errored unless
153
+ * the sender is told loudly.
154
+ */
155
+ export declare function validateDispatchContent(header: {
156
+ to: string;
157
+ related?: string[];
158
+ }, knownAgents: readonly string[]): string[];
159
+ /**
160
+ * Resolve the single sender identity for an outbound dispatch. Unlike the
161
+ * reader (which resolves a SET of self-agents to filter by), send must pick
162
+ * ONE. Precedence: explicit `--from` > unambiguous `resolveSelfAgents` > error.
163
+ * A >1 ambiguous map (e.g. totem hosts both totem-claude + totem-gemini) is a
164
+ * hard usage error — never silently pick one (it would mis-attribute the
165
+ * dispatch). Zero is a hard error too — never write to `.../undefined/outbox`.
166
+ */
167
+ export declare function resolveSelfSender(repoRoot: string, env: Record<string, string | undefined>, explicitFrom?: string): string;
168
+ /**
169
+ * Compose + validate + write an outbound dispatch to the sender's own outbox.
170
+ * Structural validity is by construction; content warnings are returned (the
171
+ * CLI wrapper surfaces them loudly) and never block the write. The only HARD
172
+ * failures are usage errors (missing to/subject, unresolvable/ambiguous self,
173
+ * unreadable body-file) and actuation failure (a write that didn't land —
174
+ * fail-loud, Tenet 4, the opposite of the inv6 content case).
175
+ */
176
+ export declare function mailSend(opts: MailSendOptions): MailSendResult;
177
+ /**
178
+ * `totem mail reply <source>` — syntactic sugar over `mailSend`. Reads the
179
+ * source dispatch (HARD error if missing/unparseable — reply structurally needs
180
+ * it to infer the recipient + subject), then sends with `to = source.from`
181
+ * (falling back to the source's outbox-dir agent, reader parity),
182
+ * `subject = "Re: <source.subject>"`, and `in-reply-to` set to the source's
183
+ * repo-relative wire form. Any field can still be overridden via opts.
184
+ */
185
+ export declare function mailReply(source: string, opts?: Omit<MailSendOptions, 'to' | 'subject' | 'inReplyTo'> & {
186
+ to?: string;
187
+ subject?: string;
188
+ }): MailSendResult;
189
+ /**
190
+ * CLI wrapper for `mail send` / `mail reply`. Surfaces content warnings LOUDLY
191
+ * on stderr at emit-time (inv6: the dispatch still wrote — this is the typo
192
+ * backstop, not a block), then confirms the written path.
193
+ */
194
+ export declare function mailSendCommand(result: MailSendResult): Promise<MailSendResult>;
77
195
  //# sourceMappingURL=mail.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/commands/mail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAqBH,mDAAmD;AACnD,MAAM,WAAW,SAAS;IACxB,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,iFAAiF;IACjF,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,yCAAyC;AACzC,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;KAC3C,CAAC;IACF,+EAA+E;IAC/E,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AA0OD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,GAAE,kBAAuB,GAAG,cAAc,CA4GtE;AA8BD,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC,cAAc,CAAC,CAoBxF"}
1
+ {"version":3,"file":"mail.d.ts","sourceRoot":"","sources":["../../src/commands/mail.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@
19
19
  */
20
20
  import * as fs from 'node:fs';
21
21
  import * as path from 'node:path';
22
- import { resolveSelfAgents } from '@mmnto/totem';
22
+ import { isPathSafeAgentId, knownCohortAgents, resolveSelfAgents, TotemError } from '@mmnto/totem';
23
23
  // ─── Constants ──────────────────────────────────────────
24
24
  const TAG = 'Mail';
25
25
  /**
@@ -90,17 +90,67 @@ function parseHeader(content) {
90
90
  }
91
91
  const fromMatch = header.match(/^from:\s*(.+)$/im);
92
92
  const subjectMatch = header.match(/^[-\s]*subject:\s*(.+)$/im);
93
+ const subject = subjectMatch ? unquoteScalar(subjectMatch[1].trim()) : null;
94
+ // ADR-098 v0.4 codified `timestamp:` (full RFC3339) as canonical, replacing
95
+ // legacy `date:`; `date:` remains a backwards-compat read (the amendment's
96
+ // own migration note). Read `timestamp:` first, fall back to `date:`. The
97
+ // surfaced field stays `MailEntry.date` (no rename) — it is the displayed
98
+ // time, and a cosmetic rename would widen blast radius across hooks +
99
+ // `--json` consumers for no contract gain (Tenet 5; strategy-claude concur
100
+ // 2026-06-09, folded into ADR-098's migration note on the strategy side).
101
+ const timestampMatch = header.match(/^timestamp:\s*(.+)$/im);
93
102
  const dateMatch = header.match(/^date:\s*(.+)$/im);
103
+ const when = timestampMatch ? timestampMatch[1] : dateMatch ? dateMatch[1] : null;
104
+ // Every field below is sender-controlled wire text that downstream writers
105
+ // (`formatTextResult` → stderr, `--json` consumers' logs) display verbatim —
106
+ // escape raw control bytes at this single boundary so no parse path (quoted,
107
+ // unquoted, hand-authored) can carry terminal-injection bytes into
108
+ // `MailEntry` (CR R5 on mmnto-ai/totem#2134; the unquoted exposure predates
109
+ // this PR — closing the whole class here, not just the unquote fallback).
94
110
  return {
95
111
  ok: true,
96
112
  header: {
97
- to: toMatch[1].trim(),
98
- from: fromMatch ? fromMatch[1].trim() : null,
99
- subject: subjectMatch ? subjectMatch[1].trim() : null,
100
- date: dateMatch ? dateMatch[1].trim() : null,
113
+ to: escapeControlBytes(toMatch[1].trim()),
114
+ from: fromMatch ? escapeControlBytes(fromMatch[1].trim()) : null,
115
+ subject: subject !== null ? escapeControlBytes(subject) : null,
116
+ date: when !== null ? escapeControlBytes(when.trim()) : null,
101
117
  },
102
118
  };
103
119
  }
120
+ /**
121
+ * Replace each raw control byte with its JSON-escaped spelling (ESC becomes
122
+ * the six characters backslash-u-0-0-1-b, LF becomes backslash-n, …) so the
123
+ * value stays display-safe AND lossless — the escaped form is visible instead
124
+ * of interpreted. Printable text passes through unchanged.
125
+ */
126
+ function escapeControlBytes(value) {
127
+ return value.replace(/\p{Cc}/gu, (ch) => JSON.stringify(ch).slice(1, -1));
128
+ }
129
+ /**
130
+ * Strict PRINTABLE JSON-string shape: a double-quoted scalar whose decoded
131
+ * value provably contains no control bytes. The only escapes admitted are
132
+ * `\"` `\\` `\/` — the ones that decode to printables. Escapes that decode to
133
+ * control bytes (`\n`, `\t`, `\b\f\r`, `\uXXXX`) deliberately do NOT match
134
+ * (CR R4 on mmnto-ai/totem#2134): a control-bearing quoted subject would
135
+ * otherwise decode into raw ESC/newline that `formatTextResult` writes to
136
+ * stderr — the same terminal-injection class the agent-id guard blocks.
137
+ * Likewise hand-authored asymmetric quotes, raw control bytes, and single
138
+ * quotes — all read verbatim.
139
+ */
140
+ const PRINTABLE_JSON_STRING_SCALAR = /^"(?:[^"\\\p{Cc}]|\\["\\/])*"$/u;
141
+ /**
142
+ * Undo `yamlScalar`'s double-quoting on read so quoted scalars round-trip:
143
+ * compose → parse → `Re: <subject>` must not accrete quotes, and `pollMail`
144
+ * must surface the subject the sender typed (CR R3 on mmnto-ai/totem#2134).
145
+ * The shape pre-check makes `JSON.parse` infallible here — no catch needed —
146
+ * and confines unquoting to printable-only strings, so a wire value encoding
147
+ * control bytes surfaces in its escaped spelling instead of decoding into the
148
+ * terminal (display stays lossless AND injection-free), and reader behavior
149
+ * for legacy/hand-authored mail is unchanged.
150
+ */
151
+ function unquoteScalar(value) {
152
+ return PRINTABLE_JSON_STRING_SCALAR.test(value) ? JSON.parse(value) : value;
153
+ }
104
154
  /**
105
155
  * Build the set of basenames that should be skipped because they have
106
156
  * already been actioned. Drains `processed/` and `processed/_broadcast/`
@@ -372,4 +422,348 @@ export async function mailCommand(opts = {}) {
372
422
  }
373
423
  return result;
374
424
  }
425
+ // ─── Outbound: send / reply (mmnto-ai/totem#2042) ───────
426
+ //
427
+ // The actuator half of the ADR-106 coordination triad (sensor = `pollMail`
428
+ // above). Before this, `totem mail send` silently fell through to the read
429
+ // command and every dispatch was hand-authored against five undocumented
430
+ // conventions — a discipline the protocol structurally could not satisfy
431
+ // (Tenet 13: sensor without actuator). Three composing validity layers,
432
+ // none violating ADR-106 inv6 (fail-open transport):
433
+ //
434
+ // structural — v0.4 compliance by CONSTRUCTION (the `DispatchHeader` type
435
+ // makes a malformed-shape dispatch unrepresentable);
436
+ // content — predicates that can't be guaranteed at construction
437
+ // (recipient known? refs non-empty?) → LOUD warn + write
438
+ // anyway (a blocked dispatch is worse than a malformed one,
439
+ // the mmnto-ai/totem#2119 exhibit);
440
+ // reader — `pollMail`'s scan-errors-always-warn is the never-silent
441
+ // -drop backstop.
442
+ //
443
+ // (OQ-1 ruled 1b by satur8d 2026-06-09; emit-shape + reader `timestamp:` read
444
+ // concurred by strategy-claude, ADR-098 owner, same day.)
445
+ /** ADR-098 v0.4 canonical schema literal emitted by the actuator. */
446
+ const ADR098_SCHEMA = 'adr-098-v0.4';
447
+ /**
448
+ * Double-quote a frontmatter scalar (JSON form is a valid YAML double-quoted
449
+ * scalar) only when the raw value would otherwise mis-parse: edge whitespace,
450
+ * a newline/quote, a leading flow/indicator char, or a `: ` / ` #` sequence
451
+ * (YAML's map-value + comment triggers). Now that the actuator is the
452
+ * v0.4-compliant emitter, the output must be real YAML — the derivation engine
453
+ * will parse it, unlike the regex reader. Refs like `owner/repo#123` (no space
454
+ * before `#`) stay unquoted, matching the de-facto wire.
455
+ */
456
+ function yamlScalar(value) {
457
+ const needsQuote = value === '' ||
458
+ value !== value.trim() ||
459
+ /[\n"]/.test(value) ||
460
+ /^[[\]{}>|*&!%@`'"#-]/.test(value) ||
461
+ /:\s/.test(value) ||
462
+ /\s#/.test(value) ||
463
+ // YAML 1.1 plain-scalar coercion traps: a bare boolean/null/numeric-shaped
464
+ // value would parse as a non-string once the derivation engine YAML-parses
465
+ // the wire (GCA R3 on mmnto-ai/totem#2134; incl. YAML 1.1's bare y/n and
466
+ // exponential/trailing-dot floats). Quote to pin the string type.
467
+ /^(?:y|n|yes|no|true|false|on|off|null|~)$/i.test(value) ||
468
+ /^[+-]?(?:\d+\.?|\d*\.\d+)(?:[eE][+-]?\d+)?$/.test(value);
469
+ return needsQuote ? JSON.stringify(value) : value;
470
+ }
471
+ /**
472
+ * Serialize a dispatch header + body to ADR-098 v0.4 markdown. Pure +
473
+ * deterministic — the round-trip anchor: its output MUST parse back through
474
+ * `parseHeader` (the sensor↔actuator "one enumeration, two readers" pairing).
475
+ * Frontmatter keys are kebab-case wire form, the surface the reader greps.
476
+ */
477
+ export function composeDispatch(header, body) {
478
+ const lines = ['---'];
479
+ lines.push(`schema: ${header.schema}`);
480
+ // `from`/`to` are traversal-validated agent-ids, but YAML-quote them anyway
481
+ // (defense in depth) so a non-standard recipient can't inject frontmatter
482
+ // once the v0.4 derivation engine YAML-parses this (CodeRabbit, mmnto-ai/totem#2134).
483
+ lines.push(`from: ${yamlScalar(header.from)}`);
484
+ lines.push(`to: ${yamlScalar(header.to)}`);
485
+ lines.push(`timestamp: ${header.timestamp}`);
486
+ lines.push(`subject: ${yamlScalar(header.subject)}`);
487
+ lines.push(`expected-action: ${yamlScalar(header.expectedAction)}`);
488
+ if (header.inReplyTo !== undefined)
489
+ lines.push(`in-reply-to: ${yamlScalar(header.inReplyTo)}`);
490
+ if (header.priority !== undefined)
491
+ lines.push(`priority: ${yamlScalar(header.priority)}`);
492
+ if (header.related !== undefined && header.related.length > 0) {
493
+ lines.push('related-issues:');
494
+ for (const ref of header.related)
495
+ lines.push(` - ${yamlScalar(ref)}`);
496
+ }
497
+ lines.push('---');
498
+ lines.push('');
499
+ // Exactly one trailing newline on the body for stable round-trips.
500
+ lines.push(body.replace(/\s+$/, ''));
501
+ lines.push('');
502
+ return lines.join('\n');
503
+ }
504
+ /**
505
+ * Content-class validation (inv1: exact predicates only — set membership and
506
+ * non-emptiness, never judgment). NEVER throws, NEVER blocks: returns warnings
507
+ * the caller surfaces at emit-time and writes anyway (inv6). The headline check
508
+ * is the unknown-recipient typo class (strategy-claude 2026-06-09): a typo'd
509
+ * recipient writes under a wrong name and is undelivered-but-not-errored unless
510
+ * the sender is told loudly.
511
+ */
512
+ export function validateDispatchContent(header, knownAgents) {
513
+ const warnings = [];
514
+ const to = header.to.trim();
515
+ const known = new Set(knownAgents.map((a) => a.toLowerCase()));
516
+ if (to.toLowerCase() !== 'broadcast' && !known.has(to.toLowerCase())) {
517
+ warnings.push(`recipient "${to}" is not a known cohort agent — the dispatch WILL be written but may be undeliverable (check for a typo). Known: ${[...knownAgents].sort().join(', ')}, broadcast.`);
518
+ }
519
+ if (header.related !== undefined) {
520
+ for (const ref of header.related) {
521
+ if (ref.trim().length === 0) {
522
+ warnings.push('a related-issues entry is empty/whitespace (kept verbatim).');
523
+ }
524
+ }
525
+ }
526
+ return warnings;
527
+ }
528
+ /**
529
+ * Resolve the single sender identity for an outbound dispatch. Unlike the
530
+ * reader (which resolves a SET of self-agents to filter by), send must pick
531
+ * ONE. Precedence: explicit `--from` > unambiguous `resolveSelfAgents` > error.
532
+ * A >1 ambiguous map (e.g. totem hosts both totem-claude + totem-gemini) is a
533
+ * hard usage error — never silently pick one (it would mis-attribute the
534
+ * dispatch). Zero is a hard error too — never write to `.../undefined/outbox`.
535
+ */
536
+ export function resolveSelfSender(repoRoot, env, explicitFrom) {
537
+ if (explicitFrom !== undefined && explicitFrom.trim().length > 0) {
538
+ return explicitFrom.trim();
539
+ }
540
+ const resolved = resolveSelfAgents(repoRoot, env);
541
+ if (resolved.agents.length === 1)
542
+ return resolved.agents[0];
543
+ if (resolved.agents.length === 0) {
544
+ throw new TotemError('MAIL_SEND_FAILED', 'cannot resolve a sender identity for the outbound dispatch', 'set TOTEM_SELF_AGENT or pass --from <agent-id>.');
545
+ }
546
+ throw new TotemError('MAIL_SEND_FAILED', `ambiguous sender — this repo hosts ${resolved.agents.join(', ')}`, 'pass --from <agent-id> to disambiguate.');
547
+ }
548
+ function assertSafeAgentId(id, label) {
549
+ // Reuse core's single path-segment guard (`isPathSafeAgentId`) rather than
550
+ // re-deriving the pattern — both the sender's `--from` (an outbox directory
551
+ // segment) and the recipient's `--to` (interpolated into the filename) must
552
+ // be blocked from `/`, `\`, `..`, a null byte (Greptile P2 / GCA + CR
553
+ // path-traversal critical, mmnto-ai/totem#2134), and from control/
554
+ // whitespace/win32-reserved characters that would propagate into the
555
+ // dispatch markdown and CLI logs (CR R2, same PR).
556
+ if (!isPathSafeAgentId(id)) {
557
+ // JSON-escape the echoed id: this rejection path exists precisely because
558
+ // the value may carry control bytes — echoing it raw to stderr would
559
+ // re-create the terminal injection it blocks (CR R3 on mmnto-ai/totem#2134).
560
+ throw new TotemError('MAIL_SEND_FAILED', `invalid --${label} ${JSON.stringify(id)} (path-traversal, unsafe characters, or empty)`, 'pass a plain agent-id such as "totem-claude" (no path separators, "..", whitespace, or control characters).');
561
+ }
562
+ }
563
+ /**
564
+ * Reduce a recipient/agent token to a filename-safe form: a defense-in-depth
565
+ * layer on top of `assertSafeAgentId` (which already rejects traversal). Even a
566
+ * validated-but-odd `to` (e.g. a stray `:`/space — illegal in win32 filenames)
567
+ * cannot corrupt the outbox filename. Valid kebab agent-ids pass through
568
+ * unchanged; `broadcast` is preserved.
569
+ */
570
+ function fileToken(value) {
571
+ const cleaned = value.replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '');
572
+ return cleaned.length > 0 ? cleaned : 'recipient';
573
+ }
574
+ /**
575
+ * Filename-safe minute-granularity UTC stamp: `YYYY-MM-DDTHHMMZ`. Colons are
576
+ * illegal in win32 filenames (strategy-claude 2026-06-09, non-negotiable) and
577
+ * this matches every existing outbox name; the frontmatter carries the full
578
+ * RFC3339 `timestamp:` separately.
579
+ */
580
+ function compactStamp(d) {
581
+ const iso = d.toISOString();
582
+ // `17:34` → `1734` (drop the colon, illegal in win32 filenames).
583
+ const hhmm = iso.slice(11, 16).replace(':', '');
584
+ return `${iso.slice(0, 10)}T${hhmm}Z`;
585
+ }
586
+ /** Short, kebab filename slug (concise-dispatch-filename discipline: ~3-6 words). */
587
+ function slugify(subject, explicit) {
588
+ const source = explicit !== undefined && explicit.trim().length > 0 ? explicit : subject;
589
+ const slug = source
590
+ .toLowerCase()
591
+ .replace(/[^a-z0-9]+/g, '-')
592
+ .replace(/^-+|-+$/g, '')
593
+ .split('-')
594
+ .filter((s) => s.length > 0)
595
+ .slice(0, 6)
596
+ .join('-')
597
+ .slice(0, 48);
598
+ return slug.length > 0 ? slug : 'dispatch';
599
+ }
600
+ /**
601
+ * First non-colliding outbox path for `<base>.md`, suffixing `-2`, `-3`, … on
602
+ * collision (two dispatches to the same recipient in the same minute with the
603
+ * same slug). Deterministic — no randomness.
604
+ */
605
+ function uniqueOutboxPath(outboxDir, base) {
606
+ let candidate = path.join(outboxDir, `${base}.md`);
607
+ let n = 2;
608
+ while (fs.existsSync(candidate)) {
609
+ candidate = path.join(outboxDir, `${base}-${n}.md`);
610
+ n += 1;
611
+ }
612
+ return candidate;
613
+ }
614
+ /**
615
+ * Compose + validate + write an outbound dispatch to the sender's own outbox.
616
+ * Structural validity is by construction; content warnings are returned (the
617
+ * CLI wrapper surfaces them loudly) and never block the write. The only HARD
618
+ * failures are usage errors (missing to/subject, unresolvable/ambiguous self,
619
+ * unreadable body-file) and actuation failure (a write that didn't land —
620
+ * fail-loud, Tenet 4, the opposite of the inv6 content case).
621
+ */
622
+ export function mailSend(opts) {
623
+ const env = opts.env ?? process.env;
624
+ const repoRoot = path.resolve(opts.repoRoot ?? process.cwd());
625
+ const now = (opts.now ?? (() => new Date()))();
626
+ const to = opts.to.trim();
627
+ if (to.length === 0)
628
+ throw new TotemError('MAIL_SEND_FAILED', '--to <recipient> is required', 'pass --to <recipient-agent-id> (or "broadcast").');
629
+ // `to` is interpolated into the outbox filename + the frontmatter — block
630
+ // path-traversal here, same guard as `from` (GCA/Greptile/CR critical, mmnto-ai/totem#2134).
631
+ assertSafeAgentId(to, 'to');
632
+ const subject = opts.subject.trim();
633
+ if (subject.length === 0)
634
+ throw new TotemError('MAIL_SEND_FAILED', '--subject <text> is required', 'pass --subject "<text>".');
635
+ const from = resolveSelfSender(repoRoot, env, opts.from);
636
+ assertSafeAgentId(from, 'from');
637
+ // Body precedence: bodyFile > body > empty. A declared --body-file that can't
638
+ // be read is a hard usage error — the intended body is lost, never silently
639
+ // ship an empty dispatch in its place.
640
+ let body = opts.body ?? '';
641
+ if (opts.bodyFile !== undefined) {
642
+ try {
643
+ body = fs.readFileSync(opts.bodyFile, 'utf-8');
644
+ // totem-context: a declared --body-file that can't be read is a hard usage error (the user named a body source that doesn't resolve); rethrow as a clear message rather than degrade to an empty dispatch.
645
+ }
646
+ catch (err) {
647
+ throw new TotemError('MAIL_SEND_FAILED', `--body-file unreadable (${opts.bodyFile}): ${String(err)}`, 'check the --body-file path exists and is readable.', err);
648
+ }
649
+ }
650
+ const header = {
651
+ schema: ADR098_SCHEMA,
652
+ from,
653
+ to,
654
+ timestamp: now.toISOString(),
655
+ subject,
656
+ expectedAction: opts.expectedAction?.trim() || 'none',
657
+ ...(opts.inReplyTo !== undefined ? { inReplyTo: opts.inReplyTo } : {}),
658
+ ...(opts.priority !== undefined ? { priority: opts.priority } : {}),
659
+ ...(opts.related !== undefined && opts.related.length > 0 ? { related: opts.related } : {}),
660
+ };
661
+ const warnings = validateDispatchContent(header, opts.knownAgents ?? knownCohortAgents());
662
+ const outboxDir = path.join(repoRoot, '.totem', 'orchestration', from, 'outbox');
663
+ try {
664
+ fs.mkdirSync(outboxDir, { recursive: true });
665
+ // totem-context: a failed outbox mkdir (EACCES, read-only FS, a file where
666
+ // the dir should be) means the dispatch cannot land — fail LOUD (Tenet 4)
667
+ // with the path, never proceed to a write that will also fail (GCA mmnto-ai/totem#2134).
668
+ }
669
+ catch (err) {
670
+ throw new TotemError('MAIL_SEND_FAILED', `could not create outbox directory (${outboxDir}): ${String(err)}`, 'check write permissions on the repo .totem/orchestration tree.', err);
671
+ }
672
+ const base = `${compactStamp(now)}-${fileToken(to)}-${slugify(subject, opts.slug)}`;
673
+ const filePath = uniqueOutboxPath(outboxDir, base);
674
+ const content = composeDispatch(header, body);
675
+ // Atomic write (ADR-106: temp + rename; readers never see a torn write).
676
+ const tmp = `${filePath}.tmp`;
677
+ try {
678
+ fs.writeFileSync(tmp, content, 'utf-8');
679
+ fs.renameSync(tmp, filePath);
680
+ }
681
+ catch (err) {
682
+ // Actuation failure is fail-LOUD (Tenet 4): a write that did not land is a
683
+ // silent drop — the inverse of the inv6 content-warn case. Best-effort
684
+ // remove any partial temp first (force suppresses ENOENT; maxRetries/
685
+ // retryDelay guard a transient win32 lock), then surface the original
686
+ // error with the path so the sender knows nothing shipped.
687
+ const hint = 'check outbox directory permissions and available disk space.';
688
+ try {
689
+ fs.rmSync(tmp, { force: true, maxRetries: 3, retryDelay: 50 });
690
+ }
691
+ catch (cleanupErr) {
692
+ // A failed cleanup must not shadow the actuation error (GCA R2 on
693
+ // mmnto-ai/totem#2134): rethrow the ORIGINAL failure as the cause, with
694
+ // the stranded-temp note folded into the message so both stay visible.
695
+ throw new TotemError('MAIL_SEND_FAILED', `write failed (${filePath}): ${String(err)} (temp file ${tmp} could not be removed: ${String(cleanupErr)})`, hint, err);
696
+ }
697
+ throw new TotemError('MAIL_SEND_FAILED', `write failed (${filePath}): ${String(err)}`, hint, err);
698
+ }
699
+ return { filePath, fileName: path.basename(filePath), header, warnings };
700
+ }
701
+ /**
702
+ * `totem mail reply <source>` — syntactic sugar over `mailSend`. Reads the
703
+ * source dispatch (HARD error if missing/unparseable — reply structurally needs
704
+ * it to infer the recipient + subject), then sends with `to = source.from`
705
+ * (falling back to the source's outbox-dir agent, reader parity),
706
+ * `subject = "Re: <source.subject>"`, and `in-reply-to` set to the source's
707
+ * repo-relative wire form. Any field can still be overridden via opts.
708
+ */
709
+ export function mailReply(source, opts = {}) {
710
+ let content;
711
+ try {
712
+ content = fs.readFileSync(source, 'utf-8');
713
+ // totem-context: reply cannot proceed without the source (it infers to/subject from it) — a missing/unreadable source is a hard usage error, rethrown clearly, not a degraded send.
714
+ }
715
+ catch (err) {
716
+ throw new TotemError('MAIL_SEND_FAILED', `cannot read reply source dispatch (${source}): ${String(err)}`, 'check the reply <source> path exists and is readable.', err);
717
+ }
718
+ const parsed = parseHeader(content);
719
+ if (!parsed.ok) {
720
+ throw new TotemError('MAIL_SEND_FAILED', `reply source is not parseable mail (${source}): ${parsed.reason}`, 'the source must be an ADR-098 dispatch with a frontmatter block; use `mail send --to` for a fresh dispatch.');
721
+ }
722
+ // Reader-parity fallback (CR R3 on mmnto-ai/totem#2134): `pollMail` accepts
723
+ // a dispatch without `from:` by falling back to the outbox directory name,
724
+ // so a reply to such mail must not hard-fail where the reader succeeded —
725
+ // derive the sender from the `<agent>/outbox/<file>` layout.
726
+ const replyTo = opts.to ?? parsed.header.from ?? senderFromSourcePath(source) ?? '';
727
+ if (replyTo.trim().length === 0) {
728
+ throw new TotemError('MAIL_SEND_FAILED', `reply source has no "from:" to reply to (${source})`, 'use `totem mail send --to <agent>` instead.');
729
+ }
730
+ const subject = opts.subject ?? `Re: ${parsed.header.subject ?? '(no subject)'}`;
731
+ return mailSend({ ...opts, to: replyTo, subject, inReplyTo: portableSourceRef(source) });
732
+ }
733
+ /**
734
+ * Derive the sender agent-id from a dispatch path's `<agent>/outbox/<file>`
735
+ * layout — the same fallback `pollMail` applies when frontmatter omits
736
+ * `from:` (reader↔reply parity, CR R3 on mmnto-ai/totem#2134).
737
+ */
738
+ function senderFromSourcePath(source) {
739
+ const segments = path.resolve(source).split(/[/\\]/);
740
+ const outboxIdx = segments.lastIndexOf('outbox');
741
+ return outboxIdx > 0 ? (segments[outboxIdx - 1] ?? null) : null;
742
+ }
743
+ /**
744
+ * Reduce a reply-source path to the portable repo-relative wire form
745
+ * (`.totem/orchestration/<agent>/outbox/<file>` — the de-facto cohort shape
746
+ * for `in-reply-to:`) so an absolute local path never leaks machine-specific
747
+ * structure (drive letters, usernames) into shared frontmatter (GCA R3 on
748
+ * mmnto-ai/totem#2134). Falls back to the basename when the source lives
749
+ * outside a recognizable orchestration tree.
750
+ */
751
+ function portableSourceRef(source) {
752
+ const normalized = source.replace(/\\/g, '/');
753
+ const idx = normalized.lastIndexOf('.totem/orchestration/');
754
+ return idx >= 0 ? normalized.slice(idx) : path.basename(source);
755
+ }
756
+ /**
757
+ * CLI wrapper for `mail send` / `mail reply`. Surfaces content warnings LOUDLY
758
+ * on stderr at emit-time (inv6: the dispatch still wrote — this is the typo
759
+ * backstop, not a block), then confirms the written path.
760
+ */
761
+ export async function mailSendCommand(result) {
762
+ const { log } = await import('../ui.js');
763
+ for (const w of result.warnings)
764
+ log.warn(TAG, w);
765
+ log.success(TAG, `Dispatch written: ${path.relative(process.cwd(), result.filePath)}`);
766
+ log.info(TAG, ` to: ${result.header.to} · from: ${result.header.from} · ${result.header.timestamp}`);
767
+ return result;
768
+ }
375
769
  //# sourceMappingURL=mail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/commands/mail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mail.js","sourceRoot":"","sources":["../../src/commands/mail.ts"],"names":[],"mappings":"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"}