@manifesto-ai/core 0.3.0 → 1.3.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 (279) hide show
  1. package/README.md +148 -498
  2. package/dist/__tests__/apply.test.d.ts +2 -0
  3. package/dist/__tests__/apply.test.d.ts.map +1 -0
  4. package/dist/__tests__/apply.test.js +144 -0
  5. package/dist/__tests__/apply.test.js.map +1 -0
  6. package/dist/__tests__/jcs.test.d.ts +2 -0
  7. package/dist/__tests__/jcs.test.d.ts.map +1 -0
  8. package/dist/__tests__/jcs.test.js +45 -0
  9. package/dist/__tests__/jcs.test.js.map +1 -0
  10. package/dist/core/apply.d.ts +17 -0
  11. package/dist/core/apply.d.ts.map +1 -0
  12. package/dist/core/apply.js +130 -0
  13. package/dist/core/apply.js.map +1 -0
  14. package/dist/core/compute.d.ts +17 -0
  15. package/dist/core/compute.d.ts.map +1 -0
  16. package/dist/core/compute.js +287 -0
  17. package/dist/core/compute.js.map +1 -0
  18. package/dist/core/compute.test.d.ts +2 -0
  19. package/dist/core/compute.test.d.ts.map +1 -0
  20. package/dist/core/compute.test.js +633 -0
  21. package/dist/core/compute.test.js.map +1 -0
  22. package/dist/core/explain.d.ts +14 -0
  23. package/dist/core/explain.d.ts.map +1 -0
  24. package/dist/core/explain.js +78 -0
  25. package/dist/core/explain.js.map +1 -0
  26. package/dist/core/index.d.ts +5 -0
  27. package/dist/core/index.d.ts.map +1 -0
  28. package/dist/core/index.js +5 -0
  29. package/dist/core/index.js.map +1 -0
  30. package/dist/core/validate.d.ts +16 -0
  31. package/dist/core/validate.d.ts.map +1 -0
  32. package/dist/core/validate.js +361 -0
  33. package/dist/core/validate.js.map +1 -0
  34. package/dist/core/validate.test.d.ts +2 -0
  35. package/dist/core/validate.test.d.ts.map +1 -0
  36. package/dist/core/validate.test.js +638 -0
  37. package/dist/core/validate.test.js.map +1 -0
  38. package/dist/core/validation-utils.d.ts +20 -0
  39. package/dist/core/validation-utils.d.ts.map +1 -0
  40. package/dist/core/validation-utils.js +289 -0
  41. package/dist/core/validation-utils.js.map +1 -0
  42. package/dist/errors.d.ts +30 -0
  43. package/dist/errors.d.ts.map +1 -0
  44. package/dist/errors.js +51 -0
  45. package/dist/errors.js.map +1 -0
  46. package/dist/evaluator/computed.d.ts +14 -0
  47. package/dist/evaluator/computed.d.ts.map +1 -0
  48. package/dist/evaluator/computed.js +60 -0
  49. package/dist/evaluator/computed.js.map +1 -0
  50. package/dist/evaluator/context.d.ts +59 -0
  51. package/dist/evaluator/context.d.ts.map +1 -0
  52. package/dist/evaluator/context.js +41 -0
  53. package/dist/evaluator/context.js.map +1 -0
  54. package/dist/evaluator/dag.d.ts +30 -0
  55. package/dist/evaluator/dag.d.ts.map +1 -0
  56. package/dist/evaluator/dag.js +121 -0
  57. package/dist/evaluator/dag.js.map +1 -0
  58. package/dist/evaluator/expr.d.ts +11 -0
  59. package/dist/evaluator/expr.d.ts.map +1 -0
  60. package/dist/evaluator/expr.js +649 -0
  61. package/dist/evaluator/expr.js.map +1 -0
  62. package/dist/evaluator/expr.test.d.ts +2 -0
  63. package/dist/evaluator/expr.test.d.ts.map +1 -0
  64. package/dist/evaluator/expr.test.js +449 -0
  65. package/dist/evaluator/expr.test.js.map +1 -0
  66. package/dist/evaluator/flow.d.ts +35 -0
  67. package/dist/evaluator/flow.d.ts.map +1 -0
  68. package/dist/evaluator/flow.js +387 -0
  69. package/dist/evaluator/flow.js.map +1 -0
  70. package/dist/evaluator/flow.test.d.ts +2 -0
  71. package/dist/evaluator/flow.test.d.ts.map +1 -0
  72. package/dist/evaluator/flow.test.js +499 -0
  73. package/dist/evaluator/flow.test.js.map +1 -0
  74. package/dist/evaluator/index.d.ts +6 -0
  75. package/dist/evaluator/index.d.ts.map +1 -0
  76. package/dist/evaluator/index.js +6 -0
  77. package/dist/evaluator/index.js.map +1 -0
  78. package/dist/factories.d.ts +22 -0
  79. package/dist/factories.d.ts.map +1 -0
  80. package/dist/factories.js +44 -0
  81. package/dist/factories.js.map +1 -0
  82. package/dist/index.d.ts +47 -11
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +30 -45
  85. package/dist/index.js.map +1 -1
  86. package/dist/index.test.d.ts +2 -0
  87. package/dist/index.test.d.ts.map +1 -0
  88. package/dist/index.test.js +13 -0
  89. package/dist/index.test.js.map +1 -0
  90. package/dist/schema/action.d.ts +14 -0
  91. package/dist/schema/action.d.ts.map +1 -0
  92. package/dist/schema/action.js +30 -0
  93. package/dist/schema/action.js.map +1 -0
  94. package/dist/schema/common.d.ts +37 -0
  95. package/dist/schema/common.d.ts.map +1 -0
  96. package/dist/schema/common.js +20 -0
  97. package/dist/schema/common.js.map +1 -0
  98. package/dist/schema/computed.d.ts +23 -0
  99. package/dist/schema/computed.d.ts.map +1 -0
  100. package/dist/schema/computed.js +34 -0
  101. package/dist/schema/computed.js.map +1 -0
  102. package/dist/schema/domain.d.ts +50 -0
  103. package/dist/schema/domain.d.ts.map +1 -0
  104. package/dist/schema/domain.js +60 -0
  105. package/dist/schema/domain.js.map +1 -0
  106. package/dist/schema/expr.d.ts +303 -0
  107. package/dist/schema/expr.d.ts.map +1 -0
  108. package/dist/schema/expr.js +283 -0
  109. package/dist/schema/expr.js.map +1 -0
  110. package/dist/schema/field.d.ts +48 -0
  111. package/dist/schema/field.d.ts.map +1 -0
  112. package/dist/schema/field.js +31 -0
  113. package/dist/schema/field.js.map +1 -0
  114. package/dist/schema/flow.d.ts +103 -0
  115. package/dist/schema/flow.d.ts.map +1 -0
  116. package/dist/schema/flow.js +82 -0
  117. package/dist/schema/flow.js.map +1 -0
  118. package/dist/schema/host-context.d.ts +12 -0
  119. package/dist/schema/host-context.d.ts.map +1 -0
  120. package/dist/schema/host-context.js +23 -0
  121. package/dist/schema/host-context.js.map +1 -0
  122. package/dist/schema/index.d.ts +13 -2
  123. package/dist/schema/index.d.ts.map +1 -1
  124. package/dist/schema/index.js +25 -2
  125. package/dist/schema/index.js.map +1 -1
  126. package/dist/schema/patch.d.ts +59 -0
  127. package/dist/schema/patch.d.ts.map +1 -0
  128. package/dist/schema/patch.js +60 -0
  129. package/dist/schema/patch.js.map +1 -0
  130. package/dist/schema/result.d.ts +142 -0
  131. package/dist/schema/result.d.ts.map +1 -0
  132. package/dist/schema/result.js +94 -0
  133. package/dist/schema/result.js.map +1 -0
  134. package/dist/schema/snapshot.d.ts +153 -0
  135. package/dist/schema/snapshot.d.ts.map +1 -0
  136. package/dist/schema/snapshot.js +160 -0
  137. package/dist/schema/snapshot.js.map +1 -0
  138. package/dist/schema/trace.d.ts +98 -0
  139. package/dist/schema/trace.d.ts.map +1 -0
  140. package/dist/schema/trace.js +90 -0
  141. package/dist/schema/trace.js.map +1 -0
  142. package/dist/schema/type-spec.d.ts +34 -0
  143. package/dist/schema/type-spec.d.ts.map +1 -0
  144. package/dist/schema/type-spec.js +40 -0
  145. package/dist/schema/type-spec.js.map +1 -0
  146. package/dist/utils/canonical.d.ts +37 -0
  147. package/dist/utils/canonical.d.ts.map +1 -0
  148. package/dist/utils/canonical.js +122 -0
  149. package/dist/utils/canonical.js.map +1 -0
  150. package/dist/utils/canonical.test.d.ts +2 -0
  151. package/dist/utils/canonical.test.d.ts.map +1 -0
  152. package/dist/utils/canonical.test.js +183 -0
  153. package/dist/utils/canonical.test.js.map +1 -0
  154. package/dist/utils/hash.d.ts +28 -0
  155. package/dist/utils/hash.d.ts.map +1 -0
  156. package/dist/utils/hash.js +152 -0
  157. package/dist/utils/hash.js.map +1 -0
  158. package/dist/utils/hash.test.d.ts +2 -0
  159. package/dist/utils/hash.test.d.ts.map +1 -0
  160. package/dist/utils/hash.test.js +170 -0
  161. package/dist/utils/hash.test.js.map +1 -0
  162. package/dist/utils/index.d.ts +4 -0
  163. package/dist/utils/index.d.ts.map +1 -0
  164. package/dist/utils/index.js +4 -0
  165. package/dist/utils/index.js.map +1 -0
  166. package/dist/utils/path.d.ts +40 -0
  167. package/dist/utils/path.d.ts.map +1 -0
  168. package/dist/utils/path.js +132 -0
  169. package/dist/utils/path.js.map +1 -0
  170. package/dist/utils/path.test.d.ts +2 -0
  171. package/dist/utils/path.test.d.ts.map +1 -0
  172. package/dist/utils/path.test.js +191 -0
  173. package/dist/utils/path.test.js.map +1 -0
  174. package/package.json +28 -41
  175. package/LICENSE +0 -21
  176. package/dist/dag/graph.d.ts +0 -62
  177. package/dist/dag/graph.d.ts.map +0 -1
  178. package/dist/dag/graph.js +0 -244
  179. package/dist/dag/graph.js.map +0 -1
  180. package/dist/dag/index.d.ts +0 -4
  181. package/dist/dag/index.d.ts.map +0 -1
  182. package/dist/dag/index.js +0 -4
  183. package/dist/dag/index.js.map +0 -1
  184. package/dist/dag/propagation.d.ts +0 -58
  185. package/dist/dag/propagation.d.ts.map +0 -1
  186. package/dist/dag/propagation.js +0 -224
  187. package/dist/dag/propagation.js.map +0 -1
  188. package/dist/dag/topological.d.ts +0 -33
  189. package/dist/dag/topological.d.ts.map +0 -1
  190. package/dist/dag/topological.js +0 -173
  191. package/dist/dag/topological.js.map +0 -1
  192. package/dist/domain/define.d.ts +0 -82
  193. package/dist/domain/define.d.ts.map +0 -1
  194. package/dist/domain/define.js +0 -105
  195. package/dist/domain/define.js.map +0 -1
  196. package/dist/domain/index.d.ts +0 -4
  197. package/dist/domain/index.d.ts.map +0 -1
  198. package/dist/domain/index.js +0 -4
  199. package/dist/domain/index.js.map +0 -1
  200. package/dist/domain/types.d.ts +0 -203
  201. package/dist/domain/types.d.ts.map +0 -1
  202. package/dist/domain/types.js +0 -2
  203. package/dist/domain/types.js.map +0 -1
  204. package/dist/domain/validate.d.ts +0 -17
  205. package/dist/domain/validate.d.ts.map +0 -1
  206. package/dist/domain/validate.js +0 -204
  207. package/dist/domain/validate.js.map +0 -1
  208. package/dist/effect/index.d.ts +0 -4
  209. package/dist/effect/index.d.ts.map +0 -1
  210. package/dist/effect/index.js +0 -4
  211. package/dist/effect/index.js.map +0 -1
  212. package/dist/effect/result.d.ts +0 -100
  213. package/dist/effect/result.d.ts.map +0 -1
  214. package/dist/effect/result.js +0 -163
  215. package/dist/effect/result.js.map +0 -1
  216. package/dist/effect/runner.d.ts +0 -98
  217. package/dist/effect/runner.d.ts.map +0 -1
  218. package/dist/effect/runner.js +0 -321
  219. package/dist/effect/runner.js.map +0 -1
  220. package/dist/effect/types.d.ts +0 -169
  221. package/dist/effect/types.d.ts.map +0 -1
  222. package/dist/effect/types.js +0 -28
  223. package/dist/effect/types.js.map +0 -1
  224. package/dist/expression/analyzer.d.ts +0 -42
  225. package/dist/expression/analyzer.d.ts.map +0 -1
  226. package/dist/expression/analyzer.js +0 -166
  227. package/dist/expression/analyzer.js.map +0 -1
  228. package/dist/expression/evaluator.d.ts +0 -16
  229. package/dist/expression/evaluator.d.ts.map +0 -1
  230. package/dist/expression/evaluator.js +0 -382
  231. package/dist/expression/evaluator.js.map +0 -1
  232. package/dist/expression/index.d.ts +0 -5
  233. package/dist/expression/index.d.ts.map +0 -1
  234. package/dist/expression/index.js +0 -5
  235. package/dist/expression/index.js.map +0 -1
  236. package/dist/expression/parser.d.ts +0 -37
  237. package/dist/expression/parser.d.ts.map +0 -1
  238. package/dist/expression/parser.js +0 -201
  239. package/dist/expression/parser.js.map +0 -1
  240. package/dist/expression/types.d.ts +0 -123
  241. package/dist/expression/types.d.ts.map +0 -1
  242. package/dist/expression/types.js +0 -10
  243. package/dist/expression/types.js.map +0 -1
  244. package/dist/policy/field-policy.d.ts +0 -63
  245. package/dist/policy/field-policy.d.ts.map +0 -1
  246. package/dist/policy/field-policy.js +0 -138
  247. package/dist/policy/field-policy.js.map +0 -1
  248. package/dist/policy/index.d.ts +0 -3
  249. package/dist/policy/index.d.ts.map +0 -1
  250. package/dist/policy/index.js +0 -3
  251. package/dist/policy/index.js.map +0 -1
  252. package/dist/policy/precondition.d.ts +0 -58
  253. package/dist/policy/precondition.d.ts.map +0 -1
  254. package/dist/policy/precondition.js +0 -115
  255. package/dist/policy/precondition.js.map +0 -1
  256. package/dist/runtime/index.d.ts +0 -4
  257. package/dist/runtime/index.d.ts.map +0 -1
  258. package/dist/runtime/index.js +0 -4
  259. package/dist/runtime/index.js.map +0 -1
  260. package/dist/runtime/runtime.d.ts +0 -94
  261. package/dist/runtime/runtime.d.ts.map +0 -1
  262. package/dist/runtime/runtime.js +0 -294
  263. package/dist/runtime/runtime.js.map +0 -1
  264. package/dist/runtime/snapshot.d.ts +0 -39
  265. package/dist/runtime/snapshot.d.ts.map +0 -1
  266. package/dist/runtime/snapshot.js +0 -264
  267. package/dist/runtime/snapshot.js.map +0 -1
  268. package/dist/runtime/subscription.d.ts +0 -82
  269. package/dist/runtime/subscription.d.ts.map +0 -1
  270. package/dist/runtime/subscription.js +0 -222
  271. package/dist/runtime/subscription.js.map +0 -1
  272. package/dist/schema/integration.d.ts +0 -89
  273. package/dist/schema/integration.d.ts.map +0 -1
  274. package/dist/schema/integration.js +0 -171
  275. package/dist/schema/integration.js.map +0 -1
  276. package/dist/schema/validation.d.ts +0 -51
  277. package/dist/schema/validation.d.ts.map +0 -1
  278. package/dist/schema/validation.js +0 -212
  279. package/dist/schema/validation.js.map +0 -1
