@intellia/workflow-sdk 0.2.1 → 0.3.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/cjs/define-webhook.js +1 -0
- package/dist/cjs/define-webhook.js.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/schema.js +69 -41
- package/dist/cjs/schema.js.map +1 -1
- package/dist/esm/define-webhook.js +1 -0
- package/dist/esm/define-webhook.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/schema.js +71 -43
- package/dist/esm/schema.js.map +1 -1
- package/dist/index.d.ts +16 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-webhook.js","sourceRoot":"","sources":["../../src/define-webhook.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"define-webhook.js","sourceRoot":"","sources":["../../src/define-webhook.ts"],"names":[],"mappings":";;;AAwDO,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAiB,EAAE,CAAC,CAAC;IAClE,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;SAClD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAXU,QAAA,aAAa,iBAWvB"}
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwD;AAA/C,8FAAA,CAAC,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAClC,qCAQmB;AAPjB,oGAAA,SAAS,OAAA;AACT,gGAAA,KAAK,OAAA;AACL,kGAAA,OAAO,OAAA;AACP,gGAAA,KAAK,OAAA;AACL,kGAAA,OAAO,OAAA;AACP,8FAAA,GAAG,OAAA;AACH,sGAAA,WAAW,OAAA;AAGb,mDAA4E;AAAnE,gHAAA,cAAc,OAAA;AAAE,0HAAA,wBAAwB,OAAA;AAEjD,mDAA8C;AAArC,4GAAA,UAAU,OAAA;AASnB,uEAAiE;AAAxD,+HAAA,mBAAmB,OAAA;AAE5B,6DAAuD;AAA9C,qHAAA,cAAc,OAAA;AAEvB,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAEvB,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwD;AAA/C,8FAAA,CAAC,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,qGAAA,QAAQ,OAAA;AAClC,qCAQmB;AAPjB,oGAAA,SAAS,OAAA;AACT,gGAAA,KAAK,OAAA;AACL,kGAAA,OAAO,OAAA;AACP,gGAAA,KAAK,OAAA;AACL,kGAAA,OAAO,OAAA;AACP,8FAAA,GAAG,OAAA;AACH,sGAAA,WAAW,OAAA;AAGb,mDAA4E;AAAnE,gHAAA,cAAc,OAAA;AAAE,0HAAA,wBAAwB,OAAA;AAEjD,mDAA8C;AAArC,4GAAA,UAAU,OAAA;AASnB,uEAAiE;AAAxD,+HAAA,mBAAmB,OAAA;AAE5B,6DAAuD;AAA9C,qHAAA,cAAc,OAAA;AAEvB,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAEvB,yDAAoD;AAA3C,kHAAA,aAAa,OAAA;AAQtB,uCAAgD;AAAvC,8GAAA,kBAAkB,OAAA;AAC3B,2CAAoD;AAA3C,qGAAA,OAAO,OAAA;AAAE,yGAAA,WAAW,OAAA;AAU7B,2DAAsD;AAA7C,oHAAA,cAAc,OAAA;AAYvB,iDAA6F;AAApF,mGAAA,EAAE,OAAA;AAAE,mGAAA,EAAE,OAAA;AAAE,oGAAA,GAAG,OAAA;AAAE,mGAAA,EAAE,OAAA;AAAE,oGAAA,GAAG,OAAA;AAAE,yGAAA,QAAQ,OAAA;AAAE,uGAAA,MAAM,OAAA;AAAE,0GAAA,SAAS,OAAA;AAAE,wGAAA,OAAO,OAAA;AAEnE,qEAA+D;AAAtD,6HAAA,kBAAkB,OAAA;AAE3B,+DAA2D;AAAlD,yHAAA,iBAAiB,OAAA"}
|
package/dist/cjs/schema.js
CHANGED
|
@@ -3,57 +3,85 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.artifact = exports.toJsonSchema = exports.z = void 0;
|
|
4
4
|
const v4_1 = require("zod/v4");
|
|
5
5
|
Object.defineProperty(exports, "z", { enumerable: true, get: function () { return v4_1.z; } });
|
|
6
|
-
// `z.toJSONSchema`
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
// (
|
|
12
|
-
|
|
13
|
-
//
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
6
|
+
// `z.toJSONSchema` finds `.meta()` through a per-zod-instance registry, so a
|
|
7
|
+
// schema built by another zod copy (a vm-executed workflow entry, see
|
|
8
|
+
// `workflow-compiler/src/execute.ts`) loses it; the schema's own no-argument
|
|
9
|
+
// `.meta()` still reads the right registry. This walks the zod schema beside
|
|
10
|
+
// the JSON node `z.toJSONSchema` emitted for it, kind by kind, and copies the
|
|
11
|
+
// keys every API Ajv accepts (`input` is registered there as a keyword).
|
|
12
|
+
const BACKFILLED_META_KEYS = ["description", "title", "examples", "deprecated", "readOnly", "writeOnly", "input"];
|
|
13
|
+
// Wrappers that add no JSON Schema level: the inner schema's keys land on the same node.
|
|
14
|
+
const SAME_NODE_WRAPPERS = new Set(["optional", "default", "prefault", "nonoptional", "readonly", "catch"]);
|
|
15
|
+
const asNode = (v) => typeof v === "object" && v !== null && !Array.isArray(v) ? v : undefined;
|
|
16
|
+
const backfillMetadata = (t, node, seen = new Set()) => {
|
|
17
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
18
|
+
if (seen.has(t))
|
|
19
|
+
return;
|
|
20
|
+
const path = new Set(seen).add(t);
|
|
21
|
+
const visit = (child, childNode) => {
|
|
22
|
+
const n = asNode(childNode);
|
|
23
|
+
if (child && n)
|
|
24
|
+
backfillMetadata(child, n, path);
|
|
25
|
+
};
|
|
26
|
+
const meta = (_b = (_a = t).meta) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
27
|
+
if (typeof meta === "object" && meta !== null) {
|
|
28
|
+
for (const key of BACKFILLED_META_KEYS) {
|
|
29
|
+
// Round-tripped into plain data from this realm, not the vm's.
|
|
30
|
+
const json = JSON.stringify(meta[key]);
|
|
31
|
+
if (json !== undefined && node[key] === undefined)
|
|
32
|
+
node[key] = JSON.parse(json);
|
|
33
|
+
}
|
|
27
34
|
}
|
|
28
|
-
const
|
|
29
|
-
|
|
35
|
+
const def = ((_c = t.def) !== null && _c !== void 0 ? _c : {});
|
|
36
|
+
const kind = (_d = def.type) !== null && _d !== void 0 ? _d : "";
|
|
37
|
+
if (kind === "object") {
|
|
30
38
|
const shape = t.shape;
|
|
31
|
-
for (const [key, sub] of Object.entries(shape))
|
|
32
|
-
|
|
33
|
-
if (propNode) {
|
|
34
|
-
backfillDescriptions(sub, propNode);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
39
|
+
for (const [key, sub] of Object.entries(shape))
|
|
40
|
+
visit(sub, (_e = node.properties) === null || _e === void 0 ? void 0 : _e[key]);
|
|
37
41
|
}
|
|
38
|
-
else if (kind === "array"
|
|
39
|
-
|
|
40
|
-
backfillDescriptions(element, node.items);
|
|
42
|
+
else if (kind === "array") {
|
|
43
|
+
visit(def.element, node.items);
|
|
41
44
|
}
|
|
42
|
-
else if (kind === "
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
else if (kind === "record") {
|
|
46
|
+
visit(def.valueType, node.additionalProperties);
|
|
47
|
+
}
|
|
48
|
+
else if (kind === "union") {
|
|
49
|
+
const branches = (_g = (_f = node.anyOf) !== null && _f !== void 0 ? _f : node.oneOf) !== null && _g !== void 0 ? _g : [];
|
|
50
|
+
(_h = def.options) === null || _h === void 0 ? void 0 : _h.forEach((option, i) => visit(option, branches[i]));
|
|
51
|
+
}
|
|
52
|
+
else if (kind === "intersection") {
|
|
53
|
+
visit(def.left, (_j = node.allOf) === null || _j === void 0 ? void 0 : _j[0]);
|
|
54
|
+
visit(def.right, (_k = node.allOf) === null || _k === void 0 ? void 0 : _k[1]);
|
|
55
|
+
}
|
|
56
|
+
else if (kind === "tuple") {
|
|
57
|
+
const items = node.items;
|
|
58
|
+
if (Array.isArray(items))
|
|
59
|
+
(_l = def.items) === null || _l === void 0 ? void 0 : _l.forEach((item, i) => visit(item, items[i]));
|
|
60
|
+
else
|
|
61
|
+
(_m = def.items) === null || _m === void 0 ? void 0 : _m.forEach((item) => visit(item, items));
|
|
62
|
+
visit(def.rest, node.additionalItems);
|
|
63
|
+
}
|
|
64
|
+
else if (kind === "nullable") {
|
|
65
|
+
// `anyOf: [inner, { type: "null" }]`, or the inner node itself when it inlines.
|
|
66
|
+
visit(def.innerType, (_p = (_o = node.anyOf) === null || _o === void 0 ? void 0 : _o[0]) !== null && _p !== void 0 ? _p : node);
|
|
67
|
+
}
|
|
68
|
+
else if (SAME_NODE_WRAPPERS.has(kind)) {
|
|
69
|
+
visit(def.innerType, node);
|
|
70
|
+
}
|
|
71
|
+
else if (kind === "lazy") {
|
|
72
|
+
visit((_q = def.getter) === null || _q === void 0 ? void 0 : _q.call(def), node);
|
|
73
|
+
}
|
|
74
|
+
else if (kind === "pipe") {
|
|
75
|
+
// The node describes one side; a marker on either side keeps the field sensitive.
|
|
76
|
+
visit(def.out, node);
|
|
77
|
+
visit(def.in, node);
|
|
50
78
|
}
|
|
51
79
|
};
|
|
52
80
|
// The repo's ajv schemas and every hand-written workflow use draft-07; zod's
|
|
53
81
|
// default target is 2020-12, which ajv would reject.
|
|
54
82
|
const toJsonSchema = (t) => {
|
|
55
83
|
const result = v4_1.z.toJSONSchema(t, { target: "draft-7" });
|
|
56
|
-
|
|
84
|
+
backfillMetadata(t, result);
|
|
57
85
|
return result;
|
|
58
86
|
};
|
|
59
87
|
exports.toJsonSchema = toJsonSchema;
|
package/dist/cjs/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAGlB,kFAHA,MAAC,OAGA;AAyCV,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":";;;AAAA,+BAA2B;AAGlB,kFAHA,MAAC,OAGA;AAyCV,6EAA6E;AAC7E,sEAAsE;AACtE,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,yEAAyE;AACzE,MAAM,oBAAoB,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AAElH,yFAAyF;AACzF,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAiB5G,MAAM,MAAM,GAAG,CAAC,CAAU,EAA0B,EAAE,CACpD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;AAE3F,MAAM,gBAAgB,GAAG,CAAC,CAAY,EAAE,IAAgB,EAAE,OAAuB,IAAI,GAAG,EAAE,EAAQ,EAAE;;IAClG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAAE,OAAO;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,KAAmC,EAAE,SAAkB,EAAE,EAAE;QACxE,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5B,IAAI,KAAK,IAAI,CAAC;YAAE,gBAAgB,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,MAAA,MAAC,CAAyC,EAAC,IAAI,kDAAI,CAAC;IACjE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;YACvC,+DAA+D;YAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAE,IAAgC,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClF,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,CAAC,MAAC,CAAiC,CAAC,GAAG,mCAAI,EAAE,CAAW,CAAC;IACrE,MAAM,IAAI,GAAG,MAAA,GAAG,CAAC,IAAI,mCAAI,EAAE,CAAC;IAC5B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,KAAK,GAAI,CAAqD,CAAC,KAAK,CAAC;QAC3E,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,KAAK,CAAC,GAAG,EAAE,MAAA,IAAI,CAAC,UAAU,0CAAG,GAAG,CAAC,CAAC,CAAC;IACrF,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;SAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAClD,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAA,MAAA,IAAI,CAAC,KAAK,mCAAI,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC;QAChD,MAAA,GAAG,CAAC,OAAO,0CAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QACnC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAG,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAG,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC;QAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAA,GAAG,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;YAC5E,MAAA,GAAG,CAAC,KAAK,0CAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;SAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QAC/B,gFAAgF;QAChF,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAG,CAAC,CAAC,mCAAI,IAAI,CAAC,CAAC;IAChD,CAAC;SAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC7B,CAAC;SAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAA,GAAG,CAAC,MAAM,mDAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;SAAM,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,kFAAkF;QAClF,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrB,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACtB,CAAC;AACH,CAAC,CAAC;AAEF,6EAA6E;AAC7E,qDAAqD;AAC9C,MAAM,YAAY,GAAG,CAAC,CAAY,EAAc,EAAE;IACvD,MAAM,MAAM,GAAG,MAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAe,CAAC;IACtE,gBAAgB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAJW,QAAA,YAAY,gBAIvB;AAEF,0EAA0E;AAC1E,wBAAwB;AACjB,MAAM,QAAQ,GAAG,GAAG,EAAE,CAC3B,MAAC,CAAC,MAAM,CAAC;IACP,UAAU,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9B,QAAQ,EAAE,MAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC;CAC9B,CAAC,CAAC;AAJQ,QAAA,QAAQ,YAIhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-webhook.js","sourceRoot":"","sources":["../../src/define-webhook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define-webhook.js","sourceRoot":"","sources":["../../src/define-webhook.ts"],"names":[],"mappings":"AAwDA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAiB,EAAE,CAAC,CAAC;IAClE,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;SAClD,CAAC;IACJ,CAAC;CACF,CAAC,CAAC"}
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,SAAS,EACT,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,GAAG,EACH,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,SAAS,EACT,KAAK,EACL,OAAO,EACP,KAAK,EACL,OAAO,EACP,GAAG,EACH,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAUpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAYtD,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/esm/schema.js
CHANGED
|
@@ -1,56 +1,84 @@
|
|
|
1
1
|
import { z } from "zod/v4";
|
|
2
2
|
export { z };
|
|
3
|
-
// `z.toJSONSchema`
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
// (
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if (propNode) {
|
|
31
|
-
backfillDescriptions(sub, propNode);
|
|
32
|
-
}
|
|
3
|
+
// `z.toJSONSchema` finds `.meta()` through a per-zod-instance registry, so a
|
|
4
|
+
// schema built by another zod copy (a vm-executed workflow entry, see
|
|
5
|
+
// `workflow-compiler/src/execute.ts`) loses it; the schema's own no-argument
|
|
6
|
+
// `.meta()` still reads the right registry. This walks the zod schema beside
|
|
7
|
+
// the JSON node `z.toJSONSchema` emitted for it, kind by kind, and copies the
|
|
8
|
+
// keys every API Ajv accepts (`input` is registered there as a keyword).
|
|
9
|
+
const BACKFILLED_META_KEYS = ["description", "title", "examples", "deprecated", "readOnly", "writeOnly", "input"];
|
|
10
|
+
// Wrappers that add no JSON Schema level: the inner schema's keys land on the same node.
|
|
11
|
+
const SAME_NODE_WRAPPERS = new Set(["optional", "default", "prefault", "nonoptional", "readonly", "catch"]);
|
|
12
|
+
const asNode = (v) => typeof v === "object" && v !== null && !Array.isArray(v) ? v : undefined;
|
|
13
|
+
const backfillMetadata = (t, node, seen = new Set()) => {
|
|
14
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
15
|
+
if (seen.has(t))
|
|
16
|
+
return;
|
|
17
|
+
const path = new Set(seen).add(t);
|
|
18
|
+
const visit = (child, childNode) => {
|
|
19
|
+
const n = asNode(childNode);
|
|
20
|
+
if (child && n)
|
|
21
|
+
backfillMetadata(child, n, path);
|
|
22
|
+
};
|
|
23
|
+
const meta = (_b = (_a = t).meta) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
24
|
+
if (typeof meta === "object" && meta !== null) {
|
|
25
|
+
for (const key of BACKFILLED_META_KEYS) {
|
|
26
|
+
// Round-tripped into plain data from this realm, not the vm's.
|
|
27
|
+
const json = JSON.stringify(meta[key]);
|
|
28
|
+
if (json !== undefined && node[key] === undefined)
|
|
29
|
+
node[key] = JSON.parse(json);
|
|
33
30
|
}
|
|
34
31
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
32
|
+
const def = ((_c = t.def) !== null && _c !== void 0 ? _c : {});
|
|
33
|
+
const kind = (_d = def.type) !== null && _d !== void 0 ? _d : "";
|
|
34
|
+
if (kind === "object") {
|
|
35
|
+
const shape = t.shape;
|
|
36
|
+
for (const [key, sub] of Object.entries(shape))
|
|
37
|
+
visit(sub, (_e = node.properties) === null || _e === void 0 ? void 0 : _e[key]);
|
|
38
|
+
}
|
|
39
|
+
else if (kind === "array") {
|
|
40
|
+
visit(def.element, node.items);
|
|
41
|
+
}
|
|
42
|
+
else if (kind === "record") {
|
|
43
|
+
visit(def.valueType, node.additionalProperties);
|
|
44
|
+
}
|
|
45
|
+
else if (kind === "union") {
|
|
46
|
+
const branches = (_g = (_f = node.anyOf) !== null && _f !== void 0 ? _f : node.oneOf) !== null && _g !== void 0 ? _g : [];
|
|
47
|
+
(_h = def.options) === null || _h === void 0 ? void 0 : _h.forEach((option, i) => visit(option, branches[i]));
|
|
48
|
+
}
|
|
49
|
+
else if (kind === "intersection") {
|
|
50
|
+
visit(def.left, (_j = node.allOf) === null || _j === void 0 ? void 0 : _j[0]);
|
|
51
|
+
visit(def.right, (_k = node.allOf) === null || _k === void 0 ? void 0 : _k[1]);
|
|
52
|
+
}
|
|
53
|
+
else if (kind === "tuple") {
|
|
54
|
+
const items = node.items;
|
|
55
|
+
if (Array.isArray(items))
|
|
56
|
+
(_l = def.items) === null || _l === void 0 ? void 0 : _l.forEach((item, i) => visit(item, items[i]));
|
|
57
|
+
else
|
|
58
|
+
(_m = def.items) === null || _m === void 0 ? void 0 : _m.forEach((item) => visit(item, items));
|
|
59
|
+
visit(def.rest, node.additionalItems);
|
|
60
|
+
}
|
|
61
|
+
else if (kind === "nullable") {
|
|
62
|
+
// `anyOf: [inner, { type: "null" }]`, or the inner node itself when it inlines.
|
|
63
|
+
visit(def.innerType, (_p = (_o = node.anyOf) === null || _o === void 0 ? void 0 : _o[0]) !== null && _p !== void 0 ? _p : node);
|
|
64
|
+
}
|
|
65
|
+
else if (SAME_NODE_WRAPPERS.has(kind)) {
|
|
66
|
+
visit(def.innerType, node);
|
|
67
|
+
}
|
|
68
|
+
else if (kind === "lazy") {
|
|
69
|
+
visit((_q = def.getter) === null || _q === void 0 ? void 0 : _q.call(def), node);
|
|
70
|
+
}
|
|
71
|
+
else if (kind === "pipe") {
|
|
72
|
+
// The node describes one side; a marker on either side keeps the field sensitive.
|
|
73
|
+
visit(def.out, node);
|
|
74
|
+
visit(def.in, node);
|
|
47
75
|
}
|
|
48
76
|
};
|
|
49
77
|
// The repo's ajv schemas and every hand-written workflow use draft-07; zod's
|
|
50
78
|
// default target is 2020-12, which ajv would reject.
|
|
51
79
|
export const toJsonSchema = (t) => {
|
|
52
80
|
const result = z.toJSONSchema(t, { target: "draft-7" });
|
|
53
|
-
|
|
81
|
+
backfillMetadata(t, result);
|
|
54
82
|
return result;
|
|
55
83
|
};
|
|
56
84
|
// A pointer to bytes held out-of-band, so a large payload never rides the
|
package/dist/esm/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,OAAO,EAAE,CAAC,EAAE,CAAC;AAyCb,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -53,7 +53,7 @@ type Condition = {
|
|
|
53
53
|
value: string | number | boolean;
|
|
54
54
|
};
|
|
55
55
|
type WaitForCallbackResume = {
|
|
56
|
-
/** Stable scope for the lookup key (e.g. "
|
|
56
|
+
/** Stable scope for the lookup key (e.g. "esign:completed"). */
|
|
57
57
|
namespace: string;
|
|
58
58
|
/** Composed at runtime via JSONata. Resumer reads the same key. */
|
|
59
59
|
lookupKey: string;
|
|
@@ -233,6 +233,16 @@ interface WebhookResponseRuleSpec {
|
|
|
233
233
|
responseBody?: Record<string, string>;
|
|
234
234
|
skipHandlers?: boolean;
|
|
235
235
|
}
|
|
236
|
+
interface WebhookSignatureSpec {
|
|
237
|
+
/** The request header carrying the signature, e.g. `x-xero-signature`. */
|
|
238
|
+
header: string;
|
|
239
|
+
/** Default `hmac-sha256`, the only one supported. */
|
|
240
|
+
algorithm?: "hmac-sha256";
|
|
241
|
+
/** Default `base64`. */
|
|
242
|
+
encoding?: "base64" | "hex";
|
|
243
|
+
/** Stripped from the header value before comparing, e.g. `sha256=`. */
|
|
244
|
+
prefix?: string;
|
|
245
|
+
}
|
|
236
246
|
interface WebhookSpec {
|
|
237
247
|
name: string;
|
|
238
248
|
description?: string;
|
|
@@ -241,6 +251,9 @@ interface WebhookSpec {
|
|
|
241
251
|
* slug-less webhook retargets which row it updates. */
|
|
242
252
|
slug?: string;
|
|
243
253
|
responseRules?: WebhookResponseRuleSpec[];
|
|
254
|
+
/** Verify each call's HMAC signature. Omitted: the deployed webhook keeps
|
|
255
|
+
* whatever check it has. In a module, a webhook with a check needs a `slug`. */
|
|
256
|
+
signatureVerification?: WebhookSignatureSpec;
|
|
244
257
|
}
|
|
245
258
|
interface RecordedWebhook {
|
|
246
259
|
kind: "webhook";
|
|
@@ -248,6 +261,7 @@ interface RecordedWebhook {
|
|
|
248
261
|
description?: string;
|
|
249
262
|
slug?: string;
|
|
250
263
|
responseRules?: WebhookResponseRuleSpec[];
|
|
264
|
+
signatureVerification?: WebhookSignatureSpec;
|
|
251
265
|
}
|
|
252
266
|
interface WebhookModule {
|
|
253
267
|
record(): RecordedWebhook;
|
|
@@ -593,4 +607,4 @@ type NodeTypeSupport = {
|
|
|
593
607
|
declare const NODE_TYPE_SUPPORT: Record<WorkflowNodeType, NodeTypeSupport>;
|
|
594
608
|
|
|
595
609
|
export { Builder, IdAllocator, NODE_TYPE_SUPPORT, artifact, contains, defineAgentRef, defineFunction, defineKnowledgeBase, defineSchedule, defineTool, defineToolWorkflow, defineWebhook, defineWholeStateFunction, defineWorkflow, encodeValue, eq, gt, gte, handleFor, isNull, isPresent, isRecordedResource, isRef, isTpl, jsonata, lt, lte, refPath, toJsonSchema, tpl, tplText };
|
|
596
|
-
export type { AgentRefDef, AgentSpec, ApprovalSpec, BashSpec, Cond, ExecuteWorkflowSpec, FunctionDef, Handle, HutlyApi, KnowledgeBaseDef, NodeInput, NodeSpec, NodeTypeSupport, OnFailure, RecordedEntry, RecordedSchedule, RecordedWebhook, RecordedWorkflow, RefLike, ScheduleModule, ScheduleSpec, ScheduleTriggerSpec, Scope, ToolBuilder, ToolCallInput, ToolConfigFor, ToolConfigRegistry, ToolDef, ToolInstanceRegistry, ToolInstanceShape, ToolInstancesFor, ToolWorkflowSpec, TplLike, TriggerBindingsSpec, TriggerSpec, WaitForCallbackSpec, WebhookModule, WebhookResponseRuleSpec, WebhookSpec, WebhookTriggerSpec, WholeStateFunctionDef, WorkflowModule, WorkflowSpec };
|
|
610
|
+
export type { AgentRefDef, AgentSpec, ApprovalSpec, BashSpec, Cond, ExecuteWorkflowSpec, FunctionDef, Handle, HutlyApi, KnowledgeBaseDef, NodeInput, NodeSpec, NodeTypeSupport, OnFailure, RecordedEntry, RecordedSchedule, RecordedWebhook, RecordedWorkflow, RefLike, ScheduleModule, ScheduleSpec, ScheduleTriggerSpec, Scope, ToolBuilder, ToolCallInput, ToolConfigFor, ToolConfigRegistry, ToolDef, ToolInstanceRegistry, ToolInstanceShape, ToolInstancesFor, ToolWorkflowSpec, TplLike, TriggerBindingsSpec, TriggerSpec, WaitForCallbackSpec, WebhookModule, WebhookResponseRuleSpec, WebhookSignatureSpec, WebhookSpec, WebhookTriggerSpec, WholeStateFunctionDef, WorkflowModule, WorkflowSpec };
|