@positronic/cloudflare 0.0.15 → 0.0.16

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.js CHANGED
@@ -186,7 +186,7 @@ import { RESOURCE_TYPES } from '@positronic/core';
186
186
  var app = new Hono();
187
187
  app.post('/brains/runs', function(context) {
188
188
  return _async_to_generator(function() {
189
- var _ref, brainName, options, manifest, brain, brainRunId, namespace, doId, stub, initialData, response;
189
+ var requestBody, options, identifier, manifest, resolution, brain, brainRunId, namespace, doId, stub, initialData, brainTitle, response;
190
190
  return _ts_generator(this, function(_state) {
191
191
  switch(_state.label){
192
192
  case 0:
@@ -195,12 +195,15 @@ app.post('/brains/runs', function(context) {
195
195
  context.req.json()
196
196
  ];
197
197
  case 1:
198
- _ref = _state.sent(), brainName = _ref.brainName, options = _ref.options;
199
- if (!brainName) {
198
+ requestBody = _state.sent();
199
+ options = requestBody.options;
200
+ // Support both identifier and brainTitle for backward compatibility
201
+ identifier = requestBody.identifier || requestBody.brainTitle;
202
+ if (!identifier) {
200
203
  return [
201
204
  2,
202
205
  context.json({
203
- error: 'Missing brainName in request body'
206
+ error: 'Missing identifier or brainTitle in request body'
204
207
  }, 400)
205
208
  ];
206
209
  }
@@ -214,20 +217,27 @@ app.post('/brains/runs', function(context) {
214
217
  }, 500)
215
218
  ];
216
219
  }
217
- return [
218
- 4,
219
- manifest.import(brainName)
220
- ];
221
- case 2:
222
- brain = _state.sent();
223
- if (!brain) {
220
+ // Resolve the identifier to find the brain
221
+ resolution = manifest.resolve(identifier);
222
+ if (resolution.matchType === 'none') {
224
223
  return [
225
224
  2,
226
225
  context.json({
227
- error: "Brain '".concat(brainName, "' not found")
226
+ error: "Brain '".concat(identifier, "' not found")
228
227
  }, 404)
229
228
  ];
230
229
  }
230
+ if (resolution.matchType === 'multiple') {
231
+ return [
232
+ 2,
233
+ context.json({
234
+ error: 'Multiple brains match the identifier',
235
+ matchType: 'multiple',
236
+ candidates: resolution.candidates
237
+ }, 409)
238
+ ];
239
+ }
240
+ brain = resolution.brain;
231
241
  brainRunId = uuidv4();
232
242
  namespace = context.env.BRAIN_RUNNER_DO;
233
243
  doId = namespace.idFromName(brainRunId);
@@ -236,11 +246,13 @@ app.post('/brains/runs', function(context) {
236
246
  initialData = options ? {
237
247
  options: options
238
248
  } : undefined;
249
+ // Get the actual brain title from the resolved brain
250
+ brainTitle = brain.title || identifier;
239
251
  return [
240
252
  4,
241
- stub.start(brainName, brainRunId, initialData)
253
+ stub.start(brainTitle, brainRunId, initialData)
242
254
  ];
243
- case 3:
255
+ case 2:
244
256
  _state.sent();
245
257
  response = {
246
258
  brainRunId: brainRunId
@@ -255,7 +267,7 @@ app.post('/brains/runs', function(context) {
255
267
  });
256
268
  app.post('/brains/runs/rerun', function(context) {
257
269
  return _async_to_generator(function() {
258
- var _ref, brainName, runId, startsAt, stopsAfter, manifest, brain, monitorId, monitorStub, existingRun, newBrainRunId, namespace, doId, stub, rerunOptions, response;
270
+ var requestBody, runId, startsAt, stopsAfter, identifier, manifest, resolution, brain, monitorId, monitorStub, existingRun, newBrainRunId, namespace, doId, stub, rerunOptions, brainTitle, response;
259
271
  return _ts_generator(this, function(_state) {
260
272
  switch(_state.label){
261
273
  case 0:
@@ -264,12 +276,15 @@ app.post('/brains/runs/rerun', function(context) {
264
276
  context.req.json()
265
277
  ];
266
278
  case 1:
267
- _ref = _state.sent(), brainName = _ref.brainName, runId = _ref.runId, startsAt = _ref.startsAt, stopsAfter = _ref.stopsAfter;
268
- if (!brainName) {
279
+ requestBody = _state.sent();
280
+ runId = requestBody.runId, startsAt = requestBody.startsAt, stopsAfter = requestBody.stopsAfter;
281
+ // Support both identifier and brainTitle for backward compatibility
282
+ identifier = requestBody.identifier || requestBody.brainTitle;
283
+ if (!identifier) {
269
284
  return [
270
285
  2,
271
286
  context.json({
272
- error: 'Missing brainName in request body'
287
+ error: 'Missing identifier or brainTitle in request body'
273
288
  }, 400)
274
289
  ];
275
290
  }
@@ -283,23 +298,30 @@ app.post('/brains/runs/rerun', function(context) {
283
298
  }, 500)
284
299
  ];
285
300
  }
286
- return [
287
- 4,
288
- manifest.import(brainName)
289
- ];
290
- case 2:
291
- brain = _state.sent();
292
- if (!brain) {
301
+ // Resolve the identifier to find the brain
302
+ resolution = manifest.resolve(identifier);
303
+ if (resolution.matchType === 'none') {
293
304
  return [
294
305
  2,
295
306
  context.json({
296
- error: "Brain '".concat(brainName, "' not found")
307
+ error: "Brain '".concat(identifier, "' not found")
297
308
  }, 404)
298
309
  ];
299
310
  }
311
+ if (resolution.matchType === 'multiple') {
312
+ return [
313
+ 2,
314
+ context.json({
315
+ error: 'Multiple brains match the identifier',
316
+ matchType: 'multiple',
317
+ candidates: resolution.candidates
318
+ }, 409)
319
+ ];
320
+ }
321
+ brain = resolution.brain;
300
322
  if (!runId) return [
301
323
  3,
302
- 4
324
+ 3
303
325
  ];
304
326
  monitorId = context.env.MONITOR_DO.idFromName('singleton');
305
327
  monitorStub = context.env.MONITOR_DO.get(monitorId);
@@ -307,7 +329,7 @@ app.post('/brains/runs/rerun', function(context) {
307
329
  4,
308
330
  monitorStub.getLastEvent(runId)
309
331
  ];
310
- case 3:
332
+ case 2:
311
333
  existingRun = _state.sent();
312
334
  if (!existingRun) {
313
335
  return [
@@ -317,8 +339,8 @@ app.post('/brains/runs/rerun', function(context) {
317
339
  }, 404)
318
340
  ];
319
341
  }
320
- _state.label = 4;
321
- case 4:
342
+ _state.label = 3;
343
+ case 3:
322
344
  // Create a new brain run with rerun parameters
323
345
  newBrainRunId = uuidv4();
324
346
  namespace = context.env.BRAIN_RUNNER_DO;
@@ -332,11 +354,13 @@ app.post('/brains/runs/rerun', function(context) {
332
354
  }, stopsAfter !== undefined && {
333
355
  stopsAfter: stopsAfter
334
356
  });
357
+ // Get the actual brain title from the resolved brain
358
+ brainTitle = brain.title || identifier;
335
359
  return [
336
360
  4,
337
- stub.start(brainName, newBrainRunId, rerunOptions)
361
+ stub.start(brainTitle, newBrainRunId, rerunOptions)
338
362
  ];
339
- case 5:
363
+ case 4:
340
364
  _state.sent();
341
365
  response = {
342
366
  brainRunId: newBrainRunId
@@ -373,20 +397,52 @@ app.get('/brains/runs/:runId/watch', function(context) {
373
397
  });
374
398
  })();
375
399
  });
376
- app.get('/brains/:brainName/history', function(context) {
400
+ app.get('/brains/:identifier/history', function(context) {
377
401
  return _async_to_generator(function() {
378
- var brainName, limit, monitorId, monitorStub, runs;
402
+ var identifier, limit, manifest, resolution, brain, brainTitle, monitorId, monitorStub, runs;
379
403
  return _ts_generator(this, function(_state) {
380
404
  switch(_state.label){
381
405
  case 0:
382
- brainName = context.req.param('brainName');
406
+ identifier = context.req.param('identifier');
383
407
  limit = Number(context.req.query('limit') || '10');
408
+ // Resolve the identifier to get the actual brain title
409
+ manifest = getManifest();
410
+ if (!manifest) {
411
+ return [
412
+ 2,
413
+ context.json({
414
+ error: 'Manifest not initialized'
415
+ }, 500)
416
+ ];
417
+ }
418
+ resolution = manifest.resolve(identifier);
419
+ if (resolution.matchType === 'none') {
420
+ return [
421
+ 2,
422
+ context.json({
423
+ error: "Brain '".concat(identifier, "' not found")
424
+ }, 404)
425
+ ];
426
+ }
427
+ if (resolution.matchType === 'multiple') {
428
+ return [
429
+ 2,
430
+ context.json({
431
+ error: 'Multiple brains match the identifier',
432
+ matchType: 'multiple',
433
+ candidates: resolution.candidates
434
+ }, 300)
435
+ ];
436
+ }
437
+ // Get the actual brain title
438
+ brain = resolution.brain;
439
+ brainTitle = brain.title || identifier;
384
440
  // Get the monitor singleton instance
385
441
  monitorId = context.env.MONITOR_DO.idFromName('singleton');
386
442
  monitorStub = context.env.MONITOR_DO.get(monitorId);
387
443
  return [
388
444
  4,
389
- monitorStub.history(brainName, limit)
445
+ monitorStub.history(brainTitle, limit)
390
446
  ];
391
447
  case 1:
392
448
  runs = _state.sent();
@@ -400,19 +456,51 @@ app.get('/brains/:brainName/history', function(context) {
400
456
  });
401
457
  })();
402
458
  });
403
- app.get('/brains/:brainName/active-runs', function(context) {
459
+ app.get('/brains/:identifier/active-runs', function(context) {
404
460
  return _async_to_generator(function() {
405
- var brainName, monitorId, monitorStub, runs;
461
+ var identifier, manifest, resolution, brain, brainTitle, monitorId, monitorStub, runs;
406
462
  return _ts_generator(this, function(_state) {
407
463
  switch(_state.label){
408
464
  case 0:
409
- brainName = context.req.param('brainName');
465
+ identifier = context.req.param('identifier');
466
+ // Resolve the identifier to get the actual brain title
467
+ manifest = getManifest();
468
+ if (!manifest) {
469
+ return [
470
+ 2,
471
+ context.json({
472
+ error: 'Manifest not initialized'
473
+ }, 500)
474
+ ];
475
+ }
476
+ resolution = manifest.resolve(identifier);
477
+ if (resolution.matchType === 'none') {
478
+ return [
479
+ 2,
480
+ context.json({
481
+ error: "Brain '".concat(identifier, "' not found")
482
+ }, 404)
483
+ ];
484
+ }
485
+ if (resolution.matchType === 'multiple') {
486
+ return [
487
+ 2,
488
+ context.json({
489
+ error: 'Multiple brains match the identifier',
490
+ matchType: 'multiple',
491
+ candidates: resolution.candidates
492
+ }, 300)
493
+ ];
494
+ }
495
+ // Get the actual brain title
496
+ brain = resolution.brain;
497
+ brainTitle = brain.title || identifier;
410
498
  // Get the monitor singleton instance
411
499
  monitorId = context.env.MONITOR_DO.idFromName('singleton');
412
500
  monitorStub = context.env.MONITOR_DO.get(monitorId);
413
501
  return [
414
502
  4,
415
- monitorStub.activeRuns(brainName)
503
+ monitorStub.activeRuns(brainTitle)
416
504
  ];
417
505
  case 1:
418
506
  runs = _state.sent();
@@ -450,7 +538,7 @@ app.get('/brains/watch', function(context) {
450
538
  });
451
539
  app.get('/brains', function(context) {
452
540
  return _async_to_generator(function() {
453
- var manifest, brainNames, brains, validBrains;
541
+ var manifest, brainFilenames, brains, validBrains;
454
542
  return _ts_generator(this, function(_state) {
455
543
  switch(_state.label){
456
544
  case 0:
@@ -463,18 +551,18 @@ app.get('/brains', function(context) {
463
551
  }, 500)
464
552
  ];
465
553
  }
466
- brainNames = manifest.list();
554
+ brainFilenames = manifest.list();
467
555
  return [
468
556
  4,
469
- Promise.all(brainNames.map(function(name) {
557
+ Promise.all(brainFilenames.map(function(filename) {
470
558
  return _async_to_generator(function() {
471
- var brain;
559
+ var brain, structure;
472
560
  return _ts_generator(this, function(_state) {
473
561
  switch(_state.label){
474
562
  case 0:
475
563
  return [
476
564
  4,
477
- manifest.import(name)
565
+ manifest.import(filename)
478
566
  ];
479
567
  case 1:
480
568
  brain = _state.sent();
@@ -484,12 +572,13 @@ app.get('/brains', function(context) {
484
572
  null
485
573
  ];
486
574
  }
575
+ structure = brain.structure;
487
576
  return [
488
577
  2,
489
578
  {
490
- name: name,
491
- title: brain.title,
492
- description: "".concat(brain.title, " brain")
579
+ filename: filename,
580
+ title: structure.title,
581
+ description: structure.description || "".concat(structure.title, " brain")
493
582
  }
494
583
  ];
495
584
  }
@@ -518,7 +607,7 @@ app.get('/brains', function(context) {
518
607
  // Create a new schedule
519
608
  app.post('/brains/schedules', function(context) {
520
609
  return _async_to_generator(function() {
521
- var body, brainName, cronExpression, scheduleId, scheduleStub, schedule, error, errorMessage;
610
+ var body, cronExpression, identifier, manifest, resolution, brain, brainTitle, scheduleId, scheduleStub, schedule, error, errorMessage;
522
611
  return _ts_generator(this, function(_state) {
523
612
  switch(_state.label){
524
613
  case 0:
@@ -534,12 +623,14 @@ app.post('/brains/schedules', function(context) {
534
623
  ];
535
624
  case 1:
536
625
  body = _state.sent();
537
- brainName = body.brainName, cronExpression = body.cronExpression;
538
- if (!brainName) {
626
+ cronExpression = body.cronExpression;
627
+ // Support both identifier and brainTitle for backward compatibility
628
+ identifier = body.identifier || body.brainTitle;
629
+ if (!identifier) {
539
630
  return [
540
631
  2,
541
632
  context.json({
542
- error: 'Missing required field "brainName"'
633
+ error: 'Missing required field "identifier" or "brainTitle"'
543
634
  }, 400)
544
635
  ];
545
636
  }
@@ -562,12 +653,44 @@ app.post('/brains/schedules', function(context) {
562
653
  }, 400)
563
654
  ];
564
655
  }
656
+ // Resolve the identifier to get the actual brain title
657
+ manifest = getManifest();
658
+ if (!manifest) {
659
+ return [
660
+ 2,
661
+ context.json({
662
+ error: 'Manifest not initialized'
663
+ }, 500)
664
+ ];
665
+ }
666
+ resolution = manifest.resolve(identifier);
667
+ if (resolution.matchType === 'none') {
668
+ return [
669
+ 2,
670
+ context.json({
671
+ error: "Brain '".concat(identifier, "' not found")
672
+ }, 404)
673
+ ];
674
+ }
675
+ if (resolution.matchType === 'multiple') {
676
+ return [
677
+ 2,
678
+ context.json({
679
+ error: 'Multiple brains match the identifier',
680
+ matchType: 'multiple',
681
+ candidates: resolution.candidates
682
+ }, 409)
683
+ ];
684
+ }
685
+ // Get the actual brain title
686
+ brain = resolution.brain;
687
+ brainTitle = brain.title || identifier;
565
688
  // Get the schedule singleton instance
566
689
  scheduleId = context.env.SCHEDULE_DO.idFromName('singleton');
567
690
  scheduleStub = context.env.SCHEDULE_DO.get(scheduleId);
568
691
  return [
569
692
  4,
570
- scheduleStub.createSchedule(brainName, cronExpression)
693
+ scheduleStub.createSchedule(brainTitle, cronExpression)
571
694
  ];
572
695
  case 2:
573
696
  schedule = _state.sent();
@@ -674,48 +797,51 @@ app.delete('/brains/schedules/:scheduleId', function(context) {
674
797
  });
675
798
  })();
676
799
  });
677
- app.get('/brains/:brainName', function(context) {
800
+ app.get('/brains/:identifier', function(context) {
678
801
  return _async_to_generator(function() {
679
- var brainName, manifest, brain, structure;
802
+ var identifier, manifest, resolution, brain, structure;
680
803
  return _ts_generator(this, function(_state) {
681
- switch(_state.label){
682
- case 0:
683
- brainName = context.req.param('brainName');
684
- manifest = getManifest();
685
- if (!manifest) {
686
- return [
687
- 2,
688
- context.json({
689
- error: 'Manifest not initialized'
690
- }, 500)
691
- ];
692
- }
693
- return [
694
- 4,
695
- manifest.import(brainName)
696
- ];
697
- case 1:
698
- brain = _state.sent();
699
- if (!brain) {
700
- return [
701
- 2,
702
- context.json({
703
- error: "Brain '".concat(brainName, "' not found")
704
- }, 404)
705
- ];
706
- }
707
- // Get the brain structure
708
- structure = brain.structure;
709
- return [
710
- 2,
711
- context.json({
712
- name: brainName,
713
- title: structure.title,
714
- description: structure.description || "".concat(structure.title, " brain"),
715
- steps: structure.steps
716
- })
717
- ];
804
+ identifier = context.req.param('identifier');
805
+ manifest = getManifest();
806
+ if (!manifest) {
807
+ return [
808
+ 2,
809
+ context.json({
810
+ error: 'Manifest not initialized'
811
+ }, 500)
812
+ ];
718
813
  }
814
+ // Resolve the identifier to find the brain
815
+ resolution = manifest.resolve(identifier);
816
+ if (resolution.matchType === 'none') {
817
+ return [
818
+ 2,
819
+ context.json({
820
+ error: "Brain '".concat(identifier, "' not found")
821
+ }, 404)
822
+ ];
823
+ }
824
+ if (resolution.matchType === 'multiple') {
825
+ return [
826
+ 2,
827
+ context.json({
828
+ error: 'Multiple brains match the identifier',
829
+ matchType: 'multiple',
830
+ candidates: resolution.candidates
831
+ }, 300)
832
+ ];
833
+ }
834
+ brain = resolution.brain;
835
+ // Get the brain structure
836
+ structure = brain.structure;
837
+ return [
838
+ 2,
839
+ context.json({
840
+ title: structure.title,
841
+ description: structure.description || "".concat(structure.title, " brain"),
842
+ steps: structure.steps
843
+ })
844
+ ];
719
845
  });
720
846
  })();
721
847
  });
@@ -0,0 +1,232 @@
1
+ function _array_like_to_array(arr, len) {
2
+ if (len == null || len > arr.length) len = arr.length;
3
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
+ return arr2;
5
+ }
6
+ function _array_with_holes(arr) {
7
+ if (Array.isArray(arr)) return arr;
8
+ }
9
+ function _class_call_check(instance, Constructor) {
10
+ if (!(instance instanceof Constructor)) {
11
+ throw new TypeError("Cannot call a class as a function");
12
+ }
13
+ }
14
+ function _defineProperties(target, props) {
15
+ for(var i = 0; i < props.length; i++){
16
+ var descriptor = props[i];
17
+ descriptor.enumerable = descriptor.enumerable || false;
18
+ descriptor.configurable = true;
19
+ if ("value" in descriptor) descriptor.writable = true;
20
+ Object.defineProperty(target, descriptor.key, descriptor);
21
+ }
22
+ }
23
+ function _create_class(Constructor, protoProps, staticProps) {
24
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
25
+ if (staticProps) _defineProperties(Constructor, staticProps);
26
+ return Constructor;
27
+ }
28
+ function _define_property(obj, key, value) {
29
+ if (key in obj) {
30
+ Object.defineProperty(obj, key, {
31
+ value: value,
32
+ enumerable: true,
33
+ configurable: true,
34
+ writable: true
35
+ });
36
+ } else {
37
+ obj[key] = value;
38
+ }
39
+ return obj;
40
+ }
41
+ function _iterable_to_array_limit(arr, i) {
42
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
43
+ if (_i == null) return;
44
+ var _arr = [];
45
+ var _n = true;
46
+ var _d = false;
47
+ var _s, _e;
48
+ try {
49
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
50
+ _arr.push(_s.value);
51
+ if (i && _arr.length === i) break;
52
+ }
53
+ } catch (err) {
54
+ _d = true;
55
+ _e = err;
56
+ } finally{
57
+ try {
58
+ if (!_n && _i["return"] != null) _i["return"]();
59
+ } finally{
60
+ if (_d) throw _e;
61
+ }
62
+ }
63
+ return _arr;
64
+ }
65
+ function _non_iterable_rest() {
66
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
67
+ }
68
+ function _sliced_to_array(arr, i) {
69
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
70
+ }
71
+ function _unsupported_iterable_to_array(o, minLen) {
72
+ if (!o) return;
73
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
74
+ var n = Object.prototype.toString.call(o).slice(8, -1);
75
+ if (n === "Object" && o.constructor) n = o.constructor.name;
76
+ if (n === "Map" || n === "Set") return Array.from(n);
77
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
78
+ }
79
+ export var BrainResolver = /*#__PURE__*/ function() {
80
+ "use strict";
81
+ function BrainResolver(enhancedManifest) {
82
+ _class_call_check(this, BrainResolver);
83
+ _define_property(this, "enhancedManifest", void 0);
84
+ _define_property(this, "metadataCache", void 0);
85
+ this.enhancedManifest = enhancedManifest;
86
+ this.metadataCache = new Map();
87
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
88
+ try {
89
+ // Pre-cache brain titles and descriptions
90
+ for(var _iterator = Object.entries(enhancedManifest)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
91
+ var _step_value = _sliced_to_array(_step.value, 2), filename = _step_value[0], metadata = _step_value[1];
92
+ var brain = metadata.brain;
93
+ // Access brain structure to get title and description
94
+ var structure = brain.structure;
95
+ this.metadataCache.set(filename, {
96
+ title: structure.title || filename,
97
+ description: structure.description
98
+ });
99
+ }
100
+ } catch (err) {
101
+ _didIteratorError = true;
102
+ _iteratorError = err;
103
+ } finally{
104
+ try {
105
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
106
+ _iterator.return();
107
+ }
108
+ } finally{
109
+ if (_didIteratorError) {
110
+ throw _iteratorError;
111
+ }
112
+ }
113
+ }
114
+ }
115
+ _create_class(BrainResolver, [
116
+ {
117
+ key: "resolve",
118
+ value: function resolve(identifier) {
119
+ var candidates = [];
120
+ // Normalize identifier for comparison
121
+ var normalizedIdentifier = identifier.toLowerCase().trim();
122
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
123
+ try {
124
+ // Check each brain in the manifest
125
+ for(var _iterator = Object.entries(this.enhancedManifest)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
126
+ var _step_value = _sliced_to_array(_step.value, 2), filename = _step_value[0], metadata = _step_value[1];
127
+ var cached = this.metadataCache.get(filename);
128
+ var title = cached.title;
129
+ var description = cached.description;
130
+ // 1. Exact title match (case-insensitive)
131
+ if (title.toLowerCase() === normalizedIdentifier) {
132
+ return {
133
+ matchType: 'exact',
134
+ brain: metadata.brain
135
+ };
136
+ }
137
+ // 2. Exact filename match (case-insensitive)
138
+ if (filename.toLowerCase() === normalizedIdentifier) {
139
+ return {
140
+ matchType: 'exact',
141
+ brain: metadata.brain
142
+ };
143
+ }
144
+ // 3. Exact path match (case-insensitive)
145
+ if (metadata.path.toLowerCase() === normalizedIdentifier) {
146
+ return {
147
+ matchType: 'exact',
148
+ brain: metadata.brain
149
+ };
150
+ }
151
+ // Collect candidates for partial matching
152
+ var candidate = {
153
+ title: title,
154
+ filename: filename,
155
+ path: metadata.path,
156
+ description: description
157
+ };
158
+ // 4. Partial path match
159
+ if (metadata.path.toLowerCase().includes(normalizedIdentifier)) {
160
+ candidates.push(candidate);
161
+ continue;
162
+ }
163
+ // 5. Title contains identifier
164
+ if (title.toLowerCase().includes(normalizedIdentifier)) {
165
+ candidates.push(candidate);
166
+ continue;
167
+ }
168
+ // 6. Filename contains identifier
169
+ if (filename.toLowerCase().includes(normalizedIdentifier)) {
170
+ candidates.push(candidate);
171
+ continue;
172
+ }
173
+ // 7. Description contains identifier (if exists)
174
+ if (description && description.toLowerCase().includes(normalizedIdentifier)) {
175
+ candidates.push(candidate);
176
+ }
177
+ }
178
+ } catch (err) {
179
+ _didIteratorError = true;
180
+ _iteratorError = err;
181
+ } finally{
182
+ try {
183
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
184
+ _iterator.return();
185
+ }
186
+ } finally{
187
+ if (_didIteratorError) {
188
+ throw _iteratorError;
189
+ }
190
+ }
191
+ }
192
+ // Handle results
193
+ if (candidates.length === 0) {
194
+ return {
195
+ matchType: 'none'
196
+ };
197
+ } else if (candidates.length === 1) {
198
+ // Single match found through partial matching
199
+ var match = this.enhancedManifest[candidates[0].filename];
200
+ return {
201
+ matchType: 'exact',
202
+ brain: match.brain
203
+ };
204
+ } else {
205
+ // Multiple matches found
206
+ return {
207
+ matchType: 'multiple',
208
+ candidates: candidates
209
+ };
210
+ }
211
+ }
212
+ },
213
+ {
214
+ /**
215
+ * Get a brain by exact filename (used for backward compatibility)
216
+ */ key: "getByFilename",
217
+ value: function getByFilename(filename) {
218
+ var metadata = this.enhancedManifest[filename];
219
+ return metadata === null || metadata === void 0 ? void 0 : metadata.brain;
220
+ }
221
+ },
222
+ {
223
+ /**
224
+ * List all available brains
225
+ */ key: "list",
226
+ value: function list() {
227
+ return Object.keys(this.enhancedManifest);
228
+ }
229
+ }
230
+ ]);
231
+ return BrainResolver;
232
+ }();
@@ -504,7 +504,7 @@ export var BrainRunnerDO = /*#__PURE__*/ function(DurableObject) {
504
504
  },
505
505
  {
506
506
  key: "start",
507
- value: function start(brainName, brainRunId, initialData) {
507
+ value: function start(brainTitle, brainRunId, initialData) {
508
508
  return _async_to_generator(function() {
509
509
  var sql, brainToRun, sqliteAdapter, eventStreamAdapter, monitorAdapter, scheduleAdapter, r2Resources, runnerWithResources, options, initialState;
510
510
  return _ts_generator(this, function(_state) {
@@ -516,14 +516,14 @@ export var BrainRunnerDO = /*#__PURE__*/ function(DurableObject) {
516
516
  }
517
517
  return [
518
518
  4,
519
- manifest.import(brainName)
519
+ manifest.import(brainTitle)
520
520
  ];
521
521
  case 1:
522
522
  brainToRun = _state.sent();
523
523
  if (!brainToRun) {
524
- console.error("[DO ".concat(brainRunId, "] Brain ").concat(brainName, " not found in manifest."));
524
+ console.error("[DO ".concat(brainRunId, "] Brain ").concat(brainTitle, " not found in manifest."));
525
525
  console.error(JSON.stringify(manifest, null, 2));
526
- throw new Error("Brain ".concat(brainName, " not found"));
526
+ throw new Error("Brain ".concat(brainTitle, " not found"));
527
527
  }
528
528
  sqliteAdapter = new BrainRunSQLiteAdapter(sql);
529
529
  eventStreamAdapter = this.eventStreamAdapter;
@@ -527,7 +527,12 @@ function regenerateManifestFile(projectRootPath, targetSrcDir) {
527
527
  importPath = "../../brains/".concat(brainName, ".js");
528
528
  importAlias = "brain_".concat(brainName.replace(/[^a-zA-Z0-9_]/g, '_'));
529
529
  importStatements += "import * as ".concat(importAlias, " from '").concat(importPath, "';\n");
530
- manifestEntries += " ".concat(JSON.stringify(brainName), ": ").concat(importAlias, ".default as Brain,\n");
530
+ // Create manifest entry with metadata
531
+ manifestEntries += " ".concat(JSON.stringify(brainName), ": {\n");
532
+ manifestEntries += " filename: ".concat(JSON.stringify(brainName), ",\n");
533
+ manifestEntries += " path: ".concat(JSON.stringify("brains/".concat(file)), ",\n");
534
+ manifestEntries += " brain: ".concat(importAlias, ".default as Brain,\n");
535
+ manifestEntries += " },\n";
531
536
  }
532
537
  } catch (err) {
533
538
  _didIteratorError = true;
@@ -545,7 +550,7 @@ function regenerateManifestFile(projectRootPath, targetSrcDir) {
545
550
  }
546
551
  _state.label = 3;
547
552
  case 3:
548
- manifestContent = "// This file is generated automatically. Do not edit directly.\n".concat(importStatements, "\nexport const staticManifest: Record<string, Brain> = {\n").concat(manifestEntries, "};\n");
553
+ manifestContent = "// This file is generated automatically. Do not edit directly.\n".concat(importStatements, "\nimport type { BrainMetadata } from '@positronic/cloudflare';\n\nexport const manifest: Record<string, BrainMetadata> = {\n").concat(manifestEntries, "};\n");
549
554
  return [
550
555
  4,
551
556
  fsPromises.readFile(runnerPath, 'utf-8')
@@ -150,27 +150,37 @@ function _ts_generator(thisArg, body) {
150
150
  };
151
151
  }
152
152
  }
153
+ import { BrainResolver } from './brain-resolver.js';
153
154
  var StaticManifestStrategy = /*#__PURE__*/ function() {
154
155
  "use strict";
155
156
  function StaticManifestStrategy(manifest) {
156
157
  _class_call_check(this, StaticManifestStrategy);
157
158
  _define_property(this, "manifest", void 0);
159
+ _define_property(this, "resolver", void 0);
158
160
  this.manifest = manifest;
161
+ this.resolver = new BrainResolver(manifest);
159
162
  }
160
163
  _create_class(StaticManifestStrategy, [
161
164
  {
162
165
  key: "import",
163
- value: function _import(name) {
166
+ value: function _import(filename) {
164
167
  return _async_to_generator(function() {
168
+ var _this_manifest_filename;
165
169
  return _ts_generator(this, function(_state) {
166
170
  return [
167
171
  2,
168
- this.manifest[name]
172
+ (_this_manifest_filename = this.manifest[filename]) === null || _this_manifest_filename === void 0 ? void 0 : _this_manifest_filename.brain
169
173
  ];
170
174
  });
171
175
  }).call(this);
172
176
  }
173
177
  },
178
+ {
179
+ key: "resolve",
180
+ value: function resolve(identifier) {
181
+ return this.resolver.resolve(identifier);
182
+ }
183
+ },
174
184
  {
175
185
  key: "list",
176
186
  value: function list() {
@@ -190,7 +200,7 @@ var DynamicImportStrategy = /*#__PURE__*/ function() {
190
200
  _create_class(DynamicImportStrategy, [
191
201
  {
192
202
  key: "import",
193
- value: function _import(name) {
203
+ value: function _import(filename) {
194
204
  return _async_to_generator(function() {
195
205
  var module, e;
196
206
  return _ts_generator(this, function(_state) {
@@ -204,7 +214,7 @@ var DynamicImportStrategy = /*#__PURE__*/ function() {
204
214
  ]);
205
215
  return [
206
216
  4,
207
- import("".concat(this.brainsDir, "/").concat(name, ".ts"))
217
+ import("".concat(this.brainsDir, "/").concat(filename, ".ts"))
208
218
  ];
209
219
  case 1:
210
220
  module = _state.sent();
@@ -214,7 +224,7 @@ var DynamicImportStrategy = /*#__PURE__*/ function() {
214
224
  ];
215
225
  case 2:
216
226
  e = _state.sent();
217
- console.error("Failed to import brain ".concat(name, ":"), e);
227
+ console.error("Failed to import brain ".concat(filename, ":"), e);
218
228
  return [
219
229
  2,
220
230
  undefined
@@ -228,6 +238,20 @@ var DynamicImportStrategy = /*#__PURE__*/ function() {
228
238
  }).call(this);
229
239
  }
230
240
  },
241
+ {
242
+ key: "resolve",
243
+ value: function resolve(identifier) {
244
+ // For dynamic imports, we can only do simple filename matching
245
+ return this.import(identifier).then(function(brain) {
246
+ return brain ? {
247
+ matchType: 'exact',
248
+ brain: brain
249
+ } : {
250
+ matchType: 'none'
251
+ };
252
+ }); // Type assertion needed due to async
253
+ }
254
+ },
231
255
  {
232
256
  key: "list",
233
257
  value: function list() {
@@ -245,28 +269,34 @@ export var PositronicManifest = /*#__PURE__*/ function() {
245
269
  function PositronicManifest(options) {
246
270
  _class_call_check(this, PositronicManifest);
247
271
  _define_property(this, "importStrategy", void 0);
248
- if (options.staticManifest && options.brainsDir) {
249
- throw new Error('Cannot provide both staticManifest and brainsDir - choose one import strategy');
272
+ if (options.manifest && options.brainsDir) {
273
+ throw new Error('Cannot provide both manifest and brainsDir - choose one import strategy');
250
274
  }
251
- if (!options.staticManifest && !options.brainsDir) {
252
- throw new Error('Must provide either staticManifest or brainsDir');
275
+ if (!options.manifest && !options.brainsDir) {
276
+ throw new Error('Must provide either manifest or brainsDir');
253
277
  }
254
- this.importStrategy = options.staticManifest ? new StaticManifestStrategy(options.staticManifest) : new DynamicImportStrategy(options.brainsDir);
278
+ this.importStrategy = options.manifest ? new StaticManifestStrategy(options.manifest) : new DynamicImportStrategy(options.brainsDir);
255
279
  }
256
280
  _create_class(PositronicManifest, [
257
281
  {
258
282
  key: "import",
259
- value: function _import(name) {
283
+ value: function _import(filename) {
260
284
  return _async_to_generator(function() {
261
285
  return _ts_generator(this, function(_state) {
262
286
  return [
263
287
  2,
264
- this.importStrategy.import(name)
288
+ this.importStrategy.import(filename)
265
289
  ];
266
290
  });
267
291
  }).call(this);
268
292
  }
269
293
  },
294
+ {
295
+ key: "resolve",
296
+ value: function resolve(identifier) {
297
+ return this.importStrategy.resolve(identifier);
298
+ }
299
+ },
270
300
  {
271
301
  key: "list",
272
302
  value: function list() {
@@ -253,13 +253,13 @@ 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_name 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_name);\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 );\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
  return _this;
258
258
  }
259
259
  _create_class(ScheduleDO, [
260
260
  {
261
261
  key: "createSchedule",
262
- value: function createSchedule(brainName, cronExpression) {
262
+ value: function createSchedule(brainTitle, cronExpression) {
263
263
  return _async_to_generator(function() {
264
264
  var id, createdAt, alarm, cron, nextRunAt;
265
265
  return _ts_generator(this, function(_state) {
@@ -293,12 +293,12 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
293
293
  // Calculate next run time
294
294
  cron = parseCronExpression(cronExpression);
295
295
  nextRunAt = this.calculateNextRunTime(cron, createdAt);
296
- this.storage.exec("INSERT INTO schedules (id, brain_name, cron_expression, enabled, created_at, next_run_at)\n VALUES (?, ?, ?, 1, ?, ?)", id, brainName, cronExpression, createdAt, nextRunAt);
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);
297
297
  return [
298
298
  2,
299
299
  {
300
300
  id: id,
301
- brainName: brainName,
301
+ brainTitle: brainTitle,
302
302
  cronExpression: cronExpression,
303
303
  enabled: true,
304
304
  createdAt: createdAt,
@@ -316,7 +316,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
316
316
  return _async_to_generator(function() {
317
317
  var results, result;
318
318
  return _ts_generator(this, function(_state) {
319
- results = this.storage.exec("SELECT id, brain_name, cron_expression, enabled, created_at, next_run_at\n FROM schedules WHERE id = ?", scheduleId).toArray();
319
+ results = this.storage.exec("SELECT id, brain_title, cron_expression, enabled, created_at, next_run_at\n FROM schedules WHERE id = ?", scheduleId).toArray();
320
320
  if (results.length === 0) {
321
321
  return [
322
322
  2,
@@ -328,7 +328,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
328
328
  2,
329
329
  {
330
330
  id: result.id,
331
- brainName: result.brain_name,
331
+ brainTitle: result.brain_title,
332
332
  cronExpression: result.cron_expression,
333
333
  enabled: result.enabled === 1,
334
334
  createdAt: result.created_at,
@@ -408,10 +408,10 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
408
408
  _state.sent();
409
409
  _state.label = 4;
410
410
  case 4:
411
- schedules = this.storage.exec("SELECT id, brain_name, cron_expression, enabled, created_at, next_run_at\n FROM schedules\n ORDER BY created_at DESC").toArray().map(function(row) {
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) {
412
412
  return {
413
413
  id: row.id,
414
- brainName: row.brain_name,
414
+ brainTitle: row.brain_title,
415
415
  cronExpression: row.cron_expression,
416
416
  enabled: row.enabled === 1,
417
417
  createdAt: row.created_at,
@@ -485,7 +485,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
485
485
  value: // Handle the alarm trigger - runs every minute in a perpetual cycle
486
486
  function alarm() {
487
487
  return _async_to_generator(function() {
488
- var now, dueSchedules, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, schedule, scheduleId, brainName, cronExpression, brainRunId, error, errorMessage, cron, nextRunAt, err;
488
+ var now, dueSchedules, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, schedule, scheduleId, brainTitle, cronExpression, brainRunId, error, errorMessage, cron, nextRunAt, err;
489
489
  return _ts_generator(this, function(_state) {
490
490
  switch(_state.label){
491
491
  case 0:
@@ -500,7 +500,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
500
500
  // checking every minute ensures we never miss a scheduled run.
501
501
  // Get all enabled schedules that are due
502
502
  now = Date.now();
503
- dueSchedules = this.storage.exec("SELECT id, brain_name, cron_expression\n FROM schedules\n WHERE enabled = 1 AND next_run_at <= ?", now).toArray();
503
+ dueSchedules = this.storage.exec("SELECT id, brain_title, cron_expression\n FROM schedules\n WHERE enabled = 1 AND next_run_at <= ?", now).toArray();
504
504
  _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
505
505
  _state.label = 1;
506
506
  case 1:
@@ -519,7 +519,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
519
519
  ];
520
520
  schedule = _step.value;
521
521
  scheduleId = schedule.id;
522
- brainName = schedule.brain_name;
522
+ brainTitle = schedule.brain_title;
523
523
  cronExpression = schedule.cron_expression;
524
524
  _state.label = 3;
525
525
  case 3:
@@ -531,7 +531,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
531
531
  ]);
532
532
  return [
533
533
  4,
534
- this.triggerBrainRun(brainName)
534
+ this.triggerBrainRun(brainTitle)
535
535
  ];
536
536
  case 4:
537
537
  brainRunId = _state.sent();
@@ -546,7 +546,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
546
546
  // Record failed run
547
547
  errorMessage = _instanceof(error, Error) ? error.message : 'Unknown error';
548
548
  this.storage.exec("INSERT INTO scheduled_runs (schedule_id, status, ran_at, error)\n VALUES (?, 'failed', ?, ?)", scheduleId, now, errorMessage);
549
- console.error("[ScheduleDO] Failed to trigger brain ".concat(brainName, ":"), error);
549
+ console.error("[ScheduleDO] Failed to trigger brain ".concat(brainTitle, ":"), error);
550
550
  return [
551
551
  3,
552
552
  6
@@ -621,7 +621,7 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
621
621
  },
622
622
  {
623
623
  key: "triggerBrainRun",
624
- value: function triggerBrainRun(brainName) {
624
+ value: function triggerBrainRun(brainTitle) {
625
625
  return _async_to_generator(function() {
626
626
  var brainRunId, namespace, doId, stub;
627
627
  return _ts_generator(this, function(_state) {
@@ -631,10 +631,10 @@ export var ScheduleDO = /*#__PURE__*/ function(DurableObject) {
631
631
  namespace = this.env.BRAIN_RUNNER_DO;
632
632
  doId = namespace.idFromName(brainRunId);
633
633
  stub = namespace.get(doId);
634
- console.log("[ScheduleDO] Triggering brain run ".concat(brainName, " with id ").concat(brainRunId));
634
+ console.log("[ScheduleDO] Triggering brain run ".concat(brainTitle, " with id ").concat(brainRunId));
635
635
  return [
636
636
  4,
637
- stub.start(brainName, brainRunId)
637
+ stub.start(brainTitle, brainRunId)
638
638
  ];
639
639
  case 1:
640
640
  _state.sent();
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,2BAA2B,CAAC;AAGpE,KAAK,QAAQ,GAAG;IACd,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;CACzB,CAAC;AAmBF,QAAA,MAAM,GAAG;cAAwB,QAAQ;yCAAK,CAAC;AA+hB/C,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAI1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAY,MAAM,2BAA2B,CAAC;AAGpE,KAAK,QAAQ,GAAG;IACd,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;CACzB,CAAC;AAmBF,QAAA,MAAM,GAAG;cAAwB,QAAQ;yCAAK,CAAC;AAupB/C,eAAe,GAAG,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { Brain } from '@positronic/core';
2
+ export interface BrainMetadata {
3
+ filename: string;
4
+ path: string;
5
+ brain: Brain;
6
+ }
7
+ export interface BrainCandidate {
8
+ title: string;
9
+ filename: string;
10
+ path: string;
11
+ description?: string;
12
+ }
13
+ export interface ResolutionResult {
14
+ matchType: 'exact' | 'multiple' | 'none';
15
+ brain?: Brain;
16
+ candidates?: BrainCandidate[];
17
+ }
18
+ export declare class BrainResolver {
19
+ private enhancedManifest;
20
+ private metadataCache;
21
+ constructor(enhancedManifest: Record<string, BrainMetadata>);
22
+ resolve(identifier: string): ResolutionResult;
23
+ /**
24
+ * Get a brain by exact filename (used for backward compatibility)
25
+ */
26
+ getByFilename(filename: string): Brain | undefined;
27
+ /**
28
+ * List all available brains
29
+ */
30
+ list(): string[];
31
+ }
32
+ //# sourceMappingURL=brain-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain-resolver.d.ts","sourceRoot":"","sources":["../../src/brain-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;IACzC,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,qBAAa,aAAa;IAGZ,OAAO,CAAC,gBAAgB;IAFpC,OAAO,CAAC,aAAa,CAAmE;gBAEpE,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;IAanE,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAuF7C;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAKlD;;OAEG;IACH,IAAI,IAAI,MAAM,EAAE;CAGjB"}
@@ -19,7 +19,7 @@ export declare class BrainRunnerDO extends DurableObject<Env> {
19
19
  private eventStreamAdapter;
20
20
  constructor(state: DurableObjectState, env: Env);
21
21
  private loadResourcesFromR2;
22
- start(brainName: string, brainRunId: string, initialData?: Record<string, any>): Promise<void>;
22
+ start(brainTitle: string, brainRunId: string, initialData?: Record<string, any>): Promise<void>;
23
23
  fetch(request: Request): Promise<Response>;
24
24
  }
25
25
  //# 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,EAAkB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,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;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;CAC5B;AAwDD,qBAAa,aAAc,SAAQ,aAAa,CAAC,GAAG,CAAC;IACnD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAA4B;gBAE1C,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;YAOjC,mBAAmB;IA0E3B,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IA6D7B,KAAK,CAAC,OAAO,EAAE,OAAO;CA4E7B"}
1
+ {"version":3,"file":"brain-runner-do.d.ts","sourceRoot":"","sources":["../../src/brain-runner-do.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,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;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;CAC5B;AAwDD,qBAAa,aAAc,SAAQ,aAAa,CAAC,GAAG,CAAC;IACnD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,kBAAkB,CAA4B;gBAE1C,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG;YAOjC,mBAAmB;IA0E3B,KAAK,CACT,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAgE7B,KAAK,CAAC,OAAO,EAAE,OAAO;CA4E7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server.d.ts","sourceRoot":"","sources":["../../src/dev-server.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAqL1E,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;YAiB7B,qBAAqB;YA4DrB,wBAAwB;YAqBxB,yBAAyB;YAQzB,2BAA2B;IAuBzC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,wBAAwB;YASlB,0BAA0B;IA4BxC,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,gBAAgB;IA4BlB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkD3C,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GACjC,OAAO,CAAC,IAAI,CAAC;IAUV,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E7B,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":"AAOA,OAAO,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA8L1E,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;YAiB7B,qBAAqB;YA4DrB,wBAAwB;YAqBxB,yBAAyB;YAQzB,2BAA2B;IAuBzC,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,wBAAwB;YASlB,0BAA0B;IA4BxC,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,gBAAgB;IA4BlB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkD3C,KAAK,CACT,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GACjC,OAAO,CAAC,IAAI,CAAC;IAUV,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA6E7B,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,7 +1,7 @@
1
1
  export { BrainRunnerDO, setBrainRunner, setManifest, getManifest, } from './brain-runner-do.js';
2
2
  export { MonitorDO } from './monitor-do.js';
3
3
  export { ScheduleDO } from './schedule-do.js';
4
- export { PositronicManifest } from './manifest.js';
4
+ export { PositronicManifest, type BrainMetadata, type ResolutionResult } from './manifest.js';
5
5
  export { default as api } from './api.js';
6
6
  export { CloudflareR2Loader } from './r2-loader.js';
7
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,WAAW,GACZ,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,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,WAAW,GACZ,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,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,11 +1,14 @@
1
1
  import type { Brain } from '@positronic/core';
2
+ import { type BrainMetadata, type ResolutionResult } from './brain-resolver.js';
3
+ export type { BrainMetadata, ResolutionResult } from './brain-resolver.js';
2
4
  export declare class PositronicManifest {
3
5
  private importStrategy;
4
6
  constructor(options: {
5
- staticManifest?: Record<string, Brain>;
7
+ manifest?: Record<string, BrainMetadata>;
6
8
  brainsDir?: string;
7
9
  });
8
- import(name: string): Promise<Brain | undefined>;
10
+ import(filename: string): Promise<Brain | undefined>;
11
+ resolve(identifier: string): ResolutionResult;
9
12
  list(): string[];
10
13
  }
11
14
  //# sourceMappingURL=manifest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAwC9C,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,cAAc,CAAsB;gBAEhC,OAAO,EAAE;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IAeK,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAItD,IAAI,IAAI,MAAM,EAAE;CAGjB"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE/F,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAwD3E,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,cAAc,CAAsB;gBAEhC,OAAO,EAAE;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACzC,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;IAeK,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAI1D,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAI7C,IAAI,IAAI,MAAM,EAAE;CAGjB"}
@@ -3,7 +3,7 @@
3
3
  * This file is used when importing from Node.js environments (like the CLI)
4
4
  * and excludes any Cloudflare Workers-specific modules.
5
5
  */
6
- export { PositronicManifest } from './manifest.js';
6
+ export { PositronicManifest, type BrainMetadata, type ResolutionResult } from './manifest.js';
7
7
  export { CloudflareR2Loader } from './r2-loader.js';
8
8
  export { CloudflareDevServer } from './dev-server.js';
9
9
  export { CloudflareDevServer as DevServer } from './dev-server.js';
@@ -1 +1 @@
1
- {"version":3,"file":"node-index.d.ts","sourceRoot":"","sources":["../../src/node-index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"node-index.d.ts","sourceRoot":"","sources":["../../src/node-index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,IAAI,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -8,7 +8,7 @@ export interface Env {
8
8
  }
9
9
  interface Schedule {
10
10
  id: string;
11
- brainName: string;
11
+ brainTitle: string;
12
12
  cronExpression: string;
13
13
  enabled: boolean;
14
14
  createdAt: number;
@@ -26,7 +26,7 @@ interface ScheduledRun {
26
26
  export declare class ScheduleDO extends DurableObject<Env> {
27
27
  private readonly storage;
28
28
  constructor(state: DurableObjectState, env: Env);
29
- createSchedule(brainName: string, cronExpression: string): Promise<Schedule>;
29
+ createSchedule(brainTitle: string, cronExpression: string): Promise<Schedule>;
30
30
  getSchedule(scheduleId: string): Promise<Schedule | null>;
31
31
  deleteSchedule(scheduleId: string): Promise<boolean>;
32
32
  listSchedules(): Promise<{
@@ -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,SAAS,EAAE,MAAM,CAAC;IAClB,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,SAAS,EAAE,MAAM,EACjB,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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@positronic/cloudflare",
3
- "version": "0.0.15",
3
+ "version": "0.0.16",
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.15",
35
- "@positronic/spec": "^0.0.15",
36
- "@positronic/template-new-project": "^0.0.15",
34
+ "@positronic/core": "^0.0.16",
35
+ "@positronic/spec": "^0.0.16",
36
+ "@positronic/template-new-project": "^0.0.16",
37
37
  "aws4fetch": "^1.0.18",
38
38
  "caz": "^2.0.0",
39
39
  "cron-schedule": "^5.0.4",