package/package.json CHANGED
@@ -1,10 +1,26 @@
1
1
  {
2
2
  "name": "@manifesto-ai/core",
3
- "version": "0.3.0",
4
- "description": "AI Native Semantic Layer for SaaS Business Logic",
3
+ "version": "1.3.0",
4
+ "description": "Manifesto Core - Pure semantic calculator for deterministic state computation",
5
+ "author": "eggplantiny <eggplantiny@gmail.com>",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/manifesto-ai/core.git",
10
+ "directory": "packages/core"
11
+ },
12
+ "bugs": {
13
+ "url": "https://github.com/manifesto-ai/core/issues"
14
+ },
15
+ "homepage": "https://github.com/manifesto-ai/core/tree/main/packages/core#readme",
16
+ "keywords": [
17
+ "manifesto",
18
+ "state-management",
19
+ "deterministic",
20
+ "semantic"
21
+ ],
5
22
  "type": "module",
6
23
  "main": "./dist/index.js",
7
- "module": "./dist/index.js",
8
24
  "types": "./dist/index.d.ts",
9
25
  "exports": {
10
26
  ".": {
@@ -13,46 +29,17 @@
13
29
  }
14
30
  },
15
31
  "files": [
16
- "dist",
17
- "README.md",
18
- "LICENSE"
19
- ],
20
- "keywords": [
21
- "manifesto",
22
- "ai",
23
- "semantic",
24
- "domain",
25
- "dsl"
32
+ "dist"
26
33
  ],
