@dxos/config 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/lib/chunk-config.mjs +123 -0
  2. package/dist/lib/chunk-config.mjs.map +1 -0
  3. package/dist/lib/chunk-definitions.mjs +97 -0
  4. package/dist/lib/chunk-definitions.mjs.map +1 -0
  5. package/dist/lib/chunk-types.mjs +8 -0
  6. package/dist/lib/chunk-types.mjs.map +1 -0
  7. package/dist/lib/index.mjs +171 -0
  8. package/dist/lib/index.mjs.map +1 -0
  9. package/dist/lib/loaders/browser.mjs +82 -0
  10. package/dist/lib/loaders/browser.mjs.map +1 -0
  11. package/dist/lib/loaders.mjs +66 -0
  12. package/dist/lib/loaders.mjs.map +1 -0
  13. package/dist/lib/plugin/browser.mjs +8 -0
  14. package/dist/lib/plugin/browser.mjs.map +1 -0
  15. package/dist/lib/plugin/esbuild-plugin.mjs +22 -0
  16. package/dist/lib/plugin/esbuild-plugin.mjs.map +1 -0
  17. package/dist/lib/plugin/rollup-plugin.mjs +15 -0
  18. package/dist/lib/plugin/rollup-plugin.mjs.map +1 -0
  19. package/dist/lib/plugin/vite-plugin.mjs +24 -0
  20. package/dist/lib/plugin/vite-plugin.mjs.map +1 -0
  21. package/dist/lib/plugin.mjs +2 -0
  22. package/dist/lib/savers/browser.mjs +33 -0
  23. package/dist/lib/savers/browser.mjs.map +1 -0
  24. package/dist/lib/savers.mjs +6 -0
  25. package/dist/lib/savers.mjs.map +1 -0
  26. package/dist/{lib/node-esm/plugin/index.mjs → plugin/node-esm/chunk-PAYIP2UD.mjs} +49 -9
  27. package/dist/plugin/node-esm/chunk-PAYIP2UD.mjs.map +7 -0
  28. package/dist/plugin/node-esm/esbuild-plugin.mjs +1 -1
  29. package/dist/plugin/node-esm/meta.json +1 -1
  30. package/dist/plugin/node-esm/rollup-plugin.mjs +1 -1
  31. package/dist/plugin/node-esm/vite-plugin.mjs +1 -1
  32. package/dist/types/src/config.d.ts +0 -1
  33. package/dist/types/src/config.d.ts.map +1 -1
  34. package/dist/types/tsconfig.tsbuildinfo +1 -1
  35. package/package.json +21 -28
  36. package/src/config-service.ts +3 -3
  37. package/src/config.ts +0 -4
  38. package/src/edge-services.ts +1 -1
  39. package/src/preset.ts +1 -1
  40. package/dist/lib/browser/chunk-VQRJY4AQ.mjs +0 -11
  41. package/dist/lib/browser/chunk-VQRJY4AQ.mjs.map +0 -7
  42. package/dist/lib/browser/chunk-ZY4D4E3Q.mjs +0 -146
  43. package/dist/lib/browser/chunk-ZY4D4E3Q.mjs.map +0 -7
  44. package/dist/lib/browser/index.mjs +0 -197
  45. package/dist/lib/browser/index.mjs.map +0 -7
  46. package/dist/lib/browser/loaders/browser.mjs +0 -73
  47. package/dist/lib/browser/loaders/browser.mjs.map +0 -7
  48. package/dist/lib/browser/loaders/index.mjs +0 -66
  49. package/dist/lib/browser/loaders/index.mjs.map +0 -7
  50. package/dist/lib/browser/meta.json +0 -1
  51. package/dist/lib/browser/plugin/browser.mjs +0 -8
  52. package/dist/lib/browser/plugin/browser.mjs.map +0 -7
  53. package/dist/lib/browser/plugin/index.mjs +0 -98
  54. package/dist/lib/browser/plugin/index.mjs.map +0 -7
  55. package/dist/lib/browser/savers/browser.mjs +0 -25
  56. package/dist/lib/browser/savers/browser.mjs.map +0 -7
  57. package/dist/lib/browser/savers/index.mjs +0 -7
  58. package/dist/lib/browser/savers/index.mjs.map +0 -7
  59. package/dist/lib/node-esm/chunk-T6NFH3CC.mjs +0 -13
  60. package/dist/lib/node-esm/chunk-T6NFH3CC.mjs.map +0 -7
  61. package/dist/lib/node-esm/chunk-WIJROCKQ.mjs +0 -148
  62. package/dist/lib/node-esm/chunk-WIJROCKQ.mjs.map +0 -7
  63. package/dist/lib/node-esm/index.mjs +0 -198
  64. package/dist/lib/node-esm/index.mjs.map +0 -7
  65. package/dist/lib/node-esm/loaders/browser.mjs +0 -75
  66. package/dist/lib/node-esm/loaders/browser.mjs.map +0 -7
  67. package/dist/lib/node-esm/loaders/index.mjs +0 -67
  68. package/dist/lib/node-esm/loaders/index.mjs.map +0 -7
  69. package/dist/lib/node-esm/meta.json +0 -1
  70. package/dist/lib/node-esm/plugin/browser.mjs +0 -10
  71. package/dist/lib/node-esm/plugin/browser.mjs.map +0 -7
  72. package/dist/lib/node-esm/plugin/index.mjs.map +0 -7
  73. package/dist/lib/node-esm/savers/browser.mjs +0 -27
  74. package/dist/lib/node-esm/savers/browser.mjs.map +0 -7
  75. package/dist/lib/node-esm/savers/index.mjs +0 -9
  76. package/dist/lib/node-esm/savers/index.mjs.map +0 -7
  77. package/dist/plugin/node-esm/chunk-XCZNYAQT.mjs +0 -221
  78. package/dist/plugin/node-esm/chunk-XCZNYAQT.mjs.map +0 -7
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/config",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Config utilities",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -19,8 +19,8 @@
19
19
  "default": "./src/loaders/index.ts"
20
20
  },
21
21
  "types": "./dist/types/src/loaders/index.d.ts",
22
- "browser": "./dist/lib/browser/loaders/browser.mjs",
23
- "default": "./dist/lib/node-esm/loaders/index.mjs"
22
+ "browser": "./dist/lib/loaders/browser.mjs",
23
+ "default": "./dist/lib/loaders.mjs"
24
24
  },
