@haven_ai/mcp 0.6.0-alpha.0 → 0.8.0-alpha.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/index.d.cts CHANGED
@@ -66,24 +66,30 @@ declare function loadCredentials(source?: string | HavenCredentialSource | undef
66
66
  * which is where URL-hardening would matter.)
67
67
  */
68
68
 
69
- type HavenMcpToolName = 'haven_send' | 'haven_pay_mcp_tool' | 'haven_quote_x402' | 'haven_pay_x402_quote' | 'haven_pay_x402' | 'haven_resume_x402_payment' | 'haven_get_payment_status' | 'haven_get_resume_state' | 'haven_get_agent' | 'haven_get_allowances' | 'haven_list_receipts' | 'haven_verify_receipt' | 'haven_sweep_delegate' | 'haven_discover_tools' | 'haven_submit_catalog_entry' | 'haven_open_task_budget' | 'haven_close_task_budget' | 'haven_submit';
69
+ type HavenMcpToolName = 'haven_send' | 'haven_pay_mcp_tool' | 'haven_quote_x402' | 'haven_pay_x402_quote' | 'haven_pay_x402' | 'haven_resume_x402_payment' | 'haven_get_payment_status' | 'haven_get_resume_state' | 'haven_get_agent' | 'haven_get_allowances' | 'haven_list_receipts' | 'haven_verify_receipt' | 'haven_sweep_delegate' | 'haven_discover_tools' | 'haven_submit_catalog_entry' | 'haven_open_task_budget' | 'haven_close_task_budget' | 'haven_get_task_budget' | 'haven_submit';
70
70
  declare const toolSchemas: {
71
71
  readonly haven_send: {
72
72
  readonly asset: z.ZodEnum<["ETH", "USDC"]>;
73
73
  readonly recipient: z.ZodString;
74
74
  readonly amount: z.ZodString;
75
75
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
76
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
76
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
77
77
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
78
78
  /** #3329: spend against an open task budget instead of the agent's period budget. */
79
79
  readonly task_budget_id: z.ZodOptional<z.ZodString>;
80
+ /**
81
+ * #3330: spend against an open sub-budget this agent HOLDS (it is the
82
+ * sub-agent B) instead of the agent's own budget. Mutually exclusive
83
+ * with task_budget_id — the backend refuses a body naming both.
84
+ */
85
+ readonly sub_budget_id: z.ZodOptional<z.ZodString>;
80
86
  };
81
87
  readonly haven_pay_mcp_tool: {
82
88
  readonly merchant_url: z.ZodString;
83
89
  readonly tool_name: z.ZodString;
84
90
  readonly arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
85
91
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
86
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
92
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
87
93
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
88
94
  };
89
95
  readonly haven_quote_x402: {
@@ -92,16 +98,18 @@ declare const toolSchemas: {
92
98
  readonly headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
93
99
  readonly body: z.ZodOptional<z.ZodString>;
94
100
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
95
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
101
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
96
102
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
97
103
  };
98
104
  readonly haven_pay_x402_quote: {
99
105
  readonly quote: z.ZodUnknown;
100
106
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
101
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
107
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
102
108
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
103
109
  /** #3329: spend against an open task budget instead of the agent's period budget. */
104
110
  readonly task_budget_id: z.ZodOptional<z.ZodString>;
111
+ /** #3330: spend against an open sub-budget this agent holds (it is sub-agent B). Mutually exclusive with task_budget_id. */
112
+ readonly sub_budget_id: z.ZodOptional<z.ZodString>;
105
113
  };
106
114
  readonly haven_pay_x402: {
107
115
  readonly url: z.ZodString;
@@ -109,10 +117,12 @@ declare const toolSchemas: {
109
117
  readonly headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
110
118
  readonly body: z.ZodOptional<z.ZodString>;
111
119
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
112
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
120
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
113
121
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
114
122
  /** #3329: spend against an open task budget instead of the agent's period budget. */
115
123
  readonly task_budget_id: z.ZodOptional<z.ZodString>;
124
+ /** #3330: spend against an open sub-budget this agent holds (it is sub-agent B). Mutually exclusive with task_budget_id. */
125
+ readonly sub_budget_id: z.ZodOptional<z.ZodString>;
116
126
  };
117
127
  readonly haven_resume_x402_payment: {
118
128
  readonly payment_id: z.ZodOptional<z.ZodString>;
@@ -141,6 +151,8 @@ declare const toolSchemas: {
141
151
  readonly limit: z.ZodOptional<z.ZodNumber>;
142
152
  /** #3128: the previous page's next_cursor (a receipt id). */
143
153
  readonly cursor: z.ZodOptional<z.ZodString>;
154
+ /** #3423: drop each row's payload echoes; the default shape is unchanged. */
155
+ readonly compact: z.ZodOptional<z.ZodBoolean>;
144
156
  };
145
157
  readonly haven_verify_receipt: {
146
158
  readonly receipt: z.ZodUnknown;
@@ -155,8 +167,12 @@ declare const toolSchemas: {
155
167
  readonly haven_close_task_budget: {
156
168
  readonly task_budget_id: z.ZodString;
157
169
  };
170
+ readonly haven_get_task_budget: {
171
+ readonly task_budget_id: z.ZodString;
172
+ };
158
173
  readonly haven_submit: {
159
174
  readonly task_budget_id: z.ZodOptional<z.ZodString>;
175
+ readonly sub_budget_id: z.ZodOptional<z.ZodString>;
160
176
  readonly payment_id: z.ZodOptional<z.ZodString>;
161
177
  readonly signature: z.ZodString;
162
178
  };
@@ -183,7 +199,9 @@ interface ToolSuccess<T> {
183
199
  /**
184
200
  * #3303: the backend's `client_update` hint when this package is behind the
185
201
  * version the deployment recommends (`required: false`) or below its
186
- * minimum (`required: true`). Carries the exact command that updates it.
202
+ * minimum (`required: true`). `upgrade_command` starts the update: for the
203
+ * connector-installed packages it is the connector doctor, which prints the
204
+ * repair line to run next (#3412).
187
205
  */
188
206
  client_update?: HavenClientUpdate;
189
207
  }
@@ -275,6 +293,20 @@ interface ConsentInput {
275
293
  /** Chain the agent operates on. */
276
294
  chainId?: number;
277
295
  toolNames: readonly HavenMcpToolName[];
296
+ /**
297
+ * #3410: every amount here is ATOMIC (smallest on-chain units, e.g. 6
298
+ * decimals for USDC — `1000000` is one USDC, never "1000000 tokens"). Both
299
+ * producers agree: the live read takes `onchain.amount`, and the seed takes
300
+ * the credential file's `allowance_amount` — both atomic. `renderConsentBlock`
301
+ * converts for display through the token registry and falls back to an
302
+ * explicit `(atomic units)` label when the token is unknown; the consent
303
+ * hash deliberately covers the atomic string, so a display change alone
304
+ * never re-prompts the operator.
305
+ *
306
+ * Known limitation (#3410, stated not fixed): the seed is setup-time data.
307
+ * If the wallet owner edits the budget after setup AND the live read then
308
+ * fails, the screen shows the stale seed budget as if it were current.
309
+ */
278
310
  allowanceSummary: readonly {
279
311
  token: string;
280
312
  amount: string;
@@ -315,7 +347,12 @@ interface CredentialIdentitySeed {
315
347
  delegateAddress?: string;
316
348
  /** Chain from the credential file, used as a fallback. */
317
349
  chainId?: number;
318
- /** Intended agent budget from the setup flow, used before on-chain approval is visible. */
350
+ /**
351
+ * Intended agent budget from the setup flow, used before on-chain approval
352
+ * is visible. #3410: every amount is ATOMIC — the connector writes the
353
+ * credential file's `allowance_amount` straight from the setup response's
354
+ * `agent_budget`, and the backend puts `budget_atomic` there.
355
+ */
319
356
  allowanceSummary?: readonly {
320
357
  token: string;
321
358
  amount: string;
@@ -374,7 +411,7 @@ declare function createHavenMcpServer(options?: HavenMcpServerOptions): Promise<
374
411
  * `agent_tool_invocations` rows are always attributed to the right tool.
375
412
  */
376
413
  declare const MCP_NAME = "@haven_ai/mcp";
377
- declare const MCP_VERSION = "0.6.0-alpha.0";
414
+ declare const MCP_VERSION = "0.8.0-alpha.0";
378
415
  /**
379
416
  * Refuse to start on an unsupported Node (#1161).
380
417
  *
@@ -387,4 +424,39 @@ declare const MCP_VERSION = "0.6.0-alpha.0";
387
424
  declare function assertSupportedNodeVersion(nodeVersion?: string): void;
388
425
  declare function runStdioServer(options?: HavenMcpServerOptions): Promise<void>;
389
426
 
390
- export { type ConsentDecision, type ConsentInput, type ConsentOptions, type CredentialIdentitySeed, type HavenCredentialAllowance, type HavenCredentialFile, type HavenCredentialSource, type HavenMcpServerOptions, type HavenMcpToolName, MCP_NAME, MCP_VERSION, type ToolFailure, type ToolPayload, type ToolSuccess, assertSupportedNodeVersion, computeConsentHash, consentInputFromClient, createHavenClient, createHavenMcpServer, createToolHandlers, ensureConsent, loadCredentials, registeredToolNames, renderConsentBlock, resolveHavenClient, runStdioServer, toolDescriptions, toolSchemas };
427
+ /**
428
+ * The first `@haven_ai/signer` release whose `haven_sign` accepts the
429
+ * `task_budget_id` argument form (#3329). ONE constant on this surface, with
430
+ * exactly one job: the value `signer_compatibility.min_signer_version`
431
+ * reports on the two task-budget handoffs below. The hosted package exports
432
+ * `TASK_BUDGET_MIN_SIGNER_VERSION` with the same value, tied to the same
433
+ * release record (`client-releases.data.ts`) by its cross-package pin.
434
+ */
435
+ declare const TASK_BUDGET_MIN_SIGNER_VERSION = "0.6.0-alpha.0";
436
+ /** The capability key both runtimes report in `signer_compatibility.signer_capability`. */
437
+ declare const SIGNER_CAPABILITY_KEY = "haven/signer-compatibility";
438
+ /**
439
+ * The recovery notice every result that hands off to
440
+ * `haven_sign { task_budget_id }` carries — the local twin of the hosted
441
+ * `taskSignerCompatibilityNotice()`. Field-for-field the same shape:
442
+ *
443
+ * - `task_sign_context_version` — from the SDK's single source;
444
+ * - `min_signer_version` — the constant above;
445
+ * - `signer_capability` — the existing capability key;
446
+ * - `check` / `fallback` — the recovery sentence as prose and as data: the
447
+ * trigger substring (the generic refusal every pre-0.6.0 signer answers,
448
+ * both historic lines begin with it), then close the pending budget, update
449
+ * via the connector doctor and its printed repair line, reopen. No relay
450
+ * fallback exists for this signing context (an `eip712_delegation` payload
451
+ * the 0.5.x unbound allowlist refuses and a 0.4.x signer must not be
452
+ * steered into), so none is named.
453
+ */
454
+ declare function taskSignerCompatibilityNotice(): {
455
+ task_sign_context_version: number;
456
+ min_signer_version: string;
457
+ signer_capability: string;
458
+ check: string;
459
+ fallback: string;
460
+ };
461
+
462
+ export { type ConsentDecision, type ConsentInput, type ConsentOptions, type CredentialIdentitySeed, type HavenCredentialAllowance, type HavenCredentialFile, type HavenCredentialSource, type HavenMcpServerOptions, type HavenMcpToolName, MCP_NAME, MCP_VERSION, SIGNER_CAPABILITY_KEY, TASK_BUDGET_MIN_SIGNER_VERSION, type ToolFailure, type ToolPayload, type ToolSuccess, assertSupportedNodeVersion, computeConsentHash, consentInputFromClient, createHavenClient, createHavenMcpServer, createToolHandlers, ensureConsent, loadCredentials, registeredToolNames, renderConsentBlock, resolveHavenClient, runStdioServer, taskSignerCompatibilityNotice, toolDescriptions, toolSchemas };
package/dist/index.d.ts CHANGED
@@ -66,24 +66,30 @@ declare function loadCredentials(source?: string | HavenCredentialSource | undef
66
66
  * which is where URL-hardening would matter.)
67
67
  */
68
68
 
69
- type HavenMcpToolName = 'haven_send' | 'haven_pay_mcp_tool' | 'haven_quote_x402' | 'haven_pay_x402_quote' | 'haven_pay_x402' | 'haven_resume_x402_payment' | 'haven_get_payment_status' | 'haven_get_resume_state' | 'haven_get_agent' | 'haven_get_allowances' | 'haven_list_receipts' | 'haven_verify_receipt' | 'haven_sweep_delegate' | 'haven_discover_tools' | 'haven_submit_catalog_entry' | 'haven_open_task_budget' | 'haven_close_task_budget' | 'haven_submit';
69
+ type HavenMcpToolName = 'haven_send' | 'haven_pay_mcp_tool' | 'haven_quote_x402' | 'haven_pay_x402_quote' | 'haven_pay_x402' | 'haven_resume_x402_payment' | 'haven_get_payment_status' | 'haven_get_resume_state' | 'haven_get_agent' | 'haven_get_allowances' | 'haven_list_receipts' | 'haven_verify_receipt' | 'haven_sweep_delegate' | 'haven_discover_tools' | 'haven_submit_catalog_entry' | 'haven_open_task_budget' | 'haven_close_task_budget' | 'haven_get_task_budget' | 'haven_submit';
70
70
  declare const toolSchemas: {
71
71
  readonly haven_send: {
72
72
  readonly asset: z.ZodEnum<["ETH", "USDC"]>;
73
73
  readonly recipient: z.ZodString;
74
74
  readonly amount: z.ZodString;
75
75
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
76
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
76
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
77
77
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
78
78
  /** #3329: spend against an open task budget instead of the agent's period budget. */
79
79
  readonly task_budget_id: z.ZodOptional<z.ZodString>;
80
+ /**
81
+ * #3330: spend against an open sub-budget this agent HOLDS (it is the
82
+ * sub-agent B) instead of the agent's own budget. Mutually exclusive
83
+ * with task_budget_id — the backend refuses a body naming both.
84
+ */
85
+ readonly sub_budget_id: z.ZodOptional<z.ZodString>;
80
86
  };
81
87
  readonly haven_pay_mcp_tool: {
82
88
  readonly merchant_url: z.ZodString;
83
89
  readonly tool_name: z.ZodString;
84
90
  readonly arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
85
91
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
86
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
92
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
87
93
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
88
94
  };
89
95
  readonly haven_quote_x402: {
@@ -92,16 +98,18 @@ declare const toolSchemas: {
92
98
  readonly headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
93
99
  readonly body: z.ZodOptional<z.ZodString>;
94
100
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
95
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
101
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
96
102
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
97
103
  };
98
104
  readonly haven_pay_x402_quote: {
99
105
  readonly quote: z.ZodUnknown;
100
106
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
101
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
107
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
102
108
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
103
109
  /** #3329: spend against an open task budget instead of the agent's period budget. */
104
110
  readonly task_budget_id: z.ZodOptional<z.ZodString>;
111
+ /** #3330: spend against an open sub-budget this agent holds (it is sub-agent B). Mutually exclusive with task_budget_id. */
112
+ readonly sub_budget_id: z.ZodOptional<z.ZodString>;
105
113
  };
106
114
  readonly haven_pay_x402: {
107
115
  readonly url: z.ZodString;
@@ -109,10 +117,12 @@ declare const toolSchemas: {
109
117
  readonly headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
110
118
  readonly body: z.ZodOptional<z.ZodString>;
111
119
  readonly idempotency_key: z.ZodOptional<z.ZodString>;
112
- /** Legacy spelling, accepted during the #2366 window. Warns; do not use. */
120
+ /** REMOVED (#3411): declared only so the resolver can refuse it by name, never accepted. */
113
121
  readonly idempotencyKey: z.ZodOptional<z.ZodString>;
114
122
  /** #3329: spend against an open task budget instead of the agent's period budget. */
115
123
  readonly task_budget_id: z.ZodOptional<z.ZodString>;
124
+ /** #3330: spend against an open sub-budget this agent holds (it is sub-agent B). Mutually exclusive with task_budget_id. */
125
+ readonly sub_budget_id: z.ZodOptional<z.ZodString>;
116
126
  };
117
127
  readonly haven_resume_x402_payment: {
118
128
  readonly payment_id: z.ZodOptional<z.ZodString>;
@@ -141,6 +151,8 @@ declare const toolSchemas: {
141
151
  readonly limit: z.ZodOptional<z.ZodNumber>;
142
152
  /** #3128: the previous page's next_cursor (a receipt id). */
143
153
  readonly cursor: z.ZodOptional<z.ZodString>;
154
+ /** #3423: drop each row's payload echoes; the default shape is unchanged. */
155
+ readonly compact: z.ZodOptional<z.ZodBoolean>;
144
156
  };
145
157
  readonly haven_verify_receipt: {
146
158
  readonly receipt: z.ZodUnknown;
@@ -155,8 +167,12 @@ declare const toolSchemas: {
155
167
  readonly haven_close_task_budget: {
156
168
  readonly task_budget_id: z.ZodString;
157
169
  };
170
+ readonly haven_get_task_budget: {
171
+ readonly task_budget_id: z.ZodString;
172
+ };
158
173
  readonly haven_submit: {
159
174
  readonly task_budget_id: z.ZodOptional<z.ZodString>;
175
+ readonly sub_budget_id: z.ZodOptional<z.ZodString>;
160
176
  readonly payment_id: z.ZodOptional<z.ZodString>;
161
177
  readonly signature: z.ZodString;
162
178
  };
@@ -183,7 +199,9 @@ interface ToolSuccess<T> {
183
199
  /**
184
200
  * #3303: the backend's `client_update` hint when this package is behind the
185
201
  * version the deployment recommends (`required: false`) or below its
186
- * minimum (`required: true`). Carries the exact command that updates it.
202
+ * minimum (`required: true`). `upgrade_command` starts the update: for the
203
+ * connector-installed packages it is the connector doctor, which prints the
204
+ * repair line to run next (#3412).
187
205
  */
188
206
  client_update?: HavenClientUpdate;
189
207
  }
@@ -275,6 +293,20 @@ interface ConsentInput {
275
293
  /** Chain the agent operates on. */
276
294
  chainId?: number;
277
295
  toolNames: readonly HavenMcpToolName[];
296
+ /**
297
+ * #3410: every amount here is ATOMIC (smallest on-chain units, e.g. 6
298
+ * decimals for USDC — `1000000` is one USDC, never "1000000 tokens"). Both
299
+ * producers agree: the live read takes `onchain.amount`, and the seed takes
300
+ * the credential file's `allowance_amount` — both atomic. `renderConsentBlock`
301
+ * converts for display through the token registry and falls back to an
302
+ * explicit `(atomic units)` label when the token is unknown; the consent
303
+ * hash deliberately covers the atomic string, so a display change alone
304
+ * never re-prompts the operator.
305
+ *
306
+ * Known limitation (#3410, stated not fixed): the seed is setup-time data.
307
+ * If the wallet owner edits the budget after setup AND the live read then
308
+ * fails, the screen shows the stale seed budget as if it were current.
309
+ */
278
310
  allowanceSummary: readonly {
279
311
  token: string;
280
312
  amount: string;
@@ -315,7 +347,12 @@ interface CredentialIdentitySeed {
315
347
  delegateAddress?: string;
316
348
  /** Chain from the credential file, used as a fallback. */
317
349
  chainId?: number;
318
- /** Intended agent budget from the setup flow, used before on-chain approval is visible. */
350
+ /**
351
+ * Intended agent budget from the setup flow, used before on-chain approval
352
+ * is visible. #3410: every amount is ATOMIC — the connector writes the
353
+ * credential file's `allowance_amount` straight from the setup response's
354
+ * `agent_budget`, and the backend puts `budget_atomic` there.
355
+ */
319
356
  allowanceSummary?: readonly {
320
357
  token: string;
321
358
  amount: string;
@@ -374,7 +411,7 @@ declare function createHavenMcpServer(options?: HavenMcpServerOptions): Promise<
374
411
  * `agent_tool_invocations` rows are always attributed to the right tool.
375
412
  */
376
413
  declare const MCP_NAME = "@haven_ai/mcp";
377
- declare const MCP_VERSION = "0.6.0-alpha.0";
414
+ declare const MCP_VERSION = "0.8.0-alpha.0";
378
415
  /**
379
416
  * Refuse to start on an unsupported Node (#1161).
380
417
  *
@@ -387,4 +424,39 @@ declare const MCP_VERSION = "0.6.0-alpha.0";
387
424
  declare function assertSupportedNodeVersion(nodeVersion?: string): void;
388
425
  declare function runStdioServer(options?: HavenMcpServerOptions): Promise<void>;
389
426
 
390
- export { type ConsentDecision, type ConsentInput, type ConsentOptions, type CredentialIdentitySeed, type HavenCredentialAllowance, type HavenCredentialFile, type HavenCredentialSource, type HavenMcpServerOptions, type HavenMcpToolName, MCP_NAME, MCP_VERSION, type ToolFailure, type ToolPayload, type ToolSuccess, assertSupportedNodeVersion, computeConsentHash, consentInputFromClient, createHavenClient, createHavenMcpServer, createToolHandlers, ensureConsent, loadCredentials, registeredToolNames, renderConsentBlock, resolveHavenClient, runStdioServer, toolDescriptions, toolSchemas };
427
+ /**
428
+ * The first `@haven_ai/signer` release whose `haven_sign` accepts the
429
+ * `task_budget_id` argument form (#3329). ONE constant on this surface, with
430
+ * exactly one job: the value `signer_compatibility.min_signer_version`
431
+ * reports on the two task-budget handoffs below. The hosted package exports
432
+ * `TASK_BUDGET_MIN_SIGNER_VERSION` with the same value, tied to the same
433
+ * release record (`client-releases.data.ts`) by its cross-package pin.
434
+ */
435
+ declare const TASK_BUDGET_MIN_SIGNER_VERSION = "0.6.0-alpha.0";
436
+ /** The capability key both runtimes report in `signer_compatibility.signer_capability`. */
437
+ declare const SIGNER_CAPABILITY_KEY = "haven/signer-compatibility";
438
+ /**
439
+ * The recovery notice every result that hands off to
440
+ * `haven_sign { task_budget_id }` carries — the local twin of the hosted
441
+ * `taskSignerCompatibilityNotice()`. Field-for-field the same shape:
442
+ *
443
+ * - `task_sign_context_version` — from the SDK's single source;
444
+ * - `min_signer_version` — the constant above;
445
+ * - `signer_capability` — the existing capability key;
446
+ * - `check` / `fallback` — the recovery sentence as prose and as data: the
447
+ * trigger substring (the generic refusal every pre-0.6.0 signer answers,
448
+ * both historic lines begin with it), then close the pending budget, update
449
+ * via the connector doctor and its printed repair line, reopen. No relay
450
+ * fallback exists for this signing context (an `eip712_delegation` payload
451
+ * the 0.5.x unbound allowlist refuses and a 0.4.x signer must not be
452
+ * steered into), so none is named.
453
+ */
454
+ declare function taskSignerCompatibilityNotice(): {
455
+ task_sign_context_version: number;
456
+ min_signer_version: string;
457
+ signer_capability: string;
458
+ check: string;
459
+ fallback: string;
460
+ };
461
+
462
+ export { type ConsentDecision, type ConsentInput, type ConsentOptions, type CredentialIdentitySeed, type HavenCredentialAllowance, type HavenCredentialFile, type HavenCredentialSource, type HavenMcpServerOptions, type HavenMcpToolName, MCP_NAME, MCP_VERSION, SIGNER_CAPABILITY_KEY, TASK_BUDGET_MIN_SIGNER_VERSION, type ToolFailure, type ToolPayload, type ToolSuccess, assertSupportedNodeVersion, computeConsentHash, consentInputFromClient, createHavenClient, createHavenMcpServer, createToolHandlers, ensureConsent, loadCredentials, registeredToolNames, renderConsentBlock, resolveHavenClient, runStdioServer, taskSignerCompatibilityNotice, toolDescriptions, toolSchemas };