@ellyco/agentic 0.1.2 → 0.2.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.
Files changed (63) hide show
  1. package/README.md +88 -126
  2. package/dist/graphs/graph.d.ts.map +1 -1
  3. package/dist/graphs/graph.js +72 -47
  4. package/dist/graphs/graph.js.map +1 -1
  5. package/dist/graphs/index.d.ts +0 -1
  6. package/dist/graphs/index.d.ts.map +1 -1
  7. package/dist/graphs/index.js +0 -1
  8. package/dist/graphs/index.js.map +1 -1
  9. package/dist/graphs/iterator.d.ts +25 -21
  10. package/dist/graphs/iterator.d.ts.map +1 -1
  11. package/dist/graphs/iterator.js +30 -25
  12. package/dist/graphs/iterator.js.map +1 -1
  13. package/dist/graphs/types.d.ts +2 -3
  14. package/dist/graphs/types.d.ts.map +1 -1
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +1 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/models/BaseModel.d.ts +3 -1
  20. package/dist/models/BaseModel.d.ts.map +1 -1
  21. package/dist/models/BaseModel.js +5 -0
  22. package/dist/models/BaseModel.js.map +1 -1
  23. package/dist/models/react-agent.d.ts +12 -0
  24. package/dist/models/react-agent.d.ts.map +1 -0
  25. package/dist/models/react-agent.js +48 -0
  26. package/dist/models/react-agent.js.map +1 -0
  27. package/dist/nodes/index.d.ts +1 -0
  28. package/dist/nodes/index.d.ts.map +1 -1
  29. package/dist/nodes/index.js +1 -0
  30. package/dist/nodes/index.js.map +1 -1
  31. package/dist/nodes/model-node.d.ts +207 -25
  32. package/dist/nodes/model-node.d.ts.map +1 -1
  33. package/dist/nodes/model-node.js +124 -24
  34. package/dist/nodes/model-node.js.map +1 -1
  35. package/dist/nodes/state-transform.d.ts +108 -0
  36. package/dist/nodes/state-transform.d.ts.map +1 -0
  37. package/dist/nodes/state-transform.js +141 -0
  38. package/dist/nodes/state-transform.js.map +1 -0
  39. package/dist/tools.d.ts +10 -9
  40. package/dist/tools.d.ts.map +1 -1
  41. package/dist/tools.js +3 -2
  42. package/dist/tools.js.map +1 -1
  43. package/dist/util/clone-aware.d.ts +2 -0
  44. package/dist/util/clone-aware.d.ts.map +1 -0
  45. package/dist/util/clone-aware.js +29 -0
  46. package/dist/util/clone-aware.js.map +1 -0
  47. package/dist/util/index.d.ts +4 -0
  48. package/dist/util/index.d.ts.map +1 -0
  49. package/dist/util/index.js +20 -0
  50. package/dist/util/index.js.map +1 -0
  51. package/dist/util/merge-state.d.ts +50 -0
  52. package/dist/util/merge-state.d.ts.map +1 -0
  53. package/dist/util/merge-state.js +88 -0
  54. package/dist/util/merge-state.js.map +1 -0
  55. package/dist/util/serializer.d.ts +15 -0
  56. package/dist/util/serializer.d.ts.map +1 -0
  57. package/dist/util/serializer.js +73 -0
  58. package/dist/util/serializer.js.map +1 -0
  59. package/package.json +5 -1
  60. package/dist/graphs/merge-state.d.ts +0 -22
  61. package/dist/graphs/merge-state.d.ts.map +0 -1
  62. package/dist/graphs/merge-state.js +0 -56
  63. package/dist/graphs/merge-state.js.map +0 -1
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Merges partial state updates into a base state object.
4
+ *
5
+ * Uses registered custom merge strategies for specific types when available.
6
+ * Falls back to standard merge behavior based on value types:
7
+ * - Undefined/null keys: Set the new value directly
8
+ * - Custom merge functions: Use registered strategy (handles entire value including nested)
9
+ * - Class instances: Replace directly (preserves object identity)
10
+ * - Arrays: Replace entire array (no element-level merging)
11
+ * - Plain objects: Recursively merge nested properties
12
+ * - Primitives: Replace the value
13
+ *
14
+ * The merge process uses `cloneAware()` to create a deep clone of the base state,
15
+ * ensuring the original state is not mutated while preserving class instances.
16
+ *
17
+ * @template T - The state object type
18
+ * @param {T} base - The base state to merge into (will not be mutated)
19
+ * @param {Partial<T>} changes - Partial state with updates to apply
20
+ * @param {z.ZodObject} schema - Zod schema for the state type (used to look up custom merge strategies)
21
+ * @returns {T} New merged state object (base is not mutated)
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * // Basic merge
26
+ * const base = { count: 5, items: [1, 2, 3], user: { name: "Alice" } };
27
+ * const changes = { count: 10, user: { age: 30 } };
28
+ * const merged = mergeState(base, changes, schema);
29
+ * // Results in { count: 10, items: [1, 2, 3], user: { name: "Alice", age: 30 } }
30
+ *
31
+ * // Array replacement (arrays are replaced, not merged)
32
+ * const base2 = { items: [1, 2, 3] };
33
+ * const changes2 = { items: [4, 5] };
34
+ * const merged2 = mergeState(base2, changes2, schema);
35
+ * // Results in { items: [4, 5] } (not [1, 2, 3, 4, 5])
36
+ *
37
+ * // Custom merge strategy (if registered)
38
+ * const schema = z.object({
39
+ * count: z.number().register(STATE_MERGE, {
40
+ * merge: (old, change) => old + change // Additive merge
41
+ * })
42
+ * });
43
+ * const base3 = { count: 5 };
44
+ * const changes3 = { count: 3 };
45
+ * const merged3 = mergeState(base3, changes3, schema);
46
+ * // Results in { count: 8 } (5 + 3, not 3)
47
+ * ```
48
+ */
49
+ export declare function mergeState<T extends Record<string, any>>(base: T, changes: Partial<T>, schema: z.ZodObject): T;
50
+ //# sourceMappingURL=merge-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-state.d.ts","sourceRoot":"","sources":["../../src/util/merge-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CAkC9G"}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeState = mergeState;
4
+ const registry_1 = require("../graphs/registry");
5
+ const clone_aware_1 = require("./clone-aware");
6
+ /**
7
+ * Merges partial state updates into a base state object.
8
+ *
9
+ * Uses registered custom merge strategies for specific types when available.
10
+ * Falls back to standard merge behavior based on value types:
11
+ * - Undefined/null keys: Set the new value directly
12
+ * - Custom merge functions: Use registered strategy (handles entire value including nested)
13
+ * - Class instances: Replace directly (preserves object identity)
14
+ * - Arrays: Replace entire array (no element-level merging)
15
+ * - Plain objects: Recursively merge nested properties
16
+ * - Primitives: Replace the value
17
+ *
18
+ * The merge process uses `cloneAware()` to create a deep clone of the base state,
19
+ * ensuring the original state is not mutated while preserving class instances.
20
+ *
21
+ * @template T - The state object type
22
+ * @param {T} base - The base state to merge into (will not be mutated)
23
+ * @param {Partial<T>} changes - Partial state with updates to apply
24
+ * @param {z.ZodObject} schema - Zod schema for the state type (used to look up custom merge strategies)
25
+ * @returns {T} New merged state object (base is not mutated)
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // Basic merge
30
+ * const base = { count: 5, items: [1, 2, 3], user: { name: "Alice" } };
31
+ * const changes = { count: 10, user: { age: 30 } };
32
+ * const merged = mergeState(base, changes, schema);
33
+ * // Results in { count: 10, items: [1, 2, 3], user: { name: "Alice", age: 30 } }
34
+ *
35
+ * // Array replacement (arrays are replaced, not merged)
36
+ * const base2 = { items: [1, 2, 3] };
37
+ * const changes2 = { items: [4, 5] };
38
+ * const merged2 = mergeState(base2, changes2, schema);
39
+ * // Results in { items: [4, 5] } (not [1, 2, 3, 4, 5])
40
+ *
41
+ * // Custom merge strategy (if registered)
42
+ * const schema = z.object({
43
+ * count: z.number().register(STATE_MERGE, {
44
+ * merge: (old, change) => old + change // Additive merge
45
+ * })
46
+ * });
47
+ * const base3 = { count: 5 };
48
+ * const changes3 = { count: 3 };
49
+ * const merged3 = mergeState(base3, changes3, schema);
50
+ * // Results in { count: 8 } (5 + 3, not 3)
51
+ * ```
52
+ */
53
+ function mergeState(base, changes, schema) {
54
+ const acc = (0, clone_aware_1.cloneAware)(base);
55
+ for (const [key, value] of Object.entries(changes)) {
56
+ // If there's nothing already present for the key, then we just set the value
57
+ if (acc[key] === undefined || acc[key] === null) {
58
+ acc[key] = value;
59
+ continue;
60
+ }
61
+ // If there's a registered merge function, then we assume the function handles
62
+ // the entirety of the value, including any nested values
63
+ if (schema && registry_1.STATE_MERGE.has(schema.shape[key])) {
64
+ acc[key] = registry_1.STATE_MERGE.get(schema.shape[key]).merge(acc[key], value);
65
+ continue;
66
+ }
67
+ if (typeof value === "object") {
68
+ // The value is a class instance - replace directly to preserve object identity
69
+ if ('constructor' in value && !["Object", "Array"].includes(value.constructor.name)) {
70
+ acc[key] = value;
71
+ continue;
72
+ }
73
+ // The value is an array - replace the entire array (no element-level merging)
74
+ if (Array.isArray(acc[key])) {
75
+ acc[key] = value;
76
+ continue;
77
+ }
78
+ // The value is a plain object - recursively merge nested properties
79
+ acc[key] = mergeState(acc[key], value, schema.shape[key]);
80
+ }
81
+ else {
82
+ // The value is a primitive - replace directly
83
+ acc[key] = value;
84
+ }
85
+ }
86
+ return acc;
87
+ }
88
+ //# sourceMappingURL=merge-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge-state.js","sourceRoot":"","sources":["../../src/util/merge-state.ts"],"names":[],"mappings":";;AAmDA,gCAkCC;AApFD,iDAAiD;AACjD,+CAA2C;AAE3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,SAAgB,UAAU,CAAgC,IAAO,EAAE,OAAmB,EAAE,MAAmB;IACvG,MAAM,GAAG,GAAG,IAAA,wBAAU,EAAC,IAAI,CAAC,CAAC;IAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,6EAA6E;QAC7E,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,GAA2B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC1C,SAAS;QACb,CAAC;QACD,+EAA+E;QAC/E,yDAAyD;QACzD,IAAI,MAAM,IAAI,sBAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC9C,GAA2B,CAAC,GAAG,CAAC,GAAG,sBAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/F,SAAS;QACb,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,+EAA+E;YAC/E,IAAI,aAAa,IAAI,KAAK,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjF,GAA2B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC1C,SAAS;YACb,CAAC;YACD,8EAA8E;YAC9E,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACzB,GAA2B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC1C,SAAS;YACb,CAAC;YAED,oEAAoE;YACnE,GAA2B,CAAC,GAAG,CAAC,GAAG,UAAU,CAAE,GAA2B,CAAC,GAAG,CAAC,EAAE,KAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC,CAAC;QAC7I,CAAC;aAAM,CAAC;YACJ,8CAA8C;YAC7C,GAA2B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC9C,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC"}
@@ -0,0 +1,15 @@
1
+ type SerializedObject = {
2
+ __className: string;
3
+ [key: string]: unknown;
4
+ };
5
+ export interface Serializer<T, S extends Record<string, unknown>> {
6
+ serialize(value: T): S;
7
+ deserialize(value: S): T;
8
+ }
9
+ type ClassConstructor<T> = new (...args: any[]) => T;
10
+ export declare const SERIALIZERS: Map<string, Serializer<any, any>>;
11
+ export declare function registerSerializer<T, S extends Record<string, unknown>>(constructor: ClassConstructor<T>, serializer: Serializer<T, S>): void;
12
+ export declare function serialize<T extends object>(value: T): SerializedObject;
13
+ export declare function deserialize<T extends object>(value: SerializedObject): T;
14
+ export {};
15
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/util/serializer.ts"],"names":[],"mappings":"AAEA,KAAK,gBAAgB,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC;AAExE,MAAM,WAAW,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5D,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;CAC5B;AAED,KAAK,gBAAgB,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAErD,eAAO,MAAM,WAAW,mCAA0C,CAAC;AAEnE,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAE7I;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,gBAAgB,CAUtE;AAED,wBAAgB,WAAW,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,CAAC,CAOxE"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SERIALIZERS = void 0;
4
+ exports.registerSerializer = registerSerializer;
5
+ exports.serialize = serialize;
6
+ exports.deserialize = deserialize;
7
+ const messages_1 = require("../messages");
8
+ exports.SERIALIZERS = new Map();
9
+ function registerSerializer(constructor, serializer) {
10
+ exports.SERIALIZERS.set(constructor.name, serializer);
11
+ }
12
+ function serialize(value) {
13
+ const className = value.constructor.name;
14
+ const serializer = exports.SERIALIZERS.get(className);
15
+ if (!serializer) {
16
+ throw new Error(`No serializer registered for ${className}`);
17
+ }
18
+ return {
19
+ __className: className,
20
+ ...serializer.serialize(value),
21
+ };
22
+ }
23
+ function deserialize(value) {
24
+ const { __className, ...rest } = value;
25
+ const serializer = exports.SERIALIZERS.get(__className);
26
+ if (!serializer) {
27
+ throw new Error(`No serializer registered for ${__className}`);
28
+ }
29
+ return serializer.deserialize(rest);
30
+ }
31
+ registerSerializer(messages_1.SystemMessage, {
32
+ serialize: (value) => ({
33
+ text: value.text,
34
+ }),
35
+ deserialize: (value) => new messages_1.SystemMessage(value.text),
36
+ });
37
+ registerSerializer(messages_1.UserMessage, {
38
+ serialize: (value) => ({
39
+ text: value.text,
40
+ }),
41
+ deserialize: (value) => new messages_1.UserMessage(value.text),
42
+ });
43
+ registerSerializer(messages_1.AgentMessage, {
44
+ serialize: (value) => ({
45
+ text: value.text,
46
+ }),
47
+ deserialize: (value) => new messages_1.AgentMessage(value.text),
48
+ });
49
+ registerSerializer(messages_1.ToolRequest, {
50
+ serialize: (value) => ({
51
+ toolUseId: value.toolUseId,
52
+ toolName: value.toolName,
53
+ input: value.input,
54
+ }),
55
+ deserialize: (value) => new messages_1.ToolRequest(value.toolUseId, value.toolName, value.input),
56
+ });
57
+ registerSerializer(messages_1.ToolResponse, {
58
+ serialize: (value) => ({
59
+ toolUseId: value.toolUseId,
60
+ toolName: value.toolName,
61
+ output: value.output,
62
+ }),
63
+ deserialize: (value) => new messages_1.ToolResponse(value.toolUseId, value.toolName, value.output),
64
+ });
65
+ registerSerializer(messages_1.ToolError, {
66
+ serialize: (value) => ({
67
+ toolUseId: value.toolUseId,
68
+ toolName: value.toolName,
69
+ error: value.error,
70
+ }),
71
+ deserialize: (value) => new messages_1.ToolError(value.toolUseId, value.toolName, value.error),
72
+ });
73
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/util/serializer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@ellyco/agentic",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "Simple AI Agent Library",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/iontechnian/ellyco-agentic.git"
8
+ },
5
9
  "files": [
6
10
  "dist"
7
11
  ],
