@zarel-ai/sdk 0.6.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/LICENSE +21 -0
- package/README.md +412 -0
- package/dist/_internal/auth-headers.d.ts +19 -0
- package/dist/_internal/auth-headers.d.ts.map +1 -0
- package/dist/_internal/auth-headers.js +30 -0
- package/dist/_internal/auth-headers.js.map +1 -0
- package/dist/_internal/confirmation.d.ts +24 -0
- package/dist/_internal/confirmation.d.ts.map +1 -0
- package/dist/_internal/confirmation.js +54 -0
- package/dist/_internal/confirmation.js.map +1 -0
- package/dist/_internal/event-iterator.d.ts +18 -0
- package/dist/_internal/event-iterator.d.ts.map +1 -0
- package/dist/_internal/event-iterator.js +151 -0
- package/dist/_internal/event-iterator.js.map +1 -0
- package/dist/_internal/fetch-client.d.ts +141 -0
- package/dist/_internal/fetch-client.d.ts.map +1 -0
- package/dist/_internal/fetch-client.js +471 -0
- package/dist/_internal/fetch-client.js.map +1 -0
- package/dist/_internal/interceptors.d.ts +40 -0
- package/dist/_internal/interceptors.d.ts.map +1 -0
- package/dist/_internal/interceptors.js +28 -0
- package/dist/_internal/interceptors.js.map +1 -0
- package/dist/_internal/mcp.d.ts +11 -0
- package/dist/_internal/mcp.d.ts.map +1 -0
- package/dist/_internal/mcp.js +79 -0
- package/dist/_internal/mcp.js.map +1 -0
- package/dist/_internal/pagination.d.ts +71 -0
- package/dist/_internal/pagination.d.ts.map +1 -0
- package/dist/_internal/pagination.js +130 -0
- package/dist/_internal/pagination.js.map +1 -0
- package/dist/_internal/require-token.d.ts +17 -0
- package/dist/_internal/require-token.d.ts.map +1 -0
- package/dist/_internal/require-token.js +25 -0
- package/dist/_internal/require-token.js.map +1 -0
- package/dist/_internal/retry-after.d.ts +2 -0
- package/dist/_internal/retry-after.d.ts.map +1 -0
- package/dist/_internal/retry-after.js +34 -0
- package/dist/_internal/retry-after.js.map +1 -0
- package/dist/_internal/sse-client.d.ts +43 -0
- package/dist/_internal/sse-client.d.ts.map +1 -0
- package/dist/_internal/sse-client.js +250 -0
- package/dist/_internal/sse-client.js.map +1 -0
- package/dist/_internal/version.d.ts +5 -0
- package/dist/_internal/version.d.ts.map +1 -0
- package/dist/_internal/version.js +12 -0
- package/dist/_internal/version.js.map +1 -0
- package/dist/client.d.ts +74 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +86 -0
- package/dist/client.js.map +1 -0
- package/dist/contract/_singleton.d.ts +18 -0
- package/dist/contract/_singleton.d.ts.map +1 -0
- package/dist/contract/_singleton.js +27 -0
- package/dist/contract/_singleton.js.map +1 -0
- package/dist/contract/actions.d.ts +18 -0
- package/dist/contract/actions.d.ts.map +1 -0
- package/dist/contract/actions.js +36 -0
- package/dist/contract/actions.js.map +1 -0
- package/dist/contract/assistant.d.ts +65 -0
- package/dist/contract/assistant.d.ts.map +1 -0
- package/dist/contract/assistant.js +44 -0
- package/dist/contract/assistant.js.map +1 -0
- package/dist/contract/batch.d.ts +27 -0
- package/dist/contract/batch.d.ts.map +1 -0
- package/dist/contract/batch.js +20 -0
- package/dist/contract/batch.js.map +1 -0
- package/dist/contract/capabilities.d.ts +21 -0
- package/dist/contract/capabilities.d.ts.map +1 -0
- package/dist/contract/capabilities.js +31 -0
- package/dist/contract/capabilities.js.map +1 -0
- package/dist/contract/constraints.d.ts +21 -0
- package/dist/contract/constraints.d.ts.map +1 -0
- package/dist/contract/constraints.js +31 -0
- package/dist/contract/constraints.js.map +1 -0
- package/dist/contract/events.d.ts +33 -0
- package/dist/contract/events.d.ts.map +1 -0
- package/dist/contract/events.js +56 -0
- package/dist/contract/events.js.map +1 -0
- package/dist/contract/flows.d.ts +44 -0
- package/dist/contract/flows.d.ts.map +1 -0
- package/dist/contract/flows.js +109 -0
- package/dist/contract/flows.js.map +1 -0
- package/dist/contract/governance.d.ts +6 -0
- package/dist/contract/governance.d.ts.map +1 -0
- package/dist/contract/governance.js +17 -0
- package/dist/contract/governance.js.map +1 -0
- package/dist/contract/index.d.ts +137 -0
- package/dist/contract/index.d.ts.map +1 -0
- package/dist/contract/index.js +177 -0
- package/dist/contract/index.js.map +1 -0
- package/dist/contract/metadata.d.ts +26 -0
- package/dist/contract/metadata.d.ts.map +1 -0
- package/dist/contract/metadata.js +25 -0
- package/dist/contract/metadata.js.map +1 -0
- package/dist/contract/process-model.d.ts +31 -0
- package/dist/contract/process-model.d.ts.map +1 -0
- package/dist/contract/process-model.js +51 -0
- package/dist/contract/process-model.js.map +1 -0
- package/dist/contract/roots/channels.d.ts +27 -0
- package/dist/contract/roots/channels.d.ts.map +1 -0
- package/dist/contract/roots/channels.js +53 -0
- package/dist/contract/roots/channels.js.map +1 -0
- package/dist/contract/roots/events.d.ts +7 -0
- package/dist/contract/roots/events.d.ts.map +1 -0
- package/dist/contract/roots/events.js +19 -0
- package/dist/contract/roots/events.js.map +1 -0
- package/dist/contract/roots/index.d.ts +15 -0
- package/dist/contract/roots/index.d.ts.map +1 -0
- package/dist/contract/roots/index.js +38 -0
- package/dist/contract/roots/index.js.map +1 -0
- package/dist/contract/roots/mcp-servers.d.ts +46 -0
- package/dist/contract/roots/mcp-servers.d.ts.map +1 -0
- package/dist/contract/roots/mcp-servers.js +68 -0
- package/dist/contract/roots/mcp-servers.js.map +1 -0
- package/dist/contract/roots/profiles.d.ts +18 -0
- package/dist/contract/roots/profiles.d.ts.map +1 -0
- package/dist/contract/roots/profiles.js +31 -0
- package/dist/contract/roots/profiles.js.map +1 -0
- package/dist/contract/roots/timezone.d.ts +10 -0
- package/dist/contract/roots/timezone.d.ts.map +1 -0
- package/dist/contract/roots/timezone.js +19 -0
- package/dist/contract/roots/timezone.js.map +1 -0
- package/dist/contract/roots/treatment.d.ts +11 -0
- package/dist/contract/roots/treatment.d.ts.map +1 -0
- package/dist/contract/roots/treatment.js +37 -0
- package/dist/contract/roots/treatment.js.map +1 -0
- package/dist/contract/roots/vocabulary.d.ts +18 -0
- package/dist/contract/roots/vocabulary.d.ts.map +1 -0
- package/dist/contract/roots/vocabulary.js +31 -0
- package/dist/contract/roots/vocabulary.js.map +1 -0
- package/dist/contract/schemas.d.ts +18 -0
- package/dist/contract/schemas.d.ts.map +1 -0
- package/dist/contract/schemas.js +31 -0
- package/dist/contract/schemas.js.map +1 -0
- package/dist/contract/skills.d.ts +20 -0
- package/dist/contract/skills.d.ts.map +1 -0
- package/dist/contract/skills.js +36 -0
- package/dist/contract/skills.js.map +1 -0
- package/dist/errors.d.ts +65 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +80 -0
- package/dist/errors.js.map +1 -0
- package/dist/generated/contract.d.ts +7688 -0
- package/dist/generated/contract.d.ts.map +1 -0
- package/dist/generated/contract.js +7 -0
- package/dist/generated/contract.js.map +1 -0
- package/dist/generated/index.d.ts +41 -0
- package/dist/generated/index.d.ts.map +1 -0
- package/dist/generated/index.js +3 -0
- package/dist/generated/index.js.map +1 -0
- package/dist/generated/runtime.d.ts +4020 -0
- package/dist/generated/runtime.d.ts.map +1 -0
- package/dist/generated/runtime.js +7 -0
- package/dist/generated/runtime.js.map +1 -0
- package/dist/generated/unwrap-map.d.ts +989 -0
- package/dist/generated/unwrap-map.d.ts.map +1 -0
- package/dist/generated/unwrap-map.js +344 -0
- package/dist/generated/unwrap-map.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/resources/actions.d.ts +33 -0
- package/dist/resources/actions.d.ts.map +1 -0
- package/dist/resources/actions.js +52 -0
- package/dist/resources/actions.js.map +1 -0
- package/dist/resources/audit.d.ts +52 -0
- package/dist/resources/audit.d.ts.map +1 -0
- package/dist/resources/audit.js +86 -0
- package/dist/resources/audit.js.map +1 -0
- package/dist/resources/authorization-ceiling.d.ts +25 -0
- package/dist/resources/authorization-ceiling.d.ts.map +1 -0
- package/dist/resources/authorization-ceiling.js +26 -0
- package/dist/resources/authorization-ceiling.js.map +1 -0
- package/dist/resources/authorization-operation-ids.d.ts +15 -0
- package/dist/resources/authorization-operation-ids.d.ts.map +1 -0
- package/dist/resources/authorization-operation-ids.js +31 -0
- package/dist/resources/authorization-operation-ids.js.map +1 -0
- package/dist/resources/authorization.d.ts +60 -0
- package/dist/resources/authorization.d.ts.map +1 -0
- package/dist/resources/authorization.js +51 -0
- package/dist/resources/authorization.js.map +1 -0
- package/dist/resources/authorizations.d.ts +38 -0
- package/dist/resources/authorizations.d.ts.map +1 -0
- package/dist/resources/authorizations.js +19 -0
- package/dist/resources/authorizations.js.map +1 -0
- package/dist/resources/channels.d.ts +36 -0
- package/dist/resources/channels.d.ts.map +1 -0
- package/dist/resources/channels.js +61 -0
- package/dist/resources/channels.js.map +1 -0
- package/dist/resources/contracts.d.ts +46 -0
- package/dist/resources/contracts.d.ts.map +1 -0
- package/dist/resources/contracts.js +86 -0
- package/dist/resources/contracts.js.map +1 -0
- package/dist/resources/conversation-sessions.d.ts +62 -0
- package/dist/resources/conversation-sessions.d.ts.map +1 -0
- package/dist/resources/conversation-sessions.js +48 -0
- package/dist/resources/conversation-sessions.js.map +1 -0
- package/dist/resources/conversation.d.ts +48 -0
- package/dist/resources/conversation.d.ts.map +1 -0
- package/dist/resources/conversation.js +104 -0
- package/dist/resources/conversation.js.map +1 -0
- package/dist/resources/embedding-credentials.d.ts +60 -0
- package/dist/resources/embedding-credentials.d.ts.map +1 -0
- package/dist/resources/embedding-credentials.js +53 -0
- package/dist/resources/embedding-credentials.js.map +1 -0
- package/dist/resources/entities.d.ts +66 -0
- package/dist/resources/entities.d.ts.map +1 -0
- package/dist/resources/entities.js +106 -0
- package/dist/resources/entities.js.map +1 -0
- package/dist/resources/events.d.ts +45 -0
- package/dist/resources/events.d.ts.map +1 -0
- package/dist/resources/events.js +71 -0
- package/dist/resources/events.js.map +1 -0
- package/dist/resources/flows.d.ts +45 -0
- package/dist/resources/flows.d.ts.map +1 -0
- package/dist/resources/flows.js +82 -0
- package/dist/resources/flows.js.map +1 -0
- package/dist/resources/imports.d.ts +8 -0
- package/dist/resources/imports.d.ts.map +1 -0
- package/dist/resources/imports.js +14 -0
- package/dist/resources/imports.js.map +1 -0
- package/dist/resources/index.d.ts +24 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +41 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/llm-credentials.d.ts +47 -0
- package/dist/resources/llm-credentials.d.ts.map +1 -0
- package/dist/resources/llm-credentials.js +46 -0
- package/dist/resources/llm-credentials.js.map +1 -0
- package/dist/resources/llm-services.d.ts +46 -0
- package/dist/resources/llm-services.d.ts.map +1 -0
- package/dist/resources/llm-services.js +41 -0
- package/dist/resources/llm-services.js.map +1 -0
- package/dist/resources/mcp.d.ts +8 -0
- package/dist/resources/mcp.d.ts.map +1 -0
- package/dist/resources/mcp.js +25 -0
- package/dist/resources/mcp.js.map +1 -0
- package/dist/resources/receipts.d.ts +25 -0
- package/dist/resources/receipts.d.ts.map +1 -0
- package/dist/resources/receipts.js +54 -0
- package/dist/resources/receipts.js.map +1 -0
- package/dist/resources/records.d.ts +51 -0
- package/dist/resources/records.d.ts.map +1 -0
- package/dist/resources/records.js +103 -0
- package/dist/resources/records.js.map +1 -0
- package/dist/resources/role-assignments.d.ts +27 -0
- package/dist/resources/role-assignments.d.ts.map +1 -0
- package/dist/resources/role-assignments.js +40 -0
- package/dist/resources/role-assignments.js.map +1 -0
- package/dist/resources/roles.d.ts +39 -0
- package/dist/resources/roles.d.ts.map +1 -0
- package/dist/resources/roles.js +42 -0
- package/dist/resources/roles.js.map +1 -0
- package/dist/resources/runtime-entities.d.ts +23 -0
- package/dist/resources/runtime-entities.d.ts.map +1 -0
- package/dist/resources/runtime-entities.js +29 -0
- package/dist/resources/runtime-entities.js.map +1 -0
- package/dist/resources/state-machine.d.ts +45 -0
- package/dist/resources/state-machine.d.ts.map +1 -0
- package/dist/resources/state-machine.js +86 -0
- package/dist/resources/state-machine.js.map +1 -0
- package/dist/resources/system.d.ts +12 -0
- package/dist/resources/system.d.ts.map +1 -0
- package/dist/resources/system.js +26 -0
- package/dist/resources/system.js.map +1 -0
- package/dist/resources/tools.d.ts +22 -0
- package/dist/resources/tools.d.ts.map +1 -0
- package/dist/resources/tools.js +33 -0
- package/dist/resources/tools.js.map +1 -0
- package/dist/resources/traces.d.ts +65 -0
- package/dist/resources/traces.d.ts.map +1 -0
- package/dist/resources/traces.js +97 -0
- package/dist/resources/traces.js.map +1 -0
- package/dist/runtime/index.d.ts +128 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +210 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/types/actions.d.ts +32 -0
- package/dist/types/actions.d.ts.map +1 -0
- package/dist/types/actions.js +9 -0
- package/dist/types/actions.js.map +1 -0
- package/dist/types/audit.d.ts +65 -0
- package/dist/types/audit.d.ts.map +1 -0
- package/dist/types/audit.js +14 -0
- package/dist/types/audit.js.map +1 -0
- package/dist/types/channels.d.ts +37 -0
- package/dist/types/channels.d.ts.map +1 -0
- package/dist/types/channels.js +6 -0
- package/dist/types/channels.js.map +1 -0
- package/dist/types/confirmation.d.ts +53 -0
- package/dist/types/confirmation.d.ts.map +1 -0
- package/dist/types/confirmation.js +17 -0
- package/dist/types/confirmation.js.map +1 -0
- package/dist/types/contracts.d.ts +194 -0
- package/dist/types/contracts.d.ts.map +1 -0
- package/dist/types/contracts.js +10 -0
- package/dist/types/contracts.js.map +1 -0
- package/dist/types/conversation-sessions.d.ts +58 -0
- package/dist/types/conversation-sessions.d.ts.map +1 -0
- package/dist/types/conversation-sessions.js +6 -0
- package/dist/types/conversation-sessions.js.map +1 -0
- package/dist/types/conversation.d.ts +96 -0
- package/dist/types/conversation.d.ts.map +1 -0
- package/dist/types/conversation.js +3 -0
- package/dist/types/conversation.js.map +1 -0
- package/dist/types/entities.d.ts +22 -0
- package/dist/types/entities.d.ts.map +1 -0
- package/dist/types/entities.js +4 -0
- package/dist/types/entities.js.map +1 -0
- package/dist/types/events-stream.d.ts +82 -0
- package/dist/types/events-stream.d.ts.map +1 -0
- package/dist/types/events-stream.js +65 -0
- package/dist/types/events-stream.js.map +1 -0
- package/dist/types/flows-contract.d.ts +8 -0
- package/dist/types/flows-contract.d.ts.map +1 -0
- package/dist/types/flows-contract.js +7 -0
- package/dist/types/flows-contract.js.map +1 -0
- package/dist/types/flows.d.ts +66 -0
- package/dist/types/flows.d.ts.map +1 -0
- package/dist/types/flows.js +25 -0
- package/dist/types/flows.js.map +1 -0
- package/dist/types/imports.d.ts +57 -0
- package/dist/types/imports.d.ts.map +1 -0
- package/dist/types/imports.js +3 -0
- package/dist/types/imports.js.map +1 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/locale.d.ts +24 -0
- package/dist/types/locale.d.ts.map +1 -0
- package/dist/types/locale.js +17 -0
- package/dist/types/locale.js.map +1 -0
- package/dist/types/mcp.d.ts +28 -0
- package/dist/types/mcp.d.ts.map +1 -0
- package/dist/types/mcp.js +12 -0
- package/dist/types/mcp.js.map +1 -0
- package/dist/types/platform.d.ts +51 -0
- package/dist/types/platform.d.ts.map +1 -0
- package/dist/types/platform.js +4 -0
- package/dist/types/platform.js.map +1 -0
- package/dist/types/receipt.d.ts +79 -0
- package/dist/types/receipt.d.ts.map +1 -0
- package/dist/types/receipt.js +15 -0
- package/dist/types/receipt.js.map +1 -0
- package/dist/types/records.d.ts +45 -0
- package/dist/types/records.d.ts.map +1 -0
- package/dist/types/records.js +4 -0
- package/dist/types/records.js.map +1 -0
- package/dist/types/spec.d.ts +6 -0
- package/dist/types/spec.d.ts.map +1 -0
- package/dist/types/spec.js +3 -0
- package/dist/types/spec.js.map +1 -0
- package/dist/types/state-machine.d.ts +100 -0
- package/dist/types/state-machine.d.ts.map +1 -0
- package/dist/types/state-machine.js +9 -0
- package/dist/types/state-machine.js.map +1 -0
- package/dist/types/system.d.ts +28 -0
- package/dist/types/system.d.ts.map +1 -0
- package/dist/types/system.js +3 -0
- package/dist/types/system.js.map +1 -0
- package/dist/types/tools.d.ts +188 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +22 -0
- package/dist/types/tools.js.map +1 -0
- package/dist/types/traces.d.ts +77 -0
- package/dist/types/traces.d.ts.map +1 -0
- package/dist/types/traces.js +11 -0
- package/dist/types/traces.js.map +1 -0
- package/dist/types/workflows.d.ts +42 -0
- package/dist/types/workflows.d.ts.map +1 -0
- package/dist/types/workflows.js +11 -0
- package/dist/types/workflows.js.map +1 -0
- package/package.json +103 -0
|
@@ -0,0 +1,471 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FetchClient = void 0;
|
|
4
|
+
exports.localeQuery = localeQuery;
|
|
5
|
+
exports.localeQueryOrUndefined = localeQueryOrUndefined;
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
const auth_headers_1 = require("./auth-headers");
|
|
8
|
+
const confirmation_1 = require("./confirmation");
|
|
9
|
+
const retry_after_1 = require("./retry-after");
|
|
10
|
+
const version_1 = require("./version");
|
|
11
|
+
const interceptors_1 = require("./interceptors");
|
|
12
|
+
const sse_client_1 = require("./sse-client");
|
|
13
|
+
const mcp_1 = require("./mcp");
|
|
14
|
+
// spec-039 T090 — produce a query-record fragment from LocaleOptions.
|
|
15
|
+
// When `locale` is undefined the result is `{}`, so the SDK omits
|
|
16
|
+
// `?locale=` entirely (FR-023 — server applies its own resolution chain).
|
|
17
|
+
function localeQuery(options) {
|
|
18
|
+
if (!options?.locale)
|
|
19
|
+
return {};
|
|
20
|
+
return { locale: options.locale };
|
|
21
|
+
}
|
|
22
|
+
// spec-039 — when a resource has no other query params, pass `undefined`
|
|
23
|
+
// instead of `{}` to keep call-sites compatible with pre-spec-039 tests that
|
|
24
|
+
// assert `client.get` was called with a single positional argument. The
|
|
25
|
+
// existing tests for entities/tools/roles use `{}`; downstream resources
|
|
26
|
+
// pick whichever shape they were tested against.
|
|
27
|
+
function localeQueryOrUndefined(options) {
|
|
28
|
+
if (!options?.locale)
|
|
29
|
+
return undefined;
|
|
30
|
+
return { locale: options.locale };
|
|
31
|
+
}
|
|
32
|
+
// ── Internals ───────────────────────────────────────────────────────────
|
|
33
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
34
|
+
const DEFAULT_MAX_RETRIES = 3;
|
|
35
|
+
const DEFAULT_RETRY_DELAY_MS = 500;
|
|
36
|
+
const RETRYABLE_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);
|
|
37
|
+
// G5 — ceiling for an honoured `Retry-After` so a huge/malicious value can't hang
|
|
38
|
+
// the client (it still retries, just bounded).
|
|
39
|
+
const MAX_RETRY_AFTER_MS = 60_000;
|
|
40
|
+
const API_VERSION_HEADER = 'X-Zarel-Api-Version';
|
|
41
|
+
function generateId() {
|
|
42
|
+
if (typeof globalThis.crypto?.randomUUID === 'function') {
|
|
43
|
+
return globalThis.crypto.randomUUID();
|
|
44
|
+
}
|
|
45
|
+
// Fallback for environments without crypto.randomUUID
|
|
46
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
47
|
+
const r = (Math.random() * 16) | 0;
|
|
48
|
+
const v = c === 'x' ? r : (r & 0x3) | 0x8;
|
|
49
|
+
return v.toString(16);
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
function buildUrl(base, path, query) {
|
|
53
|
+
// Strip leading slash so new URL() resolves path relative to base,
|
|
54
|
+
// preserving all path segments in base (e.g. /v1).
|
|
55
|
+
const relativePath = path.replace(/^\//, '');
|
|
56
|
+
const url = new URL(relativePath, base.endsWith('/') ? base : `${base}/`);
|
|
57
|
+
if (query) {
|
|
58
|
+
for (const [key, value] of Object.entries(query)) {
|
|
59
|
+
if (value === undefined)
|
|
60
|
+
continue;
|
|
61
|
+
if (Array.isArray(value)) {
|
|
62
|
+
// Spec 015 / M4: repeated query parameters (`?roles=a&roles=b`).
|
|
63
|
+
for (const item of value) {
|
|
64
|
+
if (item !== undefined && item !== null)
|
|
65
|
+
url.searchParams.append(key, String(item));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
url.searchParams.set(key, String(value));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return url.toString();
|
|
74
|
+
}
|
|
75
|
+
async function parseErrorBody(res) {
|
|
76
|
+
let raw;
|
|
77
|
+
try {
|
|
78
|
+
raw = await res.json();
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Response body is not JSON
|
|
82
|
+
}
|
|
83
|
+
const body = (raw !== null && typeof raw === 'object') ? raw : undefined;
|
|
84
|
+
const error = body?.error;
|
|
85
|
+
if (error) {
|
|
86
|
+
// Preserve any non-standard top-level fields (everything except the
|
|
87
|
+
// canonical `error` envelope) as `details` — e.g. the assistant apply
|
|
88
|
+
// 409 `reseeded_changeset_id`/`base_hash` (FR-024). Undefined when the
|
|
89
|
+
// body carries only `error`.
|
|
90
|
+
const details = {};
|
|
91
|
+
for (const key of Object.keys(body)) {
|
|
92
|
+
if (key !== 'error')
|
|
93
|
+
details[key] = body[key];
|
|
94
|
+
}
|
|
95
|
+
// ADR-0127 US3 — the confirmation challenge rides INSIDE the `error`
|
|
96
|
+
// envelope, so `details` (which carries only what is outside it) would
|
|
97
|
+
// drop it. Surfaced as its own typed field instead; parsed fail-closed,
|
|
98
|
+
// so an incomplete challenge degrades to an ordinary API error rather
|
|
99
|
+
// than promising a retry the client cannot make.
|
|
100
|
+
const confirmation = (0, confirmation_1.parseConfirmationChallenge)(error.confirmation);
|
|
101
|
+
return new errors_1.ZarelAPIError(res.status, error.type, error.code, error.message, error.request_id, error.field, Object.keys(details).length > 0 ? details : undefined, confirmation);
|
|
102
|
+
}
|
|
103
|
+
return new errors_1.ZarelAPIError(res.status, 'unknown', 'UNKNOWN', `HTTP ${res.status}: ${res.statusText}`, res.headers.get('x-request-id') ?? undefined);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The single envelope-unwrap authority (ADR-0109 follow-up, QI-001). Invoked ONLY
|
|
107
|
+
* when the per-plane unwrap map classifies the operation `{unwrap:true}`. A valid
|
|
108
|
+
* `{success,data}` envelope is unwrapped to `data`; a `success:false` envelope on
|
|
109
|
+
* a 2xx response surfaces as a typed `ZarelAPIError`; a body that is NOT a valid
|
|
110
|
+
* envelope (no boolean `success`) when the spec said it should be one is a
|
|
111
|
+
* MALFORMED response → `ZarelError` (never a silent `undefined`). The unwrap
|
|
112
|
+
* *decision* lives in the codegen map, not here.
|
|
113
|
+
*/
|
|
114
|
+
function unwrapEnvelope(body, status, requestId) {
|
|
115
|
+
if (typeof body !== 'object' || body === null || typeof body.success !== 'boolean') {
|
|
116
|
+
throw new errors_1.ZarelError('malformed response: the OpenAPI marks this operation as envelope-wrapped but the body is not a {success,data} envelope');
|
|
117
|
+
}
|
|
118
|
+
const env = body;
|
|
119
|
+
if (env.success) {
|
|
120
|
+
return env.data;
|
|
121
|
+
}
|
|
122
|
+
// success:false envelope on a 2xx response — surface as an API error.
|
|
123
|
+
throw new errors_1.ZarelAPIError(status, env.error?.type ?? 'unknown', env.error?.code ?? 'UNKNOWN', env.error?.message ?? env.message ?? `HTTP ${status}: request failed`, env.error?.request_id ?? requestId, env.error?.field);
|
|
124
|
+
}
|
|
125
|
+
/** The optional slice of `CallOptions` every convenience method forwards verbatim. */
|
|
126
|
+
function callExtras(options) {
|
|
127
|
+
return {
|
|
128
|
+
...(options.signal ? { signal: options.signal } : {}),
|
|
129
|
+
...(options.headers ? { headers: options.headers } : {}),
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function createAbortError() {
|
|
133
|
+
const error = new Error('Request aborted');
|
|
134
|
+
error.name = 'AbortError';
|
|
135
|
+
return error;
|
|
136
|
+
}
|
|
137
|
+
function isAbortError(error) {
|
|
138
|
+
return error instanceof Error && error.name === 'AbortError';
|
|
139
|
+
}
|
|
140
|
+
function sleepWithSignal(ms, signal) {
|
|
141
|
+
if (signal?.aborted) {
|
|
142
|
+
return Promise.reject(createAbortError());
|
|
143
|
+
}
|
|
144
|
+
return new Promise((resolve, reject) => {
|
|
145
|
+
const timer = setTimeout(() => {
|
|
146
|
+
signal?.removeEventListener('abort', onAbort);
|
|
147
|
+
resolve();
|
|
148
|
+
}, ms);
|
|
149
|
+
const onAbort = () => {
|
|
150
|
+
clearTimeout(timer);
|
|
151
|
+
signal?.removeEventListener('abort', onAbort);
|
|
152
|
+
reject(createAbortError());
|
|
153
|
+
};
|
|
154
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
// ── FetchClient ─────────────────────────────────────────────────────────
|
|
158
|
+
class FetchClient {
|
|
159
|
+
baseUrl;
|
|
160
|
+
token;
|
|
161
|
+
transportManaged;
|
|
162
|
+
timeout;
|
|
163
|
+
maxRetries;
|
|
164
|
+
retryDelay;
|
|
165
|
+
fetchFn;
|
|
166
|
+
requireTokenCode;
|
|
167
|
+
apiVersion;
|
|
168
|
+
interceptors;
|
|
169
|
+
operations;
|
|
170
|
+
constructor(options) {
|
|
171
|
+
// Construction never throws on missing token. When
|
|
172
|
+
// `requireTokenCode` is set (and not transport-managed), the per-request
|
|
173
|
+
// guard throws ZarelAuthError with that code before any network I/O.
|
|
174
|
+
this.baseUrl = options.baseUrl.replace(/\/+$/, '');
|
|
175
|
+
this.token = options.token;
|
|
176
|
+
this.transportManaged = options.transportManaged ?? false;
|
|
177
|
+
this.timeout = options.timeout ?? DEFAULT_TIMEOUT_MS;
|
|
178
|
+
this.maxRetries = options.maxRetries ?? DEFAULT_MAX_RETRIES;
|
|
179
|
+
this.retryDelay = options.retryDelay ?? DEFAULT_RETRY_DELAY_MS;
|
|
180
|
+
this.fetchFn = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
181
|
+
this.requireTokenCode = options.requireTokenCode;
|
|
182
|
+
this.apiVersion = options.apiVersion;
|
|
183
|
+
this.interceptors = options.interceptors;
|
|
184
|
+
this.operations = options.operations;
|
|
185
|
+
}
|
|
186
|
+
async request(options) {
|
|
187
|
+
// Auth via the single shared authority (G3 QI-001): transport-managed
|
|
188
|
+
// omits Authorization + skips the presence guard; otherwise it resolves
|
|
189
|
+
// the token (string or provider), runs the presence guard, and yields
|
|
190
|
+
// the Bearer header — all before any network I/O.
|
|
191
|
+
const authHeaders = await (0, auth_headers_1.resolveAuthHeaders)(this.token, this.transportManaged, this.requireTokenCode);
|
|
192
|
+
const url = buildUrl(this.baseUrl, options.path, options.query);
|
|
193
|
+
// Extract caller-provided X-Request-Id (if any) before building baseHeaders.
|
|
194
|
+
// It must NOT live in baseHeaders because it is set per-attempt below.
|
|
195
|
+
const requestId = (options.headers?.['X-Request-Id']) ?? generateId();
|
|
196
|
+
const baseHeaders = {
|
|
197
|
+
'User-Agent': version_1.USER_AGENT,
|
|
198
|
+
...(this.apiVersion !== undefined ? { [API_VERSION_HEADER]: this.apiVersion } : {}),
|
|
199
|
+
...authHeaders,
|
|
200
|
+
...options.headers,
|
|
201
|
+
};
|
|
202
|
+
delete baseHeaders['X-Request-Id'];
|
|
203
|
+
if (options.body !== undefined) {
|
|
204
|
+
baseHeaders['Content-Type'] = 'application/json';
|
|
205
|
+
}
|
|
206
|
+
// Auto-generate Idempotency-Key for POST/PUT/PATCH unless skipped.
|
|
207
|
+
// Generated once and reused across retries — this is intentional so
|
|
208
|
+
// the server can deduplicate replayed mutations.
|
|
209
|
+
if (!options.skipIdempotency &&
|
|
210
|
+
['POST', 'PUT', 'PATCH'].includes(options.method) &&
|
|
211
|
+
!baseHeaders['Idempotency-Key']) {
|
|
212
|
+
baseHeaders['Idempotency-Key'] = generateId();
|
|
213
|
+
}
|
|
214
|
+
let lastError;
|
|
215
|
+
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
216
|
+
if (options.signal?.aborted) {
|
|
217
|
+
throw createAbortError();
|
|
218
|
+
}
|
|
219
|
+
const headers = {
|
|
220
|
+
...baseHeaders,
|
|
221
|
+
'X-Request-Id': requestId,
|
|
222
|
+
};
|
|
223
|
+
// G5 — server-advertised retry delay for this attempt (set only when a
|
|
224
|
+
// retryable response carries a parseable `Retry-After`; never on a
|
|
225
|
+
// network/timeout error, which produces no response).
|
|
226
|
+
let retryAfterMs;
|
|
227
|
+
// G4 — true once this attempt received an HTTP response (any status),
|
|
228
|
+
// so a POST-response throw (e.g. a malformed-JSON 2xx body) does NOT
|
|
229
|
+
// also fire onError — onResponse already fired, and the two are
|
|
230
|
+
// mutually exclusive per attempt.
|
|
231
|
+
let responded = false;
|
|
232
|
+
// G4 — onRequest runs OUTSIDE the try so its throw aborts the request
|
|
233
|
+
// (propagates, no fetch, no retry) rather than being caught as a
|
|
234
|
+
// retryable error. It mutates `headers` in place (last word over
|
|
235
|
+
// auth/idempotency/identity, re-applied every attempt).
|
|
236
|
+
if (this.interceptors?.onRequest) {
|
|
237
|
+
await this.interceptors.onRequest({ method: options.method, url, headers, attempt });
|
|
238
|
+
}
|
|
239
|
+
try {
|
|
240
|
+
const response = await this.fetchWithTimeout(url, {
|
|
241
|
+
method: options.method,
|
|
242
|
+
headers,
|
|
243
|
+
...(options.body !== undefined ? { body: JSON.stringify(options.body) } : {}),
|
|
244
|
+
}, options.signal);
|
|
245
|
+
responded = true;
|
|
246
|
+
// G4 — onResponse fires for EVERY HTTP response (any status),
|
|
247
|
+
// before status branching. Read-only; swallowed throw.
|
|
248
|
+
await (0, interceptors_1.runOnResponse)(this.interceptors, { method: options.method, url, status: response.status, attempt });
|
|
249
|
+
if (response.ok) {
|
|
250
|
+
// 204 No Content — or any ok response with no body
|
|
251
|
+
if (response.status === 204) {
|
|
252
|
+
return undefined;
|
|
253
|
+
}
|
|
254
|
+
const contentType = response.headers.get('content-type');
|
|
255
|
+
const contentLength = response.headers.get('content-length');
|
|
256
|
+
if (contentLength === '0') {
|
|
257
|
+
return undefined;
|
|
258
|
+
}
|
|
259
|
+
if (contentType !== null && !contentType.includes('application/json')) {
|
|
260
|
+
return undefined;
|
|
261
|
+
}
|
|
262
|
+
const parsed = await response.json();
|
|
263
|
+
// The codegen-derived per-plane map is the SINGLE unwrap
|
|
264
|
+
// authority (ADR-0109 follow-up). An unmapped operationId is a
|
|
265
|
+
// fail-fast ZarelError (never a silent undefined); the build-time
|
|
266
|
+
// cross-check guard makes that effectively never fire.
|
|
267
|
+
const op = this.operations[options.operationId];
|
|
268
|
+
if (!op) {
|
|
269
|
+
throw new errors_1.ZarelError(`unmapped operation: '${options.operationId}' (run gen:sdk-unwrap-map)`);
|
|
270
|
+
}
|
|
271
|
+
return op.unwrap ? unwrapEnvelope(parsed, response.status, requestId) : parsed;
|
|
272
|
+
}
|
|
273
|
+
// 401 → immediate auth error, no retry
|
|
274
|
+
if (response.status === 401) {
|
|
275
|
+
const apiError = await parseErrorBody(response);
|
|
276
|
+
throw new errors_1.ZarelAuthError(apiError.message, 'unauthorized');
|
|
277
|
+
}
|
|
278
|
+
// Non-retryable error → throw immediately
|
|
279
|
+
if (!RETRYABLE_STATUS_CODES.has(response.status)) {
|
|
280
|
+
throw await parseErrorBody(response);
|
|
281
|
+
}
|
|
282
|
+
// Retryable error → store and continue loop
|
|
283
|
+
lastError = await parseErrorBody(response);
|
|
284
|
+
// G5 — honour the server's `Retry-After` for this attempt's wait.
|
|
285
|
+
retryAfterMs = (0, retry_after_1.parseRetryAfter)(response.headers.get('Retry-After'), Date.now());
|
|
286
|
+
}
|
|
287
|
+
catch (error) {
|
|
288
|
+
if (isAbortError(error) || options.signal?.aborted) {
|
|
289
|
+
throw createAbortError();
|
|
290
|
+
}
|
|
291
|
+
// Deterministic SDK errors propagate immediately (no retry):
|
|
292
|
+
// ZarelAuthError, non-retryable ZarelAPIError (incl. the success:false
|
|
293
|
+
// envelope), and a malformed-envelope ZarelError. Only ZarelTimeoutError
|
|
294
|
+
// and network errors fall through to the retry path.
|
|
295
|
+
if (error instanceof errors_1.ZarelError && !(error instanceof errors_1.ZarelTimeoutError)) {
|
|
296
|
+
throw error;
|
|
297
|
+
}
|
|
298
|
+
// Retryable: ZarelAPIError (retryable status), ZarelTimeoutError, network errors
|
|
299
|
+
// G4 — onError fires ONLY for a no-response transport failure
|
|
300
|
+
// (network error / timeout). HTTP error statuses already fired
|
|
301
|
+
// onResponse above; aborts/deterministic errors re-threw before
|
|
302
|
+
// reaching this point; and a POST-response throw (`responded`
|
|
303
|
+
// already true — e.g. a malformed-JSON 2xx) must NOT fire onError
|
|
304
|
+
// (onResponse covered it). Read-only; swallowed throw.
|
|
305
|
+
if (!responded) {
|
|
306
|
+
await (0, interceptors_1.runOnError)(this.interceptors, { method: options.method, url, error, attempt });
|
|
307
|
+
}
|
|
308
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
309
|
+
}
|
|
310
|
+
// Wait before retry. G5: an honoured `Retry-After` (clamped to the
|
|
311
|
+
// ceiling) takes precedence over the exponential backoff; otherwise
|
|
312
|
+
// the existing backoff-with-jitter is byte-identical to before.
|
|
313
|
+
if (attempt < this.maxRetries) {
|
|
314
|
+
let delay;
|
|
315
|
+
if (retryAfterMs !== undefined) {
|
|
316
|
+
delay = Math.min(retryAfterMs, MAX_RETRY_AFTER_MS);
|
|
317
|
+
}
|
|
318
|
+
else {
|
|
319
|
+
const backoff = this.retryDelay * Math.pow(2, attempt);
|
|
320
|
+
const jitter = Math.random() * backoff * 0.1;
|
|
321
|
+
delay = backoff + jitter;
|
|
322
|
+
}
|
|
323
|
+
await sleepWithSignal(delay, options.signal);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
throw lastError ?? new Error('Request failed after retries');
|
|
327
|
+
}
|
|
328
|
+
// Convenience methods. Every call MUST declare its `operationId` (the
|
|
329
|
+
// per-plane unwrap map is the single unwrap authority — ADR-0109 follow-up).
|
|
330
|
+
async get(path, query, options) {
|
|
331
|
+
return this.request({ method: 'GET', path, operationId: options.operationId, ...(query ? { query } : {}), ...callExtras(options) });
|
|
332
|
+
}
|
|
333
|
+
async post(path, body, options) {
|
|
334
|
+
return this.request({ method: 'POST', path, body, operationId: options.operationId, ...callExtras(options) });
|
|
335
|
+
}
|
|
336
|
+
async patch(path, body, options) {
|
|
337
|
+
return this.request({ method: 'PATCH', path, body, operationId: options.operationId, ...callExtras(options) });
|
|
338
|
+
}
|
|
339
|
+
async put(path, body, options) {
|
|
340
|
+
return this.request({ method: 'PUT', path, body, operationId: options.operationId, ...callExtras(options) });
|
|
341
|
+
}
|
|
342
|
+
async del(path, options) {
|
|
343
|
+
return this.request({ method: 'DELETE', path, operationId: options.operationId, ...callExtras(options) });
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* G3 — open a typed Server-Sent-Events stream against `path` (a runtime-plane
|
|
347
|
+
* SSE endpoint). Reuses this client's own `fetch`, baseUrl, and the SHARED auth
|
|
348
|
+
* authority (`resolveAuthHeaders`, QI-001) — no separate token logic. The
|
|
349
|
+
* reconnect loop + frame parsing live in `sse-client.ts`; this method only
|
|
350
|
+
* provides the `connect` closure (fetch + status classification). Returns a
|
|
351
|
+
* teardown handle synchronously.
|
|
352
|
+
*/
|
|
353
|
+
openEventStream(path, handlers, options = {}) {
|
|
354
|
+
const url = buildUrl(this.baseUrl, path);
|
|
355
|
+
const connect = async (lastEventId, signal) => {
|
|
356
|
+
// Same auth authority as the REST path; a missing direct token throws
|
|
357
|
+
// ZarelAuthError here, which the loop surfaces as a terminal onError.
|
|
358
|
+
const authHeaders = await (0, auth_headers_1.resolveAuthHeaders)(this.token, this.transportManaged, this.requireTokenCode);
|
|
359
|
+
const headers = {
|
|
360
|
+
...authHeaders,
|
|
361
|
+
'Accept': 'text/event-stream',
|
|
362
|
+
};
|
|
363
|
+
if (lastEventId !== undefined) {
|
|
364
|
+
headers['Last-Event-ID'] = lastEventId;
|
|
365
|
+
}
|
|
366
|
+
let response;
|
|
367
|
+
try {
|
|
368
|
+
response = await this.fetchFn(url, {
|
|
369
|
+
method: 'GET',
|
|
370
|
+
headers,
|
|
371
|
+
signal,
|
|
372
|
+
// Transport-managed (proxy/cookie): send credentials so the
|
|
373
|
+
// session cookie reaches the credential-injecting transport.
|
|
374
|
+
...(this.transportManaged ? { credentials: 'include' } : {}),
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
catch (error) {
|
|
378
|
+
// Abort = teardown (the loop already knows it's closed); otherwise a
|
|
379
|
+
// network error is transient → reconnect.
|
|
380
|
+
if (signal.aborted)
|
|
381
|
+
return { kind: 'transient' };
|
|
382
|
+
return { kind: 'transient', error };
|
|
383
|
+
}
|
|
384
|
+
if (response.ok) {
|
|
385
|
+
if (!response.body)
|
|
386
|
+
return { kind: 'transient' };
|
|
387
|
+
return { kind: 'open', body: response.body };
|
|
388
|
+
}
|
|
389
|
+
if (response.status === 401) {
|
|
390
|
+
const apiError = await parseErrorBody(response);
|
|
391
|
+
return { kind: 'terminal', error: new errors_1.ZarelAuthError(apiError.message, 'unauthorized') };
|
|
392
|
+
}
|
|
393
|
+
// 408/429/5xx are retryable (transient); 403 + other 4xx are terminal.
|
|
394
|
+
if (RETRYABLE_STATUS_CODES.has(response.status)) {
|
|
395
|
+
return { kind: 'transient' };
|
|
396
|
+
}
|
|
397
|
+
return { kind: 'terminal', error: await parseErrorBody(response) };
|
|
398
|
+
};
|
|
399
|
+
return (0, sse_client_1.runEventStream)({ connect, handlers, options });
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Spec 2 — POST one MCP JSON-RPC message to a stateless MCP transport path
|
|
403
|
+
* (POST /runtime/mcp) and return the typed JSON-RPC response. Reuses the
|
|
404
|
+
* SHARED auth authority (`resolveAuthHeaders`, QI-001) and the pure SSE
|
|
405
|
+
* de-framer (`extractMcpResponse`), accepting either an `application/json`
|
|
406
|
+
* body or a single `text/event-stream` frame. Unlike `request()` this does
|
|
407
|
+
* NOT run the `{success,data}` envelope unwrap (MCP is bare JSON-RPC) and
|
|
408
|
+
* makes a SINGLE attempt — no retry, no Idempotency-Key — because a
|
|
409
|
+
* `tools/call` may be a non-idempotent mutation that must never be silently
|
|
410
|
+
* re-issued. A protocol-level JSON-RPC error is returned in the union (not
|
|
411
|
+
* thrown); transport failures throw exactly as the REST path (401 →
|
|
412
|
+
* ZarelAuthError, other non-ok → ZarelAPIError).
|
|
413
|
+
*/
|
|
414
|
+
async postMcp(path, message, requestOptions) {
|
|
415
|
+
const authHeaders = await (0, auth_headers_1.resolveAuthHeaders)(this.token, this.transportManaged, this.requireTokenCode);
|
|
416
|
+
const url = buildUrl(this.baseUrl, path);
|
|
417
|
+
const headers = {
|
|
418
|
+
'User-Agent': version_1.USER_AGENT,
|
|
419
|
+
...(this.apiVersion !== undefined ? { [API_VERSION_HEADER]: this.apiVersion } : {}),
|
|
420
|
+
...authHeaders,
|
|
421
|
+
'Content-Type': 'application/json',
|
|
422
|
+
'Accept': 'application/json, text/event-stream',
|
|
423
|
+
};
|
|
424
|
+
const response = await this.fetchWithTimeout(url, {
|
|
425
|
+
method: 'POST',
|
|
426
|
+
headers,
|
|
427
|
+
body: JSON.stringify(message),
|
|
428
|
+
// Transport-managed (proxy/cookie): send credentials so the session
|
|
429
|
+
// cookie reaches the credential-injecting transport.
|
|
430
|
+
...(this.transportManaged ? { credentials: 'include' } : {}),
|
|
431
|
+
}, requestOptions?.signal);
|
|
432
|
+
if (!response.ok) {
|
|
433
|
+
if (response.status === 401) {
|
|
434
|
+
const apiError = await parseErrorBody(response);
|
|
435
|
+
throw new errors_1.ZarelAuthError(apiError.message, 'unauthorized');
|
|
436
|
+
}
|
|
437
|
+
throw await parseErrorBody(response);
|
|
438
|
+
}
|
|
439
|
+
const bodyText = await response.text();
|
|
440
|
+
return (0, mcp_1.extractMcpResponse)(response.headers.get('content-type'), bodyText);
|
|
441
|
+
}
|
|
442
|
+
async fetchWithTimeout(url, init, signal) {
|
|
443
|
+
if (signal?.aborted) {
|
|
444
|
+
throw createAbortError();
|
|
445
|
+
}
|
|
446
|
+
const controller = new AbortController();
|
|
447
|
+
const timer = setTimeout(() => controller.abort(), this.timeout);
|
|
448
|
+
const onAbort = () => {
|
|
449
|
+
controller.abort();
|
|
450
|
+
};
|
|
451
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
452
|
+
try {
|
|
453
|
+
return await this.fetchFn(url, { ...init, signal: controller.signal });
|
|
454
|
+
}
|
|
455
|
+
catch (error) {
|
|
456
|
+
if (isAbortError(error)) {
|
|
457
|
+
if (signal?.aborted) {
|
|
458
|
+
throw createAbortError();
|
|
459
|
+
}
|
|
460
|
+
throw new errors_1.ZarelTimeoutError(this.timeout);
|
|
461
|
+
}
|
|
462
|
+
throw error;
|
|
463
|
+
}
|
|
464
|
+
finally {
|
|
465
|
+
signal?.removeEventListener('abort', onAbort);
|
|
466
|
+
clearTimeout(timer);
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
470
|
+
exports.FetchClient = FetchClient;
|
|
471
|
+
//# sourceMappingURL=fetch-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetch-client.js","sourceRoot":"","sources":["../../src/_internal/fetch-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { HttpMethod } from './fetch-client';
|
|
2
|
+
/** Passed to `onRequest`. `headers` is MUTABLE — mutate it in place to add or
|
|
3
|
+
* override outgoing headers (the only mutable interceptor surface). */
|
|
4
|
+
export interface RequestInterceptorContext {
|
|
5
|
+
method: HttpMethod;
|
|
6
|
+
url: string;
|
|
7
|
+
headers: Record<string, string>;
|
|
8
|
+
attempt: number;
|
|
9
|
+
}
|
|
10
|
+
/** Passed to `onResponse` for every HTTP response received (any status). Read-only. */
|
|
11
|
+
export interface ResponseInterceptorContext {
|
|
12
|
+
method: HttpMethod;
|
|
13
|
+
url: string;
|
|
14
|
+
status: number;
|
|
15
|
+
attempt: number;
|
|
16
|
+
}
|
|
17
|
+
/** Passed to `onError` only for a transport failure with no HTTP response
|
|
18
|
+
* (network error / timeout). Read-only — no `status` by construction. */
|
|
19
|
+
export interface ErrorInterceptorContext {
|
|
20
|
+
method: HttpMethod;
|
|
21
|
+
url: string;
|
|
22
|
+
error: unknown;
|
|
23
|
+
attempt: number;
|
|
24
|
+
}
|
|
25
|
+
export interface Interceptors {
|
|
26
|
+
/** Runs after the transport assembles the per-attempt headers (auth,
|
|
27
|
+
* idempotency, identity). May mutate `ctx.headers`. A throw ABORTS the
|
|
28
|
+
* request (no network call, no retry) — a legitimate pre-flight veto. */
|
|
29
|
+
onRequest?: (ctx: RequestInterceptorContext) => void | Promise<void>;
|
|
30
|
+
/** Observes every HTTP response (any status). A throw is swallowed. */
|
|
31
|
+
onResponse?: (ctx: ResponseInterceptorContext) => void | Promise<void>;
|
|
32
|
+
/** Observes a no-response transport failure. A throw is swallowed. */
|
|
33
|
+
onError?: (ctx: ErrorInterceptorContext) => void | Promise<void>;
|
|
34
|
+
}
|
|
35
|
+
/** Invoke `onResponse`, swallowing any throw so an observation hook can never
|
|
36
|
+
* mask the real response or alter control flow. */
|
|
37
|
+
export declare function runOnResponse(interceptors: Interceptors | undefined, ctx: ResponseInterceptorContext): Promise<void>;
|
|
38
|
+
/** Invoke `onError`, swallowing any throw (same rationale as `runOnResponse`). */
|
|
39
|
+
export declare function runOnError(interceptors: Interceptors | undefined, ctx: ErrorInterceptorContext): Promise<void>;
|
|
40
|
+
//# sourceMappingURL=interceptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../src/_internal/interceptors.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;wEACwE;AACxE,MAAM,WAAW,yBAAyB;IACtC,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,uFAAuF;AACvF,MAAM,WAAW,0BAA0B;IACvC,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;0EAC0E;AAC1E,MAAM,WAAW,uBAAuB;IACpC,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IACzB;;8EAE0E;IAC1E,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,yBAAyB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,uEAAuE;IACvE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE;AAED;oDACoD;AACpD,wBAAsB,aAAa,CAC/B,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,GAAG,EAAE,0BAA0B,GAChC,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,kFAAkF;AAClF,wBAAsB,UAAU,CAC5B,YAAY,EAAE,YAAY,GAAG,SAAS,EACtC,GAAG,EAAE,uBAAuB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runOnResponse = runOnResponse;
|
|
4
|
+
exports.runOnError = runOnError;
|
|
5
|
+
/** Invoke `onResponse`, swallowing any throw so an observation hook can never
|
|
6
|
+
* mask the real response or alter control flow. */
|
|
7
|
+
async function runOnResponse(interceptors, ctx) {
|
|
8
|
+
if (!interceptors?.onResponse)
|
|
9
|
+
return;
|
|
10
|
+
try {
|
|
11
|
+
await interceptors.onResponse(ctx);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
// swallow — observation hooks must not corrupt the request outcome
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/** Invoke `onError`, swallowing any throw (same rationale as `runOnResponse`). */
|
|
18
|
+
async function runOnError(interceptors, ctx) {
|
|
19
|
+
if (!interceptors?.onError)
|
|
20
|
+
return;
|
|
21
|
+
try {
|
|
22
|
+
await interceptors.onError(ctx);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// swallow
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=interceptors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../src/_internal/interceptors.ts"],"names":[],"mappings":";;AA8CA,sCAUC;AAGD,gCAUC;AAzBD;oDACoD;AAC7C,KAAK,UAAU,aAAa,CAC/B,YAAsC,EACtC,GAA+B;IAE/B,IAAI,CAAC,YAAY,EAAE,UAAU;QAAE,OAAO;IACtC,IAAI,CAAC;QACD,MAAM,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACL,mEAAmE;IACvE,CAAC;AACL,CAAC;AAED,kFAAkF;AAC3E,KAAK,UAAU,UAAU,CAC5B,YAAsC,EACtC,GAA4B;IAE5B,IAAI,CAAC,YAAY,EAAE,OAAO;QAAE,OAAO;IACnC,IAAI,CAAC;QACD,MAAM,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACL,UAAU;IACd,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { McpJsonRpcResponse } from '../types/mcp';
|
|
2
|
+
/**
|
|
3
|
+
* Extract the typed JSON-RPC response from an MCP transport reply. The server
|
|
4
|
+
* frames `text/event-stream` as a single `message` data frame; everything else
|
|
5
|
+
* (application/json, or a JSON body with no/odd content-type) is parsed
|
|
6
|
+
* directly. A protocol-level JSON-RPC error is RETURNED in the union (the caller
|
|
7
|
+
* discriminates with `'error' in res`); a body that is not a valid JSON-RPC
|
|
8
|
+
* response throws `ZarelError`.
|
|
9
|
+
*/
|
|
10
|
+
export declare function extractMcpResponse(contentType: string | null, bodyText: string): McpJsonRpcResponse;
|
|
11
|
+
//# sourceMappingURL=mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/_internal/mcp.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA2CvD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,CAgBnG"}
|