@positronic/cloudflare 0.0.56 → 0.0.58
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/api/auth-middleware.js +475 -0
- package/dist/src/api/brains.js +160 -0
- package/dist/src/api/index.js +39 -1
- package/dist/src/api/secrets.js +31 -1
- package/dist/src/api/users.js +582 -0
- package/dist/src/api/webhooks/coordination.js +43 -8
- package/dist/src/api/webhooks/index.js +2 -2
- package/dist/src/api/webhooks/system.js +2 -2
- package/dist/src/auth-do.js +455 -0
- package/dist/src/brain-runner-do.js +255 -97
- package/dist/src/event-loader.js +301 -0
- package/dist/src/index.js +1 -0
- package/dist/src/monitor-do.js +39 -19
- package/dist/src/signal-provider.js +179 -0
- package/dist/src/sqlite-adapter.js +200 -13
- package/dist/types/api/auth-middleware.d.ts +19 -0
- package/dist/types/api/auth-middleware.d.ts.map +1 -0
- package/dist/types/api/brains.d.ts.map +1 -1
- package/dist/types/api/index.d.ts.map +1 -1
- package/dist/types/api/secrets.d.ts.map +1 -1
- package/dist/types/api/types.d.ts +3 -0
- package/dist/types/api/types.d.ts.map +1 -1
- package/dist/types/api/users.d.ts +7 -0
- package/dist/types/api/users.d.ts.map +1 -0
- package/dist/types/api/webhooks/coordination.d.ts +7 -3
- package/dist/types/api/webhooks/coordination.d.ts.map +1 -1
- package/dist/types/auth-do.d.ts +37 -0
- package/dist/types/auth-do.d.ts.map +1 -0
- package/dist/types/brain-runner-do.d.ts +29 -2
- package/dist/types/brain-runner-do.d.ts.map +1 -1
- package/dist/types/event-loader.d.ts +25 -0
- package/dist/types/event-loader.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/monitor-do.d.ts +1 -0
- package/dist/types/monitor-do.d.ts.map +1 -1
- package/dist/types/signal-provider.d.ts +11 -0
- package/dist/types/signal-provider.d.ts.map +1 -0
- package/dist/types/sqlite-adapter.d.ts +6 -3
- package/dist/types/sqlite-adapter.d.ts.map +1 -1
- package/package.json +5 -4
|
@@ -1,3 +1,32 @@
|
|
|
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
|
+
}
|
|
1
30
|
function _class_call_check(instance, Constructor) {
|
|
2
31
|
if (!(instance instanceof Constructor)) {
|
|
3
32
|
throw new TypeError("Cannot call a class as a function");
|
|
@@ -30,16 +59,116 @@ function _define_property(obj, key, value) {
|
|
|
30
59
|
}
|
|
31
60
|
return obj;
|
|
32
61
|
}
|
|
33
|
-
|
|
34
|
-
var
|
|
62
|
+
function _ts_generator(thisArg, body) {
|
|
63
|
+
var f, y, t, _ = {
|
|
64
|
+
label: 0,
|
|
65
|
+
sent: function() {
|
|
66
|
+
if (t[0] & 1) throw t[1];
|
|
67
|
+
return t[1];
|
|
68
|
+
},
|
|
69
|
+
trys: [],
|
|
70
|
+
ops: []
|
|
71
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
72
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
|
|
73
|
+
return this;
|
|
74
|
+
}), g;
|
|
75
|
+
function verb(n) {
|
|
76
|
+
return function(v) {
|
|
77
|
+
return step([
|
|
78
|
+
n,
|
|
79
|
+
v
|
|
80
|
+
]);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function step(op) {
|
|
84
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
85
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
86
|
+
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;
|
|
87
|
+
if (y = 0, t) op = [
|
|
88
|
+
op[0] & 2,
|
|
89
|
+
t.value
|
|
90
|
+
];
|
|
91
|
+
switch(op[0]){
|
|
92
|
+
case 0:
|
|
93
|
+
case 1:
|
|
94
|
+
t = op;
|
|
95
|
+
break;
|
|
96
|
+
case 4:
|
|
97
|
+
_.label++;
|
|
98
|
+
return {
|
|
99
|
+
value: op[1],
|
|
100
|
+
done: false
|
|
101
|
+
};
|
|
102
|
+
case 5:
|
|
103
|
+
_.label++;
|
|
104
|
+
y = op[1];
|
|
105
|
+
op = [
|
|
106
|
+
0
|
|
107
|
+
];
|
|
108
|
+
continue;
|
|
109
|
+
case 7:
|
|
110
|
+
op = _.ops.pop();
|
|
111
|
+
_.trys.pop();
|
|
112
|
+
continue;
|
|
113
|
+
default:
|
|
114
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
115
|
+
_ = 0;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
119
|
+
_.label = op[1];
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
123
|
+
_.label = t[1];
|
|
124
|
+
t = op;
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
if (t && _.label < t[2]) {
|
|
128
|
+
_.label = t[2];
|
|
129
|
+
_.ops.push(op);
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
if (t[2]) _.ops.pop();
|
|
133
|
+
_.trys.pop();
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
op = body.call(thisArg, _);
|
|
137
|
+
} catch (e) {
|
|
138
|
+
op = [
|
|
139
|
+
6,
|
|
140
|
+
e
|
|
141
|
+
];
|
|
142
|
+
y = 0;
|
|
143
|
+
} finally{
|
|
144
|
+
f = t = 0;
|
|
145
|
+
}
|
|
146
|
+
if (op[0] & 5) throw op[1];
|
|
147
|
+
return {
|
|
148
|
+
value: op[0] ? op[1] : void 0,
|
|
149
|
+
done: true
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// R2 overflow stores large events (>1MB) in R2 instead of SQLite.
|
|
154
|
+
// This feature is manually tested because vitest-pool-workers has limitations
|
|
155
|
+
// with large data and isolated storage cleanup.
|
|
156
|
+
// See: https://developers.cloudflare.com/workers/testing/vitest-integration/known-issues/#isolated-storage
|
|
157
|
+
// Size threshold for R2 overflow (1MB)
|
|
158
|
+
export var R2_OVERFLOW_THRESHOLD = 1024 * 1024;
|
|
159
|
+
// Define the schema with r2_key column for overflow support
|
|
160
|
+
var initSQL = "\nCREATE TABLE IF NOT EXISTS brain_events (\n event_id INTEGER PRIMARY KEY AUTOINCREMENT,\n event_type TEXT NOT NULL,\n serialized_event TEXT CHECK(serialized_event IS NULL OR json_valid(serialized_event)),\n r2_key TEXT,\n timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP\n);\n";
|
|
35
161
|
export var BrainRunSQLiteAdapter = /*#__PURE__*/ function() {
|
|
36
162
|
"use strict";
|
|
37
|
-
function BrainRunSQLiteAdapter(sql) {
|
|
163
|
+
function BrainRunSQLiteAdapter(sql, bucket, brainRunId) {
|
|
38
164
|
_class_call_check(this, BrainRunSQLiteAdapter);
|
|
39
165
|
_define_property(this, "sql", void 0);
|
|
40
|
-
_define_property(this, "
|
|
41
|
-
;
|
|
166
|
+
_define_property(this, "bucket", void 0);
|
|
167
|
+
_define_property(this, "brainRunId", void 0);
|
|
168
|
+
_define_property(this, "schemaInitialized", false);
|
|
42
169
|
this.sql = sql;
|
|
170
|
+
this.bucket = bucket;
|
|
171
|
+
this.brainRunId = brainRunId;
|
|
43
172
|
}
|
|
44
173
|
_create_class(BrainRunSQLiteAdapter, [
|
|
45
174
|
{
|
|
@@ -54,14 +183,72 @@ export var BrainRunSQLiteAdapter = /*#__PURE__*/ function() {
|
|
|
54
183
|
{
|
|
55
184
|
key: "dispatch",
|
|
56
185
|
value: function dispatch(event) {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
186
|
+
return _async_to_generator(function() {
|
|
187
|
+
var serialized, serializedSize, insertSql, result, eventId, r2Key, insertSql1, e;
|
|
188
|
+
return _ts_generator(this, function(_state) {
|
|
189
|
+
switch(_state.label){
|
|
190
|
+
case 0:
|
|
191
|
+
_state.trys.push([
|
|
192
|
+
0,
|
|
193
|
+
4,
|
|
194
|
+
,
|
|
195
|
+
5
|
|
196
|
+
]);
|
|
197
|
+
this.initializeSchema();
|
|
198
|
+
serialized = JSON.stringify(event);
|
|
199
|
+
serializedSize = new TextEncoder().encode(serialized).length;
|
|
200
|
+
if (!(serializedSize > R2_OVERFLOW_THRESHOLD)) return [
|
|
201
|
+
3,
|
|
202
|
+
2
|
|
203
|
+
];
|
|
204
|
+
// Store in R2, keep reference in SQLite
|
|
205
|
+
// First insert to get event_id, then construct R2 key
|
|
206
|
+
insertSql = "\n INSERT INTO brain_events (\n event_type,\n serialized_event,\n r2_key\n ) VALUES (?, NULL, 'pending');";
|
|
207
|
+
this.sql.exec(insertSql, event.type);
|
|
208
|
+
// Get the last inserted event_id
|
|
209
|
+
result = this.sql.exec("SELECT last_insert_rowid() as event_id").toArray();
|
|
210
|
+
eventId = result[0].event_id;
|
|
211
|
+
// Construct R2 key
|
|
212
|
+
r2Key = "events/".concat(this.brainRunId, "/").concat(eventId, ".json");
|
|
213
|
+
// Store in R2
|
|
214
|
+
return [
|
|
215
|
+
4,
|
|
216
|
+
this.bucket.put(r2Key, serialized, {
|
|
217
|
+
customMetadata: {
|
|
218
|
+
eventType: event.type,
|
|
219
|
+
brainRunId: this.brainRunId
|
|
220
|
+
}
|
|
221
|
+
})
|
|
222
|
+
];
|
|
223
|
+
case 1:
|
|
224
|
+
_state.sent();
|
|
225
|
+
// Update SQLite with the actual R2 key
|
|
226
|
+
this.sql.exec("UPDATE brain_events SET r2_key = ? WHERE event_id = ?", r2Key, eventId);
|
|
227
|
+
return [
|
|
228
|
+
3,
|
|
229
|
+
3
|
|
230
|
+
];
|
|
231
|
+
case 2:
|
|
232
|
+
// Store inline in SQLite
|
|
233
|
+
insertSql1 = "\n INSERT INTO brain_events (\n event_type,\n serialized_event,\n r2_key\n ) VALUES (?, ?, NULL);";
|
|
234
|
+
this.sql.exec(insertSql1, event.type, serialized);
|
|
235
|
+
_state.label = 3;
|
|
236
|
+
case 3:
|
|
237
|
+
return [
|
|
238
|
+
3,
|
|
239
|
+
5
|
|
240
|
+
];
|
|
241
|
+
case 4:
|
|
242
|
+
e = _state.sent();
|
|
243
|
+
console.error('[SQL_ADAPTER] Error handling brain event:', e, 'Event data:', JSON.stringify(event));
|
|
244
|
+
throw e;
|
|
245
|
+
case 5:
|
|
246
|
+
return [
|
|
247
|
+
2
|
|
248
|
+
];
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
}).call(this);
|
|
65
252
|
}
|
|
66
253
|
}
|
|
67
254
|
]);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MiddlewareHandler } from 'hono';
|
|
2
|
+
import type { Bindings } from './types.js';
|
|
3
|
+
export interface AuthContext {
|
|
4
|
+
userId: string | null;
|
|
5
|
+
isRoot: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare module 'hono' {
|
|
8
|
+
interface ContextVariableMap {
|
|
9
|
+
auth: AuthContext;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Authentication middleware for the Positronic API
|
|
14
|
+
* Verifies HTTP message signatures (RFC 9421) using @misskey-dev/node-http-message-signatures for parsing
|
|
15
|
+
*/
|
|
16
|
+
export declare function authMiddleware(): MiddlewareHandler<{
|
|
17
|
+
Bindings: Bindings;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=auth-middleware.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-middleware.d.ts","sourceRoot":"","sources":["../../../src/api/auth-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,iBAAiB,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAO3C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAGD,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAkB;QAC1B,IAAI,EAAE,WAAW,CAAC;KACnB;CACF;AAsGD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAoG1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brains.d.ts","sourceRoot":"","sources":["../../../src/api/brains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"brains.d.ts","sourceRoot":"","sources":["../../../src/api/brains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAM1C,OAAO,KAAK,EAAE,QAAQ,EAAiD,MAAM,YAAY,CAAC;AAE1F,QAAA,MAAM,MAAM;cAAwB,QAAQ;yCAAK,CAAC;AAsjBlD,eAAe,MAAM,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAU3C,QAAA,MAAM,GAAG;cAAwB,QAAQ;yCAAK,CAAC;AAwC/C,eAAe,GAAG,CAAC;AAGnB,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/api/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiD3C,QAAA,MAAM,OAAO;cAAwB,QAAQ;yCAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../../src/api/secrets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAC1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiD3C,QAAA,MAAM,OAAO;cAAwB,QAAQ;yCAAK,CAAC;AA0SnD,eAAe,OAAO,CAAC"}
|
|
@@ -2,11 +2,13 @@ import type { Hono } from 'hono';
|
|
|
2
2
|
import type { BrainRunnerDO } from '../brain-runner-do.js';
|
|
3
3
|
import type { MonitorDO } from '../monitor-do.js';
|
|
4
4
|
import type { ScheduleDO } from '../schedule-do.js';
|
|
5
|
+
import type { AuthDO } from '../auth-do.js';
|
|
5
6
|
import type { R2Bucket } from '@cloudflare/workers-types';
|
|
6
7
|
export type Bindings = {
|
|
7
8
|
BRAIN_RUNNER_DO: DurableObjectNamespace<BrainRunnerDO>;
|
|
8
9
|
MONITOR_DO: DurableObjectNamespace<MonitorDO>;
|
|
9
10
|
SCHEDULE_DO: DurableObjectNamespace<ScheduleDO>;
|
|
11
|
+
AUTH_DO: DurableObjectNamespace<AuthDO>;
|
|
10
12
|
RESOURCES_BUCKET: R2Bucket;
|
|
11
13
|
NODE_ENV?: string;
|
|
12
14
|
R2_ACCESS_KEY_ID?: string;
|
|
@@ -17,6 +19,7 @@ export type Bindings = {
|
|
|
17
19
|
CLOUDFLARE_ACCOUNT_ID?: string;
|
|
18
20
|
CF_SCRIPT_NAME?: string;
|
|
19
21
|
WORKER_URL?: string;
|
|
22
|
+
ROOT_PUBLIC_KEY?: string;
|
|
20
23
|
};
|
|
21
24
|
export type HonoApp = Hono<{
|
|
22
25
|
Bindings: Bindings;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,MAAM,QAAQ,GAAG;IACrB,eAAe,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACvD,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE1D,MAAM,MAAM,QAAQ,GAAG;IACrB,eAAe,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACvD,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,OAAO,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxC,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAC;AAEnD,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users.d.ts","sourceRoot":"","sources":["../../../src/api/users.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3C,QAAA,MAAM,GAAG;cAAwB,QAAQ;yCAAK,CAAC;AA4N/C,eAAe,GAAG,CAAC"}
|
|
@@ -12,15 +12,19 @@ export type WebhookHandlerResult = {
|
|
|
12
12
|
response: Record<string, unknown>;
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
|
-
* Find a brain waiting for a webhook and
|
|
15
|
+
* Find a brain waiting for a webhook, queue the WEBHOOK_RESPONSE signal, and wake it up.
|
|
16
16
|
* Returns a JSON response object suitable for returning from a webhook endpoint.
|
|
17
|
+
*
|
|
18
|
+
* This is the signal-based approach: webhook response data flows through the signal queue
|
|
19
|
+
* rather than being passed directly to the resume method.
|
|
17
20
|
*/
|
|
18
|
-
export declare function
|
|
21
|
+
export declare function queueWebhookAndWakeUp(context: Context, slug: string, identifier: string, response: Record<string, unknown>): Promise<{
|
|
19
22
|
received: boolean;
|
|
20
|
-
action: 'resumed' | 'not_found' | 'queued';
|
|
23
|
+
action: 'resumed' | 'not_found' | 'queued' | 'ignored';
|
|
21
24
|
identifier: string;
|
|
22
25
|
brainRunId?: string;
|
|
23
26
|
message?: string;
|
|
27
|
+
reason?: string;
|
|
24
28
|
}>;
|
|
25
29
|
/**
|
|
26
30
|
* Parse form data into a plain object, handling array fields.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordination.d.ts","sourceRoot":"","sources":["../../../../src/api/webhooks/coordination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"coordination.d.ts","sourceRoot":"","sources":["../../../../src/api/webhooks/coordination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAGpC;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAC5B;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAEhF;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC;IACT,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC,CA6CD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBzE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { DurableObject } from 'cloudflare:workers';
|
|
2
|
+
export interface AuthEnv {
|
|
3
|
+
ROOT_PUBLIC_KEY?: string;
|
|
4
|
+
NODE_ENV?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface User {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
createdAt: number;
|
|
10
|
+
}
|
|
11
|
+
export interface UserKey {
|
|
12
|
+
fingerprint: string;
|
|
13
|
+
userId: string;
|
|
14
|
+
jwk: string;
|
|
15
|
+
label: string;
|
|
16
|
+
addedAt: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class AuthDO extends DurableObject<AuthEnv> {
|
|
19
|
+
private readonly storage;
|
|
20
|
+
constructor(state: DurableObjectState, env: AuthEnv);
|
|
21
|
+
createUser(name: string): Promise<User>;
|
|
22
|
+
getUser(userId: string): Promise<User | null>;
|
|
23
|
+
getUserByName(name: string): Promise<User | null>;
|
|
24
|
+
listUsers(): Promise<{
|
|
25
|
+
users: User[];
|
|
26
|
+
count: number;
|
|
27
|
+
}>;
|
|
28
|
+
deleteUser(userId: string): Promise<boolean>;
|
|
29
|
+
addKey(userId: string, fingerprint: string, jwk: string, label?: string): Promise<UserKey>;
|
|
30
|
+
listKeys(userId: string): Promise<{
|
|
31
|
+
keys: UserKey[];
|
|
32
|
+
count: number;
|
|
33
|
+
}>;
|
|
34
|
+
removeKey(userId: string, fingerprint: string): Promise<boolean>;
|
|
35
|
+
getKeyByFingerprint(fingerprint: string): Promise<UserKey | null>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=auth-do.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-do.d.ts","sourceRoot":"","sources":["../../src/auth-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,WAAW,OAAO;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,MAAO,SAAQ,aAAa,CAAC,OAAO,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAEzB,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,OAAO;IA0B7C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBvC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAiB7C,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAiBjD,SAAS,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAgBtD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAa5C,MAAM,CACV,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,OAAO,CAAC;IAqBb,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAqBrE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsBhE,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CAqBxE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BrainRunner } from '@positronic/core';
|
|
1
|
+
import { BrainRunner, type BrainSignal } from '@positronic/core';
|
|
2
2
|
import { DurableObject } from 'cloudflare:workers';
|
|
3
3
|
import type { MonitorDO } from './monitor-do.js';
|
|
4
4
|
import type { ScheduleDO } from './schedule-do.js';
|
|
@@ -21,7 +21,29 @@ export declare class BrainRunnerDO extends DurableObject<Env> {
|
|
|
21
21
|
private brainRunId;
|
|
22
22
|
private eventStreamAdapter;
|
|
23
23
|
private abortController;
|
|
24
|
+
private pageAdapter;
|
|
25
|
+
private signalsTableInitialized;
|
|
24
26
|
constructor(state: DurableObjectState, env: Env);
|
|
27
|
+
private initializeSignalsTable;
|
|
28
|
+
/**
|
|
29
|
+
* Queue a signal for this brain run.
|
|
30
|
+
* Returns the queued signal with timestamp.
|
|
31
|
+
* For WEBHOOK_RESPONSE signals, the response object is JSON-stringified and stored in content.
|
|
32
|
+
*/
|
|
33
|
+
queueSignal(signal: {
|
|
34
|
+
type: string;
|
|
35
|
+
content?: string;
|
|
36
|
+
response?: Record<string, unknown>;
|
|
37
|
+
}): Promise<{
|
|
38
|
+
type: string;
|
|
39
|
+
queuedAt: number;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Get and consume (delete) pending signals.
|
|
43
|
+
* Signals are returned in priority order: KILL > PAUSE > WEBHOOK_RESPONSE > RESUME > USER_MESSAGE
|
|
44
|
+
* @param filter 'CONTROL' returns only KILL/PAUSE, 'WEBHOOK' returns only WEBHOOK_RESPONSE, 'ALL' includes all signal types
|
|
45
|
+
*/
|
|
46
|
+
getAndConsumeSignals(filter: 'CONTROL' | 'WEBHOOK' | 'ALL'): BrainSignal[];
|
|
25
47
|
private loadResourcesFromR2;
|
|
26
48
|
/**
|
|
27
49
|
* Build the RuntimeEnv for brain execution.
|
|
@@ -42,7 +64,12 @@ export declare class BrainRunnerDO extends DurableObject<Env> {
|
|
|
42
64
|
message: string;
|
|
43
65
|
}>;
|
|
44
66
|
start(brainTitle: string, brainRunId: string, initialData?: Record<string, any>): Promise<void>;
|
|
45
|
-
|
|
67
|
+
/**
|
|
68
|
+
* Wake up (resume) a brain from a previous execution point.
|
|
69
|
+
* Webhook response data comes from signals, not as a parameter.
|
|
70
|
+
* This method reconstructs state and calls BrainRunner.resume().
|
|
71
|
+
*/
|
|
72
|
+
wakeUp(brainRunId: string): Promise<void>;
|
|
46
73
|
fetch(request: Request): Promise<Response>;
|
|
47
74
|
}
|
|
48
75
|
//# sourceMappingURL=brain-runner-do.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brain-runner-do.d.ts","sourceRoot":"","sources":["../../src/brain-runner-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"brain-runner-do.d.ts","sourceRoot":"","sources":["../../src/brain-runner-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAiG,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAChK,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AASnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,wBAAgB,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,QAEhE;AAED,wBAAgB,WAAW,IAAI,kBAAkB,GAAG,IAAI,CAEvD;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,QAEjD;AAGD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAE/D;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAExD;AAED,MAAM,WAAW,GAAG;IAClB,eAAe,EAAE,sBAAsB,CAAC;IACxC,UAAU,EAAE,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAC9C,WAAW,EAAE,sBAAsB,CAAC,UAAU,CAAC,CAAC;IAChD,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkED,qBAAa,aAAc,SAAQ,aAAa,CAAC,GAAG,CAAC;IACnD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,uBAAuB,CAAS;gBAE5B,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IAO/C,OAAO,CAAC,sBAAsB;IAO9B;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAmB9I;;;;OAIG;IACH,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,WAAW,EAAE;YA+C5D,mBAAmB;IAqEjC;;;OAGG;IACH,OAAO,CAAC,eAAe;IAiBvB;;;;;;;;OAQG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA0E9F,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA6GnC;;;;OAIG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM;IA8HzB,KAAK,CAAC,OAAO,EAAE,OAAO;CAkE7B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { BrainEvent } from '@positronic/core';
|
|
2
|
+
import type { SqlStorage, R2Bucket } from '@cloudflare/workers-types';
|
|
3
|
+
/**
|
|
4
|
+
* Helper class to load events from SQLite, transparently fetching from R2 when needed.
|
|
5
|
+
* Events may be stored inline in SQLite (serialized_event) or overflow to R2 (r2_key).
|
|
6
|
+
*/
|
|
7
|
+
export declare class EventLoader {
|
|
8
|
+
private sql;
|
|
9
|
+
private bucket;
|
|
10
|
+
constructor(sql: SqlStorage, bucket: R2Bucket);
|
|
11
|
+
/**
|
|
12
|
+
* Load all events in order, hydrating from R2 where necessary.
|
|
13
|
+
*/
|
|
14
|
+
loadAllEvents(): Promise<BrainEvent[]>;
|
|
15
|
+
/**
|
|
16
|
+
* Load a single event by type, optionally ordering to get first/last.
|
|
17
|
+
* Returns null if no event of the given type exists.
|
|
18
|
+
*/
|
|
19
|
+
loadEventByType(eventType: string, order?: 'ASC' | 'DESC'): Promise<BrainEvent | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Hydrate event rows, fetching from R2 in parallel where needed.
|
|
22
|
+
*/
|
|
23
|
+
private hydrateEvents;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=event-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-loader.d.ts","sourceRoot":"","sources":["../../src/event-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAUtE;;;GAGG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,GAAG;IACX,OAAO,CAAC,MAAM;gBADN,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,QAAQ;IAG1B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAY5C;;;OAGG;IACG,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,KAAK,GAAG,MAAe,GAC7B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAoB7B;;OAEG;YACW,aAAa;CAsC5B"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { BrainRunnerDO, setBrainRunner, setManifest, setWebhookManifest, } from './brain-runner-do.js';
|
|
2
2
|
export { MonitorDO } from './monitor-do.js';
|
|
3
3
|
export { ScheduleDO } from './schedule-do.js';
|
|
4
|
+
export { AuthDO } from './auth-do.js';
|
|
4
5
|
export { PositronicManifest, type BrainMetadata } from './manifest.js';
|
|
5
6
|
export { default as api } from './api/index.js';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,WAAW,EACX,kBAAkB,GACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -5,6 +5,7 @@ export interface Env {
|
|
|
5
5
|
export declare class MonitorDO extends DurableObject<Env> {
|
|
6
6
|
private readonly storage;
|
|
7
7
|
private eventStreamHandler;
|
|
8
|
+
private machines;
|
|
8
9
|
constructor(state: DurableObjectState, env: Env);
|
|
9
10
|
handleBrainEvent(event: BrainEvent<any>): void;
|
|
10
11
|
private broadcastRunningBrains;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"monitor-do.d.ts","sourceRoot":"","sources":["../../src/monitor-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"monitor-do.d.ts","sourceRoot":"","sources":["../../src/monitor-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,GAAG;CAEnB;AAED,qBAAa,SAAU,SAAQ,aAAa,CAAC,GAAG,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,kBAAkB,CAA4B;IAEtD,OAAO,CAAC,QAAQ,CAAwC;gBAE5C,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IAkE/C,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;YAmHzB,sBAAsB;IA4B9B,KAAK,CAAC,OAAO,EAAE,OAAO;IAmE5B,YAAY,CAAC,UAAU,EAAE,MAAM;IAa/B;;;OAGG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM;IAqCzB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW;IA6B9C,UAAU,CAAC,UAAU,EAAE,MAAM;IA2B7B;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAapE;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAiBjE;;;OAGG;IACH,yBAAyB,CAAC,UAAU,EAAE,MAAM;IAU5C;;;OAGG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAgB/D;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM;IAU3B;;;OAGG;IACH,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAezD;;;OAGG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM;CAU1C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SignalProvider, BrainSignal } from '@positronic/core';
|
|
2
|
+
/**
|
|
3
|
+
* Cloudflare-specific SignalProvider implementation.
|
|
4
|
+
* Reads signals from the BrainRunnerDO's SQLite storage.
|
|
5
|
+
*/
|
|
6
|
+
export declare class CloudflareSignalProvider implements SignalProvider {
|
|
7
|
+
private getAndConsumeSignals;
|
|
8
|
+
constructor(getAndConsumeSignals: (filter: 'CONTROL' | 'WEBHOOK' | 'ALL') => BrainSignal[]);
|
|
9
|
+
getSignals(filter: 'CONTROL' | 'WEBHOOK' | 'ALL'): Promise<BrainSignal[]>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=signal-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-provider.d.ts","sourceRoot":"","sources":["../../src/signal-provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpE;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,cAAc;IAE3D,OAAO,CAAC,oBAAoB;gBAApB,oBAAoB,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,KAAK,KAAK,WAAW,EAAE;IAGlF,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAGhF"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import type { Adapter, BrainEvent } from '@positronic/core';
|
|
2
|
-
import type { SqlStorage } from '@cloudflare/workers-types';
|
|
2
|
+
import type { SqlStorage, R2Bucket } from '@cloudflare/workers-types';
|
|
3
|
+
export declare const R2_OVERFLOW_THRESHOLD: number;
|
|
3
4
|
export declare class BrainRunSQLiteAdapter implements Adapter {
|
|
4
5
|
private sql;
|
|
6
|
+
private bucket;
|
|
7
|
+
private brainRunId;
|
|
5
8
|
private schemaInitialized;
|
|
6
|
-
constructor(sql: SqlStorage);
|
|
9
|
+
constructor(sql: SqlStorage, bucket: R2Bucket, brainRunId: string);
|
|
7
10
|
private initializeSchema;
|
|
8
|
-
dispatch(event: BrainEvent): void
|
|
11
|
+
dispatch(event: BrainEvent): Promise<void>;
|
|
9
12
|
}
|
|
10
13
|
//# sourceMappingURL=sqlite-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/sqlite-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"sqlite-adapter.d.ts","sourceRoot":"","sources":["../../src/sqlite-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAQtE,eAAO,MAAM,qBAAqB,QAAc,CAAC;AAajD,qBAAa,qBAAsB,YAAW,OAAO;IACnD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM;IAMjE,OAAO,CAAC,gBAAgB;IAOX,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;CA+DxD"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@positronic/cloudflare",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.58",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -31,9 +31,10 @@
|
|
|
31
31
|
"clean": "rm -rf tsconfig.tsbuildinfo dist"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@
|
|
35
|
-
"@positronic/
|
|
36
|
-
"@positronic/
|
|
34
|
+
"@misskey-dev/node-http-message-signatures": "^0.0.10",
|
|
35
|
+
"@positronic/core": "^0.0.58",
|
|
36
|
+
"@positronic/spec": "^0.0.58",
|
|
37
|
+
"@positronic/template-new-project": "^0.0.58",
|
|
37
38
|
"aws4fetch": "^1.0.18",
|
|
38
39
|
"caz": "^2.0.0",
|
|
39
40
|
"cron-schedule": "^5.0.4",
|