27
- "author": "Manifesto Team",
28
- "license": "MIT",
29
- "repository": {
30
- "type": "git",
31
- "url": "git+https://github.com/manifesto-ai/core.git",
32
- "directory": "packages/core"
33
- },
34
- "homepage": "https://github.com/manifesto-ai/core/tree/main/packages/core#readme",
35
- "bugs": {
36
- "url": "https://github.com/manifesto-ai/core/issues"
37
- },
38
- "publishConfig": {
39
- "access": "public"
40
- },
41
- "dependencies": {
42
- "zod": "^3.24.1"
43
- },
44
- "devDependencies": {
45
- "@types/node": "^22.10.2",
46
- "@vitest/coverage-v8": "^2.1.9",
47
- "typescript": "^5.7.2",
48
- "vitest": "^2.1.9"
49
- },
50
34
  "scripts": {
51
35
  "build": "tsc",
36
+ "dev": "tsc --watch",
37
+ "clean": "rm -rf dist",
38
+ "lint": "echo 'lint not configured'",
52
39
  "test": "vitest run",
53
- "test:watch": "vitest",
54
- "test:coverage": "vitest run --coverage",
55
- "typecheck": "tsc --noEmit",
56
- "clean": "rm -rf dist"
40
+ "test:coverage": "vitest run --coverage"
41
+ },
42
+ "devDependencies": {
43
+ "typescript": "^5.7.2"
57
44
  }
