@positronic/core 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.
Files changed (39) hide show
  1. package/dist/src/dsl/brain-runner.js +34 -9
  2. package/dist/src/dsl/builder/brain.js +60 -16
  3. package/dist/src/dsl/create-brain.js +4 -1
  4. package/dist/src/dsl/execution/event-stream.js +40 -16
  5. package/dist/src/memory/scoped-memory.js +8 -7
  6. package/dist/src/memory/types.js +2 -2
  7. package/dist/src/store/index.js +1 -0
  8. package/dist/src/store/types.js +5 -0
  9. package/dist/types/clients/types.d.ts +17 -1
  10. package/dist/types/clients/types.d.ts.map +1 -1
  11. package/dist/types/dsl/brain-runner.d.ts +9 -2
  12. package/dist/types/dsl/brain-runner.d.ts.map +1 -1
  13. package/dist/types/dsl/builder/brain.d.ts +46 -21
  14. package/dist/types/dsl/builder/brain.d.ts.map +1 -1
  15. package/dist/types/dsl/create-brain.d.ts +7 -4
  16. package/dist/types/dsl/create-brain.d.ts.map +1 -1
  17. package/dist/types/dsl/definitions/blocks.d.ts +2 -0
  18. package/dist/types/dsl/definitions/blocks.d.ts.map +1 -1
  19. package/dist/types/dsl/definitions/events.d.ts +2 -1
  20. package/dist/types/dsl/definitions/events.d.ts.map +1 -1
  21. package/dist/types/dsl/definitions/run-params.d.ts +5 -1
  22. package/dist/types/dsl/definitions/run-params.d.ts.map +1 -1
  23. package/dist/types/dsl/example-webhook.d.ts +1 -1
  24. package/dist/types/dsl/example-webhook.d.ts.map +1 -1
  25. package/dist/types/dsl/execution/event-stream.d.ts +5 -0
  26. package/dist/types/dsl/execution/event-stream.d.ts.map +1 -1
  27. package/dist/types/dsl/types.d.ts +7 -0
  28. package/dist/types/dsl/types.d.ts.map +1 -1
  29. package/dist/types/index.d.ts +2 -1
  30. package/dist/types/index.d.ts.map +1 -1
  31. package/dist/types/memory/scoped-memory.d.ts +6 -5
  32. package/dist/types/memory/scoped-memory.d.ts.map +1 -1
  33. package/dist/types/memory/types.d.ts +4 -8
  34. package/dist/types/memory/types.d.ts.map +1 -1
  35. package/dist/types/store/index.d.ts +2 -0
  36. package/dist/types/store/index.d.ts.map +1 -0
  37. package/dist/types/store/types.d.ts +51 -0
  38. package/dist/types/store/types.d.ts.map +1 -0
  39. package/package.json +1 -1
@@ -377,15 +377,31 @@ export var BrainRunner = /*#__PURE__*/ function() {
377
377
  }));
378
378
  }
379
379
  },