25
25
  "#savers": {
26
26
  "source": {
@@ -28,8 +28,8 @@
28
28
  "default": "./src/savers/index.ts"
29
29
  },
30
30
  "types": "./dist/types/src/savers/index.d.ts",
31
- "browser": "./dist/lib/browser/savers/browser.mjs",
32
- "default": "./dist/lib/node-esm/savers/index.mjs"
31
+ "browser": "./dist/lib/savers/browser.mjs",
32
+ "default": "./dist/lib/savers.mjs"
33
33
  },
34
34
  "#plugin": {
35
35
  "source": {
@@ -37,37 +37,30 @@
37
37
  "default": "./src/plugin/index.ts"
38
38
  },
39
39
  "types": "./dist/types/src/plugin/index.d.ts",
40
- "browser": "./dist/lib/browser/plugin/browser.mjs",
41
- "default": "./dist/lib/node-esm/plugin/index.mjs"
40
+ "browser": "./dist/lib/plugin/browser.mjs",
41
+ "default": "./dist/lib/plugin.mjs"
42
42
  }
43
43
  },
44
44
  "exports": {
45
45
  ".": {
46
46
  "source": "./src/index.ts",
47
47
  "types": "./dist/types/src/index.d.ts",
48
- "browser": "./dist/lib/browser/index.mjs",
49
- "node": {
50
- "require": "./dist/lib/node/index.cjs",
51
- "default": "./dist/lib/node-esm/index.mjs"
52
- }
48
+ "import": "./dist/lib/index.mjs"
53
49
  },
54
50
  "./esbuild-plugin": {
55
51
  "source": "./src/plugin/esbuild-plugin.ts",
56
- "types": "./dist/types/src/esbuild-plugin/index.d.ts",
57
- "import": "./dist/plugin/node-esm/esbuild-plugin.mjs",
58
- "require": "./dist/plugin/node/esbuild-plugin.cjs"
52
+ "types": "./dist/types/src/plugin/esbuild-plugin.d.ts",
53
+ "import": "./dist/lib/plugin/esbuild-plugin.mjs"
59
54
  },
60
55
  "./rollup-plugin": {
61
56
  "source": "./src/plugin/rollup-plugin.ts",
62
- "types": "./dist/types/src/rollup-plugin/index.d.ts",
63
- "import": "./dist/plugin/node-esm/rollup-plugin.mjs",
64
- "require": "./dist/plugin/node/rollup-plugin.cjs"
57
+ "types": "./dist/types/src/plugin/rollup-plugin.d.ts",
58
+ "import": "./dist/lib/plugin/rollup-plugin.mjs"
65
59
  },
66
60
  "./vite-plugin": {
67
61
  "source": "./src/plugin/vite-plugin.ts",
68
- "types": "./dist/types/src/vite-plugin/index.d.ts",
69
- "import": "./dist/plugin/node-esm/vite-plugin.mjs",
70
- "require": "./dist/plugin/node/vite-plugin.cjs"
62
+ "types": "./dist/types/src/plugin/vite-plugin.d.ts",
63
+ "import": "./dist/lib/plugin/vite-plugin.mjs"
71
64
  }
72
65
  },
73
66
  "main": "dist/lib/node/index.cjs",
@@ -84,13 +77,13 @@
84
77
  "lodash.ismatch": "^4.4.0",
85
78
  "pkg-up": "^3.1.0",
86
79
  "yaml": "^2.8.2",
87
- "@dxos/client-protocol": "0.10.0",
88
- "@dxos/invariant": "0.10.0",
89
- "@dxos/log": "0.10.0",
90
- "@dxos/node-std": "0.10.0",
91
- "@dxos/protocols": "0.10.0",
92
- "@dxos/util": "0.10.0",
93
- "@dxos/tracing": "0.10.0"
80
+ "@dxos/client-protocol": "0.11.0",
81
+ "@dxos/invariant": "0.11.0",
82
+ "@dxos/log": "0.11.0",
83
+ "@dxos/node-std": "0.11.0",
84
+ "@dxos/protocols": "0.11.0",
85
+ "@dxos/tracing": "0.11.0",
86
+ "@dxos/util": "0.11.0"
94
87
  },
