@mmnto/mcp 1.114.0 → 1.116.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ledger-writer.d.ts +17 -0
- package/dist/ledger-writer.d.ts.map +1 -1
- package/dist/ledger-writer.js +57 -1
- package/dist/ledger-writer.js.map +1 -1
- package/dist/ledger-writer.test.js +63 -0
- package/dist/ledger-writer.test.js.map +1 -1
- package/dist/search-log.d.ts +52 -16
- package/dist/search-log.d.ts.map +1 -1
- package/dist/search-log.js +46 -26
- package/dist/search-log.js.map +1 -1
- package/dist/search-log.test.js +129 -6
- package/dist/search-log.test.js.map +1 -1
- package/dist/tools/search-knowledge.d.ts.map +1 -1
- package/dist/tools/search-knowledge.js +122 -4
- package/dist/tools/search-knowledge.js.map +1 -1
- package/dist/tools/search-knowledge.test.js +178 -1
- package/dist/tools/search-knowledge.test.js.map +1 -1
- package/package.json +2 -2
package/dist/ledger-writer.d.ts
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
* All writes are fire-and-forget: a ledger failure must NEVER break the tool
|
|
16
16
|
* call. Telemetry is a sensor, not an actuator (lesson-b1bae311).
|
|
17
17
|
*/
|
|
18
|
+
import type { SelectionCandidate, SelectionContextKey } from '@mmnto/totem';
|
|
18
19
|
/**
|
|
19
20
|
* Emit a single `mcp_call` ledger event for the given activity.
|
|
20
21
|
*
|
|
@@ -41,5 +42,21 @@ export declare function logMcpCall(activityName: string): Promise<void>;
|
|
|
41
42
|
* Zero hits still counts — the query RAN, and the agent saw its result. The
|
|
42
43
|
* distinction is "did a corpus query execute", not "did it find something".
|
|
43
44
|
*/
|
|
45
|
+
/**
|
|
46
|
+
* Emit the `search_knowledge` selection manifest (mmnto-ai/totem#2468 M1).
|
|
47
|
+
*
|
|
48
|
+
* Pure sensor: called only after a search actually produced a selection
|
|
49
|
+
* outcome (the same "did it run" boundary `logCorpusQuery` draws — isError
|
|
50
|
+
* outages emit nothing; the `mcp_call` denominator row makes that absence a
|
|
51
|
+
* recorded one, never a silent skip). Failures surface through the search log
|
|
52
|
+
* under the `internal:` idiom — this package speaks MCP over stdio, so
|
|
53
|
+
* stderr/stdout are off-limits by styleguide.
|
|
54
|
+
*/
|
|
55
|
+
export declare function logSelectionManifest(input: {
|
|
56
|
+
context: Partial<Record<SelectionContextKey, string | number | boolean | null>>;
|
|
57
|
+
universe: string;
|
|
58
|
+
candidates: SelectionCandidate[];
|
|
59
|
+
warnings: string[];
|
|
60
|
+
}): Promise<void>;
|
|
44
61
|
export declare function logCorpusQuery(): Promise<void>;
|
|
45
62
|
//# sourceMappingURL=ledger-writer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-writer.d.ts","sourceRoot":"","sources":["../src/ledger-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"ledger-writer.d.ts","sourceRoot":"","sources":["../src/ledger-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAe,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAWzF;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4BpE;AAED;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAChD,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDhB;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA0BpD"}
|
package/dist/ledger-writer.js
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* call. Telemetry is a sensor, not an actuator (lesson-b1bae311).
|
|
17
17
|
*/
|
|
18
18
|
import * as path from 'node:path';
|
|
19
|
-
import { appendLedgerEvent, readSessionId, senseCorpusQuery } from '@mmnto/totem';
|
|
19
|
+
import { appendLedgerEvent, readSessionId, senseCorpusQuery, senseSelectionManifest, } from '@mmnto/totem';
|
|
20
20
|
import { getContext } from './context.js';
|
|
21
21
|
import { logSearch } from './search-log.js';
|
|
22
22
|
/**
|
|
@@ -72,6 +72,62 @@ export async function logMcpCall(activityName) {
|
|
|
72
72
|
* Zero hits still counts — the query RAN, and the agent saw its result. The
|
|
73
73
|
* distinction is "did a corpus query execute", not "did it find something".
|
|
74
74
|
*/
|
|
75
|
+
/**
|
|
76
|
+
* Emit the `search_knowledge` selection manifest (mmnto-ai/totem#2468 M1).
|
|
77
|
+
*
|
|
78
|
+
* Pure sensor: called only after a search actually produced a selection
|
|
79
|
+
* outcome (the same "did it run" boundary `logCorpusQuery` draws — isError
|
|
80
|
+
* outages emit nothing; the `mcp_call` denominator row makes that absence a
|
|
81
|
+
* recorded one, never a silent skip). Failures surface through the search log
|
|
82
|
+
* under the `internal:` idiom — this package speaks MCP over stdio, so
|
|
83
|
+
* stderr/stdout are off-limits by styleguide.
|
|
84
|
+
*/
|
|
85
|
+
export async function logSelectionManifest(input) {
|
|
86
|
+
// totem-context: fire-and-forget telemetry; failure must not propagate
|
|
87
|
+
try {
|
|
88
|
+
const { projectRoot, config } = await getContext();
|
|
89
|
+
const totemDir = path.join(projectRoot, config.totemDir);
|
|
90
|
+
// Best-effort emitting-package version (leg round 1, N-13 — row parity
|
|
91
|
+
// with the orient/hook emitters). `../package.json` resolves to
|
|
92
|
+
// packages/mcp/package.json from BOTH src/ and dist/ layouts.
|
|
93
|
+
const rowWarnings = [...input.warnings];
|
|
94
|
+
let emitterVersion;
|
|
95
|
+
try {
|
|
96
|
+
const { createRequire } = await import('node:module');
|
|
97
|
+
emitterVersion = createRequire(import.meta.url)('../package.json')
|
|
98
|
+
.version;
|
|
99
|
+
// totem-context: version is a best-effort enrichment of the manifest row; resolution failure must never cost the row (Tenet 13) — but it lands on the row's accounting channel rather than vanishing (PR #2625 re-review, greptile residual: this emitter had the void-err half only).
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
rowWarnings.push(`cli_version unavailable: ${err instanceof Error ? err.message : String(err)}`);
|
|
103
|
+
}
|
|
104
|
+
senseSelectionManifest({
|
|
105
|
+
totemDir,
|
|
106
|
+
emitter: 'search_knowledge',
|
|
107
|
+
context: input.context,
|
|
108
|
+
universe: input.universe,
|
|
109
|
+
candidates: input.candidates,
|
|
110
|
+
warnings: rowWarnings,
|
|
111
|
+
...(emitterVersion !== undefined && { cliVersion: emitterVersion }),
|
|
112
|
+
}, (msg) => {
|
|
113
|
+
logSearch({
|
|
114
|
+
timestamp: new Date().toISOString(),
|
|
115
|
+
query: 'internal:selection-manifest',
|
|
116
|
+
resultCount: 0,
|
|
117
|
+
durationMs: 0,
|
|
118
|
+
topScore: null,
|
|
119
|
+
error: msg,
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
// totem-context: fire-and-forget telemetry; failure must not propagate
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
// intentional swallow — telemetry is a sensor (lesson-b1bae311); failing to
|
|
126
|
+
// record a selection manifest must not crash the MCP server. The absence
|
|
127
|
+
// stays recorded via the mcp_call denominator row (#2468 design).
|
|
128
|
+
void err;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
75
131
|
export async function logCorpusQuery() {
|
|
76
132
|
// totem-context: fire-and-forget telemetry; failure must not propagate
|
|
77
133
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-writer.js","sourceRoot":"","sources":["../src/ledger-writer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,
|
|
1
|
+
{"version":3,"file":"ledger-writer.js","sourceRoot":"","sources":["../src/ledger-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -128,4 +128,67 @@ describe('logCorpusQuery (mmnto-ai/totem#2510)', () => {
|
|
|
128
128
|
await expect(logCorpusQuery()).resolves.toBeUndefined();
|
|
129
129
|
});
|
|
130
130
|
});
|
|
131
|
+
describe('logSelectionManifest (mmnto-ai/totem#2468)', () => {
|
|
132
|
+
const input = {
|
|
133
|
+
context: { query: 'q', status: 'ok' },
|
|
134
|
+
universe: 'store-returned-pool maxResults=5',
|
|
135
|
+
candidates: [
|
|
136
|
+
{
|
|
137
|
+
id: 'a.ts',
|
|
138
|
+
disposition: 'selected',
|
|
139
|
+
reason: 'returned rank=1',
|
|
140
|
+
bytes: 4,
|
|
141
|
+
approxTokens: 1,
|
|
142
|
+
// Measured fields travel together (schema invariant, PR #2625 CR
|
|
143
|
+
// round) — a bytes-without-fingerprint fixture is now a contract
|
|
144
|
+
// violation, as it should be.
|
|
145
|
+
fingerprint: '0123456789abcdef',
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
warnings: [],
|
|
149
|
+
};
|
|
150
|
+
it('writes a schema-valid row to selection-manifests.ndjson end-to-end', async () => {
|
|
151
|
+
fs.mkdirSync(path.join(tmpDir, '.totem'), { recursive: true });
|
|
152
|
+
mockContext();
|
|
153
|
+
const { logSelectionManifest } = await import('./ledger-writer.js');
|
|
154
|
+
await logSelectionManifest(input);
|
|
155
|
+
const rows = readRows(path.join(tmpDir, '.totem', 'ledger', 'selection-manifests.ndjson'));
|
|
156
|
+
expect(rows).toHaveLength(1);
|
|
157
|
+
expect(rows[0]).toMatchObject({
|
|
158
|
+
schemaVersion: 1,
|
|
159
|
+
emitter: 'search_knowledge',
|
|
160
|
+
universe: 'store-returned-pool maxResults=5',
|
|
161
|
+
});
|
|
162
|
+
expect(rows[0].costBasis).toEqual({
|
|
163
|
+
bytes: 'utf8-length',
|
|
164
|
+
approxTokens: 'ceil(bytes/4) approximation',
|
|
165
|
+
});
|
|
166
|
+
// Emitting-package version rides the row (leg round 2, finding 4 — the
|
|
167
|
+
// compile.ts precedent names "regressions that strip cli_version" as a
|
|
168
|
+
// known class; this guards the seam).
|
|
169
|
+
expect(String(rows[0].cli_version)).toMatch(/^\d+\.\d+\.\d+/);
|
|
170
|
+
// The events.ndjson stream is untouched — the sidecar ruling (#2468 OQ1).
|
|
171
|
+
expect(fs.existsSync(path.join(tmpDir, '.totem', 'ledger', 'events.ndjson'))).toBe(false);
|
|
172
|
+
});
|
|
173
|
+
it('does not throw when getContext fails', async () => {
|
|
174
|
+
vi.doMock('./context.js', () => ({
|
|
175
|
+
getContext: async () => {
|
|
176
|
+
throw new Error('context load failed');
|
|
177
|
+
},
|
|
178
|
+
}));
|
|
179
|
+
const { logSelectionManifest } = await import('./ledger-writer.js');
|
|
180
|
+
await expect(logSelectionManifest(input)).resolves.toBeUndefined();
|
|
181
|
+
});
|
|
182
|
+
it('never throws on a contract-invalid row — the sense wrapper absorbs it, nothing persists', async () => {
|
|
183
|
+
fs.mkdirSync(path.join(tmpDir, '.totem'), { recursive: true });
|
|
184
|
+
mockContext();
|
|
185
|
+
const { logSelectionManifest } = await import('./ledger-writer.js');
|
|
186
|
+
const poisoned = {
|
|
187
|
+
...input,
|
|
188
|
+
candidates: [{ ...input.candidates[0], reason: '' }],
|
|
189
|
+
};
|
|
190
|
+
await expect(logSelectionManifest(poisoned)).resolves.toBeUndefined();
|
|
191
|
+
expect(fs.existsSync(path.join(tmpDir, '.totem', 'ledger', 'selection-manifests.ndjson'))).toBe(false);
|
|
192
|
+
});
|
|
193
|
+
});
|
|
131
194
|
//# sourceMappingURL=ledger-writer.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ledger-writer.test.js","sourceRoot":"","sources":["../src/ledger-writer.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ledger-writer.test.js","sourceRoot":"","sources":["../src/ledger-writer.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,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAEzE,IAAI,MAAc,CAAC;AAEnB,UAAU,CAAC,GAAG,EAAE;IACd,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACrE,EAAE,CAAC,YAAY,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEH,sCAAsC;AACtC,SAAS,QAAQ,CAAC,UAAkB;IAClC,OAAO,EAAE;SACN,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC;SACjC,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAA4B,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,WAAW;IAClB,mEAAmE;IACnE,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/B,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;YACvB,WAAW,EAAE,MAAM;YACnB,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;SAC/B,CAAC;KACH,CAAC,CAAC,CAAC;AACN,CAAC;AAED,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACjF,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC1D,MAAM,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAErC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;QAC1E,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7C,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClC,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,uDAAuD;QACvD,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAE7B,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC/E,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC1D,MAAM,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,SAAS,GAAG,sCAAsC,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACxD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAE1E,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC1D,MAAM,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAErC,MAAM,KAAK,GAAG,EAAE;aACb,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC;aAC5D,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC1D,MAAM,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAErC,MAAM,KAAK,GAAG,EAAE;aACb,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC;aAC7E,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/B,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;SACF,CAAC,CAAC,CAAC;QACJ,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC1D,iDAAiD;QACjD,MAAM,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC1D,MAAM,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACrC,MAAM,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;QAC9E,0EAA0E;QAC1E,wEAAwE;QACxE,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,qEAAqE;QACrE,+DAA+D;QAC/D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC9D,MAAM,cAAc,EAAE,CAAC;QAEvB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;QAC9E,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,CAAE,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/B,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;SACF,CAAC,CAAC,CAAC;QACJ,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC9D,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,4CAA4C,EAAE,GAAG,EAAE;IAC1D,MAAM,KAAK,GAAG;QACZ,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;QACrC,QAAQ,EAAE,kCAAkC;QAC5C,UAAU,EAAE;YACV;gBACE,EAAE,EAAE,MAAM;gBACV,WAAW,EAAE,UAAmB;gBAChC,MAAM,EAAE,iBAAiB;gBACzB,KAAK,EAAE,CAAC;gBACR,YAAY,EAAE,CAAC;gBACf,iEAAiE;gBACjE,iEAAiE;gBACjE,8BAA8B;gBAC9B,WAAW,EAAE,kBAAkB;aAChC;SACF;QACD,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACpE,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAElC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC,CAAC;QAC3F,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAC,aAAa,CAAC;YAC7B,aAAa,EAAE,CAAC;YAChB,OAAO,EAAE,kBAAkB;YAC3B,QAAQ,EAAE,kCAAkC;SAC7C,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YACjC,KAAK,EAAE,aAAa;YACpB,YAAY,EAAE,6BAA6B;SAC5C,CAAC,CAAC;QACH,uEAAuE;QACvE,uEAAuE;QACvE,sCAAsC;QACtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/D,0EAA0E;QAC1E,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,EAAE,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/B,UAAU,EAAE,KAAK,IAAI,EAAE;gBACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACzC,CAAC;SACF,CAAC,CAAC,CAAC;QACJ,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACpE,MAAM,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yFAAyF,EAAE,KAAK,IAAI,EAAE;QACvG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,WAAW,EAAE,CAAC;QACd,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG;YACf,GAAG,KAAK;YACR,UAAU,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;SACtD,CAAC;QACF,MAAM,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACtE,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAC,IAAI,CAC7F,KAAK,CACN,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/search-log.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AgentSourceProvenance, AttributionConflict } from '@mmnto/totem';
|
|
1
2
|
export interface SearchLogEntry {
|
|
2
3
|
timestamp: string;
|
|
3
4
|
query: string;
|
|
@@ -33,36 +34,65 @@ export interface SearchLogEntry {
|
|
|
33
34
|
* identity to join against (ruled on mmnto-ai/totem#2362).
|
|
34
35
|
*/
|
|
35
36
|
agent_source?: string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Provenance of `agent_source` (mmnto-ai/totem#2629, ruled two-value enum):
|
|
39
|
+
* `'env'` iff the row was stamped from `TOTEM_SELF_AGENT`, `'absent'` iff no
|
|
40
|
+
* attribution was stamped (the honest stamped-absence default). Optional for
|
|
41
|
+
* pre-sensor rows; `logSearch` stamps it on every new row.
|
|
42
|
+
*/
|
|
43
|
+
agent_source_provenance?: AgentSourceProvenance;
|
|
44
|
+
/**
|
|
45
|
+
* Fail-closed disclosure (#2629): present iff the ambient env seat and the
|
|
46
|
+
* session pointer's minting seat disagreed — `agent_source` is withheld and
|
|
47
|
+
* both candidates are named. The query itself is never refused (Tenet 13).
|
|
48
|
+
*/
|
|
49
|
+
attribution_conflict?: AttributionConflict;
|
|
50
|
+
/** Named degradation (#2629): the conflict probe failed; the env stamp stands. */
|
|
51
|
+
attribution_probe_error?: string;
|
|
36
52
|
/** A.3.a: explicit session id passed through from `TOTEM_SESSION_ID` if present, else null (never guessed). Reserved forward primitive for the ADR-078 commit-side session join; deliberately inert in the current repo-wide windowing. */
|
|
37
53
|
session_id?: string | null;
|
|
38
54
|
/** A.3.a: trace-correlation id passed through from `TOTEM_CORRELATION_ID` if present, else null (never guessed). Reserved for the A.3.c end-to-end correlation pass; carried now so the trio lands in one producer touch. */
|
|
39
55
|
correlation_id?: string | null;
|
|
40
56
|
}
|
|
41
57
|
/**
|
|
42
|
-
* The
|
|
43
|
-
*
|
|
44
|
-
*
|
|
58
|
+
* The attribution stamp applied to every `SearchLogEntry` at log time: the
|
|
59
|
+
* A.3.a trio (`string | null` — a present value or an explicit `null`, Tenet 4)
|
|
60
|
+
* plus the #2629 provenance/fail-closed fields. Every key is REQUIRED on this
|
|
61
|
+
* interface — `attribution_conflict` / `attribution_probe_error` carry explicit
|
|
62
|
+
* `undefined` when clean — so the spread-last stamp in `logSearch` displaces
|
|
63
|
+
* any caller-supplied value for every stamped field (absence from the sense is
|
|
64
|
+
* as authoritative as presence; `JSON.stringify` drops the undefined keys from
|
|
65
|
+
* the persisted row).
|
|
45
66
|
*/
|
|
46
67
|
export interface SearchLogAttribution {
|
|
47
68
|
agent_source: string | null;
|
|
69
|
+
agent_source_provenance: AgentSourceProvenance;
|
|
70
|
+
attribution_conflict: AttributionConflict | undefined;
|
|
71
|
+
attribution_probe_error: string | undefined;
|
|
48
72
|
session_id: string | null;
|
|
49
73
|
correlation_id: string | null;
|
|
50
74
|
}
|
|
51
75
|
/**
|
|
52
|
-
* Derive the
|
|
53
|
-
* `process.env`). Pure — no I/O, no side effects — so the producer stamp is
|
|
54
|
-
* testable without touching the filesystem.
|
|
76
|
+
* Derive the attribution stamp for one row.
|
|
55
77
|
*
|
|
56
|
-
* - `agent_source
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* comma
|
|
78
|
+
* - `agent_source` + the #2629 provenance/fail-closed fields: delegated to
|
|
79
|
+
* core's `senseAgentAttribution` — the one derivation both stamp seams
|
|
80
|
+
* (this one and the selection-manifest builder) consume. Same env read +
|
|
81
|
+
* comma parse as `resolveSelfAgents` (the MCP server runs under a single
|
|
82
|
+
* seat, so the first non-empty entry is that seat), cross-checked against
|
|
83
|
+
* the session pointer's minting seat when `totemDir` is provided.
|
|
60
84
|
* - `session_id` / `correlation_id`: straight pass-through from
|
|
61
85
|
* `TOTEM_SESSION_ID` / `TOTEM_CORRELATION_ID`.
|
|
62
86
|
*
|
|
63
|
-
* Any field whose env var is absent or blank is stamped `null`.
|
|
87
|
+
* Any field whose env var is absent or blank is stamped `null`. Env-only calls
|
|
88
|
+
* (no `totemDir`) stay pure — no I/O — the testable-producer property the
|
|
89
|
+
* original trio derivation had; with `totemDir` the conflict probe reads the
|
|
90
|
+
* pointer + `events.ndjson`, per call, never cached (ruled — a cache converts
|
|
91
|
+
* a transient contamination into a whole-session one). The probe can never
|
|
92
|
+
* throw into the stamp path: failures degrade to the env-only stamp with the
|
|
93
|
+
* failure named on `attribution_probe_error`.
|
|
64
94
|
*/
|
|
65
|
-
export declare function deriveSearchLogAttribution(env?: NodeJS.ProcessEnv): SearchLogAttribution;
|
|
95
|
+
export declare function deriveSearchLogAttribution(env?: NodeJS.ProcessEnv, totemDir?: string): SearchLogAttribution;
|
|
66
96
|
export interface SearchStats {
|
|
67
97
|
totalCalls: number;
|
|
68
98
|
avgDuration: number;
|
|
@@ -73,13 +103,19 @@ export interface SearchStats {
|
|
|
73
103
|
* Must be called before the first `logSearch` to enable file logging.
|
|
74
104
|
*/
|
|
75
105
|
export declare function setLogDir(totemDir: string): void;
|
|
106
|
+
/**
|
|
107
|
+
* Test seam — clears the configured log path so attribution runs env-only
|
|
108
|
+
* (no ledger in reach) and file logging is disarmed. Production never calls
|
|
109
|
+
* this; the naming follows `_clearBashResolverCacheForTesting` (core).
|
|
110
|
+
*/
|
|
111
|
+
export declare function _clearLogDirForTesting(): void;
|
|
76
112
|
/**
|
|
77
113
|
* Record a search call.
|
|
78
114
|
*
|
|
79
|
-
* - Stamps the A.3.a
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
* the
|
|
115
|
+
* - Stamps the attribution fields (the A.3.a trio + the #2629 provenance /
|
|
116
|
+
* fail-closed fields) at log time — one producer touch shared by every call
|
|
117
|
+
* site. The derived stamp is authoritative: a caller-supplied value for any
|
|
118
|
+
* stamped field is displaced (see the stamp comment below).
|
|
83
119
|
* - Always appends to the in-memory array.
|
|
84
120
|
* - Best-effort appends a single JSON line to `{totemDir}/.search-log.jsonl`.
|
|
85
121
|
* File writes are fire-and-forget — failures are silently swallowed because
|
package/dist/search-log.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-log.d.ts","sourceRoot":"","sources":["../src/search-log.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2OAA2O;IAC3O,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6NAA6N;IAC7N,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED
|
|
1
|
+
{"version":3,"file":"search-log.d.ts","sourceRoot":"","sources":["../src/search-log.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAG/E,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;;;OAgBG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,qBAAqB,CAAC;IAChD;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,mBAAmB,CAAC;IAC3C,kFAAkF;IAClF,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,2OAA2O;IAC3O,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6NAA6N;IAC7N,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,uBAAuB,EAAE,qBAAqB,CAAC;IAC/C,oBAAoB,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACtD,uBAAuB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAaD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,QAAQ,CAAC,EAAE,MAAM,GAChB,oBAAoB,CAWtB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAQD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CA+B/D;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAc5C"}
|
package/dist/search-log.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import * as path from 'node:path';
|
|
3
|
+
import { senseAgentAttribution } from '@mmnto/totem';
|
|
3
4
|
/**
|
|
4
5
|
* Read one env var, trim it, and normalize empty/whitespace-only to `null`.
|
|
5
6
|
* `null` is the explicit "not present" stamp (Tenet 4) — never a guessed value.
|
|
@@ -12,30 +13,32 @@ function envOrNull(env, key) {
|
|
|
12
13
|
return trimmed.length > 0 ? trimmed : null;
|
|
13
14
|
}
|
|
14
15
|
/**
|
|
15
|
-
* Derive the
|
|
16
|
-
* `process.env`). Pure — no I/O, no side effects — so the producer stamp is
|
|
17
|
-
* testable without touching the filesystem.
|
|
16
|
+
* Derive the attribution stamp for one row.
|
|
18
17
|
*
|
|
19
|
-
* - `agent_source
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* comma
|
|
18
|
+
* - `agent_source` + the #2629 provenance/fail-closed fields: delegated to
|
|
19
|
+
* core's `senseAgentAttribution` — the one derivation both stamp seams
|
|
20
|
+
* (this one and the selection-manifest builder) consume. Same env read +
|
|
21
|
+
* comma parse as `resolveSelfAgents` (the MCP server runs under a single
|
|
22
|
+
* seat, so the first non-empty entry is that seat), cross-checked against
|
|
23
|
+
* the session pointer's minting seat when `totemDir` is provided.
|
|
23
24
|
* - `session_id` / `correlation_id`: straight pass-through from
|
|
24
25
|
* `TOTEM_SESSION_ID` / `TOTEM_CORRELATION_ID`.
|
|
25
26
|
*
|
|
26
|
-
* Any field whose env var is absent or blank is stamped `null`.
|
|
27
|
+
* Any field whose env var is absent or blank is stamped `null`. Env-only calls
|
|
28
|
+
* (no `totemDir`) stay pure — no I/O — the testable-producer property the
|
|
29
|
+
* original trio derivation had; with `totemDir` the conflict probe reads the
|
|
30
|
+
* pointer + `events.ndjson`, per call, never cached (ruled — a cache converts
|
|
31
|
+
* a transient contamination into a whole-session one). The probe can never
|
|
32
|
+
* throw into the stamp path: failures degrade to the env-only stamp with the
|
|
33
|
+
* failure named on `attribution_probe_error`.
|
|
27
34
|
*/
|
|
28
|
-
export function deriveSearchLogAttribution(env = process.env) {
|
|
29
|
-
const
|
|
30
|
-
const agent_source = selfAgentRaw !== null
|
|
31
|
-
? // Same comma-split as resolveSelfAgents; take the first non-empty seat.
|
|
32
|
-
(selfAgentRaw
|
|
33
|
-
.split(',')
|
|
34
|
-
.map((s) => s.trim())
|
|
35
|
-
.find((s) => s.length > 0) ?? null)
|
|
36
|
-
: null;
|
|
35
|
+
export function deriveSearchLogAttribution(env = process.env, totemDir) {
|
|
36
|
+
const sense = senseAgentAttribution({ env, totemDir });
|
|
37
37
|
return {
|
|
38
|
-
agent_source,
|
|
38
|
+
agent_source: sense.agent_source,
|
|
39
|
+
agent_source_provenance: sense.agent_source_provenance,
|
|
40
|
+
attribution_conflict: sense.attribution_conflict,
|
|
41
|
+
attribution_probe_error: sense.attribution_probe_error,
|
|
39
42
|
session_id: envOrNull(env, 'TOTEM_SESSION_ID'),
|
|
40
43
|
correlation_id: envOrNull(env, 'TOTEM_CORRELATION_ID'),
|
|
41
44
|
};
|
|
@@ -51,13 +54,21 @@ let logFilePath;
|
|
|
51
54
|
export function setLogDir(totemDir) {
|
|
52
55
|
logFilePath = path.join(totemDir, '.search-log.jsonl');
|
|
53
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Test seam — clears the configured log path so attribution runs env-only
|
|
59
|
+
* (no ledger in reach) and file logging is disarmed. Production never calls
|
|
60
|
+
* this; the naming follows `_clearBashResolverCacheForTesting` (core).
|
|
61
|
+
*/
|
|
62
|
+
export function _clearLogDirForTesting() {
|
|
63
|
+
logFilePath = undefined;
|
|
64
|
+
}
|
|
54
65
|
/**
|
|
55
66
|
* Record a search call.
|
|
56
67
|
*
|
|
57
|
-
* - Stamps the A.3.a
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* the
|
|
68
|
+
* - Stamps the attribution fields (the A.3.a trio + the #2629 provenance /
|
|
69
|
+
* fail-closed fields) at log time — one producer touch shared by every call
|
|
70
|
+
* site. The derived stamp is authoritative: a caller-supplied value for any
|
|
71
|
+
* stamped field is displaced (see the stamp comment below).
|
|
61
72
|
* - Always appends to the in-memory array.
|
|
62
73
|
* - Best-effort appends a single JSON line to `{totemDir}/.search-log.jsonl`.
|
|
63
74
|
* File writes are fire-and-forget — failures are silently swallowed because
|
|
@@ -67,10 +78,19 @@ export function setLogDir(totemDir) {
|
|
|
67
78
|
* without touching the filesystem.
|
|
68
79
|
*/
|
|
69
80
|
export function logSearch(entry) {
|
|
70
|
-
// Env stamp LAST: the attribution
|
|
71
|
-
//
|
|
72
|
-
//
|
|
73
|
-
|
|
81
|
+
// Env stamp LAST: the attribution fields are governance telemetry, so the
|
|
82
|
+
// derived values are authoritative — a caller-supplied (or spread-truthy
|
|
83
|
+
// `undefined`) stamped field must never displace the stamp. The attribution
|
|
84
|
+
// object carries every stamped key explicitly (undefined when clean), so a
|
|
85
|
+
// caller-supplied conflict cannot survive a clean sense either.
|
|
86
|
+
// `totemDir` recovers from the log path per call — when `setLogDir` was
|
|
87
|
+
// never called there is no ledger in reach and the sense runs env-only
|
|
88
|
+
// (provenance still stamped, no conflict probe).
|
|
89
|
+
const totemDir = logFilePath !== undefined ? path.dirname(logFilePath) : undefined;
|
|
90
|
+
const stamped = {
|
|
91
|
+
...entry,
|
|
92
|
+
...deriveSearchLogAttribution(process.env, totemDir),
|
|
93
|
+
};
|
|
74
94
|
entries.push(stamped);
|
|
75
95
|
// Best-effort, non-blocking file append
|
|
76
96
|
if (logFilePath) {
|
package/dist/search-log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-log.js","sourceRoot":"","sources":["../src/search-log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"search-log.js","sourceRoot":"","sources":["../src/search-log.ts"],"names":[],"mappings":"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"}
|