@zackbart/connecta 0.3.0 → 0.4.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/CHANGELOG.md +60 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +62 -0
- package/dist/catalog.js.map +1 -1
- package/dist/connectors/api.d.ts.map +1 -1
- package/dist/connectors/api.js +7 -40
- package/dist/connectors/api.js.map +1 -1
- package/dist/errors.d.ts +20 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +39 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/json-schema.d.ts +3 -0
- package/dist/json-schema.d.ts.map +1 -0
- package/dist/json-schema.js +6 -0
- package/dist/json-schema.js.map +1 -0
- package/dist/meta-tools.d.ts +31 -2
- package/dist/meta-tools.d.ts.map +1 -1
- package/dist/meta-tools.js +57 -9
- package/dist/meta-tools.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5 -1
- package/dist/server.js.map +1 -1
- package/dist/validate.d.ts +39 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +66 -0
- package/dist/validate.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +5 -1
- package/src/catalog.ts +61 -0
- package/src/connectors/api.ts +6 -51
- package/src/errors.ts +45 -2
- package/src/index.ts +22 -0
- package/src/json-schema.ts +11 -0
- package/src/meta-tools.ts +66 -12
- package/src/server.ts +7 -1
- package/src/validate.ts +96 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,66 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this package are documented here.
|
|
4
4
|
|
|
5
|
+
## 0.4.0 — 2026-07-25
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- `ConnectorCallError` accepts `retryAfterMs` — the wait window a connector
|
|
10
|
+
already knows (a `Retry-After` header, say) and until now had no way to
|
|
11
|
+
report. It round-trips into the value-mode error envelope as
|
|
12
|
+
`error.retryAfterMs` (and `errorDetails.retryAfterMs` in `batch_call`), so an
|
|
13
|
+
agent that receives the failure can schedule a re-issue instead of guessing,
|
|
14
|
+
and the engine's retry loop waits that long in place of its exponential
|
|
15
|
+
guess. A reported window is honoured exactly or not at all: up to 10 s the
|
|
16
|
+
engine waits it in full; beyond that it declines the retry and returns the
|
|
17
|
+
failure immediately rather than retrying inside a rate-limit window it was
|
|
18
|
+
told about. The reported value is never capped.
|
|
19
|
+
- `ConnectaConfig.defaultToolTimeoutMs` — a deadline for `call_tool`/
|
|
20
|
+
`batch_call` calls that pass no `timeoutMs`, giving the connector both a
|
|
21
|
+
budget (`ctx.timeoutMs`) and a cancellation signal (`ctx.signal`) on the
|
|
22
|
+
common path, as `execute_code` host calls have always had. **Opt-in and unset
|
|
23
|
+
by default**: switching it on globally would put a deadline on every call in
|
|
24
|
+
every existing deployment, and the failure mode is a working long-running
|
|
25
|
+
call starting to time out. An explicit per-call `timeoutMs` always wins.
|
|
26
|
+
- `validateToolInput(schema, args, { address, logger? })` — the argument
|
|
27
|
+
validation `api()` performs, extracted to `src/validate.ts` and exported so
|
|
28
|
+
connectors that implement the `Connector` interface directly can use it too.
|
|
29
|
+
Previously enforcement lived inside `api()`, so a hand-rolled connector whose
|
|
30
|
+
manifest declared `additionalProperties: false` had nothing enforcing it: an
|
|
31
|
+
unknown argument key was silently dropped, an empty body went upstream, and a
|
|
32
|
+
200 was reported back as a successful write. It **returns** the non-retryable
|
|
33
|
+
`invalid_args` `ConnectorCallError` (or `null`) instead of throwing, so the
|
|
34
|
+
connector owns the decision — its own error prose, or stripping a
|
|
35
|
+
connector-wide convention argument the tool schema doesn't declare. `api()`
|
|
36
|
+
now calls it; behaviour is unchanged (`test/api-connector.test.ts` is
|
|
37
|
+
untouched).
|
|
38
|
+
- `@zackbart/connecta/json-schema` — re-exports `Validator` from
|
|
39
|
+
`@cfworker/json-schema`. It was already a direct dependency but not public,
|
|
40
|
+
so downstream build-time validation (a manifest generator asserting its own
|
|
41
|
+
output) resolved it only through npm hoisting.
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- `compactSchema` — the rendering behind `search_tools` and `describe_tools`,
|
|
46
|
+
and for most models the only description of a tool they ever read — dropped
|
|
47
|
+
`const` and did not handle `allOf`. A discriminated union, the standard shape
|
|
48
|
+
for "one of these request bodies", therefore rendered as several textually
|
|
49
|
+
identical branches with the field that selects them erased
|
|
50
|
+
(`{ type: string, emoji: string } | { type: string, external: {…} }`), and a
|
|
51
|
+
schema using `allOf` fell through to raw `JSON.stringify` — on a real
|
|
52
|
+
connector that measured *longer* than the schema it was meant to compact.
|
|
53
|
+
`const` now renders as a literal, so unions are self-documenting again, and
|
|
54
|
+
`allOf` composes with the schema's own shape joined by `&` rather than
|
|
55
|
+
replacing it: a sibling `properties`, `$ref`, `enum`, `const`, or `items` is
|
|
56
|
+
no longer silently dropped, and an empty `allOf` beside real properties no
|
|
57
|
+
longer erases the whole schema.
|
|
58
|
+
- An aborted call — including one the engine itself cancelled at its deadline —
|
|
59
|
+
was classified `connector_call_failed`/`retryable: false`. An aborted `fetch`
|
|
60
|
+
rejects with a `DOMException` named `AbortError` whose message matches
|
|
61
|
+
neither classification regex. `classifyCallError` now checks the name before
|
|
62
|
+
the message text and classifies it as a retryable `timeout`, so connectors
|
|
63
|
+
that pass `ctx.signal` through no longer have to special-case it.
|
|
64
|
+
|
|
5
65
|
## 0.3.0 — 2026-07-24
|
|
6
66
|
|
|
7
67
|
### Added
|
package/dist/catalog.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAItD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,OAAO,GACZ,MAAM,GAAG,SAAS,CAMpB;AAiDD,8EAA8E;AAC9E,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CASxD;
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAItD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,OAAO,GACZ,MAAM,GAAG,SAAS,CAMpB;AAiDD,8EAA8E;AAC9E,wBAAgB,SAAS,CACvB,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,MAAM,GACZ,KAAK,CAAC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CASxD;AAuID,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAexD"}
|
package/dist/catalog.js
CHANGED
|
@@ -65,6 +65,40 @@ export function rankTools(tools, query) {
|
|
|
65
65
|
function refName(ref) {
|
|
66
66
|
return ref.split("/").pop() ?? ref;
|
|
67
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Whether a schema declares anything renderSchema knows how to render on its
|
|
70
|
+
* own. Used to decide if the non-allOf half of a schema is worth rendering:
|
|
71
|
+
* without this, a plain `{ allOf: [...] }` would render its (empty) local half
|
|
72
|
+
* through the raw-JSON fallback and emit `{} & …`.
|
|
73
|
+
*/
|
|
74
|
+
function declaresShape(s) {
|
|
75
|
+
return (typeof s.$ref === "string" ||
|
|
76
|
+
Array.isArray(s.oneOf) ||
|
|
77
|
+
Array.isArray(s.anyOf) ||
|
|
78
|
+
Array.isArray(s.enum) ||
|
|
79
|
+
s.const !== undefined ||
|
|
80
|
+
s.items !== undefined ||
|
|
81
|
+
s.properties !== undefined ||
|
|
82
|
+
s.type !== undefined);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Parenthesize a top-level union so it doesn't read as part of a surrounding
|
|
86
|
+
* `&`. Only separators outside braces count, so a nested union or a property
|
|
87
|
+
* description containing a pipe doesn't trigger stray parentheses.
|
|
88
|
+
*/
|
|
89
|
+
function grouped(part) {
|
|
90
|
+
let nesting = 0;
|
|
91
|
+
for (let i = 0; i < part.length; i += 1) {
|
|
92
|
+
const char = part[i];
|
|
93
|
+
if (char === "{" || char === "(" || char === "[")
|
|
94
|
+
nesting += 1;
|
|
95
|
+
else if (char === "}" || char === ")" || char === "]")
|
|
96
|
+
nesting -= 1;
|
|
97
|
+
else if (nesting === 0 && part.startsWith(" | ", i))
|
|
98
|
+
return `(${part})`;
|
|
99
|
+
}
|
|
100
|
+
return part;
|
|
101
|
+
}
|
|
68
102
|
function renderSchema(schema, defs, seen, depth) {
|
|
69
103
|
if (depth > 4)
|
|
70
104
|
return "…";
|
|
@@ -72,6 +106,28 @@ function renderSchema(schema, defs, seen, depth) {
|
|
|
72
106
|
return JSON.stringify(schema);
|
|
73
107
|
}
|
|
74
108
|
const s = schema;
|
|
109
|
+
// allOf composes rather than replaces: it is checked before every other
|
|
110
|
+
// keyword, and renders the schema's own shape alongside its members instead
|
|
111
|
+
// of returning early. A schema carrying both allOf and properties (the usual
|
|
112
|
+
// OpenAPI-derived "extend this base" shape, and equally legal with $ref,
|
|
113
|
+
// enum, const, or items) would otherwise silently drop whichever half lost
|
|
114
|
+
// the branch race. The schema's own shape comes first, being the more
|
|
115
|
+
// specific half, and is rendered at the current depth because its members
|
|
116
|
+
// sit at this nesting level, not one below.
|
|
117
|
+
if (Array.isArray(s.allOf)) {
|
|
118
|
+
const { allOf: _members, ...own } = s;
|
|
119
|
+
const parts = declaresShape(own)
|
|
120
|
+
? [renderSchema(own, defs, seen, depth)]
|
|
121
|
+
: [];
|
|
122
|
+
for (const member of s.allOf) {
|
|
123
|
+
parts.push(renderSchema(member, defs, seen, depth + 1));
|
|
124
|
+
}
|
|
125
|
+
if (parts.length === 0)
|
|
126
|
+
return "unknown";
|
|
127
|
+
if (parts.length === 1)
|
|
128
|
+
return parts[0];
|
|
129
|
+
return parts.map(grouped).join(" & ");
|
|
130
|
+
}
|
|
75
131
|
if (typeof s.$ref === "string") {
|
|
76
132
|
const name = refName(s.$ref);
|
|
77
133
|
if (seen.has(name))
|
|
@@ -92,6 +148,12 @@ function renderSchema(schema, defs, seen, depth) {
|
|
|
92
148
|
if (Array.isArray(s.enum)) {
|
|
93
149
|
return s.enum.map((value) => JSON.stringify(value)).join(" | ");
|
|
94
150
|
}
|
|
151
|
+
// Checked before type/properties so a discriminator like
|
|
152
|
+
// { type: "string", const: "emoji" } renders as "emoji" rather than string.
|
|
153
|
+
// JSON.stringify(undefined) returns undefined (not a string), so an explicit
|
|
154
|
+
// `const: undefined` must fall through to the regular type rendering.
|
|
155
|
+
if (s.const !== undefined)
|
|
156
|
+
return JSON.stringify(s.const);
|
|
95
157
|
const type = s.type;
|
|
96
158
|
if (type === "array" || s.items) {
|
|
97
159
|
const items = s.items
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../src/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/connectors/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/connectors/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,SAAS,EACT,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,eAAe,EAEhB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,0EAA0E;IAC1E,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC3E;AAED,MAAM,WAAW,UAAU;IACzB,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mFAAmF;IACnF,UAAU,CAAC,EAAE,yBAAyB,CAAC;IACvC,oDAAoD;IACpD,cAAc,CAAC,EAAE,CACf,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,gBAAgB,KAClB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC,6DAA6D;IAC7D,eAAe,CAAC,EAAE,CAChB,MAAM,EAAE,yBAAyB,EACjC,GAAG,EAAE,gBAAgB,KAClB,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACnC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,SAAS,CAsC3D"}
|
package/dist/connectors/api.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ConnectorCallError } from "../errors.js";
|
|
1
|
+
import { validateToolInput } from "../validate.js";
|
|
3
2
|
/**
|
|
4
3
|
* A connector defined entirely in code: static tool defs + fetch handlers.
|
|
5
4
|
* Tool inputs are plain JSON Schema objects (bring your own zod-to-json-schema
|
|
@@ -21,27 +20,6 @@ export function api(id, opts) {
|
|
|
21
20
|
}));
|
|
22
21
|
const byName = new Map(opts.tools.map((t) => [t.name, t]));
|
|
23
22
|
const validateArgs = opts.validateArgs ?? true;
|
|
24
|
-
// Lazy per-tool validator cache; null marks a schema the validator rejected
|
|
25
|
-
// (warned once, then passed through rather than breaking a working tool).
|
|
26
|
-
const validators = new Map();
|
|
27
|
-
const disableValidation = (tool, ctx, err) => {
|
|
28
|
-
validators.set(tool.name, null);
|
|
29
|
-
ctx.logger.warn(`[connecta] tool "${id}.${tool.name}" has an inputSchema the validator cannot use (${err instanceof Error ? err.message : String(err)}) — arguments are not validated`);
|
|
30
|
-
};
|
|
31
|
-
const validatorFor = (tool, ctx) => {
|
|
32
|
-
let validator = validators.get(tool.name);
|
|
33
|
-
if (validator === undefined) {
|
|
34
|
-
try {
|
|
35
|
-
validator = new Validator(tool.inputSchema, "2020-12", false);
|
|
36
|
-
validators.set(tool.name, validator);
|
|
37
|
-
}
|
|
38
|
-
catch (err) {
|
|
39
|
-
disableValidation(tool, ctx, err);
|
|
40
|
-
validator = null;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return validator;
|
|
44
|
-
};
|
|
45
23
|
return {
|
|
46
24
|
id,
|
|
47
25
|
title: opts.title,
|
|
@@ -61,23 +39,12 @@ export function api(id, opts) {
|
|
|
61
39
|
}
|
|
62
40
|
const input = args ?? {};
|
|
63
41
|
if (validateArgs && tool.inputSchema) {
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// e.g. an unresolvable $ref — surfaces on first validate, not compile.
|
|
71
|
-
disableValidation(tool, ctx, err);
|
|
72
|
-
}
|
|
73
|
-
if (result && !result.valid) {
|
|
74
|
-
const units = result.errors.filter((u) => u.instanceLocation !== "#");
|
|
75
|
-
const detail = (units.length > 0 ? units : result.errors)
|
|
76
|
-
.slice(0, 3)
|
|
77
|
-
.map((u) => `${u.instanceLocation}: ${u.error}`)
|
|
78
|
-
.join("; ");
|
|
79
|
-
throw new ConnectorCallError("invalid_args", `Invalid arguments for "${id}.${name}": ${detail || "input does not match the tool's inputSchema"}`);
|
|
80
|
-
}
|
|
42
|
+
const invalid = validateToolInput(tool.inputSchema, input, {
|
|
43
|
+
address: `${id}.${name}`,
|
|
44
|
+
logger: ctx.logger,
|
|
45
|
+
});
|
|
46
|
+
if (invalid)
|
|
47
|
+
throw invalid;
|
|
81
48
|
}
|
|
82
49
|
return tool.handler(input, ctx);
|
|
83
50
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/connectors/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/connectors/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAsDnD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,IAAgB;IAC9C,MAAM,IAAI,GAAc,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,WAAW,EAAE,CAAC,CAAC,WAAW;KAC3B,CAAC,CAAC,CAAC;IACJ,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;IAC/C,OAAO;QACL,EAAE;QACF,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,WAAW,EAAE,IAAI;QACjB,KAAK,CAAC,SAAS;YACb,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG;YAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,mBAAmB,EAAE,GAAG,CAAC,CAAC;YACjE,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,IAAI,YAAY,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE;oBACzD,OAAO,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE;oBACxB,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;gBACH,IAAI,OAAO;oBAAE,MAAM,OAAO,CAAC;YAC7B,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/errors.d.ts
CHANGED
|
@@ -7,12 +7,26 @@ export type ConnectorCallErrorCode = "timeout" | "auth_required" | "rate_limited
|
|
|
7
7
|
* retryable timeout — this class is the escape hatch. `retryable` defaults per
|
|
8
8
|
* code (timeout, rate_limited, and unavailable retry; the rest do not) and may
|
|
9
9
|
* be overridden.
|
|
10
|
+
*
|
|
11
|
+
* `retryAfterMs` carries a wait window the connector already knows — a
|
|
12
|
+
* `Retry-After` header, say — so the engine can wait that long instead of
|
|
13
|
+
* guessing, and so an agent that receives the failure can decide when to
|
|
14
|
+
* re-issue.
|
|
10
15
|
*/
|
|
11
16
|
export declare class ConnectorCallError extends Error {
|
|
12
17
|
readonly code: ConnectorCallErrorCode;
|
|
13
18
|
readonly retryable: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Connector-known wait window in ms before this call is worth repeating,
|
|
21
|
+
* or undefined when the connector reported none. Always an own property —
|
|
22
|
+
* under ES2022 class fields the declaration itself defines it, so guarding
|
|
23
|
+
* the assignment would not keep it off the instance. Keeping the window out
|
|
24
|
+
* of the wire format is `classifyCallError`'s job, not this constructor's.
|
|
25
|
+
*/
|
|
26
|
+
readonly retryAfterMs?: number;
|
|
14
27
|
constructor(code: ConnectorCallErrorCode, message: string, opts?: {
|
|
15
28
|
retryable?: boolean;
|
|
29
|
+
retryAfterMs?: number;
|
|
16
30
|
cause?: unknown;
|
|
17
31
|
});
|
|
18
32
|
}
|
|
@@ -21,6 +35,12 @@ export interface CallErrorDetails {
|
|
|
21
35
|
code: string;
|
|
22
36
|
message: string;
|
|
23
37
|
retryable: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Connector-reported wait window in ms, when known. Reported verbatim — the
|
|
40
|
+
* engine bounds how long it will itself wait, but the caller sees the real
|
|
41
|
+
* window so it can schedule a re-issue.
|
|
42
|
+
*/
|
|
43
|
+
retryAfterMs?: number;
|
|
24
44
|
}
|
|
25
45
|
/** Message-text fallback used when an error carries no typed classification. */
|
|
26
46
|
export declare function messageLooksRetryable(message: string): boolean;
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,eAAe,GACf,cAAc,GACd,aAAa,GACb,cAAc,GACd,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,MAAM,MAAM,sBAAsB,GAC9B,SAAS,GACT,eAAe,GACf,cAAc,GACd,aAAa,GACb,cAAc,GACd,uBAAuB,CAAC;AAkB5B;;;;;;;;;;;;GAYG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;gBAG7B,IAAI,EAAE,sBAAsB,EAC5B,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAW7E;AAED,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,YAAY,SAA0B,GACrC,gBAAgB,CA0BlB"}
|
package/dist/errors.js
CHANGED
|
@@ -8,6 +8,14 @@ const RETRYABLE_BY_CODE = {
|
|
|
8
8
|
invalid_args: false,
|
|
9
9
|
connector_call_failed: false,
|
|
10
10
|
};
|
|
11
|
+
/** Non-negative integer milliseconds, or undefined for anything else. */
|
|
12
|
+
function normalizeRetryAfterMs(value) {
|
|
13
|
+
if (value === undefined)
|
|
14
|
+
return undefined;
|
|
15
|
+
if (!Number.isFinite(value) || value < 0)
|
|
16
|
+
return undefined;
|
|
17
|
+
return Math.trunc(value);
|
|
18
|
+
}
|
|
11
19
|
/**
|
|
12
20
|
* Throw from `Connector.callTool` (or anything beneath it) to classify a
|
|
13
21
|
* failure exactly. Untyped errors fall back to a message-text heuristic, so a
|
|
@@ -15,15 +23,29 @@ const RETRYABLE_BY_CODE = {
|
|
|
15
23
|
* retryable timeout — this class is the escape hatch. `retryable` defaults per
|
|
16
24
|
* code (timeout, rate_limited, and unavailable retry; the rest do not) and may
|
|
17
25
|
* be overridden.
|
|
26
|
+
*
|
|
27
|
+
* `retryAfterMs` carries a wait window the connector already knows — a
|
|
28
|
+
* `Retry-After` header, say — so the engine can wait that long instead of
|
|
29
|
+
* guessing, and so an agent that receives the failure can decide when to
|
|
30
|
+
* re-issue.
|
|
18
31
|
*/
|
|
19
32
|
export class ConnectorCallError extends Error {
|
|
20
33
|
code;
|
|
21
34
|
retryable;
|
|
35
|
+
/**
|
|
36
|
+
* Connector-known wait window in ms before this call is worth repeating,
|
|
37
|
+
* or undefined when the connector reported none. Always an own property —
|
|
38
|
+
* under ES2022 class fields the declaration itself defines it, so guarding
|
|
39
|
+
* the assignment would not keep it off the instance. Keeping the window out
|
|
40
|
+
* of the wire format is `classifyCallError`'s job, not this constructor's.
|
|
41
|
+
*/
|
|
42
|
+
retryAfterMs;
|
|
22
43
|
constructor(code, message, opts = {}) {
|
|
23
44
|
super(message, opts.cause !== undefined ? { cause: opts.cause } : undefined);
|
|
24
45
|
this.name = "ConnectorCallError";
|
|
25
46
|
this.code = code;
|
|
26
47
|
this.retryable = opts.retryable ?? RETRYABLE_BY_CODE[code];
|
|
48
|
+
this.retryAfterMs = normalizeRetryAfterMs(opts.retryAfterMs);
|
|
27
49
|
}
|
|
28
50
|
}
|
|
29
51
|
const RETRYABLE_MESSAGE_RE = /timeout|timed out|econnreset|econnrefused|temporar|rate.?limit|429|502|503|504|refcountedcanceler|different request/i;
|
|
@@ -39,7 +61,23 @@ export function messageLooksRetryable(message) {
|
|
|
39
61
|
*/
|
|
40
62
|
export function classifyCallError(err, fallbackCode = "connector_call_failed") {
|
|
41
63
|
if (err instanceof ConnectorCallError) {
|
|
42
|
-
return {
|
|
64
|
+
return {
|
|
65
|
+
code: err.code,
|
|
66
|
+
message: err.message,
|
|
67
|
+
retryable: err.retryable,
|
|
68
|
+
...(err.retryAfterMs !== undefined
|
|
69
|
+
? { retryAfterMs: err.retryAfterMs }
|
|
70
|
+
: {}),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// An aborted fetch rejects with a DOMException named "AbortError" whose
|
|
74
|
+
// message ("The operation was aborted", and variants across runtimes) matches
|
|
75
|
+
// neither heuristic below — so a call the engine itself cancelled would read
|
|
76
|
+
// as a non-retryable failure, the opposite of the truth. Note this also
|
|
77
|
+
// covers an abort the connector triggered for its own reasons; running out of
|
|
78
|
+
// time is by far the likelier cause and retryable/timeout is the safer read.
|
|
79
|
+
if (err instanceof Error && err.name === "AbortError") {
|
|
80
|
+
return { code: "timeout", message: err.message, retryable: true };
|
|
43
81
|
}
|
|
44
82
|
const message = err instanceof Error ? err.message : String(err);
|
|
45
83
|
return {
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gBAAgB;AAWhB,MAAM,iBAAiB,GAA4C;IACjE,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;IACnB,qBAAqB,EAAE,KAAK;CAC7B,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gBAAgB;AAWhB,MAAM,iBAAiB,GAA4C;IACjE,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,KAAK;IACpB,YAAY,EAAE,KAAK;IACnB,qBAAqB,EAAE,KAAK;CAC7B,CAAC;AAEF,yEAAyE;AACzE,SAAS,qBAAqB,CAAC,KAAyB;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,IAAI,CAAyB;IAC7B,SAAS,CAAU;IAC5B;;;;;;OAMG;IACM,YAAY,CAAU;IAE/B,YACE,IAA4B,EAC5B,OAAe,EACf,OAAwE,EAAE;QAE1E,KAAK,CACH,OAAO,EACP,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7D,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/D,CAAC;CACF;AAeD,MAAM,oBAAoB,GACxB,sHAAsH,CAAC;AACzH,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEhD,gFAAgF;AAChF,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACnD,OAAO,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAAY,EACZ,YAAY,GAAG,uBAAuB;IAEtC,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;QACtC,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,GAAG,CAAC,GAAG,CAAC,YAAY,KAAK,SAAS;gBAChC,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE;gBACpC,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IACD,wEAAwE;IACxE,8EAA8E;IAC9E,6EAA6E;IAC7E,wEAAwE;IACxE,8EAA8E;IAC9E,6EAA6E;IAC7E,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO;QACL,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY;QACjE,OAAO;QACP,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;KAC9C,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -49,6 +49,22 @@ export interface ConnectaConfig {
|
|
|
49
49
|
* stash the full text for get_result paging. Default 50_000.
|
|
50
50
|
*/
|
|
51
51
|
maxResultBytes?: number;
|
|
52
|
+
/**
|
|
53
|
+
* Deadline (ms) applied to call_tool/batch_call calls that pass no
|
|
54
|
+
* `timeoutMs`, giving the connector both a budget (`ctx.timeoutMs`) and a
|
|
55
|
+
* cancellation signal (`ctx.signal`). An explicit per-call `timeoutMs` always
|
|
56
|
+
* wins. **Opt-in — undefined by default**, because switching it on globally
|
|
57
|
+
* would put a deadline on every call in an existing deployment and the
|
|
58
|
+
* failure mode is a working long-running call starting to time out.
|
|
59
|
+
* `execute_code` host calls are unaffected; they already carry a 15 s bound.
|
|
60
|
+
*
|
|
61
|
+
* Bounds a single attempt, not the whole call — the same as an explicit
|
|
62
|
+
* `timeoutMs` has always done. A call that also passes `maxRetries` can
|
|
63
|
+
* therefore run to roughly `(maxRetries + 1)` times this value plus backoff.
|
|
64
|
+
* `maxRetries` defaults to 0, so this is the total for every call that does
|
|
65
|
+
* not explicitly ask to retry.
|
|
66
|
+
*/
|
|
67
|
+
defaultToolTimeoutMs?: number;
|
|
52
68
|
serverInfo?: {
|
|
53
69
|
name?: string;
|
|
54
70
|
version?: string;
|
|
@@ -83,6 +99,8 @@ export { remoteMcp } from "./connectors/remote-mcp.js";
|
|
|
83
99
|
export { api } from "./connectors/api.js";
|
|
84
100
|
export { ConnectorCallError } from "./errors.js";
|
|
85
101
|
export type { ConnectorCallErrorCode, CallErrorDetails } from "./errors.js";
|
|
102
|
+
export { validateToolInput } from "./validate.js";
|
|
103
|
+
export type { ValidateToolInputOptions } from "./validate.js";
|
|
86
104
|
export { bearerToken } from "./auth/bearer.js";
|
|
87
105
|
export { memoryStorage } from "./storage/memory.js";
|
|
88
106
|
export { CONNECTA_VERSION } from "./version.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,KAAK,EACV,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,WAAW,EACX,SAAS,EACT,MAAM,EACP,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,6EAA6E;IAC7E,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IACnC,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,8DAA8D;QAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,yDAAyD;QACzD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iFAAiF;QACjF,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;KACrE,CAAC;IACF,6EAA6E;IAC7E,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,wFAAwF;IACxF,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7E,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAoBD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -52,6 +52,7 @@ export function createConnecta(config) {
|
|
|
52
52
|
activityReadGate: config.activityReadGate,
|
|
53
53
|
activityDeploymentId: config.activityDeploymentId,
|
|
54
54
|
executor: config.executor,
|
|
55
|
+
defaultToolTimeoutMs: config.defaultToolTimeoutMs,
|
|
55
56
|
credentialVault,
|
|
56
57
|
deploymentInfo: config.deploymentInfo,
|
|
57
58
|
branding: config.branding,
|
|
@@ -66,6 +67,10 @@ export function createConnecta(config) {
|
|
|
66
67
|
export { remoteMcp } from "./connectors/remote-mcp.js";
|
|
67
68
|
export { api } from "./connectors/api.js";
|
|
68
69
|
export { ConnectorCallError } from "./errors.js";
|
|
70
|
+
// The same argument validation api() performs, usable by connectors that
|
|
71
|
+
// implement the Connector interface directly. Returns the error rather than
|
|
72
|
+
// throwing so the caller decides what to do with it.
|
|
73
|
+
export { validateToolInput } from "./validate.js";
|
|
69
74
|
export { bearerToken } from "./auth/bearer.js";
|
|
70
75
|
export { memoryStorage } from "./storage/memory.js";
|
|
71
76
|
export { CONNECTA_VERSION } from "./version.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EACV,UAAU,EACV,MAAM,EACN,WAAW,EACX,gBAAgB,GACjB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Public re-export of the JSON Schema validator connecta itself uses, so
|
|
2
|
+
// downstream code that validates at build time (a manifest generator asserting
|
|
3
|
+
// its own output, say) resolves the same implementation and version through an
|
|
4
|
+
// explicit subpath rather than through npm hoisting.
|
|
5
|
+
export { Validator } from "@cfworker/json-schema";
|
|
6
|
+
//# sourceMappingURL=json-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-schema.js","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,+EAA+E;AAC/E,+EAA+E;AAC/E,qDAAqD;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/meta-tools.d.ts
CHANGED
|
@@ -13,6 +13,31 @@ export interface ToolResult {
|
|
|
13
13
|
}
|
|
14
14
|
export declare function jsonResult(obj: unknown): ToolResult;
|
|
15
15
|
export declare function errorResult(message: string): ToolResult;
|
|
16
|
+
/**
|
|
17
|
+
* The longest the engine will park a synchronous inbound request in *waiting
|
|
18
|
+
* alone*. The engine already treats ~15 s as the outer bound of one reasonable
|
|
19
|
+
* connector call (EXECUTE_HOST_CALL_TIMEOUT_MS), so sleeping for minutes trades
|
|
20
|
+
* a fast, informative failure for a hung one. A connector-reported window this
|
|
21
|
+
* long isn't truncated — it's declined (see `retryBackoffMs`) and reported
|
|
22
|
+
* verbatim as `error.retryAfterMs`, so the agent, which can afford to wait,
|
|
23
|
+
* decides when to re-issue.
|
|
24
|
+
*/
|
|
25
|
+
export declare const MAX_RETRY_BACKOFF_MS = 10000;
|
|
26
|
+
/**
|
|
27
|
+
* How long to wait before the next attempt, or `undefined` for "don't retry".
|
|
28
|
+
*
|
|
29
|
+
* A connector that read a `Retry-After` header knows the window exactly, so it
|
|
30
|
+
* is honoured **exactly or not at all**: truncating an exponential *guess* is
|
|
31
|
+
* harmless, but truncating a *known* window means deliberately retrying inside
|
|
32
|
+
* a rate limit — the harm this channel exists to prevent. A window longer than
|
|
33
|
+
* `MAX_RETRY_BACKOFF_MS` therefore declines the retry rather than shortening
|
|
34
|
+
* it. (`retryAfterMs` is normalized non-negative, so `0` means "retry now".)
|
|
35
|
+
* Connectors that report no window keep the historical exponential guess.
|
|
36
|
+
*
|
|
37
|
+
* Waits are per attempt, matching the per-attempt `timeoutMs` race in
|
|
38
|
+
* `runCall`. Exported for direct testing.
|
|
39
|
+
*/
|
|
40
|
+
export declare function retryBackoffMs(attempt: number, retryAfterMs: number | undefined): number | undefined;
|
|
16
41
|
export interface SearchArgs {
|
|
17
42
|
query?: string;
|
|
18
43
|
connector?: string;
|
|
@@ -73,11 +98,14 @@ export interface SkillArgs {
|
|
|
73
98
|
/**
|
|
74
99
|
* The nine meta-tool handlers over a registry. Exported for direct testing;
|
|
75
100
|
* registerMetaTools() wires them onto an McpServer. `opts.maxResultBytes`
|
|
76
|
-
* overrides the registry's default result-size cap.
|
|
77
|
-
*
|
|
101
|
+
* overrides the registry's default result-size cap; `opts.defaultToolTimeoutMs`
|
|
102
|
+
* supplies a deadline for calls that don't carry one. (execute_code, the
|
|
103
|
+
* optional tenth tool, is registered separately by registerExecuteTool.)
|
|
78
104
|
*/
|
|
79
105
|
export declare function createMetaTools(registry: Registry, baseUrl: string, opts?: {
|
|
80
106
|
maxResultBytes?: number;
|
|
107
|
+
/** Deadline applied when a call passes no `timeoutMs`. Off when unset. */
|
|
108
|
+
defaultToolTimeoutMs?: number;
|
|
81
109
|
activity?: ActivityRequestContext;
|
|
82
110
|
}): {
|
|
83
111
|
skills(args?: SkillArgs): Promise<ToolResult>;
|
|
@@ -94,6 +122,7 @@ export declare function createMetaTools(registry: Registry, baseUrl: string, opt
|
|
|
94
122
|
export declare function registerMetaTools(server: McpServer, registry: Registry, ctx: {
|
|
95
123
|
baseUrl: string;
|
|
96
124
|
maxResultBytes?: number;
|
|
125
|
+
defaultToolTimeoutMs?: number;
|
|
97
126
|
activity?: ActivityRequestContext;
|
|
98
127
|
}): void;
|
|
99
128
|
export {};
|
package/dist/meta-tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-tools.d.ts","sourceRoot":"","sources":["../src/meta-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAQvB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AACD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAID,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAOnD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAEvD;
|
|
1
|
+
{"version":3,"file":"meta-tools.d.ts","sourceRoot":"","sources":["../src/meta-tools.ts"],"names":[],"mappings":"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"}
|