58
- }
45
+ }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2024 Manifesto AI
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,62 +0,0 @@
1
- import type { SemanticPath, ManifestoDomain, SourceDefinition, DerivedDefinition, AsyncDefinition } from '../domain/types.js';
2
- /**
3
- * DagNode: 그래프 노드
4
- */
5
- export type DagNode = SourceNode | DerivedNode | AsyncNode;
6
- export type SourceNode = {
7
- kind: 'source';
8
- path: SemanticPath;
9
- definition: SourceDefinition;
10
- };
11
- export type DerivedNode = {
12
- kind: 'derived';
13
- path: SemanticPath;
14
- definition: DerivedDefinition;
15
- };
16
- export type AsyncNode = {
17
- kind: 'async';
18
- path: SemanticPath;
19
- definition: AsyncDefinition;
20
- };
21
- /**
22
- * DependencyGraph: Semantic Path 간 의존 관계 그래프
23
- */
24
- export type DependencyGraph = {
25
- /** 모든 노드 */
26
- nodes: Map<SemanticPath, DagNode>;
27
- /** 정방향 엣지: path → 이 path가 의존하는 것들 */
28
- dependencies: Map<SemanticPath, Set<SemanticPath>>;
29
- /** 역방향 엣지: path → 이 path를 의존하는 것들 */
30
- dependents: Map<SemanticPath, Set<SemanticPath>>;
31
- /** 위상 정렬된 순서 */
32
- topologicalOrder: SemanticPath[];
33
- };
34
- /**
35
- * 도메인에서 의존성 그래프 구축
36
- */
37
- export declare function buildDependencyGraph<TData, TState>(domain: ManifestoDomain<TData, TState>): DependencyGraph;
38
- /**
39
- * 특정 경로의 직접 의존성 조회
40
- */
41
- export declare function getDirectDependencies(graph: DependencyGraph, path: SemanticPath): SemanticPath[];
42
- /**
43
- * 특정 경로를 직접 의존하는 경로들 조회
44
- */
45
- export declare function getDirectDependents(graph: DependencyGraph, path: SemanticPath): SemanticPath[];
46
- /**
47
- * 특정 경로의 모든 의존성 조회 (전이적)
48
- */
49
- export declare function getAllDependencies(graph: DependencyGraph, path: SemanticPath): SemanticPath[];
50
- /**
51
- * 특정 경로를 의존하는 모든 경로 조회 (전이적)
52
- */
53
- export declare function getAllDependents(graph: DependencyGraph, path: SemanticPath): SemanticPath[];
54
- /**
55
- * 순환 의존성이 있는지 확인
56
- */
57
- export declare function hasCycle(graph: DependencyGraph): boolean;
58
- /**
59
- * 두 경로 사이의 경로 찾기 (BFS)
60
- */
61
- export declare function findPath(graph: DependencyGraph, from: SemanticPath, to: SemanticPath): SemanticPath[] | null;
62
- //# sourceMappingURL=graph.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/dag/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EAChB,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,eAAe,CAAC;CAC7B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY;IACZ,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAElC,qCAAqC;IACrC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnD,qCAAqC;IACrC,UAAU,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;IAEjD,gBAAgB;IAChB,gBAAgB,EAAE,YAAY,EAAE,CAAC;CAClC,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAChD,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,GACrC,eAAe,CAiGjB;AAoDD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,YAAY,GACjB,YAAY,EAAE,CAEhB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,YAAY,GACjB,YAAY,EAAE,CAEhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,YAAY,GACjB,YAAY,EAAE,CAmBhB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,YAAY,GACjB,YAAY,EAAE,CAmBhB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CA8BxD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,GACf,YAAY,EAAE,GAAG,IAAI,CA4BvB"}
package/dist/dag/graph.js DELETED
@@ -1,244 +0,0 @@
1
- import { extractPaths } from '../expression/parser.js';
2
- /**
3
- * 도메인에서 의존성 그래프 구축
4
- */
5
- export function buildDependencyGraph(domain) {
6
- const nodes = new Map();
7
- const dependencies = new Map();
8
- const dependents = new Map();
9
- // 1. Source 노드 추가
10
- for (const [path, definition] of Object.entries(domain.paths.sources)) {
11
- nodes.set(path, { kind: 'source', path, definition });
12
- dependencies.set(path, new Set());
13
- if (!dependents.has(path)) {
14
- dependents.set(path, new Set());
15
- }
16
- }
17
- // 2. Derived 노드 추가
18
- for (const [path, definition] of Object.entries(domain.paths.derived)) {
19
- nodes.set(path, { kind: 'derived', path, definition });
20
- // Expression에서 의존성 추출
21
- const deps = new Set(definition.deps);
22
- const exprDeps = extractPaths(definition.expr);
23
- for (const dep of exprDeps) {
24
- if (!dep.startsWith('$')) {
25
- deps.add(dep);
26
- }
27
- }
28
- dependencies.set(path, deps);
29
- // 역방향 엣지 추가
30
- for (const dep of deps) {
31
- if (!dependents.has(dep)) {
32
- dependents.set(dep, new Set());
33
- }
34
- dependents.get(dep).add(path);
35
- }
36
- if (!dependents.has(path)) {
37
- dependents.set(path, new Set());
38
- }
39
- }
40
- // 3. Async 노드 추가
41
- for (const [path, definition] of Object.entries(domain.paths.async)) {
42
- nodes.set(path, { kind: 'async', path, definition });
43
- // Async의 의존성
44
- const deps = new Set(definition.deps);
45
- if (definition.condition) {
46
- const condDeps = extractPaths(definition.condition);
47
- for (const dep of condDeps) {
48
- if (!dep.startsWith('$')) {
49
- deps.add(dep);
50
- }
51
- }
52
- }
53
- dependencies.set(path, deps);
54
- // 역방향 엣지 추가
55
- for (const dep of deps) {
56
- if (!dependents.has(dep)) {
57
- dependents.set(dep, new Set());
58
- }
59
- dependents.get(dep).add(path);
60
- }
61
- // result, loading, error 경로도 노드로 등록 (source처럼 취급)
62
- for (const statePath of [
63
- definition.resultPath,
64
- definition.loadingPath,
65
- definition.errorPath,
66
- ]) {
67
- if (!nodes.has(statePath)) {
68
- // Async 결과 경로는 특별한 source로 취급
69
- dependencies.set(statePath, new Set([path]));
70
- if (!dependents.has(statePath)) {
71
- dependents.set(statePath, new Set());
72
- }
73
- dependents.get(path).add(statePath);
74
- }
75
- }
76
- if (!dependents.has(path)) {
77
- dependents.set(path, new Set());
78
- }
79
- }
80
- // 4. 위상 정렬
81
- const topologicalOrder = topologicalSort(nodes, dependencies);
82
- return {
83
- nodes,
84
- dependencies,
85
- dependents,
86
- topologicalOrder,
87
- };
88
- }
89
- /**
90
- * 위상 정렬 (Kahn's algorithm)
91
- */
92
- function topologicalSort(nodes, dependencies) {
93
- const inDegree = new Map();
94
- const result = [];
95
- // 진입 차수 계산
96
- for (const path of nodes.keys()) {
97
- inDegree.set(path, 0);
98
- }
99
- for (const [path, deps] of dependencies) {
100
- for (const dep of deps) {
101
- if (nodes.has(dep)) {
102
- inDegree.set(path, (inDegree.get(path) ?? 0) + 1);
103
- }
104
- }
105
- }
106
- // 진입 차수가 0인 노드들로 시작
107
- const queue = [];
108
- for (const [path, degree] of inDegree) {
109
- if (degree === 0) {
110
- queue.push(path);
111
- }
112
- }
113
- while (queue.length > 0) {
114
- const current = queue.shift();
115
- result.push(current);
116
- // 현재 노드를 의존하는 노드들의 진입 차수 감소
117
- for (const [path, deps] of dependencies) {
118
- if (deps.has(current)) {
119
- const newDegree = (inDegree.get(path) ?? 0) - 1;
120
- inDegree.set(path, newDegree);
121
- if (newDegree === 0) {
122
- queue.push(path);
123
- }
124
- }
125
- }
126
- }
127
- return result;
128
- }
129
- /**
130
- * 특정 경로의 직접 의존성 조회
131
- */
132
- export function getDirectDependencies(graph, path) {
133
- return [...(graph.dependencies.get(path) ?? [])];
134
- }
135
- /**
136
- * 특정 경로를 직접 의존하는 경로들 조회
137
- */
138
- export function getDirectDependents(graph, path) {
139
- return [...(graph.dependents.get(path) ?? [])];
140
- }
141
- /**
142
- * 특정 경로의 모든 의존성 조회 (전이적)
143
- */
144
- export function getAllDependencies(graph, path) {
145
- const result = new Set();
146
- const visited = new Set();
147
- function traverse(current) {
148
- if (visited.has(current))
149
- return;
150
- visited.add(current);
151
- const deps = graph.dependencies.get(current);
152
- if (deps) {
153
- for (const dep of deps) {
154
- result.add(dep);
155
- traverse(dep);
156
- }
157
- }
158
- }
159
- traverse(path);
160
- return [...result];
161
- }
162
- /**
163
- * 특정 경로를 의존하는 모든 경로 조회 (전이적)
164
- */
165
- export function getAllDependents(graph, path) {
166
- const result = new Set();
167
- const visited = new Set();
168
- function traverse(current) {
169
- if (visited.has(current))
170
- return;
171
- visited.add(current);
172
- const deps = graph.dependents.get(current);
173
- if (deps) {
174
- for (const dep of deps) {
175
- result.add(dep);
176
- traverse(dep);
177
- }
178
- }
179
- }
180
- traverse(path);
181
- return [...result];
182
- }
183
- /**
184
- * 순환 의존성이 있는지 확인
185
- */
186
- export function hasCycle(graph) {
187
- const visited = new Set();
188
- const recursionStack = new Set();
189
- function dfs(path) {
190
- visited.add(path);
191
- recursionStack.add(path);
192
- const deps = graph.dependencies.get(path);
193
- if (deps) {
194
- for (const dep of deps) {
195
- if (!visited.has(dep)) {
196
- if (dfs(dep))
197
- return true;
198
- }
199
- else if (recursionStack.has(dep)) {
200
- return true;
201
- }
202
- }
203
- }
204
- recursionStack.delete(path);
205
- return false;
206
- }
207
- for (const path of graph.nodes.keys()) {
208
- if (!visited.has(path)) {
209
- if (dfs(path))
210
- return true;
211
- }
212
- }
213
- return false;
214
- }
215
- /**
216
- * 두 경로 사이의 경로 찾기 (BFS)
217
- */
218
- export function findPath(graph, from, to) {
219
- if (from === to)
220
- return [from];
221
- const visited = new Set();
222
- const queue = [
223
- { path: from, trail: [from] },
224
- ];
225
- while (queue.length > 0) {
226
- const { path, trail } = queue.shift();
227
- if (visited.has(path))
228
- continue;
229
- visited.add(path);
230
- const deps = graph.dependents.get(path);
231
- if (deps) {
232
- for (const dep of deps) {
233
- if (dep === to) {
234
- return [...trail, dep];
235
- }
236
- if (!visited.has(dep)) {
237
- queue.push({ path: dep, trail: [...trail, dep] });
238
- }
239
- }
240
- }
241
- }
242
- return null;
243
- }
244
- //# sourceMappingURL=graph.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/dag/graph.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- export * from './graph.js';
2
- export * from './topological.js';
3
- export * from './propagation.js';
4
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dag/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
package/dist/dag/index.js DELETED
@@ -1,4 +0,0 @@
1
- export * from './graph.js';
2
- export * from './topological.js';
3
- export * from './propagation.js';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dag/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -1,58 +0,0 @@
1
- import type { SemanticPath } from '../domain/types.js';
2
- import type { DependencyGraph, DagNode } from './graph.js';
3
- import type { Effect } from '../effect/types.js';
4
- /**
5
- * 전파 결과
6
- */
7
- export type PropagationResult = {
8
- /** 변경된 경로와 새 값 */
9
- changes: Map<SemanticPath, unknown>;
10
- /** 트리거된 Async Effect들 */
11
- pendingEffects: Array<{
12
- path: SemanticPath;
13
- effect: Effect;
14
- }>;
15
- /** 발생한 오류들 */
16
- errors: Array<{
17
- path: SemanticPath;
18
- error: string;
19
- }>;
20
- };
21
- /**
22
- * 스냅샷 인터페이스
23
- */
24
- export type SnapshotLike = {
25
- get: (path: SemanticPath) => unknown;
26
- set: (path: SemanticPath, value: unknown) => void;
27
- };
28
- /**
29
- * 변경 전파
30
- */
31
- export declare function propagate(graph: DependencyGraph, changedPaths: SemanticPath[], snapshot: SnapshotLike): PropagationResult;
32
- /**
33
- * Async Effect 완료 후 결과 전파
34
- */
35
- export declare function propagateAsyncResult(graph: DependencyGraph, asyncPath: SemanticPath, result: {
36
- ok: true;
37
- value: unknown;
38
- } | {
39
- ok: false;
40
- error: string;
41
- }, snapshot: SnapshotLike): PropagationResult;
42
- /**
43
- * 특정 경로 변경 시 영향 분석
44
- */
45
- export declare function analyzeImpact(graph: DependencyGraph, path: SemanticPath): {
46
- affectedPaths: SemanticPath[];
47
- affectedNodes: DagNode[];
48
- asyncTriggers: SemanticPath[];
49
- };
50
- /**
51
- * 디바운스된 전파를 위한 유틸리티
52
- */
53
- export declare function createDebouncedPropagator(graph: DependencyGraph, snapshot: SnapshotLike, debounceMs: number): {
54
- queue: (paths: SemanticPath[]) => void;
55
- flush: () => PropagationResult;
56
- cancel: () => void;
57
- };
58
- //# sourceMappingURL=propagation.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../../src/dag/propagation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAKjD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,kBAAkB;IAClB,OAAO,EAAE,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEpC,yBAAyB;IACzB,cAAc,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,YAAY,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IAEH,cAAc;IACd,MAAM,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,YAAY,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;CACJ,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC;IACrC,GAAG,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,YAAY,EAAE,EAC5B,QAAQ,EAAE,YAAY,GACrB,iBAAiB,CAkFnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,eAAe,EACtB,SAAS,EAAE,YAAY,EACvB,MAAM,EAAE;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACnE,QAAQ,EAAE,YAAY,GACrB,iBAAiB,CAwCnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,IAAI,EAAE,YAAY,GACjB;IACD,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B,CAoBA;AAuCD;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,eAAe,EACtB,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,GACjB;IACD,KAAK,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,MAAM,iBAAiB,CAAC;IAC/B,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CA+CA"}