@codeworksh/harness 0.2.0-dev.20261013121551 → 0.2.0-dev.20261013125114

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/effect.d.mts CHANGED
@@ -8,11 +8,11 @@ import { SqliteClient } from "@effect/sql-sqlite-node";
8
8
  import { Model as Model$1 } from "effect/schema";
9
9
  import { SqliteProvider, create } from "@platformatic/vfs";
10
10
  import { ChildProcessSpawner } from "effect/process";
11
- import "just-bash";
12
11
  import { DirectoryNotFoundError, Error, Error as Error$1, Info as Info$5, Interface as Interface$9, NotDirectoryError, Service, Service as Service$10 } from "@codeworksh/plugin/location";
13
12
  import * as Section from "@codeworksh/plugin/plugin/section";
14
13
  import { Config as Config$1, Events, PluginOptions, PluginRef, PluginRegistry, PromptResolver, SharedPluginContext } from "@codeworksh/plugin/plugin";
15
14
  import * as AikitFailure from "@codeworksh/aikit/failure";
15
+ import "just-bash";
16
16
  declare namespace schema_d_exports {
17
17
  export { Delivery, IMAGE_MAX_BASE64, IMAGE_TYPES, ImagePart, InvalidPromptError, Part, Prompt, schema_d_exports as PromptSchema, TextPart, imageProblem };
18
18
  }
@@ -2715,21 +2715,6 @@ type AikitPart = Message.AssistantMessage["parts"][number] | Message.UserMessage
2715
2715
  declare const encodePart: (part: AikitPart) => Effect.Effect<AppendPart, ContextEncodeError, never>;
2716
2716
  declare const validateUserMessage: (value: unknown, entryId: string, type: string) => Effect.Effect<Message.UserMessage, ContextDecodeError>;
