@mmnto/totem 1.38.0 → 1.39.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/ledger.d.ts +71 -13
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +65 -7
- package/dist/ledger.js.map +1 -1
- package/dist/ledger.test.js +228 -0
- package/dist/ledger.test.js.map +1 -1
- package/package.json +1 -1
package/dist/ledger.d.ts
CHANGED
|
@@ -2,17 +2,37 @@ import { z } from 'zod';
|
|
|
2
2
|
export declare const LedgerEventSchema: z.ZodObject<{
|
|
3
3
|
/** ISO 8601 timestamp */
|
|
4
4
|
timestamp: z.ZodString;
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Event type. Two semantic families:
|
|
7
|
+
*
|
|
8
|
+
* Override events (require `ruleId` + `file` at writer side):
|
|
9
|
+
* - `suppress` — inline directive (`// totem-ignore`, `// totem-context:`)
|
|
10
|
+
* - `override` — `shield --override`
|
|
11
|
+
* - `exemption` — auto/manual pattern exemption
|
|
12
|
+
*
|
|
13
|
+
* Activity events (require `agent_source` + `session_id` at writer side; no rule context):
|
|
14
|
+
* - `mcp_call` — MCP tool invocation (see `activity_name` for which tool)
|
|
15
|
+
* - `tool_call_first_significant` — first non-Read/Grep/Glob orchestrator tool call in session
|
|
16
|
+
* - `hook_fire` — lifecycle hook executed (see `activity_name` for which hook)
|
|
17
|
+
* - `session_start` — SessionStart hook fired; new `session_id` minted
|
|
18
|
+
*
|
|
19
|
+
* Schema-level: `ruleId` + `file` are optional to accommodate activity events. Writer-side
|
|
20
|
+
* discipline enforces required-by-type. Promotion to `z.discriminatedUnion` deferred to A.3.c
|
|
21
|
+
* per design doc OQ-1 (.handoff/_shared/2026-05-15-a3a-schema-extension-design.md).
|
|
22
|
+
*/
|
|
23
|
+
type: z.ZodEnum<["suppress", "override", "exemption", "mcp_call", "tool_call_first_significant", "hook_fire", "session_start"]>;
|
|
24
|
+
/** Rule ID (lessonHash) for override events. Optional; required by writer for suppress/override/exemption. */
|
|
25
|
+
ruleId: z.ZodOptional<z.ZodString>;
|
|
26
|
+
/** File where the suppression/override occurred. Optional; required by writer for suppress/override/exemption. */
|
|
27
|
+
file: z.ZodOptional<z.ZodString>;
|
|
11
28
|
/** Line number in the file */
|
|
12
29
|
line: z.ZodOptional<z.ZodNumber>;
|
|
13
30
|
/** The justification text from totem-context: (or deprecated shield-context: alias). Empty for totem-ignore. */
|
|
14
31
|
justification: z.ZodDefault<z.ZodString>;
|
|
15
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Emitting subsystem. Identifies which code path produced the event,
|
|
34
|
+
* orthogonal to `agent_source` (agent runtime attribution).
|
|
35
|
+
*/
|
|
16
36
|
source: z.ZodEnum<["lint", "shield", "bot"]>;
|
|
17
37
|
/**
|
|
18
38
|
* True when the bypassed rule was shipped by a pack with
|
|
@@ -22,24 +42,62 @@ export declare const LedgerEventSchema: z.ZodObject<{
|
|
|
22
42
|
* mmnto-ai/totem#1485). Absent on events from non-immutable rules.
|
|
23
43
|
*/
|
|
24
44
|
immutable: z.ZodOptional<z.ZodBoolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Agent runtime that produced the event. Orthogonal to `source`
|
|
47
|
+
* (which identifies the emitting subsystem). Optional for
|
|
48
|
+
* backward-compat with pre-A.3.a events; required by writer for
|
|
49
|
+
* activity events. Per ADR-078 § Event Attribution, with the
|
|
50
|
+
* field renamed from `source` to disambiguate against the
|
|
51
|
+
* load-bearing emitter identifier already in production code.
|
|
52
|
+
*/
|
|
53
|
+
agent_source: z.ZodOptional<z.ZodEnum<["claude", "gemini", "human"]>>;
|
|
54
|
+
/**
|
|
55
|
+
* Session UUID minted at SessionStart hook fire (24h TTL, rotates on
|
|
56
|
+
* subsequent SessionStart). Persisted to `.totem/ledger/.session-id`
|
|
57
|
+
* for cross-event correlation within a session. Per ADR-029 § Session
|
|
58
|
+
* Heuristic (explicit UUID supersedes the rolling-2h activity heuristic
|
|
59
|
+
* when present). Optional for backward-compat.
|
|
60
|
+
*/
|
|
61
|
+
session_id: z.ZodOptional<z.ZodString>;
|
|
62
|
+
/**
|
|
63
|
+
* Trace correlation ID per ADR-014 — links an orchestrator run to
|
|
64
|
+
* the MCP tool calls it triggered. Optional; populated by A.3.c
|
|
65
|
+
* end-to-end correlation propagation.
|
|
66
|
+
*/
|
|
67
|
+
correlation_id: z.ZodOptional<z.ZodString>;
|
|
68
|
+
/**
|
|
69
|
+
* Sub-type discriminator for activity events. Examples:
|
|
70
|
+
* `mcp_call` → 'search_knowledge' | 'describe_project' | ...
|
|
71
|
+
* `hook_fire` → 'SessionStart' | 'PreToolUse' | 'pre-push' | ...
|
|
72
|
+
* Optional; meaningful only on activity events.
|
|
73
|
+
*/
|
|
74
|
+
activity_name: z.ZodOptional<z.ZodString>;
|
|
25
75
|
}, "strip", z.ZodTypeAny, {
|
|
26
|
-
type: "suppress" | "override" | "exemption";
|
|
27
|
-
file: string;
|
|
76
|
+
type: "suppress" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start";
|
|
28
77
|
justification: string;
|
|
29
78
|
source: "lint" | "shield" | "bot";
|
|
30
79
|
timestamp: string;
|
|
31
|
-
ruleId: string;
|
|
32
80
|
immutable?: boolean | undefined;
|
|
81
|
+
file?: string | undefined;
|
|
33
82
|
line?: number | undefined;
|
|
83
|
+
ruleId?: string | undefined;
|
|
84
|
+
agent_source?: "gemini" | "claude" | "human" | undefined;
|
|
85
|
+
session_id?: string | undefined;
|
|
86
|
+
correlation_id?: string | undefined;
|
|
87
|
+
activity_name?: string | undefined;
|
|
34
88
|
}, {
|
|
35
|
-
type: "suppress" | "override" | "exemption";
|
|
36
|
-
file: string;
|
|
89
|
+
type: "suppress" | "override" | "exemption" | "mcp_call" | "tool_call_first_significant" | "hook_fire" | "session_start";
|
|
37
90
|
source: "lint" | "shield" | "bot";
|
|
38
91
|
timestamp: string;
|
|
39
|
-
ruleId: string;
|
|
40
92
|
immutable?: boolean | undefined;
|
|
93
|
+
file?: string | undefined;
|
|
41
94
|
line?: number | undefined;
|
|
42
95
|
justification?: string | undefined;
|
|
96
|
+
ruleId?: string | undefined;
|
|
97
|
+
agent_source?: "gemini" | "claude" | "human" | undefined;
|
|
98
|
+
session_id?: string | undefined;
|
|
99
|
+
correlation_id?: string | undefined;
|
|
100
|
+
activity_name?: string | undefined;
|
|
43
101
|
}>;
|
|
44
102
|
export type LedgerEvent = z.infer<typeof LedgerEventSchema>;
|
|
45
103
|
/**
|
package/dist/ledger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;IAC5B,yBAAyB;;IAEzB
|
|
1
|
+
{"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;IAC5B,yBAAyB;;IAEzB;;;;;;;;;;;;;;;;;OAiBG;;IAUH,8GAA8G;;IAE9G,kHAAkH;;IAElH,8BAA8B;;IAE9B,gHAAgH;;IAEhH;;;OAGG;;IAEH;;;;;;OAMG;;IAEH;;;;;;;OAOG;;IAEH;;;;;;OAMG;;IAEH;;;;OAIG;;IAEH;;;;;OAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEH,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAS5D;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAC7B,IAAI,CAaN;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,WAAW,EAAE,CAwBhG"}
|
package/dist/ledger.js
CHANGED
|
@@ -5,17 +5,45 @@ import { z } from 'zod';
|
|
|
5
5
|
export const LedgerEventSchema = z.object({
|
|
6
6
|
/** ISO 8601 timestamp */
|
|
7
7
|
timestamp: z.string().datetime(),
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Event type. Two semantic families:
|
|
10
|
+
*
|
|
11
|
+
* Override events (require `ruleId` + `file` at writer side):
|
|
12
|
+
* - `suppress` — inline directive (`// totem-ignore`, `// totem-context:`)
|
|
13
|
+
* - `override` — `shield --override`
|
|
14
|
+
* - `exemption` — auto/manual pattern exemption
|
|
15
|
+
*
|
|
16
|
+
* Activity events (require `agent_source` + `session_id` at writer side; no rule context):
|
|
17
|
+
* - `mcp_call` — MCP tool invocation (see `activity_name` for which tool)
|
|
18
|
+
* - `tool_call_first_significant` — first non-Read/Grep/Glob orchestrator tool call in session
|
|
19
|
+
* - `hook_fire` — lifecycle hook executed (see `activity_name` for which hook)
|
|
20
|
+
* - `session_start` — SessionStart hook fired; new `session_id` minted
|
|
21
|
+
*
|
|
22
|
+
* Schema-level: `ruleId` + `file` are optional to accommodate activity events. Writer-side
|
|
23
|
+
* discipline enforces required-by-type. Promotion to `z.discriminatedUnion` deferred to A.3.c
|
|
24
|
+
* per design doc OQ-1 (.handoff/_shared/2026-05-15-a3a-schema-extension-design.md).
|
|
25
|
+
*/
|
|
26
|
+
type: z.enum([
|
|
27
|
+
'suppress',
|
|
28
|
+
'override',
|
|
29
|
+
'exemption',
|
|
30
|
+
'mcp_call',
|
|
31
|
+
'tool_call_first_significant',
|
|
32
|
+
'hook_fire',
|
|
33
|
+
'session_start',
|
|
34
|
+
]),
|
|
35
|
+
/** Rule ID (lessonHash) for override events. Optional; required by writer for suppress/override/exemption. */
|
|
36
|
+
ruleId: z.string().trim().min(1).optional(),
|
|
37
|
+
/** File where the suppression/override occurred. Optional; required by writer for suppress/override/exemption. */
|
|
38
|
+
file: z.string().trim().min(1).optional(),
|
|
14
39
|
/** Line number in the file */
|
|
15
40
|
line: z.number().int().positive().optional(),
|
|
16
41
|
/** The justification text from totem-context: (or deprecated shield-context: alias). Empty for totem-ignore. */
|
|
17
42
|
justification: z.string().default(''),
|
|
18
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Emitting subsystem. Identifies which code path produced the event,
|
|
45
|
+
* orthogonal to `agent_source` (agent runtime attribution).
|
|
46
|
+
*/
|
|
19
47
|
source: z.enum(['lint', 'shield', 'bot']),
|
|
20
48
|
/**
|
|
21
49
|
* True when the bypassed rule was shipped by a pack with
|
|
@@ -25,6 +53,36 @@ export const LedgerEventSchema = z.object({
|
|
|
25
53
|
* mmnto-ai/totem#1485). Absent on events from non-immutable rules.
|
|
26
54
|
*/
|
|
27
55
|
immutable: z.boolean().optional(),
|
|
56
|
+
/**
|
|
57
|
+
* Agent runtime that produced the event. Orthogonal to `source`
|
|
58
|
+
* (which identifies the emitting subsystem). Optional for
|
|
59
|
+
* backward-compat with pre-A.3.a events; required by writer for
|
|
60
|
+
* activity events. Per ADR-078 § Event Attribution, with the
|
|
61
|
+
* field renamed from `source` to disambiguate against the
|
|
62
|
+
* load-bearing emitter identifier already in production code.
|
|
63
|
+
*/
|
|
64
|
+
agent_source: z.enum(['claude', 'gemini', 'human']).optional(),
|
|
65
|
+
/**
|
|
66
|
+
* Session UUID minted at SessionStart hook fire (24h TTL, rotates on
|
|
67
|
+
* subsequent SessionStart). Persisted to `.totem/ledger/.session-id`
|
|
68
|
+
* for cross-event correlation within a session. Per ADR-029 § Session
|
|
69
|
+
* Heuristic (explicit UUID supersedes the rolling-2h activity heuristic
|
|
70
|
+
* when present). Optional for backward-compat.
|
|
71
|
+
*/
|
|
72
|
+
session_id: z.string().uuid().optional(),
|
|
73
|
+
/**
|
|
74
|
+
* Trace correlation ID per ADR-014 — links an orchestrator run to
|
|
75
|
+
* the MCP tool calls it triggered. Optional; populated by A.3.c
|
|
76
|
+
* end-to-end correlation propagation.
|
|
77
|
+
*/
|
|
78
|
+
correlation_id: z.string().uuid().optional(),
|
|
79
|
+
/**
|
|
80
|
+
* Sub-type discriminator for activity events. Examples:
|
|
81
|
+
* `mcp_call` → 'search_knowledge' | 'describe_project' | ...
|
|
82
|
+
* `hook_fire` → 'SessionStart' | 'PreToolUse' | 'pre-push' | ...
|
|
83
|
+
* Optional; meaningful only on activity events.
|
|
84
|
+
*/
|
|
85
|
+
activity_name: z.string().trim().min(1).optional(),
|
|
28
86
|
});
|
|
29
87
|
// ─── Constants ──────────────────────────────────────
|
|
30
88
|
const LEDGER_DIR = 'ledger';
|
package/dist/ledger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,uDAAuD;AAEvD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,yBAAyB;IACzB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC
|
|
1
|
+
{"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"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"}
|
package/dist/ledger.test.js
CHANGED
|
@@ -23,6 +23,18 @@ function makeEvent(overrides = {}) {
|
|
|
23
23
|
...overrides,
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
+
function makeActivityEvent(overrides = {}) {
|
|
27
|
+
return {
|
|
28
|
+
timestamp: '2026-05-15T03:00:00.000Z',
|
|
29
|
+
type: 'mcp_call',
|
|
30
|
+
justification: '',
|
|
31
|
+
source: 'bot',
|
|
32
|
+
agent_source: 'claude',
|
|
33
|
+
session_id: '550e8400-e29b-41d4-a716-446655440000',
|
|
34
|
+
activity_name: 'search_knowledge',
|
|
35
|
+
...overrides,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
26
38
|
// ─── LedgerEventSchema ─────────────────────────────────
|
|
27
39
|
describe('LedgerEventSchema', () => {
|
|
28
40
|
it('validates a well-formed event', () => {
|
|
@@ -57,6 +69,188 @@ describe('LedgerEventSchema', () => {
|
|
|
57
69
|
const result = LedgerEventSchema.safeParse(event);
|
|
58
70
|
expect(result.success).toBe(false);
|
|
59
71
|
});
|
|
72
|
+
// ─── Activity events (A.3.a schema extension) ────────────────
|
|
73
|
+
it('accepts an mcp_call activity event with agent_source + session_id + activity_name', () => {
|
|
74
|
+
const event = makeActivityEvent();
|
|
75
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
76
|
+
expect(result.success).toBe(true);
|
|
77
|
+
if (result.success) {
|
|
78
|
+
expect(result.data.type).toBe('mcp_call');
|
|
79
|
+
expect(result.data.agent_source).toBe('claude');
|
|
80
|
+
expect(result.data.session_id).toBe('550e8400-e29b-41d4-a716-446655440000');
|
|
81
|
+
expect(result.data.activity_name).toBe('search_knowledge');
|
|
82
|
+
expect(result.data.ruleId).toBeUndefined();
|
|
83
|
+
expect(result.data.file).toBeUndefined();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
it('accepts a session_start activity event without ruleId or file', () => {
|
|
87
|
+
const event = makeActivityEvent({
|
|
88
|
+
type: 'session_start',
|
|
89
|
+
activity_name: 'SessionStart',
|
|
90
|
+
});
|
|
91
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
92
|
+
expect(result.success).toBe(true);
|
|
93
|
+
if (result.success) {
|
|
94
|
+
expect(result.data.type).toBe('session_start');
|
|
95
|
+
expect(result.data.activity_name).toBe('SessionStart');
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
it('accepts a tool_call_first_significant activity event', () => {
|
|
99
|
+
const event = makeActivityEvent({
|
|
100
|
+
type: 'tool_call_first_significant',
|
|
101
|
+
activity_name: 'Write',
|
|
102
|
+
file: 'src/foo.ts',
|
|
103
|
+
});
|
|
104
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
105
|
+
expect(result.success).toBe(true);
|
|
106
|
+
});
|
|
107
|
+
it('accepts a hook_fire activity event with activity_name discriminator', () => {
|
|
108
|
+
const event = makeActivityEvent({
|
|
109
|
+
type: 'hook_fire',
|
|
110
|
+
activity_name: 'PreToolUse',
|
|
111
|
+
});
|
|
112
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
113
|
+
expect(result.success).toBe(true);
|
|
114
|
+
});
|
|
115
|
+
it('accepts all three agent_source values', () => {
|
|
116
|
+
for (const value of ['claude', 'gemini', 'human']) {
|
|
117
|
+
const event = makeActivityEvent({ agent_source: value });
|
|
118
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
119
|
+
expect(result.success).toBe(true);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
it('rejects an unknown agent_source value', () => {
|
|
123
|
+
const event = makeActivityEvent({
|
|
124
|
+
// @ts-expect-error — intentionally invalid for the test
|
|
125
|
+
agent_source: 'cursor',
|
|
126
|
+
});
|
|
127
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
128
|
+
expect(result.success).toBe(false);
|
|
129
|
+
});
|
|
130
|
+
it('rejects a malformed session_id UUID', () => {
|
|
131
|
+
const event = makeActivityEvent({ session_id: 'not-a-uuid' });
|
|
132
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
133
|
+
expect(result.success).toBe(false);
|
|
134
|
+
});
|
|
135
|
+
it('rejects a malformed correlation_id UUID', () => {
|
|
136
|
+
const event = makeActivityEvent({ correlation_id: 'not-a-uuid' });
|
|
137
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
138
|
+
expect(result.success).toBe(false);
|
|
139
|
+
});
|
|
140
|
+
it('rejects an empty activity_name', () => {
|
|
141
|
+
const event = makeActivityEvent({ activity_name: '' });
|
|
142
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
143
|
+
expect(result.success).toBe(false);
|
|
144
|
+
});
|
|
145
|
+
it('accepts a pre-A.3.a override event (no new optional fields populated)', () => {
|
|
146
|
+
// Mirrors what a pre-A.3.a writer produces; round-trip must remain compatible.
|
|
147
|
+
const legacyEvent = {
|
|
148
|
+
timestamp: '2026-03-25T12:00:00.000Z',
|
|
149
|
+
type: 'suppress',
|
|
150
|
+
ruleId: 'abc123',
|
|
151
|
+
file: 'src/index.ts',
|
|
152
|
+
justification: 'legacy',
|
|
153
|
+
source: 'lint',
|
|
154
|
+
};
|
|
155
|
+
const result = LedgerEventSchema.safeParse(legacyEvent);
|
|
156
|
+
expect(result.success).toBe(true);
|
|
157
|
+
if (result.success) {
|
|
158
|
+
expect(result.data.agent_source).toBeUndefined();
|
|
159
|
+
expect(result.data.session_id).toBeUndefined();
|
|
160
|
+
expect(result.data.correlation_id).toBeUndefined();
|
|
161
|
+
expect(result.data.activity_name).toBeUndefined();
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
it('accepts an override event with the new optional attribution fields populated', () => {
|
|
165
|
+
const event = makeEvent({
|
|
166
|
+
type: 'override',
|
|
167
|
+
source: 'shield',
|
|
168
|
+
agent_source: 'claude',
|
|
169
|
+
session_id: '550e8400-e29b-41d4-a716-446655440000',
|
|
170
|
+
correlation_id: '6ba7b810-9dad-11d1-80b4-00c04fd430c8',
|
|
171
|
+
});
|
|
172
|
+
const result = LedgerEventSchema.safeParse(event);
|
|
173
|
+
expect(result.success).toBe(true);
|
|
174
|
+
if (result.success) {
|
|
175
|
+
expect(result.data.agent_source).toBe('claude');
|
|
176
|
+
expect(result.data.correlation_id).toBe('6ba7b810-9dad-11d1-80b4-00c04fd430c8');
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
// ─── Test-fixture per-branch field-presence (factory output validation) ─────
|
|
181
|
+
//
|
|
182
|
+
// SCOPE (honest about what this catches): these tests exercise the local
|
|
183
|
+
// `makeEvent` / `makeActivityEvent` test factories defined above and assert
|
|
184
|
+
// each event type's factory output carries its required-by-semantics fields.
|
|
185
|
+
// They catch FIXTURE drift — if a future edit to `makeEvent` removes a default
|
|
186
|
+
// required-by-type field, these tests fail.
|
|
187
|
+
//
|
|
188
|
+
// THEY DO NOT exercise real writers (CR R2 catch — `ledger.test.ts:291`).
|
|
189
|
+
// Writer-regression coverage lives in the consumer-side test files where the
|
|
190
|
+
// actual writers run:
|
|
191
|
+
// - `mcp_call` → `packages/mcp/src/ledger-writer.test.ts` (logMcpCall)
|
|
192
|
+
// - `session_start`→ `packages/cli/src/commands/init.test.ts` (CLAUDE_SESSION_START template content tests)
|
|
193
|
+
// - `suppress` / `override` / `exemption` → run-compiled-rules.test.ts /
|
|
194
|
+
// shield.test.ts / exemption.test.ts (writers in @mmnto/cli)
|
|
195
|
+
//
|
|
196
|
+
// STRUCTURAL FIX: per OQ-1 disposition (strategy-Claude T0345Z, cross-stream
|
|
197
|
+
// dispatch chain), the discriminated-union promotion in A.3.c will enforce
|
|
198
|
+
// per-branch field presence at the schema level — at that point these
|
|
199
|
+
// fixture-validation tests become redundant against the schema AND the
|
|
200
|
+
// distributed consumer-side writer tests serve as the regression coverage.
|
|
201
|
+
//
|
|
202
|
+
// Retaining the block as a sanity-check on factory stability; full real-writer
|
|
203
|
+
// coverage in the A.3.a window would require cross-package test imports that
|
|
204
|
+
// exceed the sprint's "no call-site changes to existing writers" DoD.
|
|
205
|
+
describe('test-fixture per-branch field presence (factory output validation)', () => {
|
|
206
|
+
// Helper: each test builds an event using makeEvent/makeActivityEvent
|
|
207
|
+
// factories (which populate required-by-type fields by default), then
|
|
208
|
+
// asserts each required field is defined and non-empty on the resulting
|
|
209
|
+
// object. Catches factory drift; does NOT catch real writer regressions
|
|
210
|
+
// (see § "SCOPE" above for the writer-coverage map).
|
|
211
|
+
function expectWriterCarriesFields(event, requiredByType) {
|
|
212
|
+
for (const field of requiredByType) {
|
|
213
|
+
const fieldValue = event[field];
|
|
214
|
+
expect(fieldValue, `expected ${event.type} event to carry ${String(field)}`).toBeDefined();
|
|
215
|
+
if (typeof fieldValue === 'string') {
|
|
216
|
+
expect(fieldValue.length, `expected non-empty ${String(field)}`).toBeGreaterThan(0);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
it('suppress events carry ruleId + file', () => {
|
|
221
|
+
expectWriterCarriesFields(makeEvent({ type: 'suppress' }), ['ruleId', 'file']);
|
|
222
|
+
});
|
|
223
|
+
it('override events carry ruleId + file', () => {
|
|
224
|
+
expectWriterCarriesFields(makeEvent({ type: 'override', source: 'shield' }), [
|
|
225
|
+
'ruleId',
|
|
226
|
+
'file',
|
|
227
|
+
]);
|
|
228
|
+
});
|
|
229
|
+
it('exemption events carry ruleId + file', () => {
|
|
230
|
+
expectWriterCarriesFields(makeEvent({ type: 'exemption', source: 'bot' }), ['ruleId', 'file']);
|
|
231
|
+
});
|
|
232
|
+
it('mcp_call events carry agent_source + session_id + activity_name', () => {
|
|
233
|
+
expectWriterCarriesFields(makeActivityEvent({ type: 'mcp_call' }), [
|
|
234
|
+
'agent_source',
|
|
235
|
+
'session_id',
|
|
236
|
+
'activity_name',
|
|
237
|
+
]);
|
|
238
|
+
});
|
|
239
|
+
it('session_start events carry agent_source + session_id', () => {
|
|
240
|
+
// session_start is what the SessionStart hook emits; agent_source identifies
|
|
241
|
+
// the orchestrator vendor (hook knows its own origin), session_id is the
|
|
242
|
+
// freshly-minted UUID that subsequent events correlate against.
|
|
243
|
+
expectWriterCarriesFields(makeActivityEvent({ type: 'session_start', activity_name: 'SessionStart' }), ['agent_source', 'session_id']);
|
|
244
|
+
});
|
|
245
|
+
it('hook_fire events carry agent_source + session_id + activity_name', () => {
|
|
246
|
+
expectWriterCarriesFields(makeActivityEvent({ type: 'hook_fire', activity_name: 'PreToolUse' }), ['agent_source', 'session_id', 'activity_name']);
|
|
247
|
+
});
|
|
248
|
+
it('tool_call_first_significant events carry agent_source + session_id', () => {
|
|
249
|
+
// activity_name (e.g., 'Write', 'Bash') is informational on this event type
|
|
250
|
+
// but not required by writer discipline — the timestamp + session_id pair is
|
|
251
|
+
// what the ADR-029 metric anchors on.
|
|
252
|
+
expectWriterCarriesFields(makeActivityEvent({ type: 'tool_call_first_significant', activity_name: 'Write' }), ['agent_source', 'session_id']);
|
|
253
|
+
});
|
|
60
254
|
});
|
|
61
255
|
// ─── appendLedgerEvent ──────────────────────────────────
|
|
62
256
|
describe('appendLedgerEvent', () => {
|
|
@@ -144,5 +338,39 @@ describe('readLedgerEvents', () => {
|
|
|
144
338
|
const events = readLedgerEvents(tmpDir);
|
|
145
339
|
expect(events).toEqual([]);
|
|
146
340
|
});
|
|
341
|
+
it('round-trips activity events alongside override events', () => {
|
|
342
|
+
// Mixed-event ledger — simulates a real session where override events
|
|
343
|
+
// (lint/shield bypasses) coexist with activity events (MCP calls, etc.).
|
|
344
|
+
const sessionId = '550e8400-e29b-41d4-a716-446655440000';
|
|
345
|
+
const sessionStart = makeActivityEvent({
|
|
346
|
+
type: 'session_start',
|
|
347
|
+
activity_name: 'SessionStart',
|
|
348
|
+
session_id: sessionId,
|
|
349
|
+
});
|
|
350
|
+
const mcpCall = makeActivityEvent({
|
|
351
|
+
type: 'mcp_call',
|
|
352
|
+
activity_name: 'search_knowledge',
|
|
353
|
+
session_id: sessionId,
|
|
354
|
+
});
|
|
355
|
+
const overrideEvent = makeEvent({
|
|
356
|
+
type: 'override',
|
|
357
|
+
source: 'shield',
|
|
358
|
+
ruleId: 'rule-xyz',
|
|
359
|
+
agent_source: 'claude',
|
|
360
|
+
session_id: sessionId,
|
|
361
|
+
});
|
|
362
|
+
appendLedgerEvent(tmpDir, sessionStart);
|
|
363
|
+
appendLedgerEvent(tmpDir, mcpCall);
|
|
364
|
+
appendLedgerEvent(tmpDir, overrideEvent);
|
|
365
|
+
const events = readLedgerEvents(tmpDir);
|
|
366
|
+
expect(events).toHaveLength(3);
|
|
367
|
+
expect(events[0].type).toBe('session_start');
|
|
368
|
+
expect(events[1].type).toBe('mcp_call');
|
|
369
|
+
expect(events[1].activity_name).toBe('search_knowledge');
|
|
370
|
+
expect(events[2].type).toBe('override');
|
|
371
|
+
expect(events[2].ruleId).toBe('rule-xyz');
|
|
372
|
+
// All three share the session_id — enables per-session compliance computation (A.3.b).
|
|
373
|
+
expect(events.every((e) => e.session_id === sessionId)).toBe(true);
|
|
374
|
+
});
|
|
147
375
|
});
|
|
148
376
|
//# sourceMappingURL=ledger.test.js.map
|
package/dist/ledger.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger.test.js","sourceRoot":"","sources":["../src/ledger.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger.test.js","sourceRoot":"","sources":["../src/ledger.test.ts"],"names":[],"mappings":"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"}
|