@tienne/gestalt 0.87.0 → 0.89.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 (280) hide show
  1. package/CLAUDE.md +12 -4
  2. package/README.ko.md +2 -1
  3. package/README.md +3 -1
  4. package/dist/bin/gestalt-hook.d.ts +5 -0
  5. package/dist/bin/gestalt-hook.d.ts.map +1 -0
  6. package/dist/bin/gestalt-hook.js +51 -0
  7. package/dist/bin/gestalt-hook.js.map +1 -0
  8. package/dist/package.json +5 -3
  9. package/dist/plugin/skills/_shared/proactive-routing.md +1 -0
  10. package/dist/plugin/skills/architecture/SKILL.md +913 -0
  11. package/dist/plugin/skills/blast-radius/SKILL.md +11 -1
  12. package/dist/plugin/skills/diff-radius/SKILL.md +11 -0
  13. package/dist/schemas/architecture-ir.schema.json +596 -0
  14. package/dist/schemas/gestalt.schema.json +19 -0
  15. package/dist/src/architecture/canvas-geometry.d.ts +40 -0
  16. package/dist/src/architecture/canvas-geometry.d.ts.map +1 -0
  17. package/dist/src/architecture/canvas-geometry.js +212 -0
  18. package/dist/src/architecture/canvas-geometry.js.map +1 -0
  19. package/dist/src/architecture/codeowners.d.ts +16 -0
  20. package/dist/src/architecture/codeowners.d.ts.map +1 -0
  21. package/dist/src/architecture/codeowners.js +58 -0
  22. package/dist/src/architecture/codeowners.js.map +1 -0
  23. package/dist/src/architecture/compare-layout.d.ts +27 -0
  24. package/dist/src/architecture/compare-layout.d.ts.map +1 -0
  25. package/dist/src/architecture/compare-layout.js +72 -0
  26. package/dist/src/architecture/compare-layout.js.map +1 -0
  27. package/dist/src/architecture/dataflow-layout.d.ts +29 -0
  28. package/dist/src/architecture/dataflow-layout.d.ts.map +1 -0
  29. package/dist/src/architecture/dataflow-layout.js +229 -0
  30. package/dist/src/architecture/dataflow-layout.js.map +1 -0
  31. package/dist/src/architecture/doc-fresh.d.ts +31 -0
  32. package/dist/src/architecture/doc-fresh.d.ts.map +1 -0
  33. package/dist/src/architecture/doc-fresh.js +84 -0
  34. package/dist/src/architecture/doc-fresh.js.map +1 -0
  35. package/dist/src/architecture/doc-link.d.ts +84 -0
  36. package/dist/src/architecture/doc-link.d.ts.map +1 -0
  37. package/dist/src/architecture/doc-link.js +396 -0
  38. package/dist/src/architecture/doc-link.js.map +1 -0
  39. package/dist/src/architecture/doc-routes.d.ts +39 -0
  40. package/dist/src/architecture/doc-routes.d.ts.map +1 -0
  41. package/dist/src/architecture/doc-routes.js +123 -0
  42. package/dist/src/architecture/doc-routes.js.map +1 -0
  43. package/dist/src/architecture/doc-scan.d.ts +107 -0
  44. package/dist/src/architecture/doc-scan.d.ts.map +1 -0
  45. package/dist/src/architecture/doc-scan.js +617 -0
  46. package/dist/src/architecture/doc-scan.js.map +1 -0
  47. package/dist/src/architecture/doc-stale.d.ts +32 -0
  48. package/dist/src/architecture/doc-stale.d.ts.map +1 -0
  49. package/dist/src/architecture/doc-stale.js +60 -0
  50. package/dist/src/architecture/doc-stale.js.map +1 -0
  51. package/dist/src/architecture/drilldown.d.ts +51 -0
  52. package/dist/src/architecture/drilldown.d.ts.map +1 -0
  53. package/dist/src/architecture/drilldown.js +1160 -0
  54. package/dist/src/architecture/drilldown.js.map +1 -0
  55. package/dist/src/architecture/endpoint-match.d.ts +43 -0
  56. package/dist/src/architecture/endpoint-match.d.ts.map +1 -0
  57. package/dist/src/architecture/endpoint-match.js +133 -0
  58. package/dist/src/architecture/endpoint-match.js.map +1 -0
  59. package/dist/src/architecture/flow-layout.d.ts +79 -0
  60. package/dist/src/architecture/flow-layout.d.ts.map +1 -0
  61. package/dist/src/architecture/flow-layout.js +519 -0
  62. package/dist/src/architecture/flow-layout.js.map +1 -0
  63. package/dist/src/architecture/focus.d.ts +14 -0
  64. package/dist/src/architecture/focus.d.ts.map +1 -0
  65. package/dist/src/architecture/focus.js +107 -0
  66. package/dist/src/architecture/focus.js.map +1 -0
  67. package/dist/src/architecture/global-context.d.ts +23 -0
  68. package/dist/src/architecture/global-context.d.ts.map +1 -0
  69. package/dist/src/architecture/global-context.js +67 -0
  70. package/dist/src/architecture/global-context.js.map +1 -0
  71. package/dist/src/architecture/html-client.d.ts +35 -0
  72. package/dist/src/architecture/html-client.d.ts.map +1 -0
  73. package/dist/src/architecture/html-client.js +1852 -0
  74. package/dist/src/architecture/html-client.js.map +1 -0
  75. package/dist/src/architecture/html-renderer.d.ts +22 -0
  76. package/dist/src/architecture/html-renderer.d.ts.map +1 -0
  77. package/dist/src/architecture/html-renderer.js +1290 -0
  78. package/dist/src/architecture/html-renderer.js.map +1 -0
  79. package/dist/src/architecture/html-theme.d.ts +25 -0
  80. package/dist/src/architecture/html-theme.d.ts.map +1 -0
  81. package/dist/src/architecture/html-theme.js +681 -0
  82. package/dist/src/architecture/html-theme.js.map +1 -0
  83. package/dist/src/architecture/index.d.ts +9 -0
  84. package/dist/src/architecture/index.d.ts.map +1 -0
  85. package/dist/src/architecture/index.js +9 -0
  86. package/dist/src/architecture/index.js.map +1 -0
  87. package/dist/src/architecture/ir-schema.d.ts +1832 -0
  88. package/dist/src/architecture/ir-schema.d.ts.map +1 -0
  89. package/dist/src/architecture/ir-schema.js +343 -0
  90. package/dist/src/architecture/ir-schema.js.map +1 -0
  91. package/dist/src/architecture/kind-text.d.ts +21 -0
  92. package/dist/src/architecture/kind-text.d.ts.map +1 -0
  93. package/dist/src/architecture/kind-text.js +42 -0
  94. package/dist/src/architecture/kind-text.js.map +1 -0
  95. package/dist/src/architecture/layout.d.ts +227 -0
  96. package/dist/src/architecture/layout.d.ts.map +1 -0
  97. package/dist/src/architecture/layout.js +627 -0
  98. package/dist/src/architecture/layout.js.map +1 -0
  99. package/dist/src/architecture/mcp-tool-match.d.ts +49 -0
  100. package/dist/src/architecture/mcp-tool-match.d.ts.map +1 -0
  101. package/dist/src/architecture/mcp-tool-match.js +53 -0
  102. package/dist/src/architecture/mcp-tool-match.js.map +1 -0
  103. package/dist/src/architecture/merge.d.ts +54 -0
  104. package/dist/src/architecture/merge.d.ts.map +1 -0
  105. package/dist/src/architecture/merge.js +681 -0
  106. package/dist/src/architecture/merge.js.map +1 -0
  107. package/dist/src/architecture/micro-app.d.ts +20 -0
  108. package/dist/src/architecture/micro-app.d.ts.map +1 -0
  109. package/dist/src/architecture/micro-app.js +41 -0
  110. package/dist/src/architecture/micro-app.js.map +1 -0
  111. package/dist/src/architecture/name-ref-match.d.ts +43 -0
  112. package/dist/src/architecture/name-ref-match.d.ts.map +1 -0
  113. package/dist/src/architecture/name-ref-match.js +127 -0
  114. package/dist/src/architecture/name-ref-match.js.map +1 -0
  115. package/dist/src/architecture/packs/data.d.ts +109 -0
  116. package/dist/src/architecture/packs/data.d.ts.map +1 -0
  117. package/dist/src/architecture/packs/data.js +64 -0
  118. package/dist/src/architecture/packs/data.js.map +1 -0
  119. package/dist/src/architecture/packs/generic.d.ts +47 -0
  120. package/dist/src/architecture/packs/generic.d.ts.map +1 -0
  121. package/dist/src/architecture/packs/generic.js +35 -0
  122. package/dist/src/architecture/packs/generic.js.map +1 -0
  123. package/dist/src/architecture/packs/harness.d.ts +96 -0
  124. package/dist/src/architecture/packs/harness.d.ts.map +1 -0
  125. package/dist/src/architecture/packs/harness.js +66 -0
  126. package/dist/src/architecture/packs/harness.js.map +1 -0
  127. package/dist/src/architecture/packs/index.d.ts +840 -0
  128. package/dist/src/architecture/packs/index.d.ts.map +1 -0
  129. package/dist/src/architecture/packs/index.js +87 -0
  130. package/dist/src/architecture/packs/index.js.map +1 -0
  131. package/dist/src/architecture/packs/infra.d.ts +91 -0
  132. package/dist/src/architecture/packs/infra.d.ts.map +1 -0
  133. package/dist/src/architecture/packs/infra.js +57 -0
  134. package/dist/src/architecture/packs/infra.js.map +1 -0
  135. package/dist/src/architecture/packs/knowledge.d.ts +72 -0
  136. package/dist/src/architecture/packs/knowledge.d.ts.map +1 -0
  137. package/dist/src/architecture/packs/knowledge.js +58 -0
  138. package/dist/src/architecture/packs/knowledge.js.map +1 -0
  139. package/dist/src/architecture/packs/process.d.ts +87 -0
  140. package/dist/src/architecture/packs/process.d.ts.map +1 -0
  141. package/dist/src/architecture/packs/process.js +52 -0
  142. package/dist/src/architecture/packs/process.js.map +1 -0
  143. package/dist/src/architecture/packs/render-classes.d.ts +11 -0
  144. package/dist/src/architecture/packs/render-classes.d.ts.map +1 -0
  145. package/dist/src/architecture/packs/render-classes.js +92 -0
  146. package/dist/src/architecture/packs/render-classes.js.map +1 -0
  147. package/dist/src/architecture/packs/types.d.ts +66 -0
  148. package/dist/src/architecture/packs/types.d.ts.map +1 -0
  149. package/dist/src/architecture/packs/types.js +18 -0
  150. package/dist/src/architecture/packs/types.js.map +1 -0
  151. package/dist/src/architecture/packs/web-product.d.ts +348 -0
  152. package/dist/src/architecture/packs/web-product.d.ts.map +1 -0
  153. package/dist/src/architecture/packs/web-product.js +226 -0
  154. package/dist/src/architecture/packs/web-product.js.map +1 -0
  155. package/dist/src/architecture/sequence-layout.d.ts +50 -0
  156. package/dist/src/architecture/sequence-layout.d.ts.map +1 -0
  157. package/dist/src/architecture/sequence-layout.js +140 -0
  158. package/dist/src/architecture/sequence-layout.js.map +1 -0
  159. package/dist/src/architecture/service-facts.d.ts +30 -0
  160. package/dist/src/architecture/service-facts.d.ts.map +1 -0
  161. package/dist/src/architecture/service-facts.js +88 -0
  162. package/dist/src/architecture/service-facts.js.map +1 -0
  163. package/dist/src/architecture/store.d.ts +50 -0
  164. package/dist/src/architecture/store.d.ts.map +1 -0
  165. package/dist/src/architecture/store.js +320 -0
  166. package/dist/src/architecture/store.js.map +1 -0
  167. package/dist/src/architecture/types.d.ts +400 -0
  168. package/dist/src/architecture/types.d.ts.map +1 -0
  169. package/dist/src/architecture/types.js +75 -0
  170. package/dist/src/architecture/types.js.map +1 -0
  171. package/dist/src/architecture/validator.d.ts +65 -0
  172. package/dist/src/architecture/validator.d.ts.map +1 -0
  173. package/dist/src/architecture/validator.js +1249 -0
  174. package/dist/src/architecture/validator.js.map +1 -0
  175. package/dist/src/code-graph/cochange.d.ts +40 -0
  176. package/dist/src/code-graph/cochange.d.ts.map +1 -1
  177. package/dist/src/code-graph/cochange.js +88 -3
  178. package/dist/src/code-graph/cochange.js.map +1 -1
  179. package/dist/src/code-graph/engine.d.ts +35 -1
  180. package/dist/src/code-graph/engine.d.ts.map +1 -1
  181. package/dist/src/code-graph/engine.js +300 -55
  182. package/dist/src/code-graph/engine.js.map +1 -1
  183. package/dist/src/code-graph/freshness.d.ts +39 -0
  184. package/dist/src/code-graph/freshness.d.ts.map +1 -0
  185. package/dist/src/code-graph/freshness.js +93 -0
  186. package/dist/src/code-graph/freshness.js.map +1 -0
  187. package/dist/src/code-graph/hooks/background.d.ts +18 -0
  188. package/dist/src/code-graph/hooks/background.d.ts.map +1 -0
  189. package/dist/src/code-graph/hooks/background.js +55 -0
  190. package/dist/src/code-graph/hooks/background.js.map +1 -0
  191. package/dist/src/code-graph/hooks/pointers.d.ts +66 -0
  192. package/dist/src/code-graph/hooks/pointers.d.ts.map +1 -0
  193. package/dist/src/code-graph/hooks/pointers.js +292 -0
  194. package/dist/src/code-graph/hooks/pointers.js.map +1 -0
  195. package/dist/src/code-graph/hooks/rank.d.ts +36 -0
  196. package/dist/src/code-graph/hooks/rank.d.ts.map +1 -0
  197. package/dist/src/code-graph/hooks/rank.js +212 -0
  198. package/dist/src/code-graph/hooks/rank.js.map +1 -0
  199. package/dist/src/code-graph/hooks/run.d.ts +37 -0
  200. package/dist/src/code-graph/hooks/run.d.ts.map +1 -0
  201. package/dist/src/code-graph/hooks/run.js +324 -0
  202. package/dist/src/code-graph/hooks/run.js.map +1 -0
  203. package/dist/src/code-graph/hooks/settings.d.ts +11 -0
  204. package/dist/src/code-graph/hooks/settings.d.ts.map +1 -0
  205. package/dist/src/code-graph/hooks/settings.js +25 -0
  206. package/dist/src/code-graph/hooks/settings.js.map +1 -0
  207. package/dist/src/code-graph/hooks/state.d.ts +20 -0
  208. package/dist/src/code-graph/hooks/state.d.ts.map +1 -0
  209. package/dist/src/code-graph/hooks/state.js +73 -0
  210. package/dist/src/code-graph/hooks/state.js.map +1 -0
  211. package/dist/src/code-graph/index.d.ts +6 -2
  212. package/dist/src/code-graph/index.d.ts.map +1 -1
  213. package/dist/src/code-graph/index.js +3 -1
  214. package/dist/src/code-graph/index.js.map +1 -1
  215. package/dist/src/code-graph/ko-text.d.ts +39 -0
  216. package/dist/src/code-graph/ko-text.d.ts.map +1 -0
  217. package/dist/src/code-graph/ko-text.js +223 -0
  218. package/dist/src/code-graph/ko-text.js.map +1 -0
  219. package/dist/src/code-graph/lock.d.ts +30 -0
  220. package/dist/src/code-graph/lock.d.ts.map +1 -0
  221. package/dist/src/code-graph/lock.js +140 -0
  222. package/dist/src/code-graph/lock.js.map +1 -0
  223. package/dist/src/code-graph/plugins/typescript-skeleton.d.ts +7 -0
  224. package/dist/src/code-graph/plugins/typescript-skeleton.d.ts.map +1 -0
  225. package/dist/src/code-graph/plugins/typescript-skeleton.js +157 -0
  226. package/dist/src/code-graph/plugins/typescript-skeleton.js.map +1 -0
  227. package/dist/src/code-graph/plugins/typescript.d.ts.map +1 -1
  228. package/dist/src/code-graph/plugins/typescript.js +58 -0
  229. package/dist/src/code-graph/plugins/typescript.js.map +1 -1
  230. package/dist/src/code-graph/storage.d.ts +85 -0
  231. package/dist/src/code-graph/storage.d.ts.map +1 -1
  232. package/dist/src/code-graph/storage.js +318 -3
  233. package/dist/src/code-graph/storage.js.map +1 -1
  234. package/dist/src/code-graph/types.d.ts +66 -0
  235. package/dist/src/code-graph/types.d.ts.map +1 -1
  236. package/dist/src/core/config.d.ts +33 -0
  237. package/dist/src/core/config.d.ts.map +1 -1
  238. package/dist/src/core/config.js +14 -0
  239. package/dist/src/core/config.js.map +1 -1
  240. package/dist/src/core/errors.d.ts +4 -0
  241. package/dist/src/core/errors.d.ts.map +1 -1
  242. package/dist/src/core/errors.js +8 -0
  243. package/dist/src/core/errors.js.map +1 -1
  244. package/dist/src/core/hooks-env.d.ts +9 -0
  245. package/dist/src/core/hooks-env.d.ts.map +1 -0
  246. package/dist/src/core/hooks-env.js +16 -0
  247. package/dist/src/core/hooks-env.js.map +1 -0
  248. package/dist/src/mcp/schemas.d.ts +326 -3
  249. package/dist/src/mcp/schemas.d.ts.map +1 -1
  250. package/dist/src/mcp/schemas.js +170 -2
  251. package/dist/src/mcp/schemas.js.map +1 -1
  252. package/dist/src/mcp/server.d.ts.map +1 -1
  253. package/dist/src/mcp/server.js +28 -4
  254. package/dist/src/mcp/server.js.map +1 -1
  255. package/dist/src/mcp/tools/architecture-passthrough.d.ts +9 -0
  256. package/dist/src/mcp/tools/architecture-passthrough.d.ts.map +1 -0
  257. package/dist/src/mcp/tools/architecture-passthrough.js +587 -0
  258. package/dist/src/mcp/tools/architecture-passthrough.js.map +1 -0
  259. package/dist/src/mcp/tools/code-graph-passthrough.d.ts +6 -1
  260. package/dist/src/mcp/tools/code-graph-passthrough.d.ts.map +1 -1
  261. package/dist/src/mcp/tools/code-graph-passthrough.js +95 -6
  262. package/dist/src/mcp/tools/code-graph-passthrough.js.map +1 -1
  263. package/dist/src/utils/claude-projects.d.ts +19 -0
  264. package/dist/src/utils/claude-projects.d.ts.map +1 -0
  265. package/dist/src/utils/claude-projects.js +157 -0
  266. package/dist/src/utils/claude-projects.js.map +1 -0
  267. package/dist/src/utils/read-only-tools.d.ts +19 -0
  268. package/dist/src/utils/read-only-tools.d.ts.map +1 -0
  269. package/dist/src/utils/read-only-tools.js +132 -0
  270. package/dist/src/utils/read-only-tools.js.map +1 -0
  271. package/package.json +5 -3
  272. package/plugin/.codex-plugin/plugin.json +1 -1
  273. package/plugin/.mcp.json +1 -1
  274. package/plugin/mcp.json +1 -1
  275. package/plugin/skills/_shared/proactive-routing.md +1 -0
  276. package/plugin/skills/architecture/SKILL.md +913 -0
  277. package/plugin/skills/blast-radius/SKILL.md +11 -1
  278. package/plugin/skills/diff-radius/SKILL.md +11 -0
  279. package/schemas/architecture-ir.schema.json +596 -0
  280. package/schemas/gestalt.schema.json +19 -0
