@xyo-network/sdk 7.0.11 → 7.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelIntervalAutomationWrapper.d.ts","sourceRoot":"","sources":["../../../../src/modules/sentinel-memory/SentinelIntervalAutomationWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAA;AAExE,qBAAa,iCAAiC,CAC5C,CAAC,SAAS,iCAAiC,GAAG,iCAAiC,CAC/E,SAAQ,cAAc,CAAC,CAAC,CAAC;gBACb,OAAO,EAAE,CAAC;IAItB,SAAS,KAAK,eAAe,IAAI,MAAM,CAwBtC;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,IAAI,IAAI,IAAI;IAWZ,SAAS,CAAC,QAAQ,IAAI,IAAI;IAM1B,SAAS,CAAC,gBAAgB,CAAC,KAAK,SAAI,GAAG,IAAI;IAM3C;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGxC"}
1
+ {"version":3,"file":"SentinelIntervalAutomationWrapper.d.ts","sourceRoot":"","sources":["../../../../src/modules/sentinel-memory/SentinelIntervalAutomationWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAA;AAExE,qBAAa,iCAAiC,CAC5C,CAAC,SAAS,iCAAiC,GAAG,iCAAiC,CAC/E,SAAQ,cAAc,CAAC,CAAC,CAAC;gBACb,OAAO,EAAE,CAAC;IAItB,SAAS,KAAK,eAAe,IAAI,MAAM,CAwBtC;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,IAAI,IAAI,IAAI;IAWZ,SAAS,CAAC,QAAQ,IAAI,IAAI;IAM1B,SAAS,CAAC,gBAAgB,CAAC,KAAK,SAAI,GAAG,IAAI;IAU3C;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelRunner.d.ts","sourceRoot":"","sources":["../../../../src/modules/sentinel-memory/SentinelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EACK,IAAI,EAEf,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAA;AAKxB,MAAM,MAAM,6BAA6B,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AAEvE,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACzC,eAAe,CAAC,EAAE,6BAA6B,CAAA;IAC/C,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,qBAAa,cAAe,SAAQ,IAAI;IACtC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAK;IACtE,SAAS,CAAC,eAAe,EAAE,6BAA6B,GAAG,SAAS,CAAA;IACpE,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACpC,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,MAAM,GAAG,MAAM,CAAA;gBAEzD,MAAM,EAAE,oBAAoB;IAQxC,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAE3D;IAED,OAAO,KAAK,IAAI,GAOf;IAEK,GAAG,CAAC,UAAU,EAAE,yBAAyB,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAOtF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,SAAS;IAInE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI;IAK1C,SAAS,IAAI,IAAI;IAKjB,OAAO,IAAI,IAAI;IAKf,KAAK,IAAI,IAAI;IAIb,YAAY,IAAI,IAAI;IA6BpB,IAAI,IAAI,IAAI;IAON,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAMlF,OAAO;CAUtB"}
1
+ {"version":3,"file":"SentinelRunner.d.ts","sourceRoot":"","sources":["../../../../src/modules/sentinel-memory/SentinelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EACK,IAAI,EAEf,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAA;AAKxB,MAAM,MAAM,6BAA6B,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AAEvE,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACzC,eAAe,CAAC,EAAE,6BAA6B,CAAA;IAC/C,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,qBAAa,cAAe,SAAQ,IAAI;IACtC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAK;IACtE,SAAS,CAAC,eAAe,EAAE,6BAA6B,GAAG,SAAS,CAAA;IACpE,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACpC,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,MAAM,GAAG,MAAM,CAAA;gBAEzD,MAAM,EAAE,oBAAoB;IAQxC,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAE3D;IAED,OAAO,KAAK,IAAI,GAOf;IAEK,GAAG,CAAC,UAAU,EAAE,yBAAyB,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAOtF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,SAAS;IAInE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI;IAK1C,SAAS,IAAI,IAAI;IAKjB,OAAO,IAAI,IAAI;IAKf,KAAK,IAAI,IAAI;IAIb,YAAY,IAAI,IAAI;IAkCpB,IAAI,IAAI,IAAI;IAON,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAMlF,OAAO;CAUtB"}
@@ -69,6 +69,7 @@ var SentinelIntervalAutomationWrapper = class extends PayloadWrapper {
69
69
  }
70
70
  }
71
71
  consumeRemaining(count = 1) {
72
+ if (this.payload.remaining === void 0) return;
72
73
  const remaining = Math.max(this.remaining - count, 0);
73
74
  this.setRemaining(remaining);
74
75
  if (remaining <= 0) this.setStart(Number.POSITIVE_INFINITY);
@@ -159,6 +160,8 @@ var SentinelRunner = class extends Base {
159
160
  }, { tracer: this.tracer });
160
161
  }, delay);
161
162
  }
163
+ } else if (isDefined(automation) && automation.type === "interval" && automation.start !== Number.POSITIVE_INFINITY) {
164
+ this.logger?.warn(`Unschedulable interval automation; runner stopped [${JSON.stringify(automation)}]`);
162
165
  }