@@ -1,22 +0,0 @@
1
- import { z } from "zod";
2
- /**
3
- * Merges partial state updates into a base state object.
4
- * Uses registered custom merge strategies for specific types.
5
- * Falls back to standard object/array merge behavior.
6
- *
7
- * @template T - The state object type
8
- * @param {T} base - The base state to merge into
9
- * @param {Partial<T>} changes - Partial state with updates
10
- * @param {z.ZodObject} schema - Zod schema for the state type
11
- * @returns {T} Merged state object
12
- *
13
- * @example
14
- * ```typescript
15
- * const base = { count: 5, items: [1, 2, 3] };
16
- * const changes = { count: 10, items: [4] };
17
- * const merged = mergeState(base, changes, schema);
18
- * // Results in { count: 10, items: [4] }
19
- * ```
20
- */
21
- export declare function mergeState<T extends Record<string, any>>(base: T, changes: Partial<T>, schema: z.ZodObject): T;
22
- //# sourceMappingURL=merge-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-state.d.ts","sourceRoot":"","sources":["../../src/graphs/merge-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,GAAG,CAAC,CA4B9G"}
@@ -1,56 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeState = mergeState;
4
- const registry_1 = require("./registry");
5
- /**
6
- * Merges partial state updates into a base state object.
7
- * Uses registered custom merge strategies for specific types.
8
- * Falls back to standard object/array merge behavior.
9
- *
10
- * @template T - The state object type
11
- * @param {T} base - The base state to merge into
12
- * @param {Partial<T>} changes - Partial state with updates
13
- * @param {z.ZodObject} schema - Zod schema for the state type
14
- * @returns {T} Merged state object
15
- *
16
- * @example
17
- * ```typescript
18
- * const base = { count: 5, items: [1, 2, 3] };
19
- * const changes = { count: 10, items: [4] };
20
- * const merged = mergeState(base, changes, schema);
21
- * // Results in { count: 10, items: [4] }
22
- * ```
23
- */
24
- function mergeState(base, changes, schema) {
25
- const acc = structuredClone(base);
26
- for (const [key, value] of Object.entries(changes)) {
27
- // if there's nothing already present for the key, then we just set the value
28
- if (acc[key] === undefined || acc[key] === null) {
29
- acc[key] = value;
30
- continue;
31
- }
32
- // if there's a registered merge function, then we assume the function handles the entirety of the value, including any nested values
33
- if (registry_1.STATE_MERGE.has(schema.shape[key])) {
34
- acc[key] = registry_1.STATE_MERGE.get(schema.shape[key]).merge(acc[key], value);
35
- continue;
36
- }
37
- if (typeof value === "object") {
38
- if (Array.isArray(acc[key])) {
39
- acc[key] = value;
40
- }
41
- else {
42
- acc[key] = mergeState(acc[key], value, schema.shape[key]);
43
- }
44
- }
45
- else {
46
- if (registry_1.STATE_MERGE.has(schema.shape[key]) && acc[key] !== undefined) {
47
- acc[key] = registry_1.STATE_MERGE.get(schema.shape[key]).merge(acc[key], value);
48
- }
49
- else {
50
- acc[key] = value;
51
- }
52
- }
53
- }
54
- return acc;
55
- }
56
- //# sourceMappingURL=merge-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-state.js","sourceRoot":"","sources":["../../src/graphs/merge-state.ts"],"names":[],"mappings":";;AAsBA,gCA4BC;AAjDD,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,UAAU,CAAgC,IAAO,EAAE,OAAmB,EAAE,MAAmB;IACvG,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,6EAA6E;QAC7E,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,GAA2B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC1C,SAAS;QACb,CAAC;QACD,qIAAqI;QACrI,IAAI,sBAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACpC,GAA2B,CAAC,GAAG,CAAC,GAAG,sBAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC/F,SAAS;QACb,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACzB,GAA2B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACH,GAA2B,CAAC,GAAG,CAAC,GAAG,UAAU,CAAE,GAA2B,CAAC,GAAG,CAAC,EAAE,KAAmB,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC,CAAC;YAC7I,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,IAAI,sBAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC9D,GAA2B,CAAC,GAAG,CAAC,GAAG,sBAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YACnG,CAAC;iBAAM,CAAC;gBACH,GAA2B,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAC9C,CAAC;QACL,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC"}