2717
2717
  declare const encodeMessage: (message: {
2718
- messageId: string;
2719
- role: "user";
2720
- time: {
2721
- created: number;
2722
- };
2723
- parts: ({
2724
- type: "text";
2725
- text: string;
2726
- textSignature?: string;
2727
- } | {
2728
- type: "image";
2729
- data: string;
2730
- mimeType: string;
2731
- })[];
2732
- } | {
2733
2718
  role: "assistant";
2734
2719
  protocol: "anthropic" | "github-copilot" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-codex" | "openai-compatible" | "openrouter" | "xai";
2735
2720
  provider: {
@@ -3031,8 +3016,7 @@ declare const encodeMessage: (message: {
3031
3016
  responseId?: string;
3032
3017
  responseModel?: string;
3033
3018
  messageId: string;
3034
- }) => Effect.Effect<EncodedMessage, ContextEncodeError, never>;
3035
- declare const decodeSyntheticMessage: (hydrated: HydratedEntry) => Effect.Effect<{
3019
+ } | {
3036
3020
  messageId: string;
3037
3021
  role: "user";
3038
3022
  time: {
@@ -3047,8 +3031,8 @@ declare const decodeSyntheticMessage: (hydrated: HydratedEntry) => Effect.Effect
3047
3031
  data: string;
3048
3032
  mimeType: string;
3049
3033
  })[];
3050
- }, ContextDecodeError, never>;
3051
- declare const decodeMessage: (hydrated: HydratedEntry) => Effect.Effect<{
3034
+ }) => Effect.Effect<EncodedMessage, ContextEncodeError, never>;
3035
+ declare const decodeSyntheticMessage: (hydrated: HydratedEntry) => Effect.Effect<{
3052
3036
  messageId: string;
3053
3037
  role: "user";
3054
3038
  time: {
@@ -3063,7 +3047,8 @@ declare const decodeMessage: (hydrated: HydratedEntry) => Effect.Effect<{
3063
3047
  data: string;
3064
3048
  mimeType: string;
3065
3049
  })[];
3066
- } | {
3050
+ }, ContextDecodeError, never>;
3051
+ declare const decodeMessage: (hydrated: HydratedEntry) => Effect.Effect<{
3067
3052
  role: "assistant";
3068
3053
  protocol: "anthropic" | "github-copilot" | "google" | "google-vertex" | "google-vertex-anthropic" | "openai" | "openai-codex" | "openai-compatible" | "openrouter" | "xai";
3069
3054
  provider: {
@@ -3365,6 +3350,21 @@ declare const decodeMessage: (hydrated: HydratedEntry) => Effect.Effect<{
3365
3350
  responseId?: string;
3366
3351
  responseModel?: string;
3367
3352
  messageId: string;
3353
+ } | {
3354
+ messageId: string;
3355
+ role: "user";
3356
+ time: {
3357
+ created: number;
3358
+ };
3359
+ parts: ({
3360
+ type: "text";
3361
+ text: string;
3362
+ textSignature?: string;
3363
+ } | {
3364
+ type: "image";
3365
+ data: string;
3366
+ mimeType: string;
3367
+ })[];
3368
3368
  }, ContextDecodeError, never>;
3369
3369
  declare namespace context_d_exports {
3370
3370
  export { context_d_exports as Context, assemble_d_exports as ContextAssembly, codec_d_exports as ContextCodec, ContextDecodeError, ContextEncodeError, ContextInvariantError, ContextReadError, EncodedMessage, Interface$1 as Interface, Service$2 as Service, Snapshot, assemblePath, decodeMessage, decodeSyntheticMessage, encodeMessage, encodePart, layer$4 as layer, validateUserMessage };
@@ -25033,8 +25033,31 @@ declare const update: <A>(target: Fetchable, cache: string, options: {
25033
25033
  readonly entry: Entry;
25034
25034
  readonly validated?: A & ({} | null);
25035
25035
  }, InstallError | LoadError | StoreError, never>;
25036
+ //#endregion
25037
+ //#region src/util/module.d.ts
25038
+ /** One module of a shared package, as a bundled host publishes it. */
25039
+ interface SharedModule {
25040
+ /** Its export names; an ES module's exports must be known before it runs. */
25041
+ readonly names: ReadonlyArray<string>;
25042
+ readonly load: () => Promise<Record<string, unknown>>;
25043
+ }
25044
+ /**
25045
+ * A shared package's modules by specifier (`effect/Schema`), published on
25046
+ * `globalThis[Symbol.for(key)]` by a host that is a single bundled file, such as the standalone
25047
+ * binary. Such a host has no `effect` on disk to resolve to, so plugins get virtual modules that
25048
+ * re-export its own instances. Modules load on first import: `effect` alone has hundreds.
25049
+ */
25050
+ type SharedRegistry = Readonly<Record<string, SharedModule>>;
25051
+ /** Publish a bundled host's registries, by package name, before any plugin loads. */
25052
+ declare function share(packages: Readonly<Record<string, SharedRegistry>>): void;
25053
+ /**
25054
+ * Borrow `import.meta.resolve` from a `data:` module loaded through the main loader, when this
25055
+ * module has none. Not done at the top level: the binary bundles this module into an import cycle,
25056
+ * where a top-level `await` never settles.
25057
+ */
25058
+ declare function lendResolve(): Promise<void>;
25036
25059
  declare namespace index_d_exports {
25037
- export { Checked, Config$1 as Config, Entry, Events, Fetchable, InstallError, LoadError, plugin_d_exports.Mount as Mount, plugin_d_exports.Plugin as Plugin, PluginOptions, PluginRef, PluginRegistry, Probe, schema_d_exports$1 as Prompt, PromptResolver, Section, SetupError, SharedPluginContext, SourceError, StoreError, Target, schema_d_exports$3 as Tool, Updated, anchor, canonical, check, plugin_d_exports.define as define, definition, digest as identity, inspect, localName, parse, probe, resolve, required as resolveCached, lock as settingsLock, update };
25060
+ export { Checked, Config$1 as Config, Entry, Events, Fetchable, InstallError, LoadError, plugin_d_exports.Mount as Mount, plugin_d_exports.Plugin as Plugin, PluginOptions, PluginRef, PluginRegistry, Probe, schema_d_exports$1 as Prompt, PromptResolver, Section, SetupError, SharedModule, SharedPluginContext, SharedRegistry, SourceError, StoreError, Target, schema_d_exports$3 as Tool, Updated, anchor, canonical, check, plugin_d_exports.define as define, definition, digest as identity, inspect, lendResolve, localName, parse, probe, resolve, required as resolveCached, lock as settingsLock, share, update };
25038
25061
  }
25039
25062
  type DateTimeUtcFromMillis = import__codeworksh_plugin_schema.DateTimeUtcFromMillis;
25040
25063
  type EventSchema = import__codeworksh_plugin_event.EventSchema;
package/effect.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  import { n as __reExport, t as __exportAll } from "./rolldown-runtime-B4FMCO8f.mjs";
2
2
  import { a as io_exports, i as errors_exports, n as shell_exports, o as instance_exports, r as filesystem_exports, s as posix } from "./resource-DFZh0e-s.mjs";
3
+ import { a as decode, c as importModule, d as share, l as lendResolve, n as dimensionNote, o as load$5, r as resize, s as load$4, u as resolveModule } from "./resize-D34zcVQl.mjs";
3
4
  import "./daytona-D4sNwzSr.mjs";
4
5
  import "./vercel-3GouQSJI.mjs";
5
- import { a as decode, n as dimensionNote, o as load$4, r as resize } from "./resize-Dwv5dCgY.mjs";
6
- import { createRequire, registerHooks } from "node:module";
6
+ import { createRequire } from "node:module";
7
7
  import { Cause, Clock, Config, Context, Crypto, Data, DateTime, Deferred, Duration, Effect, Exit, Fiber, FiberSet, FileSystem, Layer, LayerMap, Metric, Option, Path, Predicate, PubSub, Queue, Random, Ref, Result, Schedule, Schema, SchemaIssue, Scope, Semaphore, Stream, String as String$1 } from "effect";
8
8
  import { Message, Model, getEnvApiKey, llm, normalizeOptionalNulls, stream } from "@codeworksh/aikit";
9
9
  import { MessageID as ID, SessionID as ID$1 } from "@codeworksh/plugin/ids";
@@ -16,10 +16,10 @@ import { NodeChildProcessSpawner, NodeCrypto, NodeFileSystem, NodePath } from "@
16
16
  import { Model as Model$1, VariantSchema } from "effect/schema";
17
17
  import { Hex } from "effect/encoding";
18
18
  import { MemoryProvider, RealFSProvider, SqliteProvider, create } from "@platformatic/vfs";
19
- import fs, { statSync } from "node:fs";
19
+ import fs from "node:fs";
20
20
  import { ChildProcess, ChildProcessSpawner } from "effect/process";
21
21
  import { Buffer as Buffer$1 } from "node:buffer";
22
- import { Bash } from "just-bash";
22
+ import { fileURLToPath, pathToFileURL } from "node:url";
23
23
  import { DirectoryNotFoundError, DirectoryNotFoundError as DirectoryNotFoundError$1, Info, Info as Info$1, NotDirectoryError, NotDirectoryError as NotDirectoryError$1, Service, Service as Service$8 } from "@codeworksh/plugin/location";
24
24
  import { generateModels } from "@codeworksh/aikit/modelgen";
25
25
  import { JsonGitHubCopilotAuthStorage, getGitHubCopilotApiKey } from "@codeworksh/aikit/oauth/github/copilot";
@@ -28,9 +28,6 @@ import { parse, printParseErrorCode } from "jsonc-parser";
28
28
  import * as Section from "@codeworksh/plugin/plugin/section";
29
29
  import * as Diff from "diff";
30
30
  import { FetchHttpClient, HttpClient } from "effect/http";
31
- import { fileURLToPath, pathToFileURL } from "node:url";
32
- import path from "node:path";
33
- import { Script, constants } from "node:vm";
34
31
  import npa from "npm-package-arg";
35
32
  import * as AikitFailure from "@codeworksh/aikit/failure";
36
33
  import "@codeworksh/plugin/tool/error";
@@ -380,7 +377,7 @@ var db_exports = /* @__PURE__ */ __exportAll({
380
377
  defaultLayer: () => defaultLayer$1,
381
378
  layer: () => layer$26,
382
379
  locationConfig: () => locationConfig,
383
- path: () => path$2,
380
+ path: () => path$1,
384
381
  resolveDatabaseLocation: () => resolveDatabaseLocation
385
382
  });
386
383
  const setup = Effect.gen(function* () {
@@ -407,11 +404,11 @@ function resolveDatabaseLocation(configured, data) {
407
404
  if (configured === ":memory:" || posix.isAbsolute(configured)) return configured;
408
405
  return posix.join(data, configured);
409
406
  }
410
- const path$2 = Effect.fn("Database.path")(function* (data) {
407
+ const path$1 = Effect.fn("Database.path")(function* (data) {
411
408
  const directory = data ?? (yield* resolve$4()).data;
412
409
  return resolveDatabaseLocation(yield* locationConfig, directory);
413
410
  });
414
- const defaultLayer$1 = Layer.unwrap(path$2().pipe(Effect.map(layer$26)));
411
+ const defaultLayer$1 = Layer.unwrap(path$1().pipe(Effect.map(layer$26)));
415
412
  //#endregion
416
413
  //#region src/event/schema.ts
417
414
  var schema_exports$7 = /* @__PURE__ */ __exportAll({});
@@ -4007,7 +4004,8 @@ const fromBash = (bash) => {
4007
4004
  });
4008
4005
  return shell_exports.Shell.of((0, shell_exports.fromExec)({ exec }));
4009
4006
  };
4010
- const make$12 = (vfs, cwd) => fromBash(new Bash({
4007
+ const JustBash = load$4("just-bash").pipe(Effect.map((module) => module), Effect.orDie);
4008
+ const make$12 = (module, vfs, cwd) => fromBash(new module.Bash({
4011
4009
  fs: bridge(vfs, cwd),
4012
4010
  cwd
4013
4011
  }));
@@ -4016,9 +4014,10 @@ const make$12 = (vfs, cwd) => fromBash(new Bash({
4016
4014
  * mount binds its cwd. This matches Flue's BashFactory ownership: mounts share
4017
4015
  * the VFS, but shell state (functions, options, command hashes) is mount-local.
4018
4016
  */
4019
- const transport$1 = (inner) => Layer.provideMerge(Layer.effect(shell_exports.Shell, Effect.map(Vfs, (vfs) => {
4020
- const root = make$12(vfs, "/");
4021
- return (0, shell_exports.perMount)(root, (cwd) => make$12(vfs, cwd));
4017
+ const transport$1 = (inner) => Layer.provideMerge(Layer.effect(shell_exports.Shell, Effect.gen(function* () {
4018
+ const module = yield* JustBash;
4019
+ const vfs = yield* Vfs;
4020
+ return (0, shell_exports.perMount)(make$12(module, vfs, "/"), (cwd) => make$12(module, vfs, cwd));
4022
4021
  })), inner);
4023
4022
  //#endregion
4024
4023
  //#region src/sandbox/virtual.ts
@@ -6134,7 +6133,7 @@ var Accumulator = class {
6134
6133
  //#endregion
6135
6134
  //#region src/tool/output.ts
6136
6135
  /** A new, unused output file path under `spillPath`. */
6137
- const path$1 = (spillPath, prefix) => crypto.randomBytes(8).pipe(Effect.map((bytes) => posix.join(spillPath, `${prefix}-${Hex.encode(bytes)}.log`)), Effect.orDie);
6136
+ const path = (spillPath, prefix) => crypto.randomBytes(8).pipe(Effect.map((bytes) => posix.join(spillPath, `${prefix}-${Hex.encode(bytes)}.log`)), Effect.orDie);
6138
6137
  /** First line printed when the output file cannot be created; the command then runs unsaved. */
6139
6138
  const unsaved = (file) => `codework: output not saved, cannot create ${file}`;
6140
6139
  const HEADER = "codework-output";
@@ -6522,7 +6521,7 @@ const runStreaming = (shell, stream, params, file) => Effect.gen(function* () {
6522
6521
  });
6523
6522
  const bashHandler = (params) => Effect.gen(function* () {
6524
6523
  const shell = yield* ToolShell;
6525
- const file = yield* path$1((yield* io_exports.SandboxIO.Current).spillPath, "codework-bash");
6524
+ const file = yield* path((yield* io_exports.SandboxIO.Current).spillPath, "codework-bash");
6526
6525
  return yield* (shell.stream !== void 0 ? runStreaming(shell, shell.stream, params, file) : runBuffered(shell, params, file)).pipe(Effect.onInterrupt(() => cleanUp(shell, file, {
6527
6526
  output: "",
6528
6527
  truncated: false
@@ -7352,7 +7351,7 @@ const grepHandler = (params) => Effect.gen(function* () {
7352
7351
  const isDirectory = stat.value.isDirectory;
7353
7352
  const context = params.context && params.context > 0 ? Math.trunc(params.context) : 0;
7354
7353
  const limit = Math.max(1, Math.trunc(params.limit ?? DEFAULT_LIMIT$1));
7355
- const errors = yield* path$1(sandbox.spillPath, "codework-grep");
7354
+ const errors = yield* path(sandbox.spillPath, "codework-grep");
7356
7355
  const run = yield* withCommand("rg", sandbox, shell, fs, (command) => Effect.gen(function* () {
7357
7356
  const argv = [
7358
7357
  command,
@@ -7627,7 +7626,7 @@ const INLINE = /* @__PURE__ */ new Set([
7627
7626
  "image/gif",
7628
7627
  "image/webp"
7629
7628
  ]);
7630
- const toPng = (bytes) => load$4.pipe(Effect.map((photon) => {
7629
+ const toPng = (bytes) => load$5.pipe(Effect.map((photon) => {
7631
7630
  if (photon === void 0) return void 0;
7632
7631
  try {
7633
7632
  const image = decode(photon, bytes);
@@ -7935,124 +7934,6 @@ const builtins = Object.freeze([
7935
7934
  instructionPlugin
7936
7935
  ]);
7937
7936
  //#endregion
7938
- //#region src/util/module.ts
7939
- /*!
7940
- * Adapted from OpenCode packages/util/src/runtime/import.node.ts.
7941
- *
7942
- * MIT License
7943
- *
7944
- * Copyright (c) 2025 opencode
7945
- *
7946
- * Permission is hereby granted, free of charge, to any person obtaining a copy
7947
- * of this software and associated documentation files (the "Software"), to deal
7948
- * in the Software without restriction, including without limitation the rights
7949
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7950
- * copies of the Software, and to permit persons to whom the Software is
7951
- * furnished to do so, subject to the following conditions:
7952
- *
7953
- * The above copyright notice and this permission notice shall be included in all
7954
- * copies or substantial portions of the Software.
7955
- *
7956
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
7957
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7958
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
7959
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
7960
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
7961
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
7962
- * SOFTWARE.
7963
- */
7964
- /**
7965
- * Packages a plugin must share with the harness instead of using the copy installed beside it.
7966
- *
7967
- * A plugin is installed into the store as its own npm tree, so `effect` and the plugin SDK land
7968
- * there a second time. Two copies of the *same version* are still two module instances, and
7969
- * Effect Schema's checks do not survive the crossing: a schema built by one copy and evaluated by
7970
- * the other reports every check as failed, so a tool whose success type is `Schema.Finite` dies
7971
- * on "Expected a finite number" for `22800`. Nothing about that is visible at registration --
7972
- * `Schema.isSchema` passes, the JSON Schema is derived correctly, and the tool reaches the model
7973
- * -- so it surfaces on the first call rather than at boot.
7974
- *
7975
- * Resolution is the right place to fix it. A symlink into the store cannot be: a generation is
7976
- * immutable and shared by every project on the machine, while the harness doing the loading is
7977
- * whichever one is running now, and two applications embedding the harness need not agree on
7978
- * where their `effect` lives.
7979
- */
7980
- const sharedPackages = /* @__PURE__ */ new Set(["effect", "@codeworksh/plugin"]);
7981
- /** The package a bare specifier names: `effect/Schema` -> `effect`, `@a/b/c` -> `@a/b`. */
7982
- function packageOf(specifier) {
7983
- if (specifier.startsWith(".") || specifier.startsWith("/") || specifier.includes(":")) return "";
7984
- const segments = specifier.split("/");
7985
- return specifier.startsWith("@") ? segments.slice(0, 2).join("/") : segments[0] ?? "";
7986
- }
7987
- /**
7988
- * Resolve the shared packages as though this module had imported them, for as long as `run`
7989
- * takes. Anything else resolves exactly as it would have.
7990
- */
7991
- function withSharedModules(run) {
7992
- const hook = registerHooks({ resolve(specifier, context, nextResolve) {
7993
- return sharedPackages.has(packageOf(specifier)) ? nextResolve(specifier, {
7994
- ...context,
7995
- parentURL: import.meta.url
7996
- }) : nextResolve(specifier, context);
7997
- } });
7998
- return run().finally(() => hook.deregister());
7999
- }
8000
- /** Use Node's main loader even when the caller runs inside a bundler or test VM. */
8001
- async function importModule(specifier) {
8002
- const imported = await withSharedModules(() => new Script(`import(${JSON.stringify(specifier)})`, { importModuleDynamically: constants.USE_MAIN_CONTEXT_DEFAULT_LOADER }).runInThisContext());
8003
- if (typeof imported !== "object" || imported === null) return imported;
8004
- const module = imported;
8005
- const exports = module["module.exports"];
8006
- if (exports !== module.default || typeof exports !== "object" && typeof exports !== "function" || exports === null) return imported;
8007
- return Object.assign({}, module, exports);
8008
- }
8009
- /** Node resolution scoped synchronously to the caller. */
8010
- function resolveModule(specifier, directory, conditions) {
8011
- const hook = registerHooks({ resolve(target, context, nextResolve) {
8012
- return nextResolve(target, {
8013
- ...context,
8014
- parentURL: pathToFileURL(path.join(directory, "package.json")).href,
8015
- ...conditions === void 0 ? {} : { conditions: [.../* @__PURE__ */ new Set([...context.conditions, ...conditions])] }
8016
- });
8017
- } });
8018
- try {
8019
- const resolve = (target) => {
8020
- const resolved = import.meta.resolve(path.isAbsolute(target) ? pathToFileURL(target).href : target);
8021
- if (resolved.startsWith("file:")) statSync(new URL(resolved));
8022
- return resolved;
8023
- };
8024
- try {
8025
- return resolve(specifier);
8026
- } catch (error) {
8027
- if (path.extname(specifier) || !missing(error)) throw error;
8028
- for (const extension of [
8029
- ".ts",
8030
- ".tsx",
8031
- ".js",
8032
- ".jsx",
8033
- ".mts",
8034
- ".mjs",
8035
- ".cts",
8036
- ".cjs"
8037
- ]) try {
8038
- return resolve(specifier + extension);
8039
- } catch (cause) {
8040
- if (!missing(cause)) throw cause;
8041
- }
8042
- throw error;
8043
- }
8044
- } finally {
8045
- hook.deregister();
8046
- }
8047
- }
8048
- function missing(error) {
8049
- return error instanceof Error && "code" in error && [
8050
- "ENOENT",
8051
- "ENOTDIR",
8052
- "ERR_MODULE_NOT_FOUND"
8053
- ].includes(String(error.code));
8054
- }
8055
- //#endregion
8056
7937
  //#region src/plugin/error.ts
8057
7938
  /**
8058
7939
  * The reference as the person wrote it -- the string they will recognise in their settings file,
@@ -11844,12 +11725,14 @@ var plugin_exports = /* @__PURE__ */ __exportAll({
11844
11725
  definition: () => definition$1,
11845
11726
  identity: () => digest,
11846
11727
  inspect: () => inspect,
11728
+ lendResolve: () => lendResolve,
11847
11729
  localName: () => localName,
11848
11730
  parse: () => parse$1,
11849
11731
  probe: () => probe,
11850
11732
  resolve: () => resolve$2,
11851
11733
  resolveCached: () => required,
11852
11734
  settingsLock: () => lock,
11735
+ share: () => share,
11853
11736
  update: () => update
11854
11737
  });
11855
11738
  //#endregion