@positronic/cloudflare 0.0.67 → 0.0.69
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 +25 -0
- package/dist/src/api/brains.js +67 -16
- package/dist/src/api/secrets.js +3 -0
- package/dist/src/brain-runner-do.js +51 -5
- package/dist/src/create-r2-store.js +319 -0
- package/dist/src/dev-server.js +19 -1
- package/dist/src/governor-client-wrapper.js +364 -0
- package/dist/src/governor-do.js +387 -0
- package/dist/src/index.js +3 -0
- package/dist/src/monitor-do.js +25 -12
- package/dist/src/rate-limit-headers.js +199 -0
- package/dist/src/schedule-do.js +38 -22
- package/dist/src/token-estimator.js +39 -0
- package/dist/types/api/auth-middleware.d.ts +5 -0
- package/dist/types/api/auth-middleware.d.ts.map +1 -1
- package/dist/types/api/brains.d.ts.map +1 -1
- package/dist/types/api/secrets.d.ts.map +1 -1
- package/dist/types/brain-runner-do.d.ts +9 -1
- package/dist/types/brain-runner-do.d.ts.map +1 -1
- package/dist/types/create-r2-store.d.ts +14 -0
- package/dist/types/create-r2-store.d.ts.map +1 -0
- package/dist/types/dev-server.d.ts.map +1 -1
- package/dist/types/governor-client-wrapper.d.ts +15 -0
- package/dist/types/governor-client-wrapper.d.ts.map +1 -0
- package/dist/types/governor-do.d.ts +25 -0
- package/dist/types/governor-do.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/monitor-do.d.ts +13 -4
- package/dist/types/monitor-do.d.ts.map +1 -1
- package/dist/types/rate-limit-headers.d.ts +10 -0
- package/dist/types/rate-limit-headers.d.ts.map +1 -0
- package/dist/types/schedule-do.d.ts +11 -3
- package/dist/types/schedule-do.d.ts.map +1 -1
- package/dist/types/token-estimator.d.ts +9 -0
- package/dist/types/token-estimator.d.ts.map +1 -0
- package/package.json +5 -4
package/dist/src/schedule-do.js
CHANGED
|
@@ -253,7 +253,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
253
253
|
]), _define_property(_this, "storage", void 0);
|
|
254
254
|
_this.storage = state.storage.sql;
|
|
255
255
|
// Initialize database schema
|
|
256
|
-
_this.storage.exec("\n CREATE TABLE IF NOT EXISTS schedules (\n id TEXT PRIMARY KEY,\n brain_title TEXT NOT NULL,\n cron_expression TEXT NOT NULL,\n enabled INTEGER NOT NULL DEFAULT 1,\n created_at INTEGER NOT NULL,\n next_run_at INTEGER\n );\n\n CREATE INDEX IF NOT EXISTS idx_schedules_brain\n ON schedules(brain_title);\n\n CREATE INDEX IF NOT EXISTS idx_schedules_enabled\n ON schedules(enabled);\n\n CREATE TABLE IF NOT EXISTS scheduled_runs (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n schedule_id TEXT NOT NULL,\n brain_run_id TEXT UNIQUE,\n status TEXT NOT NULL CHECK(status IN ('triggered', 'failed', 'complete')),\n ran_at INTEGER NOT NULL,\n completed_at INTEGER,\n error TEXT,\n FOREIGN KEY (schedule_id) REFERENCES schedules(id) ON DELETE CASCADE\n );\n\n CREATE INDEX IF NOT EXISTS idx_runs_schedule\n ON scheduled_runs(schedule_id, ran_at DESC);\n ");
|
|
256
|
+
_this.storage.exec("\n CREATE TABLE IF NOT EXISTS schedules (\n id TEXT PRIMARY KEY,\n brain_title TEXT NOT NULL,\n cron_expression TEXT NOT NULL,\n enabled INTEGER NOT NULL DEFAULT 1,\n created_at INTEGER NOT NULL,\n next_run_at INTEGER,\n run_as_user_id TEXT NOT NULL\n );\n\n CREATE INDEX IF NOT EXISTS idx_schedules_brain\n ON schedules(brain_title);\n\n CREATE INDEX IF NOT EXISTS idx_schedules_enabled\n ON schedules(enabled);\n\n CREATE TABLE IF NOT EXISTS scheduled_runs (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n schedule_id TEXT NOT NULL,\n brain_run_id TEXT UNIQUE,\n status TEXT NOT NULL CHECK(status IN ('triggered', 'failed', 'complete')),\n ran_at INTEGER NOT NULL,\n completed_at INTEGER,\n error TEXT,\n FOREIGN KEY (schedule_id) REFERENCES schedules(id) ON DELETE CASCADE\n );\n\n CREATE INDEX IF NOT EXISTS idx_runs_schedule\n ON scheduled_runs(schedule_id, ran_at DESC);\n ");
|
|
257
257
|
// Migration: add timezone column for existing DOs
|
|
258
258
|
try {
|
|
259
259
|
_this.storage.exec("ALTER TABLE schedules ADD COLUMN timezone TEXT NOT NULL DEFAULT 'UTC'");
|
|
@@ -266,7 +266,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
266
266
|
{
|
|
267
267
|
key: "createSchedule",
|
|
268
268
|
value: function createSchedule(brainTitle, cronExpression) {
|
|
269
|
-
var timezone = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 'UTC';
|
|
269
|
+
var timezone = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 'UTC', runAsUserId = arguments.length > 3 ? arguments[3] : void 0;
|
|
270
270
|
return _async_to_generator(function() {
|
|
271
271
|
var id, createdAt, alarm, nextRunAt;
|
|
272
272
|
return _ts_generator(this, function(_state) {
|
|
@@ -299,7 +299,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
299
299
|
// Note: Cron expression is validated at the API level before calling this method
|
|
300
300
|
// Calculate next run time
|
|
301
301
|
nextRunAt = this.calculateNextRunTime(cronExpression, createdAt, timezone);
|
|
302
|
-
this.storage.exec("INSERT INTO schedules (id, brain_title, cron_expression, timezone, enabled, created_at, next_run_at)\n VALUES (?, ?, ?, ?, 1, ?, ?)", id, brainTitle, cronExpression, timezone, createdAt, nextRunAt);
|
|
302
|
+
this.storage.exec("INSERT INTO schedules (id, brain_title, cron_expression, timezone, enabled, created_at, next_run_at, run_as_user_id)\n VALUES (?, ?, ?, ?, 1, ?, ?, ?)", id, brainTitle, cronExpression, timezone, createdAt, nextRunAt, runAsUserId);
|
|
303
303
|
return [
|
|
304
304
|
2,
|
|
305
305
|
{
|
|
@@ -309,7 +309,8 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
309
309
|
timezone: timezone,
|
|
310
310
|
enabled: true,
|
|
311
311
|
createdAt: createdAt,
|
|
312
|
-
nextRunAt: nextRunAt
|
|
312
|
+
nextRunAt: nextRunAt,
|
|
313
|
+
runAsUserId: runAsUserId
|
|
313
314
|
}
|
|
314
315
|
];
|
|
315
316
|
}
|
|
@@ -323,7 +324,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
323
324
|
return _async_to_generator(function() {
|
|
324
325
|
var results, result;
|
|
325
326
|
return _ts_generator(this, function(_state) {
|
|
326
|
-
results = this.storage.exec("SELECT id, brain_title, cron_expression, timezone, enabled, created_at, next_run_at\n FROM schedules WHERE id = ?", scheduleId).toArray();
|
|
327
|
+
results = this.storage.exec("SELECT id, brain_title, cron_expression, timezone, enabled, created_at, next_run_at, run_as_user_id\n FROM schedules WHERE id = ?", scheduleId).toArray();
|
|
327
328
|
if (results.length === 0) {
|
|
328
329
|
return [
|
|
329
330
|
2,
|
|
@@ -340,7 +341,8 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
340
341
|
timezone: result.timezone || 'UTC',
|
|
341
342
|
enabled: result.enabled === 1,
|
|
342
343
|
createdAt: result.created_at,
|
|
343
|
-
nextRunAt: result.next_run_at
|
|
344
|
+
nextRunAt: result.next_run_at,
|
|
345
|
+
runAsUserId: result.run_as_user_id
|
|
344
346
|
}
|
|
345
347
|
];
|
|
346
348
|
});
|
|
@@ -379,7 +381,10 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
379
381
|
},
|
|
380
382
|
{
|
|
381
383
|
key: "listSchedules",
|
|
382
|
-
value:
|
|
384
|
+
value: /**
|
|
385
|
+
* List all schedules. Pass null for userId to skip ownership filter (root access).
|
|
386
|
+
*/ function listSchedules() {
|
|
387
|
+
var userId = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : null;
|
|
383
388
|
return _async_to_generator(function() {
|
|
384
389
|
var alarm, schedules;
|
|
385
390
|
return _ts_generator(this, function(_state) {
|
|
@@ -416,7 +421,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
416
421
|
_state.sent();
|
|
417
422
|
_state.label = 4;
|
|
418
423
|
case 4:
|
|
419
|
-
schedules = this.storage.exec("SELECT id, brain_title, cron_expression, timezone, enabled, created_at, next_run_at\n FROM schedules\n ORDER BY created_at DESC").toArray().map(function(row) {
|
|
424
|
+
schedules = this.storage.exec("SELECT id, brain_title, cron_expression, timezone, enabled, created_at, next_run_at, run_as_user_id\n FROM schedules\n WHERE (? IS NULL OR run_as_user_id = ?)\n ORDER BY created_at DESC", userId, userId).toArray().map(function(row) {
|
|
420
425
|
return {
|
|
421
426
|
id: row.id,
|
|
422
427
|
brainTitle: row.brain_title,
|
|
@@ -424,7 +429,8 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
424
429
|
timezone: row.timezone || 'UTC',
|
|
425
430
|
enabled: row.enabled === 1,
|
|
426
431
|
createdAt: row.created_at,
|
|
427
|
-
nextRunAt: row.next_run_at
|
|
432
|
+
nextRunAt: row.next_run_at,
|
|
433
|
+
runAsUserId: row.run_as_user_id
|
|
428
434
|
};
|
|
429
435
|
});
|
|
430
436
|
return [
|
|
@@ -441,18 +447,23 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
441
447
|
},
|
|
442
448
|
{
|
|
443
449
|
key: "getAllRuns",
|
|
444
|
-
value:
|
|
445
|
-
|
|
450
|
+
value: /**
|
|
451
|
+
* Get all scheduled runs. Pass null for userId to skip ownership filter (root access).
|
|
452
|
+
* When userId is set, only returns runs for schedules owned by that user.
|
|
453
|
+
*/ function getAllRuns(scheduleId) {
|
|
454
|
+
var limit = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 100, userId = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
|
|
446
455
|
return _async_to_generator(function() {
|
|
447
456
|
var _this_storage, _this_storage1, query, params, runs, countQuery, countParams, countResult, count;
|
|
448
457
|
return _ts_generator(this, function(_state) {
|
|
449
|
-
query = "\n SELECT id, schedule_id, brain_run_id, status, ran_at, completed_at, error\n FROM scheduled_runs\n ";
|
|
458
|
+
query = "\n SELECT sr.id, sr.schedule_id, sr.brain_run_id, sr.status, sr.ran_at, sr.completed_at, sr.error\n FROM scheduled_runs sr\n JOIN schedules s ON sr.schedule_id = s.id\n WHERE 1=1\n ";
|
|
450
459
|
params = [];
|
|
451
460
|
if (scheduleId) {
|
|
452
|
-
query += "
|
|
461
|
+
query += " AND sr.schedule_id = ?";
|
|
453
462
|
params.push(scheduleId);
|
|
454
463
|
}
|
|
455
|
-
query += "
|
|
464
|
+
query += " AND (? IS NULL OR s.run_as_user_id = ?)";
|
|
465
|
+
params.push(userId, userId);
|
|
466
|
+
query += " ORDER BY sr.ran_at DESC LIMIT ?";
|
|
456
467
|
params.push(limit);
|
|
457
468
|
runs = (_this_storage = this.storage).exec.apply(_this_storage, [
|
|
458
469
|
query
|
|
@@ -468,12 +479,14 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
468
479
|
};
|
|
469
480
|
});
|
|
470
481
|
// Get total count
|
|
471
|
-
countQuery = "SELECT COUNT(*) as count
|
|
482
|
+
countQuery = "\n SELECT COUNT(*) as count\n FROM scheduled_runs sr\n JOIN schedules s ON sr.schedule_id = s.id\n WHERE 1=1\n ";
|
|
472
483
|
countParams = [];
|
|
473
484
|
if (scheduleId) {
|
|
474
|
-
countQuery += "
|
|
485
|
+
countQuery += " AND sr.schedule_id = ?";
|
|
475
486
|
countParams.push(scheduleId);
|
|
476
487
|
}
|
|
488
|
+
countQuery += " AND (? IS NULL OR s.run_as_user_id = ?)";
|
|
489
|
+
countParams.push(userId, userId);
|
|
477
490
|
countResult = (_this_storage1 = this.storage).exec.apply(_this_storage1, [
|
|
478
491
|
countQuery
|
|
479
492
|
].concat(_to_consumable_array(countParams))).one();
|
|
@@ -494,7 +507,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
494
507
|
value: // Handle the alarm trigger - runs every minute in a perpetual cycle
|
|
495
508
|
function alarm() {
|
|
496
509
|
return _async_to_generator(function() {
|
|
497
|
-
var now, dueSchedules, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, schedule, scheduleId, brainTitle, cronExpression, brainRunId, error, errorMessage, timezone, nextRunAt, err;
|
|
510
|
+
var now, dueSchedules, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, schedule, scheduleId, brainTitle, cronExpression, runAsUserId, brainRunId, error, errorMessage, timezone, nextRunAt, err;
|
|
498
511
|
return _ts_generator(this, function(_state) {
|
|
499
512
|
switch(_state.label){
|
|
500
513
|
case 0:
|
|
@@ -509,7 +522,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
509
522
|
// checking every minute ensures we never miss a scheduled run.
|
|
510
523
|
// Get all enabled schedules that are due
|
|
511
524
|
now = Date.now();
|
|
512
|
-
dueSchedules = this.storage.exec("SELECT id, brain_title, cron_expression, timezone\n FROM schedules\n WHERE enabled = 1 AND next_run_at <= ?", now).toArray();
|
|
525
|
+
dueSchedules = this.storage.exec("SELECT id, brain_title, cron_expression, timezone, run_as_user_id\n FROM schedules\n WHERE enabled = 1 AND next_run_at <= ?", now).toArray();
|
|
513
526
|
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
514
527
|
_state.label = 1;
|
|
515
528
|
case 1:
|
|
@@ -530,6 +543,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
530
543
|
scheduleId = schedule.id;
|
|
531
544
|
brainTitle = schedule.brain_title;
|
|
532
545
|
cronExpression = schedule.cron_expression;
|
|
546
|
+
runAsUserId = schedule.run_as_user_id;
|
|
533
547
|
_state.label = 3;
|
|
534
548
|
case 3:
|
|
535
549
|
_state.trys.push([
|
|
@@ -540,7 +554,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
540
554
|
]);
|
|
541
555
|
return [
|
|
542
556
|
4,
|
|
543
|
-
this.triggerBrainRun(brainTitle)
|
|
557
|
+
this.triggerBrainRun(brainTitle, runAsUserId)
|
|
544
558
|
];
|
|
545
559
|
case 4:
|
|
546
560
|
brainRunId = _state.sent();
|
|
@@ -630,7 +644,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
630
644
|
},
|
|
631
645
|
{
|
|
632
646
|
key: "triggerBrainRun",
|
|
633
|
-
value: function triggerBrainRun(brainTitle) {
|
|
647
|
+
value: function triggerBrainRun(brainTitle, runAsUserId) {
|
|
634
648
|
return _async_to_generator(function() {
|
|
635
649
|
var brainRunId, namespace, doId, stub;
|
|
636
650
|
return _ts_generator(this, function(_state) {
|
|
@@ -640,10 +654,12 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
|
|
|
640
654
|
namespace = this.env.BRAIN_RUNNER_DO;
|
|
641
655
|
doId = namespace.idFromName(brainRunId);
|
|
642
656
|
stub = namespace.get(doId);
|
|
643
|
-
console.log("[ScheduleDO] Triggering brain run ".concat(brainTitle, " with id ").concat(brainRunId));
|
|
657
|
+
console.log("[ScheduleDO] Triggering brain run ".concat(brainTitle, " with id ").concat(brainRunId, " as user ").concat(runAsUserId));
|
|
644
658
|
return [
|
|
645
659
|
4,
|
|
646
|
-
stub.start(brainTitle, brainRunId
|
|
660
|
+
stub.start(brainTitle, brainRunId, {
|
|
661
|
+
id: runAsUserId
|
|
662
|
+
})
|
|
647
663
|
];
|
|
648
664
|
case 1:
|
|
649
665
|
_state.sent();
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Tiktoken } from 'js-tiktoken/lite';
|
|
2
|
+
import cl100k_base from 'js-tiktoken/ranks/cl100k_base';
|
|
3
|
+
var encoder = new Tiktoken(cl100k_base);
|
|
4
|
+
export function estimateTokens(text) {
|
|
5
|
+
return encoder.encode(text).length;
|
|
6
|
+
}
|
|
7
|
+
export function estimateRequestTokens(param) {
|
|
8
|
+
var prompt = param.prompt, messages = param.messages, system = param.system;
|
|
9
|
+
var parts = [];
|
|
10
|
+
if (system) {
|
|
11
|
+
parts.push(system);
|
|
12
|
+
}
|
|
13
|
+
if (messages) {
|
|
14
|
+
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
15
|
+
try {
|
|
16
|
+
for(var _iterator = messages[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
17
|
+
var msg = _step.value;
|
|
18
|
+
parts.push(msg.content);
|
|
19
|
+
}
|
|
20
|
+
} catch (err) {
|
|
21
|
+
_didIteratorError = true;
|
|
22
|
+
_iteratorError = err;
|
|
23
|
+
} finally{
|
|
24
|
+
try {
|
|
25
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
26
|
+
_iterator.return();
|
|
27
|
+
}
|
|
28
|
+
} finally{
|
|
29
|
+
if (_didIteratorError) {
|
|
30
|
+
throw _iteratorError;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (prompt) {
|
|
36
|
+
parts.push(prompt);
|
|
37
|
+
}
|
|
38
|
+
return estimateTokens(parts.join('\n'));
|
|
39
|
+
}
|
|
@@ -4,6 +4,11 @@ export interface AuthContext {
|
|
|
4
4
|
userId: string | null;
|
|
5
5
|
isRoot: boolean;
|
|
6
6
|
}
|
|
7
|
+
/**
|
|
8
|
+
* Middleware that restricts access to root users only.
|
|
9
|
+
* Returns 403 if the authenticated user is not root.
|
|
10
|
+
*/
|
|
11
|
+
export declare function requireRoot(): MiddlewareHandler;
|
|
7
12
|
declare module 'hono' {
|
|
8
13
|
interface ContextVariableMap {
|
|
9
14
|
auth: AuthContext;
|
|
@@ -1 +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;AAI3C,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;AAwBD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAsF1E"}
|
|
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;AAI3C,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,iBAAiB,CAQ/C;AAGD,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAkB;QAC1B,IAAI,EAAE,WAAW,CAAC;KACnB;CACF;AAwBD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC,CAsF1E"}
|
|
@@ -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;AAM1C,OAAO,KAAK,EAAE,QAAQ,EAAiD,MAAM,YAAY,CAAC;AAE1F,QAAA,MAAM,MAAM;cAAwB,QAAQ;yCAAK,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;AAooBlD,eAAe,MAAM,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;
|
|
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;AAkD3C,QAAA,MAAM,OAAO;cAAwB,QAAQ;yCAAK,CAAC;AA6SnD,eAAe,OAAO,CAAC"}
|
|
@@ -2,6 +2,7 @@ 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';
|
|
5
|
+
import type { GovernorDO } from './governor-do.js';
|
|
5
6
|
import { PositronicManifest } from './manifest.js';
|
|
6
7
|
import type { R2Bucket } from '@cloudflare/workers-types';
|
|
7
8
|
export declare function setManifest(generatedManifest: PositronicManifest): void;
|
|
@@ -13,6 +14,7 @@ export interface Env {
|
|
|
13
14
|
BRAIN_RUNNER_DO: DurableObjectNamespace;
|
|
14
15
|
MONITOR_DO: DurableObjectNamespace<MonitorDO>;
|
|
15
16
|
SCHEDULE_DO: DurableObjectNamespace<ScheduleDO>;
|
|
17
|
+
GOVERNOR_DO: DurableObjectNamespace<GovernorDO>;
|
|
16
18
|
RESOURCES_BUCKET: R2Bucket;
|
|
17
19
|
WORKER_URL?: string;
|
|
18
20
|
}
|
|
@@ -22,9 +24,13 @@ export declare class BrainRunnerDO extends DurableObject<Env> {
|
|
|
22
24
|
private eventStreamAdapter;
|
|
23
25
|
private abortController;
|
|
24
26
|
private pageAdapter;
|
|
27
|
+
private runOwnerTableInitialized;
|
|
25
28
|
private signalsTableInitialized;
|
|
26
29
|
private waitTimeoutTableInitialized;
|
|
27
30
|
constructor(state: DurableObjectState, env: Env);
|
|
31
|
+
private initializeRunOwnerTable;
|
|
32
|
+
private storeRunOwner;
|
|
33
|
+
private getRunOwner;
|
|
28
34
|
private initializeSignalsTable;
|
|
29
35
|
private initializeWaitTimeoutTable;
|
|
30
36
|
storeWaitTimeout(brainRunId: string, timeoutAt: number): void;
|
|
@@ -72,7 +78,9 @@ export declare class BrainRunnerDO extends DurableObject<Env> {
|
|
|
72
78
|
message: string;
|
|
73
79
|
}>;
|
|
74
80
|
alarm(): Promise<void>;
|
|
75
|
-
start(brainTitle: string, brainRunId: string,
|
|
81
|
+
start(brainTitle: string, brainRunId: string, currentUser: {
|
|
82
|
+
id: string;
|
|
83
|
+
}, initialData?: Record<string, any>): Promise<void>;
|
|
76
84
|
/**
|
|
77
85
|
* Wake up (resume) a brain from a previous execution point.
|
|
78
86
|
* Webhook response data comes from signals, not as a parameter.
|
|
@@ -1 +1 @@
|
|
|
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;AAUnD,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;
|
|
1
|
+
{"version":3,"file":"brain-runner-do.d.ts","sourceRoot":"","sources":["../../src/brain-runner-do.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { R2Bucket } from '@cloudflare/workers-types';
|
|
2
|
+
import type { StoreProvider } from '@positronic/core';
|
|
3
|
+
/**
|
|
4
|
+
* Create a StoreProvider backed by Cloudflare R2.
|
|
5
|
+
*
|
|
6
|
+
* Key resolution:
|
|
7
|
+
* shared: store/{brainTitle}/{key}.json
|
|
8
|
+
* per-user: store/{brainTitle}/user/{userId}/{key}.json
|
|
9
|
+
*
|
|
10
|
+
* The factory receives the store schema, brain title, and currentUser,
|
|
11
|
+
* and returns a typed Store<any> with full key resolution built in.
|
|
12
|
+
*/
|
|
13
|
+
export declare function createR2Backend(bucket: R2Bucket): StoreProvider;
|
|
14
|
+
//# sourceMappingURL=create-r2-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-r2-store.d.ts","sourceRoot":"","sources":["../../src/create-r2-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAS,MAAM,kBAAkB,CAAC;AAe7D;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,CA+C/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/dev-server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/dev-server.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA0K1E,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAmBnD;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAanD;AA6ED,qBAAa,mBAAoB,YAAW,mBAAmB;IAyB1C,cAAc,EAAE,MAAM;IAjBzC;;;;;;;;;;;OAWG;IAEH,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,cAAc,CAAwC;IAC9D,OAAO,CAAC,gBAAgB,CAAwC;gBAE7C,cAAc,EAAE,MAAM;IAEnC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAoB7B,qBAAqB;YA4DrB,wBAAwB;YAkCxB,yBAAyB;YASzB,2BAA2B;IAuBzC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,wBAAwB;YASlB,0BAA0B;IA4BxC,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,gBAAgB;IA4BxB;;;OAGG;YACW,oBAAoB;IAqF5B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAqD3C,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GACjC,OAAO,CAAC,IAAI,CAAC;YAmBF,oBAAoB;IA0D5B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA4G7B;;;OAGG;YACW,sBAAsB;IAepC;;OAEG;YACW,eAAe;IA6B7B,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIhD,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAIlD,SAAS,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI9C,WAAW,IAAI,OAAO,CAC1B,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,IAAI,CAAA;KAAE,CAAC,CAC5D;IAwCK,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CrD,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAuC5C,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA0DnD"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ObjectGenerator } from '@positronic/core';
|
|
2
|
+
import type { GovernorDO } from './governor-do.js';
|
|
3
|
+
type GovernorStub = Pick<GovernorDO, 'waitForCapacity' | 'reportHeaders'>;
|
|
4
|
+
interface GovernorNamespace {
|
|
5
|
+
idFromName(name: string): {
|
|
6
|
+
toString(): string;
|
|
7
|
+
};
|
|
8
|
+
get(id: {
|
|
9
|
+
toString(): string;
|
|
10
|
+
}): GovernorStub;
|
|
11
|
+
}
|
|
12
|
+
export declare function setGovernorBinding(ns: GovernorNamespace): void;
|
|
13
|
+
export declare function rateGoverned(client: ObjectGenerator): ObjectGenerator;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=governor-client-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governor-client-wrapper.d.ts","sourceRoot":"","sources":["../../src/governor-client-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAGnD,KAAK,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,eAAe,CAAC,CAAC;AAE1E,UAAU,iBAAiB;IACzB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,CAAC;IACjD,GAAG,CAAC,EAAE,EAAE;QAAE,QAAQ,IAAI,MAAM,CAAA;KAAE,GAAG,YAAY,CAAC;CAC/C;AAID,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,iBAAiB,QAEvD;AAmDD,wBAAgB,YAAY,CAC1B,MAAM,EAAE,eAAe,GACtB,eAAe,CAqFjB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DurableObject } from 'cloudflare:workers';
|
|
2
|
+
export interface Env {
|
|
3
|
+
IS_TEST?: string;
|
|
4
|
+
NODE_ENV?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class GovernorDO extends DurableObject<Env> {
|
|
7
|
+
private readonly storage;
|
|
8
|
+
private waitQueue;
|
|
9
|
+
private loopRunning;
|
|
10
|
+
private rpmLimit;
|
|
11
|
+
private tpmLimit;
|
|
12
|
+
private limitsLoaded;
|
|
13
|
+
private lastAdmitTime;
|
|
14
|
+
private lastDelay;
|
|
15
|
+
constructor(state: DurableObjectState, env: Env);
|
|
16
|
+
private loadLimits;
|
|
17
|
+
private persistLimits;
|
|
18
|
+
waitForCapacity(modelId: string, estimatedTokens: number): Promise<void>;
|
|
19
|
+
reportHeaders(headers: Record<string, string>): Promise<void>;
|
|
20
|
+
private kickLoop;
|
|
21
|
+
private runLoop;
|
|
22
|
+
private calculateDelay;
|
|
23
|
+
private sleep;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=governor-do.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governor-do.d.ts","sourceRoot":"","sources":["../../src/governor-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,MAAM,WAAW,GAAG;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAOD,qBAAa,UAAW,SAAQ,aAAa,CAAC,GAAG,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IACrC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,SAAS,CAAK;gBAEV,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IAe/C,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,aAAa;IAYf,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBxE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAenE,OAAO,CAAC,QAAQ;YAKF,OAAO;IAsBrB,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,KAAK;CAGd"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ export { BrainRunnerDO, setBrainRunner, setManifest, setWebhookManifest, } from
|
|
|
2
2
|
export { MonitorDO } from './monitor-do.js';
|
|
3
3
|
export { ScheduleDO } from './schedule-do.js';
|
|
4
4
|
export { AuthDO } from './auth-do.js';
|
|
5
|
+
export { GovernorDO } from './governor-do.js';
|
|
6
|
+
export { rateGoverned, setGovernorBinding } from './governor-client-wrapper.js';
|
|
7
|
+
export { createR2Backend } from './create-r2-store.js';
|
|
5
8
|
export { PositronicManifest, type BrainMetadata } from './manifest.js';
|
|
6
9
|
export { default as api } from './api/index.js';
|
|
7
10
|
//# 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,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"}
|
|
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,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -13,11 +13,20 @@ export declare class MonitorDO extends DurableObject<Env> {
|
|
|
13
13
|
getLastEvent(brainRunId: string): Record<string, SqlStorageValue> | null;
|
|
14
14
|
/**
|
|
15
15
|
* Get detailed information about a specific brain run
|
|
16
|
-
* Returns null if run not found
|
|
16
|
+
* Returns null if run not found or not owned by userId
|
|
17
|
+
* Pass null for userId to skip ownership check (root access)
|
|
17
18
|
*/
|
|
18
|
-
getRun(brainRunId: string): any;
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
getRun(brainRunId: string, userId?: string | null): any;
|
|
20
|
+
/**
|
|
21
|
+
* Get run history for a brain.
|
|
22
|
+
* Pass null for userId to skip ownership filter (root access).
|
|
23
|
+
*/
|
|
24
|
+
history(brainTitle: string, limit?: number, userId?: string | null): Record<string, SqlStorageValue>[];
|
|
25
|
+
/**
|
|
26
|
+
* Get active brain runs for a specific brain (running, paused, or waiting).
|
|
27
|
+
* Pass null for userId to skip ownership filter (root access).
|
|
28
|
+
*/
|
|
29
|
+
activeRuns(brainTitle: string, userId?: string | null): Record<string, SqlStorageValue>[];
|
|
21
30
|
/**
|
|
22
31
|
* Register a webhook to wait for
|
|
23
32
|
* Called when a brain emits a WEBHOOK event
|
|
@@ -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;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;
|
|
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;IAgF/C,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC;YA0HzB,sBAAsB;IA4B9B,KAAK,CAAC,OAAO,EAAE,OAAO;IAmE5B,YAAY,CAAC,UAAU,EAAE,MAAM;IAa/B;;;;OAIG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW;IAwCvD;;;OAGG;IACH,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW;IA8B5E;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW;IA+B3D;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;IAcpF;;;OAGG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI;IAmBvG;;;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,10 @@
|
|
|
1
|
+
export interface ParsedRateLimits {
|
|
2
|
+
requestsLimit: number | null;
|
|
3
|
+
tokensLimit: number | null;
|
|
4
|
+
}
|
|
5
|
+
export declare function getGoogleModelDefaults(modelId: string): {
|
|
6
|
+
rpm: number;
|
|
7
|
+
tpm: number;
|
|
8
|
+
} | null;
|
|
9
|
+
export declare function parseRateLimitHeaders(headers: Record<string, string>): ParsedRateLimits | null;
|
|
10
|
+
//# sourceMappingURL=rate-limit-headers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit-headers.d.ts","sourceRoot":"","sources":["../../src/rate-limit-headers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AA6BD,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,GACd;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQrC;AAOD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,gBAAgB,GAAG,IAAI,CA8CzB"}
|
|
@@ -14,6 +14,7 @@ interface Schedule {
|
|
|
14
14
|
enabled: boolean;
|
|
15
15
|
createdAt: number;
|
|
16
16
|
nextRunAt?: number;
|
|
17
|
+
runAsUserId: string;
|
|
17
18
|
}
|
|
18
19
|
interface ScheduledRun {
|
|
19
20
|
id: number;
|
|
@@ -27,14 +28,21 @@ interface ScheduledRun {
|
|
|
27
28
|
export declare class ScheduleDO extends DurableObject<Env> {
|
|
28
29
|
private readonly storage;
|
|
29
30
|
constructor(state: DurableObjectState, env: Env);
|
|
30
|
-
createSchedule(brainTitle: string, cronExpression: string, timezone
|
|
31
|
+
createSchedule(brainTitle: string, cronExpression: string, timezone: string | undefined, runAsUserId: string): Promise<Schedule>;
|
|
31
32
|
getSchedule(scheduleId: string): Promise<Schedule | null>;
|
|
32
33
|
deleteSchedule(scheduleId: string): Promise<boolean>;
|
|
33
|
-
|
|
34
|
+
/**
|
|
35
|
+
* List all schedules. Pass null for userId to skip ownership filter (root access).
|
|
36
|
+
*/
|
|
37
|
+
listSchedules(userId?: string | null): Promise<{
|
|
34
38
|
schedules: Schedule[];
|
|
35
39
|
count: number;
|
|
36
40
|
}>;
|
|
37
|
-
|
|
41
|
+
/**
|
|
42
|
+
* Get all scheduled runs. Pass null for userId to skip ownership filter (root access).
|
|
43
|
+
* When userId is set, only returns runs for schedules owned by that user.
|
|
44
|
+
*/
|
|
45
|
+
getAllRuns(scheduleId?: string, limit?: number, userId?: string | null): Promise<{
|
|
38
46
|
runs: ScheduledRun[];
|
|
39
47
|
count: number;
|
|
40
48
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schedule-do.d.ts","sourceRoot":"","sources":["../../src/schedule-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,GAAG;IAClB,eAAe,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"schedule-do.d.ts","sourceRoot":"","sources":["../../src/schedule-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,MAAM,WAAW,GAAG;IAClB,eAAe,EAAE,sBAAsB,CAAC,aAAa,CAAC,CAAC;IACvD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,qBAAa,UAAW,SAAQ,aAAa,CAAC,GAAG,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;gBAEzB,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IA8CzC,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,YAAQ,EACxB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC;IAqCd,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA2BzD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY1D;;OAEG;IACG,aAAa,CAAC,MAAM,GAAE,MAAM,GAAG,IAAW,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAuCpG;;;OAGG;IACG,UAAU,CACd,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,MAAY,EACnB,MAAM,GAAE,MAAM,GAAG,IAAW,GAC3B,OAAO,CAAC;QAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAyD7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA4Ed,eAAe;IAcvB,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C7D,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,oBAAoB;IAMtB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;CAG5C"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function estimateTokens(text: string): number;
|
|
2
|
+
export declare function estimateRequestTokens({ prompt, messages, system, }: {
|
|
3
|
+
prompt?: string;
|
|
4
|
+
messages?: Array<{
|
|
5
|
+
content: string;
|
|
6
|
+
}>;
|
|
7
|
+
system?: string;
|
|
8
|
+
}): number;
|
|
9
|
+
//# sourceMappingURL=token-estimator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-estimator.d.ts","sourceRoot":"","sources":["../../src/token-estimator.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,QAAQ,EACR,MAAM,GACP,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAkBT"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@positronic/cloudflare",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.69",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -31,9 +31,9 @@
|
|
|
31
31
|
"clean": "rm -rf tsconfig.tsbuildinfo dist"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@positronic/core": "^0.0.
|
|
35
|
-
"@positronic/spec": "^0.0.
|
|
36
|
-
"@positronic/template-new-project": "^0.0.
|
|
34
|
+
"@positronic/core": "^0.0.69",
|
|
35
|
+
"@positronic/spec": "^0.0.69",
|
|
36
|
+
"@positronic/template-new-project": "^0.0.69",
|
|
37
37
|
"aws4fetch": "^1.0.18",
|
|
38
38
|
"caz": "^2.0.0",
|
|
39
39
|
"croner": "^10.0.1",
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"fuse.js": "^7.1.0",
|
|
42
42
|
"hono": "^4.2.3",
|
|
43
43
|
"jose": "^5.2.0",
|
|
44
|
+
"js-tiktoken": "^1.0.21",
|
|
44
45
|
"uuid": "^9.0.1"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|