380
+ {
381
+ key: "withGovernor",
382
+ value: function withGovernor(governor) {
383
+ return new BrainRunner(_object_spread_props(_object_spread({}, this.options), {
384
+ governor: governor
385
+ }));
386
+ }
387
+ },
388
+ {
389
+ key: "withStoreProvider",
390
+ value: function withStoreProvider(storeProvider) {
391
+ return new BrainRunner(_object_spread_props(_object_spread({}, this.options), {
392
+ storeProvider: storeProvider
393
+ }));
394
+ }
395
+ },
380
396
  {
381
397
  key: "run",
382
398
  value: /**
383
399
  * Run a brain from the beginning with fresh state.
384
400
  */ function run(brain, options) {
385
401
  return _async_to_generator(function() {
386
- var _ref, _ref_initialState, initialState, brainOptions, brainRunId, endAfter, signal;
402
+ var _options_initialState, initialState, brainOptions, brainRunId, endAfter, signal, currentUser;
387
403
  return _ts_generator(this, function(_state) {
388
- _ref = options !== null && options !== void 0 ? options : {}, _ref_initialState = _ref.initialState, initialState = _ref_initialState === void 0 ? {} : _ref_initialState, brainOptions = _ref.options, brainRunId = _ref.brainRunId, endAfter = _ref.endAfter, signal = _ref.signal;
404
+ _options_initialState = options.initialState, initialState = _options_initialState === void 0 ? {} : _options_initialState, brainOptions = options.options, brainRunId = options.brainRunId, endAfter = options.endAfter, signal = options.signal, currentUser = options.currentUser;
389
405
  return [
390
406
  2,
391
407
  this.execute(brain, {
@@ -394,6 +410,7 @@ export var BrainRunner = /*#__PURE__*/ function() {
394
410
  brainRunId: brainRunId,
395
411
  endAfter: endAfter,
396
412
  signal: signal,
413
+ currentUser: currentUser,
397
414
  initialStepCount: 0
398
415
  })
399
416
  ];
@@ -410,9 +427,9 @@ export var BrainRunner = /*#__PURE__*/ function() {
410
427
  * Webhook response data comes from signals, not as a parameter.
411
428
  */ function resume(brain, options) {
412
429
  return _async_to_generator(function() {
413
- var machine, brainRunId, brainOptions, endAfter, signal, _machine_context, executionStack, agentContext, batchContext, resumeContext;
430
+ var machine, brainRunId, brainOptions, endAfter, signal, currentUser, _machine_context, executionStack, agentContext, batchContext, resumeContext;
414
431
  return _ts_generator(this, function(_state) {
415
- machine = options.machine, brainRunId = options.brainRunId, brainOptions = options.options, endAfter = options.endAfter, signal = options.signal;
432
+ machine = options.machine, brainRunId = options.brainRunId, brainOptions = options.options, endAfter = options.endAfter, signal = options.signal, currentUser = options.currentUser;
416
433
  // Build ResumeContext from machine's execution stack
417
434
  // Webhook response comes from signals during execution, not from resume parameters
418
435
  _machine_context = machine.context, executionStack = _machine_context.executionStack, agentContext = _machine_context.agentContext, batchContext = _machine_context.batchContext;
@@ -426,6 +443,7 @@ export var BrainRunner = /*#__PURE__*/ function() {
426
443
  brainRunId: brainRunId,
427
444
  endAfter: endAfter,
428
445
  signal: signal,
446
+ currentUser: currentUser,
429
447
  initialStepCount: resumeContext.stepIndex
430
448
  })
431
449
  ];
@@ -439,13 +457,14 @@ export var BrainRunner = /*#__PURE__*/ function() {
439
457
  * Internal execution method shared by run() and resume().
440
458
  */ function execute(brain, params) {
441
459
  return _async_to_generator(function() {
442
- var _this_options, adapters, client, resources, pages, env, signalProvider, resolvedEnv, initialState, resumeContext, providedMachine, options, brainRunId, endAfter, signal, initialStepCount, _resumeContext_state, _ref, machine, brainRun, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret, err, error, _machine_context_brainRunId, cancelledEvent;
460
+ var _this_options, adapters, rawClient, resources, pages, env, signalProvider, governor, storeProvider, client, resolvedEnv, initialState, resumeContext, providedMachine, options, brainRunId, endAfter, signal, currentUser, initialStepCount, _resumeContext_state, _ref, machine, brainRun, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, _ret, err, error, _machine_context_brainRunId, cancelledEvent;
443
461
  return _ts_generator(this, function(_state) {
444
462
  switch(_state.label){
445
463
  case 0:
446
- _this_options = this.options, adapters = _this_options.adapters, client = _this_options.client, resources = _this_options.resources, pages = _this_options.pages, env = _this_options.env, signalProvider = _this_options.signalProvider;
464
+ _this_options = this.options, adapters = _this_options.adapters, rawClient = _this_options.client, resources = _this_options.resources, pages = _this_options.pages, env = _this_options.env, signalProvider = _this_options.signalProvider, governor = _this_options.governor, storeProvider = _this_options.storeProvider;
465
+ client = governor ? governor(rawClient) : rawClient;
447
466
  resolvedEnv = env !== null && env !== void 0 ? env : DEFAULT_ENV;
448
- initialState = params.initialState, resumeContext = params.resumeContext, providedMachine = params.machine, options = params.options, brainRunId = params.brainRunId, endAfter = params.endAfter, signal = params.signal, initialStepCount = params.initialStepCount;
467
+ initialState = params.initialState, resumeContext = params.resumeContext, providedMachine = params.machine, options = params.options, brainRunId = params.brainRunId, endAfter = params.endAfter, signal = params.signal, currentUser = params.currentUser, initialStepCount = params.initialStepCount;
449
468
  // Use provided state machine if available (for resumes with historical events),
450
469
  // otherwise create a new one
451
470
  machine = providedMachine !== null && providedMachine !== void 0 ? providedMachine : createBrainExecutionMachine({
@@ -459,7 +478,10 @@ export var BrainRunner = /*#__PURE__*/ function() {
459
478
  resources: resources !== null && resources !== void 0 ? resources : {},
460
479
  pages: pages,
461
480
  env: resolvedEnv,
462
- signalProvider: signalProvider
481
+ signalProvider: signalProvider,
482
+ governor: governor,
483
+ storeProvider: storeProvider,
484
+ currentUser: currentUser
463
485
  }) : brain.run({
464
486
  initialState: initialState !== null && initialState !== void 0 ? initialState : {},
465
487
  options: options,
@@ -468,7 +490,10 @@ export var BrainRunner = /*#__PURE__*/ function() {
468
490
  resources: resources !== null && resources !== void 0 ? resources : {},
469
491
  pages: pages,
470
492
  env: resolvedEnv,
471
- signalProvider: signalProvider
493
+ signalProvider: signalProvider,
494
+ governor: governor,
495
+ storeProvider: storeProvider,
496
+ currentUser: currentUser
472
497
  });
473
498
  _state.label = 1;
474
499
  case 1:
@@ -389,6 +389,7 @@ export var Brain = /*#__PURE__*/ function() {
389
389
  _define_property(this, "components", void 0);
390
390
  _define_property(this, "defaultTools", void 0);
391
391
  _define_property(this, "memoryProvider", void 0);
392
+ _define_property(this, "storeSchema", void 0);
392
393
  this.title = title;
393
394
  this.description = description;
394
395
  this.blocks = [];
@@ -447,6 +448,7 @@ export var Brain = /*#__PURE__*/ function() {
447
448
  nextBrain.components = this.components;
448
449
  nextBrain.defaultTools = this.defaultTools;
449
450
  nextBrain.memoryProvider = this.memoryProvider;
451
+ nextBrain.storeSchema = this.storeSchema;
450
452
  return nextBrain;
451
453
  }
452
454
  },
@@ -459,6 +461,7 @@ export var Brain = /*#__PURE__*/ function() {
459
461
  nextBrain.components = this.components;
460
462
  nextBrain.defaultTools = this.defaultTools;
461
463
  nextBrain.memoryProvider = this.memoryProvider;
464
+ nextBrain.storeSchema = this.storeSchema;
462
465
  return nextBrain;
463
466
  }
464
467
  },
@@ -484,6 +487,7 @@ export var Brain = /*#__PURE__*/ function() {
484
487
  nextBrain.components = components;
485
488
  nextBrain.defaultTools = this.defaultTools;
486
489
  nextBrain.memoryProvider = this.memoryProvider;
490
+ nextBrain.storeSchema = this.storeSchema;
487
491
  return nextBrain;
488
492
  }
489
493
  },
@@ -541,6 +545,39 @@ export var Brain = /*#__PURE__*/ function() {
541
545
  return next;
542
546
  }
543
547
  },
548
+ {
549
+ /**
550
+ * Configure a typed key-value store for this brain.
551
+ * When configured, steps receive a `store` object in their context with typed get/set/delete/has.
552
+ *
553
+ * @param fields - Store field definitions. Plain values are shared; `{ value, perUser: true }` are per-user scoped.
554
+ *
555
+ * @example
556
+ * ```typescript
557
+ * const myBrain = brain('email-digest')
558
+ * .withStore({
559
+ * deselectedThreads: [] as string[],
560
+ * lastDigestDate: '',
561
+ * theme: { value: 'light', perUser: true },
562
+ * })
563
+ * .step('Process', async ({ store }) => {
564
+ * const deselected = await store.get('deselectedThreads');
565
+ * await store.set('deselectedThreads', [...deselected, 'new-id']);
566
+ * return { processed: true };
567
+ * });
568
+ * ```
569
+ */ key: "withStore",
570
+ value: function withStore(storeSchema) {
571
+ var nextBrain = new Brain(this.title, this.description).withBlocks(this.blocks);
572
+ nextBrain.optionsSchema = this.optionsSchema;
573
+ nextBrain.services = this.services;
574
+ nextBrain.components = this.components;
575
+ nextBrain.defaultTools = this.defaultTools;
576
+ nextBrain.memoryProvider = this.memoryProvider;
577
+ nextBrain.storeSchema = storeSchema;
578
+ return nextBrain;
579
+ }
580
+ },
544
581
  {
545
582
  key: "step",
546
583
  value: function step(title, action) {
@@ -628,18 +665,17 @@ export var Brain = /*#__PURE__*/ function() {
628
665
  var promptBlock = {
629
666
  type: 'step',
630
667
  title: title,
668
+ client: config.client,
631
669
  action: function(param) {
632
- var state = param.state, runClient = param.client, resources = param.resources;
670
+ var state = param.state, client = param.client, resources = param.resources;
633
671
  return _async_to_generator(function() {
634
- var template, stepClient, client, prompt, response;
672
+ var prompt, result;
635
673
  return _ts_generator(this, function(_state) {
636
674
  switch(_state.label){
637
675
  case 0:
638
- template = config.template, stepClient = config.client;
639
- client = stepClient !== null && stepClient !== void 0 ? stepClient : runClient;
640
676
  return [
641
677
  4,
642
- template(state, resources)
678
+ config.template(state, resources)
643
679
  ];
644
680
  case 1:
645
681
  prompt = _state.sent();
@@ -652,12 +688,12 @@ export var Brain = /*#__PURE__*/ function() {
652
688
  })
653
689
  ];
654
690
  case 2:
655
- response = _state.sent();
691
+ result = _state.sent();
656
692
  return [
657
693
  2,
658
694
  {
659
695
  state: state,
660
- promptResponse: response
696
+ promptResponse: result.object
661
697
  }
662
698
  ];
663
699
  }
@@ -703,19 +739,18 @@ export var Brain = /*#__PURE__*/ function() {
703
739
  var promptBlock2 = {
704
740
  type: 'step',
705
741
  title: title,
742
+ client: config.client,
706
743
  action: function(param) {
707
- var state = param.state, runClient = param.client, resources = param.resources;
744
+ var state = param.state, client = param.client, resources = param.resources;
708
745
  return _async_to_generator(function() {
709
- var template, stepClient, schema, schemaName, client, prompt, response;
746
+ var schema, schemaName, prompt, result;
710
747
  return _ts_generator(this, function(_state) {
711
748
  switch(_state.label){
712
749
  case 0:
713
- template = config.template, stepClient = config.client;
714
750
  schema = outputSchema.schema, schemaName = outputSchema.name;
715
- client = stepClient !== null && stepClient !== void 0 ? stepClient : runClient;
716
751
  return [
717
752
  4,
718
- template(state, resources)
753
+ config.template(state, resources)
719
754
  ];
720
755
  case 1:
721
756
  prompt = _state.sent();
@@ -728,10 +763,10 @@ export var Brain = /*#__PURE__*/ function() {
728
763
  })
729
764
  ];
730
765
  case 2:
731
- response = _state.sent();
766
+ result = _state.sent();
732
767
  return [
733
768
  2,
734
- _object_spread_props(_object_spread({}, state), _define_property({}, outputSchema.name, response))
769
+ _object_spread_props(_object_spread({}, state), _define_property({}, outputSchema.name, result.object))
735
770
  ];
736
771
  }
737
772
  });
@@ -814,7 +849,7 @@ export var Brain = /*#__PURE__*/ function() {
814
849
  value: // Implementation signature
815
850
  function run(params) {
816
851
  return _wrap_async_generator(function() {
817
- var _this, title, description, blocks, validatedOptions, stream;
852
+ var _this, title, description, blocks, validatedOptions, store, stream;
818
853
  return _ts_generator(this, function(_state) {
819
854
  switch(_state.label){
820
855
  case 0:
@@ -829,6 +864,12 @@ export var Brain = /*#__PURE__*/ function() {
829
864
  }
830
865
  validatedOptions = {};
831
866
  }
867
+ // Build store if withStore() was called and a store provider is given
868
+ store = this.storeSchema && params.storeProvider ? params.storeProvider({
869
+ schema: this.storeSchema,
870
+ brainTitle: this.title,
871
+ currentUser: params.currentUser
872
+ }) : undefined;
832
873
  stream = new BrainEventStream(_object_spread_props(_object_spread({
833
874
  title: title,
834
875
  description: description,
@@ -838,7 +879,8 @@ export var Brain = /*#__PURE__*/ function() {
838
879
  services: this.services,
839
880
  components: this.components,
840
881
  defaultTools: this.defaultTools,
841
- memoryProvider: this.memoryProvider
882
+ memoryProvider: this.memoryProvider,
883
+ store: store
842
884
  }));
843
885
  return [
844
886
  5,
@@ -876,6 +918,8 @@ export var Brain = /*#__PURE__*/ function() {
876
918
  nextBrain.defaultTools = this.defaultTools;
877
919
  // Copy memoryProvider to the next brain
878
920
  nextBrain.memoryProvider = this.memoryProvider;
921
+ // Copy store schema to the next brain
922
+ nextBrain.storeSchema = this.storeSchema;
879
923
  return nextBrain;
880
924
  }
881
925
  }
@@ -41,7 +41,7 @@ import { brain as coreBrain } from './builder/brain.js';
41
41
  * }));
42
42
  * ```
43
43
  */ export function createBrain(config) {
44
- var services = config.services, components = config.components, defaultTools = config.defaultTools, memory = config.memory;
44
+ var services = config.services, components = config.components, defaultTools = config.defaultTools, memory = config.memory, store = config.store;
45
45
  // Implementation
46
46
  function brain(titleOrConfig, agentConfig) {
47
47
  var base = coreBrain(titleOrConfig);
@@ -54,6 +54,9 @@ import { brain as coreBrain } from './builder/brain.js';
54
54
  if (memory) {
55
55
  base = base.withMemory(memory);
56
56
  }
57
+ if (store) {
58
+ base = base.withStore(store);
59
+ }
57
60
  if (services) {
58
61
  base = base.withServices(services);
59
62
  }
@@ -537,10 +537,16 @@ export var BrainEventStream = /*#__PURE__*/ function() {
537
537
  _define_property(this, "signalProvider", void 0);
538
538
  _define_property(this, "memoryProvider", void 0);
539
539
  _define_property(this, "scopedMemory", void 0);
540
+ _define_property(this, "store", void 0);
541
+ _define_property(this, "governor", void 0);
542
+ _define_property(this, "currentUser", void 0);
540
543
  _define_property(this, "guards", new Map());
541
544
  _define_property(this, "waits", new Map());
542
545
  _define_property(this, "stopped", false);
543
- var blocks = params.blocks, title = params.title, description = params.description, providedBrainRunId = params.brainRunId, _params_options = params.options, options = _params_options === void 0 ? {} : _params_options, client = params.client, services = params.services, _params_resources = params.resources, resources = _params_resources === void 0 ? {} : _params_resources, pages = params.pages, env = params.env, components = params.components, defaultTools = params.defaultTools, signalProvider = params.signalProvider, memoryProvider = params.memoryProvider;
546
+ var blocks = params.blocks, title = params.title, description = params.description, providedBrainRunId = params.brainRunId, _params_options = params.options, options = _params_options === void 0 ? {} : _params_options, client = params.client, services = params.services, _params_resources = params.resources, resources = _params_resources === void 0 ? {} : _params_resources, pages = params.pages, env = params.env, components = params.components, defaultTools = params.defaultTools, signalProvider = params.signalProvider, memoryProvider = params.memoryProvider, store = params.store, currentUser = params.currentUser;
547
+ // Store governor for per-step client resolution
548
+ this.governor = params.governor;
549
+ this.currentUser = currentUser;
544
550
  // Check if this is a resume run or fresh start
545
551
  var resumeParams = params;
546
552
  var initialParams = params;
@@ -558,9 +564,10 @@ export var BrainEventStream = /*#__PURE__*/ function() {
558
564
  this.defaultTools = defaultTools;
559
565
  this.signalProvider = signalProvider;
560
566
  this.memoryProvider = memoryProvider;
567
+ this.store = store;
561
568
  // Create scoped memory if provider is configured
562
569
  if (memoryProvider) {
563
- this.scopedMemory = createScopedMemory(memoryProvider, title);
570
+ this.scopedMemory = createScopedMemory(memoryProvider, title, this.currentUser.id);
564
571
  }
565
572
  // Initialize steps - track guard and wait blocks by index
566
573
  this.steps = [];
@@ -655,7 +662,8 @@ export var BrainEventStream = /*#__PURE__*/ function() {
655
662
  brainDescription: brainDescription,
656
663
  initialState: currentState,
657
664
  options: options,
658
- brainRunId: brainRunId
665
+ brainRunId: brainRunId,
666
+ currentUser: this.currentUser
659
667
  }
660
668
  ];
661
669
  case 2:
@@ -1048,7 +1056,7 @@ export var BrainEventStream = /*#__PURE__*/ function() {
1048
1056
  key: "executeStep",
1049
1057
  value: function executeStep(step) {
1050
1058
  return _wrap_async_generator(function() {
1051
- var block, stepBlock, _this_resumeContext, brainBlock, initialState, innerResumeContext, patches, innerBrainPaused, _this_options, _this_options1, innerRun, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, event, err, _innerResumeContext_state, baseState, innerState, prevState, _, prevState1, stepBlock1, _this_options2, result;
1059
+ var block, stepBlock, _this_resumeContext, brainBlock, initialState, innerResumeContext, patches, innerBrainPaused, _this_options, _this_options1, innerRun, _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, _value, event, err, _innerResumeContext_state, baseState, innerState, prevState, _, prevState1, stepBlock1, stepClient, _this_options2, result;
1052
1060
  return _ts_generator(this, function(_state) {
1053
1061
  switch(_state.label){
1054
1062
  case 0:
@@ -1101,19 +1109,23 @@ export var BrainEventStream = /*#__PURE__*/ function() {
1101
1109
  innerRun = innerResumeContext ? brainBlock.innerBrain.run({
1102
1110
  resources: this.resources,
1103
1111
  client: this.client,
1112
+ currentUser: this.currentUser,
1104
1113
  resumeContext: innerResumeContext,
1105
1114
  options: (_this_options = this.options) !== null && _this_options !== void 0 ? _this_options : {},
1106
1115
  pages: this.pages,
1107
1116
  env: this.env,
1108
- brainRunId: this.brainRunId
1117
+ brainRunId: this.brainRunId,
1118
+ governor: this.governor
1109
1119
  }) : brainBlock.innerBrain.run({
1110
1120
  resources: this.resources,
1111
1121
  client: this.client,
1122
+ currentUser: this.currentUser,
1112
1123
  initialState: initialState,
1113
1124
  options: (_this_options1 = this.options) !== null && _this_options1 !== void 0 ? _this_options1 : {},
1114
1125
  pages: this.pages,
1115
1126
  env: this.env,
1116
- brainRunId: this.brainRunId
1127
+ brainRunId: this.brainRunId,
1128
+ governor: this.governor
1117
1129
  });
1118
1130
  _iteratorAbruptCompletion = false, _didIteratorError = false;
1119
1131
  _state.label = 5;
@@ -1263,18 +1275,23 @@ export var BrainEventStream = /*#__PURE__*/ function() {
1263
1275
  // Get previous state before action
1264
1276
  prevState1 = this.currentState;
1265
1277
  stepBlock1 = block;
1278
+ // Resolve per-step client: if the step has an override, apply governor to it;
1279
+ // otherwise use the default (already-governed) client
1280
+ stepClient = stepBlock1.client ? this.governor ? this.governor(stepBlock1.client) : stepBlock1.client : this.client;
1266
1281
  return [
1267
1282
  4,
1268
1283
  _await_async_generator(Promise.resolve(stepBlock1.action(_object_spread({
1269
1284
  state: this.currentState,
1270
1285
  options: (_this_options2 = this.options) !== null && _this_options2 !== void 0 ? _this_options2 : {},
1271
- client: this.client,
1286
+ client: stepClient,
1272
1287
  resources: this.resources,
1273
1288
  response: this.currentResponse,
1274
1289
  page: this.currentPage,
1275
1290
  pages: this.pages,
1276
1291
  env: this.env,
1277
- memory: this.scopedMemory
1292
+ memory: this.scopedMemory,
1293
+ store: this.store,
1294
+ currentUser: this.currentUser
1278
1295
  }, this.services))))
1279
1296
  ];
1280
1297
  case 23:
@@ -1333,7 +1350,9 @@ export var BrainEventStream = /*#__PURE__*/ function() {
1333
1350
  page: this.currentPage,
1334
1351
  pages: this.pages,
1335
1352
  env: this.env,
1336
- memory: this.scopedMemory
1353
+ memory: this.scopedMemory,
1354
+ store: this.store,
1355
+ currentUser: this.currentUser
1337
1356
  }, this.services)))
1338
1357
  ];
1339
1358
  case 1:
@@ -1945,7 +1964,9 @@ export var BrainEventStream = /*#__PURE__*/ function() {
1945
1964
  components: this.components,
1946
1965
  brainRunId: this.brainRunId,
1947
1966
  stepId: effectiveStepId,
1948
- memory: this.scopedMemory
1967
+ memory: this.scopedMemory,
1968
+ store: this.store,
1969
+ currentUser: this.currentUser
1949
1970
  };
1950
1971
  return [
1951
1972
  4,
@@ -2148,7 +2169,7 @@ export var BrainEventStream = /*#__PURE__*/ function() {
2148
2169
  * Cloudflare backends can restart the DO to reclaim memory.
2149
2170
  */ function executeBatchPrompt(step) {
2150
2171
  return _wrap_async_generator(function() {
2151
- var _this, _this_resumeContext, block, batchConfig, prevState, _batchConfig_client, client, items, totalItems, _batchConfig_concurrency, concurrency, semaphore, batchProgress, _batchProgress_processedCount, startIndex, results, chunkStart, signals, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, signal, _this_options, err, chunkEnd, chunk, chunkResults, i, _this_options1, finalResults;
2172
+ var _this, _this_resumeContext, block, batchConfig, prevState, rawClient, client, items, totalItems, _batchConfig_concurrency, concurrency, semaphore, batchProgress, _batchProgress_processedCount, startIndex, results, chunkStart, signals, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, signal, _this_options, err, chunkEnd, chunk, chunkResults, i, _this_options1, finalResults;
2152
2173
  return _ts_generator(this, function(_state) {
2153
2174
  switch(_state.label){
2154
2175
  case 0:
@@ -2156,7 +2177,8 @@ export var BrainEventStream = /*#__PURE__*/ function() {
2156
2177
  block = step.block;
2157
2178
  batchConfig = block.batchConfig;
2158
2179
  prevState = this.currentState;
2159
- client = (_batchConfig_client = batchConfig.client) !== null && _batchConfig_client !== void 0 ? _batchConfig_client : this.client;
2180
+ rawClient = batchConfig.client;
2181
+ client = rawClient ? this.governor ? this.governor(rawClient) : rawClient : this.client;
2160
2182
  items = batchConfig.over(this.currentState);
2161
2183
  totalItems = items.length;
2162
2184
  concurrency = (_batchConfig_concurrency = batchConfig.concurrency) !== null && _batchConfig_concurrency !== void 0 ? _batchConfig_concurrency : 10;
@@ -2273,7 +2295,7 @@ export var BrainEventStream = /*#__PURE__*/ function() {
2273
2295
  4,
2274
2296
  _await_async_generator(Promise.all(chunk.map(function(item) {
2275
2297
  return _async_to_generator(function() {
2276
- var release, promptText, output, error, fallback;
2298
+ var release, promptText, result, error, fallback;
2277
2299
  return _ts_generator(this, function(_state) {
2278
2300
  switch(_state.label){
2279
2301
  case 0:
@@ -2306,12 +2328,12 @@ export var BrainEventStream = /*#__PURE__*/ function() {
2306
2328
  })
2307
2329
  ];
2308
2330
  case 4:
2309
- output = _state.sent();
2331
+ result = _state.sent();
2310
2332
  return [
2311
2333
  2,
2312
2334
  [
2313
2335
  item,
2314
- output
2336
+ result.object
2315
2337
  ]
2316
2338
  ];
2317
2339
  case 5:
@@ -2544,7 +2566,9 @@ export var BrainEventStream = /*#__PURE__*/ function() {
2544
2566
  resources: this.resources,
2545
2567
  page: this.currentPage,
2546
2568
  pages: this.pages,
2547
- env: this.env
2569
+ env: this.env,
2570
+ store: this.store,
2571
+ currentUser: this.currentUser
2548
2572
  }, this.services)))
2549
2573
  ];
2550
2574
  case 3:
@@ -119,24 +119,25 @@ function _ts_generator(thisArg, body) {
119
119
  }
120
120
  }
121
121
  /**
122
- * Creates a scoped memory instance with the agentId pre-bound.
122
+ * Creates a scoped memory instance with agentId and userId pre-bound.
123
123
  *
124
124
  * This wraps a MemoryProvider and automatically includes the agentId
125
- * in all calls, so brain steps don't need to pass it explicitly.
125
+ * and userId in all calls, so brain steps don't need to pass them explicitly.
126
126
  *
127
127
  * @param provider - The underlying memory provider
128
128
  * @param agentId - The agent/brain ID to scope memories to
129
+ * @param userId - The user ID to scope memories to (from currentUser.id)
129
130
  * @returns A ScopedMemory instance
130
131
  *
131
132
  * @example
132
133
  * ```typescript
133
134
  * const provider = createMem0Provider({ apiKey: '...' });
134
- * const scopedMemory = createScopedMemory(provider, 'my-brain');
135
+ * const scopedMemory = createScopedMemory(provider, 'my-brain', 'user-123');
135
136
  *
136
- * // Now search without passing agentId
137
+ * // Now search without passing agentId or userId
137
138
  * const memories = await scopedMemory.search('user preferences');
138
139
  * ```
139
- */ export function createScopedMemory(provider, agentId) {
140
+ */ export function createScopedMemory(provider, agentId, userId) {
140
141
  return {
141
142
  search: function search(query, options) {
142
143
  return _async_to_generator(function() {
@@ -144,7 +145,7 @@ function _ts_generator(thisArg, body) {
144
145
  return _ts_generator(this, function(_state) {
145
146
  scope = {
146
147
  agentId: agentId,
147
- userId: options === null || options === void 0 ? void 0 : options.userId
148
+ userId: userId
148
149
  };
149
150
  return [
150
151
  2,
@@ -161,7 +162,7 @@ function _ts_generator(thisArg, body) {
161
162
  return _ts_generator(this, function(_state) {
162
163
  scope = {
163
164
  agentId: agentId,
164
- userId: options === null || options === void 0 ? void 0 : options.userId
165
+ userId: userId
165
166
  };
166
167
  return [
167
168
  2,
@@ -7,6 +7,6 @@
7
7
  */ /**
8
8
  * A single memory entry returned from search operations.
9
9
  */ /**
10
- * Scoped memory interface with agentId pre-bound.
11
- * This is what brain steps receive - they don't need to pass agentId.
10
+ * Scoped memory interface with agentId and userId pre-bound.
11
+ * This is what brain steps receive - they don't need to pass agentId or userId.
12
12
  */ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Conditional type that adds `store` to step params only when withStore() is used.
3
+ * When TStore is `never` (default), this resolves to `{}` — no store in params.
4
+ * When TStore is a record type, this adds `{ store: Store<TStore> }`.
5
+ */ export { };
@@ -47,6 +47,12 @@ export type ResponseMessage = unknown;
47
47
  * and potentially other types of content in the future.
48
48
  */
49
49
  export interface ObjectGenerator {
50
+ /** SHA-256 hash of `model:apiKey`, used for rate-limit bucket identification. */
51
+ identity?: string;
52
+ /** The model identifier string (e.g. 'gemini-3-pro-preview'). */
53
+ modelId?: string;
54
+ /** The API key used by this client, for rate-limit bucket identification. */
55
+ apiKey?: string;
50
56
  /**
51
57
  * Generates a structured JSON object that conforms to the provided Zod schema.
52
58
  *
@@ -81,7 +87,13 @@ export interface ObjectGenerator {
81
87
  * prepend this as a `system` role message to the full message list.
82
88
  */
83
89
  system?: string;
84
- }): Promise<z.infer<T>>;
90
+ }): Promise<{
91
+ object: z.infer<T>;
92
+ usage?: {
93
+ totalTokens: number;
94
+ };
95
+ responseHeaders?: Record<string, string>;
96
+ }>;
85
97
  /**
86
98
  * Creates a tool result message in the SDK-native format.
87
99
  * Use this to append tool results to responseMessages before the next generateText call.
@@ -135,6 +147,8 @@ export interface ObjectGenerator {
135
147
  * Pass these back in the next call via responseMessages parameter.
136
148
  */
137
149
  responseMessages: ResponseMessage[];
150
+ /** Raw response headers from the provider, used for rate limit tracking. */
151
+ responseHeaders?: Record<string, string>;
138
152
  }>;
139
153
  /**
140
154
  * Generates text with multi-step tool calling support.
@@ -185,6 +199,8 @@ export interface ObjectGenerator {
185
199
  usage: {
186
200
  totalTokens: number;
187
201
  };
202
+ /** Raw response headers from the provider, used for rate limit tracking. */
203
+ responseHeaders?: Record<string, string>;
188
204
  }>;
189
205
  }
190
206
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/clients/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/clients/types.ts"],"names":[],"mappings":"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"}