@positronic/core 0.0.19 → 0.0.21
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/src/dsl/brain-runner.js +13 -3
- package/dist/src/dsl/brain.js +49 -12
- package/dist/src/dsl/constants.js +2 -1
- package/dist/src/dsl/example-webhook.js +271 -0
- package/dist/src/dsl/webhook.js +16 -0
- package/dist/src/index.js +1 -0
- package/dist/types/dsl/brain-runner.d.ts +2 -1
- package/dist/types/dsl/brain-runner.d.ts.map +1 -1
- package/dist/types/dsl/brain.d.ts +35 -8
- package/dist/types/dsl/brain.d.ts.map +1 -1
- package/dist/types/dsl/constants.d.ts +1 -0
- package/dist/types/dsl/constants.d.ts.map +1 -1
- package/dist/types/dsl/example-webhook.d.ts +35 -0
- package/dist/types/dsl/example-webhook.d.ts.map +1 -0
- package/dist/types/dsl/webhook.d.ts +31 -0
- package/dist/types/dsl/webhook.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -312,12 +312,12 @@ export var BrainRunner = /*#__PURE__*/ function() {
|
|
|
312
312
|
key: "run",
|
|
313
313
|
value: function run(_0) {
|
|
314
314
|
return _async_to_generator(function(brain) {
|
|
315
|
-
var _ref, _ref_initialState, initialState, options, initialCompletedSteps, brainRunId, endAfter, signal, _this_options, adapters, client, resources, currentState, stepNumber, brainRun, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret, err, error, cancelledEvent;
|
|
315
|
+
var _ref, _ref_initialState, initialState, options, initialCompletedSteps, brainRunId, endAfter, signal, response, _this_options, adapters, client, resources, currentState, stepNumber, brainRun, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret, err, error, cancelledEvent;
|
|
316
316
|
var _arguments = arguments;
|
|
317
317
|
return _ts_generator(this, function(_state) {
|
|
318
318
|
switch(_state.label){
|
|
319
319
|
case 0:
|
|
320
|
-
_ref = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {}, _ref_initialState = _ref.initialState, initialState = _ref_initialState === void 0 ? {} : _ref_initialState, options = _ref.options, initialCompletedSteps = _ref.initialCompletedSteps, brainRunId = _ref.brainRunId, endAfter = _ref.endAfter, signal = _ref.signal;
|
|
320
|
+
_ref = _arguments.length > 1 && _arguments[1] !== void 0 ? _arguments[1] : {}, _ref_initialState = _ref.initialState, initialState = _ref_initialState === void 0 ? {} : _ref_initialState, options = _ref.options, initialCompletedSteps = _ref.initialCompletedSteps, brainRunId = _ref.brainRunId, endAfter = _ref.endAfter, signal = _ref.signal, response = _ref.response;
|
|
321
321
|
_this_options = this.options, adapters = _this_options.adapters, client = _this_options.client, resources = _this_options.resources;
|
|
322
322
|
currentState = initialState !== null && initialState !== void 0 ? initialState : {};
|
|
323
323
|
stepNumber = 1;
|
|
@@ -339,7 +339,8 @@ export var BrainRunner = /*#__PURE__*/ function() {
|
|
|
339
339
|
brainRunId: brainRunId,
|
|
340
340
|
options: options,
|
|
341
341
|
client: client,
|
|
342
|
-
resources: resources !== null && resources !== void 0 ? resources : {}
|
|
342
|
+
resources: resources !== null && resources !== void 0 ? resources : {},
|
|
343
|
+
response: response
|
|
343
344
|
}) : brain.run({
|
|
344
345
|
initialState: initialState,
|
|
345
346
|
options: options,
|
|
@@ -426,6 +427,15 @@ export var BrainRunner = /*#__PURE__*/ function() {
|
|
|
426
427
|
}
|
|
427
428
|
stepNumber++;
|
|
428
429
|
}
|
|
430
|
+
// Stop execution when webhook event is encountered
|
|
431
|
+
if (event.type === BRAIN_EVENTS.WEBHOOK) {
|
|
432
|
+
return [
|
|
433
|
+
2,
|
|
434
|
+
{
|
|
435
|
+
v: currentState
|
|
436
|
+
}
|
|
437
|
+
];
|
|
438
|
+
}
|
|
429
439
|
return [
|
|
430
440
|
2
|
|
431
441
|
];
|
package/dist/src/dsl/brain.js
CHANGED
|
@@ -289,6 +289,10 @@ function _overload_yield(value, kind) {
|
|
|
289
289
|
this.v = value;
|
|
290
290
|
this.k = kind;
|
|
291
291
|
}
|
|
292
|
+
function _type_of(obj) {
|
|
293
|
+
"@swc/helpers - typeof";
|
|
294
|
+
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
295
|
+
}
|
|
292
296
|
function _wrap_async_generator(fn) {
|
|
293
297
|
return function() {
|
|
294
298
|
return new _async_generator(fn.apply(this, arguments));
|
|
@@ -473,7 +477,11 @@ export var Brain = /*#__PURE__*/ function() {
|
|
|
473
477
|
action: action
|
|
474
478
|
};
|
|
475
479
|
this.blocks.push(stepBlock);
|
|
476
|
-
|
|
480
|
+
// Create next brain with inferred response type
|
|
481
|
+
var nextBrain = new Brain(this.title, this.description).withBlocks(this.blocks);
|
|
482
|
+
nextBrain.services = this.services;
|
|
483
|
+
nextBrain.optionsSchema = this.optionsSchema;
|
|
484
|
+
return nextBrain;
|
|
477
485
|
}
|
|
478
486
|
},
|
|
479
487
|
{
|
|
@@ -510,15 +518,16 @@ export var Brain = /*#__PURE__*/ function() {
|
|
|
510
518
|
title: title,
|
|
511
519
|
action: function(_param) {
|
|
512
520
|
return _async_to_generator(function() {
|
|
513
|
-
var state, runClient, options, resources, services, template, outputSchema, stepClient, schema, schemaName, client, prompt, response, stateWithResponse;
|
|
521
|
+
var state, runClient, options, resources, webhookResponse, services, template, outputSchema, stepClient, schema, schemaName, client, prompt, response, stateWithResponse;
|
|
514
522
|
return _ts_generator(this, function(_state) {
|
|
515
523
|
switch(_state.label){
|
|
516
524
|
case 0:
|
|
517
|
-
state = _param.state, runClient = _param.client, options = _param.options, resources = _param.resources, services = _object_without_properties(_param, [
|
|
525
|
+
state = _param.state, runClient = _param.client, options = _param.options, resources = _param.resources, webhookResponse = _param.response, services = _object_without_properties(_param, [
|
|
518
526
|
"state",
|
|
519
527
|
"client",
|
|
520
528
|
"options",
|
|
521
|
-
"resources"
|
|
529
|
+
"resources",
|
|
530
|
+
"response"
|
|
522
531
|
]);
|
|
523
532
|
template = config.template, outputSchema = config.outputSchema, stepClient = config.client;
|
|
524
533
|
schema = outputSchema.schema, schemaName = outputSchema.name;
|
|
@@ -679,7 +688,8 @@ var BrainEventStream = /*#__PURE__*/ function() {
|
|
|
679
688
|
_define_property(this, "options", void 0);
|
|
680
689
|
_define_property(this, "services", void 0);
|
|
681
690
|
_define_property(this, "resources", void 0);
|
|
682
|
-
|
|
691
|
+
_define_property(this, "currentResponse", undefined);
|
|
692
|
+
var _params_initialState = params.initialState, initialState = _params_initialState === void 0 ? {} : _params_initialState, initialCompletedSteps = params.initialCompletedSteps, blocks = params.blocks, title = params.title, description = params.description, providedBrainRunId = params.brainRunId, _params_options = params.options, options = _params_options === void 0 ? {} : _params_options, client = params.client, services = params.services, _params_resources = params.resources, resources = _params_resources === void 0 ? {} : _params_resources, response = params.response;
|
|
683
693
|
this.initialState = initialState;
|
|
684
694
|
this.title = title;
|
|
685
695
|
this.description = description;
|
|
@@ -722,6 +732,10 @@ var BrainEventStream = /*#__PURE__*/ function() {
|
|
|
722
732
|
}
|
|
723
733
|
// Use provided ID if available, otherwise generate one
|
|
724
734
|
this.brainRunId = providedBrainRunId !== null && providedBrainRunId !== void 0 ? providedBrainRunId : uuidv4();
|
|
735
|
+
// Set initial response if provided (for webhook restarts)
|
|
736
|
+
if (response) {
|
|
737
|
+
this.currentResponse = response;
|
|
738
|
+
}
|
|
725
739
|
}
|
|
726
740
|
_create_class(BrainEventStream, [
|
|
727
741
|
{
|
|
@@ -924,7 +938,7 @@ var BrainEventStream = /*#__PURE__*/ function() {
|
|
|
924
938
|
key: "executeStep",
|
|
925
939
|
value: function executeStep(step) {
|
|
926
940
|
return _wrap_async_generator(function() {
|
|
927
|
-
var block, initialState, patches, _this_options, innerRun, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, event, err, innerState, prevState, _, prevState1, _this_options1,
|
|
941
|
+
var block, initialState, patches, _this_options, innerRun, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, event, err, innerState, prevState, _, prevState1, _this_options1, result, serializedWaitFor;
|
|
928
942
|
return _ts_generator(this, function(_state) {
|
|
929
943
|
switch(_state.label){
|
|
930
944
|
case 0:
|
|
@@ -1049,32 +1063,55 @@ var BrainEventStream = /*#__PURE__*/ function() {
|
|
|
1049
1063
|
_state.sent();
|
|
1050
1064
|
return [
|
|
1051
1065
|
3,
|
|
1052
|
-
|
|
1066
|
+
20
|
|
1053
1067
|
];
|
|
1054
1068
|
case 16:
|
|
1055
1069
|
// Get previous state before action
|
|
1056
1070
|
prevState1 = this.currentState;
|
|
1057
|
-
// Execute regular step
|
|
1058
|
-
_1 = this;
|
|
1059
1071
|
return [
|
|
1060
1072
|
4,
|
|
1061
1073
|
_await_async_generator(block.action(_object_spread({
|
|
1062
1074
|
state: this.currentState,
|
|
1063
1075
|
options: (_this_options1 = this.options) !== null && _this_options1 !== void 0 ? _this_options1 : {},
|
|
1064
1076
|
client: this.client,
|
|
1065
|
-
resources: this.resources
|
|
1077
|
+
resources: this.resources,
|
|
1078
|
+
response: this.currentResponse
|
|
1066
1079
|
}, this.services)))
|
|
1067
1080
|
];
|
|
1068
1081
|
case 17:
|
|
1069
|
-
|
|
1082
|
+
result = _state.sent();
|
|
1083
|
+
this.currentState = result && (typeof result === "undefined" ? "undefined" : _type_of(result)) === 'object' && 'waitFor' in result ? result.state : result;
|
|
1070
1084
|
return [
|
|
1071
1085
|
5,
|
|
1072
1086
|
_ts_values(_async_generator_delegate(_async_iterator(this.completeStep(step, prevState1))))
|
|
1073
1087
|
];
|
|
1074
1088
|
case 18:
|
|
1075
1089
|
_state.sent();
|
|
1076
|
-
|
|
1090
|
+
if (!(result && (typeof result === "undefined" ? "undefined" : _type_of(result)) === 'object' && 'waitFor' in result)) return [
|
|
1091
|
+
3,
|
|
1092
|
+
20
|
|
1093
|
+
];
|
|
1094
|
+
// Serialize webhook registrations (remove Zod schemas for event serializability)
|
|
1095
|
+
serializedWaitFor = result.waitFor.map(function(registration) {
|
|
1096
|
+
return {
|
|
1097
|
+
slug: registration.slug,
|
|
1098
|
+
identifier: registration.identifier
|
|
1099
|
+
};
|
|
1100
|
+
});
|
|
1101
|
+
return [
|
|
1102
|
+
4,
|
|
1103
|
+
{
|
|
1104
|
+
type: BRAIN_EVENTS.WEBHOOK,
|
|
1105
|
+
waitFor: serializedWaitFor,
|
|
1106
|
+
state: this.currentState,
|
|
1107
|
+
options: this.options,
|
|
1108
|
+
brainRunId: this.brainRunId
|
|
1109
|
+
}
|
|
1110
|
+
];
|
|
1077
1111
|
case 19:
|
|
1112
|
+
_state.sent();
|
|
1113
|
+
_state.label = 20;
|
|
1114
|
+
case 20:
|
|
1078
1115
|
return [
|
|
1079
1116
|
2
|
|
1080
1117
|
];
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
2
|
+
try {
|
|
3
|
+
var info = gen[key](arg);
|
|
4
|
+
var value = info.value;
|
|
5
|
+
} catch (error) {
|
|
6
|
+
reject(error);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
if (info.done) {
|
|
10
|
+
resolve(value);
|
|
11
|
+
} else {
|
|
12
|
+
Promise.resolve(value).then(_next, _throw);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function _async_to_generator(fn) {
|
|
16
|
+
return function() {
|
|
17
|
+
var self = this, args = arguments;
|
|
18
|
+
return new Promise(function(resolve, reject) {
|
|
19
|
+
var gen = fn.apply(self, args);
|
|
20
|
+
function _next(value) {
|
|
21
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
22
|
+
}
|
|
23
|
+
function _throw(err) {
|
|
24
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
25
|
+
}
|
|
26
|
+
_next(undefined);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function _define_property(obj, key, value) {
|
|
31
|
+
if (key in obj) {
|
|
32
|
+
Object.defineProperty(obj, key, {
|
|
33
|
+
value: value,
|
|
34
|
+
enumerable: true,
|
|
35
|
+
configurable: true,
|
|
36
|
+
writable: true
|
|
37
|
+
});
|
|
38
|
+
} else {
|
|
39
|
+
obj[key] = value;
|
|
40
|
+
}
|
|
41
|
+
return obj;
|
|
42
|
+
}
|
|
43
|
+
function _object_spread(target) {
|
|
44
|
+
for(var i = 1; i < arguments.length; i++){
|
|
45
|
+
var source = arguments[i] != null ? arguments[i] : {};
|
|
46
|
+
var ownKeys = Object.keys(source);
|
|
47
|
+
if (typeof Object.getOwnPropertySymbols === "function") {
|
|
48
|
+
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
|
|
49
|
+
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
ownKeys.forEach(function(key) {
|
|
53
|
+
_define_property(target, key, source[key]);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return target;
|
|
57
|
+
}
|
|
58
|
+
function ownKeys(object, enumerableOnly) {
|
|
59
|
+
var keys = Object.keys(object);
|
|
60
|
+
if (Object.getOwnPropertySymbols) {
|
|
61
|
+
var symbols = Object.getOwnPropertySymbols(object);
|
|
62
|
+
if (enumerableOnly) {
|
|
63
|
+
symbols = symbols.filter(function(sym) {
|
|
64
|
+
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
keys.push.apply(keys, symbols);
|
|
68
|
+
}
|
|
69
|
+
return keys;
|
|
70
|
+
}
|
|
71
|
+
function _object_spread_props(target, source) {
|
|
72
|
+
source = source != null ? source : {};
|
|
73
|
+
if (Object.getOwnPropertyDescriptors) {
|
|
74
|
+
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
|
|
75
|
+
} else {
|
|
76
|
+
ownKeys(Object(source)).forEach(function(key) {
|
|
77
|
+
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return target;
|
|
81
|
+
}
|
|
82
|
+
function _ts_generator(thisArg, body) {
|
|
83
|
+
var f, y, t, _ = {
|
|
84
|
+
label: 0,
|
|
85
|
+
sent: function() {
|
|
86
|
+
if (t[0] & 1) throw t[1];
|
|
87
|
+
return t[1];
|
|
88
|
+
},
|
|
89
|
+
trys: [],
|
|
90
|
+
ops: []
|
|
91
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
92
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
93
|
+
return this;
|
|
94
|
+
}), g;
|
|
95
|
+
function verb(n) {
|
|
96
|
+
return function(v) {
|
|
97
|
+
return step([
|
|
98
|
+
n,
|
|
99
|
+
v
|
|
100
|
+
]);
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function step(op) {
|
|
104
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
105
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
106
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
107
|
+
if (y = 0, t) op = [
|
|
108
|
+
op[0] & 2,
|
|
109
|
+
t.value
|
|
110
|
+
];
|
|
111
|
+
switch(op[0]){
|
|
112
|
+
case 0:
|
|
113
|
+
case 1:
|
|
114
|
+
t = op;
|
|
115
|
+
break;
|
|
116
|
+
case 4:
|
|
117
|
+
_.label++;
|
|
118
|
+
return {
|
|
119
|
+
value: op[1],
|
|
120
|
+
done: false
|
|
121
|
+
};
|
|
122
|
+
case 5:
|
|
123
|
+
_.label++;
|
|
124
|
+
y = op[1];
|
|
125
|
+
op = [
|
|
126
|
+
0
|
|
127
|
+
];
|
|
128
|
+
continue;
|
|
129
|
+
case 7:
|
|
130
|
+
op = _.ops.pop();
|
|
131
|
+
_.trys.pop();
|
|
132
|
+
continue;
|
|
133
|
+
default:
|
|
134
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
135
|
+
_ = 0;
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
139
|
+
_.label = op[1];
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
143
|
+
_.label = t[1];
|
|
144
|
+
t = op;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
if (t && _.label < t[2]) {
|
|
148
|
+
_.label = t[2];
|
|
149
|
+
_.ops.push(op);
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
if (t[2]) _.ops.pop();
|
|
153
|
+
_.trys.pop();
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
op = body.call(thisArg, _);
|
|
157
|
+
} catch (e) {
|
|
158
|
+
op = [
|
|
159
|
+
6,
|
|
160
|
+
e
|
|
161
|
+
];
|
|
162
|
+
y = 0;
|
|
163
|
+
} finally{
|
|
164
|
+
f = t = 0;
|
|
165
|
+
}
|
|
166
|
+
if (op[0] & 5) throw op[1];
|
|
167
|
+
return {
|
|
168
|
+
value: op[0] ? op[1] : void 0,
|
|
169
|
+
done: true
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
import { brain } from './brain.js';
|
|
174
|
+
import { z } from 'zod';
|
|
175
|
+
import { createWebhook } from './webhook.js';
|
|
176
|
+
// Example webhooks using createWebhook factory
|
|
177
|
+
export var slackWebhook = createWebhook('slack', z.object({
|
|
178
|
+
message: z.string(),
|
|
179
|
+
threadId: z.string()
|
|
180
|
+
}), function(request) {
|
|
181
|
+
return _async_to_generator(function() {
|
|
182
|
+
var body;
|
|
183
|
+
return _ts_generator(this, function(_state) {
|
|
184
|
+
switch(_state.label){
|
|
185
|
+
case 0:
|
|
186
|
+
return [
|
|
187
|
+
4,
|
|
188
|
+
request.json()
|
|
189
|
+
];
|
|
190
|
+
case 1:
|
|
191
|
+
body = _state.sent();
|
|
192
|
+
return [
|
|
193
|
+
2,
|
|
194
|
+
{
|
|
195
|
+
type: 'webhook',
|
|
196
|
+
identifier: body.thread_ts,
|
|
197
|
+
response: {
|
|
198
|
+
message: body.text,
|
|
199
|
+
threadId: body.thread_ts
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
];
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
})();
|
|
206
|
+
});
|
|
207
|
+
export var emailWebhook = createWebhook('email', z.object({
|
|
208
|
+
subject: z.string(),
|
|
209
|
+
body: z.string(),
|
|
210
|
+
from: z.string()
|
|
211
|
+
}), function(request) {
|
|
212
|
+
return _async_to_generator(function() {
|
|
213
|
+
var body;
|
|
214
|
+
return _ts_generator(this, function(_state) {
|
|
215
|
+
switch(_state.label){
|
|
216
|
+
case 0:
|
|
217
|
+
return [
|
|
218
|
+
4,
|
|
219
|
+
request.json()
|
|
220
|
+
];
|
|
221
|
+
case 1:
|
|
222
|
+
body = _state.sent();
|
|
223
|
+
return [
|
|
224
|
+
2,
|
|
225
|
+
{
|
|
226
|
+
type: 'webhook',
|
|
227
|
+
identifier: body.messageId,
|
|
228
|
+
response: {
|
|
229
|
+
subject: body.subject,
|
|
230
|
+
body: body.body,
|
|
231
|
+
from: body.from
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
];
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
})();
|
|
238
|
+
});
|
|
239
|
+
var myBrain = brain('My Brain').step('My Step', function(param) {
|
|
240
|
+
var state = param.state;
|
|
241
|
+
return {
|
|
242
|
+
state: _object_spread({
|
|
243
|
+
cool: 'thing'
|
|
244
|
+
}, state),
|
|
245
|
+
waitFor: [
|
|
246
|
+
slackWebhook('thread-123'),
|
|
247
|
+
emailWebhook('email-456')
|
|
248
|
+
]
|
|
249
|
+
};
|
|
250
|
+
}).step('My Step 2', function(param) {
|
|
251
|
+
var state = param.state, response = param.response;
|
|
252
|
+
if (response) {
|
|
253
|
+
if ('threadId' in response) {
|
|
254
|
+
// Handle Slack webhook response
|
|
255
|
+
return _object_spread_props(_object_spread({}, state), {
|
|
256
|
+
slackMessage: 'slack'
|
|
257
|
+
});
|
|
258
|
+
} else if ('subject' in response) {
|
|
259
|
+
// Handle Email webhook response
|
|
260
|
+
var subject = response.subject; // This should work if type inference is correct
|
|
261
|
+
return _object_spread_props(_object_spread({}, state), {
|
|
262
|
+
emailSubject: subject
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return state;
|
|
267
|
+
}).step('My Step 3', function(param) {
|
|
268
|
+
var state = param.state;
|
|
269
|
+
return state;
|
|
270
|
+
});
|
|
271
|
+
export default myBrain;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Factory function to create webhooks
|
|
2
|
+
export function createWebhook(slug, schema, handler) {
|
|
3
|
+
// Create the registration function
|
|
4
|
+
var webhookFn = function(identifier) {
|
|
5
|
+
return {
|
|
6
|
+
slug: slug,
|
|
7
|
+
identifier: identifier,
|
|
8
|
+
schema: schema
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
// Attach properties to the function
|
|
12
|
+
webhookFn.handler = handler;
|
|
13
|
+
webhookFn.slug = slug;
|
|
14
|
+
webhookFn.schema = schema;
|
|
15
|
+
return webhookFn;
|
|
16
|
+
}
|
package/dist/src/index.js
CHANGED
|
@@ -8,4 +8,5 @@ export { createPatch, applyPatches } from './dsl/json-patch.js';
|
|
|
8
8
|
// NOTE: Not 100% sure this is still needed - worth re-evaluating if we can remove this.
|
|
9
9
|
export { z } from 'zod';
|
|
10
10
|
export { createResources } from './resources/resources.js';
|
|
11
|
+
export { createWebhook } from './dsl/webhook.js';
|
|
11
12
|
export { RESOURCE_TYPES } from './resources/resources.js';
|
|
@@ -13,13 +13,14 @@ export declare class BrainRunner {
|
|
|
13
13
|
withAdapters(adapters: Adapter[]): BrainRunner;
|
|
14
14
|
withClient(client: ObjectGenerator): BrainRunner;
|
|
15
15
|
withResources(resources: Resources): BrainRunner;
|
|
16
|
-
run<TOptions extends JsonObject = {}, TState extends State = {}>(brain: Brain<TOptions, TState, any>, { initialState, options, initialCompletedSteps, brainRunId, endAfter, signal, }?: {
|
|
16
|
+
run<TOptions extends JsonObject = {}, TState extends State = {}>(brain: Brain<TOptions, TState, any>, { initialState, options, initialCompletedSteps, brainRunId, endAfter, signal, response, }?: {
|
|
17
17
|
initialState?: TState;
|
|
18
18
|
options?: TOptions;
|
|
19
19
|
initialCompletedSteps?: SerializedStep[] | never;
|
|
20
20
|
brainRunId?: string | never;
|
|
21
21
|
endAfter?: number;
|
|
22
22
|
signal?: AbortSignal;
|
|
23
|
+
response?: JsonObject;
|
|
23
24
|
}): Promise<TState>;
|
|
24
25
|
}
|
|
25
26
|
//# sourceMappingURL=brain-runner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain-runner.d.ts","sourceRoot":"","sources":["../../../src/dsl/brain-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,qBAAa,WAAW;IAEpB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE;QACf,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,MAAM,EAAE,eAAe,CAAC;QACxB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB;IAGH,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,WAAW;IAQ9C,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW;IAOhD,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;IAO1C,GAAG,CAAC,QAAQ,SAAS,UAAU,GAAG,EAAE,EAAE,MAAM,SAAS,KAAK,GAAG,EAAE,EACnE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EACnC,EACE,YAA2B,EAC3B,OAAO,EACP,qBAAqB,EACrB,UAAU,EACV,QAAQ,EACR,MAAM,
|
|
1
|
+
{"version":3,"file":"brain-runner.d.ts","sourceRoot":"","sources":["../../../src/dsl/brain-runner.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAE3D,qBAAa,WAAW;IAEpB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE;QACf,QAAQ,EAAE,OAAO,EAAE,CAAC;QACpB,MAAM,EAAE,eAAe,CAAC;QACxB,SAAS,CAAC,EAAE,SAAS,CAAC;KACvB;IAGH,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,WAAW;IAQ9C,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,WAAW;IAOhD,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,WAAW;IAO1C,GAAG,CAAC,QAAQ,SAAS,UAAU,GAAG,EAAE,EAAE,MAAM,SAAS,KAAK,GAAG,EAAE,EACnE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EACnC,EACE,YAA2B,EAC3B,OAAO,EACP,qBAAqB,EACrB,UAAU,EACV,QAAQ,EACR,MAAM,EACN,QAAQ,GACT,GAAE;QACD,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,qBAAqB,CAAC,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;QACjD,UAAU,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;KAClB,GACL,OAAO,CAAC,MAAM,CAAC;CA8FnB"}
|
|
@@ -3,11 +3,25 @@ import type { ObjectGenerator } from '../clients/types.js';
|
|
|
3
3
|
import type { State, JsonPatch, JsonObject } from './types.js';
|
|
4
4
|
import { STATUS, BRAIN_EVENTS } from './constants.js';
|
|
5
5
|
import type { Resources } from '../resources/resources.js';
|
|
6
|
+
import type { ExtractWebhookResponses, SerializedWebhookRegistration } from './webhook.js';
|
|
6
7
|
export type SerializedError = {
|
|
7
8
|
name: string;
|
|
8
9
|
message: string;
|
|
9
10
|
stack?: string;
|
|
10
11
|
};
|
|
12
|
+
export type StepAction<TStateIn, TStateOut, TOptions extends JsonObject = JsonObject, TServices extends object = object, TResponseIn extends JsonObject | undefined = undefined, TWaitFor extends readonly any[] = readonly []> = (params: {
|
|
13
|
+
state: TStateIn;
|
|
14
|
+
options: TOptions;
|
|
15
|
+
client: ObjectGenerator;
|
|
16
|
+
resources: Resources;
|
|
17
|
+
response: TResponseIn;
|
|
18
|
+
} & TServices) => TStateOut | Promise<TStateOut> | {
|
|
19
|
+
state: TStateOut;
|
|
20
|
+
waitFor: TWaitFor;
|
|
21
|
+
} | Promise<{
|
|
22
|
+
state: TStateOut;
|
|
23
|
+
waitFor: TWaitFor;
|
|
24
|
+
}>;
|
|
11
25
|
interface BaseEvent<TOptions extends JsonObject = JsonObject> {
|
|
12
26
|
type: (typeof BRAIN_EVENTS)[keyof typeof BRAIN_EVENTS];
|
|
13
27
|
options: TOptions;
|
|
@@ -52,7 +66,12 @@ export interface StepCompletedEvent<TOptions extends JsonObject = JsonObject> ex
|
|
|
52
66
|
stepId: string;
|
|
53
67
|
patch: JsonPatch;
|
|
54
68
|
}
|
|
55
|
-
export
|
|
69
|
+
export interface WebhookEvent<TOptions extends JsonObject = JsonObject> extends BaseEvent<TOptions> {
|
|
70
|
+
type: typeof BRAIN_EVENTS.WEBHOOK;
|
|
71
|
+
waitFor: SerializedWebhookRegistration[];
|
|
72
|
+
state: State;
|
|
73
|
+
}
|
|
74
|
+
export type BrainEvent<TOptions extends JsonObject = JsonObject> = BrainStartEvent<TOptions> | BrainCompleteEvent<TOptions> | BrainErrorEvent<TOptions> | BrainCancelledEvent<TOptions> | StepStatusEvent<TOptions> | StepStartedEvent<TOptions> | StepCompletedEvent<TOptions> | WebhookEvent<TOptions>;
|
|
56
75
|
export interface SerializedStep {
|
|
57
76
|
title: string;
|
|
58
77
|
status: (typeof STATUS)[keyof typeof STATUS];
|
|
@@ -89,8 +108,9 @@ export interface RerunParams<TOptions extends JsonObject = JsonObject> extends B
|
|
|
89
108
|
initialState: State;
|
|
90
109
|
initialCompletedSteps: SerializedStep[];
|
|
91
110
|
brainRunId: string;
|
|
111
|
+
response?: JsonObject;
|
|
92
112
|
}
|
|
93
|
-
export declare class Brain<TOptions extends JsonObject = JsonObject, TState extends State = object, TServices extends object = object> {
|
|
113
|
+
export declare class Brain<TOptions extends JsonObject = JsonObject, TState extends State = object, TServices extends object = object, TResponse extends JsonObject | undefined = undefined> {
|
|
94
114
|
readonly title: string;
|
|
95
115
|
private description?;
|
|
96
116
|
private blocks;
|
|
@@ -99,19 +119,26 @@ export declare class Brain<TOptions extends JsonObject = JsonObject, TState exte
|
|
|
99
119
|
private optionsSchema?;
|
|
100
120
|
constructor(title: string, description?: string | undefined);
|
|
101
121
|
get structure(): BrainStructure;
|
|
102
|
-
withServices<TNewServices extends object>(services: TNewServices): Brain<TOptions, TState, TNewServices>;
|
|
103
|
-
withOptionsSchema<TSchema extends z.ZodSchema>(schema: TSchema): Brain<z.infer<TSchema>, TState, TServices>;
|
|
104
|
-
step<TNewState extends State>(title: string, action: (params: {
|
|
122
|
+
withServices<TNewServices extends object>(services: TNewServices): Brain<TOptions, TState, TNewServices, TResponse>;
|
|
123
|
+
withOptionsSchema<TSchema extends z.ZodSchema>(schema: TSchema): Brain<z.infer<TSchema>, TState, TServices, TResponse>;
|
|
124
|
+
step<TNewState extends State, TWaitFor extends readonly any[] = readonly []>(title: string, action: (params: {
|
|
105
125
|
state: TState;
|
|
106
126
|
options: TOptions;
|
|
107
127
|
client: ObjectGenerator;
|
|
108
128
|
resources: Resources;
|
|
109
|
-
|
|
129
|
+
response: TResponse;
|
|
130
|
+
} & TServices) => TNewState | Promise<TNewState> | {
|
|
131
|
+
state: TNewState;
|
|
132
|
+
waitFor: TWaitFor;
|
|
133
|
+
} | Promise<{
|
|
134
|
+
state: TNewState;
|
|
135
|
+
waitFor: TWaitFor;
|
|
136
|
+
}>): Brain<TOptions, TNewState, TServices, ExtractWebhookResponses<TWaitFor>>;
|
|
110
137
|
brain<TInnerState extends State, TNewState extends State>(title: string, innerBrain: Brain<TOptions, TInnerState, TServices>, action: (params: {
|
|
111
138
|
state: TState;
|
|
112
139
|
brainState: TInnerState;
|
|
113
140
|
services: TServices;
|
|
114
|
-
}) => TNewState, initialState?: State | ((state: TState) => State)): Brain<TOptions, TNewState, TServices>;
|
|
141
|
+
}) => TNewState, initialState?: State | ((state: TState) => State)): Brain<TOptions, TNewState, TServices, undefined>;
|
|
115
142
|
prompt<TResponseKey extends string & {
|
|
116
143
|
readonly brand?: unique symbol;
|
|
117
144
|
}, TSchema extends z.ZodObject<any>, TNewState extends State = TState & {
|
|
@@ -129,7 +156,7 @@ export declare class Brain<TOptions extends JsonObject = JsonObject, TState exte
|
|
|
129
156
|
options: TOptions;
|
|
130
157
|
prompt: string;
|
|
131
158
|
resources: Resources;
|
|
132
|
-
} & TServices) => TNewState | Promise<TNewState>): Brain<TOptions, TNewState, TServices>;
|
|
159
|
+
} & TServices) => TNewState | Promise<TNewState>): Brain<TOptions, TNewState, TServices, undefined>;
|
|
133
160
|
run(params: InitialRunParams<TOptions>): AsyncGenerator<BrainEvent<TOptions>>;
|
|
134
161
|
run(params: RerunParams<TOptions>): AsyncGenerator<BrainEvent<TOptions>>;
|
|
135
162
|
private withBlocks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain.d.ts","sourceRoot":"","sources":["../../../src/dsl/brain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"brain.d.ts","sourceRoot":"","sources":["../../../src/dsl/brain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/dsl/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/dsl/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;;;;;;;;CAUf,CAAC;AAEX,eAAO,MAAM,MAAM;;;;;;CAMT,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const slackWebhook: import("./webhook.js").WebhookFunction<z.ZodObject<{
|
|
3
|
+
message: z.ZodString;
|
|
4
|
+
threadId: z.ZodString;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
message: string;
|
|
7
|
+
threadId: string;
|
|
8
|
+
}, {
|
|
9
|
+
message: string;
|
|
10
|
+
threadId: string;
|
|
11
|
+
}>>;
|
|
12
|
+
export declare const emailWebhook: import("./webhook.js").WebhookFunction<z.ZodObject<{
|
|
13
|
+
subject: z.ZodString;
|
|
14
|
+
body: z.ZodString;
|
|
15
|
+
from: z.ZodString;
|
|
16
|
+
}, "strip", z.ZodTypeAny, {
|
|
17
|
+
from: string;
|
|
18
|
+
subject: string;
|
|
19
|
+
body: string;
|
|
20
|
+
}, {
|
|
21
|
+
from: string;
|
|
22
|
+
subject: string;
|
|
23
|
+
body: string;
|
|
24
|
+
}>>;
|
|
25
|
+
declare const myBrain: import("./brain.js").Brain<import("./types.js").JsonObject, {
|
|
26
|
+
cool: string;
|
|
27
|
+
} | {
|
|
28
|
+
slackMessage: string;
|
|
29
|
+
cool: string;
|
|
30
|
+
} | {
|
|
31
|
+
emailSubject: string;
|
|
32
|
+
cool: string;
|
|
33
|
+
}, object, never>;
|
|
34
|
+
export default myBrain;
|
|
35
|
+
//# sourceMappingURL=example-webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"example-webhook.d.ts","sourceRoot":"","sources":["../../../src/dsl/example-webhook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;GAiBxB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;;;;;;;;GAmBxB,CAAC;AAEF,QAAA,MAAM,OAAO;;;;;;;;iBAsBT,CAAC;AAEL,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export type WebhookRegistration<TSchema extends z.ZodSchema = z.ZodSchema> = {
|
|
3
|
+
slug: string;
|
|
4
|
+
identifier: string;
|
|
5
|
+
schema: TSchema;
|
|
6
|
+
};
|
|
7
|
+
export type SerializedWebhookRegistration = {
|
|
8
|
+
slug: string;
|
|
9
|
+
identifier: string;
|
|
10
|
+
};
|
|
11
|
+
export type WebhookHandlerResult<TSchema extends z.ZodSchema = z.ZodSchema> = {
|
|
12
|
+
type: 'verification';
|
|
13
|
+
challenge: string;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'webhook';
|
|
16
|
+
identifier: string;
|
|
17
|
+
response: z.infer<TSchema>;
|
|
18
|
+
};
|
|
19
|
+
export interface WebhookFunction<TSchema extends z.ZodSchema = z.ZodSchema> {
|
|
20
|
+
(identifier: string): WebhookRegistration<TSchema>;
|
|
21
|
+
handler: (request: Request) => Promise<WebhookHandlerResult<TSchema>>;
|
|
22
|
+
slug: string;
|
|
23
|
+
schema: TSchema;
|
|
24
|
+
}
|
|
25
|
+
export declare function createWebhook<TSchema extends z.ZodSchema>(slug: string, schema: TSchema, handler: (request: Request) => Promise<WebhookHandlerResult<TSchema>>): WebhookFunction<TSchema>;
|
|
26
|
+
type ExtractSchema<T> = T extends {
|
|
27
|
+
schema: infer S;
|
|
28
|
+
} ? S extends z.ZodSchema ? z.infer<S> : never : never;
|
|
29
|
+
export type ExtractWebhookResponses<T> = T extends readonly [...infer Items] ? Items[number] extends infer Item ? ExtractSchema<Item> : never : never;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=webhook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../src/dsl/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IAAI;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAGF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAGF,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,IACtE;IACE,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;CAC5B,CAAC;AAGN,MAAM,WAAW,eAAe,CAAC,OAAO,SAAS,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS;IACxE,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB;AAGD,wBAAgB,aAAa,CAAC,OAAO,SAAS,CAAC,CAAC,SAAS,EACvD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GACpE,eAAe,CAAC,OAAO,CAAC,CAc1B;AAGD,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACjD,CAAC,SAAS,CAAC,CAAC,SAAS,GACnB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GACV,KAAK,GACP,KAAK,CAAC;AAGV,MAAM,MAAM,uBAAuB,CAAC,CAAC,IAAI,CAAC,SAAS,SAAS,CAAC,GAAG,MAAM,KAAK,CAAC,GACxE,KAAK,CAAC,MAAM,CAAC,SAAS,MAAM,IAAI,GAC9B,aAAa,CAAC,IAAI,CAAC,GACnB,KAAK,GACP,KAAK,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export { createPatch, applyPatches } from './dsl/json-patch.js';
|
|
|
9
9
|
export { z } from 'zod';
|
|
10
10
|
export type { ResourceLoader } from './resources/resource-loader.js';
|
|
11
11
|
export { createResources, type Resources } from './resources/resources.js';
|
|
12
|
+
export { createWebhook } from './dsl/webhook.js';
|
|
13
|
+
export type { WebhookFunction, WebhookRegistration } from './dsl/webhook.js';
|
|
12
14
|
export type { Manifest as ResourceManifest, Entry as ResourceEntry, ResourceType, } from './resources/resources.js';
|
|
13
15
|
export { RESOURCE_TYPES } from './resources/resources.js';
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,YAAY,EACV,QAAQ,IAAI,gBAAgB,EAC5B,KAAK,IAAI,aAAa,EACtB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1D,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,YAAY,GACb,MAAM,gBAAgB,CAAC;AACxB,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AACnE,YAAY,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAMhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,YAAY,EACV,QAAQ,IAAI,gBAAgB,EAC5B,KAAK,IAAI,aAAa,EACtB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC"}
|