@mmnto/cli 1.113.1 → 1.115.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-seat-identity.d.ts +71 -0
- package/dist/commands/doctor-seat-identity.d.ts.map +1 -0
- package/dist/commands/doctor-seat-identity.js +352 -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 +230 -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 +184 -0
- package/dist/commands/gemini-sessionstart-contract.test.js.map +1 -0
- package/dist/commands/init-templates.d.ts +6 -6
- package/dist/commands/init-templates.d.ts.map +1 -1
- package/dist/commands/init-templates.js +271 -19
- package/dist/commands/init-templates.js.map +1 -1
- package/dist/commands/init.d.ts +40 -4
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +357 -32
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/init.test.js +546 -10
- 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/install-hooks.d.ts +26 -8
- package/dist/commands/install-hooks.d.ts.map +1 -1
- package/dist/commands/install-hooks.js +51 -6
- package/dist/commands/install-hooks.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/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 +176 -0
- package/dist/commands/sessionstart-manifest-contract.test.js.map +1 -0
- 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 +73 -0
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// ─── Reflex versioning ────────────────────────────────────
|
|
4
4
|
// Bump REFLEX_VERSION whenever the AI_PROMPT_BLOCK content changes materially.
|
|
5
5
|
// This allows `totem init` to detect stale blocks and offer upgrades.
|
|
6
|
-
export const REFLEX_VERSION =
|
|
6
|
+
export const REFLEX_VERSION = 10;
|
|
7
7
|
export const REFLEX_START = '<!-- totem:reflexes:start -->';
|
|
8
8
|
export const REFLEX_END = '<!-- totem:reflexes:end -->';
|
|
9
9
|
export const REFLEX_VERSION_RE = /<!-- totem:reflexes:version:(\d+) -->/;
|
|
@@ -37,7 +37,7 @@ When deciding where to store information or rules, use this decision tree:
|
|
|
37
37
|
### Workflow Orchestrator Rituals
|
|
38
38
|
[FOR LOCAL CLI/TERMINAL AGENTS ONLY] Do not attempt to run these commands if you are a headless bot or operating in a cloud PR environment (e.g., Gemini Code Assist on GitHub).
|
|
39
39
|
Totem provides CLI commands that map to your development lifecycle. Use them at these moments:
|
|
40
|
-
1. **Start of Session:** The SessionStart hook automatically runs \`totem describe\` to emit the project-orientation banner (project, tier, rule/lesson counts, targets, hooks). For richer derived project state (recent merged PRs, current branch + uncommitted files, latest strategy journal pointer, package versions, rule/lesson counts), call the MCP \`describe_project\` tool — the derived view replaces the retired \`docs/active_work.md\` convention (state is observed, not declared). For a freshness check (manifest staleness, shield drift, review state), run \`totem status\`. Run \`totem triage\` if you need to pick a new task.
|
|
40
|
+
1. **Start of Session:** The SessionStart hook automatically runs \`totem describe\` to emit the project-orientation banner (project, tier, rule/lesson counts, targets, hooks). For richer derived project state (recent merged PRs, current branch + uncommitted files, latest strategy journal pointer, package versions, rule/lesson counts), call the MCP \`describe_project\` tool — the derived view replaces the retired \`docs/active_work.md\` convention (state is observed, not declared). For a freshness check (manifest staleness, shield drift, review state), run \`totem status\`. Run \`totem triage\` if you need to pick a new task. On a seat without the SessionStart hook (a cold start, or a vehicle that doesn't run hooks), run \`totem orient\` to derive in-flight and parked project state from primitives.
|
|
41
41
|
2. **Before Implementation:** Optionally run \`totem spec <issue-url-or-topic>\` to retrieve related context (lessons, specs, code) before writing code. Treat any generated plan as one retrieval input, never the contract — derive the actual design from primary sources (the issue, the code, project doctrine).
|
|
42
42
|
3. **Before Push:** Run \`totem lint\` — the deterministic enforcement floor (zero LLM, ~2s). **Before PR:** \`totem review\` runs supplementary AI lanes over the diff (~18s) — advisory sensors, not a merge gate; known limits are disclosed in the run output (LLM window truncation on large diffs; non-code files skipped). Your team's own review discipline decides what constitutes the review of record.
|
|
43
43
|
4. **End of Session:** Run \`totem handoff\` to generate a snapshot for the next agent session with current progress and open threads.
|
|
@@ -51,7 +51,7 @@ You do NOT have access to the local CLI. Instead, use the Totem MCP tools direct
|
|
|
51
51
|
3. **When you spot a recurring issue:** Call \`add_lesson\` to persist the trap so future reviews catch it automatically.
|
|
52
52
|
|
|
53
53
|
### Context Management Guardrail
|
|
54
|
-
You must be highly defensive of your own context window
|
|
54
|
+
You must be highly defensive of your own context window — and you are the ONLY party holding the denominator (your model's window size and current occupancy); no Totem tool can measure it for you. Large Totem tool responses may carry a self-closing \`<size-disclosure ... />\` line stating that payload's measured size and cumulative session totals — a measurement, never a risk claim. Weigh it against your own occupancy and escalate to the user only when the pressure is genuinely material, suggesting \`totem handoff\` to capture mid-task state before clearing the chat. If you receive a \`<totem_system_warning>\` tag in a tool response (e.g. index staleness or degraded retrieval), read it silently and act on it or surface it naturally. Do NOT echo raw XML tags to the user.
|
|
55
55
|
${REFLEX_END}
|
|
56
56
|
`;
|
|
57
57
|
export const TOTEM_FILE_MARKER = '// [totem] auto-generated';
|
|
@@ -158,7 +158,7 @@ export const GEMINI_SESSION_START = `// [totem] auto-generated — Gemini CLI Se
|
|
|
158
158
|
// totem-strategy, totem-substrate, arhgap11, and totem-status, and
|
|
159
159
|
// matches the Claude-side SessionStart hook scaffolded by this same init
|
|
160
160
|
// pass (mmnto-ai/totem#1884).
|
|
161
|
-
const {
|
|
161
|
+
const { spawnSync } = require('child_process');
|
|
162
162
|
|
|
163
163
|
// totem-status refresh-gh — GH-federation snapshot refresh (mmnto-ai/totem-status#127
|
|
164
164
|
// C3 residual; tracking mmnto-ai/totem#2556). Spawn-and-forget, detached+unref, and
|
|
@@ -251,27 +251,175 @@ try {
|
|
|
251
251
|
process.stderr.write('[SessionStart] totem-status refresh-gh unavailable (non-fatal): ' + (err instanceof Error ? err.message : String(err)) + '\\n');
|
|
252
252
|
}
|
|
253
253
|
|
|
254
|
+
// ─── A.3.a: mint session ID + log session_start event ──────────
|
|
255
|
+
// New with mmnto-ai/totem#2468: this template never took over the A.3.a duty
|
|
256
|
+
// its Claude sibling carries, so Gemini-seat sessions had no session UUID and
|
|
257
|
+
// no session_start denominator row — the selection-manifest join key and the
|
|
258
|
+
// recorded-absence contract both need them. Same shape as the Claude template.
|
|
259
|
+
// Fire-and-forget: a ledger failure must NOT block the briefing.
|
|
260
|
+
let mintedSessionId = null;
|
|
254
261
|
try {
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
262
|
+
const nodePath = require('path');
|
|
263
|
+
const { mkdirSync, writeFileSync, appendFileSync } = require('fs');
|
|
264
|
+
const { randomUUID } = require('crypto');
|
|
265
|
+
const ledgerDir = nodePath.join(process.cwd(), '.totem', 'ledger');
|
|
266
|
+
mkdirSync(ledgerDir, { recursive: true });
|
|
267
|
+
mintedSessionId = randomUUID();
|
|
268
|
+
writeFileSync(nodePath.join(ledgerDir, '.session-id'), mintedSessionId, 'utf-8');
|
|
269
|
+
const selfAgentEntry = (process.env.TOTEM_SELF_AGENT || '')
|
|
270
|
+
.split(',')
|
|
271
|
+
.map((s) => s.trim())
|
|
272
|
+
.find((s) => s.length > 0);
|
|
273
|
+
const event = {
|
|
274
|
+
timestamp: new Date().toISOString(),
|
|
275
|
+
type: 'session_start',
|
|
276
|
+
activity_name: 'SessionStart',
|
|
277
|
+
source: 'bot',
|
|
278
|
+
...(selfAgentEntry ? { agent_source: selfAgentEntry } : {}),
|
|
279
|
+
justification: '',
|
|
280
|
+
session_id: mintedSessionId,
|
|
281
|
+
};
|
|
282
|
+
appendFileSync(nodePath.join(ledgerDir, 'events.ndjson'), JSON.stringify(event) + '\\n', 'utf-8');
|
|
283
|
+
} catch (err) {
|
|
284
|
+
process.stderr.write(
|
|
285
|
+
'[SessionStart] session-start telemetry unavailable (non-fatal): ' +
|
|
286
|
+
(err instanceof Error ? err.message : String(err)) +
|
|
287
|
+
'\\n',
|
|
288
|
+
);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Interactive Gemini ingests SessionStart CONTEXT only from the
|
|
292
|
+
// hookSpecificOutput.additionalContext envelope — plain exit-0 stdout wraps as
|
|
293
|
+
// systemMessage, which the interactive startup consumer never injects, so the
|
|
294
|
+
// briefing was absent from model context in the primary dev flow even once
|
|
295
|
+
// registered (mmnto-ai/totem#2613; leg-verified against @google/gemini-cli
|
|
296
|
+
// 0.54.4). systemMessage rides alongside the envelope for the human surfaces:
|
|
297
|
+
// interactive startup and /clear render it as a UI info item and -p echoes it
|
|
298
|
+
// to stderr — so the briefing is VISIBLE to the human on those surfaces and
|
|
299
|
+
// injected as context for the model (one payload, both audiences).
|
|
300
|
+
// The Totem CLI writes its banner and diagnostics to STDERR, so capture takes
|
|
301
|
+
// BOTH streams — the same seam the Claude-side template documents; a
|
|
302
|
+
// stdout-only capture silently drops the describe leg (mmnto-ai/totem#2613
|
|
303
|
+
// falsification round). A leg failure carries any partial stdout plus the
|
|
304
|
+
// fail-soft note; exit is ALWAYS 0 (never blocks boot).
|
|
305
|
+
// Per-leg 20s budgets cut the measured worst-case process exit from 60s to
|
|
306
|
+
// 40s against Gemini's 60s DEFAULT_HOOK_TIMEOUT (which tree-kills at expiry;
|
|
307
|
+
// no descendant inherits this hook's own streams).
|
|
308
|
+
let briefing = '';
|
|
309
|
+
try {
|
|
310
|
+
const describeRun = spawnSync('totem describe', {
|
|
311
|
+
shell: true,
|
|
312
|
+
timeout: 20000,
|
|
313
|
+
encoding: 'utf-8',
|
|
314
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
258
315
|
});
|
|
316
|
+
// spawnSync sets .error (it does NOT throw) on spawn-level failure/timeout.
|
|
317
|
+
briefing += describeRun.stdout || '';
|
|
318
|
+
if (describeRun.error || describeRun.status !== 0) {
|
|
319
|
+
const reason = describeRun.error
|
|
320
|
+
? (describeRun.error.message || String(describeRun.error))
|
|
321
|
+
: ((describeRun.stderr || '').trim() || 'totem describe exited ' + describeRun.status);
|
|
322
|
+
briefing += '[Totem] Briefing unavailable: ' + reason + '\\n';
|
|
323
|
+
} else {
|
|
324
|
+
briefing += describeRun.stderr || '';
|
|
325
|
+
}
|
|
259
326
|
} catch (err) {
|
|
260
|
-
|
|
327
|
+
// Belt for a genuinely throwing spawnSync: same fail-soft note.
|
|
328
|
+
briefing += '[Totem] Briefing unavailable: ' + (err instanceof Error ? err.message : String(err)) + '\\n';
|
|
261
329
|
}
|
|
262
330
|
|
|
331
|
+
// Selection-manifest block boundary (mmnto-ai/totem#2468): everything in
|
|
332
|
+
// \`briefing\` up to here is the describe leg — including its fail-soft note,
|
|
333
|
+
// which IS injected payload when it fires.
|
|
334
|
+
const describeBriefingEnd = briefing.length;
|
|
335
|
+
|
|
263
336
|
// totem orient --session — live derived in-flight state, ADDITIVE to describe
|
|
264
337
|
// (mmnto-ai/totem#2044 PR-3). Own try/catch; orient --session is itself boot-safe.
|
|
265
338
|
try {
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
339
|
+
const orientRun = spawnSync('totem orient --session', {
|
|
340
|
+
shell: true,
|
|
341
|
+
timeout: 20000,
|
|
342
|
+
encoding: 'utf-8',
|
|
343
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
269
344
|
});
|
|
345
|
+
briefing += orientRun.stdout || '';
|
|
346
|
+
if (orientRun.error || orientRun.status !== 0) {
|
|
347
|
+
const orientReason = orientRun.error
|
|
348
|
+
? (orientRun.error.message || String(orientRun.error))
|
|
349
|
+
: ((orientRun.stderr || '').trim() || 'totem orient exited ' + orientRun.status);
|
|
350
|
+
// Boot-safe: orient is additive to describe; a failure never blocks session
|
|
351
|
+
// start. The note rides the briefing (both keys) so the model and the human
|
|
352
|
+
// both see the orient gap — a stderr-only note is invisible to the model
|
|
353
|
+
// (CR round on this PR); the parent-stderr breadcrumb stays for hook
|
|
354
|
+
// diagnostics.
|
|
355
|
+
briefing += '[Totem] Orient briefing unavailable: ' + orientReason + '\\n';
|
|
356
|
+
process.stderr.write('[SessionStart] orient briefing unavailable (non-fatal): ' + orientReason + '\\n');
|
|
357
|
+
} else {
|
|
358
|
+
briefing += orientRun.stderr || '';
|
|
359
|
+
}
|
|
270
360
|
} catch (err) {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
process.stderr.write('[SessionStart] orient briefing unavailable (non-fatal): ' +
|
|
361
|
+
const orientMsg = err instanceof Error ? err.message : String(err);
|
|
362
|
+
briefing += '[Totem] Orient briefing unavailable: ' + orientMsg + '\\n';
|
|
363
|
+
process.stderr.write('[SessionStart] orient briefing unavailable (non-fatal): ' + orientMsg + '\\n');
|
|
274
364
|
}
|
|
365
|
+
|
|
366
|
+
// ─── selection manifest (mmnto-ai/totem#2468 M1) ────────────────
|
|
367
|
+
// Inline append mirroring the A.3.a write above — this rendered hook runs
|
|
368
|
+
// standalone in consumer repos with no access to @mmnto/totem's writer. The
|
|
369
|
+
// row shape is BOUND to SelectionManifestRowSchema (strict): change both in
|
|
370
|
+
// the same PR; the template contract test parses this row with the real
|
|
371
|
+
// schema. A zero-byte block never becomes a candidate (nothing was injected).
|
|
372
|
+
try {
|
|
373
|
+
const nodePath = require('path');
|
|
374
|
+
const { appendFileSync } = require('fs');
|
|
375
|
+
const { createHash } = require('crypto');
|
|
376
|
+
const measure = (id, content, reason) => {
|
|
377
|
+
const bytes = Buffer.byteLength(content, 'utf-8');
|
|
378
|
+
return {
|
|
379
|
+
id,
|
|
380
|
+
disposition: 'selected',
|
|
381
|
+
reason,
|
|
382
|
+
bytes,
|
|
383
|
+
approxTokens: Math.ceil(bytes / 4),
|
|
384
|
+
fingerprint: createHash('sha256').update(content, 'utf-8').digest('hex').slice(0, 16),
|
|
385
|
+
};
|
|
386
|
+
};
|
|
387
|
+
const selfAgent = (process.env.TOTEM_SELF_AGENT || '')
|
|
388
|
+
.split(',')
|
|
389
|
+
.map((s) => s.trim())
|
|
390
|
+
.find((s) => s.length > 0);
|
|
391
|
+
const row = {
|
|
392
|
+
schemaVersion: 1,
|
|
393
|
+
timestamp: new Date().toISOString(),
|
|
394
|
+
emitter: 'session-start',
|
|
395
|
+
...(mintedSessionId ? { session_id: mintedSessionId } : {}),
|
|
396
|
+
...(selfAgent ? { agent_source: selfAgent } : {}),
|
|
397
|
+
context: { template: 'gemini-managed' },
|
|
398
|
+
universe: 'managed-template blocks: describe + orient --session',
|
|
399
|
+
costBasis: { bytes: 'utf8-length', approxTokens: 'ceil(bytes/4) approximation' },
|
|
400
|
+
candidates: [
|
|
401
|
+
measure('describe', briefing.slice(0, describeBriefingEnd), 'always-injected briefing'),
|
|
402
|
+
measure('orient:session-block', briefing.slice(describeBriefingEnd), 'always-injected briefing'),
|
|
403
|
+
].filter((c) => c.bytes > 0),
|
|
404
|
+
warnings: [],
|
|
405
|
+
};
|
|
406
|
+
appendFileSync(
|
|
407
|
+
nodePath.join(process.cwd(), '.totem', 'ledger', 'selection-manifests.ndjson'),
|
|
408
|
+
JSON.stringify(row) + '\\n',
|
|
409
|
+
'utf-8',
|
|
410
|
+
);
|
|
411
|
+
} catch (err) {
|
|
412
|
+
process.stderr.write(
|
|
413
|
+
'[SessionStart] selection manifest unavailable (non-fatal): ' +
|
|
414
|
+
(err instanceof Error ? err.message : String(err)) +
|
|
415
|
+
'\\n',
|
|
416
|
+
);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
process.stdout.write(JSON.stringify({
|
|
420
|
+
systemMessage: briefing,
|
|
421
|
+
hookSpecificOutput: { hookEventName: 'SessionStart', additionalContext: briefing },
|
|
422
|
+
}) + '\\n');
|
|
275
423
|
${TOTEM_FILE_END}
|
|
276
424
|
`;
|
|
277
425
|
export const GEMINI_BEFORE_TOOL = `// [totem] auto-generated — Gemini CLI BeforeTool hook
|
|
@@ -443,7 +591,7 @@ function checkXrepoQualifyRefs(toolName, toolInput) {
|
|
|
443
591
|
);
|
|
444
592
|
}
|
|
445
593
|
|
|
446
|
-
|
|
594
|
+
function beforeTool(toolName, toolInput) {
|
|
447
595
|
checkOutboxSubjectQuoting(toolName, toolInput);
|
|
448
596
|
checkAutoCloseKeywords(toolName, toolInput);
|
|
449
597
|
checkXrepoQualifyRefs(toolName, toolInput);
|
|
@@ -457,7 +605,50 @@ module.exports = function beforeTool(toolName, toolInput) {
|
|
|
457
605
|
} catch (err) {
|
|
458
606
|
throw new Error('[Totem Error] Shield check failed. Fix violations before pushing.\\n' + err.message);
|
|
459
607
|
}
|
|
460
|
-
}
|
|
608
|
+
}
|
|
609
|
+
module.exports = beforeTool;
|
|
610
|
+
|
|
611
|
+
// Entry point — Gemini runs this file as a COMMAND hook (\`node BeforeTool.cjs\`)
|
|
612
|
+
// with the hook-input JSON on stdin; without this block the file defines a
|
|
613
|
+
// function and exits 0 = allow, leaving every guard above inert
|
|
614
|
+
// (mmnto-ai/totem#2611). Exit contract (leg-verified against
|
|
615
|
+
// @google/gemini-cli 0.54.4): exit 0 allow · exit 1 ALLOW with warning (an
|
|
616
|
+
// uncaught throw exits 1 — throwing can never deny) · exit >= 2 deny ·
|
|
617
|
+
// structured stdout {"decision":"deny","reason"} deny. A violation emits the
|
|
618
|
+
// structured deny AND exits 2 so either channel suffices. Gemini reads stderr
|
|
619
|
+
// only when stdout is EMPTY, so the stderr copy on the deny path never enters
|
|
620
|
+
// the hook pipeline — it serves hand-run invocations; on the exit-1 paths the
|
|
621
|
+
// stderr breadcrumb IS the payload that surfaces as the warning. Input the
|
|
622
|
+
// guard cannot evaluate (unparseable JSON, missing tool_name) is
|
|
623
|
+
// allow-with-warning (exit 1): denying every call on a vendor shape change
|
|
624
|
+
// would brick the seat, and exiting 0 would hide the outage.
|
|
625
|
+
if (require.main === module) {
|
|
626
|
+
let raw = '';
|
|
627
|
+
process.stdin.setEncoding('utf-8');
|
|
628
|
+
process.stdin.on('data', function (chunk) { raw += chunk; });
|
|
629
|
+
process.stdin.on('end', function () {
|
|
630
|
+
let input;
|
|
631
|
+
try {
|
|
632
|
+
input = JSON.parse(raw);
|
|
633
|
+
} catch (err) {
|
|
634
|
+
process.stderr.write('[totem BeforeTool] hook input is not parseable JSON — guard did not evaluate this call: ' + (err instanceof Error ? err.message : String(err)) + '\\n');
|
|
635
|
+
process.exit(1);
|
|
636
|
+
}
|
|
637
|
+
if (typeof input !== 'object' || input === null || typeof input.tool_name !== 'string') {
|
|
638
|
+
process.stderr.write('[totem BeforeTool] hook input carries no tool_name — guard did not evaluate this call\\n');
|
|
639
|
+
process.exit(1);
|
|
640
|
+
}
|
|
641
|
+
try {
|
|
642
|
+
beforeTool(input.tool_name, input.tool_input);
|
|
643
|
+
} catch (err) {
|
|
644
|
+
const reason = err instanceof Error ? err.message : String(err);
|
|
645
|
+
process.stdout.write(JSON.stringify({ decision: 'deny', reason: reason }) + '\\n');
|
|
646
|
+
process.stderr.write(reason + '\\n');
|
|
647
|
+
process.exit(2);
|
|
648
|
+
}
|
|
649
|
+
process.exit(0);
|
|
650
|
+
});
|
|
651
|
+
}
|
|
461
652
|
${TOTEM_FILE_END}
|
|
462
653
|
`;
|
|
463
654
|
export const GEMINI_SKILL = `<!-- [totem] auto-generated — Totem Architect skill -->
|
|
@@ -758,10 +949,14 @@ const { randomUUID } = require('crypto');
|
|
|
758
949
|
const { join } = require('path');
|
|
759
950
|
|
|
760
951
|
// ─── A.3.a: mint session ID + log session_start event ──────────
|
|
952
|
+
// Hoisted so the selection-manifest row below (mmnto-ai/totem#2468) can carry
|
|
953
|
+
// the same session UUID as its join key.
|
|
954
|
+
let mintedSessionId = null;
|
|
761
955
|
try {
|
|
762
956
|
const ledgerDir = join(process.cwd(), '.totem', 'ledger');
|
|
763
957
|
mkdirSync(ledgerDir, { recursive: true });
|
|
764
958
|
const sessionId = randomUUID();
|
|
959
|
+
mintedSessionId = sessionId;
|
|
765
960
|
writeFileSync(join(ledgerDir, '.session-id'), sessionId, 'utf-8');
|
|
766
961
|
// Amended ADR-078 (2026-07-15): agent_source is the env-carried seat-id
|
|
767
962
|
// (TOTEM_SELF_AGENT, first non-empty comma entry), never a vendor class
|
|
@@ -891,6 +1086,9 @@ try {
|
|
|
891
1086
|
}
|
|
892
1087
|
|
|
893
1088
|
// ─── totem describe briefing (existing behavior) ────────────────
|
|
1089
|
+
// Captured (mmnto-ai/totem#2468): the injected block is the selection-manifest
|
|
1090
|
+
// candidate below — the not-installed notice is a notice, not a briefing.
|
|
1091
|
+
let describeText = '';
|
|
894
1092
|
try {
|
|
895
1093
|
const cliPath = join(process.cwd(), 'node_modules', '@mmnto', 'cli', 'dist', 'index.js');
|
|
896
1094
|
if (existsSync(cliPath)) {
|
|
@@ -903,7 +1101,8 @@ try {
|
|
|
903
1101
|
}
|
|
904
1102
|
// Totem CLI writes diagnostic output to stderr; route to stdout so the
|
|
905
1103
|
// session-start context lands in Claude's prompt rather than user-visible noise.
|
|
906
|
-
|
|
1104
|
+
describeText = (result.stdout || '') + (result.stderr || '');
|
|
1105
|
+
process.stdout.write(describeText);
|
|
907
1106
|
} else {
|
|
908
1107
|
process.stdout.write(
|
|
909
1108
|
'[Totem] @mmnto/cli not installed. Run \`pnpm install\` (or your package manager equivalent) to enable session-start orientation.\\n',
|
|
@@ -923,6 +1122,7 @@ try {
|
|
|
923
1122
|
// never replace. Its OWN try/catch so an orient failure never disturbs the describe
|
|
924
1123
|
// briefing or the boot; \`orient --session\` is itself boot-safe (emits nothing when
|
|
925
1124
|
// nothing is high-signal, never exits non-zero, degrades to honest "could not derive").
|
|
1125
|
+
let orientText = '';
|
|
926
1126
|
try {
|
|
927
1127
|
const orientCliPath = join(process.cwd(), 'node_modules', '@mmnto', 'cli', 'dist', 'index.js');
|
|
928
1128
|
if (existsSync(orientCliPath)) {
|
|
@@ -935,7 +1135,8 @@ try {
|
|
|
935
1135
|
if (orientResult.error) {
|
|
936
1136
|
throw orientResult.error;
|
|
937
1137
|
}
|
|
938
|
-
|
|
1138
|
+
orientText = (orientResult.stdout || '') + (orientResult.stderr || '');
|
|
1139
|
+
process.stdout.write(orientText);
|
|
939
1140
|
}
|
|
940
1141
|
} catch (err) {
|
|
941
1142
|
// Boot-safe: orient is additive to describe (already emitted), so a failure never
|
|
@@ -947,6 +1148,57 @@ try {
|
|
|
947
1148
|
'\\n',
|
|
948
1149
|
);
|
|
949
1150
|
}
|
|
1151
|
+
|
|
1152
|
+
// ─── selection manifest (mmnto-ai/totem#2468 M1) ────────────────
|
|
1153
|
+
// Inline append mirroring the session_start write above — this rendered hook
|
|
1154
|
+
// runs standalone in consumer repos with no access to @mmnto/totem's writer.
|
|
1155
|
+
// The row shape is BOUND to SelectionManifestRowSchema (strict): change both
|
|
1156
|
+
// in the same PR; the template contract test parses this row with the real
|
|
1157
|
+
// schema. A zero-byte block never becomes a candidate (nothing was injected).
|
|
1158
|
+
try {
|
|
1159
|
+
const { createHash } = require('crypto');
|
|
1160
|
+
const measure = (id, content, reason) => {
|
|
1161
|
+
const bytes = Buffer.byteLength(content, 'utf-8');
|
|
1162
|
+
return {
|
|
1163
|
+
id,
|
|
1164
|
+
disposition: 'selected',
|
|
1165
|
+
reason,
|
|
1166
|
+
bytes,
|
|
1167
|
+
approxTokens: Math.ceil(bytes / 4),
|
|
1168
|
+
fingerprint: createHash('sha256').update(content, 'utf-8').digest('hex').slice(0, 16),
|
|
1169
|
+
};
|
|
1170
|
+
};
|
|
1171
|
+
const selfAgent = (process.env.TOTEM_SELF_AGENT || '')
|
|
1172
|
+
.split(',')
|
|
1173
|
+
.map((s) => s.trim())
|
|
1174
|
+
.find((s) => s.length > 0);
|
|
1175
|
+
const row = {
|
|
1176
|
+
schemaVersion: 1,
|
|
1177
|
+
timestamp: new Date().toISOString(),
|
|
1178
|
+
emitter: 'session-start',
|
|
1179
|
+
...(mintedSessionId ? { session_id: mintedSessionId } : {}),
|
|
1180
|
+
...(selfAgent ? { agent_source: selfAgent } : {}),
|
|
1181
|
+
context: { template: 'claude-managed' },
|
|
1182
|
+
universe: 'managed-template blocks: describe + orient --session',
|
|
1183
|
+
costBasis: { bytes: 'utf8-length', approxTokens: 'ceil(bytes/4) approximation' },
|
|
1184
|
+
candidates: [
|
|
1185
|
+
measure('describe', describeText, 'always-injected briefing'),
|
|
1186
|
+
measure('orient:session-block', orientText, 'always-injected briefing'),
|
|
1187
|
+
].filter((c) => c.bytes > 0),
|
|
1188
|
+
warnings: [],
|
|
1189
|
+
};
|
|
1190
|
+
appendFileSync(
|
|
1191
|
+
join(process.cwd(), '.totem', 'ledger', 'selection-manifests.ndjson'),
|
|
1192
|
+
JSON.stringify(row) + '\\n',
|
|
1193
|
+
'utf-8',
|
|
1194
|
+
);
|
|
1195
|
+
} catch (err) {
|
|
1196
|
+
process.stderr.write(
|
|
1197
|
+
'[SessionStart] selection manifest unavailable (non-fatal): ' +
|
|
1198
|
+
(err instanceof Error ? err.message : String(err)) +
|
|
1199
|
+
'\\n',
|
|
1200
|
+
);
|
|
1201
|
+
}
|
|
950
1202
|
${TOTEM_FILE_END}
|
|
951
1203
|
`;
|
|
952
1204
|
export const CLAUDE_SESSION_START_ENTRY = {
|
|
@@ -1577,7 +1829,7 @@ totem review --covariate
|
|
|
1577
1829
|
|
|
1578
1830
|
It resolves the current branch lineage exactly as the review fan does, loads the LATEST verdict artifact for that lineage (\`.totem/artifacts/verdicts/\`), and prints the canonical \`local-lane:\` line from the single core-owned renderer — never trust a pasted or hand-copied value. If it reports no verdict for the current lineage, there is no line to carry (note that in the body and continue).
|
|
1579
1831
|
|
|
1580
|
-
2. **Assemble the single body.** One comment: the per-item dispositions (fixed / deferred / nit / extracted) followed by the non-empty \`local-lane:\` line from step 1, verbatim. The local \`review-loop\` holds this line but never posts it, so \`/review-reply\` is the SOLE path that carries it to GitHub.
|
|
1832
|
+
2. **Assemble the single body.** One comment: @-tag EVERY bot addressed in the round — exactly ONE tag each (e.g. \`@gemini-code-assist\`, \`@coderabbitai\`, \`@greptileai\`) so each bot registers the disposition, and tags must be present when the comment is POSTED, never edited in (GCA's listener fires on comment-created only). One notification per bot per round: a bot with nothing addressed gets no tag, and a bot already @-tagged in this round's batch comment (the GCA defer/nit batch above) is NOT re-tagged here. Never combine a tag with ANY bot's review trigger — triggers are standalone comments, one trigger and no prose (a trigger embedded in a content-rich comment chat-routes the bot). Then the per-item dispositions (fixed / deferred / nit / extracted) followed by the non-empty \`local-lane:\` line from step 1, verbatim. The local \`review-loop\` holds this line but never posts it, so \`/review-reply\` is the SOLE path that carries it to GitHub.
|
|
1581
1833
|
|
|
1582
1834
|
3. **Post on an explicit go.** Show the assembled body and wait for the operator; on their go, post the ONE comment with \`gh pr comment $ARGUMENTS --body-file -\` (pipe the body via stdin). Never mutate the PR autonomously.
|
|
1583
1835
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-templates.js","sourceRoot":"","sources":["../../src/commands/init-templates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init-templates.js","sourceRoot":"","sources":["../../src/commands/init-templates.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ScaffoldOutcome } from './host-hooks.js';
|
|
2
|
-
import { type Ecosystem } from './init-detect.js';
|
|
2
|
+
import { type Ecosystem, type HookInstallerResult } from './init-detect.js';
|
|
3
3
|
export type { AiToolInfo, HookInstallerResult } from './init-detect.js';
|
|
4
4
|
export { buildNpxCommand, detectEmbeddingTier } from './init-detect.js';
|
|
5
5
|
export { AI_PROMPT_BLOCK, generateConfig, generateConfigForFormat, REFLEX_VERSION, } from './init-templates.js';
|
|
@@ -51,6 +51,22 @@ export declare function wirePreparePackageJson(pkgPath: string): {
|
|
|
51
51
|
existing?: string;
|
|
52
52
|
err?: string;
|
|
53
53
|
};
|
|
54
|
+
/**
|
|
55
|
+
* Whether a consumer owns a custom `<stem>.js` sibling of a managed `<stem>.cjs` vendor
|
|
56
|
+
* hook (mmnto-ai/totem#2601 — the strategy#482 incident: the generic template dropped
|
|
57
|
+
* beside a repo's own SessionStart.js, double-firing or regressing orientation depending
|
|
58
|
+
* on Gemini's hook discovery). Ownership is the same positional gate `scaffoldFile` and
|
|
59
|
+
* `migrateLegacyGeminiHooks` use, so a marker-headed sibling — the legacy `.js`→`.cjs`
|
|
60
|
+
* migration case — never reports here; only an UNOWNED sibling does. A sibling that
|
|
61
|
+
* cannot be read is not provably totem-owned and reports (non-destructive posture,
|
|
62
|
+
* never a crash). Returns the sibling's basename when one is present.
|
|
63
|
+
*
|
|
64
|
+
* This is a PREDICATE, not the policy: whether a report withholds the scaffold or only
|
|
65
|
+
* discloses a coexistence depends on whether the managed `.cjs` already exists — see
|
|
66
|
+
* `installGeminiHooks`, the sole caller.
|
|
67
|
+
*/
|
|
68
|
+
export declare function findUnownedHookSibling(cjsPath: string): string | undefined;
|
|
69
|
+
export declare function installGeminiHooks(cwd: string): Promise<HookInstallerResult[]>;
|
|
54
70
|
/**
|
|
55
71
|
* Merge Totem hooks into .claude/settings.local.json without overwriting
|
|
56
72
|
* existing user-defined hooks. Installs the Bash matcher for shield-gate.
|
|
@@ -102,16 +118,25 @@ export declare function scaffoldClaudeSkill(filePath: string, canonicalContent:
|
|
|
102
118
|
forceSuppressed?: boolean;
|
|
103
119
|
err?: string;
|
|
104
120
|
};
|
|
105
|
-
export declare function scaffoldMcpConfig(filePath: string, serverEntry: Record<string, unknown
|
|
121
|
+
export declare function scaffoldMcpConfig(filePath: string, serverEntry: Record<string, unknown>, opts?: {
|
|
122
|
+
/** The project root — the second resolution base for relative script pins
|
|
123
|
+
* (host configs in subdirectories carry root-relative pins; leg D1). */
|
|
124
|
+
projectRoot?: string;
|
|
125
|
+
}): {
|
|
106
126
|
action: 'created' | 'merged' | 'skipped';
|
|
127
|
+
/** The entry name an existing `@mmnto/mcp` registration was found under, when the
|
|
128
|
+
* skip came from the package-level dedup rather than the `totem` key check. */
|
|
129
|
+
existingName?: string;
|
|
107
130
|
err?: string;
|
|
108
131
|
};
|
|
109
132
|
/**
|
|
110
133
|
* Install the Universal AI Developer Baseline lessons into the lessons file.
|
|
111
134
|
* Returns 'installed', 'exists' (already present), or 'skipped' (user declined).
|
|
112
|
-
* In non-
|
|
135
|
+
* In non-interactive mode (CI, `--yes`, piped input), defaults to installing without
|
|
136
|
+
* prompting. `interactive` is threaded from init's single non-interactive predicate
|
|
137
|
+
* (mmnto-ai/totem#2601) and falls back to the bare TTY probe for standalone callers.
|
|
113
138
|
*/
|
|
114
|
-
export declare function installBaselineLessons(baselinePath: string, rl: import('node:readline/promises').Interface, ecosystems?: Ecosystem[]): Promise<'installed' | 'exists' | 'skipped'>;
|
|
139
|
+
export declare function installBaselineLessons(baselinePath: string, rl: import('node:readline/promises').Interface, ecosystems?: Ecosystem[], interactive?: boolean): Promise<'installed' | 'exists' | 'skipped'>;
|
|
115
140
|
export type ReflexStatus = 'current' | 'outdated' | 'missing';
|
|
116
141
|
/** Detect whether the reflex block in a file is current, outdated, or missing. */
|
|
117
142
|
export declare function detectReflexStatus(content: string): ReflexStatus;
|
|
@@ -130,6 +155,12 @@ export declare function upgradeReflexes(content: string): {
|
|
|
130
155
|
content: string;
|
|
131
156
|
clean: boolean;
|
|
132
157
|
};
|
|
158
|
+
/**
|
|
159
|
+
* Resolve the AI-tool selection prompt's answer. Anything that is not an explicit
|
|
160
|
+
* `none` / `select` is the Enter default, `all` — which is also the answer the
|
|
161
|
+
* non-interactive path takes without raising the prompt (mmnto-ai/totem#2601).
|
|
162
|
+
*/
|
|
163
|
+
export declare function resolveToolSelection(answer: string): 'all' | 'none' | 'select';
|
|
133
164
|
export declare function initCommand(options?: {
|
|
134
165
|
bare?: boolean;
|
|
135
166
|
pilot?: boolean;
|
|
@@ -149,6 +180,11 @@ export declare function initCommand(options?: {
|
|
|
149
180
|
* (mmnto-ai/totem#2088, Proposal 292 S1). Non-interactive; honest-absent
|
|
150
181
|
* when the `@mmnto/strategy-doctrine` pin is not installed. */
|
|
151
182
|
doctrine?: boolean;
|
|
183
|
+
/** Answer every prompt with its default and raise none (mmnto-ai/totem#2601).
|
|
184
|
+
* Implied when stdin is not a TTY: a partial guard let a stdin-null init print
|
|
185
|
+
* the non-interactive banner and still die at an unguarded prompt with mutations
|
|
186
|
+
* already landed. Every non-interactive default is logged. */
|
|
187
|
+
yes?: boolean;
|
|
152
188
|
/** Override home directory for testing. */
|
|
153
189
|
_homeDir?: string;
|
|
154
190
|
}): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAOA,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAGL,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|