163
166
  }
164
167
  stop() {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/modules/sentinel-memory/MemorySentinel.ts", "../../src/modules/sentinel-memory/SentinelRunner.ts", "../../src/modules/sentinel-memory/SentinelIntervalAutomationWrapper.ts"],
4
- "sourcesContent": ["import { fulfilled, rejected } from '@ariestools/sdk'\nimport type {\n Payload, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\n\nimport { asDivinerInstance } from '#diviner-model'\nimport { type AnyConfigSchema, type ModuleIdentifier } from '#module-model'\nimport { AbstractSentinel } from '#sentinel-abstract'\nimport type {\n ResolvedTask,\n SentinelConfig,\n SentinelInstance,\n SentinelModuleEventData,\n SentinelParams,\n} from '#sentinel-model'\nimport {\n asSentinelInstance,\n SentinelConfigSchema,\n} from '#sentinel-model'\nimport { asWitnessInstance } from '#witness-model'\n\nimport { SentinelRunner } from './SentinelRunner.ts'\n\nexport type MemorySentinelParams<TConfig extends AnyConfigSchema<SentinelConfig> = AnyConfigSchema<SentinelConfig>> = SentinelParams<TConfig>\n\nexport class MemorySentinel<\n TParams extends MemorySentinelParams = MemorySentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n> extends AbstractSentinel<TParams, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n\n private runner?: SentinelRunner\n\n async reportHandler(inPayloads: Payload[] = []): Promise<Payload[]> {\n await this.startedAsync('throw')\n this.logger?.debug(`reportHandler:in: ${JSON.stringify(inPayloads)}`)\n const job = await this.jobPromise\n\n let index = 0\n let previousResults: Record<XyoAddress, Payload[]> = {}\n while (index < job.tasks.length) {\n const generatedPayloads = await this.runJob(job.tasks[index], previousResults, inPayloads)\n previousResults = generatedPayloads\n index++\n }\n const result = Object.values(previousResults).flat()\n this.logger?.debug(`reportHandler:out: ${JSON.stringify(result)}`)\n return result\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n if ((this.config.automations?.length ?? 0) > 0) {\n this.runner = new SentinelRunner({\n sentinel: this, automations: this.config.automations, traceProvider: this.params.traceProvider,\n })\n this.runner.start()\n }\n }\n\n override async stopHandler(): Promise<void> {\n if (this.runner) {\n this.runner.stop()\n this.runner = undefined\n }\n await super.stopHandler()\n }\n\n private async inputAddresses(input: ModuleIdentifier | ModuleIdentifier[]): Promise<XyoAddress[]> {\n if (Array.isArray(input)) {\n return (await Promise.all(input.map(async inputItem => await this.inputAddresses(inputItem)))).flat()\n } else {\n const resolved = await this.resolve(input)\n return resolved ? [resolved.address] : []\n }\n }\n\n private processPreviousResults(payloads: Record<string, Payload[]>, inputs: string[]) {\n return inputs.flatMap(input => payloads[input] ?? [])\n }\n\n private async runJob(\n tasks: ResolvedTask[],\n previousResults: Record<XyoAddress, Payload[]>,\n inPayloads?: Payload[],\n ): Promise<Record<XyoAddress, Payload[]>> {\n await this.emit('jobStart', { inPayloads, mod: this })\n this.logger?.debug(`runJob:tasks: ${JSON.stringify(tasks.length)}`)\n this.logger?.debug(`runJob:previous: ${JSON.stringify(previousResults)}`)\n this.logger?.debug(`runJob:in: ${JSON.stringify(inPayloads)}`)\n const results: PromiseSettledResult<[XyoAddress, Payload[]]>[] = await Promise.allSettled(\n tasks?.map(async (task) => {\n const input = task.input ?? false\n const inPayloadsFound\n = input === true\n ? inPayloads\n : input === false\n ? []\n : this.processPreviousResults(previousResults, await this.inputAddresses(input))\n const witness = asWitnessInstance(task.mod)\n if (witness) {\n await this.emit('taskStart', {\n address: witness.address, inPayloads: inPayloadsFound, mod: this,\n })\n const observed = await witness.observe(inPayloadsFound)\n this.logger?.debug(`observed [${witness.id}]: ${JSON.stringify(observed)}`)\n await this.emit('taskEnd', {\n address: witness.address, inPayloads: inPayloadsFound, mod: this, outPayloads: observed,\n })\n return [witness.address, observed]\n }\n const diviner = asDivinerInstance(task.mod)\n if (diviner) {\n await this.emit('taskStart', {\n address: diviner.address, inPayloads: inPayloadsFound, mod: this,\n })\n const divined = await diviner.divine(inPayloadsFound)\n this.logger?.debug(`divined [${diviner.id}]: ${JSON.stringify(divined)}`)\n await this.emit('taskEnd', {\n address: diviner.address, inPayloads: inPayloadsFound, mod: this, outPayloads: divined,\n })\n return [diviner.address, divined]\n }\n const sentinel = asSentinelInstance(task.mod)\n if (sentinel) {\n await this.emit('taskStart', {\n address: sentinel.address, inPayloads: inPayloadsFound, mod: this,\n })\n const reported = await sentinel.report(inPayloadsFound)\n this.logger?.debug(`reported [${sentinel.id}]: ${JSON.stringify(reported)}`)\n await this.emit('taskEnd', {\n address: sentinel.address, inPayloads: inPayloadsFound, mod: this, outPayloads: reported,\n })\n return [sentinel.address, reported]\n }\n throw new Error('Unsupported module type')\n }),\n )\n const finalResult: Record<XyoAddress, Payload[]> = {}\n for (const result of results.filter(fulfilled)) {\n const [address, payloads] = result.value\n finalResult[address] = finalResult[address] ?? []\n finalResult[address].push(...payloads)\n }\n if (this.throwErrors) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n const errors = results.filter(rejected).map(result => result.reason)\n if (errors.length > 0) {\n throw new Error('At least one module failed')\n }\n }\n this.logger?.debug(`generateResults:out: ${JSON.stringify(finalResult)}`)\n await this.emit('jobEnd', {\n finalResult, inPayloads, mod: this,\n })\n return finalResult\n }\n}\n", "import type { BaseParams, BrandedHash } from '@ariestools/sdk'\nimport {\n assertEx, Base, forget,\n isDefined, spanRootAsync,\n} from '@ariestools/sdk'\nimport type { Payload } from '@xyo-network/sdk-protocol'\nimport { PayloadBuilder } from '@xyo-network/sdk-protocol'\n\nimport type {\n SentinelAutomationPayload,\n SentinelInstance,\n SentinelIntervalAutomationPayload,\n} from '#sentinel-model'\nimport { isSentinelIntervalAutomation } from '#sentinel-model'\n\nimport { SentinelIntervalAutomationWrapper } from './SentinelIntervalAutomationWrapper.ts'\n\nexport type OnSentinelRunnerTriggerResult = (result: Payload[]) => void\n\nexport interface SentinelRunnerParams extends BaseParams {\n automations?: SentinelAutomationPayload[]\n onTriggerResult?: OnSentinelRunnerTriggerResult\n sentinel: SentinelInstance\n}\n\nexport class SentinelRunner extends Base {\n protected _automations: Record<string, SentinelAutomationPayload> = {}\n protected onTriggerResult: OnSentinelRunnerTriggerResult | undefined\n protected sentinel: SentinelInstance\n protected timeoutId?: ReturnType<typeof setTimeout> | string | number\n\n constructor(params: SentinelRunnerParams) {\n super(params)\n this.sentinel = params.sentinel\n this.onTriggerResult = params.onTriggerResult\n\n if (params.automations) for (const automation of params.automations) forget(this.add(automation))\n }\n\n get automations(): Record<string, SentinelAutomationPayload> {\n return this._automations\n }\n\n private get next() {\n return Object.values(this._automations).reduce<SentinelAutomationPayload | undefined>((previous, current) => {\n if (isSentinelIntervalAutomation(current) && isSentinelIntervalAutomation(previous)) {\n return (current.start ?? Number.POSITIVE_INFINITY) < (previous?.start ?? Number.POSITIVE_INFINITY) ? current : previous\n }\n return current\n }, undefined)\n }\n\n async add(automation: SentinelAutomationPayload, restart = true): Promise<BrandedHash> {\n const hash = await PayloadBuilder.dataHash(automation)\n this._automations[hash] = automation\n if (restart) this.restart()\n return hash\n }\n\n find(hash: string): [string, SentinelAutomationPayload] | undefined {\n return Object.entries(this._automations).find(([key]) => key === hash)\n }\n\n remove(hash: string, restart = true): void {\n delete this._automations[hash]\n if (restart) this.restart()\n }\n\n removeAll(): void {\n this.stop()\n this._automations = {}\n }\n\n restart(): void {\n this.stop()\n this.start()\n }\n\n start(): void {\n this.startHandler()\n }\n\n startHandler(): void {\n assertEx(this.timeoutId === undefined, () => 'Already started')\n const automation = this.next\n if (isSentinelIntervalAutomation(automation)) {\n const now = Date.now()\n const start = Math.max(automation.start ?? now, now)\n const delay = Math.max(start - now, 0)\n if (delay < Number.POSITIVE_INFINITY) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.timeoutId = setTimeout(async () => {\n this.timeoutId = undefined\n return await spanRootAsync('start.setTimeout', async () => {\n try {\n // Run the automation\n await this.trigger(automation)\n this.stop()\n } catch (ex) {\n this.logger?.error('Error running automation', { error: ex })\n this.stop()\n } finally {\n // No matter what start the next automation\n this.start()\n }\n }, { tracer: this.tracer })\n }, delay)\n }\n }\n }\n\n stop(): void {\n if (isDefined(this.timeoutId)) {\n clearTimeout(this.timeoutId)\n this.timeoutId = undefined\n }\n }\n\n async update(hash: string, automation: SentinelAutomationPayload, restart = true): Promise<void> {\n this.remove(hash, false)\n await this.add(automation, false)\n if (restart) this.restart()\n }\n\n private async trigger(automation: SentinelIntervalAutomationPayload) {\n return await spanRootAsync('trigger', async () => {\n const wrapper = new SentinelIntervalAutomationWrapper(automation)\n this.remove(await wrapper.dataHash(), false)\n wrapper.next()\n await this.add(wrapper.payload, false)\n const triggerResult = await this.sentinel.report()\n this.onTriggerResult?.(triggerResult)\n }, { tracer: this.tracer })\n }\n}\n", "import { PayloadWrapper } from '@xyo-network/sdk-protocol'\n\nimport type { SentinelIntervalAutomationPayload } from '#sentinel-model'\n\nexport class SentinelIntervalAutomationWrapper<\n T extends SentinelIntervalAutomationPayload = SentinelIntervalAutomationPayload,\n> extends PayloadWrapper<T> {\n constructor(payload: T) {\n super(payload)\n }\n\n protected get frequencyMillis(): number {\n const frequency = this.payload.frequency\n if (frequency === undefined) return Number.POSITIVE_INFINITY\n const frequencyUnits = this.payload.frequencyUnits\n switch (frequencyUnits ?? 'hour') {\n case 'millis': {\n return frequency\n }\n case 'second': {\n return frequency * 1000\n }\n case 'minute': {\n return frequency * 60 * 1000\n }\n case 'hour': {\n return frequency * 60 * 60 * 1000\n }\n case 'day': {\n return frequency * 24 * 60 * 60 * 1000\n }\n default: {\n return Number.POSITIVE_INFINITY\n }\n }\n }\n\n protected get remaining(): number {\n return this.payload.remaining ?? Number.POSITIVE_INFINITY\n }\n\n next(): this {\n const now = Date.now()\n const previousStart = this.payload?.start ?? now\n const start = Math.max(previousStart, now)\n const nextStart = start + this.frequencyMillis\n this.setStart(nextStart)\n this.consumeRemaining()\n this.checkEnd()\n return this\n }\n\n protected checkEnd(): void {\n if ((this.payload.start ?? 0) > (this.payload.end ?? Number.POSITIVE_INFINITY)) {\n this.setStart(Number.POSITIVE_INFINITY)\n }\n }\n\n protected consumeRemaining(count = 1): void {\n const remaining = Math.max(this.remaining - count, 0)\n this.setRemaining(remaining)\n if (remaining <= 0) this.setStart(Number.POSITIVE_INFINITY)\n }\n\n /**\n * Sets the remaining of the wrapped automation\n * @param remaining The remaining time in milliseconds\n */\n protected setRemaining(remaining: number): void {\n this.payload.remaining = remaining\n }\n\n /**\n * Sets the start of the wrapped automation\n * @param start The start time in milliseconds\n */\n protected setStart(start: number): void {\n this.payload.start = start\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { fulfilled, rejected } from '@ariestools/sdk'\nimport type {\n Payload, Schema, XyoAddress,\n} from '@xyo-network/sdk-protocol'\n\nimport { asDivinerInstance } from '#diviner-model'\nimport { type AnyConfigSchema, type ModuleIdentifier } from '#module-model'\nimport { AbstractSentinel } from '#sentinel-abstract'\nimport type {\n ResolvedTask,\n SentinelConfig,\n SentinelInstance,\n SentinelModuleEventData,\n SentinelParams,\n} from '#sentinel-model'\nimport {\n asSentinelInstance,\n SentinelConfigSchema,\n} from '#sentinel-model'\nimport { asWitnessInstance } from '#witness-model'\n\nimport { SentinelRunner } from './SentinelRunner.ts'\n\nexport type MemorySentinelParams<TConfig extends AnyConfigSchema<SentinelConfig> = AnyConfigSchema<SentinelConfig>> = SentinelParams<TConfig>\n\nexport class MemorySentinel<\n TParams extends MemorySentinelParams = MemorySentinelParams,\n TEventData extends SentinelModuleEventData<SentinelInstance<TParams>> = SentinelModuleEventData<SentinelInstance<TParams>>,\n> extends AbstractSentinel<TParams, TEventData> {\n static override readonly configSchemas: Schema[] = [...super.configSchemas, SentinelConfigSchema]\n static override readonly defaultConfigSchema: Schema = SentinelConfigSchema\n\n private runner?: SentinelRunner\n\n async reportHandler(inPayloads: Payload[] = []): Promise<Payload[]> {\n await this.startedAsync('throw')\n this.logger?.debug(`reportHandler:in: ${JSON.stringify(inPayloads)}`)\n const job = await this.jobPromise\n\n let index = 0\n let previousResults: Record<XyoAddress, Payload[]> = {}\n while (index < job.tasks.length) {\n const generatedPayloads = await this.runJob(job.tasks[index], previousResults, inPayloads)\n previousResults = generatedPayloads\n index++\n }\n const result = Object.values(previousResults).flat()\n this.logger?.debug(`reportHandler:out: ${JSON.stringify(result)}`)\n return result\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n if ((this.config.automations?.length ?? 0) > 0) {\n this.runner = new SentinelRunner({\n sentinel: this, automations: this.config.automations, traceProvider: this.params.traceProvider,\n })\n this.runner.start()\n }\n }\n\n override async stopHandler(): Promise<void> {\n if (this.runner) {\n this.runner.stop()\n this.runner = undefined\n }\n await super.stopHandler()\n }\n\n private async inputAddresses(input: ModuleIdentifier | ModuleIdentifier[]): Promise<XyoAddress[]> {\n if (Array.isArray(input)) {\n return (await Promise.all(input.map(async inputItem => await this.inputAddresses(inputItem)))).flat()\n } else {\n const resolved = await this.resolve(input)\n return resolved ? [resolved.address] : []\n }\n }\n\n private processPreviousResults(payloads: Record<string, Payload[]>, inputs: string[]) {\n return inputs.flatMap(input => payloads[input] ?? [])\n }\n\n private async runJob(\n tasks: ResolvedTask[],\n previousResults: Record<XyoAddress, Payload[]>,\n inPayloads?: Payload[],\n ): Promise<Record<XyoAddress, Payload[]>> {\n await this.emit('jobStart', { inPayloads, mod: this })\n this.logger?.debug(`runJob:tasks: ${JSON.stringify(tasks.length)}`)\n this.logger?.debug(`runJob:previous: ${JSON.stringify(previousResults)}`)\n this.logger?.debug(`runJob:in: ${JSON.stringify(inPayloads)}`)\n const results: PromiseSettledResult<[XyoAddress, Payload[]]>[] = await Promise.allSettled(\n tasks?.map(async (task) => {\n const input = task.input ?? false\n const inPayloadsFound\n = input === true\n ? inPayloads\n : input === false\n ? []\n : this.processPreviousResults(previousResults, await this.inputAddresses(input))\n const witness = asWitnessInstance(task.mod)\n if (witness) {\n await this.emit('taskStart', {\n address: witness.address, inPayloads: inPayloadsFound, mod: this,\n })\n const observed = await witness.observe(inPayloadsFound)\n this.logger?.debug(`observed [${witness.id}]: ${JSON.stringify(observed)}`)\n await this.emit('taskEnd', {\n address: witness.address, inPayloads: inPayloadsFound, mod: this, outPayloads: observed,\n })\n return [witness.address, observed]\n }\n const diviner = asDivinerInstance(task.mod)\n if (diviner) {\n await this.emit('taskStart', {\n address: diviner.address, inPayloads: inPayloadsFound, mod: this,\n })\n const divined = await diviner.divine(inPayloadsFound)\n this.logger?.debug(`divined [${diviner.id}]: ${JSON.stringify(divined)}`)\n await this.emit('taskEnd', {\n address: diviner.address, inPayloads: inPayloadsFound, mod: this, outPayloads: divined,\n })\n return [diviner.address, divined]\n }\n const sentinel = asSentinelInstance(task.mod)\n if (sentinel) {\n await this.emit('taskStart', {\n address: sentinel.address, inPayloads: inPayloadsFound, mod: this,\n })\n const reported = await sentinel.report(inPayloadsFound)\n this.logger?.debug(`reported [${sentinel.id}]: ${JSON.stringify(reported)}`)\n await this.emit('taskEnd', {\n address: sentinel.address, inPayloads: inPayloadsFound, mod: this, outPayloads: reported,\n })\n return [sentinel.address, reported]\n }\n throw new Error('Unsupported module type')\n }),\n )\n const finalResult: Record<XyoAddress, Payload[]> = {}\n for (const result of results.filter(fulfilled)) {\n const [address, payloads] = result.value\n finalResult[address] = finalResult[address] ?? []\n finalResult[address].push(...payloads)\n }\n if (this.throwErrors) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n const errors = results.filter(rejected).map(result => result.reason)\n if (errors.length > 0) {\n throw new Error('At least one module failed')\n }\n }\n this.logger?.debug(`generateResults:out: ${JSON.stringify(finalResult)}`)\n await this.emit('jobEnd', {\n finalResult, inPayloads, mod: this,\n })\n return finalResult\n }\n}\n", "import type { BaseParams, BrandedHash } from '@ariestools/sdk'\nimport {\n assertEx, Base, forget,\n isDefined, spanRootAsync,\n} from '@ariestools/sdk'\nimport type { Payload } from '@xyo-network/sdk-protocol'\nimport { PayloadBuilder } from '@xyo-network/sdk-protocol'\n\nimport type {\n SentinelAutomationPayload,\n SentinelInstance,\n SentinelIntervalAutomationPayload,\n} from '#sentinel-model'\nimport { isSentinelIntervalAutomation } from '#sentinel-model'\n\nimport { SentinelIntervalAutomationWrapper } from './SentinelIntervalAutomationWrapper.ts'\n\nexport type OnSentinelRunnerTriggerResult = (result: Payload[]) => void\n\nexport interface SentinelRunnerParams extends BaseParams {\n automations?: SentinelAutomationPayload[]\n onTriggerResult?: OnSentinelRunnerTriggerResult\n sentinel: SentinelInstance\n}\n\nexport class SentinelRunner extends Base {\n protected _automations: Record<string, SentinelAutomationPayload> = {}\n protected onTriggerResult: OnSentinelRunnerTriggerResult | undefined\n protected sentinel: SentinelInstance\n protected timeoutId?: ReturnType<typeof setTimeout> | string | number\n\n constructor(params: SentinelRunnerParams) {\n super(params)\n this.sentinel = params.sentinel\n this.onTriggerResult = params.onTriggerResult\n\n if (params.automations) for (const automation of params.automations) forget(this.add(automation))\n }\n\n get automations(): Record<string, SentinelAutomationPayload> {\n return this._automations\n }\n\n private get next() {\n return Object.values(this._automations).reduce<SentinelAutomationPayload | undefined>((previous, current) => {\n if (isSentinelIntervalAutomation(current) && isSentinelIntervalAutomation(previous)) {\n return (current.start ?? Number.POSITIVE_INFINITY) < (previous?.start ?? Number.POSITIVE_INFINITY) ? current : previous\n }\n return current\n }, undefined)\n }\n\n async add(automation: SentinelAutomationPayload, restart = true): Promise<BrandedHash> {\n const hash = await PayloadBuilder.dataHash(automation)\n this._automations[hash] = automation\n if (restart) this.restart()\n return hash\n }\n\n find(hash: string): [string, SentinelAutomationPayload] | undefined {\n return Object.entries(this._automations).find(([key]) => key === hash)\n }\n\n remove(hash: string, restart = true): void {\n delete this._automations[hash]\n if (restart) this.restart()\n }\n\n removeAll(): void {\n this.stop()\n this._automations = {}\n }\n\n restart(): void {\n this.stop()\n this.start()\n }\n\n start(): void {\n this.startHandler()\n }\n\n startHandler(): void {\n assertEx(this.timeoutId === undefined, () => 'Already started')\n const automation = this.next\n if (isSentinelIntervalAutomation(automation)) {\n const now = Date.now()\n const start = Math.max(automation.start ?? now, now)\n const delay = Math.max(start - now, 0)\n if (delay < Number.POSITIVE_INFINITY) {\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\n this.timeoutId = setTimeout(async () => {\n this.timeoutId = undefined\n return await spanRootAsync('start.setTimeout', async () => {\n try {\n // Run the automation\n await this.trigger(automation)\n this.stop()\n } catch (ex) {\n this.logger?.error('Error running automation', { error: ex })\n this.stop()\n } finally {\n // No matter what start the next automation\n this.start()\n }\n }, { tracer: this.tracer })\n }, delay)\n }\n } else if (isDefined(automation) && automation.type === 'interval' && automation.start !== Number.POSITIVE_INFINITY) {\n // A start of POSITIVE_INFINITY means the automation has intentionally completed\n // (remaining exhausted or past end). Anything else failing validation here would\n // otherwise silently stop the runner, so surface it.\n this.logger?.warn(`Unschedulable interval automation; runner stopped [${JSON.stringify(automation)}]`)\n }\n }\n\n stop(): void {\n if (isDefined(this.timeoutId)) {\n clearTimeout(this.timeoutId)\n this.timeoutId = undefined\n }\n }\n\n async update(hash: string, automation: SentinelAutomationPayload, restart = true): Promise<void> {\n this.remove(hash, false)\n await this.add(automation, false)\n if (restart) this.restart()\n }\n\n private async trigger(automation: SentinelIntervalAutomationPayload) {\n return await spanRootAsync('trigger', async () => {\n const wrapper = new SentinelIntervalAutomationWrapper(automation)\n this.remove(await wrapper.dataHash(), false)\n wrapper.next()\n await this.add(wrapper.payload, false)\n const triggerResult = await this.sentinel.report()\n this.onTriggerResult?.(triggerResult)\n }, { tracer: this.tracer })\n }\n}\n", "import { PayloadWrapper } from '@xyo-network/sdk-protocol'\n\nimport type { SentinelIntervalAutomationPayload } from '#sentinel-model'\n\nexport class SentinelIntervalAutomationWrapper<\n T extends SentinelIntervalAutomationPayload = SentinelIntervalAutomationPayload,\n> extends PayloadWrapper<T> {\n constructor(payload: T) {\n super(payload)\n }\n\n protected get frequencyMillis(): number {\n const frequency = this.payload.frequency\n if (frequency === undefined) return Number.POSITIVE_INFINITY\n const frequencyUnits = this.payload.frequencyUnits\n switch (frequencyUnits ?? 'hour') {\n case 'millis': {\n return frequency\n }\n case 'second': {\n return frequency * 1000\n }\n case 'minute': {\n return frequency * 60 * 1000\n }\n case 'hour': {\n return frequency * 60 * 60 * 1000\n }\n case 'day': {\n return frequency * 24 * 60 * 60 * 1000\n }\n default: {\n return Number.POSITIVE_INFINITY\n }\n }\n }\n\n protected get remaining(): number {\n return this.payload.remaining ?? Number.POSITIVE_INFINITY\n }\n\n next(): this {\n const now = Date.now()\n const previousStart = this.payload?.start ?? now\n const start = Math.max(previousStart, now)\n const nextStart = start + this.frequencyMillis\n this.setStart(nextStart)\n this.consumeRemaining()\n this.checkEnd()\n return this\n }\n\n protected checkEnd(): void {\n if ((this.payload.start ?? 0) > (this.payload.end ?? Number.POSITIVE_INFINITY)) {\n this.setStart(Number.POSITIVE_INFINITY)\n }\n }\n\n protected consumeRemaining(count = 1): void {\n // Infinite reruns are represented by an absent remaining field. Leave the field\n // absent since a non-finite value is not a valid payload field value and would\n // cause the automation to fail schema validation on subsequent scheduling.\n if (this.payload.remaining === undefined) return\n const remaining = Math.max(this.remaining - count, 0)\n this.setRemaining(remaining)\n if (remaining <= 0) this.setStart(Number.POSITIVE_INFINITY)\n }\n\n /**\n * Sets the remaining of the wrapped automation\n * @param remaining The remaining time in milliseconds\n */\n protected setRemaining(remaining: number): void {\n this.payload.remaining = remaining\n }\n\n /**\n * Sets the start of the wrapped automation\n * @param start The start time in milliseconds\n */\n protected setStart(start: number): void {\n this.payload.start = start\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelIntervalAutomationWrapper.d.ts","sourceRoot":"","sources":["../../../../src/modules/sentinel-memory/SentinelIntervalAutomationWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAA;AAExE,qBAAa,iCAAiC,CAC5C,CAAC,SAAS,iCAAiC,GAAG,iCAAiC,CAC/E,SAAQ,cAAc,CAAC,CAAC,CAAC;gBACb,OAAO,EAAE,CAAC;IAItB,SAAS,KAAK,eAAe,IAAI,MAAM,CAwBtC;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,IAAI,IAAI,IAAI;IAWZ,SAAS,CAAC,QAAQ,IAAI,IAAI;IAM1B,SAAS,CAAC,gBAAgB,CAAC,KAAK,SAAI,GAAG,IAAI;IAM3C;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGxC"}
1
+ {"version":3,"file":"SentinelIntervalAutomationWrapper.d.ts","sourceRoot":"","sources":["../../../../src/modules/sentinel-memory/SentinelIntervalAutomationWrapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAA;AAExE,qBAAa,iCAAiC,CAC5C,CAAC,SAAS,iCAAiC,GAAG,iCAAiC,CAC/E,SAAQ,cAAc,CAAC,CAAC,CAAC;gBACb,OAAO,EAAE,CAAC;IAItB,SAAS,KAAK,eAAe,IAAI,MAAM,CAwBtC;IAED,SAAS,KAAK,SAAS,IAAI,MAAM,CAEhC;IAED,IAAI,IAAI,IAAI;IAWZ,SAAS,CAAC,QAAQ,IAAI,IAAI;IAM1B,SAAS,CAAC,gBAAgB,CAAC,KAAK,SAAI,GAAG,IAAI;IAU3C;;;OAGG;IACH,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI/C;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAGxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SentinelRunner.d.ts","sourceRoot":"","sources":["../../../../src/modules/sentinel-memory/SentinelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EACK,IAAI,EAEf,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAA;AAKxB,MAAM,MAAM,6BAA6B,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AAEvE,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACzC,eAAe,CAAC,EAAE,6BAA6B,CAAA;IAC/C,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,qBAAa,cAAe,SAAQ,IAAI;IACtC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAK;IACtE,SAAS,CAAC,eAAe,EAAE,6BAA6B,GAAG,SAAS,CAAA;IACpE,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACpC,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,MAAM,GAAG,MAAM,CAAA;gBAEzD,MAAM,EAAE,oBAAoB;IAQxC,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAE3D;IAED,OAAO,KAAK,IAAI,GAOf;IAEK,GAAG,CAAC,UAAU,EAAE,yBAAyB,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAOtF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,SAAS;IAInE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI;IAK1C,SAAS,IAAI,IAAI;IAKjB,OAAO,IAAI,IAAI;IAKf,KAAK,IAAI,IAAI;IAIb,YAAY,IAAI,IAAI;IA6BpB,IAAI,IAAI,IAAI;IAON,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAMlF,OAAO;CAUtB"}
1
+ {"version":3,"file":"SentinelRunner.d.ts","sourceRoot":"","sources":["../../../../src/modules/sentinel-memory/SentinelRunner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EACK,IAAI,EAEf,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAGxD,OAAO,KAAK,EACV,yBAAyB,EACzB,gBAAgB,EAEjB,MAAM,iBAAiB,CAAA;AAKxB,MAAM,MAAM,6BAA6B,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;AAEvE,MAAM,WAAW,oBAAqB,SAAQ,UAAU;IACtD,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAA;IACzC,eAAe,CAAC,EAAE,6BAA6B,CAAA;IAC/C,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED,qBAAa,cAAe,SAAQ,IAAI;IACtC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAK;IACtE,SAAS,CAAC,eAAe,EAAE,6BAA6B,GAAG,SAAS,CAAA;IACpE,SAAS,CAAC,QAAQ,EAAE,gBAAgB,CAAA;IACpC,SAAS,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,MAAM,GAAG,MAAM,CAAA;gBAEzD,MAAM,EAAE,oBAAoB;IAQxC,IAAI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAE3D;IAED,OAAO,KAAK,IAAI,GAOf;IAEK,GAAG,CAAC,UAAU,EAAE,yBAAyB,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,WAAW,CAAC;IAOtF,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,SAAS;IAInE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI;IAK1C,SAAS,IAAI,IAAI;IAKjB,OAAO,IAAI,IAAI;IAKf,KAAK,IAAI,IAAI;IAIb,YAAY,IAAI,IAAI;IAkCpB,IAAI,IAAI,IAAI;IAON,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,EAAE,OAAO,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC;YAMlF,OAAO;CAUtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xyo-network/sdk",
3
- "version": "7.0.11",
3
+ "version": "7.1.1",
4
4
  "description": "Self-contained all-in-one SDK for XYO Protocol 2.0",
5
5
  "homepage": "https://xyo.network",
6
6
  "bugs": {
@@ -358,58 +358,33 @@
358
358
  "README.md"
359
359
  ],
360
360
  "dependencies": {
361
- "lru-cache": "~11.5.1"
361
+ "async-mutex": "~0.5.0",
362
+ "lru-cache": "~11.5.2"
362
363
  },
363
364
  "devDependencies": {
364
- "@ariestools/sdk": "~8.0.2",
365
- "@ariestools/threads": "~8.0.2",
366
- "@ariestools/vitest-extended": "~8.0.2",
367
- "@ariestools/vitest-matchers": "~8.0.2",
368
- "@bitauth/libauth": "~3.0.0",
369
- "@metamask/providers": "~22.1.1",
370
- "@noble/post-quantum": "~0.6.1",
365
+ "@ariestools/sdk": "~8.0.8",
366
+ "@ariestools/toolchain": "~8.7.0",
367
+ "@ariestools/tsconfig": "~8.7.0",
368
+ "@ariestools/vitest-extended": "~8.0.3",
369
+ "@ariestools/vitest-matchers": "~8.0.3",
371
370
  "@opentelemetry/api": "~1.9.1",
372
- "@opentelemetry/sdk-trace-base": "~2.9.0",
373
- "@scure/base": "~2.2.0",
374
- "@scure/bip39": "~2.2.0",
375
- "@xylabs/toolchain": "~8.6.9",
376
- "@xylabs/tsconfig": "~8.6.9",
377
- "@xyo-network/sdk-protocol": "~7.0.15",
371
+ "@xyo-network/sdk-protocol": "~7.1.0",
378
372
  "ajv": "~8.20.0",
379
- "async-mutex": "~0.5.0",
380
- "debug": "~4.4.3",
381
- "eslint": "~10.6.0",
373
+ "eslint": "~10.7.0",
382
374
  "eslint-import-resolver-typescript": "~4.4.5",
383
375
  "ethers": "~6.17.0",
384
- "hash-wasm": "~4.12.0",
385
- "idb": "~8.0.3",
386
- "observable-fns": "~0.6.1",
387
376
  "tslib": "~2.8.1",
388
377
  "typescript": "~6.0.3",
389
- "vite": "~8.1.3",
378
+ "vite": "~8.1.4",
390
379
  "vitest": "~4.1.10",
391
- "webextension-polyfill": "~0.12.0",
392
380
  "zod": "~4.4.3"
393
381
  },
394
382
  "peerDependencies": {
395
- "@ariestools/sdk": "^8.0.2",
396
- "@ariestools/threads": "^8.0.2",
397
- "@bitauth/libauth": "^3.0.0",
398
- "@metamask/providers": "^22.1.1",
399
- "@noble/post-quantum": "^0.6.1",
383
+ "@ariestools/sdk": "^8.0.8",
400
384
  "@opentelemetry/api": "^1.9.1",
401
- "@opentelemetry/sdk-trace-base": "^2.9.0",
402
- "@scure/base": "^2.2.0",
403
- "@scure/bip39": "^2.2.0",
404
- "@xyo-network/sdk-protocol": "^7.0.15",
385
+ "@xyo-network/sdk-protocol": "^7.1.0",
405
386
  "ajv": "^8.20.0",
406
- "async-mutex": "^0.5.0",
407
- "debug": "^4.4.3",
408
387
  "ethers": "^6.17.0",
409
- "hash-wasm": "^4.12.0",
410
- "idb": "^8.0.3",
411
- "observable-fns": "^0.6.1",
412
- "webextension-polyfill": "^0.12.0",
413
388
  "zod": "^4.4.3"
414
389
  },
415
390
  "engines": {