@getmarrow/mcp 3.9.94 → 3.9.95
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/README.md +9 -1
- package/dist/codex-native-usage.d.ts +30 -0
- package/dist/codex-native-usage.d.ts.map +1 -0
- package/dist/codex-native-usage.js +289 -0
- package/dist/codex-native-usage.js.map +1 -0
- package/dist/hook-contract.d.ts +2 -2
- package/dist/hook-contract.js +1 -1
- package/dist/hook-session.d.ts.map +1 -1
- package/dist/hook-session.js +13 -5
- package/dist/hook-session.js.map +1 -1
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +11 -1
- package/dist/hook.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/README.md
CHANGED
|
@@ -136,12 +136,18 @@ v3.9.87 hardens the authenticated control-path canary against single-sample tran
|
|
|
136
136
|
|
|
137
137
|
v3.9.86 was published with the adapter version constant still at `3.9.85`, so the strict canary identity check rejected it; it is deprecated — use `3.9.87`. SDK `3.7.62` and installer `0.1.56` are unchanged; install MCP `3.9.87`, reload the host, review hook trust, and verify before claiming the updated client is active.
|
|
138
138
|
|
|
139
|
-
## What's New in v3.9.
|
|
139
|
+
## What's New in v3.9.95
|
|
140
|
+
|
|
141
|
+
v3.9.95 fixes supplied model usage lost when native session hooks consumed stdin. It also captures the latest proven Codex model-call delta from bound token-usage events or a bounded transcript using the supported Codex `0.157.1` schema. Unknown versions, model/turn identity, unsafe paths, counter resets and unproven child bindings abstain. Billing dimensions remain unknown unless explicitly supplied. Capture is not proof of complete coverage, a comparable baseline, overhead or savings. Update and reload the owning host before claiming active capture.
|
|
142
|
+
|
|
143
|
+
### Previous release: v3.9.94
|
|
140
144
|
|
|
141
145
|
v3.9.94 preserves compact model-cost evidence through native capture, direct usage submission and Commit. It captures OpenAI Chat/Responses cache subsets and Anthropic cache reads/writes with their actual token semantics and stable provider response identity. Published 3.9.93 strips these fields, so this correction requires updating MCP and reloading the host. It does not change authentication, plans, or claim baseline savings.
|
|
142
146
|
|
|
143
147
|
### Observed usage and calculated cost
|
|
144
148
|
|
|
149
|
+
Session-hook commands retain observed usage supplied on stdin for capture. Session totals remain cumulative and unpriced without a proven delta; this does not add transcript collection or manufacture missing model usage.
|
|
150
|
+
|
|
145
151
|
A connector tool call does not automatically expose the upstream chat model's usage. Native hooks capture only usage actually present in their event. Adapters can pass an observed request endpoint to `extractModelUsageFromUnknown`; native hooks accept explicit host configuration through `MARROW_MODEL_USAGE_ENDPOINT`. First-party billing is recognized only for HTTPS `api.openai.com` and `api.anthropic.com`, with no credentials or custom port. Set this only when it describes the requests whose responses the hook observes; do not label a proxy or mixed-provider stream as first-party. Endpoints and response content are never sent as usage evidence.
|
|
146
152
|
|
|
147
153
|
`MARROW_MODEL_USAGE_PRICING_DIMENSIONS` accepts a compact JSON object of dimensions actually established by the request configuration (for example tier, region and modality). Missing dimensions remain unknown. Observed service tier, Anthropic inference geography and single-TTL cache-creation counts take precedence. Mixed cache TTL writes remain unresolved. Set `MARROW_MODEL_USAGE_BILLING_MODE=subscription` only for subscription usage; displayed cost then means an API-equivalent estimate, not an invoice. Never use these settings to fill gaps by guessing.
|
|
@@ -678,3 +684,5 @@ MIT
|
|
|
678
684
|
|
|
679
685
|
- [@getmarrow/install](https://www.npmjs.com/package/@getmarrow/install) - default installer, self-test, governed runner, and operator TUI
|
|
680
686
|
- [@getmarrow/sdk](https://www.npmjs.com/package/@getmarrow/sdk) - Node.js and TypeScript integration for owned agent runtimes
|
|
687
|
+
|
|
688
|
+
Codex native usage capture accepts a bound `thread/tokenUsage/updated` event or a bounded current transcript with the supported `0.157.1` schema. It records only the latest observed model call when matching model/turn counters prove that call's delta; it does not reconstruct whole turns or history. Repeated hooks use a compact private checkpoint and stable usage ID. Unknown versions, missing context, counter resets, unsafe/oversized files, and unproven subagent bindings abstain. Cached input and reasoning output remain subsets. Billing endpoint, tier, region, and subscription mode require explicit capture configuration; native model names do not establish a price or savings baseline.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { MarrowModelUsageInput } from './types';
|
|
2
|
+
export declare const CODEX_USAGE_LIMITS: {
|
|
3
|
+
readonly fileBytes: number;
|
|
4
|
+
readonly tailBytes: number;
|
|
5
|
+
readonly lineBytes: number;
|
|
6
|
+
readonly lines: 2048;
|
|
7
|
+
readonly readMs: 50;
|
|
8
|
+
};
|
|
9
|
+
type Counters = [number, number, number, number, number, number | null];
|
|
10
|
+
export interface CodexUsageCheckpoint {
|
|
11
|
+
version: 1;
|
|
12
|
+
thread: string;
|
|
13
|
+
turn: string;
|
|
14
|
+
model: string;
|
|
15
|
+
total: Counters;
|
|
16
|
+
submitted?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface CodexUsageObservation {
|
|
19
|
+
reason: string;
|
|
20
|
+
checkpoint?: CodexUsageCheckpoint;
|
|
21
|
+
usage?: MarrowModelUsageInput;
|
|
22
|
+
}
|
|
23
|
+
/** Reads one supported event or bounded current transcript. Never returns transcript text. */
|
|
24
|
+
export declare function observeCodexNativeUsage(input: unknown, previous?: CodexUsageCheckpoint, options?: {
|
|
25
|
+
sessionsRoot?: string;
|
|
26
|
+
}): CodexUsageObservation;
|
|
27
|
+
/** Compact private checkpoint avoids duplicate uploads across native hook processes. */
|
|
28
|
+
export declare function captureCodexNativeUsage(input: unknown, apiKey: string, baseUrl: string, agentId?: string): Promise<void>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=codex-native-usage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-native-usage.d.ts","sourceRoot":"","sources":["../src/codex-native-usage.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAIrD,eAAO,MAAM,kBAAkB;;;;;;CAAiH,CAAC;AAEjJ,KAAK,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;AACxE,MAAM,WAAW,oBAAoB;IAAG,OAAO,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE;AACtI,MAAM,WAAW,qBAAqB;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,oBAAoB,CAAC;IAAC,KAAK,CAAC,EAAE,qBAAqB,CAAA;CAAE;AA6E3H,8FAA8F;AAC9F,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,oBAAoB,EACrF,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,qBAAqB,CAsEhE;AAcD,wFAAwF;AACxF,wBAAsB,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B9H"}
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CODEX_USAGE_LIMITS = void 0;
|
|
4
|
+
exports.observeCodexNativeUsage = observeCodexNativeUsage;
|
|
5
|
+
exports.captureCodexNativeUsage = captureCodexNativeUsage;
|
|
6
|
+
const node_fs_1 = require("node:fs");
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const node_os_1 = require("node:os");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const node_perf_hooks_1 = require("node:perf_hooks");
|
|
11
|
+
const index_1 = require("./index");
|
|
12
|
+
const habit_loop_copy_1 = require("./habit-loop-copy");
|
|
13
|
+
const model_usage_1 = require("./model-usage");
|
|
14
|
+
const UUID = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i;
|
|
15
|
+
const MODEL = /^[a-zA-Z0-9_.:-]{1,120}$/;
|
|
16
|
+
exports.CODEX_USAGE_LIMITS = { fileBytes: 32 * 1024 * 1024, tailBytes: 256 * 1024, lineBytes: 64 * 1024, lines: 2048, readMs: 50 };
|
|
17
|
+
const TRANSCRIPT_VERSIONS = new Set(['0.157.1']);
|
|
18
|
+
const record = (v) => v && typeof v === 'object' && !Array.isArray(v) ? v : null;
|
|
19
|
+
const hash = (v) => (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(v)).digest('hex');
|
|
20
|
+
const count = (v) => typeof v === 'number' && Number.isSafeInteger(v) && v >= 0;
|
|
21
|
+
function counters(value, camel = false) {
|
|
22
|
+
const v = record(value);
|
|
23
|
+
if (!v)
|
|
24
|
+
return null;
|
|
25
|
+
const names = camel ? ['inputTokens', 'cachedInputTokens', 'outputTokens', 'reasoningOutputTokens', 'totalTokens', 'cacheWriteInputTokens']
|
|
26
|
+
: ['input_tokens', 'cached_input_tokens', 'output_tokens', 'reasoning_output_tokens', 'total_tokens', 'cache_write_input_tokens'];
|
|
27
|
+
if (Object.keys(v).some(k => !names.includes(k)))
|
|
28
|
+
return null;
|
|
29
|
+
const values = names.map(k => v[k]);
|
|
30
|
+
if (!values.slice(0, 5).every(count) || (values[5] !== undefined && !count(values[5])))
|
|
31
|
+
return null;
|
|
32
|
+
const result = [...values.slice(0, 5), values[5] ?? null];
|
|
33
|
+
if (result[1] + (result[5] || 0) > result[0] || result[3] > result[2] || result[4] !== result[0] + result[2])
|
|
34
|
+
return null;
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
function ownedPath(path, directory) {
|
|
38
|
+
try {
|
|
39
|
+
const s = (0, node_fs_1.lstatSync)(path);
|
|
40
|
+
return !s.isSymbolicLink() && (directory ? s.isDirectory() : s.isFile())
|
|
41
|
+
&& (typeof process.getuid !== 'function' || s.uid === process.getuid()) && !(s.mode & 0o022);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function safeTranscript(path, root) {
|
|
48
|
+
if (!(0, node_path_1.isAbsolute)(path) || !(0, node_path_1.isAbsolute)(root))
|
|
49
|
+
return false;
|
|
50
|
+
// The opened spelling must be the same path whose ancestors we validate.
|
|
51
|
+
// In particular, a symlink followed by /.. has different filesystem semantics.
|
|
52
|
+
if (path !== (0, node_path_1.resolve)(path))
|
|
53
|
+
return false;
|
|
54
|
+
const rel = (0, node_path_1.relative)(root, path);
|
|
55
|
+
if (!rel || rel.startsWith('..') || (0, node_path_1.isAbsolute)(rel) || !path.endsWith('.jsonl'))
|
|
56
|
+
return false;
|
|
57
|
+
// Validate every ancestor, not just the final path: no symlink traversal.
|
|
58
|
+
let current = (0, node_path_1.resolve)(path);
|
|
59
|
+
while (current !== (0, node_path_1.dirname)(current)) {
|
|
60
|
+
if (current === root || (0, node_path_1.relative)(root, current).startsWith('..') === false) {
|
|
61
|
+
if (!ownedPath(current, current !== (0, node_path_1.resolve)(path)))
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
const stat = (0, node_fs_1.lstatSync)(current);
|
|
66
|
+
if (stat.isSymbolicLink() || !stat.isDirectory())
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
current = (0, node_path_1.dirname)(current);
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
function delta(total, last, previous) {
|
|
74
|
+
return !!previous && total.every((value, i) => {
|
|
75
|
+
const prior = previous[i], current = last[i];
|
|
76
|
+
return value === null ? prior === null && current === null
|
|
77
|
+
: prior !== null && current !== null && value >= prior && value - prior === current;
|
|
78
|
+
}) && last[4] > 0;
|
|
79
|
+
}
|
|
80
|
+
function observation(thread, turn, model, provider, total, last, previous, occurredAt) {
|
|
81
|
+
const checkpoint = { version: 1, thread, turn, model, total };
|
|
82
|
+
if (!delta(total, last, previous))
|
|
83
|
+
return { reason: 'delta_not_proven', checkpoint };
|
|
84
|
+
const context = (0, habit_loop_copy_1.modelUsageCaptureContextFromEnv)();
|
|
85
|
+
let billingHost;
|
|
86
|
+
try {
|
|
87
|
+
const endpoint = new URL(context.endpoint || '');
|
|
88
|
+
if (provider === 'openai' && endpoint.protocol === 'https:' && endpoint.hostname === 'api.openai.com'
|
|
89
|
+
&& !endpoint.port && !endpoint.username && !endpoint.password)
|
|
90
|
+
billingHost = 'first_party';
|
|
91
|
+
}
|
|
92
|
+
catch { /* Billing evidence remains unknown. */ }
|
|
93
|
+
const usage = (0, model_usage_1.normalizeModelUsage)({ provider, model, session_id: thread,
|
|
94
|
+
usage_event_id: `codex-native:${hash([thread, turn, model, total])}`,
|
|
95
|
+
input_tokens: last[0], cached_tokens: last[1], output_tokens: last[2], total_tokens: last[4],
|
|
96
|
+
...(last[5] === null ? {} : { cache_write_tokens: last[5] }),
|
|
97
|
+
// Codex counters already include cached input and reasoning output.
|
|
98
|
+
token_semantics: 'input_includes_cache', usage_kind: 'delta', source: 'codex_native_usage', action_type: 'model',
|
|
99
|
+
billing_host: billingHost, billing_mode: context.billing_mode, pricing_dimensions: context.pricing_dimensions,
|
|
100
|
+
occurred_at: occurredAt,
|
|
101
|
+
});
|
|
102
|
+
return { reason: 'observed_delta', checkpoint, usage };
|
|
103
|
+
}
|
|
104
|
+
/** Reads one supported event or bounded current transcript. Never returns transcript text. */
|
|
105
|
+
function observeCodexNativeUsage(input, previous, options = {}) {
|
|
106
|
+
try {
|
|
107
|
+
const hook = record(input);
|
|
108
|
+
if (!hook)
|
|
109
|
+
return { reason: 'unsupported_shape' };
|
|
110
|
+
// Native subagent session_id can name its parent. Without a proven Marrow
|
|
111
|
+
// binding for that child, abstain rather than upload parent-attributed usage.
|
|
112
|
+
if (hook.subagent_transcript_path !== undefined || hook.agent_id !== undefined)
|
|
113
|
+
return { reason: 'subagent_binding_unproven' };
|
|
114
|
+
if (typeof hook.model !== 'string' || !MODEL.test(hook.model))
|
|
115
|
+
return { reason: 'model_missing' };
|
|
116
|
+
if (hook.method === 'thread/tokenUsage/updated') {
|
|
117
|
+
const params = record(hook.params), usage = record(params?.tokenUsage);
|
|
118
|
+
const thread = params?.threadId, turn = params?.turnId;
|
|
119
|
+
if (typeof thread !== 'string' || !UUID.test(thread) || typeof turn !== 'string' || !UUID.test(turn)
|
|
120
|
+
|| hook.session_id !== thread || hook.turn_id !== turn || !usage)
|
|
121
|
+
return { reason: 'event_identity_unproven' };
|
|
122
|
+
if (Object.keys(usage).some(k => !['total', 'last', 'modelContextWindow'].includes(k)))
|
|
123
|
+
return { reason: 'unsupported_shape' };
|
|
124
|
+
const total = counters(usage.total, true), last = counters(usage.last, true);
|
|
125
|
+
if (!total || !last)
|
|
126
|
+
return { reason: 'invalid_counters' };
|
|
127
|
+
const prior = previous?.thread === thread && previous.turn === turn && previous.model === hook.model ? previous.total : undefined;
|
|
128
|
+
return observation(thread, turn, hook.model, undefined, total, last, prior);
|
|
129
|
+
}
|
|
130
|
+
if (typeof hook.session_id !== 'string' || !UUID.test(hook.session_id) || typeof hook.transcript_path !== 'string')
|
|
131
|
+
return { reason: 'transcript_identity_unproven' };
|
|
132
|
+
const root = (0, node_path_1.resolve)(options.sessionsRoot || (0, node_path_1.join)(process.env.CODEX_HOME || (0, node_path_1.join)((0, node_os_1.homedir)(), '.codex'), 'sessions'));
|
|
133
|
+
const file = hook.transcript_path;
|
|
134
|
+
if (!safeTranscript(file, root))
|
|
135
|
+
return { reason: 'transcript_path_rejected' };
|
|
136
|
+
const started = node_perf_hooks_1.performance.now();
|
|
137
|
+
const fd = (0, node_fs_1.openSync)(file, node_fs_1.constants.O_RDONLY | node_fs_1.constants.O_NOFOLLOW);
|
|
138
|
+
let head, tail, offset;
|
|
139
|
+
try {
|
|
140
|
+
const stat = (0, node_fs_1.fstatSync)(fd);
|
|
141
|
+
if (!stat.isFile() || (typeof process.getuid === 'function' && stat.uid !== process.getuid()) || (stat.mode & 0o022) || stat.size > exports.CODEX_USAGE_LIMITS.fileBytes)
|
|
142
|
+
return { reason: 'transcript_size_limit' };
|
|
143
|
+
const read = (start, size) => { const b = Buffer.alloc(size); return b.subarray(0, (0, node_fs_1.readSync)(fd, b, 0, size, start)).toString('utf8'); };
|
|
144
|
+
head = read(0, Math.min(stat.size, exports.CODEX_USAGE_LIMITS.lineBytes));
|
|
145
|
+
offset = Math.max(0, stat.size - exports.CODEX_USAGE_LIMITS.tailBytes);
|
|
146
|
+
tail = read(offset, stat.size - offset);
|
|
147
|
+
if ((0, node_fs_1.fstatSync)(fd).size !== stat.size)
|
|
148
|
+
return { reason: 'transcript_changed_during_read' };
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
(0, node_fs_1.closeSync)(fd);
|
|
152
|
+
}
|
|
153
|
+
if (node_perf_hooks_1.performance.now() - started > exports.CODEX_USAGE_LIMITS.readMs)
|
|
154
|
+
return { reason: 'transcript_time_limit' };
|
|
155
|
+
const firstLineEnd = head.indexOf('\n');
|
|
156
|
+
if (firstLineEnd < 0)
|
|
157
|
+
return { reason: 'transcript_metadata_limit' };
|
|
158
|
+
const header = record(JSON.parse(head.slice(0, firstLineEnd))), meta = record(header?.payload);
|
|
159
|
+
if (header?.type !== 'session_meta' || meta?.id !== hook.session_id || !TRANSCRIPT_VERSIONS.has(String(meta?.cli_version)))
|
|
160
|
+
return { reason: 'transcript_version_or_identity_unproven' };
|
|
161
|
+
if (meta?.parent_thread_id || record(meta?.source)?.subagent)
|
|
162
|
+
return { reason: 'subagent_binding_unproven' };
|
|
163
|
+
const lines = tail.split('\n');
|
|
164
|
+
if (offset)
|
|
165
|
+
lines.shift();
|
|
166
|
+
if (lines.length > exports.CODEX_USAGE_LIMITS.lines)
|
|
167
|
+
return { reason: 'transcript_line_limit' };
|
|
168
|
+
let turn, model, prior;
|
|
169
|
+
let found = { reason: 'current_turn_delta_unavailable' };
|
|
170
|
+
for (const line of lines) {
|
|
171
|
+
if (node_perf_hooks_1.performance.now() - started > exports.CODEX_USAGE_LIMITS.readMs)
|
|
172
|
+
return { reason: 'transcript_time_limit' };
|
|
173
|
+
if (Buffer.byteLength(line) > exports.CODEX_USAGE_LIMITS.lineBytes)
|
|
174
|
+
return { reason: 'transcript_line_limit' };
|
|
175
|
+
if (!line || (!line.includes('"turn_context"') && !line.includes('"token_count"')))
|
|
176
|
+
continue;
|
|
177
|
+
const event = record(JSON.parse(line)), p = record(event?.payload);
|
|
178
|
+
if (event?.type === 'turn_context') {
|
|
179
|
+
turn = typeof p?.turn_id === 'string' && UUID.test(p.turn_id) ? p.turn_id : undefined;
|
|
180
|
+
model = typeof p?.model === 'string' && MODEL.test(p.model) ? p.model : undefined;
|
|
181
|
+
prior = undefined;
|
|
182
|
+
found = { reason: 'current_turn_delta_unavailable' };
|
|
183
|
+
}
|
|
184
|
+
else if (event?.type === 'event_msg' && p?.type === 'token_count') {
|
|
185
|
+
const info = record(p.info), total = counters(info?.total_token_usage), last = counters(info?.last_token_usage);
|
|
186
|
+
if (!turn || !model || !total || !last) {
|
|
187
|
+
prior = undefined;
|
|
188
|
+
found = { reason: 'unsupported_shape' };
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
if (prior && total.every((n, i) => n === prior[i]))
|
|
192
|
+
continue;
|
|
193
|
+
if (model !== hook.model || (hook.turn_id !== undefined && hook.turn_id !== turn)) {
|
|
194
|
+
prior = total;
|
|
195
|
+
found = { reason: 'turn_model_mismatch' };
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
const time = event?.timestamp;
|
|
199
|
+
if (typeof time !== 'string' || !Number.isFinite(Date.parse(time)))
|
|
200
|
+
return { reason: 'timestamp_missing' };
|
|
201
|
+
found = observation(hook.session_id, turn, model, meta?.model_provider === 'openai' ? 'openai' : undefined, total, last, prior, new Date(time).toISOString());
|
|
202
|
+
prior = total;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return found;
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return { reason: 'native_usage_unavailable' };
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
function checkpointPath(thread, agentId) {
|
|
212
|
+
const home = (0, node_os_1.homedir)(), parent = (0, node_path_1.join)(home, '.marrow'), root = (0, node_path_1.join)(parent, 'codex-native-usage');
|
|
213
|
+
try {
|
|
214
|
+
if (!ownedPath(home, true))
|
|
215
|
+
return null;
|
|
216
|
+
for (const dir of [parent, root]) {
|
|
217
|
+
try {
|
|
218
|
+
(0, node_fs_1.mkdirSync)(dir, { mode: 0o700 });
|
|
219
|
+
}
|
|
220
|
+
catch { /* Validate existing directory below. */ }
|
|
221
|
+
if (!ownedPath(dir, true))
|
|
222
|
+
return null;
|
|
223
|
+
}
|
|
224
|
+
return (0, node_path_1.join)(root, `${hash([agentId, thread])}.json`);
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/** Compact private checkpoint avoids duplicate uploads across native hook processes. */
|
|
231
|
+
async function captureCodexNativeUsage(input, apiKey, baseUrl, agentId) {
|
|
232
|
+
const hook = record(input), params = record(hook?.params);
|
|
233
|
+
const thread = hook?.method === 'thread/tokenUsage/updated' ? params?.threadId : hook?.session_id;
|
|
234
|
+
if (hook?.subagent_transcript_path !== undefined || hook?.agent_id !== undefined)
|
|
235
|
+
return;
|
|
236
|
+
if (!apiKey || !agentId || typeof thread !== 'string' || !UUID.test(thread))
|
|
237
|
+
return;
|
|
238
|
+
const file = checkpointPath(thread, agentId);
|
|
239
|
+
if (!file)
|
|
240
|
+
return;
|
|
241
|
+
let previous;
|
|
242
|
+
try {
|
|
243
|
+
if (ownedPath(file, false) && (0, node_fs_1.lstatSync)(file).size <= 2048) {
|
|
244
|
+
const fd = (0, node_fs_1.openSync)(file, node_fs_1.constants.O_RDONLY | node_fs_1.constants.O_NOFOLLOW);
|
|
245
|
+
let saved;
|
|
246
|
+
try {
|
|
247
|
+
if ((0, node_fs_1.fstatSync)(fd).size > 2048)
|
|
248
|
+
return;
|
|
249
|
+
saved = JSON.parse((0, node_fs_1.readFileSync)(fd, 'utf8'));
|
|
250
|
+
}
|
|
251
|
+
finally {
|
|
252
|
+
(0, node_fs_1.closeSync)(fd);
|
|
253
|
+
}
|
|
254
|
+
if (saved.version === 1 && saved.thread === thread && typeof saved.turn === 'string' && UUID.test(saved.turn)
|
|
255
|
+
&& typeof saved.model === 'string' && MODEL.test(saved.model) && Array.isArray(saved.total)
|
|
256
|
+
&& saved.total.length === 6 && saved.total.slice(0, 5).every(count) && (saved.total[5] === null || count(saved.total[5])))
|
|
257
|
+
previous = saved;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch { /* An invalid checkpoint proves no delta. */ }
|
|
261
|
+
const result = observeCodexNativeUsage(input, previous);
|
|
262
|
+
if (!result.checkpoint)
|
|
263
|
+
return;
|
|
264
|
+
if (result.usage) {
|
|
265
|
+
if (previous?.submitted === result.usage.usage_event_id)
|
|
266
|
+
return;
|
|
267
|
+
try {
|
|
268
|
+
await (0, index_1.marrowModelUsage)(apiKey, baseUrl, result.usage, result.checkpoint.thread, agentId);
|
|
269
|
+
}
|
|
270
|
+
catch {
|
|
271
|
+
return;
|
|
272
|
+
} // Keep the prior checkpoint so the same observation can retry unchanged.
|
|
273
|
+
result.checkpoint.submitted = result.usage.usage_event_id;
|
|
274
|
+
}
|
|
275
|
+
else
|
|
276
|
+
result.checkpoint.submitted = previous?.submitted;
|
|
277
|
+
const temporary = `${file}.${process.pid}.${hash(Date.now()).slice(0, 8)}.tmp`;
|
|
278
|
+
try {
|
|
279
|
+
(0, node_fs_1.writeFileSync)(temporary, JSON.stringify(result.checkpoint), { mode: 0o600, flag: 'wx' });
|
|
280
|
+
(0, node_fs_1.renameSync)(temporary, file);
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
try {
|
|
284
|
+
(0, node_fs_1.unlinkSync)(temporary);
|
|
285
|
+
}
|
|
286
|
+
catch { /* Best effort checkpoint only. */ }
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=codex-native-usage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-native-usage.js","sourceRoot":"","sources":["../src/codex-native-usage.ts"],"names":[],"mappings":"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"}
|
package/dist/hook-contract.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { resolveMarrowEnv, type ResolvedMarrowEnv } from './env';
|
|
2
|
-
export declare const MCP_ADAPTER_VERSION = "3.9.
|
|
2
|
+
export declare const MCP_ADAPTER_VERSION = "3.9.95";
|
|
3
3
|
export declare const NATIVE_HOOK_MATCHER = "Bash|Edit|Write|MultiEdit|Read|Glob|Grep|Search|WebSearch|Task|functions\\.(?!mcp__marrow__marrow_).*|mcp__(?!marrow__marrow_).*";
|
|
4
4
|
export declare const GROK_NATIVE_HOOK_MATCHER = "run_terminal_command|search_replace|write|spawn_subagent|use_tool|workflow|image_gen|image_edit|image_to_video|reference_to_video";
|
|
5
|
-
export declare const MCP_PACKAGE_SPEC = "@getmarrow/mcp@3.9.
|
|
5
|
+
export declare const MCP_PACKAGE_SPEC = "@getmarrow/mcp@3.9.95";
|
|
6
6
|
export declare const CONTEXT_HOOK_COMMAND: string;
|
|
7
7
|
export declare const PRE_ACTION_HOOK_COMMAND: string;
|
|
8
8
|
export declare const ACTION_RESULT_HOOK_COMMAND: string;
|
package/dist/hook-contract.js
CHANGED
|
@@ -21,7 +21,7 @@ const node_fs_1 = require("node:fs");
|
|
|
21
21
|
const node_os_1 = require("node:os");
|
|
22
22
|
const node_path_1 = require("node:path");
|
|
23
23
|
const env_1 = require("./env");
|
|
24
|
-
exports.MCP_ADAPTER_VERSION = '3.9.
|
|
24
|
+
exports.MCP_ADAPTER_VERSION = '3.9.95';
|
|
25
25
|
exports.NATIVE_HOOK_MATCHER = 'Bash|Edit|Write|MultiEdit|Read|Glob|Grep|Search|WebSearch|Task|functions\\.(?!mcp__marrow__marrow_).*|mcp__(?!marrow__marrow_).*';
|
|
26
26
|
exports.GROK_NATIVE_HOOK_MATCHER = 'run_terminal_command|search_replace|write|spawn_subagent|use_tool|workflow|image_gen|image_edit|image_to_video|reference_to_video';
|
|
27
27
|
exports.MCP_PACKAGE_SPEC = `@getmarrow/mcp@${exports.MCP_ADAPTER_VERSION}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-session.d.ts","sourceRoot":"","sources":["../src/hook-session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hook-session.d.ts","sourceRoot":"","sources":["../src/hook-session.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,oBAAoB,QAA2B,CAAC;AAuE7D,wBAAgB,qBAAqB,CAAC,QAAQ,SAAgB,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAa5G;AAED,wBAAgB,wBAAwB,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAIjE;AAED,wBAAsB,qBAAqB,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA+E1E"}
|
package/dist/hook-session.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.SESSION_HOOK_COMMAND = void 0;
|
|
|
4
4
|
exports.installSessionEndHook = installSessionEndHook;
|
|
5
5
|
exports.sessionEndAutoCommitOpen = sessionEndAutoCommitOpen;
|
|
6
6
|
exports.runSessionHookCommand = runSessionHookCommand;
|
|
7
|
+
const codex_native_usage_1 = require("./codex-native-usage");
|
|
7
8
|
const lifecycle_spool_1 = require("./lifecycle-spool");
|
|
8
9
|
const index_1 = require("./index");
|
|
9
10
|
const habit_loop_copy_1 = require("./habit-loop-copy");
|
|
@@ -15,7 +16,7 @@ exports.SESSION_HOOK_COMMAND = hook_contract_1.SESSION_END_HOOK_COMMAND;
|
|
|
15
16
|
const MAX_HOOK_INPUT_BYTES = 64 * 1024;
|
|
16
17
|
const SESSION_END_TIMEOUT_MS = 900;
|
|
17
18
|
const completedGrokTurns = new Set();
|
|
18
|
-
function
|
|
19
|
+
function readStopHookInput(input) {
|
|
19
20
|
let value = input;
|
|
20
21
|
if (value === undefined) {
|
|
21
22
|
try {
|
|
@@ -26,9 +27,12 @@ function readStopHookSource(input) {
|
|
|
26
27
|
value = {};
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
function readStopHookSource(input) {
|
|
33
|
+
if (!input || typeof input !== 'object' || Array.isArray(input))
|
|
30
34
|
return {};
|
|
31
|
-
const source = (0, hook_contract_1.normalizeHookEventPayload)(
|
|
35
|
+
const source = (0, hook_contract_1.normalizeHookEventPayload)(input);
|
|
32
36
|
const take = (field) => {
|
|
33
37
|
const candidate = typeof source[field] === 'string' ? String(source[field]).trim().slice(0, 1024) : '';
|
|
34
38
|
return candidate || undefined;
|
|
@@ -97,7 +101,8 @@ async function runSessionHookCommand(input) {
|
|
|
97
101
|
return;
|
|
98
102
|
}
|
|
99
103
|
const resolved = identity.environment;
|
|
100
|
-
const
|
|
104
|
+
const payload = readStopHookInput(input);
|
|
105
|
+
const source = readStopHookSource(payload);
|
|
101
106
|
const sessionId = resolved.sessionId || source.session_id || source.conversation_id || source.task_id
|
|
102
107
|
|| (0, hook_contract_1.stableSessionWorkflowId)(undefined, [identity.harness, process.cwd()]);
|
|
103
108
|
const agentId = identity.agent_id;
|
|
@@ -155,7 +160,7 @@ async function runSessionHookCommand(input) {
|
|
|
155
160
|
// The pending lifecycle receipt remains durable for later reconciliation.
|
|
156
161
|
}
|
|
157
162
|
if (!['windsurf', 'gemini', 'grok'].includes(identity.harness) && process.env.MARROW_PASSIVE_TOKEN_USAGE !== 'false') {
|
|
158
|
-
const usage = (0, habit_loop_copy_1.extractModelUsageFromUnknown)(
|
|
163
|
+
const usage = (0, habit_loop_copy_1.extractModelUsageFromUnknown)(payload, { ...(0, habit_loop_copy_1.modelUsageCaptureContextFromEnv)(), usage_kind: 'cumulative' });
|
|
159
164
|
if (usage) {
|
|
160
165
|
await (0, index_1.marrowModelUsage)(resolved.apiKey, baseUrl, {
|
|
161
166
|
...usage,
|
|
@@ -164,6 +169,9 @@ async function runSessionHookCommand(input) {
|
|
|
164
169
|
action_type: 'session',
|
|
165
170
|
}, sessionId, agentId).catch(() => undefined);
|
|
166
171
|
}
|
|
172
|
+
else if (identity.harness === 'codex') {
|
|
173
|
+
await (0, codex_native_usage_1.captureCodexNativeUsage)(payload, resolved.apiKey, baseUrl, agentId);
|
|
174
|
+
}
|
|
167
175
|
}
|
|
168
176
|
}
|
|
169
177
|
catch (error) {
|
package/dist/hook-session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-session.js","sourceRoot":"","sources":["../src/hook-session.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"hook-session.js","sourceRoot":"","sources":["../src/hook-session.ts"],"names":[],"mappings":"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"}
|
package/dist/hook.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,iBAAiB,qIAAsB,CAAC;AAOrD,UAAU,SAAS;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,UAAU,iBAAiB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAgBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAE3D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAoB9F;AAWD,wBAAgB,sBAAsB,CAAC,QAAQ,GAAE,MAAsB,GAAG,iBAAiB,CAwB1F;AAED,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAgInE"}
|
package/dist/hook.js
CHANGED
|
@@ -6,6 +6,7 @@ exports.deriveAction = deriveAction;
|
|
|
6
6
|
exports.deriveToolOutcome = deriveToolOutcome;
|
|
7
7
|
exports.installPostToolUseHook = installPostToolUseHook;
|
|
8
8
|
exports.runHookCommand = runHookCommand;
|
|
9
|
+
const codex_native_usage_1 = require("./codex-native-usage");
|
|
9
10
|
const index_1 = require("./index");
|
|
10
11
|
const habit_loop_copy_1 = require("./habit-loop-copy");
|
|
11
12
|
const lifecycle_spool_1 = require("./lifecycle-spool");
|
|
@@ -126,10 +127,19 @@ async function runHookCommand(input) {
|
|
|
126
127
|
else {
|
|
127
128
|
event = (0, hook_contract_1.normalizeHookEventPayload)(input);
|
|
128
129
|
}
|
|
130
|
+
const resolvedEnv = identity.environment;
|
|
131
|
+
if (identity.harness === 'codex' && resolvedEnv.apiKey && process.env.MARROW_PASSIVE_TOKEN_USAGE !== 'false') {
|
|
132
|
+
const context = (0, habit_loop_copy_1.modelUsageCaptureContextFromEnv)();
|
|
133
|
+
const supplied = (0, habit_loop_copy_1.extractModelUsageFromUnknown)(event.tool_response, context)
|
|
134
|
+
|| (0, habit_loop_copy_1.extractModelUsageFromUnknown)(event.tool_result, context)
|
|
135
|
+
|| (0, habit_loop_copy_1.extractModelUsageFromUnknown)(event.tool_output, context)
|
|
136
|
+
|| (0, habit_loop_copy_1.extractModelUsageFromUnknown)(event, context);
|
|
137
|
+
if (!supplied)
|
|
138
|
+
await (0, codex_native_usage_1.captureCodexNativeUsage)(event, resolvedEnv.apiKey, (0, index_1.validateBaseUrl)(resolvedEnv.baseUrl || 'https://api.getmarrow.ai'), identity.agent_id);
|
|
139
|
+
}
|
|
129
140
|
if ((0, hook_tool_policy_1.isOfficialMarrowMcpEvent)(event)) {
|
|
130
141
|
return;
|
|
131
142
|
}
|
|
132
|
-
const resolvedEnv = identity.environment;
|
|
133
143
|
const privateLoopPayload = (0, hook_contract_1.privateHookLoopGuardPayload)(event);
|
|
134
144
|
const classified = (0, hook_pre_action_1.classifyTool)(event);
|
|
135
145
|
const sessionId = resolvedEnv.sessionId || getString(event.session_id) || getString(event.conversation_id) || getString(event.task_id)
|
package/dist/hook.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"hook.js","sourceRoot":"","sources":["../src/hook.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
"url": "https://github.com/getmarrow/marrow-mcp",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "3.9.
|
|
9
|
+
"version": "3.9.95",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "@getmarrow/mcp",
|
|
14
|
-
"version": "3.9.
|
|
14
|
+
"version": "3.9.95",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|