95
88
  "devDependencies": {
96
89
  "@types/lodash.defaultsdeep": "^4.6.6",
@@ -19,7 +19,7 @@ export const memoryConfig = new Config({
19
19
  runtime: {
20
20
  client: {
21
21
  edgeFeatures: {
22
- echoReplicator: true,
22
+ subductionReplicator: true,
23
23
  feedReplicator: true,
24
24
  signaling: true,
25
25
  agents: true,
@@ -32,7 +32,7 @@ export const defaultConfig = new Config({
32
32
  runtime: {
33
33
  client: {
34
34
  edgeFeatures: {
35
- echoReplicator: true,
35
+ subductionReplicator: true,
36
36
  feedReplicator: true,
37
37
  signaling: true,
38
38
  agents: true,
@@ -101,7 +101,7 @@ const profileBuiltinDefaults = (profile: string) => {
101
101
  runtime: {
102
102
  client: {
103
103
  edgeFeatures: {
104
- echoReplicator: true,
104
+ subductionReplicator: true,
105
105
  feedReplicator: true,
106
106
  signaling: true,
107
107
  agents: true,
package/src/config.ts CHANGED
@@ -8,7 +8,6 @@ import isMatch from 'lodash.ismatch';
8
8
  import { InvalidConfigError } from '@dxos/protocols';
9
9
  import { schema } from '@dxos/protocols/proto';
10
10
  import { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';
11
- import { trace } from '@dxos/tracing';
12
11
  import { getDeep, setDeep } from '@dxos/util';
13
12
 
14
13
  import { type ConfigKey, type DeepIndex, type ParseKey } from './types';
@@ -113,13 +112,10 @@ export const validateConfig = (config: ConfigProto): ConfigProto => {
113
112
  return config;
114
113
  };
115
114
 
116
- export const ConfigResource = Symbol.for('dxos.resource.Config');
117
-
118
115
  /**
119
116
  * Global configuration object.
120
117
  * NOTE: Config objects are immutable.
121
118
  */
122
- @trace.resource({ annotation: ConfigResource })
123
119
  export class Config {
124
120
  private readonly _config: any;
125
121
 
@@ -33,7 +33,7 @@ export const EDGE_SERVICE_DEFAULTS: Readonly<Record<EdgeServiceName, string>> =
33
33
  [EdgeServiceName.Discord]: 'https://discord-service.dxos.workers.dev',
34
34
  [EdgeServiceName.CorsProxy]: 'https://cors-proxy.dxos.workers.dev',
35
35
  [EdgeServiceName.ApiProxy]: 'https://api-proxy.dxos.workers.dev',
36
- [EdgeServiceName.Introspect]: 'https://introspect-service-labs.dxos.workers.dev/mcp',
36
+ [EdgeServiceName.Introspect]: 'https://mcp-introspect-service-labs.dxos.workers.dev/mcp',
37
37
  [EdgeServiceName.ChatAgent]: 'wss://chat-agent-labs.dxos.workers.dev',
38
38
  });
39
39
 
package/src/preset.ts CHANGED
@@ -45,7 +45,7 @@ export const configPreset = ({ edge = 'main', sandbox }: ConfigPresetOptions = {
45
45
  client: {
46
46
  edgeFeatures: {
47
47
  signaling: true,
48
- echoReplicator: true,
48
+ subductionReplicator: true,
49
49
  feedReplicator: true,
50
50
  },
51
51
  },
@@ -1,11 +0,0 @@
1
- // src/types.ts
2
- var FILE_DEFAULTS = "defaults.yml";
3
- var FILE_ENVS = "envs-map.yml";
4
- var FILE_DYNAMICS = "config.yml";
5
-
6
- export {
7
- FILE_DEFAULTS,
8
- FILE_ENVS,
9
- FILE_DYNAMICS
10
- };
11
- //# sourceMappingURL=chunk-VQRJY4AQ.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\nimport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\n\nexport const FILE_DEFAULTS = 'defaults.yml';\nexport const FILE_ENVS = 'envs-map.yml';\nexport const FILE_DYNAMICS = 'config.yml';\n\ntype DotPrefix<T extends string> = T extends '' ? '' : `.${T}`;\n\n/**\n * Returns all dot-separated nested keys for an object.\n *\n * Read more: https://stackoverflow.com/a/68404823.\n */\ntype DotNestedKeys<T> = (\n T extends object\n ? {\n [K in Exclude<keyof T, symbol>]: `${K}${DotPrefix<DotNestedKeys<T[K]>>}`;\n }[Exclude<keyof T, symbol>]\n : ''\n) extends infer D\n ? Extract<D, string>\n : never;\n\n/**\n * Parse a dot separated nested key into an array of keys.\n *\n * Example: 'services.signal.server' -> ['services', 'signal', 'server'].\n */\nexport type ParseKey<K extends string> = K extends `${infer L}.${infer Rest}` ? [L, ...ParseKey<Rest>] : [K];\n\n/**\n * Array of types that can act as an object key.\n */\ntype Keys = (keyof any)[];\n\n/**\n * Retrieves a property type in a series of nested objects.\n *\n * Read more: https://stackoverflow.com/a/61648690.\n */\nexport type DeepIndex<T, KS extends Keys, Fail = undefined> = KS extends [infer F, ...infer R]\n ? F extends keyof Exclude<T, undefined>\n ? R extends Keys\n ? DeepIndex<Exclude<T, undefined>[F], R, Fail>\n : Fail\n : Fail\n : T;\n\n/**\n * Any nested dot separated key that can be in config.\n */\n// TODO(egorgripasov): Clean once old config deprecated.\nexport type ConfigKey = DotNestedKeys<ConfigProto>;\n"],
5
- "mappings": ";AAMO,IAAMA,gBAAgB;AACtB,IAAMC,YAAY;AAClB,IAAMC,gBAAgB;",
6
- "names": ["FILE_DEFAULTS", "FILE_ENVS", "FILE_DYNAMICS"]
7
- }
@@ -1,146 +0,0 @@
1
- // src/config.ts
2
- import defaultsDeep from "lodash.defaultsdeep";
3
- import isMatch from "lodash.ismatch";
4
- import { InvalidConfigError } from "@dxos/protocols";
5
- import { schema } from "@dxos/protocols/proto";
6
- import { trace } from "@dxos/tracing";
7
- import { getDeep, setDeep } from "@dxos/util";
8
- function _ts_decorate(decorators, target, key, desc) {
9
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
10
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
11
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
- return c > 3 && r && Object.defineProperty(target, key, r), r;
13
- }
14
- var configRootType = schema.getCodecForType("dxos.config.Config");
15
- var mapFromKeyValues = (spec, values) => {
16
- const config = {};
17
- for (const [key, { path, type }] of Object.entries(spec)) {
18
- let value = values[key];
19
- if (value !== void 0) {
20
- if (type) {
21
- switch (type) {
22
- case "boolean": {
23
- value = String(value).toLowerCase() === "true" || value === "1";
24
- break;
25
- }
26
- case "number": {
27
- value = Number(value);
28
- break;
29
- }
30
- case "string": {
31
- break;
32
- }
33
- case "json": {
34
- value = value ? JSON.parse(value) : null;
35
- break;
36
- }
37
- default: {
38
- throw new Error(`Invalid type: ${type}`);
39
- }
40
- }
41
- }
42
- setDeep(config, path.split("."), value);
43
- }
44
- }
45
- return config;
46
- };
47
- var mapToKeyValues = (spec, values) => {
48
- const config = {};
49
- for (const [key, { path, type }] of Object.entries(spec)) {
50
- const value = getDeep(values, path.split("."));
51
- if (value !== void 0) {
52
- switch (type) {
53
- case "json":
54
- config[key] = JSON.stringify(value);
55
- break;
56
- default:
57
- config[key] = value;
58
- }
59
- }
60
- }
61
- return config;
62
- };
63
- var validateConfig = (config) => {
64
- if (!("version" in config)) {
65
- throw new InvalidConfigError({
66
- message: "Version not specified"
67
- });
68
- }
69
- if (config?.version !== 1) {
70
- throw new InvalidConfigError({
71
- message: `Invalid config version: ${config.version}`
72
- });
73
- }
74
- const error = configRootType.protoType.verify(config);
75
- if (error) {
76
- throw new InvalidConfigError({
77
- message: String(error)
78
- });
79
- }
80
- return config;
81
- };
82
- var ConfigResource = /* @__PURE__ */ Symbol.for("dxos.resource.Config");
83
- var Config = class {
84
- _config;
85
- /**
86
- * Creates an immutable instance.
87
- * @constructor
88
- */
89
- constructor(config = {}, ...objects) {
90
- this._config = validateConfig(defaultsDeep(config, ...objects, {
91
- version: 1
92
- }));
93
- }
94
- /**
95
- * Returns an immutable config JSON object.
96
- */
97
- get values() {
98
- return this._config;
99
- }
100
- /**
101
- * Returns the given config property.
102
- *
103
- * @param key A key in the config object. Can be a nested property with keys separated by dots: 'services.signal.server'.
104
- * @param defaultValue Default value to return if option is not present in the config.
105
- * @returns The config value or undefined if the option is not present.
106
- */
107
- get(key, defaultValue) {
108
- return getDeep(this._config, key.split(".")) ?? defaultValue;
109
- }
110
- /**
111
- * Get unique key.
112
- */
113
- find(path, test) {
114
- const values = getDeep(this._config, path.split("."));
115
- if (!Array.isArray(values)) {
116
- return;
117
- }
118
- return values.find((value) => isMatch(value, test));
119
- }
120
- /**
121
- * Returns the given config property or throw if it doesn't exist.
122
- *
123
- * @param key A key in the config object. Can be a nested property with keys separated by dots: 'services.signal.server'.
124
- */
125
- getOrThrow(key) {
126
- const value = getDeep(this._config, key.split("."));
127
- if (!value) {
128
- throw new Error(`Config option not present: ${key}`);
129
- }
130
- return value;
131
- }
132
- };
133
- Config = _ts_decorate([
134
- trace.resource({
135
- annotation: ConfigResource
136
- })
137
- ], Config);
138
-
139
- export {
140
- mapFromKeyValues,
141
- mapToKeyValues,
142
- validateConfig,
143
- ConfigResource,
144
- Config
145
- };
146
- //# sourceMappingURL=chunk-ZY4D4E3Q.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/config.ts"],
4
- "sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\nimport defaultsDeep from 'lodash.defaultsdeep';\nimport isMatch from 'lodash.ismatch';\n\nimport { InvalidConfigError } from '@dxos/protocols';\nimport { schema } from '@dxos/protocols/proto';\nimport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\nimport { trace } from '@dxos/tracing';\nimport { getDeep, setDeep } from '@dxos/util';\n\nimport { type ConfigKey, type DeepIndex, type ParseKey } from './types';\n\ntype MappingSpec = Record<string, { path: string; type?: string }>;\nconst configRootType = schema.getCodecForType('dxos.config.Config');\n\n/**\n * Maps the given objects onto a flattened set of (key x values).\n * Expects parsed yaml content of the form:\n *\n * ```\n * ENV_VAR:\n * path: config.selector.path\n * ```\n *\n * @param {object} spec\n * @param {object} values\n * @return {object}\n */\nexport const mapFromKeyValues = (spec: MappingSpec, values: Record<string, any>) => {\n const config = {};\n\n for (const [key, { path, type }] of Object.entries(spec)) {\n let value = values[key];\n if (value !== undefined) {\n if (type) {\n switch (type) {\n case 'boolean': {\n value = String(value).toLowerCase() === 'true' || value === '1';\n break;\n }\n\n case 'number': {\n value = Number(value);\n break;\n }\n\n case 'string': {\n break;\n }\n\n case 'json': {\n value = value ? JSON.parse(value) : null;\n break;\n }\n\n default: {\n throw new Error(`Invalid type: ${type}`);\n }\n }\n }\n\n setDeep(config, path.split('.'), value);\n }\n }\n\n return config;\n};\n\n/**\n * Maps the given flattend set of (key x values) onto a JSON object.\n * @param {object} spec\n * @param {object} values\n */\nexport const mapToKeyValues = (spec: MappingSpec, values: any) => {\n const config: Record<string, any> = {};\n\n for (const [key, { path, type }] of Object.entries(spec)) {\n const value = getDeep(values, path.split('.'));\n if (value !== undefined) {\n switch (type) {\n case 'json':\n config[key] = JSON.stringify(value);\n break;\n default:\n config[key] = value;\n }\n }\n }\n\n return config;\n};\n\n/**\n * Validate config object.\n */\nexport const validateConfig = (config: ConfigProto): ConfigProto => {\n if (!('version' in config)) {\n throw new InvalidConfigError({ message: 'Version not specified' });\n }\n\n if (config?.version !== 1) {\n throw new InvalidConfigError({ message: `Invalid config version: ${config.version}` });\n }\n\n const error = configRootType.protoType.verify(config);\n if (error) {\n throw new InvalidConfigError({ message: String(error) });\n }\n\n return config;\n};\n\nexport const ConfigResource = Symbol.for('dxos.resource.Config');\n\n/**\n * Global configuration object.\n * NOTE: Config objects are immutable.\n */\n@trace.resource({ annotation: ConfigResource })\nexport class Config {\n private readonly _config: any;\n\n /**\n * Creates an immutable instance.\n * @constructor\n */\n constructor(config: ConfigProto = {}, ...objects: ConfigProto[]) {\n this._config = validateConfig(defaultsDeep(config, ...objects, { version: 1 }));\n }\n\n /**\n * Returns an immutable config JSON object.\n */\n get values(): ConfigProto {\n return this._config;\n }\n\n /**\n * Returns the given config property.\n *\n * @param key A key in the config object. Can be a nested property with keys separated by dots: 'services.signal.server'.\n * @param defaultValue Default value to return if option is not present in the config.\n * @returns The config value or undefined if the option is not present.\n */\n get<K extends ConfigKey>(\n key: K,\n defaultValue?: DeepIndex<ConfigProto, ParseKey<K>>,\n ): DeepIndex<ConfigProto, ParseKey<K>> | undefined {\n return getDeep(this._config, key.split('.')) ?? defaultValue;\n }\n\n /**\n * Get unique key.\n */\n find<T = any>(path: string, test: object): T | undefined {\n const values = getDeep(this._config, path.split('.'));\n if (!Array.isArray(values)) {\n return;\n }\n\n return values.find((value) => isMatch(value, test));\n }\n\n /**\n * Returns the given config property or throw if it doesn't exist.\n *\n * @param key A key in the config object. Can be a nested property with keys separated by dots: 'services.signal.server'.\n */\n getOrThrow<K extends ConfigKey>(key: K): Exclude<DeepIndex<ConfigProto, ParseKey<K>>, undefined> {\n const value: DeepIndex<ConfigProto, ParseKey<K>> | undefined = getDeep(this._config, key.split('.'));\n if (!value) {\n throw new Error(`Config option not present: ${key}`);\n }\n return value;\n }\n}\n"],
5
- "mappings": ";AAIA,OAAOA,kBAAkB;AACzB,OAAOC,aAAa;AAEpB,SAASC,0BAA0B;AACnC,SAASC,cAAc;AAEvB,SAASC,aAAa;AACtB,SAASC,SAASC,eAAe;;;;;;;AAKjC,IAAMC,iBAAiBJ,OAAOK,gBAAgB,oBAAA;AAevC,IAAMC,mBAAmB,CAACC,MAAmBC,WAAAA;AAClD,QAAMC,SAAS,CAAC;AAEhB,aAAW,CAACC,KAAK,EAAEC,MAAMC,KAAI,CAAE,KAAKC,OAAOC,QAAQP,IAAAA,GAAO;AACxD,QAAIQ,QAAQP,OAAOE,GAAAA;AACnB,QAAIK,UAAUC,QAAW;AACvB,UAAIJ,MAAM;AACR,gBAAQA,MAAAA;UACN,KAAK,WAAW;AACdG,oBAAQE,OAAOF,KAAAA,EAAOG,YAAW,MAAO,UAAUH,UAAU;AAC5D;UACF;UAEA,KAAK,UAAU;AACbA,oBAAQI,OAAOJ,KAAAA;AACf;UACF;UAEA,KAAK,UAAU;AACb;UACF;UAEA,KAAK,QAAQ;AACXA,oBAAQA,QAAQK,KAAKC,MAAMN,KAAAA,IAAS;AACpC;UACF;UAEA,SAAS;AACP,kBAAM,IAAIO,MAAM,iBAAiBV,IAAAA,EAAM;UACzC;QACF;MACF;AAEAT,cAAQM,QAAQE,KAAKY,MAAM,GAAA,GAAMR,KAAAA;IACnC;EACF;AAEA,SAAON;AACT;AAOO,IAAMe,iBAAiB,CAACjB,MAAmBC,WAAAA;AAChD,QAAMC,SAA8B,CAAC;AAErC,aAAW,CAACC,KAAK,EAAEC,MAAMC,KAAI,CAAE,KAAKC,OAAOC,QAAQP,IAAAA,GAAO;AACxD,UAAMQ,QAAQb,QAAQM,QAAQG,KAAKY,MAAM,GAAA,CAAA;AACzC,QAAIR,UAAUC,QAAW;AACvB,cAAQJ,MAAAA;QACN,KAAK;AACHH,iBAAOC,GAAAA,IAAOU,KAAKK,UAAUV,KAAAA;AAC7B;QACF;AACEN,iBAAOC,GAAAA,IAAOK;MAClB;IACF;EACF;AAEA,SAAON;AACT;AAKO,IAAMiB,iBAAiB,CAACjB,WAAAA;AAC7B,MAAI,EAAE,aAAaA,SAAS;AAC1B,UAAM,IAAIV,mBAAmB;MAAE4B,SAAS;IAAwB,CAAA;EAClE;AAEA,MAAIlB,QAAQmB,YAAY,GAAG;AACzB,UAAM,IAAI7B,mBAAmB;MAAE4B,SAAS,2BAA2BlB,OAAOmB,OAAO;IAAG,CAAA;EACtF;AAEA,QAAMC,QAAQzB,eAAe0B,UAAUC,OAAOtB,MAAAA;AAC9C,MAAIoB,OAAO;AACT,UAAM,IAAI9B,mBAAmB;MAAE4B,SAASV,OAAOY,KAAAA;IAAO,CAAA;EACxD;AAEA,SAAOpB;AACT;AAEO,IAAMuB,iBAAiBC,uBAAOC,IAAI,sBAAA;AAOlC,IAAMC,SAAN,MAAMA;EACMC;;;;;EAMjB,YAAY3B,SAAsB,CAAC,MAAM4B,SAAwB;AAC/D,SAAKD,UAAUV,eAAe7B,aAAaY,QAAAA,GAAW4B,SAAS;MAAET,SAAS;IAAE,CAAA,CAAA;EAC9E;;;;EAKA,IAAIpB,SAAsB;AACxB,WAAO,KAAK4B;EACd;;;;;;;;EASAE,IACE5B,KACA6B,cACiD;AACjD,WAAOrC,QAAQ,KAAKkC,SAAS1B,IAAIa,MAAM,GAAA,CAAA,KAASgB;EAClD;;;;EAKAC,KAAc7B,MAAc8B,MAA6B;AACvD,UAAMjC,SAASN,QAAQ,KAAKkC,SAASzB,KAAKY,MAAM,GAAA,CAAA;AAChD,QAAI,CAACmB,MAAMC,QAAQnC,MAAAA,GAAS;AAC1B;IACF;AAEA,WAAOA,OAAOgC,KAAK,CAACzB,UAAUjB,QAAQiB,OAAO0B,IAAAA,CAAAA;EAC/C;;;;;;EAOAG,WAAgClC,KAAiE;AAC/F,UAAMK,QAAyDb,QAAQ,KAAKkC,SAAS1B,IAAIa,MAAM,GAAA,CAAA;AAC/F,QAAI,CAACR,OAAO;AACV,YAAM,IAAIO,MAAM,8BAA8BZ,GAAAA,EAAK;IACrD;AACA,WAAOK;EACT;AACF;;QAzDO8B,SAAAA;IAAWC,YAAYd;;;",
6
- "names": ["defaultsDeep", "isMatch", "InvalidConfigError", "schema", "trace", "getDeep", "setDeep", "configRootType", "getCodecForType", "mapFromKeyValues", "spec", "values", "config", "key", "path", "type", "Object", "entries", "value", "undefined", "String", "toLowerCase", "Number", "JSON", "parse", "Error", "split", "mapToKeyValues", "stringify", "validateConfig", "message", "version", "error", "protoType", "verify", "ConfigResource", "Symbol", "for", "Config", "_config", "objects", "get", "defaultValue", "find", "test", "Array", "isArray", "getOrThrow", "resource", "annotation"]
7
- }
@@ -1,197 +0,0 @@
1
- import {
2
- FILE_DEFAULTS,
3
- FILE_DYNAMICS,
4
- FILE_ENVS
5
- } from "./chunk-VQRJY4AQ.mjs";
6
- import {
7
- Config,
8
- ConfigResource,
9
- mapFromKeyValues,
10
- mapToKeyValues,
11
- validateConfig
12
- } from "./chunk-ZY4D4E3Q.mjs";
13
-
14
- // src/index.ts
15
- import * as defs from "@dxos/protocols/proto/dxos/config";
16
-
17
- // src/config-service.ts
18
- import * as FileSystem from "@effect/platform/FileSystem";
19
- import * as Context from "effect/Context";
20
- import * as Effect from "effect/Effect";
21
- import * as Layer from "effect/Layer";
22
- import * as Option from "effect/Option";
23
- import { dirname } from "@dxos/node-std/path";
24
- import * as Yaml from "yaml";
25
- import { DX_CONFIG, DX_DATA, getProfileConfigPath, getProfilePath } from "@dxos/client-protocol";
26
- import { invariant } from "@dxos/invariant";
27
- var __dxlog_file = "/__w/dxos/dxos/packages/sdk/config/src/config-service.ts";
28
- var memoryConfig = new Config({
29
- runtime: {
30
- client: {
31
- edgeFeatures: {
32
- echoReplicator: true,
33
- feedReplicator: true,
34
- signaling: true,
35
- agents: true
36
- }
37
- }
38
- }
39
- });
40
- var defaultConfig = new Config({
41
- runtime: {
42
- client: {
43
- edgeFeatures: {
44
- echoReplicator: true,
45
- feedReplicator: true,
46
- signaling: true,
47
- agents: true
48
- },
49
- storage: {
50
- persistent: true
51
- }
52
- },
53
- services: {
54
- edge: {
55
- url: "wss://edge-production.dxos.workers.dev/"
56
- },
57
- iceProviders: [
58
- {
59
- urls: "https://edge-production.dxos.workers.dev/ice"
60
- }
61
- ],
62
- ai: {
63
- server: "https://ai-service.dxos.workers.dev"
64
- },
65
- ipfs: {
66
- server: "https://api.ipfs.dxos.network/api/v0",
67
- gateway: "https://gateway.ipfs.dxos.network/ipfs"
68
- }
69
- }
70
- }
71
- });
72
- var ConfigService = class _ConfigService extends Context.Tag("ConfigService")() {
73
- static layerMemory = Layer.effect(_ConfigService, Effect.succeed(memoryConfig));
74
- static fromConfig = (config) => Layer.succeed(_ConfigService, config);
75
- static load = (args) => {
76
- const defaultConfigPath = getProfileConfigPath(DX_CONFIG, args.profile);
77
- return Effect.gen(function* () {
78
- const fs = yield* FileSystem.FileSystem;
79
- const configPath = Option.getOrElse(args.config, () => defaultConfigPath);
80
- const configContent = yield* fs.readFileString(configPath);
81
- const configValues = Yaml.parse(configContent);
82
- return _ConfigService.of(new Config(configValues, profileBuiltinDefaults(args.profile).values));
83
- }).pipe(
84
- // If the config file doesn't exist, create it.
85
- Effect.catchTag("SystemError", () => Effect.gen(function* () {
86
- const configValues = defaultConfig.values;
87
- const fs = yield* FileSystem.FileSystem;
88
- const pathToCreate = Option.getOrElse(args.config, () => defaultConfigPath);
89
- yield* fs.makeDirectory(dirname(pathToCreate), {
90
- recursive: true
91
- });
92
- yield* fs.writeFileString(pathToCreate, Yaml.stringify(configValues));
93
- return _ConfigService.of(new Config(configValues));
94
- }))
95
- );
96
- };
97
- };
98
- var profileBuiltinDefaults = (profile) => {
99
- invariant(!profile.endsWith(".yml"), void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 86, S: void 0, A: ["!profile.endsWith('.yml')", ""] });
100
- return new Config({
101
- runtime: {
102
- client: {
103
- edgeFeatures: {
104
- echoReplicator: true,
105
- feedReplicator: true,
106
- signaling: true,
107
- agents: true
108
- },
109
- storage: {
110
- persistent: true,
111
- dataRoot: getProfilePath(DX_DATA, profile)
112
- }
113
- }
114
- }
115
- });
116
- };
117
-
118
- // src/edge-services.ts
119
- var EdgeServiceName = Object.freeze({
120
- Calls: "calls",
121
- Image: "image",
122
- Transcription: "transcription",
123
- Discord: "discord",
124
- CorsProxy: "cors-proxy",
125
- ApiProxy: "api-proxy",
126
- Introspect: "introspect",
127
- ChatAgent: "chat-agent"
128
- });
129
- var EDGE_SERVICE_DEFAULTS = Object.freeze({
130
- [EdgeServiceName.Calls]: "https://calls-service.dxos.workers.dev",
131
- [EdgeServiceName.Image]: "https://image-service-main.dxos.workers.dev",
132
- [EdgeServiceName.Transcription]: "https://calls-service.dxos.workers.dev",
133
- [EdgeServiceName.Discord]: "https://discord-service.dxos.workers.dev",
134
- [EdgeServiceName.CorsProxy]: "https://cors-proxy.dxos.workers.dev",
135
- [EdgeServiceName.ApiProxy]: "https://api-proxy.dxos.workers.dev",
136
- [EdgeServiceName.Introspect]: "https://introspect-service-labs.dxos.workers.dev/mcp",
137
- [EdgeServiceName.ChatAgent]: "wss://chat-agent-labs.dxos.workers.dev"
138
- });
139
- var getEdgeServiceEndpoint = (config, name) => config.values.runtime?.services?.edgeServices?.findLast((service) => service.name === name)?.endpoint ?? EDGE_SERVICE_DEFAULTS[name];
140
-
141
- // src/index.ts
142
- export * from "#loaders";
143
- export * from "#savers";
144
- export * from "#plugin";
145
-
146
- // src/telemetry.ts
147
- import { isNode } from "@dxos/util";
148
- var resolveTelemetryTag = (config) => {
149
- return config?.get("runtime.app.env.DX_TELEMETRY_TAG") ?? (isNode() ? process.env.DX_TELEMETRY_TAG : void 0);
150
- };
151
-
152
- // src/preset.ts
153
- import * as Match from "effect/Match";
154
- var edgeUrl = (edge) => Match.value(edge).pipe(Match.when("local", () => "http://localhost:8787"), Match.when("dev", () => "https://edge.dxos.workers.dev"), Match.when("main", () => "https://edge-main.dxos.workers.dev"), Match.when("production", () => "https://edge-production.dxos.workers.dev"), Match.exhaustive);
155
- var sandboxUrl = (sandbox) => Match.value(sandbox).pipe(Match.when("local", () => "http://localhost:8792"), Match.when("dev", () => "https://sandbox-service.dxos.workers.dev"), Match.when("main", () => "https://sandbox-service.dxos.workers.dev"), Match.when("production", () => "https://sandbox-service.dxos.workers.dev"), Match.exhaustive);
156
- var configPreset = ({ edge = "main", sandbox } = {}) => new Config({
157
- version: 1,
158
- runtime: {
159
- client: {
160
- edgeFeatures: {
161
- signaling: true,
162
- echoReplicator: true,
163
- feedReplicator: true
164
- }
165
- },
166
- services: {
167
- edge: {
168
- url: edgeUrl(edge)
169
- },
170
- ...sandbox ? {
171
- sandbox: {
172
- url: sandboxUrl(sandbox)
173
- }
174
- } : {}
175
- }
176
- }
177
- });
178
- export {
179
- Config,
180
- ConfigResource,
181
- ConfigService,
182
- EDGE_SERVICE_DEFAULTS,
183
- EdgeServiceName,
184
- FILE_DEFAULTS,
185
- FILE_DYNAMICS,
186
- FILE_ENVS,
187
- configPreset,
188
- defaultConfig,
189
- defs,
190
- getEdgeServiceEndpoint,
191
- mapFromKeyValues,
192
- mapToKeyValues,
193
- memoryConfig,
194
- resolveTelemetryTag,
195
- validateConfig
196
- };
197
- //# sourceMappingURL=index.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/index.ts", "../../../src/config-service.ts", "../../../src/edge-services.ts", "../../../src/telemetry.ts", "../../../src/preset.ts"],
4
- "sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\n// TODO(burdon): Why is this exported? (Rename).\nexport * as defs from '@dxos/protocols/proto/dxos/config';\n\nexport { type Config as ConfigProto } from '@dxos/protocols/proto/dxos/config';\n\nexport * from './config';\nexport * from './config-service';\nexport * from './edge-services';\nexport * from '#loaders';\nexport * from '#savers';\nexport * from '#plugin';\nexport * from './telemetry';\nexport * from './types';\nexport * from './preset';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as FileSystem from '@effect/platform/FileSystem';\nimport * as Context from 'effect/Context';\nimport * as Effect from 'effect/Effect';\nimport * as Layer from 'effect/Layer';\nimport * as Option from 'effect/Option';\nimport { dirname } from 'node:path';\nimport * as Yaml from 'yaml';\n\nimport { DX_CONFIG, DX_DATA, getProfileConfigPath, getProfilePath } from '@dxos/client-protocol';\nimport { invariant } from '@dxos/invariant';\n\nimport { Config } from './config';\n\nexport const memoryConfig = new Config({\n runtime: {\n client: {\n edgeFeatures: {\n echoReplicator: true,\n feedReplicator: true,\n signaling: true,\n agents: true,\n },\n },\n },\n});\n\nexport const defaultConfig = new Config({\n runtime: {\n client: {\n edgeFeatures: {\n echoReplicator: true,\n feedReplicator: true,\n signaling: true,\n agents: true,\n },\n storage: {\n persistent: true,\n },\n },\n services: {\n edge: {\n url: 'wss://edge-production.dxos.workers.dev/',\n },\n iceProviders: [\n {\n urls: 'https://edge-production.dxos.workers.dev/ice',\n },\n ],\n ai: {\n server: 'https://ai-service.dxos.workers.dev',\n },\n ipfs: {\n server: 'https://api.ipfs.dxos.network/api/v0',\n gateway: 'https://gateway.ipfs.dxos.network/ipfs',\n },\n },\n },\n});\n\nexport class ConfigService extends Context.Tag('ConfigService')<ConfigService, Config>() {\n static layerMemory = Layer.effect(ConfigService, Effect.succeed(memoryConfig));\n\n static fromConfig = (config: Config) => Layer.succeed(ConfigService, config);\n\n static load = (args: { config: Option.Option<string>; profile: string }) => {\n const defaultConfigPath = getProfileConfigPath(DX_CONFIG, args.profile);\n return Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const configPath = Option.getOrElse(args.config, () => defaultConfigPath);\n const configContent = yield* fs.readFileString(configPath);\n const configValues = Yaml.parse(configContent);\n return ConfigService.of(new Config(configValues, profileBuiltinDefaults(args.profile).values));\n }).pipe(\n // If the config file doesn't exist, create it.\n Effect.catchTag('SystemError', () =>\n Effect.gen(function* () {\n const configValues = defaultConfig.values;\n const fs = yield* FileSystem.FileSystem;\n const pathToCreate = Option.getOrElse(args.config, () => defaultConfigPath);\n yield* fs.makeDirectory(dirname(pathToCreate), { recursive: true });\n yield* fs.writeFileString(pathToCreate, Yaml.stringify(configValues));\n return ConfigService.of(new Config(configValues));\n }),\n ),\n );\n };\n}\n\n/**\n * Default config for a profile.\n * Always merged with the default config.\n */\nconst profileBuiltinDefaults = (profile: string) => {\n invariant(!profile.endsWith('.yml'));\n\n return new Config({\n runtime: {\n client: {\n edgeFeatures: {\n echoReplicator: true,\n feedReplicator: true,\n signaling: true,\n agents: true,\n },\n storage: {\n persistent: true,\n dataRoot: getProfilePath(DX_DATA, profile),\n },\n },\n },\n });\n};\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { type Config } from './config';\n\n/**\n * Canonical names for EDGE (Cloudflare Worker) services.\n * Used as keys into `runtime.services.edgeServices` and {@link EDGE_SERVICE_DEFAULTS}.\n */\nexport const EdgeServiceName = Object.freeze({\n Calls: 'calls',\n Image: 'image',\n Transcription: 'transcription',\n Discord: 'discord',\n CorsProxy: 'cors-proxy',\n ApiProxy: 'api-proxy',\n Introspect: 'introspect',\n ChatAgent: 'chat-agent',\n} as const);\n\nexport type EdgeServiceName = (typeof EdgeServiceName)[keyof typeof EdgeServiceName];\n\n/**\n * Canonical dev/test default endpoints for EDGE services.\n * Single source of truth for the URLs previously hard-coded across plugins.\n * Production values are supplied per-app via `dx.yml` (`runtime.services.edgeServices`).\n */\nexport const EDGE_SERVICE_DEFAULTS: Readonly<Record<EdgeServiceName, string>> = Object.freeze({\n [EdgeServiceName.Calls]: 'https://calls-service.dxos.workers.dev',\n [EdgeServiceName.Image]: 'https://image-service-main.dxos.workers.dev',\n [EdgeServiceName.Transcription]: 'https://calls-service.dxos.workers.dev',\n [EdgeServiceName.Discord]: 'https://discord-service.dxos.workers.dev',\n [EdgeServiceName.CorsProxy]: 'https://cors-proxy.dxos.workers.dev',\n [EdgeServiceName.ApiProxy]: 'https://api-proxy.dxos.workers.dev',\n [EdgeServiceName.Introspect]: 'https://introspect-service-labs.dxos.workers.dev/mcp',\n [EdgeServiceName.ChatAgent]: 'wss://chat-agent-labs.dxos.workers.dev',\n});\n\n/**\n * Resolve the endpoint for an EDGE service.\n * Prefers the matching `runtime.services.edgeServices` entry, falling back to the canonical\n * {@link EDGE_SERVICE_DEFAULTS} entry.\n * `name` is expected to be unique; on duplicates the last entry wins so a later override is\n * not silently shadowed by an earlier one (proto cannot enforce uniqueness on a repeated field).\n */\nexport const getEdgeServiceEndpoint = (config: Config, name: EdgeServiceName): string =>\n config.values.runtime?.services?.edgeServices?.findLast((service) => service.name === name)?.endpoint ??\n EDGE_SERVICE_DEFAULTS[name];\n", "//\n// Copyright 2026 DXOS.org\n//\n\nimport { isNode } from '@dxos/util';\n\nimport { type Config } from './config';\n\n/**\n * Resolves the telemetry tag used as the `X-DXOS-Client-Tag` header on edge\n * requests AND as the `ctx.tag` attribute / resource on observability traces.\n *\n * Keeping a single resolver ensures the same tag identifies a session across\n * edge and telemetry tiers. Precedence:\n *\n * 1. `config.runtime.app.env.DX_TELEMETRY_TAG` — the explicit, deterministic\n * path. Populated from `.env`/build-time by the app's config loaders.\n * 2. `process.env.DX_TELEMETRY_TAG` — Node-only, for dev/CI convenience.\n *\n * Returns `undefined` when unset; callers should no-op on undefined rather\n * than stamping empty strings.\n */\nexport const resolveTelemetryTag = (config?: Config): string | undefined => {\n return config?.get('runtime.app.env.DX_TELEMETRY_TAG') ?? (isNode() ? process.env.DX_TELEMETRY_TAG : undefined);\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Match from 'effect/Match';\n\nimport { Config } from './config';\n\nexport type ConfigPresetOptions = {\n /**\n * Edge service.\n * @default main\n */\n edge?: 'local' | 'dev' | 'main' | 'production';\n\n /**\n * Sandbox service (standalone worker; API at /api/sandbox).\n */\n sandbox?: 'local' | 'dev' | 'main' | 'production';\n};\n\nconst edgeUrl = (edge: NonNullable<ConfigPresetOptions['edge']>) =>\n Match.value(edge).pipe(\n Match.when('local', () => 'http://localhost:8787'),\n Match.when('dev', () => 'https://edge.dxos.workers.dev'),\n Match.when('main', () => 'https://edge-main.dxos.workers.dev'),\n Match.when('production', () => 'https://edge-production.dxos.workers.dev'),\n Match.exhaustive,\n );\n\n// TODO(burdon): Hosted environments share a single worker until per-env deployments exist.\nconst sandboxUrl = (sandbox: NonNullable<ConfigPresetOptions['sandbox']>) =>\n Match.value(sandbox).pipe(\n Match.when('local', () => 'http://localhost:8792'),\n Match.when('dev', () => 'https://sandbox-service.dxos.workers.dev'),\n Match.when('main', () => 'https://sandbox-service.dxos.workers.dev'),\n Match.when('production', () => 'https://sandbox-service.dxos.workers.dev'),\n Match.exhaustive,\n );\n\nexport const configPreset = ({ edge = 'main', sandbox }: ConfigPresetOptions = {}) =>\n new Config({\n version: 1,\n runtime: {\n client: {\n edgeFeatures: {\n signaling: true,\n echoReplicator: true,\n feedReplicator: true,\n },\n },\n services: {\n edge: {\n url: edgeUrl(edge),\n },\n ...(sandbox ? { sandbox: { url: sandboxUrl(sandbox) } } : {}),\n },\n },\n });\n"],
5
- "mappings": "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",
6
- "names": ["defs", "FileSystem", "Context", "Effect", "Layer", "Option", "dirname", "Yaml", "DX_CONFIG", "DX_DATA", "getProfileConfigPath", "getProfilePath", "invariant", "memoryConfig", "client", "edgeFeatures", "echoReplicator", "feedReplicator", "signaling", "agents", "storage", "services", "url", "iceProviders", "ipfs", "gateway", "fromConfig", "succeed", "ConfigService", "config", "load", "args", "defaultConfigPath", "getProfileConfigPath", "DX_CONFIG", "Effect", "FileSystem", "configPath", "getOrElse", "configContent", "fs", "configValues", "parse", "of", "Config", "profileBuiltinDefaults", "pipe", "catchTag", "pathToCreate", "Option", "makeDirectory", "dirname", "recursive", "writeFileString", "runtime", "dataRoot", "EdgeServiceName", "Object", "freeze", "Calls", "Image", "Transcription", "Discord", "CorsProxy", "ApiProxy", "Introspect", "ChatAgent", "EDGE_SERVICE_DEFAULTS", "getEdgeServiceEndpoint", "config", "name", "values", "runtime", "services", "edgeServices", "findLast", "service", "endpoint", "isNode", "resolveTelemetryTag", "config", "get", "process", "env", "DX_TELEMETRY_TAG", "undefined", "Match", "edgeUrl", "edge", "value", "pipe", "when", "exhaustive", "sandboxUrl", "sandbox", "configPreset", "Config", "version", "runtime", "client", "edgeFeatures", "signaling", "echoReplicator", "feedReplicator", "services", "url"]
7
- }