@kindgi/tools 0.1.5-rc.0 → 0.1.6-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/define.d.ts.map +1 -1
- package/dist/define.js +52 -2
- package/dist/define.js.map +1 -1
- package/dist/http.js +18 -2
- package/dist/http.js.map +1 -1
- package/dist/idempotency-key.d.ts +25 -0
- package/dist/idempotency-key.d.ts.map +1 -0
- package/dist/idempotency-key.js +33 -0
- package/dist/idempotency-key.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/secret-names.d.ts +9 -0
- package/dist/secret-names.d.ts.map +1 -0
- package/dist/secret-names.js +16 -0
- package/dist/secret-names.js.map +1 -0
- package/dist/types.d.ts +27 -9
- package/dist/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/define.ts +52 -1
- package/src/http.ts +24 -2
- package/src/idempotency-key.ts +41 -0
- package/src/index.ts +2 -0
- package/src/secret-names.ts +17 -0
- package/src/types.ts +27 -9
package/dist/define.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
|
package/dist/define.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
-
import { compileJsonSchema, createSpecRegistry, isZodSchema, loadZodConverter, loadZodConverterSync, toJSONSchemaSync, } from '@kindgi/schema';
|
|
3
|
+
import { compileInlineSchema, compileJsonSchema, createSpecRegistry, isZodSchema, loadZodConverter, loadZodConverterSync, toJSONSchemaSync, } from '@kindgi/schema';
|
|
4
4
|
import { schemaOptions } from './invoke.js';
|
|
5
5
|
import { getToolSpecSynthesizer } from './spec-registry.js';
|
|
6
6
|
import toolSchema from './tool.schema.json' with { type: 'json' };
|
|
@@ -34,6 +34,15 @@ function registry() {
|
|
|
34
34
|
function resolveZodConverterSync() {
|
|
35
35
|
return loadZodConverterSync();
|
|
36
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* For a schema Ajv's strict mode refuses (an authoring lint, not invalid JSON Schema), the way
|
|
39
|
+
* out for a value of any JSON shape. Empty for other failures.
|
|
40
|
+
*/
|
|
41
|
+
function strictHint(cause) {
|
|
42
|
+
return cause instanceof Error && /strict mode/.test(cause.message)
|
|
43
|
+
? '. For a field that may hold any JSON value, `z.json()` (or `{}` in JSON Schema) compiles.'
|
|
44
|
+
: '';
|
|
45
|
+
}
|
|
37
46
|
/**
|
|
38
47
|
* Sanity-check that a candidate JSON Schema compiles as the tool's
|
|
39
48
|
* schemas do (`schemaOptions`): a pack's own tool's as Draft 2020-12 in
|
|
@@ -47,7 +56,7 @@ function compilesAsSchema(schema, where, tool) {
|
|
|
47
56
|
catch (cause) {
|
|
48
57
|
return {
|
|
49
58
|
code: 'invalid-schema',
|
|
50
|
-
message: `Tool ${where} schema does not compile: ${cause instanceof Error ? cause.message : String(cause)}`,
|
|
59
|
+
message: `Tool ${where} schema does not compile: ${cause instanceof Error ? cause.message : String(cause)}${strictHint(cause)}`,
|
|
51
60
|
where,
|
|
52
61
|
cause,
|
|
53
62
|
};
|
|
@@ -192,6 +201,9 @@ function finalizeDefinition(spec, converter, options) {
|
|
|
192
201
|
const badOutput = compilesAsSchema(manifest.output, 'output', manifest);
|
|
193
202
|
if (badOutput)
|
|
194
203
|
return { kind: 'err', error: badOutput };
|
|
204
|
+
const badNeeds = needsSpecProblem(manifest);
|
|
205
|
+
if (badNeeds)
|
|
206
|
+
return { kind: 'err', error: badNeeds };
|
|
195
207
|
const tool = {
|
|
196
208
|
...wireSpec,
|
|
197
209
|
...(inputResolved.value.zod !== undefined && { inputZod: inputResolved.value.zod }),
|
|
@@ -215,6 +227,41 @@ function toDefinitionError(err) {
|
|
|
215
227
|
});
|
|
216
228
|
return { code: 'invalid-tool-definition', message: err.message, issues };
|
|
217
229
|
}
|
|
230
|
+
/**
|
|
231
|
+
* Each schema in `needsSpec.secrets` and `needsSpec.env` compiles as the runtime compiles it when
|
|
232
|
+
* it loads the tool (`compileInlineSchema`), and an env value's `default` is a string. A runtime
|
|
233
|
+
* that couldn't compile one would leave the whole tool out, so it's refused here, where the
|
|
234
|
+
* tool is defined, registered (`POST /v1/tools`) or deployed, naming the tool, the slot and the
|
|
235
|
+
* name.
|
|
236
|
+
*/
|
|
237
|
+
function needsSpecProblem(manifest) {
|
|
238
|
+
const tool = manifest.id;
|
|
239
|
+
for (const slot of ['secrets', 'env']) {
|
|
240
|
+
for (const [name, schema] of Object.entries(manifest.needsSpec?.[slot] ?? {})) {
|
|
241
|
+
const path = `/needsSpec/${slot}/${name}`;
|
|
242
|
+
const compiled = compileInlineSchema(schema);
|
|
243
|
+
if (compiled.kind === 'err') {
|
|
244
|
+
const why = compiled.error.message.replace(/^Inline schema failed to compile: /, '');
|
|
245
|
+
return {
|
|
246
|
+
code: 'invalid-tool-definition',
|
|
247
|
+
message: `Tool "${tool}": the schema for needsSpec.${slot}.${name} doesn't compile: ${why}`,
|
|
248
|
+
issues: [{ path, message: `doesn't compile: ${why}` }],
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
const fallback = schema.default;
|
|
252
|
+
if (slot === 'env' && fallback !== undefined && typeof fallback !== 'string') {
|
|
253
|
+
return {
|
|
254
|
+
code: 'invalid-tool-definition',
|
|
255
|
+
message: `Tool "${tool}": needsSpec.env.${name}'s default must be a string: env values are strings.`,
|
|
256
|
+
issues: [
|
|
257
|
+
{ path: `${path}/default`, message: 'must be a string: env values are strings' },
|
|
258
|
+
],
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return undefined;
|
|
264
|
+
}
|
|
218
265
|
function checkEffectKinds(manifest) {
|
|
219
266
|
const kinds = new Set(EFFECT_KINDS);
|
|
220
267
|
for (const eff of manifest.effects ?? []) {
|
|
@@ -288,6 +335,9 @@ export function validateToolManifest(manifest) {
|
|
|
288
335
|
const badOutput = compilesAsSchema(parsed.output, 'output', parsed);
|
|
289
336
|
if (badOutput)
|
|
290
337
|
return { kind: 'err', error: badOutput };
|
|
338
|
+
const badNeeds = needsSpecProblem(parsed);
|
|
339
|
+
if (badNeeds)
|
|
340
|
+
return { kind: 'err', error: badNeeds };
|
|
291
341
|
const badUrl = checkHttpUrlTemplate(parsed);
|
|
292
342
|
if (badUrl)
|
|
293
343
|
return { kind: 'err', error: badUrl };
|
package/dist/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
|
package/dist/http.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { bearerValueProblem, headerValueProblem } from '@kindgi/types';
|
|
3
4
|
import { registerToolSpecSynthesizer } from './spec-registry.js';
|
|
4
5
|
/**
|
|
5
6
|
* First-party synthesizer for `HttpToolSpec` (kind: 'http').
|
|
@@ -49,7 +50,12 @@ function buildHttpHandler(spec, toolId, options = {}) {
|
|
|
49
50
|
const { url, consumedKeys } = substituteUrl(spec.urlTemplate, inputObj, toolId);
|
|
50
51
|
const headers = {};
|
|
51
52
|
for (const h of spec.headers ?? []) {
|
|
52
|
-
|
|
53
|
+
const value = substituteTemplate(h.value, inputObj);
|
|
54
|
+
const problem = headerValueProblem(value);
|
|
55
|
+
if (problem !== undefined) {
|
|
56
|
+
throw new Error(`http-tool "${toolId}": the header "${h.name}", filled from its input, has ${problem}, which a header can't carry`);
|
|
57
|
+
}
|
|
58
|
+
headers[h.name] = value;
|
|
53
59
|
}
|
|
54
60
|
if (spec.authorization !== undefined) {
|
|
55
61
|
applyAuth(headers, spec.authorization, ctx, toolId, await resolveAuthSecret(spec.authorization, ctx, toolId));
|
|
@@ -164,7 +170,17 @@ async function resolveAuthSecret(auth, ctx, toolId) {
|
|
|
164
170
|
}
|
|
165
171
|
return ctx.resolveSecret(auth.secretRef);
|
|
166
172
|
}
|
|
167
|
-
function applyAuth(headers, auth, _ctx,
|
|
173
|
+
function applyAuth(headers, auth, _ctx, toolId, resolvedSecret) {
|
|
174
|
+
// Checked by the header's name before fetch, whose own error would quote
|
|
175
|
+
// the secret into the call's failure message, and so into the run. As it's
|
|
176
|
+
// sent: after `Bearer `, a leading line break is an inner one.
|
|
177
|
+
const problem = auth.kind === 'bearer'
|
|
178
|
+
? bearerValueProblem(resolvedSecret)
|
|
179
|
+
: headerValueProblem(resolvedSecret);
|
|
180
|
+
if (problem !== undefined) {
|
|
181
|
+
const header = auth.kind === 'bearer' ? 'Authorization' : auth.headerName;
|
|
182
|
+
throw new Error(`http-tool "${toolId}": its secret ${auth.secretRef.envName}/${auth.secretRef.name} for the header "${header}" has ${problem}, which a header can't carry: store the secret without it`);
|
|
183
|
+
}
|
|
168
184
|
switch (auth.kind) {
|
|
169
185
|
case 'bearer':
|
|
170
186
|
headers.Authorization = `Bearer ${resolvedSecret}`;
|
package/dist/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAmC,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAGlG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,SAAS,gBAAgB,CACvB,IAAkB,EAClB,MAAc,EACd,UAAsC,EAAE;IAExC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC;IACvC,OAAO,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEhF,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;YACnC,
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The namespace of every tool call's idempotency key. Fixed: with it, any
|
|
3
|
+
* runtime reproduces a call's key (`toolIdempotencyKey`).
|
|
4
|
+
*/
|
|
5
|
+
export declare const TOOL_IDEMPOTENCY_NAMESPACE = "a70d5bff-e713-4322-b2ea-9d5c4926a861";
|
|
6
|
+
/**
|
|
7
|
+
* A tool call's idempotency key (`ToolContext.idempotencyKey`): the same
|
|
8
|
+
* every time the same call runs (a resume after a wait, a retry after a
|
|
9
|
+
* failure, a re-run after a crash), different for every other call.
|
|
10
|
+
*
|
|
11
|
+
* It's a name-based UUID (RFC 9562 version 5, SHA-1) under
|
|
12
|
+
* `TOOL_IDEMPOTENCY_NAMESPACE`, over the UTF-8 bytes of the compact JSON
|
|
13
|
+
* array `[runId, stepScope, toolId]`, with `callId` appended for a call a
|
|
14
|
+
* model asked for. `stepScope` is the step's own (`NodeContext.stepScope`):
|
|
15
|
+
* it tells two loop iterations or two fanout branches apart, which a
|
|
16
|
+
* model's call id alone doesn't (it's only unique within one answer).
|
|
17
|
+
*/
|
|
18
|
+
export declare function toolIdempotencyKey(input: {
|
|
19
|
+
readonly runId: string;
|
|
20
|
+
readonly stepScope: string;
|
|
21
|
+
readonly toolId: string;
|
|
22
|
+
/** The model's id for an agent turn's call; absent for a flow's tool step. */
|
|
23
|
+
readonly callId?: string;
|
|
24
|
+
}): string;
|
|
25
|
+
//# sourceMappingURL=idempotency-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotency-key.d.ts","sourceRoot":"","sources":["../src/idempotency-key.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,eAAO,MAAM,0BAA0B,yCAAyC,CAAC;AAIjF;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B,GAAG,MAAM,CAST"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
import { createHash } from 'node:crypto';
|
|
4
|
+
/**
|
|
5
|
+
* The namespace of every tool call's idempotency key. Fixed: with it, any
|
|
6
|
+
* runtime reproduces a call's key (`toolIdempotencyKey`).
|
|
7
|
+
*/
|
|
8
|
+
export const TOOL_IDEMPOTENCY_NAMESPACE = 'a70d5bff-e713-4322-b2ea-9d5c4926a861';
|
|
9
|
+
const NAMESPACE_BYTES = Buffer.from(TOOL_IDEMPOTENCY_NAMESPACE.replaceAll('-', ''), 'hex');
|
|
10
|
+
/**
|
|
11
|
+
* A tool call's idempotency key (`ToolContext.idempotencyKey`): the same
|
|
12
|
+
* every time the same call runs (a resume after a wait, a retry after a
|
|
13
|
+
* failure, a re-run after a crash), different for every other call.
|
|
14
|
+
*
|
|
15
|
+
* It's a name-based UUID (RFC 9562 version 5, SHA-1) under
|
|
16
|
+
* `TOOL_IDEMPOTENCY_NAMESPACE`, over the UTF-8 bytes of the compact JSON
|
|
17
|
+
* array `[runId, stepScope, toolId]`, with `callId` appended for a call a
|
|
18
|
+
* model asked for. `stepScope` is the step's own (`NodeContext.stepScope`):
|
|
19
|
+
* it tells two loop iterations or two fanout branches apart, which a
|
|
20
|
+
* model's call id alone doesn't (it's only unique within one answer).
|
|
21
|
+
*/
|
|
22
|
+
export function toolIdempotencyKey(input) {
|
|
23
|
+
const parts = [input.runId, input.stepScope, input.toolId];
|
|
24
|
+
if (input.callId !== undefined)
|
|
25
|
+
parts.push(input.callId);
|
|
26
|
+
const hash = createHash('sha1').update(NAMESPACE_BYTES).update(JSON.stringify(parts), 'utf8');
|
|
27
|
+
const bytes = hash.digest().subarray(0, 16);
|
|
28
|
+
bytes[6] = ((bytes[6] ?? 0) & 0x0f) | 0x50;
|
|
29
|
+
bytes[8] = ((bytes[8] ?? 0) & 0x3f) | 0x80;
|
|
30
|
+
const hex = bytes.toString('hex');
|
|
31
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=idempotency-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotency-key.js","sourceRoot":"","sources":["../src/idempotency-key.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,sCAAsC,CAAC;AAEjF,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAE3F;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAMlC;IACC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AAC7G,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,8 +4,10 @@ import './http.js';
|
|
|
4
4
|
export { registerToolSpecSynthesizer, getToolSpecSynthesizer } from './spec-registry.js';
|
|
5
5
|
export type { ToolSpecSynthesizer, ToolSpecSynthesizerOptions } from './spec-registry.js';
|
|
6
6
|
export { invokeTool } from './invoke.js';
|
|
7
|
+
export { toolSecretNames } from './secret-names.js';
|
|
7
8
|
export { ToolPreconditionError, isToolPreconditionError } from './precondition.js';
|
|
8
9
|
export { TOOL_ENV_RECORD_KEY, toolCallRecordKey } from './record-keys.js';
|
|
10
|
+
export { TOOL_IDEMPOTENCY_NAMESPACE, toolIdempotencyKey } from './idempotency-key.js';
|
|
9
11
|
export type { InvokeToolOptions } from './invoke.js';
|
|
10
12
|
export { createToolRegistry } from './registry.js';
|
|
11
13
|
export type { ToolRegisterOptions, ToolRegistry, ToolResolution } from './registry.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,wBAAwB,IAAI,eAAe,GAC5C,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAC;AAIrB,OAAO,WAAW,CAAC;AACnB,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzF,YAAY,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EACV,OAAO,EACP,eAAe,EACf,MAAM,EACN,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,IAAI,EACJ,aAAa,EACb,aAAa,EACb,WAAW,EACX,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,SAAS,EACT,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,wBAAwB,IAAI,eAAe,GAC5C,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,aAAa,CAAC;AAIrB,OAAO,WAAW,CAAC;AACnB,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzF,YAAY,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,YAAY,EACV,OAAO,EACP,eAAe,EACf,MAAM,EACN,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,IAAI,EACJ,aAAa,EACb,aAAa,EACb,WAAW,EACX,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,kBAAkB,EAClB,yBAAyB,EACzB,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,SAAS,EACT,iBAAiB,EACjB,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,8 +7,10 @@ export { BUILT_IN_TOOL_PREFIX, defineTool, defineToolAsync, validateToolManifest
|
|
|
7
7
|
import './http.js';
|
|
8
8
|
export { registerToolSpecSynthesizer, getToolSpecSynthesizer } from './spec-registry.js';
|
|
9
9
|
export { invokeTool } from './invoke.js';
|
|
10
|
+
export { toolSecretNames } from './secret-names.js';
|
|
10
11
|
export { ToolPreconditionError, isToolPreconditionError } from './precondition.js';
|
|
11
12
|
export { TOOL_ENV_RECORD_KEY, toolCallRecordKey } from './record-keys.js';
|
|
13
|
+
export { TOOL_IDEMPOTENCY_NAMESPACE, toolIdempotencyKey } from './idempotency-key.js';
|
|
12
14
|
export { createToolRegistry } from './registry.js';
|
|
13
15
|
export { latestVersion, nextVersion, pickVersion } from './versions.js';
|
|
14
16
|
export { toManifest, toMcpManifest } from './manifest.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,wBAAwB,IAAI,eAAe,GAC5C,MAAM,aAAa,CAAC;AAQrB,gEAAgE;AAChE,kEAAkE;AAClE,8DAA8D;AAC9D,OAAO,WAAW,CAAC;AACnB,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAEjC,OAAO,EACL,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,wBAAwB,IAAI,eAAe,GAC5C,MAAM,aAAa,CAAC;AAQrB,gEAAgE;AAChE,kEAAkE;AAClE,8DAA8D;AAC9D,OAAO,WAAW,CAAC;AACnB,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ToolManifest } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Every secret a tool uses, by name: the ones its code declares
|
|
4
|
+
* (`needsSpec.secrets`) and the one a declarative HTTP tool sends
|
|
5
|
+
* (`spec.authorization.secretRef`). Sorted, each once. A runtime checks
|
|
6
|
+
* them against what may never be a tool's, such as a model provider's key.
|
|
7
|
+
*/
|
|
8
|
+
export declare function toolSecretNames(manifest: Pick<ToolManifest, 'needsSpec' | 'spec'>): string[];
|
|
9
|
+
//# sourceMappingURL=secret-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-names.d.ts","sourceRoot":"","sources":["../src/secret-names.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,MAAM,CAAC,GAAG,MAAM,EAAE,CAK5F"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
/**
|
|
4
|
+
* Every secret a tool uses, by name: the ones its code declares
|
|
5
|
+
* (`needsSpec.secrets`) and the one a declarative HTTP tool sends
|
|
6
|
+
* (`spec.authorization.secretRef`). Sorted, each once. A runtime checks
|
|
7
|
+
* them against what may never be a tool's, such as a model provider's key.
|
|
8
|
+
*/
|
|
9
|
+
export function toolSecretNames(manifest) {
|
|
10
|
+
const names = new Set(Object.keys(manifest.needsSpec?.secrets ?? {}));
|
|
11
|
+
const ref = manifest.spec?.authorization?.secretRef;
|
|
12
|
+
if (ref !== undefined)
|
|
13
|
+
names.add(ref.name);
|
|
14
|
+
return [...names].sort();
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=secret-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-names.js","sourceRoot":"","sources":["../src/secret-names.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAIjC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,QAAkD;IAChF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC;IACpD,IAAI,GAAG,KAAK,SAAS;QAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -77,10 +77,25 @@ export interface ToolContext {
|
|
|
77
77
|
readonly orgId?: OrgId;
|
|
78
78
|
/**
|
|
79
79
|
* Correlation id for this individual call (the model's tool-call id,
|
|
80
|
-
* an MCP request id, a webhook id). Opaque to tools; useful for logs
|
|
81
|
-
* provenance
|
|
80
|
+
* an MCP request id, a webhook id). Opaque to tools; useful for logs
|
|
81
|
+
* and provenance. To dedupe a side effect, use `idempotencyKey`: a
|
|
82
|
+
* model's call id is only unique within one of its answers.
|
|
82
83
|
*/
|
|
83
84
|
readonly requestId?: string;
|
|
85
|
+
/**
|
|
86
|
+
* A key for this call's side effects: the same every time this call
|
|
87
|
+
* runs, whether its step is resumed after a wait, retried after a
|
|
88
|
+
* failure or run again after a crash, and different for every other
|
|
89
|
+
* call. A step can run more than once, so a tool that changes something
|
|
90
|
+
* passes it to the system it writes to (an `Idempotency-Key` header, a
|
|
91
|
+
* client reference, a unique column), or looks for it there first.
|
|
92
|
+
* That's what keeps a refund from going out twice.
|
|
93
|
+
*
|
|
94
|
+
* A UUID (`toolIdempotencyKey`). Absent outside a run, and with a host
|
|
95
|
+
* or a runtime that can't name its steps (before 0.1.6): the call can't
|
|
96
|
+
* be deduped on it then.
|
|
97
|
+
*/
|
|
98
|
+
readonly idempotencyKey?: string;
|
|
84
99
|
/**
|
|
85
100
|
* Signal that fires when the caller wants the tool to abort — kernel
|
|
86
101
|
* cancel/failure teardown, MCP client disconnect, HTTP request cancel.
|
|
@@ -121,11 +136,13 @@ export interface ToolContext {
|
|
|
121
136
|
* The secrets this tool declares in `needsSpec.secrets`, by name,
|
|
122
137
|
* resolved by the runtime for this call: for the call's tenant, in the
|
|
123
138
|
* env the runtime serves (`KINDGI_ENV`; in `kindgi dev`, `local` — the
|
|
124
|
-
* pack's `.env` and `.env.local`). Every
|
|
139
|
+
* pack's `.env` and `.env.local`). Every required name is present: one
|
|
125
140
|
* the runtime can't resolve, or whose value doesn't match its schema,
|
|
126
|
-
* fails the call before the handler runs.
|
|
127
|
-
*
|
|
128
|
-
*
|
|
141
|
+
* fails the call before the handler runs. An optional one (its schema
|
|
142
|
+
* accepts `null`: `{ type: ['string', 'null'] }`) is absent when the env
|
|
143
|
+
* doesn't have it, or has it empty (runtime 0.1.6 or later; an older
|
|
144
|
+
* runtime requires it). Absent when the tool declares none, and wherever
|
|
145
|
+
* nothing resolves them — a unit test passes its own.
|
|
129
146
|
*/
|
|
130
147
|
readonly secrets?: Readonly<Record<string, string>>;
|
|
131
148
|
/**
|
|
@@ -219,9 +236,10 @@ export type NetworkPolicy = {
|
|
|
219
236
|
* `env` and `secrets` are resolved per call (`ctx.env`, `ctx.secrets`).
|
|
220
237
|
* Their values are strings, as in a process environment; each schema
|
|
221
238
|
* checks the string (`enum`, `pattern`, `minLength`…) and nothing is
|
|
222
|
-
* coerced. An `env` name whose schema has a `default` is optional;
|
|
223
|
-
*
|
|
224
|
-
*
|
|
239
|
+
* coerced. An `env` name whose schema has a `default` is optional; a
|
|
240
|
+
* `secrets` name whose schema says it accepts `null` (`type: ['string',
|
|
241
|
+
* 'null']`) is optional (runtime 0.1.6 or later); every other declared name
|
|
242
|
+
* is required. `config` is reserved: no runtime resolves it yet.
|
|
225
243
|
*
|
|
226
244
|
* `capabilities` names capability-router features (e.g. `'embedding'`);
|
|
227
245
|
* `bindings` names deployment-plugged binding keys (e.g. `'blob'`).
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEhF;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3D,4FAA4F;AAC5F,eAAO,MAAM,YAAY,kIASf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kindgi/tools",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6-rc.0",
|
|
4
4
|
"description": "Tool authoring shape + registry + invocation for Kindgi. A tool is a typed, effect-declared unit of work — the same definition runs in-process for one flow, over MCP for another. Pure — no kernel dependency; the kernel bridges tools to node handlers separately.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -30,9 +30,9 @@
|
|
|
30
30
|
"type-manifest.json"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kindgi/log": "0.1.
|
|
34
|
-
"@kindgi/schema": "0.1.
|
|
35
|
-
"@kindgi/types": "0.1.
|
|
33
|
+
"@kindgi/log": "0.1.6-rc.0",
|
|
34
|
+
"@kindgi/schema": "0.1.6-rc.0",
|
|
35
|
+
"@kindgi/types": "0.1.6-rc.0",
|
|
36
36
|
"ajv": "^8.17.1",
|
|
37
37
|
"ajv-formats": "^3.0.1",
|
|
38
38
|
"semver": "^7.6.3"
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
}
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@kindgi/specs": "0.1.
|
|
49
|
+
"@kindgi/specs": "0.1.6-rc.0",
|
|
50
50
|
"@types/node": "^22.10.5",
|
|
51
51
|
"@types/semver": "^7.5.8",
|
|
52
52
|
"typescript": "^5.7.3",
|
package/src/define.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
|
+
compileInlineSchema,
|
|
5
6
|
compileJsonSchema,
|
|
6
7
|
createSpecRegistry,
|
|
7
8
|
isZodSchema,
|
|
@@ -67,6 +68,16 @@ function resolveZodConverterSync(): ZodConverter | undefined {
|
|
|
67
68
|
return loadZodConverterSync();
|
|
68
69
|
}
|
|
69
70
|
|
|
71
|
+
/**
|
|
72
|
+
* For a schema Ajv's strict mode refuses (an authoring lint, not invalid JSON Schema), the way
|
|
73
|
+
* out for a value of any JSON shape. Empty for other failures.
|
|
74
|
+
*/
|
|
75
|
+
function strictHint(cause: unknown): string {
|
|
76
|
+
return cause instanceof Error && /strict mode/.test(cause.message)
|
|
77
|
+
? '. For a field that may hold any JSON value, `z.json()` (or `{}` in JSON Schema) compiles.'
|
|
78
|
+
: '';
|
|
79
|
+
}
|
|
80
|
+
|
|
70
81
|
/**
|
|
71
82
|
* Sanity-check that a candidate JSON Schema compiles as the tool's
|
|
72
83
|
* schemas do (`schemaOptions`): a pack's own tool's as Draft 2020-12 in
|
|
@@ -83,7 +94,7 @@ function compilesAsSchema(
|
|
|
83
94
|
} catch (cause) {
|
|
84
95
|
return {
|
|
85
96
|
code: 'invalid-schema',
|
|
86
|
-
message: `Tool ${where} schema does not compile: ${cause instanceof Error ? cause.message : String(cause)}`,
|
|
97
|
+
message: `Tool ${where} schema does not compile: ${cause instanceof Error ? cause.message : String(cause)}${strictHint(cause)}`,
|
|
87
98
|
where,
|
|
88
99
|
cause,
|
|
89
100
|
};
|
|
@@ -400,6 +411,8 @@ function finalizeDefinition<
|
|
|
400
411
|
if (badInput) return { kind: 'err', error: badInput };
|
|
401
412
|
const badOutput = compilesAsSchema(manifest.output, 'output', manifest);
|
|
402
413
|
if (badOutput) return { kind: 'err', error: badOutput };
|
|
414
|
+
const badNeeds = needsSpecProblem(manifest);
|
|
415
|
+
if (badNeeds) return { kind: 'err', error: badNeeds };
|
|
403
416
|
|
|
404
417
|
const tool = {
|
|
405
418
|
...wireSpec,
|
|
@@ -431,6 +444,42 @@ function toDefinitionError(err: {
|
|
|
431
444
|
return { code: 'invalid-tool-definition', message: err.message, issues };
|
|
432
445
|
}
|
|
433
446
|
|
|
447
|
+
/**
|
|
448
|
+
* Each schema in `needsSpec.secrets` and `needsSpec.env` compiles as the runtime compiles it when
|
|
449
|
+
* it loads the tool (`compileInlineSchema`), and an env value's `default` is a string. A runtime
|
|
450
|
+
* that couldn't compile one would leave the whole tool out, so it's refused here, where the
|
|
451
|
+
* tool is defined, registered (`POST /v1/tools`) or deployed, naming the tool, the slot and the
|
|
452
|
+
* name.
|
|
453
|
+
*/
|
|
454
|
+
function needsSpecProblem(manifest: ToolManifest): InvalidToolDefinitionError | undefined {
|
|
455
|
+
const tool = manifest.id as unknown as string;
|
|
456
|
+
for (const slot of ['secrets', 'env'] as const) {
|
|
457
|
+
for (const [name, schema] of Object.entries(manifest.needsSpec?.[slot] ?? {})) {
|
|
458
|
+
const path = `/needsSpec/${slot}/${name}`;
|
|
459
|
+
const compiled = compileInlineSchema(schema);
|
|
460
|
+
if (compiled.kind === 'err') {
|
|
461
|
+
const why = compiled.error.message.replace(/^Inline schema failed to compile: /, '');
|
|
462
|
+
return {
|
|
463
|
+
code: 'invalid-tool-definition',
|
|
464
|
+
message: `Tool "${tool}": the schema for needsSpec.${slot}.${name} doesn't compile: ${why}`,
|
|
465
|
+
issues: [{ path, message: `doesn't compile: ${why}` }],
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
const fallback = (schema as { readonly default?: unknown }).default;
|
|
469
|
+
if (slot === 'env' && fallback !== undefined && typeof fallback !== 'string') {
|
|
470
|
+
return {
|
|
471
|
+
code: 'invalid-tool-definition',
|
|
472
|
+
message: `Tool "${tool}": needsSpec.env.${name}'s default must be a string: env values are strings.`,
|
|
473
|
+
issues: [
|
|
474
|
+
{ path: `${path}/default`, message: 'must be a string: env values are strings' },
|
|
475
|
+
],
|
|
476
|
+
};
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
return undefined;
|
|
481
|
+
}
|
|
482
|
+
|
|
434
483
|
function checkEffectKinds(manifest: ToolManifest): UnknownEffectError | undefined {
|
|
435
484
|
const kinds = new Set<string>(EFFECT_KINDS);
|
|
436
485
|
for (const eff of manifest.effects ?? []) {
|
|
@@ -505,6 +554,8 @@ export function validateToolManifest(
|
|
|
505
554
|
if (badInput) return { kind: 'err', error: badInput };
|
|
506
555
|
const badOutput = compilesAsSchema(parsed.output, 'output', parsed);
|
|
507
556
|
if (badOutput) return { kind: 'err', error: badOutput };
|
|
557
|
+
const badNeeds = needsSpecProblem(parsed);
|
|
558
|
+
if (badNeeds) return { kind: 'err', error: badNeeds };
|
|
508
559
|
const badUrl = checkHttpUrlTemplate(parsed);
|
|
509
560
|
if (badUrl) return { kind: 'err', error: badUrl };
|
|
510
561
|
return { kind: 'ok', value: parsed };
|
package/src/http.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
// Copyright (C) 2026 Kindgi Inc.
|
|
3
3
|
|
|
4
|
+
import { bearerValueProblem, headerValueProblem } from '@kindgi/types';
|
|
5
|
+
|
|
4
6
|
import { type ToolSpecSynthesizerOptions, registerToolSpecSynthesizer } from './spec-registry.js';
|
|
5
7
|
import type { HttpAuthSpec, HttpRequestBodySpec, HttpToolSpec, ToolContext } from './types.js';
|
|
6
8
|
|
|
@@ -57,7 +59,14 @@ function buildHttpHandler(
|
|
|
57
59
|
|
|
58
60
|
const headers: Record<string, string> = {};
|
|
59
61
|
for (const h of spec.headers ?? []) {
|
|
60
|
-
|
|
62
|
+
const value = substituteTemplate(h.value, inputObj);
|
|
63
|
+
const problem = headerValueProblem(value);
|
|
64
|
+
if (problem !== undefined) {
|
|
65
|
+
throw new Error(
|
|
66
|
+
`http-tool "${toolId}": the header "${h.name}", filled from its input, has ${problem}, which a header can't carry`,
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
headers[h.name] = value;
|
|
61
70
|
}
|
|
62
71
|
|
|
63
72
|
if (spec.authorization !== undefined) {
|
|
@@ -214,9 +223,22 @@ function applyAuth(
|
|
|
214
223
|
headers: Record<string, string>,
|
|
215
224
|
auth: HttpAuthSpec,
|
|
216
225
|
_ctx: ToolContext,
|
|
217
|
-
|
|
226
|
+
toolId: string,
|
|
218
227
|
resolvedSecret: string,
|
|
219
228
|
): void {
|
|
229
|
+
// Checked by the header's name before fetch, whose own error would quote
|
|
230
|
+
// the secret into the call's failure message, and so into the run. As it's
|
|
231
|
+
// sent: after `Bearer `, a leading line break is an inner one.
|
|
232
|
+
const problem =
|
|
233
|
+
auth.kind === 'bearer'
|
|
234
|
+
? bearerValueProblem(resolvedSecret)
|
|
235
|
+
: headerValueProblem(resolvedSecret);
|
|
236
|
+
if (problem !== undefined) {
|
|
237
|
+
const header = auth.kind === 'bearer' ? 'Authorization' : auth.headerName;
|
|
238
|
+
throw new Error(
|
|
239
|
+
`http-tool "${toolId}": its secret ${auth.secretRef.envName}/${auth.secretRef.name} for the header "${header}" has ${problem}, which a header can't carry: store the secret without it`,
|
|
240
|
+
);
|
|
241
|
+
}
|
|
220
242
|
switch (auth.kind) {
|
|
221
243
|
case 'bearer':
|
|
222
244
|
headers.Authorization = `Bearer ${resolvedSecret}`;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
|
|
4
|
+
import { createHash } from 'node:crypto';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The namespace of every tool call's idempotency key. Fixed: with it, any
|
|
8
|
+
* runtime reproduces a call's key (`toolIdempotencyKey`).
|
|
9
|
+
*/
|
|
10
|
+
export const TOOL_IDEMPOTENCY_NAMESPACE = 'a70d5bff-e713-4322-b2ea-9d5c4926a861';
|
|
11
|
+
|
|
12
|
+
const NAMESPACE_BYTES = Buffer.from(TOOL_IDEMPOTENCY_NAMESPACE.replaceAll('-', ''), 'hex');
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* A tool call's idempotency key (`ToolContext.idempotencyKey`): the same
|
|
16
|
+
* every time the same call runs (a resume after a wait, a retry after a
|
|
17
|
+
* failure, a re-run after a crash), different for every other call.
|
|
18
|
+
*
|
|
19
|
+
* It's a name-based UUID (RFC 9562 version 5, SHA-1) under
|
|
20
|
+
* `TOOL_IDEMPOTENCY_NAMESPACE`, over the UTF-8 bytes of the compact JSON
|
|
21
|
+
* array `[runId, stepScope, toolId]`, with `callId` appended for a call a
|
|
22
|
+
* model asked for. `stepScope` is the step's own (`NodeContext.stepScope`):
|
|
23
|
+
* it tells two loop iterations or two fanout branches apart, which a
|
|
24
|
+
* model's call id alone doesn't (it's only unique within one answer).
|
|
25
|
+
*/
|
|
26
|
+
export function toolIdempotencyKey(input: {
|
|
27
|
+
readonly runId: string;
|
|
28
|
+
readonly stepScope: string;
|
|
29
|
+
readonly toolId: string;
|
|
30
|
+
/** The model's id for an agent turn's call; absent for a flow's tool step. */
|
|
31
|
+
readonly callId?: string;
|
|
32
|
+
}): string {
|
|
33
|
+
const parts = [input.runId, input.stepScope, input.toolId];
|
|
34
|
+
if (input.callId !== undefined) parts.push(input.callId);
|
|
35
|
+
const hash = createHash('sha1').update(NAMESPACE_BYTES).update(JSON.stringify(parts), 'utf8');
|
|
36
|
+
const bytes = hash.digest().subarray(0, 16);
|
|
37
|
+
bytes[6] = ((bytes[6] ?? 0) & 0x0f) | 0x50;
|
|
38
|
+
bytes[8] = ((bytes[8] ?? 0) & 0x3f) | 0x80;
|
|
39
|
+
const hex = bytes.toString('hex');
|
|
40
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
41
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -22,8 +22,10 @@ import './http.js';
|
|
|
22
22
|
export { registerToolSpecSynthesizer, getToolSpecSynthesizer } from './spec-registry.js';
|
|
23
23
|
export type { ToolSpecSynthesizer, ToolSpecSynthesizerOptions } from './spec-registry.js';
|
|
24
24
|
export { invokeTool } from './invoke.js';
|
|
25
|
+
export { toolSecretNames } from './secret-names.js';
|
|
25
26
|
export { ToolPreconditionError, isToolPreconditionError } from './precondition.js';
|
|
26
27
|
export { TOOL_ENV_RECORD_KEY, toolCallRecordKey } from './record-keys.js';
|
|
28
|
+
export { TOOL_IDEMPOTENCY_NAMESPACE, toolIdempotencyKey } from './idempotency-key.js';
|
|
27
29
|
export type { InvokeToolOptions } from './invoke.js';
|
|
28
30
|
export { createToolRegistry } from './registry.js';
|
|
29
31
|
export type { ToolRegisterOptions, ToolRegistry, ToolResolution } from './registry.js';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
// Copyright (C) 2026 Kindgi Inc.
|
|
3
|
+
|
|
4
|
+
import type { ToolManifest } from './types.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Every secret a tool uses, by name: the ones its code declares
|
|
8
|
+
* (`needsSpec.secrets`) and the one a declarative HTTP tool sends
|
|
9
|
+
* (`spec.authorization.secretRef`). Sorted, each once. A runtime checks
|
|
10
|
+
* them against what may never be a tool's, such as a model provider's key.
|
|
11
|
+
*/
|
|
12
|
+
export function toolSecretNames(manifest: Pick<ToolManifest, 'needsSpec' | 'spec'>): string[] {
|
|
13
|
+
const names = new Set(Object.keys(manifest.needsSpec?.secrets ?? {}));
|
|
14
|
+
const ref = manifest.spec?.authorization?.secretRef;
|
|
15
|
+
if (ref !== undefined) names.add(ref.name);
|
|
16
|
+
return [...names].sort();
|
|
17
|
+
}
|
package/src/types.ts
CHANGED
|
@@ -95,10 +95,25 @@ export interface ToolContext {
|
|
|
95
95
|
readonly orgId?: OrgId;
|
|
96
96
|
/**
|
|
97
97
|
* Correlation id for this individual call (the model's tool-call id,
|
|
98
|
-
* an MCP request id, a webhook id). Opaque to tools; useful for logs
|
|
99
|
-
* provenance
|
|
98
|
+
* an MCP request id, a webhook id). Opaque to tools; useful for logs
|
|
99
|
+
* and provenance. To dedupe a side effect, use `idempotencyKey`: a
|
|
100
|
+
* model's call id is only unique within one of its answers.
|
|
100
101
|
*/
|
|
101
102
|
readonly requestId?: string;
|
|
103
|
+
/**
|
|
104
|
+
* A key for this call's side effects: the same every time this call
|
|
105
|
+
* runs, whether its step is resumed after a wait, retried after a
|
|
106
|
+
* failure or run again after a crash, and different for every other
|
|
107
|
+
* call. A step can run more than once, so a tool that changes something
|
|
108
|
+
* passes it to the system it writes to (an `Idempotency-Key` header, a
|
|
109
|
+
* client reference, a unique column), or looks for it there first.
|
|
110
|
+
* That's what keeps a refund from going out twice.
|
|
111
|
+
*
|
|
112
|
+
* A UUID (`toolIdempotencyKey`). Absent outside a run, and with a host
|
|
113
|
+
* or a runtime that can't name its steps (before 0.1.6): the call can't
|
|
114
|
+
* be deduped on it then.
|
|
115
|
+
*/
|
|
116
|
+
readonly idempotencyKey?: string;
|
|
102
117
|
/**
|
|
103
118
|
* Signal that fires when the caller wants the tool to abort — kernel
|
|
104
119
|
* cancel/failure teardown, MCP client disconnect, HTTP request cancel.
|
|
@@ -139,11 +154,13 @@ export interface ToolContext {
|
|
|
139
154
|
* The secrets this tool declares in `needsSpec.secrets`, by name,
|
|
140
155
|
* resolved by the runtime for this call: for the call's tenant, in the
|
|
141
156
|
* env the runtime serves (`KINDGI_ENV`; in `kindgi dev`, `local` — the
|
|
142
|
-
* pack's `.env` and `.env.local`). Every
|
|
157
|
+
* pack's `.env` and `.env.local`). Every required name is present: one
|
|
143
158
|
* the runtime can't resolve, or whose value doesn't match its schema,
|
|
144
|
-
* fails the call before the handler runs.
|
|
145
|
-
*
|
|
146
|
-
*
|
|
159
|
+
* fails the call before the handler runs. An optional one (its schema
|
|
160
|
+
* accepts `null`: `{ type: ['string', 'null'] }`) is absent when the env
|
|
161
|
+
* doesn't have it, or has it empty (runtime 0.1.6 or later; an older
|
|
162
|
+
* runtime requires it). Absent when the tool declares none, and wherever
|
|
163
|
+
* nothing resolves them — a unit test passes its own.
|
|
147
164
|
*/
|
|
148
165
|
readonly secrets?: Readonly<Record<string, string>>;
|
|
149
166
|
/**
|
|
@@ -238,9 +255,10 @@ export type NetworkPolicy =
|
|
|
238
255
|
* `env` and `secrets` are resolved per call (`ctx.env`, `ctx.secrets`).
|
|
239
256
|
* Their values are strings, as in a process environment; each schema
|
|
240
257
|
* checks the string (`enum`, `pattern`, `minLength`…) and nothing is
|
|
241
|
-
* coerced. An `env` name whose schema has a `default` is optional;
|
|
242
|
-
*
|
|
243
|
-
*
|
|
258
|
+
* coerced. An `env` name whose schema has a `default` is optional; a
|
|
259
|
+
* `secrets` name whose schema says it accepts `null` (`type: ['string',
|
|
260
|
+
* 'null']`) is optional (runtime 0.1.6 or later); every other declared name
|
|
261
|
+
* is required. `config` is reserved: no runtime resolves it yet.
|
|
244
262
|
*
|
|
245
263
|
* `capabilities` names capability-router features (e.g. `'embedding'`);
|
|
246
264
|
* `bindings` names deployment-plugged binding keys (e.g. `'blob'`).
|