@positronic/cloudflare 0.0.66 → 0.0.68

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.
@@ -238,7 +238,7 @@ function _ts_generator(thisArg, body) {
238
238
  }
239
239
  import { DurableObject } from 'cloudflare:workers';
240
240
  import { v4 as uuidv4 } from 'uuid';
241
- import { parseCronExpression } from 'cron-schedule';
241
+ import { Cron } from 'croner';
242
242
  import { BRAIN_EVENTS } from '@positronic/core';
243
243
  var ALARM_INTERVAL = 60 * 1000;
244
244
  export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
@@ -254,14 +254,21 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
254
254
  _this.storage = state.storage.sql;
255
255
  // Initialize database schema
256
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 ");
257
+ // Migration: add timezone column for existing DOs
258
+ try {
259
+ _this.storage.exec("ALTER TABLE schedules ADD COLUMN timezone TEXT NOT NULL DEFAULT 'UTC'");
260
+ } catch (e) {
261
+ // Column already exists
262
+ }
257
263
  return _this;
258
264
  }
259
265
  _create_class(ScheduleDO, [
260
266
  {
261
267
  key: "createSchedule",
262
268
  value: function createSchedule(brainTitle, cronExpression) {
269
+ var timezone = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 'UTC';
263
270
  return _async_to_generator(function() {
264
- var id, createdAt, alarm, cron, nextRunAt;
271
+ var id, createdAt, alarm, nextRunAt;
265
272
  return _ts_generator(this, function(_state) {
266
273
  switch(_state.label){
267
274
  case 0:
@@ -291,15 +298,15 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
291
298
  case 3:
292
299
  // Note: Cron expression is validated at the API level before calling this method
293
300
  // Calculate next run time
294
- cron = parseCronExpression(cronExpression);
295
- nextRunAt = this.calculateNextRunTime(cron, createdAt);
296
- this.storage.exec("INSERT INTO schedules (id, brain_title, cron_expression, enabled, created_at, next_run_at)\n VALUES (?, ?, ?, 1, ?, ?)", id, brainTitle, cronExpression, createdAt, nextRunAt);
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);
297
303
  return [
298
304
  2,
299
305
  {
300
306
  id: id,
301
307
  brainTitle: brainTitle,
302
308
  cronExpression: cronExpression,
309
+ timezone: timezone,
303
310
  enabled: true,
304
311
  createdAt: createdAt,
305
312
  nextRunAt: nextRunAt
@@ -316,7 +323,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
316
323
  return _async_to_generator(function() {
317
324
  var results, result;
318
325
  return _ts_generator(this, function(_state) {
319
- results = this.storage.exec("SELECT id, brain_title, cron_expression, enabled, created_at, next_run_at\n FROM schedules WHERE id = ?", scheduleId).toArray();
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();
320
327
  if (results.length === 0) {
321
328
  return [
322
329
  2,
@@ -330,6 +337,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
330
337
  id: result.id,
331
338
  brainTitle: result.brain_title,
332
339
  cronExpression: result.cron_expression,
340
+ timezone: result.timezone || 'UTC',
333
341
  enabled: result.enabled === 1,
334
342
  createdAt: result.created_at,
335
343
  nextRunAt: result.next_run_at
@@ -408,11 +416,12 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
408
416
  _state.sent();
409
417
  _state.label = 4;
410
418
  case 4:
411
- schedules = this.storage.exec("SELECT id, brain_title, cron_expression, enabled, created_at, next_run_at\n FROM schedules\n ORDER BY created_at DESC").toArray().map(function(row) {
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) {
412
420
  return {
413
421
  id: row.id,
414
422
  brainTitle: row.brain_title,
415
423
  cronExpression: row.cron_expression,
424
+ timezone: row.timezone || 'UTC',
416
425
  enabled: row.enabled === 1,
417
426
  createdAt: row.created_at,
418
427
  nextRunAt: row.next_run_at
@@ -485,7 +494,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
485
494
  value: // Handle the alarm trigger - runs every minute in a perpetual cycle
486
495
  function alarm() {
487
496
  return _async_to_generator(function() {
488
- var now, dueSchedules, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, schedule, scheduleId, brainTitle, cronExpression, brainRunId, error, errorMessage, cron, nextRunAt, err;
497
+ var now, dueSchedules, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, schedule, scheduleId, brainTitle, cronExpression, brainRunId, error, errorMessage, timezone, nextRunAt, err;
489
498
  return _ts_generator(this, function(_state) {
490
499
  switch(_state.label){
491
500
  case 0:
@@ -500,7 +509,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
500
509
  // checking every minute ensures we never miss a scheduled run.
501
510
  // Get all enabled schedules that are due
502
511
  now = Date.now();
503
- dueSchedules = this.storage.exec("SELECT id, brain_title, cron_expression\n FROM schedules\n WHERE enabled = 1 AND next_run_at <= ?", now).toArray();
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();
504
513
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
505
514
  _state.label = 1;
506
515
  case 1:
@@ -553,8 +562,8 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
553
562
  ];
554
563
  case 6:
555
564
  // Calculate and update next run time
556
- cron = parseCronExpression(cronExpression);
557
- nextRunAt = this.calculateNextRunTime(cron, now);
565
+ timezone = schedule.timezone || 'UTC';
566
+ nextRunAt = this.calculateNextRunTime(cronExpression, now, timezone);
558
567
  this.storage.exec("UPDATE schedules SET next_run_at = ? WHERE id = ?", nextRunAt, scheduleId);
559
568
  _state.label = 7;
560
569
  case 7:
@@ -685,8 +694,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
685
694
  key: "isValidCronExpression",
686
695
  value: function isValidCronExpression(expression) {
687
696
  try {
688
- // Try to parse the expression - if it throws, it's invalid
689
- parseCronExpression(expression);
697
+ new Cron(expression);
690
698
  return true;
691
699
  } catch (error) {
692
700
  return false;
@@ -695,10 +703,47 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
695
703
  },
696
704
  {
697
705
  key: "calculateNextRunTime",
698
- value: function calculateNextRunTime(cron, afterTime) {
699
- var nextDate = cron.getNextDate(new Date(afterTime));
706
+ value: function calculateNextRunTime(cronExpression, afterTime, timezone) {
707
+ var job = new Cron(cronExpression, {
708
+ timezone: timezone
709
+ });
710
+ var nextDate = job.nextRun(new Date(afterTime));
700
711
  return nextDate.getTime();
701
712
  }
713
+ },
714
+ {
715
+ key: "setProjectTimezone",
716
+ value: function setProjectTimezone(timezone) {
717
+ return _async_to_generator(function() {
718
+ return _ts_generator(this, function(_state) {
719
+ this.ctx.storage.put('projectTimezone', timezone);
720
+ return [
721
+ 2
722
+ ];
723
+ });
724
+ }).call(this);
725
+ }
726
+ },
727
+ {
728
+ key: "getProjectTimezone",
729
+ value: function getProjectTimezone() {
730
+ return _async_to_generator(function() {
731
+ return _ts_generator(this, function(_state) {
732
+ switch(_state.label){
733
+ case 0:
734
+ return [
735
+ 4,
736
+ this.ctx.storage.get('projectTimezone')
737
+ ];
738
+ case 1:
739
+ return [
740
+ 2,
741
+ _state.sent() || 'UTC'
742
+ ];
743
+ }
744
+ });
745
+ }).call(this);
746
+ }
702
747
  }
703
748
  ]);
704
749
  return ScheduleDO;
@@ -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
+ }
@@ -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;AAsjBlD,eAAe,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;AA+lBlD,eAAe,MAAM,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
  }
@@ -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;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;AAsGD,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;IACxC,OAAO,CAAC,2BAA2B,CAAS;gBAEhC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;IAO/C,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,0BAA0B;IAOlC,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAStD,gBAAgB,CAAC,UAAU,EAAE,MAAM;IAQnC,cAAc,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAWlE;;;;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;IAkF9F,KAAK;IASL,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAyHnC;;;;OAIG;IACG,MAAM,CAAC,UAAU,EAAE,MAAM;IAyJzB,KAAK,CAAC,OAAO,EAAE,OAAO;CAkE7B"}
1
+ {"version":3,"file":"brain-runner-do.d.ts","sourceRoot":"","sources":["../../src/brain-runner-do.ts"],"names":[],"mappings":"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"}
@@ -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;AAqJ1E,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"}
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"}
@@ -2,6 +2,8 @@ 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';
5
7
  export { PositronicManifest, type BrainMetadata } from './manifest.js';
6
8
  export { default as api } from './api/index.js';
7
9
  //# 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,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,gBAAgB,CAAC"}
@@ -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"}
@@ -10,6 +10,7 @@ interface Schedule {
10
10
  id: string;
11
11
  brainTitle: string;
12
12
  cronExpression: string;
13
+ timezone: string;
13
14
  enabled: boolean;
14
15
  createdAt: number;
15
16
  nextRunAt?: number;
@@ -26,7 +27,7 @@ interface ScheduledRun {
26
27
  export declare class ScheduleDO extends DurableObject<Env> {
27
28
  private readonly storage;
28
29
  constructor(state: DurableObjectState, env: Env);
29
- createSchedule(brainTitle: string, cronExpression: string): Promise<Schedule>;
30
+ createSchedule(brainTitle: string, cronExpression: string, timezone?: string): Promise<Schedule>;
30
31
  getSchedule(scheduleId: string): Promise<Schedule | null>;
31
32
  deleteSchedule(scheduleId: string): Promise<boolean>;
32
33
  listSchedules(): Promise<{
@@ -42,6 +43,8 @@ export declare class ScheduleDO extends DurableObject<Env> {
42
43
  handleBrainEvent(event: BrainEvent<any>): Promise<void>;
43
44
  private isValidCronExpression;
44
45
  private calculateNextRunTime;
46
+ setProjectTimezone(timezone: string): Promise<void>;
47
+ getProjectTimezone(): Promise<string>;
45
48
  }
46
49
  export {};
47
50
  //# sourceMappingURL=schedule-do.d.ts.map
@@ -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,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;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;IAqCzC,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,QAAQ,CAAC;IAkCd,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAyBzD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpD,aAAa,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAkClE,UAAU,CACd,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,MAAY,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA4C7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA2Ed,eAAe;IAcvB,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C7D,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,oBAAoB;CAI7B"}
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;CACpB;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;IA4CzC,cAAc,CAClB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,QAAQ,GAAE,MAAc,GACvB,OAAO,CAAC,QAAQ,CAAC;IAmCd,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA0BzD,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYpD,aAAa,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAmClE,UAAU,CACd,UAAU,CAAC,EAAE,MAAM,EACnB,KAAK,GAAE,MAAY,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,YAAY,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IA4C7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YA2Ed,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.66",
3
+ "version": "0.0.68",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -31,16 +31,17 @@
31
31
  "clean": "rm -rf tsconfig.tsbuildinfo dist"
32
32
  },
33
33
  "dependencies": {
34
- "@positronic/core": "^0.0.66",
35
- "@positronic/spec": "^0.0.66",
36
- "@positronic/template-new-project": "^0.0.66",
34
+ "@positronic/core": "^0.0.68",
35
+ "@positronic/spec": "^0.0.68",
36
+ "@positronic/template-new-project": "^0.0.68",
37
37
  "aws4fetch": "^1.0.18",
38
38
  "caz": "^2.0.0",
39
- "cron-schedule": "^5.0.4",
39
+ "croner": "^10.0.1",
40
40
  "dotenv": "^16.0.3",
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": {