@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.
- package/dist/src/dsl/brain-runner.js +34 -9
- package/dist/src/dsl/builder/brain.js +60 -16
- package/dist/src/dsl/create-brain.js +4 -1
- package/dist/src/dsl/execution/event-stream.js +40 -16
- package/dist/src/memory/scoped-memory.js +8 -7
- package/dist/src/memory/types.js +2 -2
- package/dist/src/store/index.js +1 -0
- package/dist/src/store/types.js +5 -0
- package/dist/types/clients/types.d.ts +17 -1
- package/dist/types/clients/types.d.ts.map +1 -1
- package/dist/types/dsl/brain-runner.d.ts +9 -2
- package/dist/types/dsl/brain-runner.d.ts.map +1 -1
- package/dist/types/dsl/builder/brain.d.ts +46 -21
- package/dist/types/dsl/builder/brain.d.ts.map +1 -1
- package/dist/types/dsl/create-brain.d.ts +7 -4
- package/dist/types/dsl/create-brain.d.ts.map +1 -1
- package/dist/types/dsl/definitions/blocks.d.ts +2 -0
- package/dist/types/dsl/definitions/blocks.d.ts.map +1 -1
- package/dist/types/dsl/definitions/events.d.ts +2 -1
- package/dist/types/dsl/definitions/events.d.ts.map +1 -1
- package/dist/types/dsl/definitions/run-params.d.ts +5 -1
- package/dist/types/dsl/definitions/run-params.d.ts.map +1 -1
- package/dist/types/dsl/example-webhook.d.ts +1 -1
- package/dist/types/dsl/example-webhook.d.ts.map +1 -1
- package/dist/types/dsl/execution/event-stream.d.ts +5 -0
- package/dist/types/dsl/execution/event-stream.d.ts.map +1 -1
- package/dist/types/dsl/types.d.ts +7 -0
- package/dist/types/dsl/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/memory/scoped-memory.d.ts +6 -5
- package/dist/types/memory/scoped-memory.d.ts.map +1 -1
- package/dist/types/memory/types.d.ts +4 -8
- package/dist/types/memory/types.d.ts.map +1 -1
- package/dist/types/store/index.d.ts +2 -0
- package/dist/types/store/index.d.ts.map +1 -0
- package/dist/types/store/types.d.ts +51 -0
- package/dist/types/store/types.d.ts.map +1 -0
- 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
|
|
402
|
+
var _options_initialState, initialState, brainOptions, brainRunId, endAfter, signal, currentUser;
|
|
387
403
|
return _ts_generator(this, function(_state) {
|
|
388
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
670
|
+
var state = param.state, client = param.client, resources = param.resources;
|
|
633
671
|
return _async_to_generator(function() {
|
|
634
|
-
var
|
|
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
|
-
|
|
691
|
+
result = _state.sent();
|
|
656
692
|
return [
|
|
657
693
|
2,
|
|
658
694
|
{
|
|
659
695
|
state: state,
|
|
660
|
-
promptResponse:
|
|
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,
|
|
744
|
+
var state = param.state, client = param.client, resources = param.resources;
|
|
708
745
|
return _async_to_generator(function() {
|
|
709
|
-
var
|
|
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
|
-
|
|
766
|
+
result = _state.sent();
|
|
732
767
|
return [
|
|
733
768
|
2,
|
|
734
|
-
_object_spread_props(_object_spread({}, state), _define_property({}, outputSchema.name,
|
|
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:
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
2331
|
+
result = _state.sent();
|
|
2310
2332
|
return [
|
|
2311
2333
|
2,
|
|
2312
2334
|
[
|
|
2313
2335
|
item,
|
|
2314
|
-
|
|
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
|
|
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
|
|
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:
|
|
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:
|
|
165
|
+
userId: userId
|
|
165
166
|
};
|
|
166
167
|
return [
|
|
167
168
|
2,
|
package/dist/src/memory/types.js
CHANGED
|
@@ -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 { };
|
|
@@ -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<
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC;AAEtC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE;QAC/C;;;WAGG;QACH,MAAM,EAAE,CAAC,CAAC;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAE3B;;;;;WAKG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB;;;;;WAKG;QACH,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QAErB;;;;WAIG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/clients/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAEtD;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,OAAO,CAAC;AAEtC;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE;QAC/C;;;WAGG;QACH,MAAM,EAAE,CAAC,CAAC;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAE3B;;;;;WAKG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAEhB;;;;;WAKG;QACH,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QAErB;;;;WAIG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC;QACV,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,CAAC,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;QAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1C,CAAC,CAAC;IAEH;;;OAGG;IACH,uBAAuB,CAAC,CACtB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,GACd,eAAe,CAAC;IAEnB;;;OAGG;IACH,YAAY,CAAC,CAAC,MAAM,EAAE;QACpB,gCAAgC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;WAEG;QACH,QAAQ,EAAE,WAAW,EAAE,CAAC;QACxB;;;;WAIG;QACH,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;QACrC,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,CAAC,CAAC,SAAS,CAAA;SAAE,CAAC,CAAC;QACzE;;;;;;WAMG;QACH,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,GAAG,OAAO,CAAC;QACV,iCAAiC;QACjC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,iCAAiC;QACjC,SAAS,CAAC,EAAE,KAAK,CAAC;YAChB,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC;SACf,CAAC,CAAC;QACH,8BAA8B;QAC9B,KAAK,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/B;;;WAGG;QACH,gBAAgB,EAAE,eAAe,EAAE,CAAC;QACpC,4EAA4E;QAC5E,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1C,CAAC,CAAC;IAEH;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,MAAM,EAAE;QACjB,gCAAgC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,0BAA0B;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,oDAAoD;QACpD,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;QACzB,0CAA0C;QAC1C,KAAK,EAAE,MAAM,CACX,MAAM,EACN;YACE,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,EAAE,CAAC,CAAC,SAAS,CAAC;YACzB,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;SACzD,CACF,CAAC;QACF,qDAAqD;QACrD,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;;;;WAMG;QACH,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB,GAAG,OAAO,CAAC;QACV,+DAA+D;QAC/D,SAAS,EAAE,KAAK,CAAC;YACf,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,MAAM,CAAC;YACjB,IAAI,EAAE,OAAO,CAAC;YACd,MAAM,EAAE,OAAO,CAAC;SACjB,CAAC,CAAC;QACH,mCAAmC;QACnC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,mCAAmC;QACnC,KAAK,EAAE;YAAE,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/B,4EAA4E;QAC5E,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC1C,CAAC,CAAC;CACJ"}
|