stitchkit 0.103.13 → 0.104.1
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/CHANGELOG.md +120 -0
- package/darwin-native.cjs +1 -3
- package/dist/agent-runtime/store-conformance-lifecycle.d.ts +10 -10
- package/dist/agent-runtime/store-conformance-support.d.ts +5 -5
- package/dist/application/directory-inbox-accept.d.ts +13 -0
- package/dist/application/directory-inbox-accept.d.ts.map +1 -0
- package/dist/application/directory-inbox-contract.d.ts +42 -5
- package/dist/application/directory-inbox-contract.d.ts.map +1 -1
- package/dist/application/directory-inbox-delivery.d.ts +14 -0
- package/dist/application/directory-inbox-delivery.d.ts.map +1 -0
- package/dist/application/directory-inbox-files.d.ts +28 -0
- package/dist/application/directory-inbox-files.d.ts.map +1 -0
- package/dist/application/directory-inbox-state.d.ts +14 -0
- package/dist/application/directory-inbox-state.d.ts.map +1 -0
- package/dist/application/directory-inbox.d.ts +2 -1
- package/dist/application/directory-inbox.d.ts.map +1 -1
- package/dist/application/file-state-store.d.ts +2 -8
- package/dist/application/file-state-store.d.ts.map +1 -1
- package/dist/application/state-store.d.ts +6 -1
- package/dist/application/state-store.d.ts.map +1 -1
- package/dist/browser/client-arguments.d.ts +4 -0
- package/dist/browser/client-arguments.d.ts.map +1 -0
- package/dist/browser/client-executors.d.ts.map +1 -1
- package/dist/browser/client.d.ts.map +1 -1
- package/dist/browser/contract-stream.d.ts.map +1 -1
- package/dist/browser/http.d.ts +2 -1
- package/dist/browser/http.d.ts.map +1 -1
- package/dist/browser/native-fetch.d.ts +8 -0
- package/dist/browser/native-fetch.d.ts.map +1 -0
- package/dist/contract/errors.d.ts +16 -12
- package/dist/contract/errors.d.ts.map +1 -1
- package/dist/contract/normalize.d.ts +5 -1
- package/dist/contract/normalize.d.ts.map +1 -1
- package/dist/contract/stream.d.ts +1 -0
- package/dist/contract/stream.d.ts.map +1 -1
- package/dist/entrypoints/agent-runtime/browser.js +3 -3
- package/dist/entrypoints/agent-runtime/coding-tools.js +6 -6
- package/dist/entrypoints/agent-runtime/harness-tools.js +8 -8
- package/dist/entrypoints/agent-runtime/harness.js +11 -11
- package/dist/entrypoints/agent-runtime/realtime.js +3 -3
- package/dist/entrypoints/agent-runtime/sandbox.js +6 -6
- package/dist/entrypoints/agent-runtime.js +13 -13
- package/dist/entrypoints/application/diagnostic-journal.js +1 -1
- package/dist/entrypoints/application/directory-inbox.js +424 -119
- package/dist/entrypoints/application/grammy.js +1 -1
- package/dist/entrypoints/application.d.ts +2 -2
- package/dist/entrypoints/application.d.ts.map +1 -1
- package/dist/entrypoints/application.js +7 -3
- package/dist/entrypoints/cli.d.ts +2 -0
- package/dist/entrypoints/cli.d.ts.map +1 -1
- package/dist/entrypoints/cli.js +757 -136
- package/dist/entrypoints/contract.js +3 -3
- package/dist/entrypoints/files/packaging.d.ts +3 -0
- package/dist/entrypoints/files/packaging.d.ts.map +1 -0
- package/dist/entrypoints/files/packaging.js +133 -0
- package/dist/entrypoints/files.js +10 -107
- package/dist/entrypoints/index.js +7 -7
- package/dist/entrypoints/node.js +8 -8
- package/dist/entrypoints/observability.js +2 -2
- package/dist/entrypoints/react.js +1 -1
- package/dist/entrypoints/remote.js +19 -6
- package/dist/entrypoints/server.d.ts +1 -1
- package/dist/entrypoints/server.d.ts.map +1 -1
- package/dist/entrypoints/server.js +23 -17
- package/dist/entrypoints/telegram.d.ts +1 -0
- package/dist/entrypoints/telegram.d.ts.map +1 -1
- package/dist/entrypoints/telegram.js +214 -98
- package/dist/entrypoints/testing.js +7 -7
- package/dist/entrypoints/tools/connections.d.ts +2 -2
- package/dist/entrypoints/tools/connections.d.ts.map +1 -1
- package/dist/entrypoints/tools/connections.js +427 -294
- package/dist/entrypoints/tools/invoker.js +6 -6
- package/dist/entrypoints/tools/mcp.d.ts +12 -0
- package/dist/entrypoints/tools/mcp.d.ts.map +1 -0
- package/dist/entrypoints/tools/mcp.js +45 -0
- package/dist/entrypoints/tools.d.ts +1 -0
- package/dist/entrypoints/tools.d.ts.map +1 -1
- package/dist/entrypoints/tools.js +82 -1147
- package/dist/entrypoints/tracking.js +1 -1
- package/dist/files/boundary.d.ts +2 -8
- package/dist/files/boundary.d.ts.map +1 -1
- package/dist/files/file-io.d.ts +0 -5
- package/dist/files/file-io.d.ts.map +1 -1
- package/dist/files/native-packaging-layout.d.ts +12 -0
- package/dist/files/native-packaging-layout.d.ts.map +1 -0
- package/dist/files/native-packaging.d.ts +72 -0
- package/dist/files/native-packaging.d.ts.map +1 -0
- package/dist/files/read.d.ts +2 -2
- package/dist/files/read.d.ts.map +1 -1
- package/dist/index-1a6jtnd9.js +88 -0
- package/dist/index-269zqj8m.js +77 -0
- package/dist/{index-r34mvse1.js → index-27a2pj09.js} +1 -1
- package/dist/{index-r956rndn.js → index-2hyavjjj.js} +3 -3
- package/dist/{index-m2xqkv55.js → index-2vnh05w4.js} +83 -14
- package/dist/{index-pw99k9h5.js → index-43p08g7t.js} +1 -1
- package/dist/{index-xwq9j1sf.js → index-4e0ah203.js} +9 -7
- package/dist/{index-qapzv4p5.js → index-5z6jn897.js} +1 -1
- package/dist/{index-ahvsksw5.js → index-6d9xaxw1.js} +1 -1
- package/dist/{index-8zfsgar0.js → index-6drst9sg.js} +11 -5
- package/dist/{index-x87j7csh.js → index-77nxk6ay.js} +2 -2
- package/dist/{index-dnn9z96q.js → index-a0zzh8ak.js} +3 -3
- package/dist/{index-kmpzj1cq.js → index-a3wma1hk.js} +1 -1
- package/dist/{index-j8aw2c0e.js → index-bakgedh8.js} +35 -7
- package/dist/index-bhb950qs.js +1145 -0
- package/dist/{index-tgzhq07n.js → index-cvda079a.js} +1 -1
- package/dist/{index-n2gre124.js → index-fa4wg312.js} +4 -4
- package/dist/{index-zp4jpkp0.js → index-fk18k56k.js} +2 -2
- package/dist/{index-afjvjyck.js → index-g2j7pnak.js} +2 -134
- package/dist/index-g95fk660.js +116 -0
- package/dist/{index-r5c4fedv.js → index-h2fhjqy7.js} +2 -1
- package/dist/{index-sybedc8b.js → index-hbd32c6a.js} +23 -94
- package/dist/{index-fyphpknh.js → index-hp9d77wk.js} +1 -1
- package/dist/index-jd470k6q.js +109 -0
- package/dist/{index-b2bz0kdm.js → index-kb8styz3.js} +4 -3
- package/dist/{index-0c419yx7.js → index-kemm0ej5.js} +12 -9
- package/dist/{index-db2spkv1.js → index-ptn0g0gj.js} +3 -3
- package/dist/{index-w575evhq.js → index-r4r70zmh.js} +1 -1
- package/dist/{index-12m2v2a9.js → index-s4evrmp5.js} +1 -1
- package/dist/{index-1khy8y7n.js → index-t1sr4aks.js} +3 -3
- package/dist/{index-45tdvqa3.js → index-wh0ecvyk.js} +1 -1
- package/dist/{index-n53mswt3.js → index-x928baz2.js} +8 -1
- package/dist/index-yk4g8805.js +133 -0
- package/dist/{index-ygkka6zn.js → index-ywppsaby.js} +28 -5
- package/dist/{index-9853ymwb.js → index-za6j7nwy.js} +18 -4
- package/dist/internal/bounded-file-read.d.ts +41 -0
- package/dist/internal/bounded-file-read.d.ts.map +1 -0
- package/dist/internal/exclusive-lock.d.ts +2 -0
- package/dist/internal/exclusive-lock.d.ts.map +1 -1
- package/dist/internal/with-exclusive-lock.d.ts +4 -2
- package/dist/internal/with-exclusive-lock.d.ts.map +1 -1
- package/dist/telegram/broadcast-delivery.d.ts +23 -0
- package/dist/telegram/broadcast-delivery.d.ts.map +1 -0
- package/dist/telegram/broadcast-failure.d.ts +22 -0
- package/dist/telegram/broadcast-failure.d.ts.map +1 -0
- package/dist/telegram/broadcast-state.d.ts +6 -3
- package/dist/telegram/broadcast-state.d.ts.map +1 -1
- package/dist/telegram/broadcast.d.ts +10 -5
- package/dist/telegram/broadcast.d.ts.map +1 -1
- package/dist/tools/cli/format.d.ts.map +1 -1
- package/dist/tools/cli/invoke.d.ts +2 -2
- package/dist/tools/cli/invoke.d.ts.map +1 -1
- package/dist/tools/cli/publication-assets.d.ts +10 -0
- package/dist/tools/cli/publication-assets.d.ts.map +1 -0
- package/dist/tools/cli/publication-contract.d.ts +75 -0
- package/dist/tools/cli/publication-contract.d.ts.map +1 -0
- package/dist/tools/cli/publication-control.d.ts +4 -0
- package/dist/tools/cli/publication-control.d.ts.map +1 -0
- package/dist/tools/cli/publication-storage.d.ts +32 -0
- package/dist/tools/cli/publication-storage.d.ts.map +1 -0
- package/dist/tools/cli/publication.d.ts +35 -0
- package/dist/tools/cli/publication.d.ts.map +1 -0
- package/dist/tools/cli/update.d.ts.map +1 -1
- package/dist/tools/connections/define.d.ts.map +1 -1
- package/dist/tools/connections/error-projection.d.ts +4 -0
- package/dist/tools/connections/error-projection.d.ts.map +1 -0
- package/dist/tools/connections/errors.d.ts +24 -8
- package/dist/tools/connections/errors.d.ts.map +1 -1
- package/dist/tools/connections/limits.d.ts +11 -31
- package/dist/tools/connections/limits.d.ts.map +1 -1
- package/dist/tools/connections/mcp-client.d.ts +6 -4
- package/dist/tools/connections/mcp-client.d.ts.map +1 -1
- package/dist/tools/connections/mcp.d.ts.map +1 -1
- package/dist/tools/connections/openapi.d.ts.map +1 -1
- package/dist/tools/connections/operation-limits.d.ts +25 -0
- package/dist/tools/connections/operation-limits.d.ts.map +1 -0
- package/dist/tools/connections/sse-frames.d.ts +11 -2
- package/dist/tools/connections/sse-frames.d.ts.map +1 -1
- package/dist/tools/connections/sse-session.d.ts +15 -2
- package/dist/tools/connections/sse-session.d.ts.map +1 -1
- package/dist/tools/connections/types.d.ts +19 -1
- package/dist/tools/connections/types.d.ts.map +1 -1
- package/dist/tools/execute-result.d.ts.map +1 -1
- package/dist/tools/execute.d.ts.map +1 -1
- package/dist/tools/internal/observe-hook.d.ts +3 -0
- package/dist/tools/internal/observe-hook.d.ts.map +1 -0
- package/dist/tools/internal/surface-projector.d.ts +2 -1
- package/dist/tools/internal/surface-projector.d.ts.map +1 -1
- package/dist/tools/mcp/mount.d.ts +2 -2
- package/dist/tools/mcp/mount.d.ts.map +1 -1
- package/dist/tools/mcp/prepare.d.ts +4 -5
- package/dist/tools/mcp/prepare.d.ts.map +1 -1
- package/dist/tools/mcp/register.d.ts +4 -1
- package/dist/tools/mcp/register.d.ts.map +1 -1
- package/dist/tools/mcp/runtime-tools.d.ts.map +1 -1
- package/dist/tools/remote.d.ts.map +1 -1
- package/dist/tools/runtime-tool-execution.d.ts +65 -0
- package/dist/tools/runtime-tool-execution.d.ts.map +1 -0
- package/dist/tools/runtime-tool-mcp.d.ts +27 -0
- package/dist/tools/runtime-tool-mcp.d.ts.map +1 -0
- package/dist/tools/runtime-tool.d.ts +9 -60
- package/dist/tools/runtime-tool.d.ts.map +1 -1
- package/dist/tools/surface.d.ts +12 -14
- package/dist/tools/surface.d.ts.map +1 -1
- package/llms/application.2.txt +221 -44
- package/llms/application.3.txt +3 -1
- package/llms/application.txt +1 -1
- package/llms/cli.2.txt +144 -1
- package/llms/cli.txt +123 -104
- package/llms/contract.txt +1 -1
- package/llms/files-packaging.txt +27 -0
- package/llms/process.txt +63 -1
- package/llms/server.4.txt +4 -1
- package/llms/server.5.txt +1 -0
- package/llms/stitchkit.2.txt +14 -0
- package/llms/stitchkit.txt +6 -4
- package/llms/telegram.txt +64 -2
- package/llms/tools-connections.txt +3 -0
- package/llms/tools-mcp.txt +29 -0
- package/llms/tools.2.txt +59 -0
- package/llms/tools.3.txt +1 -0
- package/llms/tools.txt +11 -52
- package/llms/upgrading-0.37.0-0.44.0.txt +444 -0
- package/llms/{upgrading-0.44.0-0.60.0.txt → upgrading-0.44.0-0.61.0.txt} +140 -271
- package/llms/{upgrading-0.61.0-0.74.0.txt → upgrading-0.62.0-0.80.0.txt} +217 -140
- package/llms/{upgrading-0.75.0-0.103.0.txt → upgrading-0.81.0-0.104.0.txt} +154 -217
- package/llms/upgrading.txt +4 -4
- package/llms-full.txt +745 -60
- package/llms.txt +14 -12
- package/native-assets.json +8 -0
- package/package.json +12 -3
- package/dist/index-wykebpn9.js +0 -221
- package/llms/upgrading-0.37.0.txt +0 -176
- package/dist/{index-69nvze1q.js → index-pptyv13k.js} +3 -3
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* a script it takes the process's signal; run inside a live application it
|
|
14
14
|
* takes the application's, and admission is the caller's to hold around it.
|
|
15
15
|
*/
|
|
16
|
+
import type { TelegramBroadcastFailure } from './broadcast-failure.js';
|
|
16
17
|
import { type TelegramBroadcastRecipient } from './broadcast-state.js';
|
|
17
|
-
import { type TelegramSendFailure } from './send-failure.js';
|
|
18
18
|
export type { TelegramBroadcastOutcome, TelegramBroadcastRecipient } from './broadcast-state.js';
|
|
19
19
|
export interface TelegramBroadcastSend {
|
|
20
20
|
readonly recipient: TelegramBroadcastRecipient;
|
|
@@ -37,6 +37,10 @@ export interface TelegramBroadcastConfig {
|
|
|
37
37
|
readonly ratePerSecond?: number;
|
|
38
38
|
/** Tries of one recipient on a retryable refusal before it is `failed`. Default 5. */
|
|
39
39
|
readonly maxAttempts?: number;
|
|
40
|
+
/** Provider waits above this budget halt without an early retry. Default 60 s. */
|
|
41
|
+
readonly maxRetryDelayMs?: number;
|
|
42
|
+
/** Retry variants certify that the attempt did not apply an external effect. */
|
|
43
|
+
readonly classify?: (error: unknown) => TelegramBroadcastFailure;
|
|
40
44
|
/** Count what would be sent and send nothing; no state is written. */
|
|
41
45
|
readonly dryRun?: boolean;
|
|
42
46
|
/** Stops between sends — the send in flight is finished and recorded first. */
|
|
@@ -45,14 +49,15 @@ export interface TelegramBroadcastConfig {
|
|
|
45
49
|
readonly onProgress?: (report: TelegramBroadcastReport) => void;
|
|
46
50
|
/** Default 10 000. */
|
|
47
51
|
readonly progressEveryMs?: number;
|
|
48
|
-
readonly sleep?: (milliseconds: number) => Promise<void>;
|
|
52
|
+
readonly sleep?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
|
|
49
53
|
readonly now?: () => number;
|
|
50
54
|
}
|
|
51
55
|
/**
|
|
52
56
|
* - `finished` — nobody is left.
|
|
53
57
|
* - `stopped` — the signal stopped it; run the same name again to continue.
|
|
54
58
|
* - `halted` — the message itself was refused (`message-invalid`) or Telegram
|
|
55
|
-
*
|
|
59
|
+
* requested a wait outside the budget, or a send outcome was ambiguous.
|
|
60
|
+
* An ambiguous recipient stays uncertain and is never sent again.
|
|
56
61
|
* - `dry-run` — counted, not sent.
|
|
57
62
|
*/
|
|
58
63
|
export type TelegramBroadcastRunOutcome = 'finished' | 'stopped' | 'halted' | 'dry-run';
|
|
@@ -65,11 +70,11 @@ export interface TelegramBroadcastReport {
|
|
|
65
70
|
readonly unreachable: number;
|
|
66
71
|
/** Refused for a reason about neither the recipient nor the message, or retries ran out. */
|
|
67
72
|
readonly failed: number;
|
|
68
|
-
/** A send
|
|
73
|
+
/** A send whose external outcome is unknown, including a crash — never repeated. */
|
|
69
74
|
readonly uncertain: number;
|
|
70
75
|
readonly pending: number;
|
|
71
76
|
/** Why a `halted` run stopped. */
|
|
72
|
-
readonly halt?:
|
|
77
|
+
readonly halt?: TelegramBroadcastFailure;
|
|
73
78
|
}
|
|
74
79
|
export declare function runTelegramBroadcast(config: TelegramBroadcastConfig): Promise<TelegramBroadcastReport>;
|
|
75
80
|
/** What the standard sender delivers: a text, or a copy of a prepared message with its media. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/telegram/broadcast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"broadcast.d.ts","sourceRoot":"","sources":["../../src/telegram/broadcast.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,sDAAsD;AACtD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD,sDAAsD;AACtD,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAiBhC,CAAC;AAEF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,wEAAwE;IACxE,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED;;;;GAIG;AACH;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,WAAW,GAAG,MAAM,CAY/E;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,WAAW,GAChB,MAAM,CAeR"}
|
|
@@ -35,7 +35,7 @@ import type { ServiceDef, StitchLogger } from '../../server/types.js';
|
|
|
35
35
|
import type { ErrorHintFn, ToolCallHooks, ToolLifecycle } from '../execute-hooks.js';
|
|
36
36
|
import { type ToolResult } from '../execute-result.js';
|
|
37
37
|
import { type MountableTool } from '../mount.js';
|
|
38
|
-
import type {
|
|
38
|
+
import type { RuntimeToolExecution } from '../runtime-tool-execution.js';
|
|
39
39
|
import { type CliCommandDefinition } from './command.js';
|
|
40
40
|
import { type ExitCodeMap } from './format.js';
|
|
41
41
|
import { type CliCommandPresentation, type CliPresentationPolicyConfig } from './policy.js';
|
|
@@ -51,7 +51,7 @@ export interface CliInvokerConfig<TAuth = unknown, TContext extends Record<strin
|
|
|
51
51
|
/** Contract services exposed as commands — may depend on the resolved identity. */
|
|
52
52
|
services?: CliSurfaceSource<TAuth, ServiceDef>;
|
|
53
53
|
/** Pathless managed operations. CLI exposure always requires `transports: ['CLI']`. */
|
|
54
|
-
runtimeTools?: CliSurfaceSource<TAuth,
|
|
54
|
+
runtimeTools?: CliSurfaceSource<TAuth, RuntimeToolExecution>;
|
|
55
55
|
/** CLI-only executable commands, dispatched before the managed surface. */
|
|
56
56
|
commands?: readonly CliCommandDefinition[];
|
|
57
57
|
auth?: TAuth | Promise<TAuth>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,KAAK,UAAU,EAA4C,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/invoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReadableStream as NodeReadableStream } from 'node:stream/web';
|
|
2
|
+
import type { CliBuildAsset } from './manifest.js';
|
|
3
|
+
/** Fixed-size blocks keep a one-byte-per-chunk source inside the byte memory budget. */
|
|
4
|
+
export declare function collectCliBytes(source: Uint8Array | ReadableStream<unknown> | NodeReadableStream<unknown>, maxBytes: number, signal?: AbortSignal): Promise<Uint8Array>;
|
|
5
|
+
export declare function gzipCliAsset(bytes: Uint8Array, maxBytes: number, signal: AbortSignal): Promise<Uint8Array>;
|
|
6
|
+
export declare function decodeCliAsset(transferred: Uint8Array, asset: Pick<CliBuildAsset, 'compression' | 'size' | 'sha256'>, maxBytes: number, signal?: AbortSignal): Promise<{
|
|
7
|
+
bytes: Uint8Array;
|
|
8
|
+
sha256: string;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=publication-assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publication-assets.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/publication-assets.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,wFAAwF;AACxF,wBAAsB,eAAe,CACnC,MAAM,EAAE,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,EAC1E,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,CA2DrB;AAmBD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC,CAErB;AAED,wBAAsB,cAAc,CAClC,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC,EAC7D,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBhD"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type CliBuildStamp, type CliBuildTarget } from './manifest.js';
|
|
3
|
+
import type { CliSigningKey, CliTrustRoot } from './signature.js';
|
|
4
|
+
export declare const PublicationTargetSchema: z.ZodObject<{
|
|
5
|
+
platform: z.ZodString;
|
|
6
|
+
arch: z.ZodString;
|
|
7
|
+
}, z.core.$strip>;
|
|
8
|
+
export declare const PublicationVersionSchema: z.ZodString;
|
|
9
|
+
declare const limitsSchema: z.ZodObject<{
|
|
10
|
+
maxTargets: z.ZodDefault<z.ZodInt>;
|
|
11
|
+
maxManifestBytes: z.ZodDefault<z.ZodInt>;
|
|
12
|
+
maxAssetBytes: z.ZodDefault<z.ZodInt>;
|
|
13
|
+
maxCompressedBytes: z.ZodDefault<z.ZodInt>;
|
|
14
|
+
maxDirectoryEntries: z.ZodDefault<z.ZodInt>;
|
|
15
|
+
maxStoredVersions: z.ZodDefault<z.ZodInt>;
|
|
16
|
+
lockTimeoutMs: z.ZodDefault<z.ZodInt>;
|
|
17
|
+
timeoutMs: z.ZodDefault<z.ZodInt>;
|
|
18
|
+
}, z.core.$strip>;
|
|
19
|
+
declare const dataSchema: z.ZodObject<{
|
|
20
|
+
name: z.ZodString;
|
|
21
|
+
version: z.ZodString;
|
|
22
|
+
commit: z.ZodString;
|
|
23
|
+
storageRoot: z.ZodString;
|
|
24
|
+
baseUrl: z.ZodURL;
|
|
25
|
+
targets: z.ZodArray<z.ZodObject<{
|
|
26
|
+
platform: z.ZodString;
|
|
27
|
+
arch: z.ZodString;
|
|
28
|
+
}, z.core.$strip>>;
|
|
29
|
+
limits: z.ZodPrefault<z.ZodObject<{
|
|
30
|
+
maxTargets: z.ZodDefault<z.ZodInt>;
|
|
31
|
+
maxManifestBytes: z.ZodDefault<z.ZodInt>;
|
|
32
|
+
maxAssetBytes: z.ZodDefault<z.ZodInt>;
|
|
33
|
+
maxCompressedBytes: z.ZodDefault<z.ZodInt>;
|
|
34
|
+
maxDirectoryEntries: z.ZodDefault<z.ZodInt>;
|
|
35
|
+
maxStoredVersions: z.ZodDefault<z.ZodInt>;
|
|
36
|
+
lockTimeoutMs: z.ZodDefault<z.ZodInt>;
|
|
37
|
+
timeoutMs: z.ZodDefault<z.ZodInt>;
|
|
38
|
+
}, z.core.$strip>>;
|
|
39
|
+
retention: z.ZodDefault<z.ZodInt>;
|
|
40
|
+
}, z.core.$strip>;
|
|
41
|
+
declare const phaseSchema: z.ZodEnum<{
|
|
42
|
+
build: "build";
|
|
43
|
+
commit: "commit";
|
|
44
|
+
prepare: "prepare";
|
|
45
|
+
promote: "promote";
|
|
46
|
+
}>;
|
|
47
|
+
export type CliPublicationPhase = z.infer<typeof phaseSchema>;
|
|
48
|
+
export type CliPublicationOptions = Omit<z.input<typeof dataSchema>, 'limits' | 'targets'> & {
|
|
49
|
+
targets: readonly CliBuildTarget[];
|
|
50
|
+
limits?: z.input<typeof limitsSchema>;
|
|
51
|
+
/** App-owned admission must validate the same source snapshot on every phase. */
|
|
52
|
+
admit(input: {
|
|
53
|
+
phase: CliPublicationPhase;
|
|
54
|
+
identity: Readonly<Pick<z.infer<typeof dataSchema>, 'name' | 'version' | 'commit'>>;
|
|
55
|
+
signal: AbortSignal;
|
|
56
|
+
}): void | Promise<void>;
|
|
57
|
+
/** The helper owns paths. Builders receive one common immutable stamp. */
|
|
58
|
+
build(input: {
|
|
59
|
+
target: Readonly<CliBuildTarget>;
|
|
60
|
+
stamp: Readonly<CliBuildStamp>;
|
|
61
|
+
signal: AbortSignal;
|
|
62
|
+
}): Uint8Array | ReadableStream<Uint8Array> | Promise<Uint8Array | ReadableStream<Uint8Array>>;
|
|
63
|
+
signal?: AbortSignal;
|
|
64
|
+
signing?: {
|
|
65
|
+
keyId: string;
|
|
66
|
+
privateKey: CliSigningKey;
|
|
67
|
+
};
|
|
68
|
+
trust?: CliTrustRoot;
|
|
69
|
+
};
|
|
70
|
+
export type PublicationData = z.infer<typeof dataSchema>;
|
|
71
|
+
export declare function publicationData(options: CliPublicationOptions): PublicationData;
|
|
72
|
+
export declare function assetFilename(name: string, target: CliBuildTarget): string;
|
|
73
|
+
export declare function assetUrl(baseUrl: string, version: string, filename: string): string;
|
|
74
|
+
export {};
|
|
75
|
+
//# sourceMappingURL=publication-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publication-contract.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/publication-contract.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAK/D,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AACH,eAAO,MAAM,wBAAwB,aAiBmB,CAAC;AACzD,QAAA,MAAM,YAAY;;;;;;;;;iBAShB,CAAC;AACH,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;iBAsBd,CAAC;AACH,QAAA,MAAM,WAAW;;;;;EAAoD,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAC9D,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,GAAG;IAC3F,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;IACtC,iFAAiF;IACjF,KAAK,CAAC,KAAK,EAAE;QACX,KAAK,EAAE,mBAAmB,CAAC;QAC3B,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC;QACpF,MAAM,EAAE,WAAW,CAAC;KACrB,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,0EAA0E;IAC1E,KAAK,CAAC,KAAK,EAAE;QACX,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;QACjC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/B,MAAM,EAAE,WAAW,CAAC;KACrB,GACG,UAAU,GACV,cAAc,CAAC,UAAU,CAAC,GAC1B,OAAO,CAAC,UAAU,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,aAAa,CAAA;KAAE,CAAC;IACvD,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEzD,wBAAgB,eAAe,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,CAc/E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAE1E;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKnF"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** A deadline cancels waits and blocks late promotion; trusted callbacks own their external effects. */
|
|
2
|
+
export declare function waitForPublication<T>(operation: Promise<T>, signal: AbortSignal): Promise<T>;
|
|
3
|
+
export declare function withPublicationDeadline<T>(timeoutMs: number, caller: AbortSignal | undefined, body: (signal: AbortSignal) => Promise<T>): Promise<T>;
|
|
4
|
+
//# sourceMappingURL=publication-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publication-control.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/publication-control.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAuB5F;AAED,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,GACxC,OAAO,CAAC,CAAC,CAAC,CAeZ"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ManagedFileBoundary } from '../../files/boundary.js';
|
|
2
|
+
import { type CliBuildManifest } from './manifest.js';
|
|
3
|
+
import { type PublicationData } from './publication-contract.js';
|
|
4
|
+
export interface PublicationManifest {
|
|
5
|
+
manifest: CliBuildManifest;
|
|
6
|
+
bytes: Uint8Array;
|
|
7
|
+
}
|
|
8
|
+
export interface OwnedVersion extends PublicationManifest {
|
|
9
|
+
directory: string;
|
|
10
|
+
}
|
|
11
|
+
export interface PublicationStorage {
|
|
12
|
+
root: string;
|
|
13
|
+
files: ManagedFileBoundary;
|
|
14
|
+
assertRoot(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
export declare function directoryGeneration(path: string): Promise<{
|
|
17
|
+
dev: number;
|
|
18
|
+
ino: number;
|
|
19
|
+
}>;
|
|
20
|
+
export declare function assertDirectory(path: string, generation: {
|
|
21
|
+
dev: number;
|
|
22
|
+
ino: number;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
export declare function bindPublicationStorage(data: PublicationData, signal: AbortSignal): Promise<PublicationStorage>;
|
|
25
|
+
export declare function directoryNames(path: string, maxEntries: number, signal: AbortSignal): Promise<string[]>;
|
|
26
|
+
export declare function readPublicationManifest(storage: PublicationStorage, path: string, data: PublicationData, signal: AbortSignal): Promise<PublicationManifest | undefined>;
|
|
27
|
+
export declare function verifyPublicationVersion(storage: PublicationStorage, record: PublicationManifest, data: PublicationData, signal: AbortSignal, exactTargets: boolean): Promise<void>;
|
|
28
|
+
export declare function publicationHistory(storage: PublicationStorage, data: PublicationData, signal: AbortSignal): Promise<OwnedVersion[]>;
|
|
29
|
+
export declare function syncPublicationDirectory(path: string): Promise<void>;
|
|
30
|
+
/** Only a fully verified, unchanged publisher-owned directory is removable. */
|
|
31
|
+
export declare function removePublicationVersion(storage: PublicationStorage, version: OwnedVersion, data: PublicationData, signal: AbortSignal): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=publication-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publication-storage.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/publication-storage.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,gBAAgB,EAA0B,MAAM,YAAY,CAAC;AAE3E,OAAO,EAGL,KAAK,eAAe,EAGrB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,UAAU,CAAC;CACnB;AACD,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,SAAS,EAAE,MAAM,CAAC;CACnB;AACD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,mBAAmB,CAAC;IAC3B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAKvC;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACvC,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA0B7B;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAcnB;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAiB1C;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,mBAAmB,EAC3B,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,WAAW,EACnB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,IAAI,CAAC,CA4Df;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC,CA0BzB;AAED,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1E;AAED,+EAA+E;AAC/E,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,eAAe,EACrB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { type CliPublicationOptions } from './publication-contract.js';
|
|
3
|
+
export type { CliPublicationOptions, CliPublicationPhase } from './publication-contract.js';
|
|
4
|
+
declare const resultSchema: z.ZodObject<{
|
|
5
|
+
outcome: z.ZodEnum<{
|
|
6
|
+
existing: "existing";
|
|
7
|
+
published: "published";
|
|
8
|
+
}>;
|
|
9
|
+
manifest: z.ZodObject<{
|
|
10
|
+
name: z.ZodString;
|
|
11
|
+
version: z.ZodString;
|
|
12
|
+
commit: z.ZodString;
|
|
13
|
+
builtAt: z.ZodISODateTime;
|
|
14
|
+
assets: z.ZodArray<z.ZodObject<{
|
|
15
|
+
platform: z.ZodString;
|
|
16
|
+
arch: z.ZodString;
|
|
17
|
+
url: z.ZodURL;
|
|
18
|
+
compression: z.ZodDefault<z.ZodEnum<{
|
|
19
|
+
gzip: "gzip";
|
|
20
|
+
none: "none";
|
|
21
|
+
}>>;
|
|
22
|
+
size: z.ZodInt;
|
|
23
|
+
sha256: z.ZodString;
|
|
24
|
+
}, z.core.$strip>>;
|
|
25
|
+
signature: z.ZodOptional<z.ZodObject<{
|
|
26
|
+
algorithm: z.ZodLiteral<"ed25519">;
|
|
27
|
+
keyId: z.ZodString;
|
|
28
|
+
signature: z.ZodString;
|
|
29
|
+
}, z.core.$strip>>;
|
|
30
|
+
}, z.core.$strip>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
export type CliPublicationResult = z.infer<typeof resultSchema>;
|
|
33
|
+
/** Publish in trusted application-owned storage; a complete version is immutable and the public pointer moves last. */
|
|
34
|
+
export declare function publishCli(options: CliPublicationOptions): Promise<CliPublicationResult>;
|
|
35
|
+
//# sourceMappingURL=publication.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publication.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/publication.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,OAAO,EAGL,KAAK,qBAAqB,EAI3B,MAAM,wBAAwB,CAAC;AAmBhC,YAAY,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAEzF,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGhB,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AA2ShE,uHAAuH;AACvH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAU/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/tools/cli/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/define.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/define.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,SAAS,CAAC;AAEjB,iDAAiD;AACjD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,yBAAyB,GAChC,mBAAmB,CAKrB;AAED,8CAA8C;AAC9C,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAM1F"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AppError } from '../../contract/errors.js';
|
|
2
|
+
/** Only fixed diagnostic fields cross the tool boundary; the runner retains the raw cause. */
|
|
3
|
+
export declare function connectionToolError(error: unknown): AppError | undefined;
|
|
4
|
+
//# sourceMappingURL=error-projection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-projection.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/error-projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA0C,MAAM,uBAAuB,CAAC;AAUzF,8FAA8F;AAC9F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CA0GxE"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import type { ConnectionOperation, ConnectionPhase } from './types.js';
|
|
2
|
+
/** Fixed operation diagnostics accepted by typed connection failure constructors. */
|
|
3
|
+
export interface ConnectionFailureContext {
|
|
4
|
+
operation?: ConnectionOperation;
|
|
5
|
+
phase?: ConnectionPhase;
|
|
6
|
+
observedReadBytes?: number;
|
|
7
|
+
}
|
|
1
8
|
/**
|
|
2
9
|
* Typed failures of the external-connection surface.
|
|
3
10
|
*
|
|
@@ -11,14 +18,18 @@
|
|
|
11
18
|
export declare class ConnectionAuthorizationRequiredError extends Error {
|
|
12
19
|
readonly connectionName: string;
|
|
13
20
|
readonly instanceId: string;
|
|
14
|
-
|
|
21
|
+
readonly operation: ConnectionOperation;
|
|
22
|
+
readonly phase: ConnectionPhase;
|
|
23
|
+
constructor(connectionName: string, instanceId: string, context?: ConnectionFailureContext);
|
|
15
24
|
}
|
|
16
25
|
/** Any non-2xx response other than the reauthorization signal. */
|
|
17
26
|
export declare class ConnectionRequestError extends Error {
|
|
18
27
|
readonly connectionName: string;
|
|
19
28
|
readonly status: number;
|
|
20
29
|
readonly body: string;
|
|
21
|
-
|
|
30
|
+
readonly operation: ConnectionOperation;
|
|
31
|
+
readonly phase: ConnectionPhase;
|
|
32
|
+
constructor(connectionName: string, status: number, body: string, context?: ConnectionFailureContext);
|
|
22
33
|
}
|
|
23
34
|
/** A URL the SSRF guard refused before any request left the process. */
|
|
24
35
|
export declare class ConnectionUrlError extends Error {
|
|
@@ -32,19 +43,24 @@ export declare class ConnectionBudgetExceededError extends Error {
|
|
|
32
43
|
constructor(limit: number, actual: number, unit?: string);
|
|
33
44
|
}
|
|
34
45
|
/**
|
|
35
|
-
*
|
|
36
|
-
*
|
|
37
|
-
* the caller, so an application can still tell a timeout from a network error.
|
|
46
|
+
* One logical operation exceeded its deadline. The original error remains
|
|
47
|
+
* available to in-process observers while tools receive its safe projection.
|
|
38
48
|
*/
|
|
39
49
|
export declare class ConnectionTimeoutError extends Error {
|
|
40
50
|
readonly connectionName: string;
|
|
41
51
|
readonly timeoutMs: number;
|
|
42
|
-
|
|
52
|
+
readonly operation: ConnectionOperation;
|
|
53
|
+
readonly phase: ConnectionPhase;
|
|
54
|
+
readonly observedReadBytes: number;
|
|
55
|
+
constructor(connectionName: string, timeoutMs: number, context?: ConnectionFailureContext);
|
|
43
56
|
}
|
|
44
|
-
/** A response
|
|
57
|
+
/** A raw response body or legacy response frame exceeded its byte ceiling. */
|
|
45
58
|
export declare class ConnectionResponseTooLargeError extends Error {
|
|
46
59
|
readonly connectionName: string;
|
|
47
60
|
readonly maxBytes: number;
|
|
48
|
-
|
|
61
|
+
readonly operation: ConnectionOperation;
|
|
62
|
+
readonly phase: ConnectionPhase;
|
|
63
|
+
readonly observedReadBytes: number;
|
|
64
|
+
constructor(connectionName: string, maxBytes: number, context?: ConnectionFailureContext);
|
|
49
65
|
}
|
|
50
66
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,4EAA4E;AAC5E,qBAAa,oCAAqC,SAAQ,KAAK;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEpE,qFAAqF;AACrF,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;GAQG;AAEH,4EAA4E;AAC5E,qBAAa,oCAAqC,SAAQ,KAAK;IAC7D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAEhC,YACE,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,wBAA6B,EAQvC;CACF;AAED,kEAAkE;AAClE,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAEhC,YACE,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,wBAA6B,EASvC;CACF;AAED,wEAAwE;AACxE,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,YAAY,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAIvC;CACF;AAED,0EAA0E;AAC1E,qBAAa,6BAA8B,SAAQ,KAAK;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,SAAU,EAKxD;CACF;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAEnC,YACE,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,wBAA6B,EASvC;CACF;AAED,8EAA8E;AAC9E,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAEnC,YACE,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,wBAA6B,EASvC;CACF"}
|
|
@@ -1,36 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* ADR 0180 says timeouts and response sizes are bounded; before this module
|
|
5
|
-
* neither was. Every outbound `fetch` runs under a deadline that aborts with a
|
|
6
|
-
* typed {@link ConnectionTimeoutError} and is combined with any caller signal,
|
|
7
|
-
* and every JSON/text body is read through {@link readBoundedText}.
|
|
8
|
-
*/
|
|
9
|
-
/** Default per-request deadline: long enough for a slow provider, finite. */
|
|
1
|
+
import type { ConnectionReadContext } from './operation-limits.js';
|
|
2
|
+
/** Shared defaults for both connection kinds; phase overrides inherit these. */
|
|
10
3
|
export declare const DEFAULT_CONNECTION_TIMEOUT_MS = 30000;
|
|
11
|
-
/** Default response ceiling: 1 MiB, far above any tool payload we accept. */
|
|
12
4
|
export declare const DEFAULT_MAX_RESPONSE_BYTES: number;
|
|
13
|
-
/** The declared timeout, or the default when absent or non-positive. */
|
|
14
5
|
export declare function connectionTimeoutMs(value: number | undefined): number;
|
|
15
|
-
/** The declared response ceiling, or the default when absent or non-positive. */
|
|
16
6
|
export declare function connectionMaxResponseBytes(value: number | undefined): number;
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*/
|
|
25
|
-
export declare function
|
|
26
|
-
/**
|
|
27
|
-
* Read a response body up to `maxBytes`, refusing anything above it.
|
|
28
|
-
*
|
|
29
|
-
* The stream is cancelled as soon as the ceiling is crossed, so an unbounded
|
|
30
|
-
* server cannot keep the process reading. Returns the decoded text so a JSON
|
|
31
|
-
* caller can parse it itself and a text caller gets it unchanged.
|
|
32
|
-
*/
|
|
33
|
-
export declare function readBoundedText(response: Response, maxBytes: number, connectionName: string): Promise<string>;
|
|
34
|
-
/** Parse a bounded JSON body, keeping the ceiling check in one place. */
|
|
35
|
-
export declare function readBoundedJson(response: Response, maxBytes: number, connectionName: string): Promise<unknown>;
|
|
7
|
+
/** Abort races also cover injected streams or promises that do not observe fetch's signal. */
|
|
8
|
+
export declare function awaitConnection<T>(pending: Promise<T>, signal: AbortSignal | undefined): Promise<T>;
|
|
9
|
+
/** One deadline spans negotiation, response waiting and all body reads. */
|
|
10
|
+
export declare function withConnectionDeadline<T>(connectionName: string, timeoutMs: number, callerSignal: AbortSignal | undefined, body: (signal: AbortSignal) => Promise<T>, context?: ConnectionReadContext): Promise<T>;
|
|
11
|
+
/** Count raw bytes; Content-Length is deliberately not a trust boundary. */
|
|
12
|
+
export declare function readBoundedText(response: Response, maxBytes: number, connectionName: string, context?: ConnectionReadContext): Promise<string>;
|
|
13
|
+
export declare function readBoundedJson(response: Response, maxBytes: number, connectionName: string, context?: ConnectionReadContext): Promise<unknown>;
|
|
14
|
+
/** Diagnostics are best effort; cancellation and declared bounds always win. */
|
|
15
|
+
export declare function readConnectionErrorText(response: Response, connectionName: string, context: ConnectionReadContext): Promise<string>;
|
|
36
16
|
//# sourceMappingURL=limits.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/limits.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"limits.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/limits.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,gFAAgF;AAChF,eAAO,MAAM,6BAA6B,QAAS,CAAC;AACpD,eAAO,MAAM,0BAA0B,QAAc,CAAC;AAGtD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMrE;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAM5E;AAED,8FAA8F;AAC9F,wBAAsB,eAAe,CAAC,CAAC,EACrC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,EAAE,WAAW,GAAG,SAAS,GAC9B,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED,2EAA2E;AAC3E,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,WAAW,GAAG,SAAS,EACrC,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EACzC,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,CAAC,CAAC,CAoBZ;AAED,4EAA4E;AAC5E,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,gFAAgF;AAChF,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,MAAM,CAAC,CAejB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
+
import type { McpConnectionLimits } from './types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Minimal MCP client over the raw wire, on the global `fetch` — no peer SDK.
|
|
3
4
|
*
|
|
4
5
|
* Streamable HTTP is the primary transport: one `POST` per JSON-RPC message
|
|
5
6
|
* carrying both `application/json` and `text/event-stream` in `Accept`, with a
|
|
6
7
|
* `Mcp-Session-Id` echo after `initialize`. Legacy HTTP+SSE is the fallback and
|
|
7
|
-
* only
|
|
8
|
-
*
|
|
9
|
-
* wrong-transport one.
|
|
8
|
+
* negotiates only the initial `initialize`, on `400`, `404` or `405`. An
|
|
9
|
+
* operation already dispatched to a negotiated transport is never replayed.
|
|
10
10
|
*/
|
|
11
11
|
export interface McpTransportConfig {
|
|
12
12
|
url: string;
|
|
@@ -18,6 +18,7 @@ export interface McpHttpClientOptions {
|
|
|
18
18
|
allowedHosts: ReadonlySet<string>;
|
|
19
19
|
timeoutMs: number;
|
|
20
20
|
maxResponseBytes: number;
|
|
21
|
+
limits?: McpConnectionLimits;
|
|
21
22
|
}
|
|
22
23
|
export declare class McpHttpClient {
|
|
23
24
|
private readonly connectionName;
|
|
@@ -28,7 +29,9 @@ export declare class McpHttpClient {
|
|
|
28
29
|
private protocolVersion;
|
|
29
30
|
private nextId;
|
|
30
31
|
private initialized;
|
|
32
|
+
private initialInitializePending;
|
|
31
33
|
private sse;
|
|
34
|
+
private readonly limits;
|
|
32
35
|
constructor(connectionName: string, instanceId: string, options: McpHttpClientOptions);
|
|
33
36
|
/** Forget the session so the next call starts a fresh handshake. */
|
|
34
37
|
teardown(): void;
|
|
@@ -39,6 +42,5 @@ export declare class McpHttpClient {
|
|
|
39
42
|
private headers;
|
|
40
43
|
private openSse;
|
|
41
44
|
private sseRequest;
|
|
42
|
-
private safeText;
|
|
43
45
|
}
|
|
44
46
|
//# sourceMappingURL=mcp-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/mcp-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp-client.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/mcp-client.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD;;;;;;;;GAQG;AAEH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,yEAAyE;IACzE,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B;AASD,qBAAa,aAAa;IAWtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,wBAAwB,CAAQ;IACxC,OAAO,CAAC,GAAG,CAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,YACmB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,oBAAoB,EAG/C;IAED,oEAAoE;IACpE,QAAQ,IAAI,IAAI,CAOf;IAEK,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgC/E;IAED,OAAO,CACL,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAElB;YAEa,QAAQ;YAkCR,iBAAiB;IAuE/B,OAAO,CAAC,OAAO;YAYD,OAAO;YAiBP,UAAU;CAUzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAIhF,OAAO,EACL,KAAK,0BAA0B,EAIhC,MAAM,WAAW,CAAC;AAGnB,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,SAAS,CAAC;AAQlE,gEAAgE;AAChE,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,mBAAmB,EAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,0BAA0B,GACpC,OAAO,CAAC,qBAAqB,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAIhF,OAAO,EACL,KAAK,0BAA0B,EAIhC,MAAM,WAAW,CAAC;AAGnB,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,SAAS,CAAC;AAQlE,gEAAgE;AAChE,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,mBAAmB,EAC/B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,0BAA0B,GACpC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAsElC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/openapi.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/openapi.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAahF,OAAO,EACL,KAAK,0BAA0B,EAKhC,MAAM,WAAW,CAAC;AAGnB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAgBjD,8DAA8D;AAC9D,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,0BAA0B,GACpC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAwHlC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ConnectionOperation, ConnectionPhase, McpConnectionLimits } from './types.js';
|
|
2
|
+
export interface ResolvedConnectionLimits {
|
|
3
|
+
timeoutMs: number;
|
|
4
|
+
maxResponseBytes: number;
|
|
5
|
+
}
|
|
6
|
+
export interface ConnectionReadContext extends ResolvedConnectionLimits {
|
|
7
|
+
operation: ConnectionOperation;
|
|
8
|
+
phase: ConnectionPhase;
|
|
9
|
+
observedReadBytes: number;
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
}
|
|
12
|
+
export interface McpPhaseLimits {
|
|
13
|
+
discovery: ResolvedConnectionLimits;
|
|
14
|
+
call: ResolvedConnectionLimits;
|
|
15
|
+
}
|
|
16
|
+
/** Resolve and validate once at the connection boundary, including unused phases. */
|
|
17
|
+
export declare function resolveMcpLimits(config: {
|
|
18
|
+
timeoutMs?: number;
|
|
19
|
+
maxResponseBytes?: number;
|
|
20
|
+
limits?: McpConnectionLimits;
|
|
21
|
+
}): McpPhaseLimits;
|
|
22
|
+
/** Arbitrary request names cannot become diagnostic strings carrying secrets. */
|
|
23
|
+
export declare function mcpOperation(method: string): ConnectionOperation;
|
|
24
|
+
export declare function connectionReadContext(operation: ConnectionOperation, limits: McpPhaseLimits): ConnectionReadContext;
|
|
25
|
+
//# sourceMappingURL=operation-limits.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation-limits.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/operation-limits.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEzF,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAsB,SAAQ,wBAAwB;IACrE,SAAS,EAAE,mBAAmB,CAAC;IAC/B,KAAK,EAAE,eAAe,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,wBAAwB,CAAC;IACpC,IAAI,EAAE,wBAAwB,CAAC;CAChC;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B,GAAG,cAAc,CAmBjB;AAED,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAUhE;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,mBAAmB,EAC9B,MAAM,EAAE,cAAc,GACrB,qBAAqB,CAUvB"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
import type { ConnectionReadContext } from './operation-limits.js';
|
|
1
2
|
export interface SseFrame {
|
|
2
3
|
event: string;
|
|
3
4
|
data: string;
|
|
4
5
|
}
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
interface SseReadOptions {
|
|
7
|
+
totalLimit?: boolean;
|
|
8
|
+
context?: ConnectionReadContext;
|
|
9
|
+
currentContext?: () => ConnectionReadContext;
|
|
10
|
+
onChunk?: (bytes: number) => void;
|
|
11
|
+
signal?: AbortSignal;
|
|
12
|
+
}
|
|
13
|
+
/** Raw UTF-8 bytes include frame delimiters; partial code points never change the count. */
|
|
14
|
+
export declare function readSseFrames(response: Response, maxBytes: number, connectionName: string, options?: SseReadOptions): AsyncGenerator<SseFrame>;
|
|
15
|
+
export {};
|
|
7
16
|
//# sourceMappingURL=sse-frames.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sse-frames.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/sse-frames.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,
|
|
1
|
+
{"version":3,"file":"sse-frames.d.ts","sourceRoot":"","sources":["../../../src/tools/connections/sse-frames.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,cAAc;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,qBAAqB,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,qBAAqB,CAAC;IAC7C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,4FAA4F;AAC5F,wBAAuB,aAAa,CAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,cAAmB,GAC3B,cAAc,CAAC,QAAQ,CAAC,CA4D1B"}
|