@@ -0,0 +1,400 @@
1
+ import { type PackDisplayKind, type PackEdgeKind, type PackNodeKind } from './packs/index.js';
2
+ import type { RenderClass } from './packs/types.js';
3
+ /** knowledge는 문서 지도, knowledge-link는 기술 그림에 문서를 엮은 그림이다 */
4
+ export declare const ARCHITECTURE_VIEWS: readonly ["screen-chain", "deploy-path", "knowledge", "knowledge-link"];
5
+ /** kind 목록은 팩에서 온다. 새 카테고리는 packs/에 팩을 더하면 여기 따라 붙는다 */
6
+ export declare const NODE_KINDS: readonly [PackNodeKind, ...PackNodeKind[]];
7
+ export declare const EDGE_KINDS: readonly [PackEdgeKind, ...PackEdgeKind[]];
8
+ /** endpoint가 받는 호출 방식. 없으면 http다. mcp면 label이 도구 이름이다 */
9
+ export declare const ENDPOINT_PROTOCOLS: readonly ["http", "mcp"];
10
+ export declare const EVIDENCE_TYPES: readonly ["code", "spec", "doc", "user", "live"];
11
+ export declare const VISIBILITIES: readonly ["public", "private"];
12
+ export declare const LINE_STYLES: readonly ["solid", "dashed"];
13
+ export declare const CONTEXT_SOURCE_VIAS: readonly ["repo", "global", "mcp", "skill", "user"];
14
+ export declare const PLATFORMS: readonly ["web", "android", "ios"];
15
+ /**
16
+ * 흐름의 행위자. person은 고객이나 직원처럼 사람이 누르는 쪽, system은 배치나 타이머, 자동 발송이다.
17
+ * agent는 세션 모델이나 서브에이전트처럼 지시를 읽고 스스로 판단하는 AI 쪽이다
18
+ */
19
+ export declare const FLOW_ACTOR_KINDS: readonly ["person", "system", "agent"];
20
+ /** main은 정상 흐름, side는 취소나 노쇼처럼 옆으로 빠지는 흐름이다 */
21
+ export declare const FLOW_PATHS: readonly ["main", "side"];
22
+ /**
23
+ * 단계 refs가 가리킬 수 있는 kind. 사용자가 실제로 만나는 화면과 그 화면이 부르는 API까지만 잇는다.
24
+ * 하네스에서는 사용자가 부르는 스킬과 스킬이 띄우는 에이전트가 화면 자리다. MCP 도구는 endpoint로 들어온다
25
+ */
26
+ export declare const FLOW_REF_KINDS: readonly NodeKind[];
27
+ /** 하네스와 MCP 레포에만 나오는 kind. 이게 하나라도 있으면 하네스 IR로 보고 하네스 규칙을 건다 */
28
+ export declare const HARNESS_KINDS: readonly NodeKind[];
29
+ /** 서빙 인프라. 화면 흐름과 배포 경로 둘 다에 설 수 있다 */
30
+ export declare const INFRA_KINDS: readonly ["domain", "cdn", "bucket", "cloud_account"];
31
+ /** environment를 가질 수 있는 kind. 네이티브 배포처는 deploy_target으로 그린다 */
32
+ export declare const ENVIRONMENT_KINDS: readonly NodeKind[];
33
+ /** 환경 정렬 순서. 여기 없는 환경은 이름순으로 뒤에, 환경이 없으면 맨 뒤에 선다 */
34
+ export declare const ENVIRONMENT_ORDER: readonly ["prod", "stage", "qa", "dev"];
35
+ export declare const ARCHITECTURE_IR_SCHEMA_VERSION = "1.0.0";
36
+ /** 포함 관계 규칙. 키에 없는 kind는 parent를 가질 수 없다. 규칙은 팩의 nodeKinds.parents에 있다 */
37
+ export declare const PARENT_KINDS: Partial<Record<NodeKind, readonly NodeKind[]>>;
38
+ export type ArchitectureView = (typeof ARCHITECTURE_VIEWS)[number];
39
+ export type NodeKind = PackNodeKind;
40
+ export type EdgeKind = PackEdgeKind;
41
+ export type EvidenceType = (typeof EVIDENCE_TYPES)[number];
42
+ export type Visibility = (typeof VISIBILITIES)[number];
43
+ export type LineStyle = (typeof LINE_STYLES)[number];
44
+ export type ContextSourceVia = (typeof CONTEXT_SOURCE_VIAS)[number];
45
+ export type Platform = (typeof PLATFORMS)[number];
46
+ export type FlowActorKind = (typeof FLOW_ACTOR_KINDS)[number];
47
+ export type FlowPath = (typeof FLOW_PATHS)[number];
48
+ export type EndpointProtocol = (typeof ENDPOINT_PROTOCOLS)[number];
49
+ /**
50
+ * 카드 칩과 아이콘, 색을 고르는 종류. MCP 도구는 IR에서는 endpoint라 매칭과 드릴다운을 그대로 타고
51
+ * 읽는 사람에게만 API 대신 MCP 도구로 보인다
52
+ */
53
+ export type DisplayKind = NodeKind | PackDisplayKind;
54
+ export declare function displayKindOf(node: {
55
+ kind: NodeKind;
56
+ protocol?: EndpointProtocol;
57
+ renderClass?: RenderClass;
58
+ }): DisplayKind;
59
+ /** 칩에 kind 표 대신 노드가 직접 적은 글자를 쓰는 경우. component만 해당한다 */
60
+ export declare function chipTextOverride(node: {
61
+ kind: NodeKind;
62
+ displayKind?: string;
63
+ }): string | undefined;
64
+ /** 웹 서빙 방식. 버킷이 서빙하면 정적, 배포 대상(서버)이 서빙하면 SSR이다 */
65
+ export type WebHosting = 'static' | 'ssr';
66
+ export interface Evidence {
67
+ type: EvidenceType;
68
+ /** code 근거는 `<repoId>:<relPath>:<line>` 꼴, live 근거는 조회로 찾은 리소스 식별자 */
69
+ location: string;
70
+ updatedAt?: string;
71
+ visibility: Visibility;
72
+ excerpt?: string;
73
+ /** live 근거만. 실행한 읽기 전용 명령 */
74
+ command?: string;
75
+ /** live 근거만. 조회한 시각(ISO 8601) */
76
+ observedAt?: string;
77
+ }
78
+ /** 문서가 스스로 적은 구멍. gap은 비었다고 밝힌 자리, unverified는 확인 안 된 서술이다 */
79
+ export declare const DOC_GAP_KINDS: readonly ["gap", "unverified"];
80
+ export type DocGapKind = (typeof DOC_GAP_KINDS)[number];
81
+ export interface DocGap {
82
+ kind: DocGapKind;
83
+ /** 표시 뒤에 적힌 설명. 본문 조각이라 공유본에서 뺀다 */
84
+ text?: string;
85
+ /** 표시에 적힌 담당. 공유본에서 뺀다 */
86
+ owner?: string;
87
+ line?: number;
88
+ }
89
+ /** 안내 문서(INDEX)의 길 하나. 질문 키워드에서 문서로 간다 */
90
+ export interface DocRoute {
91
+ keywords: string[];
92
+ /** 표에 적힌 경로. 레포 기준으로 푼 값이다 */
93
+ targetPath: string;
94
+ /** 그 경로의 노드 id. 없는 문서를 가리키면 비운다 */
95
+ target?: string;
96
+ }
97
+ /** 디자인 화면 색인의 한 행에서 읽은 값 */
98
+ export interface DocScreen {
99
+ route?: string;
100
+ screenType?: string;
101
+ /** 디자인 도구의 프레임 이름과 노드 id */
102
+ frame?: string;
103
+ frameNode?: string;
104
+ /** 컴포넌트로 묶였는지(심볼화) */
105
+ symbolized?: boolean;
106
+ /** 화면별 설계 문서가 있는지 */
107
+ hasSpec?: boolean;
108
+ synonyms?: string[];
109
+ /** private 산출물에만 싣는 썸네일 data URI */
110
+ thumbnail?: string;
111
+ }
112
+ /** 문서 안 근거 표시가 가리킨 곳의 상태. 레포 클론과 읽기 명령으로만 확인한다 */
113
+ export interface DocLinkHealth {
114
+ total: number;
115
+ /** 가리킨 레포나 파일이 없다 */
116
+ broken: number;
117
+ /** 브랜치 이름만 적어 시간이 지나면 다른 내용을 가리킨다 */
118
+ branchOnly: number;
119
+ /** 커밋에 고정했다 */
120
+ pinned: number;
121
+ /** 클론이 없어 확인 못 했다 */
122
+ unchecked: number;
123
+ }
124
+ /**
125
+ * 지식 팩 노드(doc_group, document, design_screen)만 갖는 문서 정보.
126
+ * 공유본은 path와 숫자, 날짜, 참거짓만 남기고 본문에서 온 글자는 뺀다
127
+ */
128
+ export interface DocInfo {
129
+ /** 레포 기준 경로 */
130
+ path: string;
131
+ /** 문서가 머리줄에 적은 최종 수정일 */
132
+ updatedAt?: string;
133
+ /** git이 아는 마지막 커밋 날짜 */
134
+ committedAt?: string;
135
+ /** 절 제목. 문서 노드는 파일 단위라 절은 패널에서만 보인다 */
136
+ sections?: string[];
137
+ gaps?: DocGap[];
138
+ /** 근거 종류별 수. 종류 이름은 스캐너 설정이 정한다 */
139
+ evidenceMix?: Record<string, number>;
140
+ links?: DocLinkHealth;
141
+ routes?: DocRoute[];
142
+ screen?: DocScreen;
143
+ /** 읽힌 횟수. 사용량 도구가 읽기로 열려 있을 때만 */
144
+ reads?: number;
145
+ /** 문서 날짜보다 늦게 바뀐, 문서가 가리킨 파일 중 가장 최근 커밋 날짜. 이 값이 있으면 문서가 낡았을 수 있다 */
146
+ staleSince?: string;
147
+ /** 진입 문서(README, CLAUDE, SKILL 등)에서 링크와 질문 안내를 따라가도 안 닿는다 */
148
+ orphan?: true;
149
+ /** 마지막으로 손댄 날(머리줄 수정일과 커밋 날짜 중 늦은 쪽)이 그림을 만든 날보다 반년 넘게 앞선다 */
150
+ aged?: true;
151
+ /** 질문 안내 표가 이 문서로 보내는 말 */
152
+ keywords?: string[];
153
+ }
154
+ /** describes 엣지가 가리키는 파일 하나 */
155
+ export interface DocLinkRef {
156
+ /** `<repoId>:<relPath>` */
157
+ target: string;
158
+ /** 가리킨 파일이 클론에 있다 */
159
+ verified: boolean;
160
+ /** 근거 표시가 적은 ref 종류 */
161
+ pinned?: 'branch' | 'commit' | 'none';
162
+ /** 가리킨 파일의 마지막 커밋 날짜 */
163
+ committedAt?: string;
164
+ }
165
+ /** describes 엣지만. 문서가 무엇을 보고 그 기술 노드에 이어졌는지 */
166
+ export interface DocLink {
167
+ /** code-ref는 근거 표시의 파일 경로, api-path는 본문의 METHOD /path, screen-route는 화면 색인의 라우트, session은 세션이 직접 이었다 */
168
+ via: 'code-ref' | 'api-path' | 'screen-route' | 'session';
169
+ refs: DocLinkRef[];
170
+ }
171
+ export interface ArchitectureNode {
172
+ id: string;
173
+ kind: NodeKind;
174
+ /** 기술 이름. 이전 실행 병합 키(kind, repo, 정규화 label)에 쓰인다 */
175
+ label: string;
176
+ /** 사람이 부르는 이름. 박스에 크게 보이고 병합 키에는 안 들어간다 */
177
+ displayName?: string;
178
+ /** 문서에 그대로 있는 이름이 아니라 근거 문장을 줄여 지은 이름이면 true. displayName 없이는 못 온다 */
179
+ displayNameInferred?: boolean;
180
+ repo: string;
181
+ /** 포함 관계. 허용하는 parent kind는 PARENT_KINDS에 있다 */
182
+ parent?: string;
183
+ description?: string;
184
+ evidence: Evidence[];
185
+ /** 인프라 노드와 deploy_target, datastore만. prod, stage, qa, dev 같은 환경 이름 */
186
+ environment?: string;
187
+ /** datastore만. mysql, redis 같은 엔진 이름. 아는 엔진이면 카드에 그 로고가 선다. 없으면 label에서 찾는다 */
188
+ engine?: string;
189
+ /** 이 노드가 속한 cloud_account 노드 id. 양 끝 계정이 다른 선을 가려 그리는 데 쓴다 */
190
+ account?: string;
191
+ /** service만. web은 serves 엣지로도 판정하고 android와 ios는 platformEvidence가 있어야 그린다 */
192
+ platforms?: Platform[];
193
+ /** service만. 플랫폼별 근거 */
194
+ platformEvidence?: Partial<Record<Platform, Evidence[]>>;
195
+ /** endpoint만. 없으면 http다 */
196
+ protocol?: EndpointProtocol;
197
+ /** mcp endpoint만. 도구를 등록한 MCP 서버 이름 */
198
+ mcpServer?: string;
199
+ /** mcp endpoint만. 도구가 action 인자로 나눠 받는 값. 서버의 enum이나 분기 그대로다 */
200
+ actions?: string[];
201
+ /** component만. 읽는 사람이 보는 종류 이름(예: 배치 잡, 결재 문서). 칩에 그대로 찍힌다 */
202
+ displayKind?: string;
203
+ /** component만. 색과 아이콘을 고르는 렌더 분류 */
204
+ renderClass?: RenderClass;
205
+ /** 지식 팩 노드만. 경로, 수정일, 구멍, 근거 구성 */
206
+ doc?: DocInfo;
207
+ /** 담당 팀이나 사람. CODEOWNERS나 소유 표처럼 출처가 있는 값만 적는다. 공유본에서 뺀다 */
208
+ owners?: string[];
209
+ }
210
+ export interface ArchitectureEdge {
211
+ id: string;
212
+ from: string;
213
+ to: string;
214
+ kind: EdgeKind;
215
+ evidence: Evidence[];
216
+ lineStyle: LineStyle;
217
+ /** mcp endpoint를 부르는 calls만. 이 호출이 실제로 넘기는 action 값 */
218
+ actions?: string[];
219
+ /** describes만. 가리킨 파일과 그 파일이 있는지 */
220
+ docLink?: DocLink;
221
+ }
222
+ export interface UnresolvedQuestion {
223
+ id: string;
224
+ /** stepId와 transitionId는 흐름의 단계와 전이를 가리킨다. 흐름 id끼리 겹치지 않아야 한다 */
225
+ subject: {
226
+ nodeId?: string;
227
+ edgeId?: string;
228
+ stepId?: string;
229
+ transitionId?: string;
230
+ /** 투영 메시지 id. 투영끼리 겹치지 않아야 한다 */
231
+ messageId?: string;
232
+ };
233
+ question: string;
234
+ answer?: string;
235
+ }
236
+ export interface ContextSource {
237
+ via: ContextSourceVia;
238
+ identifier: string;
239
+ readOnly: boolean;
240
+ probeHit: boolean;
241
+ visibility: Visibility;
242
+ }
243
+ export interface ArchitectureRepo {
244
+ id: string;
245
+ name: string;
246
+ /**
247
+ * 체크아웃 경로. 없으면 코드 없이 문서와 사람 말로만 엮은 문서 묶음이다.
248
+ * 문서 묶음을 가리키는 code 근거는 확인할 파일이 없어서 거부한다
249
+ */
250
+ root?: string;
251
+ remote?: string;
252
+ }
253
+ /**
254
+ * 합친 IR에서 한 제품 몫. 분석은 제 제품이 닿는 것만 적으므로 그 입력에 있던 노드가 곧 그 제품 영역이다.
255
+ * 엣지를 따라 펼쳐 정하면 게이트웨이 하나가 제품이 안 쓰는 서버까지 끌고 들어온다
256
+ */
257
+ export interface ArchitectureGroup {
258
+ id: string;
259
+ name: string;
260
+ members: string[];
261
+ }
262
+ export interface FlowActor {
263
+ id: string;
264
+ label: string;
265
+ kind: FlowActorKind;
266
+ }
267
+ export interface FlowStep {
268
+ id: string;
269
+ /** 이 단계를 하는 행위자 id. 같은 흐름의 actors에 있어야 한다 */
270
+ actor: string;
271
+ label: string;
272
+ description?: string;
273
+ /** 이 단계가 끝난 뒤의 업무 상태. 코드 enum 값을 그대로 적는다 */
274
+ state?: string;
275
+ /** 흐름이 여기서 끝날 수 있다. 착석이나 취소처럼 더 갈 곳이 없는 단계에 단다. 나가는 전이가 없는데 이 표시도 없으면 질문이 생긴다 */
276
+ terminal?: boolean;
277
+ /** 이 단계에서 만나는 화면이나 부르는 API 노드 id. 기술 그림으로 내려가는 입구다 */
278
+ refs?: string[];
279
+ evidence: Evidence[];
280
+ }
281
+ /** 단계에서 단계로 넘어가는 선. 상태가 바뀌는 자리이고 근거 규칙은 엣지와 같다 */
282
+ export interface FlowTransition {
283
+ id: string;
284
+ from: string;
285
+ to: string;
286
+ path: FlowPath;
287
+ /** 넘어가는 조건. 선 위에 짧게 보인다 */
288
+ label?: string;
289
+ /** 이 전이를 일으키는 행위자 id. 되돌리기처럼 여러 행위자가 할 수 있는 전이에 단다. 선 글자 옆에 이름이 붙는다 */
290
+ actors?: string[];
291
+ evidence: Evidence[];
292
+ lineStyle: LineStyle;
293
+ }
294
+ /**
295
+ * 도메인과 사용자 관점의 서비스 흐름. 행위자마다 가로줄, 단계는 왼쪽에서 오른쪽으로 그린다.
296
+ * 기술 그림의 노드와 엣지에 섞지 않고 따로 둔다. 섞으면 드릴다운과 병합 키, 포커스가 단계까지 훑는다
297
+ */
298
+ export interface ArchitectureFlow {
299
+ id: string;
300
+ /**
301
+ * 이 흐름이 딸린 service 노드 id. 그 서비스 레벨 아래 레벨로 그린다.
302
+ * 없으면 전체 바로 아래 독립 흐름 레벨이 된다. 승인 절차나 장애 대응처럼 코드 서비스에 안 딸린 흐름이다
303
+ */
304
+ service?: string;
305
+ title: string;
306
+ description?: string;
307
+ /** 상태 값 → 그림에 찍을 이름. 상태 값은 코드의 enum 그대로라 사용자 언어로 된 이름을 따로 받는다. 없는 값은 상태 값 그대로 찍는다 */
308
+ stateLabels?: Record<string, string>;
309
+ actors: FlowActor[];
310
+ steps: FlowStep[];
311
+ transitions: FlowTransition[];
312
+ }
313
+ /** 투영의 답 모양. 지도(nodes, edges)는 그대로 두고 질문 하나에 맞게 골라 그린다 */
314
+ /**
315
+ * 투영 모양. sequence는 주고받는 순서, dataflow는 데이터가 어디서 어디로 옮겨 가는지, compare는 두 묶음의 같고 다른 점이다.
316
+ * 팩과 무관하게 어느 카테고리든 이 중 하나로 답한다
317
+ */
318
+ export declare const PROJECTION_SHAPES: readonly ["sequence", "dataflow", "compare"];
319
+ export type ProjectionShape = (typeof PROJECTION_SHAPES)[number];
320
+ /** sequence 묶음 종류. alt는 경우 나누기, opt는 조건이 맞을 때만, loop는 반복, par는 동시 실행이다 */
321
+ export declare const SEQUENCE_BLOCK_KINDS: readonly ["alt", "opt", "loop", "par"];
322
+ export type SequenceBlockKind = (typeof SEQUENCE_BLOCK_KINDS)[number];
323
+ export interface ProjectionBlock {
324
+ id: string;
325
+ kind: SequenceBlockKind;
326
+ label: string;
327
+ }
328
+ /**
329
+ * 투영 안의 메시지 하나. from과 to는 지도의 노드 id다.
330
+ * edge를 적으면 그 엣지의 근거를 함께 쓴다. edge도 evidence도 없으면 unresolved에 이 메시지를 묻는 질문이 있어야 한다
331
+ */
332
+ export interface ProjectionMessage {
333
+ id: string;
334
+ from: string;
335
+ to: string;
336
+ label: string;
337
+ edge?: string;
338
+ evidence: Evidence[];
339
+ lineStyle: LineStyle;
340
+ /** 응답이면 true. 화살표를 열린 꼴로 그린다 */
341
+ reply?: boolean;
342
+ block?: string;
343
+ /** alt 묶음 안에서 이 메시지가 속한 경우의 이름. 경우가 바뀌는 자리에 가로 점선을 긋는다 */
344
+ branch?: string;
345
+ }
346
+ /**
347
+ * 질문 하나에 답하는 그림. 지도에서 노드를 골라 순서와 묶음을 붙인다.
348
+ * 지도에 없는 노드는 못 가리킨다. 필요하면 근거와 함께 지도에 먼저 넣는다
349
+ */
350
+ export interface ArchitectureProjection {
351
+ id: string;
352
+ shape: ProjectionShape;
353
+ title: string;
354
+ question: string;
355
+ /** 왼쪽부터 놓을 참여자. 없으면 메시지에 처음 나온 순서다 */
356
+ participants?: string[];
357
+ /** sequence와 dataflow의 선. compare는 비워 둔다 */
358
+ messages: ProjectionMessage[];
359
+ blocks?: ProjectionBlock[];
360
+ /** compare가 견주는 두 묶음. 전과 후, 제품 둘처럼 왼쪽과 오른쪽에 선다 */
361
+ sides?: ProjectionSide[];
362
+ }
363
+ /** compare 묶음 하나. nodes는 지도의 노드 id다. 두 묶음에 다 있는 노드는 가운데 열에 선다 */
364
+ export interface ProjectionSide {
365
+ id: string;
366
+ label: string;
367
+ nodes: string[];
368
+ }
369
+ /**
370
+ * 기술 그림을 왼쪽에서 오른쪽으로 나누는 구간. 세션이 분석하면서 정한다 (예: 앱, 웨이팅 서버, 알림 서버, DB).
371
+ * 노드는 nodes에 이름이 오른 구간에 먼저 들어간다. 없으면 kinds와 repos가 맞는 첫 구간에 들어간다
372
+ */
373
+ export interface ArchitectureStage {
374
+ id: string;
375
+ label: string;
376
+ nodes?: string[];
377
+ kinds?: NodeKind[];
378
+ /** kinds와 함께 쓰면 둘 다 맞아야 한다 */
379
+ repos?: string[];
380
+ }
381
+ export interface ArchitectureIr {
382
+ schemaVersion: typeof ARCHITECTURE_IR_SCHEMA_VERSION;
383
+ view: ArchitectureView;
384
+ /** 이 IR이 쓰는 어휘 팩 id. 없으면 web-product와 harness다. 여기 없는 팩의 kind를 쓰면 검증에서 막힌다 */
385
+ packs?: string[];
386
+ repos: ArchitectureRepo[];
387
+ nodes: ArchitectureNode[];
388
+ edges: ArchitectureEdge[];
389
+ unresolved: UnresolvedQuestion[];
390
+ sourcesUsed: ContextSource[];
391
+ generatedAt: string;
392
+ /** merge가 남기는 제품 그룹. 둘 이상이면 렌더러가 제품끼리 겹치는 띠를 그린다 */
393
+ groups?: ArchitectureGroup[];
394
+ /** 도메인 흐름. 없으면 기술 그림만 그린다 */
395
+ flows?: ArchitectureFlow[];
396
+ /** 기술 그림 구간. 배열 순서가 왼쪽부터다. 없으면 종류별 레인만 그린다 */
397
+ stages?: ArchitectureStage[]; /** 질문별 그림. 드릴다운 끝에 레벨로 붙고 저장할 때 views/<id>.json으로도 남는다 */
398
+ projections?: ArchitectureProjection[];
399
+ }
400
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/architecture/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import { ALL_PACKS_VOCABULARY, componentDisplayKind, } from './packs/index.js';
2
+ import { HARNESS_PACK } from './packs/harness.js';
3
+ // 열거값은 배열 하나에서 타입과 zod 스키마를 함께 뽑는다. 두 곳에 따로 적으면 한쪽만 고쳐지기 쉽다.
4
+ /** knowledge는 문서 지도, knowledge-link는 기술 그림에 문서를 엮은 그림이다 */
5
+ export const ARCHITECTURE_VIEWS = [
6
+ 'screen-chain',
7
+ 'deploy-path',
8
+ 'knowledge',
9
+ 'knowledge-link',
10
+ ];
11
+ /** kind 목록은 팩에서 온다. 새 카테고리는 packs/에 팩을 더하면 여기 따라 붙는다 */
12
+ export const NODE_KINDS = Object.keys(ALL_PACKS_VOCABULARY.nodeKinds);
13
+ export const EDGE_KINDS = Object.keys(ALL_PACKS_VOCABULARY.edgeKinds);
14
+ /** endpoint가 받는 호출 방식. 없으면 http다. mcp면 label이 도구 이름이다 */
15
+ export const ENDPOINT_PROTOCOLS = ['http', 'mcp'];
16
+ export const EVIDENCE_TYPES = ['code', 'spec', 'doc', 'user', 'live'];
17
+ export const VISIBILITIES = ['public', 'private'];
18
+ export const LINE_STYLES = ['solid', 'dashed'];
19
+ export const CONTEXT_SOURCE_VIAS = ['repo', 'global', 'mcp', 'skill', 'user'];
20
+ export const PLATFORMS = ['web', 'android', 'ios'];
21
+ /**
22
+ * 흐름의 행위자. person은 고객이나 직원처럼 사람이 누르는 쪽, system은 배치나 타이머, 자동 발송이다.
23
+ * agent는 세션 모델이나 서브에이전트처럼 지시를 읽고 스스로 판단하는 AI 쪽이다
24
+ */
25
+ export const FLOW_ACTOR_KINDS = ['person', 'system', 'agent'];
26
+ /** main은 정상 흐름, side는 취소나 노쇼처럼 옆으로 빠지는 흐름이다 */
27
+ export const FLOW_PATHS = ['main', 'side'];
28
+ /**
29
+ * 단계 refs가 가리킬 수 있는 kind. 사용자가 실제로 만나는 화면과 그 화면이 부르는 API까지만 잇는다.
30
+ * 하네스에서는 사용자가 부르는 스킬과 스킬이 띄우는 에이전트가 화면 자리다. MCP 도구는 endpoint로 들어온다
31
+ */
32
+ export const FLOW_REF_KINDS = [
33
+ 'screen',
34
+ 'endpoint',
35
+ 'feature',
36
+ 'micro_app',
37
+ 'skill',
38
+ 'agent',
39
+ 'component',
40
+ ];
41
+ /** 하네스와 MCP 레포에만 나오는 kind. 이게 하나라도 있으면 하네스 IR로 보고 하네스 규칙을 건다 */
42
+ export const HARNESS_KINDS = Object.keys(HARNESS_PACK.nodeKinds);
43
+ /** 서빙 인프라. 화면 흐름과 배포 경로 둘 다에 설 수 있다 */
44
+ export const INFRA_KINDS = ['domain', 'cdn', 'bucket', 'cloud_account'];
45
+ /** environment를 가질 수 있는 kind. 네이티브 배포처는 deploy_target으로 그린다 */
46
+ export const ENVIRONMENT_KINDS = [
47
+ ...INFRA_KINDS,
48
+ 'deploy_target',
49
+ 'datastore',
50
+ ];
51
+ /** 환경 정렬 순서. 여기 없는 환경은 이름순으로 뒤에, 환경이 없으면 맨 뒤에 선다 */
52
+ export const ENVIRONMENT_ORDER = ['prod', 'stage', 'qa', 'dev'];
53
+ export const ARCHITECTURE_IR_SCHEMA_VERSION = '1.0.0';
54
+ /** 포함 관계 규칙. 키에 없는 kind는 parent를 가질 수 없다. 규칙은 팩의 nodeKinds.parents에 있다 */
55
+ export const PARENT_KINDS = Object.fromEntries(Object.entries(ALL_PACKS_VOCABULARY.nodeKinds).flatMap(([k, d]) => d.parents === undefined ? [] : [[k, d.parents]]));
56
+ export function displayKindOf(node) {
57
+ if (node.kind === 'component')
58
+ return componentDisplayKind(node.renderClass ?? 'service');
59
+ return node.kind === 'endpoint' && node.protocol === 'mcp' ? 'mcp_tool' : node.kind;
60
+ }
61
+ /** 칩에 kind 표 대신 노드가 직접 적은 글자를 쓰는 경우. component만 해당한다 */
62
+ export function chipTextOverride(node) {
63
+ return node.kind === 'component' ? node.displayKind : undefined;
64
+ }
65
+ /** 문서가 스스로 적은 구멍. gap은 비었다고 밝힌 자리, unverified는 확인 안 된 서술이다 */
66
+ export const DOC_GAP_KINDS = ['gap', 'unverified'];
67
+ /** 투영의 답 모양. 지도(nodes, edges)는 그대로 두고 질문 하나에 맞게 골라 그린다 */
68
+ /**
69
+ * 투영 모양. sequence는 주고받는 순서, dataflow는 데이터가 어디서 어디로 옮겨 가는지, compare는 두 묶음의 같고 다른 점이다.
70
+ * 팩과 무관하게 어느 카테고리든 이 중 하나로 답한다
71
+ */
72
+ export const PROJECTION_SHAPES = ['sequence', 'dataflow', 'compare'];
73
+ /** sequence 묶음 종류. alt는 경우 나누기, opt는 조건이 맞을 때만, loop는 반복, par는 동시 실행이다 */
74
+ export const SEQUENCE_BLOCK_KINDS = ['alt', 'opt', 'loop', 'par'];
75
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/architecture/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { type ArchitectureIr, type Evidence, type LineStyle, type NodeKind, type UnresolvedQuestion } from './types.js';
2
+ export type ArchitectureValidationErrorCode = 'SOLID_EDGE_WITHOUT_EVIDENCE' | 'CODE_EVIDENCE_NOT_FOUND' | 'PRIVATE_EXCERPT_PRESENT' | 'DANGLING_EDGE' | 'PARENT_NOT_FOUND' | 'PARENT_CYCLE' | 'INVALID_PARENT_KIND' | 'LIVE_COMMAND_NOT_READ_ONLY' | 'ACCOUNT_NOT_FOUND' | 'INVALID_ACCOUNT_KIND' | 'CLOUD_ID_IN_ID' | 'GROUP_MEMBER_NOT_FOUND' | 'DUPLICATE_GROUP_ID' | 'SERVES_SERVICE_WITH_APPS' | 'INVALID_LOADS_ENDS' | 'INVALID_HARNESS_EDGE_ENDS' | 'INVALID_CALL_ACTIONS' | 'UNKNOWN_MCP_ACTION' | 'MD_CODE_EVIDENCE' | 'FLOW_SERVICE_NOT_FOUND' | 'DUPLICATE_FLOW_ID' | 'FLOW_ACTOR_NOT_FOUND' | 'FLOW_STEP_NOT_FOUND' | 'FLOW_REF_NOT_FOUND' | 'INVALID_FLOW_REF_KIND' | 'SOLID_TRANSITION_WITHOUT_EVIDENCE' | 'DUPLICATE_STAGE_ID' | 'STAGE_NODE_NOT_FOUND' | 'STAGE_NODE_TWICE' | 'UNKNOWN_PACK' | 'KIND_NOT_IN_PACKS' | 'CODE_EVIDENCE_IN_DOC_REPO' | 'DUPLICATE_PROJECTION_ID' | 'DUPLICATE_MESSAGE_ID' | 'PROJECTION_NODE_NOT_FOUND' | 'PROJECTION_EDGE_NOT_FOUND' | 'PROJECTION_EDGE_MISMATCH' | 'PROJECTION_BLOCK_NOT_FOUND' | 'PROJECTION_BLOCK_SPLIT' | 'SOLID_MESSAGE_WITHOUT_EVIDENCE' | 'PROJECTION_EMPTY' | 'PROJECTION_SHAPE_FIELD' | 'INVALID_DESCRIBES_FROM' | 'SOLID_DESCRIBES';
3
+ export interface ArchitectureValidationError {
4
+ code: ArchitectureValidationErrorCode;
5
+ message: string;
6
+ nodeId?: string;
7
+ edgeId?: string;
8
+ flowId?: string;
9
+ stepId?: string;
10
+ transitionId?: string;
11
+ projectionId?: string;
12
+ messageId?: string;
13
+ evidenceIndex?: number;
14
+ }
15
+ export interface ValidatedIr {
16
+ ir: ArchitectureIr;
17
+ drawableNodeIds: Set<string>;
18
+ drawableEdgeIds: Set<string>;
19
+ /** 근거가 있는 흐름 단계. 없는 단계는 그리지 않고 질문으로 간다 */
20
+ drawableStepIds: Set<string>;
21
+ /** 근거가 있고 양 끝 단계가 그려지는 전이 */
22
+ drawableTransitionIds: Set<string>;
23
+ /** 근거가 있고 양 끝 노드가 그려지는 투영 메시지. 투영이 없으면 비어 있다 */
24
+ drawableMessageIds?: Set<string>;
25
+ /** 그릴 것이 하나라도 남는 투영. compare는 묶음 노드 중 하나라도 그려지면 남는다 */
26
+ drawableProjectionIds?: Set<string>;
27
+ autoUnresolved: UnresolvedQuestion[];
28
+ }
29
+ export interface ValidateArchitectureIrOptions {
30
+ /** 비우면 ir.repos의 root를 쓴다 */
31
+ repoRoots?: Record<string, string>;
32
+ /** 기본 true. false면 code 근거의 파일 존재와 줄 범위를 확인하지 않는다 */
33
+ checkFiles?: boolean;
34
+ }
35
+ export type ValidateArchitectureIrResult = {
36
+ ok: true;
37
+ value: ValidatedIr;
38
+ } | {
39
+ ok: false;
40
+ errors: ArchitectureValidationError[];
41
+ };
42
+ /** AWS 계정 ID 꼴(숫자 12자리). 앞뒤가 숫자면 더 긴 수의 일부라 계정 ID로 보지 않는다 */
43
+ export declare const ACCOUNT_ID_RE: RegExp;
44
+ export declare function deriveLineStyle(evidence: Evidence[]): LineStyle;
45
+ /** 이 id가 공유본에서 못 가리는 클라우드 식별자를 담는지. kind를 모르면(엣지) 계정 ID만 본다 */
46
+ export declare function idCarriesCloudId(id: string, kind?: NodeKind): boolean;
47
+ /**
48
+ * ArchitectureIr를 그리기 전에 검증한다.
49
+ * 근거가 없는 노드나 엣지는 에러로 보지 않고 그리기 대상에서 빼며 미해결 질문을 만든다.
50
+ * 엣지의 lineStyle은 근거 종류로 다시 계산해 반환하는 ir에 덮어쓴다. 입력은 바꾸지 않는다.
51
+ */
52
+ export declare function validateArchitectureIr(ir: ArchitectureIr, opts?: ValidateArchitectureIrOptions): ValidateArchitectureIrResult;
53
+ /** 공유본에 실을 글자에서 계정 ID 꼴 숫자를 가린다 */
54
+ export declare function maskAccountIds(text: string): string;
55
+ /** 질문처럼 어느 노드 이름이 섞였는지 모르는 글자. 계정 ID와 배포 ID 꼴을 둘 다 가린다 */
56
+ export declare function maskSharedText(text: string): string;
57
+ /**
58
+ * 공유용 사본. 입력은 바꾸지 않는다.
59
+ * private 근거는 type과 visibility만 남긴다. live 근거는 public이어도 명령과 리소스 식별자에 계정 ID나
60
+ * 리소스 ID가 담기므로 조회 시각만 남긴다. 노드 이름과 질문 글자의 계정 ID 꼴 숫자도 가린다
61
+ */
62
+ export declare function redactForSharing(ir: ArchitectureIr): ArchitectureIr;
63
+ /** 저장용 사본. private 근거의 excerpt만 지운다. 입력은 바꾸지 않는다 */
64
+ export declare function stripPrivateExcerpts(ir: ArchitectureIr): ArchitectureIr;
65
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../src/architecture/validator.ts"],"names":[],"mappings":"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"}