@getmarrow/mcp 3.9.73 → 3.9.75
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 +28 -19
- package/dist/cli.js +31 -27
- package/dist/cli.js.map +1 -1
- package/dist/control-state.d.ts +25 -0
- package/dist/control-state.d.ts.map +1 -0
- package/dist/control-state.js +112 -0
- package/dist/control-state.js.map +1 -0
- package/dist/hook-context.d.ts +1 -1
- package/dist/hook-context.d.ts.map +1 -1
- package/dist/hook-context.js +18 -9
- package/dist/hook-context.js.map +1 -1
- package/dist/hook-contract.d.ts +43 -15
- package/dist/hook-contract.d.ts.map +1 -1
- package/dist/hook-contract.js +358 -44
- package/dist/hook-contract.js.map +1 -1
- package/dist/hook-pre-action.d.ts +19 -1
- package/dist/hook-pre-action.d.ts.map +1 -1
- package/dist/hook-pre-action.js +208 -30
- package/dist/hook-pre-action.js.map +1 -1
- package/dist/hook-session.d.ts +1 -1
- package/dist/hook-session.d.ts.map +1 -1
- package/dist/hook-session.js +86 -41
- package/dist/hook-session.js.map +1 -1
- package/dist/hook-tool-policy.d.ts +2 -0
- package/dist/hook-tool-policy.d.ts.map +1 -1
- package/dist/hook-tool-policy.js +23 -2
- package/dist/hook-tool-policy.js.map +1 -1
- package/dist/hook.d.ts +14 -2
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +51 -29
- package/dist/hook.js.map +1 -1
- package/dist/host-capability.d.ts +23 -16
- package/dist/host-capability.d.ts.map +1 -1
- package/dist/host-capability.js +41 -61
- package/dist/host-capability.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +167 -120
- package/dist/index.js.map +1 -1
- package/dist/lifecycle-spool.d.ts +1 -5
- package/dist/lifecycle-spool.d.ts.map +1 -1
- package/dist/lifecycle-spool.js +11 -28
- package/dist/lifecycle-spool.js.map +1 -1
- package/package.json +1 -1
- package/scripts/control-path-canary.cjs +28 -2
- package/server.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-tool-policy.d.ts","sourceRoot":"","sources":["../src/hook-tool-policy.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,GAAG;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAoFF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE5D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"hook-tool-policy.d.ts","sourceRoot":"","sources":["../src/hook-tool-policy.ts"],"names":[],"mappings":"AAAA,KAAK,eAAe,GAAG;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAoFF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE5D;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK/D;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CASxE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAErD;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAKjE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAa9D;AAsBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAiBnE"}
|
package/dist/hook-tool-policy.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.normalizeHookToolName = normalizeHookToolName;
|
|
4
4
|
exports.isOfficialMarrowMcpTool = isOfficialMarrowMcpTool;
|
|
5
|
+
exports.isOfficialMarrowMcpEvent = isOfficialMarrowMcpEvent;
|
|
6
|
+
exports.isMcpHookTool = isMcpHookTool;
|
|
5
7
|
exports.isProtectedShellMutation = isProtectedShellMutation;
|
|
6
8
|
exports.hookToolCommand = hookToolCommand;
|
|
7
9
|
exports.isReadOnlyToolEvent = isReadOnlyToolEvent;
|
|
@@ -82,10 +84,29 @@ function stringValue(value) {
|
|
|
82
84
|
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
83
85
|
}
|
|
84
86
|
function normalizeHookToolName(value) {
|
|
85
|
-
return String(value || '').replace(/^mcp__/, '').trim().toLowerCase();
|
|
87
|
+
return String(value || '').replace(/^mcp__/, '').replace(/^MCP:/i, '').trim().toLowerCase();
|
|
86
88
|
}
|
|
87
89
|
function isOfficialMarrowMcpTool(value) {
|
|
88
|
-
|
|
90
|
+
const tool = String(value || '').trim();
|
|
91
|
+
return /^mcp__marrow__marrow_[a-z0-9_]+$/i.test(tool)
|
|
92
|
+
|| /^MCP:(?:marrow:)?marrow_[a-z0-9_]+$/i.test(tool)
|
|
93
|
+
|| /^mcp_marrow_marrow_[a-z0-9_]+$/i.test(tool);
|
|
94
|
+
}
|
|
95
|
+
function isOfficialMarrowMcpEvent(event) {
|
|
96
|
+
if (isOfficialMarrowMcpTool(event.tool_name))
|
|
97
|
+
return true;
|
|
98
|
+
const tool = String(event.tool_name || '').trim().toLowerCase();
|
|
99
|
+
if (!['use_mcp_tool', 'use_tool', 'mcp', 'mcp_tool'].includes(tool))
|
|
100
|
+
return false;
|
|
101
|
+
const input = asRecord(event.tool_input);
|
|
102
|
+
if (!input)
|
|
103
|
+
return false;
|
|
104
|
+
const server = String(input.serverName ?? input.server_name ?? '').trim().toLowerCase();
|
|
105
|
+
const name = String(input.toolName ?? input.tool_name ?? '').trim();
|
|
106
|
+
return server === 'marrow' && /^marrow_[a-z0-9_]+$/i.test(name);
|
|
107
|
+
}
|
|
108
|
+
function isMcpHookTool(value) {
|
|
109
|
+
return /^(?:mcp__|mcp_|MCP:)/i.test(String(value || '').trim());
|
|
89
110
|
}
|
|
90
111
|
function isProtectedShellMutation(command) {
|
|
91
112
|
const raw = String(command || '');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-tool-policy.js","sourceRoot":"","sources":["../src/hook-tool-policy.ts"],"names":[],"mappings":";;AAuFA,sDAEC;AAED,
|
|
1
|
+
{"version":3,"file":"hook-tool-policy.js","sourceRoot":"","sources":["../src/hook-tool-policy.ts"],"names":[],"mappings":"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"}
|
package/dist/hook.d.ts
CHANGED
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
export declare const AUTO_HOOK_COMMAND
|
|
1
|
+
export declare const AUTO_HOOK_COMMAND: string;
|
|
2
2
|
export declare const AUTO_HOOK_MATCHER = "Bash|Edit|Write|MultiEdit|mcp__(?!marrow__marrow_).*";
|
|
3
3
|
interface HookEvent {
|
|
4
4
|
session_id?: string;
|
|
5
|
+
conversation_id?: string;
|
|
6
|
+
generation_id?: string;
|
|
7
|
+
task_id?: string;
|
|
5
8
|
hook_event_name?: string;
|
|
6
9
|
tool_use_id?: string;
|
|
7
10
|
tool_name?: string;
|
|
8
11
|
tool_input?: unknown;
|
|
9
12
|
tool_response?: unknown;
|
|
10
13
|
tool_result?: unknown;
|
|
14
|
+
tool_output?: unknown;
|
|
11
15
|
error?: unknown;
|
|
16
|
+
error_message?: unknown;
|
|
17
|
+
failure_type?: unknown;
|
|
18
|
+
duration_ms?: unknown;
|
|
19
|
+
success?: unknown;
|
|
12
20
|
is_interrupt?: boolean;
|
|
13
21
|
}
|
|
14
22
|
interface HookInstallResult {
|
|
@@ -17,7 +25,11 @@ interface HookInstallResult {
|
|
|
17
25
|
}
|
|
18
26
|
export declare function shouldSkipAutoLog(event: HookEvent): boolean;
|
|
19
27
|
export declare function deriveAction(event: HookEvent): string | null;
|
|
28
|
+
export declare function deriveToolOutcome(event: HookEvent): {
|
|
29
|
+
success: boolean;
|
|
30
|
+
duration_ms?: number;
|
|
31
|
+
};
|
|
20
32
|
export declare function installPostToolUseHook(startDir?: string): HookInstallResult;
|
|
21
|
-
export declare function runHookCommand(): Promise<void>;
|
|
33
|
+
export declare function runHookCommand(input?: unknown): Promise<void>;
|
|
22
34
|
export {};
|
|
23
35
|
//# sourceMappingURL=hook.d.ts.map
|
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":"AAmBA,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAC5D,eAAO,MAAM,iBAAiB,yDAAsB,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,CA8FnE"}
|
package/dist/hook.js
CHANGED
|
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AUTO_HOOK_MATCHER = exports.AUTO_HOOK_COMMAND = void 0;
|
|
4
4
|
exports.shouldSkipAutoLog = shouldSkipAutoLog;
|
|
5
5
|
exports.deriveAction = deriveAction;
|
|
6
|
+
exports.deriveToolOutcome = deriveToolOutcome;
|
|
6
7
|
exports.installPostToolUseHook = installPostToolUseHook;
|
|
7
8
|
exports.runHookCommand = runHookCommand;
|
|
8
9
|
const index_1 = require("./index");
|
|
9
10
|
const habit_loop_copy_1 = require("./habit-loop-copy");
|
|
10
|
-
const env_1 = require("./env");
|
|
11
11
|
const lifecycle_spool_1 = require("./lifecycle-spool");
|
|
12
12
|
const hook_pre_action_1 = require("./hook-pre-action");
|
|
13
|
+
const control_state_1 = require("./control-state");
|
|
13
14
|
const hook_tool_policy_1 = require("./hook-tool-policy");
|
|
14
15
|
const hook_contract_1 = require("./hook-contract");
|
|
15
16
|
exports.AUTO_HOOK_COMMAND = hook_contract_1.ACTION_RESULT_HOOK_COMMAND;
|
|
@@ -37,22 +38,28 @@ function deriveAction(event) {
|
|
|
37
38
|
const toolName = getString(event.tool_name);
|
|
38
39
|
if (!toolName || shouldSkipAutoLog(event))
|
|
39
40
|
return null;
|
|
40
|
-
if ((0, hook_tool_policy_1.
|
|
41
|
+
if ((0, hook_tool_policy_1.isOfficialMarrowMcpEvent)(event))
|
|
41
42
|
return null;
|
|
42
43
|
return (0, hook_pre_action_1.classifyTool)(event).action;
|
|
43
44
|
}
|
|
44
|
-
function
|
|
45
|
-
const response = event.tool_response ?? event.tool_result;
|
|
45
|
+
function deriveToolOutcome(event) {
|
|
46
|
+
const response = event.tool_output ?? event.tool_response ?? event.tool_result;
|
|
46
47
|
const responseRecord = asRecord(response);
|
|
47
48
|
const errorValue = responseRecord?.error;
|
|
48
49
|
const failed = event.hook_event_name === 'PostToolUseFailure'
|
|
49
50
|
|| event.error != null
|
|
51
|
+
|| event.error_message != null
|
|
52
|
+
|| event.failure_type != null
|
|
53
|
+
|| event.success === false
|
|
50
54
|
|| errorValue !== undefined && errorValue !== null
|
|
51
55
|
|| responseRecord?.is_error === true
|
|
52
56
|
|| responseRecord?.success === false
|
|
53
57
|
|| (typeof responseRecord?.exit_code === 'number' && responseRecord.exit_code !== 0)
|
|
54
58
|
|| /^(?:failed|error|blocked)$/i.test(String(responseRecord?.status || ''));
|
|
55
|
-
|
|
59
|
+
const duration = typeof event.duration_ms === 'number' && Number.isFinite(event.duration_ms)
|
|
60
|
+
? Math.max(0, Math.min(300_000, Math.round(event.duration_ms)))
|
|
61
|
+
: undefined;
|
|
62
|
+
return { success: !failed, ...(duration === undefined ? {} : { duration_ms: duration }) };
|
|
56
63
|
}
|
|
57
64
|
async function readStdin() {
|
|
58
65
|
const chunks = [];
|
|
@@ -82,48 +89,61 @@ function installPostToolUseHook(startDir = process.cwd()) {
|
|
|
82
89
|
installed: success.changed || failure.changed,
|
|
83
90
|
};
|
|
84
91
|
}
|
|
85
|
-
async function runHookCommand() {
|
|
92
|
+
async function runHookCommand(input) {
|
|
93
|
+
const identity = (0, hook_contract_1.resolveNativeHookIdentity)(process.argv[2]);
|
|
86
94
|
if (process.env.MARROW_AUTO_HOOK === 'false') {
|
|
87
|
-
|
|
95
|
+
if (identity.harness === 'gemini')
|
|
96
|
+
process.stdout.write('{}');
|
|
88
97
|
return;
|
|
89
98
|
}
|
|
90
99
|
try {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
100
|
+
if (!(0, control_state_1.readLocalControlState)().enabled) {
|
|
101
|
+
if (identity.harness === 'gemini')
|
|
102
|
+
process.stdout.write('{}');
|
|
94
103
|
return;
|
|
95
104
|
}
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
if (identity.harness === 'gemini')
|
|
108
|
+
process.stdout.write('{}');
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
96
112
|
let event;
|
|
97
|
-
|
|
98
|
-
|
|
113
|
+
if (input === undefined) {
|
|
114
|
+
const raw = (await readStdin()).trim();
|
|
115
|
+
if (!raw)
|
|
116
|
+
return;
|
|
117
|
+
try {
|
|
118
|
+
event = (0, hook_contract_1.normalizeHookEventPayload)(JSON.parse(raw));
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
debug('[marrow-hook] skipped invalid JSON');
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
99
124
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
process.exit(0);
|
|
103
|
-
return;
|
|
125
|
+
else {
|
|
126
|
+
event = (0, hook_contract_1.normalizeHookEventPayload)(input);
|
|
104
127
|
}
|
|
105
128
|
if (shouldSkipAutoLog(event)) {
|
|
106
129
|
debug('[marrow-hook] skipped read-only tool');
|
|
107
|
-
process.exit(0);
|
|
108
130
|
return;
|
|
109
131
|
}
|
|
110
132
|
const classified = (0, hook_pre_action_1.classifyTool)(event);
|
|
111
133
|
const action = deriveAction(event);
|
|
112
134
|
if (!action) {
|
|
113
|
-
process.exit(0);
|
|
114
135
|
return;
|
|
115
136
|
}
|
|
116
|
-
const resolvedEnv =
|
|
137
|
+
const resolvedEnv = identity.environment;
|
|
117
138
|
const apiKey = resolvedEnv.apiKey || '';
|
|
118
139
|
if (!apiKey) {
|
|
119
140
|
debug(`[marrow-hook] skipped missing MARROW_API_KEY. ${resolvedEnv.exactFix}`);
|
|
120
|
-
process.exit(0);
|
|
121
141
|
return;
|
|
122
142
|
}
|
|
123
143
|
const baseUrl = (0, index_1.validateBaseUrl)(resolvedEnv.baseUrl || 'https://api.getmarrow.ai');
|
|
124
|
-
const sessionId = resolvedEnv.sessionId || getString(event.session_id);
|
|
125
|
-
const agentId =
|
|
126
|
-
const success =
|
|
144
|
+
const sessionId = resolvedEnv.sessionId || getString(event.session_id) || getString(event.conversation_id) || getString(event.task_id);
|
|
145
|
+
const agentId = identity.agent_id;
|
|
146
|
+
const { success } = deriveToolOutcome(event);
|
|
127
147
|
const toolName = normalizeToolName(getString(event.tool_name) || 'tool');
|
|
128
148
|
const eventType = toolName === 'bash'
|
|
129
149
|
? success ? 'command_completed' : 'command_failed'
|
|
@@ -135,12 +155,10 @@ async function runHookCommand() {
|
|
|
135
155
|
event: {
|
|
136
156
|
event_id: `posttool-${lifecycleCorrelation}`,
|
|
137
157
|
event_type: eventType,
|
|
138
|
-
|
|
139
|
-
agent_id: agentId,
|
|
158
|
+
...(0, hook_contract_1.clientReportedHookLifecycleIdentity)(identity),
|
|
140
159
|
session_id: sessionId,
|
|
141
|
-
workflow_id: (0, hook_contract_1.stableSessionWorkflowId)(sessionId, event.tool_use_id),
|
|
160
|
+
workflow_id: (0, hook_contract_1.stableSessionWorkflowId)(sessionId, event.generation_id || event.tool_use_id || event.task_id),
|
|
142
161
|
correlation_id: lifecycleCorrelation,
|
|
143
|
-
...(0, hook_contract_1.nativeHookEvidence)('action_result'),
|
|
144
162
|
action,
|
|
145
163
|
target: classified.target,
|
|
146
164
|
surfaces: classified.surfaces,
|
|
@@ -149,9 +167,10 @@ async function runHookCommand() {
|
|
|
149
167
|
outcome_state: 'pending',
|
|
150
168
|
},
|
|
151
169
|
});
|
|
152
|
-
if (process.env.MARROW_PASSIVE_TOKEN_USAGE !== 'false') {
|
|
170
|
+
if (identity.harness !== 'grok' && process.env.MARROW_PASSIVE_TOKEN_USAGE !== 'false') {
|
|
153
171
|
const usage = (0, habit_loop_copy_1.extractModelUsageFromUnknown)(event.tool_response)
|
|
154
172
|
|| (0, habit_loop_copy_1.extractModelUsageFromUnknown)(event.tool_result)
|
|
173
|
+
|| (0, habit_loop_copy_1.extractModelUsageFromUnknown)(event.tool_output)
|
|
155
174
|
|| (0, habit_loop_copy_1.extractModelUsageFromUnknown)(event);
|
|
156
175
|
if (usage && (usage.input_tokens || usage.output_tokens || usage.total_tokens || usage.cached_tokens)) {
|
|
157
176
|
await (0, index_1.marrowModelUsage)(apiKey, baseUrl, {
|
|
@@ -168,6 +187,9 @@ async function runHookCommand() {
|
|
|
168
187
|
const message = err instanceof Error ? err.message : String(err);
|
|
169
188
|
debug(`[marrow-hook] ${message}`);
|
|
170
189
|
}
|
|
171
|
-
|
|
190
|
+
finally {
|
|
191
|
+
if (identity.harness === 'gemini')
|
|
192
|
+
process.stdout.write('{}');
|
|
193
|
+
}
|
|
172
194
|
}
|
|
173
195
|
//# sourceMappingURL=hook.js.map
|
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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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export type MarrowCoverageMode = 'tools_only_on_demand'
|
|
1
|
+
export declare const NATIVE_HOOK_ACTIVITY: readonly ["native_hooks:prompt", "native_hooks:pre_action", "native_hooks:action_result", "native_hooks:session_end"];
|
|
2
|
+
export type MarrowCoverageMode = 'tools_only_on_demand';
|
|
3
3
|
export interface HostCapabilityInput {
|
|
4
4
|
/** Display-only hint supplied at the adapter edge. It never grants coverage. */
|
|
5
5
|
hostLabel?: string;
|
|
6
|
-
/**
|
|
7
|
-
|
|
6
|
+
/** Unattested client activity. It is useful telemetry and never grants coverage. */
|
|
7
|
+
clientSelfReportedActivity?: readonly string[];
|
|
8
8
|
}
|
|
9
9
|
export interface MarrowHostCapability {
|
|
10
10
|
contract_version: '2026-08-16';
|
|
@@ -18,17 +18,24 @@ export interface MarrowHostCapability {
|
|
|
18
18
|
coverage_verified: boolean;
|
|
19
19
|
coverage_scope: string;
|
|
20
20
|
certification: {
|
|
21
|
-
source: '
|
|
21
|
+
source: 'independent_authority_required';
|
|
22
22
|
model_name_is_evidence: false;
|
|
23
23
|
configuration_detection_is_evidence: false;
|
|
24
|
-
|
|
24
|
+
client_self_reports_certify_control: false;
|
|
25
|
+
certified_receipts: string[];
|
|
26
|
+
};
|
|
27
|
+
activity: {
|
|
28
|
+
source: 'client_self_reported';
|
|
29
|
+
reported: string[];
|
|
30
|
+
complete_native_hook_lifecycle_reported: boolean;
|
|
31
|
+
certifies_control: false;
|
|
25
32
|
};
|
|
26
33
|
passive_hooks: {
|
|
27
34
|
provided_by_mcp_transport: false;
|
|
28
|
-
external_host_hook_state: 'unverified' | '
|
|
35
|
+
external_host_hook_state: 'unverified' | 'client_activity_reported';
|
|
29
36
|
observed_by_this_process: false;
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
certified_by_marrow: false;
|
|
38
|
+
client_activity_stages: string[];
|
|
32
39
|
};
|
|
33
40
|
capability_modes: {
|
|
34
41
|
tools_only: {
|
|
@@ -36,23 +43,23 @@ export interface MarrowHostCapability {
|
|
|
36
43
|
scope: 'explicit_mcp_tool_calls';
|
|
37
44
|
};
|
|
38
45
|
native_hooks: {
|
|
39
|
-
state: 'unverified' | '
|
|
40
|
-
scope: '
|
|
46
|
+
state: 'unverified' | 'activity_reported';
|
|
47
|
+
scope: 'client_self_reported_lifecycle_only';
|
|
41
48
|
};
|
|
42
49
|
sdk_passive_runtime: {
|
|
43
|
-
state: 'unverified' | '
|
|
50
|
+
state: 'unverified' | 'activity_reported';
|
|
44
51
|
scope: 'owned_node_process_while_installed';
|
|
45
52
|
};
|
|
46
53
|
governed_runner: {
|
|
47
|
-
state: 'unverified' | '
|
|
54
|
+
state: 'unverified' | 'activity_reported';
|
|
48
55
|
scope: 'wrapped_command_only';
|
|
49
56
|
};
|
|
50
57
|
custom_host: {
|
|
51
|
-
state: 'adapter_required' | '
|
|
52
|
-
scope: '
|
|
58
|
+
state: 'adapter_required' | 'activity_reported';
|
|
59
|
+
scope: 'client_self_reported_event_lifecycle_only';
|
|
53
60
|
};
|
|
54
61
|
};
|
|
55
|
-
always_on_state: 'not_verified'
|
|
62
|
+
always_on_state: 'not_verified';
|
|
56
63
|
exact_next_action: string;
|
|
57
64
|
}
|
|
58
65
|
export declare function resolveHostCapability(input?: HostCapabilityInput): MarrowHostCapability;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-capability.d.ts","sourceRoot":"","sources":["../src/host-capability.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,uHAKvB,CAAC;AAwBX,MAAM,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"host-capability.d.ts","sourceRoot":"","sources":["../src/host-capability.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,uHAKvB,CAAC;AAwBX,MAAM,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oFAAoF;IACpF,0BAA0B,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,oBAAoB;IACnC,gBAAgB,EAAE,YAAY,CAAC;IAC/B,SAAS,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB,EAAE,cAAc,GAAG,kBAAkB,CAAC;IAC1D,8BAA8B,EAAE,KAAK,CAAC;IACtC,eAAe,EAAE,IAAI,CAAC;IACtB,eAAe,EAAE,WAAW,CAAC;IAC7B,YAAY,EAAE,kBAAkB,CAAC;IACjC,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE;QACb,MAAM,EAAE,gCAAgC,CAAC;QACzC,sBAAsB,EAAE,KAAK,CAAC;QAC9B,mCAAmC,EAAE,KAAK,CAAC;QAC3C,mCAAmC,EAAE,KAAK,CAAC;QAC3C,kBAAkB,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;IACF,QAAQ,EAAE;QACR,MAAM,EAAE,sBAAsB,CAAC;QAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,uCAAuC,EAAE,OAAO,CAAC;QACjD,iBAAiB,EAAE,KAAK,CAAC;KAC1B,CAAC;IACF,aAAa,EAAE;QACb,yBAAyB,EAAE,KAAK,CAAC;QACjC,wBAAwB,EAAE,YAAY,GAAG,0BAA0B,CAAC;QACpE,wBAAwB,EAAE,KAAK,CAAC;QAChC,mBAAmB,EAAE,KAAK,CAAC;QAC3B,sBAAsB,EAAE,MAAM,EAAE,CAAC;KAClC,CAAC;IACF,gBAAgB,EAAE;QAChB,UAAU,EAAE;YAAE,KAAK,EAAE,WAAW,CAAC;YAAC,KAAK,EAAE,yBAAyB,CAAA;SAAE,CAAC;QACrE,YAAY,EAAE;YAAE,KAAK,EAAE,YAAY,GAAG,mBAAmB,CAAC;YAAC,KAAK,EAAE,qCAAqC,CAAA;SAAE,CAAC;QAC1G,mBAAmB,EAAE;YAAE,KAAK,EAAE,YAAY,GAAG,mBAAmB,CAAC;YAAC,KAAK,EAAE,oCAAoC,CAAA;SAAE,CAAC;QAChH,eAAe,EAAE;YAAE,KAAK,EAAE,YAAY,GAAG,mBAAmB,CAAC;YAAC,KAAK,EAAE,sBAAsB,CAAA;SAAE,CAAC;QAC9F,WAAW,EAAE;YAAE,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CAAC;YAAC,KAAK,EAAE,2CAA2C,CAAA;SAAE,CAAC;KACtH,CAAC;IACF,eAAe,EAAE,cAAc,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AASD,wBAAgB,qBAAqB,CAAC,KAAK,GAAE,mBAAwB,GAAG,oBAAoB,CAmD3F;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,oBAAoB,GAAG,MAAM,CAQnF"}
|
package/dist/host-capability.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.NATIVE_HOOK_ACTIVITY = void 0;
|
|
4
4
|
exports.resolveHostCapability = resolveHostCapability;
|
|
5
5
|
exports.hostCapabilityInstructions = hostCapabilityInstructions;
|
|
6
|
-
exports.
|
|
6
|
+
exports.NATIVE_HOOK_ACTIVITY = [
|
|
7
7
|
'native_hooks:prompt',
|
|
8
8
|
'native_hooks:pre_action',
|
|
9
9
|
'native_hooks:action_result',
|
|
@@ -20,14 +20,14 @@ const KNOWN_HOST_LABELS = new Set([
|
|
|
20
20
|
'qwen',
|
|
21
21
|
'deepseek',
|
|
22
22
|
]);
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
...exports.
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
const SDK_ACTIVE_ACTIVITY = 'sdk_passive_runtime:active';
|
|
24
|
+
const GOVERNED_RUNNER_ACTIVITY = 'governed_runner:wrapped_command';
|
|
25
|
+
const EVENT_ADAPTER_ACTIVITY = 'event_adapter:lifecycle';
|
|
26
|
+
const KNOWN_CLIENT_ACTIVITY = new Set([
|
|
27
|
+
...exports.NATIVE_HOOK_ACTIVITY,
|
|
28
|
+
SDK_ACTIVE_ACTIVITY,
|
|
29
|
+
GOVERNED_RUNNER_ACTIVITY,
|
|
30
|
+
EVENT_ADAPTER_ACTIVITY,
|
|
31
31
|
]);
|
|
32
32
|
function normalizeHostLabel(value) {
|
|
33
33
|
const normalized = String(value || '').trim().toLowerCase();
|
|
@@ -37,41 +37,13 @@ function normalizeHostLabel(value) {
|
|
|
37
37
|
}
|
|
38
38
|
function resolveHostCapability(input = {}) {
|
|
39
39
|
const identity = normalizeHostLabel(input.hostLabel);
|
|
40
|
-
const
|
|
41
|
-
.filter((
|
|
42
|
-
const has = (
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
let currentMode = 'tools_only_on_demand';
|
|
48
|
-
let coverageScope = 'explicit_mcp_tool_calls';
|
|
49
|
-
let alwaysOnState = 'not_verified';
|
|
50
|
-
let exactNextAction = 'Use Marrow MCP tools on demand. A custom host needs a bounded event adapter for passive lifecycle coverage; claim coverage only after Marrow observes its receipts.';
|
|
51
|
-
if (nativeHooksVerified) {
|
|
52
|
-
currentMode = 'verified_native_hooks';
|
|
53
|
-
coverageScope = 'observed_hook_lifecycle_only';
|
|
54
|
-
alwaysOnState = 'verified_passive';
|
|
55
|
-
exactNextAction = 'Keep native hooks enabled and monitor observed prompt, pre-action, action-result, and session-end receipts.';
|
|
56
|
-
}
|
|
57
|
-
else if (sdkVerified) {
|
|
58
|
-
currentMode = 'owned_sdk_process';
|
|
59
|
-
coverageScope = 'owned_node_process_while_installed';
|
|
60
|
-
alwaysOnState = 'bounded_process';
|
|
61
|
-
exactNextAction = 'Treat passive coverage as limited to this owned Node process while createPassiveRuntime().install() remains active.';
|
|
62
|
-
}
|
|
63
|
-
else if (runnerVerified) {
|
|
64
|
-
currentMode = 'governed_wrapped_command';
|
|
65
|
-
coverageScope = 'wrapped_command_only';
|
|
66
|
-
alwaysOnState = 'bounded_command';
|
|
67
|
-
exactNextAction = 'Treat governance coverage as limited to the command launched through the governed runner.';
|
|
68
|
-
}
|
|
69
|
-
else if (adapterVerified) {
|
|
70
|
-
currentMode = 'custom_event_adapter';
|
|
71
|
-
coverageScope = 'observed_event_adapter_lifecycle_only';
|
|
72
|
-
alwaysOnState = 'bounded_event_adapter';
|
|
73
|
-
exactNextAction = 'Treat coverage as limited to lifecycle events emitted by the verified custom event adapter.';
|
|
74
|
-
}
|
|
40
|
+
const reported = [...new Set(input.clientSelfReportedActivity || [])]
|
|
41
|
+
.filter((activity) => typeof activity === 'string' && KNOWN_CLIENT_ACTIVITY.has(activity));
|
|
42
|
+
const has = (activity) => reported.includes(activity);
|
|
43
|
+
const completeNativeHookActivity = exports.NATIVE_HOOK_ACTIVITY.every(has);
|
|
44
|
+
const sdkActivity = has(SDK_ACTIVE_ACTIVITY);
|
|
45
|
+
const runnerActivity = has(GOVERNED_RUNNER_ACTIVITY);
|
|
46
|
+
const adapterActivity = has(EVENT_ADAPTER_ACTIVITY);
|
|
75
47
|
return {
|
|
76
48
|
contract_version: '2026-08-16',
|
|
77
49
|
transport: 'mcp_stdio',
|
|
@@ -80,38 +52,46 @@ function resolveHostCapability(input = {}) {
|
|
|
80
52
|
host_identity_affects_coverage: false,
|
|
81
53
|
tools_available: true,
|
|
82
54
|
tool_invocation: 'on_demand',
|
|
83
|
-
current_mode:
|
|
84
|
-
coverage_verified:
|
|
85
|
-
coverage_scope:
|
|
55
|
+
current_mode: 'tools_only_on_demand',
|
|
56
|
+
coverage_verified: false,
|
|
57
|
+
coverage_scope: 'explicit_mcp_tool_calls',
|
|
86
58
|
certification: {
|
|
87
|
-
source: '
|
|
59
|
+
source: 'independent_authority_required',
|
|
88
60
|
model_name_is_evidence: false,
|
|
89
61
|
configuration_detection_is_evidence: false,
|
|
90
|
-
|
|
62
|
+
client_self_reports_certify_control: false,
|
|
63
|
+
certified_receipts: [],
|
|
64
|
+
},
|
|
65
|
+
activity: {
|
|
66
|
+
source: 'client_self_reported',
|
|
67
|
+
reported,
|
|
68
|
+
complete_native_hook_lifecycle_reported: completeNativeHookActivity,
|
|
69
|
+
certifies_control: false,
|
|
91
70
|
},
|
|
92
71
|
passive_hooks: {
|
|
93
72
|
provided_by_mcp_transport: false,
|
|
94
|
-
external_host_hook_state:
|
|
73
|
+
external_host_hook_state: completeNativeHookActivity ? 'client_activity_reported' : 'unverified',
|
|
95
74
|
observed_by_this_process: false,
|
|
96
|
-
|
|
97
|
-
|
|
75
|
+
certified_by_marrow: false,
|
|
76
|
+
client_activity_stages: [...exports.NATIVE_HOOK_ACTIVITY],
|
|
98
77
|
},
|
|
99
78
|
capability_modes: {
|
|
100
79
|
tools_only: { state: 'available', scope: 'explicit_mcp_tool_calls' },
|
|
101
|
-
native_hooks: { state:
|
|
102
|
-
sdk_passive_runtime: { state:
|
|
103
|
-
governed_runner: { state:
|
|
104
|
-
custom_host: { state:
|
|
80
|
+
native_hooks: { state: completeNativeHookActivity ? 'activity_reported' : 'unverified', scope: 'client_self_reported_lifecycle_only' },
|
|
81
|
+
sdk_passive_runtime: { state: sdkActivity ? 'activity_reported' : 'unverified', scope: 'owned_node_process_while_installed' },
|
|
82
|
+
governed_runner: { state: runnerActivity ? 'activity_reported' : 'unverified', scope: 'wrapped_command_only' },
|
|
83
|
+
custom_host: { state: adapterActivity ? 'activity_reported' : 'adapter_required', scope: 'client_self_reported_event_lifecycle_only' },
|
|
105
84
|
},
|
|
106
|
-
always_on_state:
|
|
107
|
-
exact_next_action:
|
|
85
|
+
always_on_state: 'not_verified',
|
|
86
|
+
exact_next_action: 'Use MCP tools on demand. For consequential CLI actions, use the governed wrapper: npx @getmarrow/install run --agent <agent-id> -- -- <command>. Custom hosts need a bounded event adapter; client activity alone does not certify control.',
|
|
108
87
|
};
|
|
109
88
|
}
|
|
110
89
|
function hostCapabilityInstructions(capability) {
|
|
111
90
|
return [
|
|
112
91
|
`Current coverage: ${capability.current_mode} (${capability.coverage_scope}).`,
|
|
113
|
-
'MCP tools are on demand.
|
|
114
|
-
'A model name, host label, installed configuration,
|
|
92
|
+
'MCP tools are on demand. Configured native hooks provide cooperative client-reported control and lifecycle evidence only; createPassiveRuntime().install() is limited to its owned Node process; the governed wrapper is limited to its wrapped command; a custom host needs a bounded event adapter.',
|
|
93
|
+
'A model name, host label, API key, public hook entrypoint, installed configuration, detected hook file, or client-self-reported lifecycle activity never certifies coverage or enforcement.',
|
|
94
|
+
'Codex, Grok, and Gemini use configured native hooks only after restart and host hook review. The governed wrapper remains an explicit bounded fallback: npx @getmarrow/install run --agent <agent-id> -- -- <command>.',
|
|
115
95
|
capability.exact_next_action,
|
|
116
96
|
].join(' ');
|
|
117
97
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-capability.js","sourceRoot":"","sources":["../src/host-capability.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"host-capability.js","sourceRoot":"","sources":["../src/host-capability.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -72,6 +72,7 @@ export declare function marrowCommit(apiKey: string, baseUrl: string, params: {
|
|
|
72
72
|
runtime_gate?: MarrowAgentRuntimeResult | null;
|
|
73
73
|
}>;
|
|
74
74
|
export declare function marrowModelUsage(apiKey: string, baseUrl: string, input: MarrowModelUsageInput, sessionId?: string, agentId?: string): Promise<MarrowModelUsageResult>;
|
|
75
|
+
export declare const MARROW_AUTO_RESPONSE_BUDGET_MAX_MS = 8000;
|
|
75
76
|
export type MarrowAutoResult = {
|
|
76
77
|
operation_id: string;
|
|
77
78
|
decision_id: string | null;
|
|
@@ -88,8 +89,11 @@ export type MarrowAutoResult = {
|
|
|
88
89
|
};
|
|
89
90
|
};
|
|
90
91
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
92
|
+
* Bounded outcome logging helper for tool hooks and simple integrations.
|
|
93
|
+
* One outer invocation logs intent and, when an outcome is supplied, continues
|
|
94
|
+
* resumable server phases so the outcome normally closes in-band. If the
|
|
95
|
+
* caller's deadline is reached, the same operation ID resumes without opening
|
|
96
|
+
* another decision.
|
|
93
97
|
*/
|
|
94
98
|
export declare function marrowAuto(apiKey: string, baseUrl: string, params: {
|
|
95
99
|
action: string;
|