@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionstart-manifest-contract.test.d.ts","sourceRoot":"","sources":["../../src/commands/sessionstart-manifest-contract.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Contract of the RENDERED SessionStart templates' inline selection-manifest
|
|
3
|
+
* rows (mmnto-ai/totem#2468 M1).
|
|
4
|
+
*
|
|
5
|
+
* The published `.cjs` templates run standalone in consumer repos, so they
|
|
6
|
+
* hand-build their manifest rows instead of importing core's writer. That is
|
|
7
|
+
* a drift hazard by construction; this suite is the coupling that makes it
|
|
8
|
+
* safe: every row a rendered template emits MUST parse under the REAL
|
|
9
|
+
* `SelectionManifestRowSchema` (strict at both levels). Change the schema or
|
|
10
|
+
* a template and this suite forces the other to move in the same PR.
|
|
11
|
+
*
|
|
12
|
+
* Executed the way the host runtimes execute the hooks: `node <hook>` in a
|
|
13
|
+
* temp cwd (the gemini-sessionstart-contract pattern).
|
|
14
|
+
*/
|
|
15
|
+
import { spawnSync } from 'node:child_process';
|
|
16
|
+
import * as fs from 'node:fs';
|
|
17
|
+
import * as os from 'node:os';
|
|
18
|
+
import * as path from 'node:path';
|
|
19
|
+
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
|
20
|
+
import { SelectionManifestRowSchema } from '@mmnto/totem';
|
|
21
|
+
import { cleanTmpDir } from '../test-utils.js';
|
|
22
|
+
import { CLAUDE_SESSION_START, GEMINI_SESSION_START } from './init-templates.js';
|
|
23
|
+
const SPAWN_TIMEOUT_MS = 60_000;
|
|
24
|
+
const TEST_TIMEOUT_MS = 90_000;
|
|
25
|
+
let tmpDir;
|
|
26
|
+
beforeEach(() => {
|
|
27
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'totem-2468-ss-'));
|
|
28
|
+
});
|
|
29
|
+
afterEach(() => {
|
|
30
|
+
cleanTmpDir(tmpDir);
|
|
31
|
+
});
|
|
32
|
+
function writeHook(rel, content) {
|
|
33
|
+
const hookPath = path.join(tmpDir, ...rel.split('/'));
|
|
34
|
+
fs.mkdirSync(path.dirname(hookPath), { recursive: true });
|
|
35
|
+
fs.writeFileSync(hookPath, content, 'utf-8');
|
|
36
|
+
return hookPath;
|
|
37
|
+
}
|
|
38
|
+
function runHook(hookPath, opts = {}) {
|
|
39
|
+
const env = { ...process.env };
|
|
40
|
+
// Deterministic attribution baseline: absent unless the test stamps a seat.
|
|
41
|
+
// ADR-078 / leg round 1 MB-2 — agent_source comes ONLY from this env var.
|
|
42
|
+
delete env.TOTEM_SELF_AGENT;
|
|
43
|
+
if (opts.seat !== undefined)
|
|
44
|
+
env.TOTEM_SELF_AGENT = opts.seat;
|
|
45
|
+
if (opts.pathEnv !== undefined) {
|
|
46
|
+
env.PATH = opts.pathEnv;
|
|
47
|
+
env.Path = opts.pathEnv;
|
|
48
|
+
}
|
|
49
|
+
const run = spawnSync(process.execPath, [hookPath], {
|
|
50
|
+
cwd: tmpDir,
|
|
51
|
+
encoding: 'utf-8',
|
|
52
|
+
timeout: SPAWN_TIMEOUT_MS,
|
|
53
|
+
input: '',
|
|
54
|
+
env,
|
|
55
|
+
});
|
|
56
|
+
if (run.error)
|
|
57
|
+
throw run.error;
|
|
58
|
+
return { status: run.status, stdout: run.stdout, stderr: run.stderr };
|
|
59
|
+
}
|
|
60
|
+
function readNdjson(rel) {
|
|
61
|
+
return fs
|
|
62
|
+
.readFileSync(path.join(tmpDir, rel), 'utf-8')
|
|
63
|
+
.split('\n')
|
|
64
|
+
.filter((l) => l.trim())
|
|
65
|
+
.map((l) => JSON.parse(l));
|
|
66
|
+
}
|
|
67
|
+
/** Cross-platform `totem` shim for the Gemini template's shell-resolved legs. */
|
|
68
|
+
function writeTotemShim(dir) {
|
|
69
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
70
|
+
fs.writeFileSync(path.join(dir, 'totem.cmd'), '@echo off\r\necho shim-out %*\r\necho shim-err %* 1>&2\r\n', 'utf-8');
|
|
71
|
+
const sh = path.join(dir, 'totem');
|
|
72
|
+
fs.writeFileSync(sh, '#!/bin/sh\necho "shim-out $@"\necho "shim-err $@" 1>&2\n', 'utf-8');
|
|
73
|
+
fs.chmodSync(sh, 0o755);
|
|
74
|
+
}
|
|
75
|
+
/** Stub `@mmnto/cli` dist so the Claude template's node-spawned legs emit. */
|
|
76
|
+
function writeCliStub() {
|
|
77
|
+
const distDir = path.join(tmpDir, 'node_modules', '@mmnto', 'cli', 'dist');
|
|
78
|
+
fs.mkdirSync(distDir, { recursive: true });
|
|
79
|
+
fs.writeFileSync(path.join(distDir, 'index.js'), "process.stdout.write('stub-' + process.argv[2] + ' output\\n');\n", 'utf-8');
|
|
80
|
+
}
|
|
81
|
+
function expectValidRow(row) {
|
|
82
|
+
const parsed = SelectionManifestRowSchema.safeParse(row);
|
|
83
|
+
expect(parsed.success, parsed.success ? '' : JSON.stringify(parsed.error.issues, null, 2)).toBe(true);
|
|
84
|
+
}
|
|
85
|
+
describe('rendered Gemini SessionStart — manifest + A.3.a contract (mmnto-ai/totem#2468)', () => {
|
|
86
|
+
it('emits a schema-valid manifest row keyed to the minted session id, and the session_start denominator row', () => {
|
|
87
|
+
const hookPath = writeHook('.gemini/hooks/SessionStart.cjs', GEMINI_SESSION_START);
|
|
88
|
+
const shimDir = path.join(tmpDir, 'shim');
|
|
89
|
+
writeTotemShim(shimDir);
|
|
90
|
+
const run = runHook(hookPath, { pathEnv: shimDir + path.delimiter + process.env.PATH });
|
|
91
|
+
expect(run.status).toBe(0);
|
|
92
|
+
// Envelope untouched by the new blocks — stdout is still one JSON payload.
|
|
93
|
+
const envelope = JSON.parse(run.stdout);
|
|
94
|
+
expect(envelope.hookSpecificOutput.hookEventName).toBe('SessionStart');
|
|
95
|
+
const sessionId = fs
|
|
96
|
+
.readFileSync(path.join(tmpDir, '.totem', 'ledger', '.session-id'), 'utf-8')
|
|
97
|
+
.trim();
|
|
98
|
+
// A.3.a denominator row — new for the Gemini template with this slice.
|
|
99
|
+
const events = readNdjson('.totem/ledger/events.ndjson');
|
|
100
|
+
const sessionStart = events.filter((e) => e.type === 'session_start');
|
|
101
|
+
expect(sessionStart).toHaveLength(1);
|
|
102
|
+
expect(sessionStart[0].session_id).toBe(sessionId);
|
|
103
|
+
const rows = readNdjson('.totem/ledger/selection-manifests.ndjson');
|
|
104
|
+
expect(rows).toHaveLength(1);
|
|
105
|
+
const row = rows[0];
|
|
106
|
+
expectValidRow(row);
|
|
107
|
+
expect(row.emitter).toBe('session-start');
|
|
108
|
+
expect(row.session_id).toBe(sessionId);
|
|
109
|
+
expect(row.context).toEqual({ template: 'gemini-managed' });
|
|
110
|
+
const candidates = row.candidates;
|
|
111
|
+
expect(candidates.map((c) => c.id)).toEqual(['describe', 'orient:session-block']);
|
|
112
|
+
expect(candidates.every((c) => c.disposition === 'selected')).toBe(true);
|
|
113
|
+
expect(candidates.every((c) => c.bytes > 0)).toBe(true);
|
|
114
|
+
expect(candidates.every((c) => /^[0-9a-f]{16}$/.test(String(c.fingerprint)))).toBe(true);
|
|
115
|
+
// Attribution is stamped absence (ADR-078; leg round 1 MB-2): with
|
|
116
|
+
// TOTEM_SELF_AGENT unset, NEITHER row guesses a seat.
|
|
117
|
+
expect(sessionStart[0].agent_source).toBeUndefined();
|
|
118
|
+
expect(row.agent_source).toBeUndefined();
|
|
119
|
+
}, TEST_TIMEOUT_MS);
|
|
120
|
+
it('stamps the seat on both rows when TOTEM_SELF_AGENT is set', () => {
|
|
121
|
+
const hookPath = writeHook('.gemini/hooks/SessionStart.cjs', GEMINI_SESSION_START);
|
|
122
|
+
const shimDir = path.join(tmpDir, 'shim');
|
|
123
|
+
writeTotemShim(shimDir);
|
|
124
|
+
const run = runHook(hookPath, {
|
|
125
|
+
pathEnv: shimDir + path.delimiter + process.env.PATH,
|
|
126
|
+
seat: 'seat-x, seat-y',
|
|
127
|
+
});
|
|
128
|
+
expect(run.status).toBe(0);
|
|
129
|
+
const events = readNdjson('.totem/ledger/events.ndjson');
|
|
130
|
+
expect(events.find((e) => e.type === 'session_start').agent_source).toBe('seat-x');
|
|
131
|
+
const rows = readNdjson('.totem/ledger/selection-manifests.ndjson');
|
|
132
|
+
expect(rows[0].agent_source).toBe('seat-x');
|
|
133
|
+
}, TEST_TIMEOUT_MS);
|
|
134
|
+
});
|
|
135
|
+
describe('rendered Claude SessionStart — manifest contract (mmnto-ai/totem#2468)', () => {
|
|
136
|
+
it('emits a schema-valid two-candidate row when the CLI is installed', () => {
|
|
137
|
+
const hookPath = writeHook('.claude/hooks/SessionStart.cjs', CLAUDE_SESSION_START);
|
|
138
|
+
writeCliStub();
|
|
139
|
+
const run = runHook(hookPath, { seat: 'seat-x' });
|
|
140
|
+
expect(run.status).toBe(0);
|
|
141
|
+
// The briefing itself still reaches stdout ahead of any telemetry.
|
|
142
|
+
expect(run.stdout).toContain('stub-describe output');
|
|
143
|
+
const sessionId = fs
|
|
144
|
+
.readFileSync(path.join(tmpDir, '.totem', 'ledger', '.session-id'), 'utf-8')
|
|
145
|
+
.trim();
|
|
146
|
+
const rows = readNdjson('.totem/ledger/selection-manifests.ndjson');
|
|
147
|
+
expect(rows).toHaveLength(1);
|
|
148
|
+
const row = rows[0];
|
|
149
|
+
expectValidRow(row);
|
|
150
|
+
expect(row.session_id).toBe(sessionId);
|
|
151
|
+
expect(row.agent_source).toBe('seat-x');
|
|
152
|
+
// The A.3.a denominator row stamps the same seat (leg round 2,
|
|
153
|
+
// finding 6 — symmetry with the Gemini pinning).
|
|
154
|
+
const events = readNdjson('.totem/ledger/events.ndjson');
|
|
155
|
+
expect(events.find((e) => e.type === 'session_start').agent_source).toBe('seat-x');
|
|
156
|
+
expect(row.context).toEqual({ template: 'claude-managed' });
|
|
157
|
+
const candidates = row.candidates;
|
|
158
|
+
expect(candidates.map((c) => c.id)).toEqual(['describe', 'orient:session-block']);
|
|
159
|
+
expect(candidates.every((c) => c.bytes > 0)).toBe(true);
|
|
160
|
+
}, TEST_TIMEOUT_MS);
|
|
161
|
+
it('emits an honest zero-candidate row when the CLI is not installed (nothing was injected), with no guessed seat', () => {
|
|
162
|
+
const hookPath = writeHook('.claude/hooks/SessionStart.cjs', CLAUDE_SESSION_START);
|
|
163
|
+
const run = runHook(hookPath);
|
|
164
|
+
expect(run.status).toBe(0);
|
|
165
|
+
const rows = readNdjson('.totem/ledger/selection-manifests.ndjson');
|
|
166
|
+
expect(rows).toHaveLength(1);
|
|
167
|
+
expectValidRow(rows[0]);
|
|
168
|
+
expect(rows[0].candidates).toEqual([]);
|
|
169
|
+
// Attribution is stamped absence (ADR-078; leg round 1 MB-2) — on the
|
|
170
|
+
// denominator row too (leg round 2, finding 6).
|
|
171
|
+
expect(rows[0].agent_source).toBeUndefined();
|
|
172
|
+
const events = readNdjson('.totem/ledger/events.ndjson');
|
|
173
|
+
expect(events.find((e) => e.type === 'session_start').agent_source).toBeUndefined();
|
|
174
|
+
}, TEST_TIMEOUT_MS);
|
|
175
|
+
});
|
|
176
|
+
//# sourceMappingURL=sessionstart-manifest-contract.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionstart-manifest-contract.test.js","sourceRoot":"","sources":["../../src/commands/sessionstart-manifest-contract.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -98,6 +98,26 @@ describe('truncateResults', () => {
|
|
|
98
98
|
const { content } = truncateResults(results, 10_000);
|
|
99
99
|
expect(content).toContain('additional results omitted');
|
|
100
100
|
});
|
|
101
|
+
// ─── Selection metadata (mmnto-ai/totem#2468) ───────────
|
|
102
|
+
it('records every fetched result — included AND char-budget cut — with measured blocks', () => {
|
|
103
|
+
const results = [fakeResult('A', 8000), fakeResult('B', 8000), fakeResult('C', 8000)];
|
|
104
|
+
const { included, candidates } = truncateResults(results, 10_000);
|
|
105
|
+
expect(included).toBe(1);
|
|
106
|
+
expect(candidates).toHaveLength(3);
|
|
107
|
+
expect(candidates.map((c) => c.included)).toEqual([true, false, false]);
|
|
108
|
+
// Measured over the formatted block, so bytes exceed the raw content length.
|
|
109
|
+
expect(candidates.every((c) => c.bytes > 8000)).toBe(true);
|
|
110
|
+
expect(candidates.every((c) => /^[0-9a-f]{16}$/.test(c.fingerprint))).toBe(true);
|
|
111
|
+
});
|
|
112
|
+
it('carries relevance through when present and omits it when absent', () => {
|
|
113
|
+
const withRel = { ...fakeResult('A', 100), relevance: 0.72 };
|
|
114
|
+
const { candidates } = truncateResults([withRel, fakeResult('B', 100)], 10_000);
|
|
115
|
+
expect(candidates[0].relevance).toBe(0.72);
|
|
116
|
+
expect(candidates[1].relevance).toBeUndefined();
|
|
117
|
+
});
|
|
118
|
+
it('returns empty candidates for no results', () => {
|
|
119
|
+
expect(truncateResults([], 10_000).candidates).toEqual([]);
|
|
120
|
+
});
|
|
101
121
|
});
|
|
102
122
|
// ─── getAutoContext (graceful degradation) ─────────────────
|
|
103
123
|
describe('getAutoContext', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-context.test.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/auto-context.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAElF,6DAA6D;AAE7D,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,WAAW,CAAC,4BAA4B,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,MAAM,GAAG,WAAW,CAAC,0BAA0B,CAAC,CAAC;QACvD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,MAAM,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,WAAW,CAAC,6BAA6B,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,6DAA6D;AAE7D,SAAS,UAAU,CAAC,KAAa,EAAE,aAAqB;IACtD,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;QAClC,aAAa,EAAE,EAAE;QACjB,QAAQ,EAAE,SAAS;QACnB,gBAAgB,EAAE,SAAS;QAC3B,IAAI,EAAE,MAAe;QACrB,KAAK;QACL,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACnF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QACrF,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,qCAAqC;QACzF,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;QAC/E,MAAM,EAAE,OAAO,EAAE,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,8DAA8D;AAE9D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,SAAS,EAAE,sBAAsB;gBACjC,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,iEAAiE;QACjE,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACrE,EAAE,CAAC,aAAa,CACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,EACpC,oEAAoE,CACrE,CAAC;QACF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,SAAS,EAAE,MAAM;gBACjB,aAAa,EAAE,GAAG;gBAClB,KAAK,EAAE,CAAC;gBACR,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,CAAC,OAAO,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClD,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,SAAS,EAAE,yBAAyB;gBACpC,aAAa,EAAE,GAAG;gBAClB,KAAK,EAAE,CAAC;gBACR,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;YACH,wDAAwD;YACxD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"auto-context.test.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/auto-context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,22 @@ export interface AutoContextOptions {
|
|
|
5
5
|
limit?: number;
|
|
6
6
|
projectRoot?: string;
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* Per-result selection metadata (mmnto-ai/totem#2468) so the SessionStart
|
|
10
|
+
* hook can record its vector candidates in a selection manifest without
|
|
11
|
+
* re-deriving the search. Measured over each result's FORMATTED block — the
|
|
12
|
+
* exact bytes that ship (or would have shipped) in the injection. Purely
|
|
13
|
+
* observational: computing a cut candidate's block is a pure function over
|
|
14
|
+
* content the policy already fetched, so recording it alters nothing.
|
|
15
|
+
*/
|
|
16
|
+
export interface AutoContextCandidateMeta {
|
|
17
|
+
filePath: string;
|
|
18
|
+
relevance?: number;
|
|
19
|
+
bytes: number;
|
|
20
|
+
approxTokens: number;
|
|
21
|
+
fingerprint: string;
|
|
22
|
+
included: boolean;
|
|
23
|
+
}
|
|
8
24
|
export interface AutoContextResult {
|
|
9
25
|
query: string;
|
|
10
26
|
resultsIncluded: number;
|
|
@@ -12,6 +28,8 @@ export interface AutoContextResult {
|
|
|
12
28
|
content: string;
|
|
13
29
|
searchMethod: 'hybrid' | 'fts' | 'none';
|
|
14
30
|
durationMs: number;
|
|
31
|
+
/** Additive (mmnto-ai/totem#2468); empty on every no-search path. */
|
|
32
|
+
candidates: AutoContextCandidateMeta[];
|
|
15
33
|
}
|
|
16
34
|
export interface ParsedBranch {
|
|
17
35
|
ticket: string | null;
|
|
@@ -21,6 +39,7 @@ export declare function parseBranch(branchRef: string): ParsedBranch;
|
|
|
21
39
|
export declare function truncateResults(results: SearchResult[], maxCharacters: number): {
|
|
22
40
|
content: string;
|
|
23
41
|
included: number;
|
|
42
|
+
candidates: AutoContextCandidateMeta[];
|
|
24
43
|
};
|
|
25
44
|
export declare function getAutoContext(options?: AutoContextOptions): Promise<AutoContextResult>;
|
|
26
45
|
//# sourceMappingURL=auto-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-context.d.ts","sourceRoot":"","sources":["../../src/hooks/auto-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,YAAY,EAAe,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"auto-context.d.ts","sourceRoot":"","sources":["../../src/hooks/auto-context.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,YAAY,EAAe,MAAM,cAAc,CAAC;AAcxE,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,UAAU,EAAE,wBAAwB,EAAE,CAAC;CACxC;AAOD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAkB3D;AAcD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,YAAY,EAAE,EACvB,aAAa,EAAE,MAAM,GACpB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,wBAAwB,EAAE,CAAA;CAAE,CAuC/E;AAcD,wBAAsB,cAAc,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkG7F"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
-
import { createEmbedder, LanceStore, requireEmbedding, TotemConfigSchema } from '@mmnto/totem';
|
|
3
|
+
import { createEmbedder, fingerprintContent, LanceStore, measureCandidateCost, requireEmbedding, TotemConfigSchema, } from '@mmnto/totem';
|
|
4
4
|
import { loadEnv } from '../utils.js';
|
|
5
5
|
// ─── Branch Parsing ───────────────────────────────────────
|
|
6
6
|
const TICKET_RE = /(\d+)/;
|
|
@@ -31,7 +31,7 @@ function formatResult(result, index) {
|
|
|
31
31
|
}
|
|
32
32
|
export function truncateResults(results, maxCharacters) {
|
|
33
33
|
if (results.length === 0)
|
|
34
|
-
return { content: '', included: 0 };
|
|
34
|
+
return { content: '', included: 0, candidates: [] };
|
|
35
35
|
const blocks = [];
|
|
36
36
|
let totalChars = 0;
|
|
37
37
|
let included = 0;
|
|
@@ -43,12 +43,28 @@ export function truncateResults(results, maxCharacters) {
|
|
|
43
43
|
totalChars += block.length;
|
|
44
44
|
included++;
|
|
45
45
|
}
|
|
46
|
+
// Selection metadata over EVERY fetched result — including the char-budget
|
|
47
|
+
// cut, whose exclusion is exactly the half the manifest exists to record
|
|
48
|
+
// (mmnto-ai/totem#2468). formatResult is pure, so measuring a cut block
|
|
49
|
+
// observes without altering.
|
|
50
|
+
const candidates = results.map((r, i) => {
|
|
51
|
+
const block = formatResult(r, i);
|
|
52
|
+
const { bytes, approxTokens } = measureCandidateCost(block);
|
|
53
|
+
return {
|
|
54
|
+
filePath: r.filePath,
|
|
55
|
+
...(typeof r.relevance === 'number' && { relevance: r.relevance }),
|
|
56
|
+
bytes,
|
|
57
|
+
approxTokens,
|
|
58
|
+
fingerprint: fingerprintContent(block),
|
|
59
|
+
included: i < included,
|
|
60
|
+
};
|
|
61
|
+
});
|
|
46
62
|
const omitted = results.length - included;
|
|
47
63
|
let content = blocks.join('\n\n---\n\n');
|
|
48
64
|
if (omitted > 0) {
|
|
49
65
|
content += `\n\n(${omitted} additional result${omitted > 1 ? 's' : ''} omitted for token budget)`;
|
|
50
66
|
}
|
|
51
|
-
return { content, included };
|
|
67
|
+
return { content, included, candidates };
|
|
52
68
|
}
|
|
53
69
|
// ─── Config Loading (lightweight) ─────────────────────────
|
|
54
70
|
async function loadConfig(configPath) {
|
|
@@ -73,6 +89,7 @@ export async function getAutoContext(options) {
|
|
|
73
89
|
content: '',
|
|
74
90
|
searchMethod: 'none',
|
|
75
91
|
durationMs: Date.now() - start,
|
|
92
|
+
candidates: [],
|
|
76
93
|
};
|
|
77
94
|
// ── Locate config & LanceDB ──
|
|
78
95
|
const configPath = path.join(projectRoot, 'totem.config.ts');
|
|
@@ -134,7 +151,7 @@ export async function getAutoContext(options) {
|
|
|
134
151
|
return { ...empty, durationMs: Date.now() - start };
|
|
135
152
|
}
|
|
136
153
|
}
|
|
137
|
-
const { content, included } = truncateResults(results, maxCharacters);
|
|
154
|
+
const { content, included, candidates } = truncateResults(results, maxCharacters);
|
|
138
155
|
return {
|
|
139
156
|
query,
|
|
140
157
|
resultsIncluded: included,
|
|
@@ -142,6 +159,7 @@ export async function getAutoContext(options) {
|
|
|
142
159
|
content,
|
|
143
160
|
searchMethod,
|
|
144
161
|
durationMs: Date.now() - start,
|
|
162
|
+
candidates,
|
|
145
163
|
};
|
|
146
164
|
}
|
|
147
165
|
//# sourceMappingURL=auto-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auto-context.js","sourceRoot":"","sources":["../../src/hooks/auto-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,
|
|
1
|
+
{"version":3,"file":"auto-context.js","sourceRoot":"","sources":["../../src/hooks/auto-context.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -104,6 +104,7 @@ program
|
|
|
104
104
|
.option('--force-skill-refresh', 'Force-overwrite skill files lacking canonical markers (may destroy user content; review the diff after)')
|
|
105
105
|
.option('--gates <list>', 'Install action-gate PreToolUse hooks: a comma-list of gate names (e.g. freeze-check) or "all"')
|
|
106
106
|
.option('--doctrine', 'Wire orient.parityManifest to the installed @mmnto/strategy-doctrine pin (no-op until the pin is added)')
|
|
107
|
+
.option('-y, --yes', 'Answer every prompt with its default and read nothing from stdin (also implied when stdin is not a TTY)')
|
|
107
108
|
.action(async (options) => {
|
|
108
109
|
try {
|
|
109
110
|
await initCommand({
|
|
@@ -114,6 +115,7 @@ program
|
|
|
114
115
|
forceSkillRefresh: options.forceSkillRefresh,
|
|
115
116
|
gates: options.gates,
|
|
116
117
|
doctrine: options.doctrine,
|
|
118
|
+
yes: options.yes,
|
|
117
119
|
});
|
|
118
120
|
}
|
|
119
121
|
catch (err) {
|
|
@@ -740,6 +742,77 @@ wtCmd
|
|
|
740
742
|
handleError(err);
|
|
741
743
|
}
|
|
742
744
|
});
|
|
745
|
+
// ─── Seat noun-verb subcommands (mmnto-ai/totem#2511) ──────────────────────
|
|
746
|
+
// Declared seat lifecycle: `add` registers a seat (dirs + an `active` marker +
|
|
747
|
+
// the `host_agents` append where a config.json already exists) and EMITS the
|
|
748
|
+
// birth checklist for every surface the binary cannot reach honestly;
|
|
749
|
+
// `suspend`/`remove` write the declared state that drops a seat from broadcast
|
|
750
|
+
// denominators without discharging one obligation or deleting one byte.
|
|
751
|
+
// Nothing here auto-edits a vendor hook file or a foreign surface.
|
|
752
|
+
const seatCmd = program
|
|
753
|
+
.command('seat')
|
|
754
|
+
.description('Declared seat lifecycle: register, suspend, retire, and list cohort seats (mmnto-ai/totem#2511)');
|
|
755
|
+
seatCmd
|
|
756
|
+
.command('add <seat-id>')
|
|
757
|
+
.description('Register a seat: outbox/processed/journal dirs + an `active` marker, then emit the birth checklist (never auto-applied)')
|
|
758
|
+
.option('--reactivate', 'Transition an existing SUSPENDED seat back to active (never resurrects a retired seat)')
|
|
759
|
+
.action(async (seatId, opts) => {
|
|
760
|
+
try {
|
|
761
|
+
const { seatAddCommand } = await import('./commands/seat.js');
|
|
762
|
+
await seatAddCommand(seatId, opts);
|
|
763
|
+
// totem-context: handleError is the CLI error boundary (returns `never` — prints + process.exit), identical to every sibling command action; nothing is swallowed.
|
|
764
|
+
}
|
|
765
|
+
catch (err) {
|
|
766
|
+
handleError(err);
|
|
767
|
+
}
|
|
768
|
+
});
|
|
769
|
+
seatCmd
|
|
770
|
+
.command('suspend <seat-id>')
|
|
771
|
+
.description('Declare a seat suspended — it leaves broadcast required-sets and round denominators; its directed mail still surfaces and its obligations are NOT discharged')
|
|
772
|
+
.option('--reason <text>', 'Recorded ruling for the suspension (the §6.6 audit trail)')
|
|
773
|
+
.action(async (seatId, opts) => {
|
|
774
|
+
try {
|
|
775
|
+
const { seatSuspendCommand } = await import('./commands/seat.js');
|
|
776
|
+
await seatSuspendCommand(seatId, opts);
|
|
777
|
+
// totem-context: handleError is the CLI error boundary (returns `never` — prints + process.exit), identical to every sibling command action; nothing is swallowed.
|
|
778
|
+
}
|
|
779
|
+
catch (err) {
|
|
780
|
+
handleError(err);
|
|
781
|
+
}
|
|
782
|
+
});
|
|
783
|
+
seatCmd
|
|
784
|
+
.command('remove <seat-id>')
|
|
785
|
+
.description('Declare a seat retired — a durable tombstone; nothing is deleted (retention is mmnto-ai/totem#2518) and the deregistration checklist is emitted, not applied')
|
|
786
|
+
.option('--reason <text>', 'Recorded ruling for the retirement (the §6.6 audit trail)')
|
|
787
|
+
.action(async (seatId, opts) => {
|
|
788
|
+
try {
|
|
789
|
+
const { seatRemoveCommand } = await import('./commands/seat.js');
|
|
790
|
+
await seatRemoveCommand(seatId, opts);
|
|
791
|
+
// totem-context: handleError is the CLI error boundary (returns `never` — prints + process.exit), identical to every sibling command action; nothing is swallowed.
|
|
792
|
+
}
|
|
793
|
+
catch (err) {
|
|
794
|
+
handleError(err);
|
|
795
|
+
}
|
|
796
|
+
});
|
|
797
|
+
seatCmd
|
|
798
|
+
.command('list')
|
|
799
|
+
.description('List every registered seat with its declared lifecycle (derived at read time — the dirs ARE the roster)')
|
|
800
|
+
.option('--json', 'Emit the full seat-status array as JSON on stdout')
|
|
801
|
+
.action(async (_opts, cmd) => {
|
|
802
|
+
try {
|
|
803
|
+
const { seatListCommand } = await import('./commands/seat.js');
|
|
804
|
+
// The program-level `--json` swallows the flag when it appears after the
|
|
805
|
+
// subcommand (commander parent/child option collision,
|
|
806
|
+
// mmnto-ai/totem#2097): optsWithGlobals() merges both scopes so
|
|
807
|
+
// `totem seat list --json` and `totem --json seat list` agree.
|
|
808
|
+
const { json } = cmd.optsWithGlobals();
|
|
809
|
+
await seatListCommand({ json });
|
|
810
|
+
// totem-context: handleError is the CLI error boundary (returns `never` — prints + process.exit), identical to every sibling command action; nothing is swallowed.
|
|
811
|
+
}
|
|
812
|
+
catch (err) {
|
|
813
|
+
handleError(err);
|
|
814
|
+
}
|
|
815
|
+
});
|
|
743
816
|
// ECL outbox retention prune (mmnto-ai/totem#2279; parent mmnto-ai/totem-strategy#700;
|
|
744
817
|
// doctrine/ecl-discipline.md § 4.4). The binary-guaranteed cohort-wide replacement
|
|
745
818
|
// for `scripts/prune-outbox.mjs` — self-resolves the caller's agent so a seat can
|