timsquad 2.1.0 → 3.4.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 (438) hide show
  1. package/README.ko.md +288 -0
  2. package/README.md +170 -763
  3. package/dist/commands/compile.d.ts +3 -0
  4. package/dist/commands/compile.d.ts.map +1 -0
  5. package/dist/commands/compile.js +170 -0
  6. package/dist/commands/compile.js.map +1 -0
  7. package/dist/commands/daemon.d.ts +7 -0
  8. package/dist/commands/daemon.d.ts.map +1 -0
  9. package/dist/commands/daemon.js +229 -0
  10. package/dist/commands/daemon.js.map +1 -0
  11. package/dist/commands/feedback.d.ts +9 -0
  12. package/dist/commands/feedback.d.ts.map +1 -1
  13. package/dist/commands/feedback.js +235 -14
  14. package/dist/commands/feedback.js.map +1 -1
  15. package/dist/commands/full.js +2 -2
  16. package/dist/commands/full.js.map +1 -1
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +118 -22
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/knowledge.d.ts +3 -0
  21. package/dist/commands/knowledge.d.ts.map +1 -0
  22. package/dist/commands/knowledge.js +316 -0
  23. package/dist/commands/knowledge.js.map +1 -0
  24. package/dist/commands/log.d.ts +27 -0
  25. package/dist/commands/log.d.ts.map +1 -1
  26. package/dist/commands/log.js +965 -0
  27. package/dist/commands/log.js.map +1 -1
  28. package/dist/commands/meta-index.d.ts +3 -0
  29. package/dist/commands/meta-index.d.ts.map +1 -0
  30. package/dist/commands/meta-index.js +401 -0
  31. package/dist/commands/meta-index.js.map +1 -0
  32. package/dist/commands/metrics.d.ts.map +1 -1
  33. package/dist/commands/metrics.js +239 -4
  34. package/dist/commands/metrics.js.map +1 -1
  35. package/dist/commands/retro.js +154 -6
  36. package/dist/commands/retro.js.map +1 -1
  37. package/dist/commands/skills.d.ts +12 -0
  38. package/dist/commands/skills.d.ts.map +1 -0
  39. package/dist/commands/skills.js +231 -0
  40. package/dist/commands/skills.js.map +1 -0
  41. package/dist/commands/upgrade.d.ts +8 -0
  42. package/dist/commands/upgrade.d.ts.map +1 -0
  43. package/dist/commands/upgrade.js +292 -0
  44. package/dist/commands/upgrade.js.map +1 -0
  45. package/dist/commands/workflow.d.ts +3 -0
  46. package/dist/commands/workflow.d.ts.map +1 -0
  47. package/dist/commands/workflow.js +607 -0
  48. package/dist/commands/workflow.js.map +1 -0
  49. package/dist/daemon/context-writer.d.ts +16 -0
  50. package/dist/daemon/context-writer.d.ts.map +1 -0
  51. package/dist/daemon/context-writer.js +35 -0
  52. package/dist/daemon/context-writer.js.map +1 -0
  53. package/dist/daemon/entry.d.ts +7 -0
  54. package/dist/daemon/entry.d.ts.map +1 -0
  55. package/dist/daemon/entry.js +17 -0
  56. package/dist/daemon/entry.js.map +1 -0
  57. package/dist/daemon/event-queue.d.ts +52 -0
  58. package/dist/daemon/event-queue.d.ts.map +1 -0
  59. package/dist/daemon/event-queue.js +255 -0
  60. package/dist/daemon/event-queue.js.map +1 -0
  61. package/dist/daemon/file-watcher.d.ts +19 -0
  62. package/dist/daemon/file-watcher.d.ts.map +1 -0
  63. package/dist/daemon/file-watcher.js +87 -0
  64. package/dist/daemon/file-watcher.js.map +1 -0
  65. package/dist/daemon/index.d.ts +29 -0
  66. package/dist/daemon/index.d.ts.map +1 -0
  67. package/dist/daemon/index.js +296 -0
  68. package/dist/daemon/index.js.map +1 -0
  69. package/dist/daemon/jsonl-watcher.d.ts +49 -0
  70. package/dist/daemon/jsonl-watcher.d.ts.map +1 -0
  71. package/dist/daemon/jsonl-watcher.js +258 -0
  72. package/dist/daemon/jsonl-watcher.js.map +1 -0
  73. package/dist/daemon/meta-cache.d.ts +63 -0
  74. package/dist/daemon/meta-cache.d.ts.map +1 -0
  75. package/dist/daemon/meta-cache.js +249 -0
  76. package/dist/daemon/meta-cache.js.map +1 -0
  77. package/dist/daemon/session-state.d.ts +19 -0
  78. package/dist/daemon/session-state.d.ts.map +1 -0
  79. package/dist/daemon/session-state.js +132 -0
  80. package/dist/daemon/session-state.js.map +1 -0
  81. package/dist/daemon/shutdown.d.ts +21 -0
  82. package/dist/daemon/shutdown.d.ts.map +1 -0
  83. package/dist/daemon/shutdown.js +164 -0
  84. package/dist/daemon/shutdown.js.map +1 -0
  85. package/dist/index.js +24 -3
  86. package/dist/index.js.map +1 -1
  87. package/dist/lib/agent-composer.d.ts +38 -0
  88. package/dist/lib/agent-composer.d.ts.map +1 -0
  89. package/dist/lib/agent-composer.js +128 -0
  90. package/dist/lib/agent-composer.js.map +1 -0
  91. package/dist/lib/agent-generator.d.ts +22 -0
  92. package/dist/lib/agent-generator.d.ts.map +1 -0
  93. package/dist/lib/agent-generator.js +150 -0
  94. package/dist/lib/agent-generator.js.map +1 -0
  95. package/dist/lib/ast-parser.d.ts +11 -0
  96. package/dist/lib/ast-parser.d.ts.map +1 -0
  97. package/dist/lib/ast-parser.js +282 -0
  98. package/dist/lib/ast-parser.js.map +1 -0
  99. package/dist/lib/compile-rules.d.ts +66 -0
  100. package/dist/lib/compile-rules.d.ts.map +1 -0
  101. package/dist/lib/compile-rules.js +114 -0
  102. package/dist/lib/compile-rules.js.map +1 -0
  103. package/dist/lib/compiler.d.ts +105 -0
  104. package/dist/lib/compiler.d.ts.map +1 -0
  105. package/dist/lib/compiler.js +368 -0
  106. package/dist/lib/compiler.js.map +1 -0
  107. package/dist/lib/config.d.ts +7 -2
  108. package/dist/lib/config.d.ts.map +1 -1
  109. package/dist/lib/config.js +34 -3
  110. package/dist/lib/config.js.map +1 -1
  111. package/dist/lib/meta-index.d.ts +19 -0
  112. package/dist/lib/meta-index.d.ts.map +1 -0
  113. package/dist/lib/meta-index.js +573 -0
  114. package/dist/lib/meta-index.js.map +1 -0
  115. package/dist/lib/project.js +1 -1
  116. package/dist/lib/project.js.map +1 -1
  117. package/dist/lib/skill-generator.d.ts +32 -0
  118. package/dist/lib/skill-generator.d.ts.map +1 -0
  119. package/dist/lib/skill-generator.js +187 -0
  120. package/dist/lib/skill-generator.js.map +1 -0
  121. package/dist/lib/template.d.ts +16 -2
  122. package/dist/lib/template.d.ts.map +1 -1
  123. package/dist/lib/template.js +115 -20
  124. package/dist/lib/template.js.map +1 -1
  125. package/dist/lib/ui-index.d.ts +12 -0
  126. package/dist/lib/ui-index.d.ts.map +1 -0
  127. package/dist/lib/ui-index.js +239 -0
  128. package/dist/lib/ui-index.js.map +1 -0
  129. package/dist/lib/ui-parser.d.ts +12 -0
  130. package/dist/lib/ui-parser.d.ts.map +1 -0
  131. package/dist/lib/ui-parser.js +472 -0
  132. package/dist/lib/ui-parser.js.map +1 -0
  133. package/dist/lib/update-check.d.ts +6 -0
  134. package/dist/lib/update-check.d.ts.map +1 -0
  135. package/dist/lib/update-check.js +121 -0
  136. package/dist/lib/update-check.js.map +1 -0
  137. package/dist/lib/upgrade-backup.d.ts +33 -0
  138. package/dist/lib/upgrade-backup.d.ts.map +1 -0
  139. package/dist/lib/upgrade-backup.js +101 -0
  140. package/dist/lib/upgrade-backup.js.map +1 -0
  141. package/dist/lib/version.d.ts +19 -0
  142. package/dist/lib/version.d.ts.map +1 -0
  143. package/dist/lib/version.js +35 -0
  144. package/dist/lib/version.js.map +1 -0
  145. package/dist/lib/workflow-state.d.ts +48 -0
  146. package/dist/lib/workflow-state.d.ts.map +1 -0
  147. package/dist/lib/workflow-state.js +67 -0
  148. package/dist/lib/workflow-state.js.map +1 -0
  149. package/dist/types/config.d.ts +103 -2
  150. package/dist/types/config.d.ts.map +1 -1
  151. package/dist/types/config.js +184 -9
  152. package/dist/types/config.js.map +1 -1
  153. package/dist/types/feedback.d.ts +7 -0
  154. package/dist/types/feedback.d.ts.map +1 -1
  155. package/dist/types/feedback.js +1 -1
  156. package/dist/types/feedback.js.map +1 -1
  157. package/dist/types/index.d.ts +3 -0
  158. package/dist/types/index.d.ts.map +1 -1
  159. package/dist/types/index.js +3 -0
  160. package/dist/types/index.js.map +1 -1
  161. package/dist/types/meta-index.d.ts +146 -0
  162. package/dist/types/meta-index.d.ts.map +1 -0
  163. package/dist/types/meta-index.js +7 -0
  164. package/dist/types/meta-index.js.map +1 -0
  165. package/dist/types/project.d.ts +19 -3
  166. package/dist/types/project.d.ts.map +1 -1
  167. package/dist/types/project.js +23 -0
  168. package/dist/types/project.js.map +1 -1
  169. package/dist/types/task-log.d.ts +208 -0
  170. package/dist/types/task-log.d.ts.map +1 -0
  171. package/dist/types/task-log.js +6 -0
  172. package/dist/types/task-log.js.map +1 -0
  173. package/dist/types/ui-meta.d.ts +118 -0
  174. package/dist/types/ui-meta.d.ts.map +1 -0
  175. package/dist/types/ui-meta.js +7 -0
  176. package/dist/types/ui-meta.js.map +1 -0
  177. package/package.json +12 -4
  178. package/templates/base/agents/base/tsq-architect.md +68 -0
  179. package/templates/base/agents/base/tsq-dba.md +56 -0
  180. package/templates/base/agents/base/tsq-designer.md +72 -0
  181. package/templates/base/agents/base/tsq-developer.md +67 -0
  182. package/templates/base/agents/base/tsq-qa.md +55 -0
  183. package/templates/base/agents/base/tsq-security.md +65 -0
  184. package/templates/base/agents/overlays/domain/general-web/_common.md +11 -0
  185. package/templates/base/agents/overlays/domain/mobile/_common.md +13 -0
  186. package/templates/base/agents/overlays/platform/claude-code.md +12 -0
  187. package/templates/base/config.template.yaml +213 -0
  188. package/templates/base/knowledge/checklists/accessibility.md +37 -0
  189. package/templates/base/knowledge/checklists/architecture-review.md +28 -0
  190. package/templates/base/knowledge/checklists/database-standards.md +84 -0
  191. package/templates/base/knowledge/checklists/design-reference.md +97 -0
  192. package/templates/base/knowledge/checklists/security.md +50 -0
  193. package/templates/base/knowledge/checklists/ssot-validation.md +19 -0
  194. package/templates/base/knowledge/domains/_template.md +16 -0
  195. package/templates/base/knowledge/platforms/_template.md +16 -0
  196. package/templates/base/knowledge/templates/sequence-report.md +44 -0
  197. package/templates/base/knowledge/templates/task-result.md +105 -0
  198. package/templates/base/skills/_template/SKILL.md +59 -0
  199. package/templates/base/skills/_template/references/_template.md +35 -0
  200. package/templates/base/skills/_template/rules/_sections.md +34 -0
  201. package/templates/base/skills/_template/rules/_template.md +32 -0
  202. package/templates/base/skills/_template/scripts/_template.sh +31 -0
  203. package/templates/base/skills/architecture/SKILL.md +54 -0
  204. package/templates/base/skills/architecture/references/adr-template.md +50 -0
  205. package/templates/base/skills/architecture/references/api-design.md +64 -0
  206. package/templates/base/skills/backend/node/SKILL.md +81 -0
  207. package/templates/base/skills/backend/node/rules/async-patterns.md +81 -0
  208. package/templates/base/skills/backend/node/rules/deployment.md +33 -0
  209. package/templates/base/skills/backend/node/rules/env-config.md +41 -0
  210. package/templates/base/skills/backend/node/rules/error-handling.md +83 -0
  211. package/templates/base/skills/backend/node/rules/hono-app-setup.md +98 -0
  212. package/templates/base/skills/backend/node/rules/jwt-auth.md +76 -0
  213. package/templates/base/skills/backend/node/rules/middleware.md +56 -0
  214. package/templates/base/skills/backend/node/rules/testing.md +82 -0
  215. package/templates/base/skills/coding/SKILL.md +47 -0
  216. package/templates/base/skills/coding/rules/patterns.md +81 -0
  217. package/templates/base/skills/controller/SKILL.md +111 -0
  218. package/templates/base/skills/controller/references/README.md +35 -0
  219. package/templates/base/skills/controller/rules/README.md +18 -0
  220. package/templates/base/skills/database/SKILL.md +98 -0
  221. package/templates/base/skills/database/prisma/SKILL.md +57 -0
  222. package/templates/base/skills/database/prisma/rules/queries.md +133 -0
  223. package/templates/base/skills/database/prisma/rules/schema-design.md +80 -0
  224. package/templates/base/skills/frontend/nextjs/SKILL.md +59 -0
  225. package/templates/base/skills/frontend/nextjs/rules/app-router.md +138 -0
  226. package/templates/base/skills/frontend/react/SKILL.md +86 -0
  227. package/templates/base/skills/frontend/react/rules/_sections.md +88 -0
  228. package/templates/base/skills/frontend/react/rules/anti-patterns.md +67 -0
  229. package/templates/base/skills/frontend/react/rules/async-api-routes.md +38 -0
  230. package/templates/base/skills/frontend/react/rules/async-defer-await.md +80 -0
  231. package/templates/base/skills/frontend/react/rules/async-dependencies.md +36 -0
  232. package/templates/base/skills/frontend/react/rules/async-parallel.md +28 -0
  233. package/templates/base/skills/frontend/react/rules/async-suspense-boundaries.md +99 -0
  234. package/templates/base/skills/frontend/react/rules/bundle-barrel-imports.md +59 -0
  235. package/templates/base/skills/frontend/react/rules/bundle-defer-third-party.md +49 -0
  236. package/templates/base/skills/frontend/react/rules/bundle-dynamic-imports.md +35 -0
  237. package/templates/base/skills/frontend/react/rules/component-conventions.md +74 -0
  238. package/templates/base/skills/frontend/react/rules/js-combine-iterations.md +32 -0
  239. package/templates/base/skills/frontend/react/rules/js-early-exit.md +50 -0
  240. package/templates/base/skills/frontend/react/rules/js-index-maps.md +37 -0
  241. package/templates/base/skills/frontend/react/rules/js-set-map-lookups.md +24 -0
  242. package/templates/base/skills/frontend/react/rules/rendering-conditional-render.md +40 -0
  243. package/templates/base/skills/frontend/react/rules/rendering-content-visibility.md +38 -0
  244. package/templates/base/skills/frontend/react/rules/rendering-hoist-jsx.md +46 -0
  245. package/templates/base/skills/frontend/react/rules/rerender-defer-reads.md +39 -0
  246. package/templates/base/skills/frontend/react/rules/rerender-derived-state.md +29 -0
  247. package/templates/base/skills/frontend/react/rules/rerender-memo.md +44 -0
  248. package/templates/base/skills/frontend/react/rules/rerender-transitions.md +40 -0
  249. package/templates/base/skills/frontend/react/rules/server-after-nonblocking.md +73 -0
  250. package/templates/base/skills/frontend/react/rules/server-cache-react.md +26 -0
  251. package/templates/base/skills/frontend/react/rules/server-parallel-fetching.md +79 -0
  252. package/templates/base/skills/frontend/react/rules/state-location.md +55 -0
  253. package/templates/base/skills/methodology/bdd/SKILL.md +69 -0
  254. package/templates/base/skills/methodology/bdd/rules/gherkin-patterns.md +113 -0
  255. package/templates/base/skills/methodology/ddd/SKILL.md +74 -0
  256. package/templates/base/skills/methodology/ddd/rules/strategic-patterns.md +98 -0
  257. package/templates/base/skills/methodology/debugging/SKILL.md +60 -0
  258. package/templates/base/skills/methodology/debugging/references/root-cause-tracing.md +84 -0
  259. package/templates/base/skills/methodology/tdd/SKILL.md +66 -0
  260. package/templates/base/skills/methodology/tdd/rules/real-world-example.md +88 -0
  261. package/templates/base/skills/methodology/tdd/rules/techniques.md +185 -0
  262. package/templates/base/skills/mobile/dart/SKILL.md +69 -0
  263. package/templates/base/skills/mobile/dart/rules/async-patterns.md +112 -0
  264. package/templates/base/skills/mobile/dart/rules/code-style.md +96 -0
  265. package/templates/base/skills/mobile/dart/rules/null-safety.md +84 -0
  266. package/templates/base/skills/mobile/dart/rules/type-system.md +111 -0
  267. package/templates/base/skills/mobile/flutter/SKILL.md +89 -0
  268. package/templates/base/skills/mobile/flutter/ci-cd/SKILL.md +82 -0
  269. package/templates/base/skills/mobile/flutter/ci-cd/references/ci-cd-pipeline.md +314 -0
  270. package/templates/base/skills/mobile/flutter/ci-cd/rules/code-signing.md +106 -0
  271. package/templates/base/skills/mobile/flutter/ci-cd/rules/codemagic-setup.md +116 -0
  272. package/templates/base/skills/mobile/flutter/ci-cd/rules/fastlane-setup.md +105 -0
  273. package/templates/base/skills/mobile/flutter/ci-cd/rules/github-actions.md +112 -0
  274. package/templates/base/skills/mobile/flutter/ci-cd/rules/store-deployment.md +106 -0
  275. package/templates/base/skills/mobile/flutter/ci-cd/rules/versioning.md +107 -0
  276. package/templates/base/skills/mobile/flutter/i18n/SKILL.md +78 -0
  277. package/templates/base/skills/mobile/flutter/i18n/references/i18n-architecture.md +225 -0
  278. package/templates/base/skills/mobile/flutter/i18n/rules/arb-files.md +182 -0
  279. package/templates/base/skills/mobile/flutter/i18n/rules/locale-switching.md +226 -0
  280. package/templates/base/skills/mobile/flutter/i18n/rules/localization-setup.md +137 -0
  281. package/templates/base/skills/mobile/flutter/i18n/rules/plural-gender.md +159 -0
  282. package/templates/base/skills/mobile/flutter/i18n/rules/text-direction.md +199 -0
  283. package/templates/base/skills/mobile/flutter/monitoring/SKILL.md +81 -0
  284. package/templates/base/skills/mobile/flutter/monitoring/references/monitoring-architecture.md +269 -0
  285. package/templates/base/skills/mobile/flutter/monitoring/rules/analytics.md +227 -0
  286. package/templates/base/skills/mobile/flutter/monitoring/rules/crashlytics-setup.md +195 -0
  287. package/templates/base/skills/mobile/flutter/monitoring/rules/logging.md +258 -0
  288. package/templates/base/skills/mobile/flutter/monitoring/rules/performance-monitoring.md +248 -0
  289. package/templates/base/skills/mobile/flutter/monitoring/rules/sentry-integration.md +249 -0
  290. package/templates/base/skills/mobile/flutter/networking/SKILL.md +88 -0
  291. package/templates/base/skills/mobile/flutter/networking/references/api-client-architecture.md +305 -0
  292. package/templates/base/skills/mobile/flutter/networking/rules/caching.md +212 -0
  293. package/templates/base/skills/mobile/flutter/networking/rules/connectivity.md +213 -0
  294. package/templates/base/skills/mobile/flutter/networking/rules/dio-setup.md +159 -0
  295. package/templates/base/skills/mobile/flutter/networking/rules/error-handling.md +209 -0
  296. package/templates/base/skills/mobile/flutter/networking/rules/interceptors.md +205 -0
  297. package/templates/base/skills/mobile/flutter/networking/rules/retrofit-patterns.md +194 -0
  298. package/templates/base/skills/mobile/flutter/push-notifications/SKILL.md +87 -0
  299. package/templates/base/skills/mobile/flutter/push-notifications/references/notification-architecture.md +340 -0
  300. package/templates/base/skills/mobile/flutter/push-notifications/references/platform-setup.md +286 -0
  301. package/templates/base/skills/mobile/flutter/push-notifications/rules/background-processing.md +308 -0
  302. package/templates/base/skills/mobile/flutter/push-notifications/rules/deep-linking.md +217 -0
  303. package/templates/base/skills/mobile/flutter/push-notifications/rules/fcm-setup.md +164 -0
  304. package/templates/base/skills/mobile/flutter/push-notifications/rules/local-notifications.md +262 -0
  305. package/templates/base/skills/mobile/flutter/push-notifications/rules/notification-handling.md +210 -0
  306. package/templates/base/skills/mobile/flutter/push-notifications/rules/notification-permissions.md +246 -0
  307. package/templates/base/skills/mobile/flutter/push-notifications/rules/rich-notifications.md +320 -0
  308. package/templates/base/skills/mobile/flutter/references/freezed-patterns.md +162 -0
  309. package/templates/base/skills/mobile/flutter/references/project-structure.md +170 -0
  310. package/templates/base/skills/mobile/flutter/rules/animations.md +112 -0
  311. package/templates/base/skills/mobile/flutter/rules/architecture.md +121 -0
  312. package/templates/base/skills/mobile/flutter/rules/navigation-routing.md +117 -0
  313. package/templates/base/skills/mobile/flutter/rules/performance.md +112 -0
  314. package/templates/base/skills/mobile/flutter/rules/platform-adaptive.md +126 -0
  315. package/templates/base/skills/mobile/flutter/rules/state-management.md +110 -0
  316. package/templates/base/skills/mobile/flutter/rules/testing.md +131 -0
  317. package/templates/base/skills/mobile/flutter/rules/widget-conventions.md +122 -0
  318. package/templates/base/skills/mobile/flutter/security/SKILL.md +86 -0
  319. package/templates/base/skills/mobile/flutter/security/references/mobile-security-checklist.md +168 -0
  320. package/templates/base/skills/mobile/flutter/security/rules/api-key-protection.md +206 -0
  321. package/templates/base/skills/mobile/flutter/security/rules/authentication.md +248 -0
  322. package/templates/base/skills/mobile/flutter/security/rules/data-protection.md +271 -0
  323. package/templates/base/skills/mobile/flutter/security/rules/obfuscation.md +213 -0
  324. package/templates/base/skills/mobile/flutter/security/rules/secure-storage.md +171 -0
  325. package/templates/base/skills/mobile/flutter/security/rules/ssl-pinning.md +197 -0
  326. package/templates/base/skills/planning/SKILL.md +58 -0
  327. package/templates/base/skills/planning/references/prd-guide.md +47 -0
  328. package/templates/base/skills/planning/references/requirements-guide.md +46 -0
  329. package/templates/base/skills/prompt-engineering/SKILL.md +103 -0
  330. package/templates/base/skills/retrospective/SKILL.md +102 -0
  331. package/templates/base/skills/security/SKILL.md +55 -0
  332. package/templates/base/skills/security/rules/owasp-examples.md +119 -0
  333. package/templates/base/skills/security/scripts/check-secrets.sh +55 -0
  334. package/templates/base/skills/testing/SKILL.md +63 -0
  335. package/templates/base/skills/testing/references/testing-patterns.md +103 -0
  336. package/templates/base/skills/tsq-protocol/SKILL.md +51 -0
  337. package/templates/base/skills/typescript/SKILL.md +67 -0
  338. package/templates/base/skills/typescript/rules/type-patterns.md +135 -0
  339. package/templates/base/skills/typescript/rules/utility-types.md +76 -0
  340. package/templates/base/skills/ui-design/SKILL.md +70 -0
  341. package/templates/{common → base}/timsquad/feedback/routing-rules.yaml +1 -1
  342. package/templates/{common → base}/timsquad/retrospective/metrics/metrics-schema.json +46 -1
  343. package/templates/platforms/claude-code/CLAUDE.md.template +89 -0
  344. package/templates/platforms/claude-code/rules/adr-rules.md +32 -0
  345. package/templates/platforms/claude-code/rules/feedback-routing.md +18 -0
  346. package/templates/platforms/claude-code/rules/phase-management.md +23 -0
  347. package/templates/platforms/claude-code/rules/reporting-format.md +26 -0
  348. package/templates/platforms/claude-code/rules/sequence-management.md +72 -0
  349. package/templates/platforms/claude-code/rules/workspace-sync.md +33 -0
  350. package/templates/platforms/claude-code/scripts/completion-guard.sh +57 -0
  351. package/templates/platforms/claude-code/scripts/phase-guard.sh +79 -0
  352. package/templates/platforms/claude-code/settings.json +98 -0
  353. package/templates/project-types/api-backend/config.yaml +227 -0
  354. package/templates/project-types/api-backend/process/workflow.xml +214 -0
  355. package/templates/project-types/fintech/config.yaml +151 -0
  356. package/templates/project-types/fintech/process/workflow.xml +316 -0
  357. package/templates/project-types/infra/config.yaml +327 -0
  358. package/templates/project-types/infra/process/workflow.xml +296 -0
  359. package/templates/project-types/mobile-app/config.yaml +123 -0
  360. package/templates/project-types/mobile-app/process/workflow.xml +191 -0
  361. package/templates/project-types/platform/config.yaml +254 -0
  362. package/templates/project-types/platform/process/workflow.xml +254 -0
  363. package/templates/project-types/web-app/config.yaml +198 -0
  364. package/templates/project-types/web-app/process/workflow.xml +210 -0
  365. package/templates/project-types/web-service/config.yaml +136 -0
  366. package/templates/project-types/web-service/process/workflow.xml +184 -0
  367. package/templates/common/CLAUDE.md.template +0 -254
  368. package/templates/common/claude/agents/tsq-dba.md +0 -311
  369. package/templates/common/claude/agents/tsq-designer.md +0 -323
  370. package/templates/common/claude/agents/tsq-developer.md +0 -177
  371. package/templates/common/claude/agents/tsq-planner.md +0 -190
  372. package/templates/common/claude/agents/tsq-prompter.md +0 -356
  373. package/templates/common/claude/agents/tsq-qa.md +0 -168
  374. package/templates/common/claude/agents/tsq-retro.md +0 -193
  375. package/templates/common/claude/agents/tsq-security.md +0 -221
  376. package/templates/common/claude/hooks/auto-metrics.sh +0 -165
  377. package/templates/common/claude/hooks/auto-worklog.sh +0 -245
  378. package/templates/common/claude/hooks/event-logger.sh +0 -208
  379. package/templates/common/claude/settings.json +0 -86
  380. package/templates/common/claude/skills/architecture/SKILL.md +0 -123
  381. package/templates/common/claude/skills/backend/node/SKILL.md +0 -1015
  382. package/templates/common/claude/skills/coding/SKILL.md +0 -171
  383. package/templates/common/claude/skills/database/prisma/SKILL.md +0 -357
  384. package/templates/common/claude/skills/frontend/nextjs/SKILL.md +0 -279
  385. package/templates/common/claude/skills/frontend/react/SKILL.md +0 -1729
  386. package/templates/common/claude/skills/methodology/bdd/SKILL.md +0 -234
  387. package/templates/common/claude/skills/methodology/ddd/SKILL.md +0 -311
  388. package/templates/common/claude/skills/methodology/tdd/SKILL.md +0 -512
  389. package/templates/common/claude/skills/planning/SKILL.md +0 -90
  390. package/templates/common/claude/skills/security/SKILL.md +0 -234
  391. package/templates/common/claude/skills/testing/SKILL.md +0 -146
  392. package/templates/common/claude/skills/typescript/SKILL.md +0 -435
  393. package/templates/common/config.template.yaml +0 -132
  394. /package/templates/{common → base}/timsquad/architectures/clean/ARCHITECTURE.md +0 -0
  395. /package/templates/{common → base}/timsquad/architectures/clean/backend.xml +0 -0
  396. /package/templates/{common → base}/timsquad/architectures/clean/frontend.xml +0 -0
  397. /package/templates/{common → base}/timsquad/architectures/fsd/ARCHITECTURE.md +0 -0
  398. /package/templates/{common → base}/timsquad/architectures/fsd/frontend.xml +0 -0
  399. /package/templates/{common → base}/timsquad/architectures/hexagonal/ARCHITECTURE.md +0 -0
  400. /package/templates/{common → base}/timsquad/architectures/hexagonal/backend.xml +0 -0
  401. /package/templates/{common → base}/timsquad/constraints/competency-framework.xml +0 -0
  402. /package/templates/{common → base}/timsquad/constraints/ssot-schema.xml +0 -0
  403. /package/templates/{common → base}/timsquad/feedback/feedback-router.sh +0 -0
  404. /package/templates/{common → base}/timsquad/generators/data-design.xml +0 -0
  405. /package/templates/{common → base}/timsquad/generators/prd.xml +0 -0
  406. /package/templates/{common → base}/timsquad/generators/requirements.xml +0 -0
  407. /package/templates/{common → base}/timsquad/generators/service-spec.xml +0 -0
  408. /package/templates/{common → base}/timsquad/logs/_example.md +0 -0
  409. /package/templates/{common → base}/timsquad/logs/_template.md +0 -0
  410. /package/templates/{common → base}/timsquad/patterns/cqrs.xml +0 -0
  411. /package/templates/{common → base}/timsquad/patterns/event-sourcing.xml +0 -0
  412. /package/templates/{common → base}/timsquad/patterns/repository.xml +0 -0
  413. /package/templates/{common → base}/timsquad/process/phase-checklist.yaml +0 -0
  414. /package/templates/{common → base}/timsquad/process/state-machine.xml +0 -0
  415. /package/templates/{common → base}/timsquad/process/validation-rules.xml +0 -0
  416. /package/templates/{common → base}/timsquad/process/workflow-base.xml +0 -0
  417. /package/templates/{common → base}/timsquad/retrospective/cycle-report.template.md +0 -0
  418. /package/templates/{common → base}/timsquad/retrospective/patterns/failure-patterns.md +0 -0
  419. /package/templates/{common → base}/timsquad/retrospective/patterns/success-patterns.md +0 -0
  420. /package/templates/{common → base}/timsquad/retrospective/retrospective-config.xml +0 -0
  421. /package/templates/{common → base}/timsquad/retrospective/retrospective-state.xml +0 -0
  422. /package/templates/{common → base}/timsquad/ssot/adr/ADR-000-template.md +0 -0
  423. /package/templates/{common → base}/timsquad/ssot/adr/ADR-001-example.md +0 -0
  424. /package/templates/{common → base}/timsquad/ssot/data-design.template.md +0 -0
  425. /package/templates/{common → base}/timsquad/ssot/deployment-spec.template.md +0 -0
  426. /package/templates/{common → base}/timsquad/ssot/env-config.template.md +0 -0
  427. /package/templates/{common → base}/timsquad/ssot/error-codes.template.md +0 -0
  428. /package/templates/{common → base}/timsquad/ssot/functional-spec.template.md +0 -0
  429. /package/templates/{common → base}/timsquad/ssot/glossary.template.md +0 -0
  430. /package/templates/{common → base}/timsquad/ssot/integration-spec.template.md +0 -0
  431. /package/templates/{common → base}/timsquad/ssot/planning.template.md +0 -0
  432. /package/templates/{common → base}/timsquad/ssot/prd.template.md +0 -0
  433. /package/templates/{common → base}/timsquad/ssot/requirements.template.md +0 -0
  434. /package/templates/{common → base}/timsquad/ssot/security-spec.template.md +0 -0
  435. /package/templates/{common → base}/timsquad/ssot/service-spec.template.md +0 -0
  436. /package/templates/{common → base}/timsquad/ssot/test-spec.template.md +0 -0
  437. /package/templates/{common → base}/timsquad/ssot/ui-ux-spec.template.md +0 -0
  438. /package/templates/{common → base}/timsquad/state/workspace.xml +0 -0
@@ -0,0 +1,282 @@
1
+ /**
2
+ * AST Parser using @swc/core
3
+ * 파일의 mechanical 코드 구조를 추출: classes, interfaces, methods, imports/exports
4
+ * 토큰 비용: 0 (로컬 파일 파싱)
5
+ */
6
+ import { parse } from '@swc/core';
7
+ import path from 'path';
8
+ import { readFile } from '../utils/fs.js';
9
+ /**
10
+ * Parse a single file and extract mechanical structure
11
+ */
12
+ export async function parseFile(filePath) {
13
+ const content = await readFile(filePath);
14
+ const ext = path.extname(filePath);
15
+ const isJsx = ext === '.jsx' || ext === '.tsx';
16
+ const syntax = ext === '.jsx' || ext === '.js' ? 'ecmascript' : 'typescript';
17
+ const module = await parse(content, {
18
+ syntax,
19
+ ...(syntax === 'typescript' ? { tsx: isJsx, decorators: true } : { jsx: isJsx, decorators: true }),
20
+ });
21
+ const totalLines = content.split('\n').length;
22
+ const classes = [];
23
+ const interfaces = [];
24
+ const exports = [];
25
+ const imports = [];
26
+ const methods = {};
27
+ for (const item of module.body) {
28
+ switch (item.type) {
29
+ case 'ImportDeclaration': {
30
+ const names = item.specifiers.map((s) => {
31
+ if (s.type === 'ImportDefaultSpecifier')
32
+ return 'default';
33
+ if (s.type === 'ImportNamespaceSpecifier')
34
+ return '*';
35
+ return s.local?.value || '';
36
+ }).filter(Boolean);
37
+ imports.push({ module: item.source.value, names });
38
+ break;
39
+ }
40
+ case 'ExportDeclaration': {
41
+ const decl = item.declaration;
42
+ processDeclaration(decl, content, classes, interfaces, exports, methods, true);
43
+ break;
44
+ }
45
+ case 'ExportDefaultDeclaration': {
46
+ const decl = item.decl;
47
+ if (decl?.identifier?.value) {
48
+ exports.push(decl.identifier.value);
49
+ }
50
+ else {
51
+ exports.push('default');
52
+ }
53
+ break;
54
+ }
55
+ case 'ExportNamedDeclaration': {
56
+ const specifiers = item.specifiers || [];
57
+ for (const s of specifiers) {
58
+ const name = s.exported?.value || s.orig?.value;
59
+ if (name)
60
+ exports.push(name);
61
+ }
62
+ break;
63
+ }
64
+ default: {
65
+ // Non-exported top-level declarations
66
+ processDeclaration(item, content, classes, interfaces, exports, methods, false);
67
+ break;
68
+ }
69
+ }
70
+ }
71
+ const dependencies = imports.map(i => i.module);
72
+ return { totalLines, classes, interfaces, exports, imports, dependencies, methods };
73
+ }
74
+ function processDeclaration(decl, content, classes, interfaces, exports, methods, isExported) {
75
+ if (!decl?.type)
76
+ return;
77
+ switch (decl.type) {
78
+ case 'ClassDeclaration': {
79
+ const className = decl.identifier?.value;
80
+ if (className) {
81
+ classes.push(className);
82
+ if (isExported)
83
+ exports.push(className);
84
+ }
85
+ // Extract class methods
86
+ for (const member of decl.body || []) {
87
+ if (member.type === 'ClassMethod') {
88
+ const method = extractClassMethod(member, content, isExported);
89
+ if (method) {
90
+ methods[method.name] = { mechanical: method };
91
+ }
92
+ }
93
+ }
94
+ break;
95
+ }
96
+ case 'TsInterfaceDeclaration': {
97
+ const ifaceName = decl.id?.value;
98
+ if (ifaceName) {
99
+ interfaces.push(ifaceName);
100
+ if (isExported)
101
+ exports.push(ifaceName);
102
+ }
103
+ break;
104
+ }
105
+ case 'FunctionDeclaration': {
106
+ const funcName = decl.identifier?.value;
107
+ if (funcName) {
108
+ if (isExported)
109
+ exports.push(funcName);
110
+ const method = extractFunction(decl, content, isExported);
111
+ if (method) {
112
+ methods[method.name] = { mechanical: method };
113
+ }
114
+ }
115
+ break;
116
+ }
117
+ case 'TsTypeAliasDeclaration': {
118
+ const typeName = decl.id?.value;
119
+ if (typeName && isExported)
120
+ exports.push(typeName);
121
+ break;
122
+ }
123
+ case 'TsEnumDeclaration': {
124
+ const enumName = decl.id?.value;
125
+ if (enumName && isExported)
126
+ exports.push(enumName);
127
+ break;
128
+ }
129
+ case 'VariableDeclaration': {
130
+ for (const d of decl.declarations || []) {
131
+ const varName = d.id?.value;
132
+ if (varName && isExported)
133
+ exports.push(varName);
134
+ // Arrow function variable: const foo = async (x: T) => { ... }
135
+ if (d.init?.type === 'ArrowFunctionExpression' && varName) {
136
+ const method = extractArrowFunction(varName, d.init, content, isExported);
137
+ if (method) {
138
+ methods[method.name] = { mechanical: method };
139
+ }
140
+ }
141
+ }
142
+ break;
143
+ }
144
+ }
145
+ }
146
+ function extractClassMethod(member, content, classIsExported) {
147
+ const name = member.key?.value;
148
+ if (!name)
149
+ return null;
150
+ const fn = member.function;
151
+ if (!fn)
152
+ return null;
153
+ const startLine = byteOffsetToLine(content, member.span.start);
154
+ const endLine = byteOffsetToLine(content, member.span.end);
155
+ const params = extractParams(fn.params, content);
156
+ const returnType = extractReturnType(fn.returnType, content);
157
+ const isAsync = fn.async || false;
158
+ const isPrivate = member.accessibility === 'private' || member.accessibility === 'protected';
159
+ const decorators = extractDecorators(member.decorators);
160
+ return {
161
+ name,
162
+ startLine,
163
+ endLine,
164
+ params,
165
+ returnType,
166
+ isAsync,
167
+ isExported: classIsExported && !isPrivate,
168
+ ...(decorators.length > 0 ? { decorators } : {}),
169
+ };
170
+ }
171
+ function extractFunction(decl, content, isExported) {
172
+ const name = decl.identifier?.value;
173
+ if (!name)
174
+ return null;
175
+ const startLine = byteOffsetToLine(content, decl.span.start);
176
+ const endLine = byteOffsetToLine(content, decl.span.end);
177
+ const params = extractParams(decl.params, content);
178
+ const returnType = extractReturnType(decl.returnType, content);
179
+ const isAsync = decl.async || false;
180
+ const decorators = extractDecorators(decl.decorators);
181
+ return {
182
+ name,
183
+ startLine,
184
+ endLine,
185
+ params,
186
+ returnType,
187
+ isAsync,
188
+ isExported,
189
+ ...(decorators.length > 0 ? { decorators } : {}),
190
+ };
191
+ }
192
+ function extractArrowFunction(name, init, content, isExported) {
193
+ const startLine = byteOffsetToLine(content, init.span.start);
194
+ const endLine = byteOffsetToLine(content, init.span.end);
195
+ const params = extractParams(init.params, content);
196
+ const returnType = extractReturnType(init.returnType, content);
197
+ const isAsync = init.async || false;
198
+ return {
199
+ name,
200
+ startLine,
201
+ endLine,
202
+ params,
203
+ returnType,
204
+ isAsync,
205
+ isExported,
206
+ };
207
+ }
208
+ function extractParams(params, content) {
209
+ if (!params)
210
+ return [];
211
+ return params.map((p) => {
212
+ const pat = p.pat || p;
213
+ const name = pat.value || pat.left?.value || '...';
214
+ const typeAnn = pat.typeAnnotation?.typeAnnotation;
215
+ if (typeAnn) {
216
+ const typeStr = extractTypeString(typeAnn, content);
217
+ return `${name}: ${typeStr}`;
218
+ }
219
+ return name;
220
+ });
221
+ }
222
+ function extractReturnType(returnType, content) {
223
+ if (!returnType?.typeAnnotation)
224
+ return 'void';
225
+ return extractTypeString(returnType.typeAnnotation, content);
226
+ }
227
+ function extractTypeString(typeNode, content) {
228
+ if (!typeNode)
229
+ return 'unknown';
230
+ switch (typeNode.type) {
231
+ case 'TsKeywordType':
232
+ return typeNode.kind;
233
+ case 'TsTypeReference': {
234
+ const name = typeNode.typeName?.value || 'unknown';
235
+ if (typeNode.typeParams?.params?.length) {
236
+ const params = typeNode.typeParams.params.map((p) => extractTypeString(p, content));
237
+ return `${name}<${params.join(', ')}>`;
238
+ }
239
+ return name;
240
+ }
241
+ case 'TsArrayType':
242
+ return `${extractTypeString(typeNode.elemType, content)}[]`;
243
+ case 'TsUnionType':
244
+ return typeNode.types.map((t) => extractTypeString(t, content)).join(' | ');
245
+ case 'TsIntersectionType':
246
+ return typeNode.types.map((t) => extractTypeString(t, content)).join(' & ');
247
+ case 'TsLiteralType':
248
+ return String(typeNode.literal?.value ?? 'literal');
249
+ case 'TsTypeLiteral':
250
+ return 'object';
251
+ case 'TsFunctionType':
252
+ return 'Function';
253
+ case 'TsTupleType':
254
+ return `[${(typeNode.elemTypes || []).map((t) => extractTypeString(t.ty || t, content)).join(', ')}]`;
255
+ case 'TsParenthesizedType':
256
+ return `(${extractTypeString(typeNode.typeAnnotation, content)})`;
257
+ default:
258
+ // Fallback: extract from source text
259
+ if (typeNode.span) {
260
+ return content.substring(typeNode.span.start, typeNode.span.end).trim() || 'unknown';
261
+ }
262
+ return 'unknown';
263
+ }
264
+ }
265
+ function extractDecorators(decorators) {
266
+ if (!decorators?.length)
267
+ return [];
268
+ return decorators.map((d) => {
269
+ const expr = d.expression;
270
+ if (expr?.type === 'Identifier')
271
+ return `@${expr.value}`;
272
+ if (expr?.type === 'CallExpression' && expr.callee?.value)
273
+ return `@${expr.callee.value}`;
274
+ return '@unknown';
275
+ }).filter(Boolean);
276
+ }
277
+ function byteOffsetToLine(content, offset) {
278
+ // SWC span offsets are 0-based byte offsets
279
+ const before = content.substring(0, offset);
280
+ return before.split('\n').length;
281
+ }
282
+ //# sourceMappingURL=ast-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-parser.js","sourceRoot":"","sources":["../../src/lib/ast-parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,MAAM,KAAK,GAAG,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,MAAM,CAAC;IAC/C,MAAM,MAAM,GAAG,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;IAE7E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;QAClC,MAAM;QACN,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;KACnG,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,OAAO,GAA+C,EAAE,CAAC;IAC/D,MAAM,OAAO,GAAgC,EAAE,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/B,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;oBAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,wBAAwB;wBAAE,OAAO,SAAS,CAAC;oBAC1D,IAAI,CAAC,CAAC,IAAI,KAAK,0BAA0B;wBAAE,OAAO,GAAG,CAAC;oBACtD,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC9B,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACnB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnD,MAAM;YACR,CAAC;YAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC9B,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC/E,MAAM;YACR,CAAC;YAED,KAAK,0BAA0B,CAAC,CAAC,CAAC;gBAChC,MAAM,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC;gBAChC,IAAI,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACtC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;gBAC9B,MAAM,UAAU,GAAI,IAAY,CAAC,UAAU,IAAI,EAAE,CAAC;gBAClD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;oBAC3B,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC;oBAChD,IAAI,IAAI;wBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/B,CAAC;gBACD,MAAM;YACR,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,sCAAsC;gBACtC,kBAAkB,CAAC,IAAW,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBACvF,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAEhD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,kBAAkB,CACzB,IAAS,EACT,OAAe,EACf,OAAiB,EACjB,UAAoB,EACpB,OAAiB,EACjB,OAAoC,EACpC,UAAmB;IAEnB,IAAI,CAAC,IAAI,EAAE,IAAI;QAAE,OAAO;IAExB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;YACzC,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxB,IAAI,UAAU;oBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;YACD,wBAAwB;YACxB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;gBACrC,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;oBAC/D,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;YACjC,IAAI,SAAS,EAAE,CAAC;gBACd,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,IAAI,UAAU;oBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1C,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;YACxC,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,UAAU;oBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;gBAC1D,IAAI,MAAM,EAAE,CAAC;oBACX,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;gBAChD,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,wBAAwB,CAAC,CAAC,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;YAChC,IAAI,QAAQ,IAAI,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM;QACR,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC;YAChC,IAAI,QAAQ,IAAI,UAAU;gBAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,MAAM;QACR,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;gBACxC,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC;gBAC5B,IAAI,OAAO,IAAI,UAAU;oBAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAEjD,+DAA+D;gBAC/D,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,yBAAyB,IAAI,OAAO,EAAE,CAAC;oBAC1D,MAAM,MAAM,GAAG,oBAAoB,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;oBAC1E,IAAI,MAAM,EAAE,CAAC;wBACX,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAW,EAAE,OAAe,EAAE,eAAwB;IAChF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC;IAC/B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC3B,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAErB,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,IAAI,KAAK,CAAC;IAClC,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,MAAM,CAAC,aAAa,KAAK,WAAW,CAAC;IAC7F,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAExD,OAAO;QACL,IAAI;QACJ,SAAS;QACT,OAAO;QACP,MAAM;QACN,UAAU;QACV,OAAO;QACP,UAAU,EAAE,eAAe,IAAI,CAAC,SAAS;QACzC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,IAAS,EAAE,OAAe,EAAE,UAAmB;IACtE,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC;IACpC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IACpC,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAEtD,OAAO;QACL,IAAI;QACJ,SAAS;QACT,OAAO;QACP,MAAM;QACN,UAAU;QACV,OAAO;QACP,UAAU;QACV,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,IAAS,EAAE,OAAe,EAAE,UAAmB;IACzF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;IAEpC,OAAO;QACL,IAAI;QACJ,SAAS;QACT,OAAO;QACP,MAAM;QACN,UAAU;QACV,OAAO;QACP,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAa,EAAE,OAAe;IACnD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,KAAK,CAAC;QACnD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,EAAE,cAAc,CAAC;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAe,EAAE,OAAe;IACzD,IAAI,CAAC,UAAU,EAAE,cAAc;QAAE,OAAO,MAAM,CAAC;IAC/C,OAAO,iBAAiB,CAAC,UAAU,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAa,EAAE,OAAe;IACvD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,eAAe;YAClB,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,KAAK,IAAI,SAAS,CAAC;YACnD,IAAI,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACxC,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;gBACzF,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;YACzC,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,aAAa;YAChB,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;QAC9D,KAAK,aAAa;YAChB,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnF,KAAK,oBAAoB;YACvB,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnF,KAAK,eAAe;YAClB,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,SAAS,CAAC,CAAC;QACtD,KAAK,eAAe;YAClB,OAAO,QAAQ,CAAC;QAClB,KAAK,gBAAgB;YACnB,OAAO,UAAU,CAAC;QACpB,KAAK,aAAa;YAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7G,KAAK,qBAAqB;YACxB,OAAO,IAAI,iBAAiB,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC;QACpE;YACE,qCAAqC;YACrC,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAClB,OAAO,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;YACvF,CAAC;YACD,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAiB;IAC1C,IAAI,CAAC,UAAU,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC;QAC1B,IAAI,IAAI,EAAE,IAAI,KAAK,YAAY;YAAE,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACzD,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,MAAM,EAAE,KAAK;YAAE,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1F,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe,EAAE,MAAc;IACvD,4CAA4C;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;AACnC,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Compile rules for SSOT → agent-facing spec transformation.
3
+ *
4
+ * Rules are declarative: define source, split strategy, output location,
5
+ * and required fields for schema validation.
6
+ * No AI interpretation — deterministic structural extraction only.
7
+ */
8
+ /** How to split a source document into multiple spec files */
9
+ export type SplitStrategy = 'h2' | 'h3' | 'none';
10
+ /** Where compiled output goes within controller skill */
11
+ export type OutputTarget = 'references' | 'rules';
12
+ /** A single compile rule mapping SSOT source → spec output */
13
+ export interface CompileRule {
14
+ /** SSOT filename without extension (e.g., 'service-spec') */
15
+ source: string;
16
+ /** Output target directory within controller skill */
17
+ output: OutputTarget;
18
+ /** How to split the document */
19
+ splitBy: SplitStrategy;
20
+ /** Output filename pattern. Available vars: {section}, {method}, {path}, {entity} */
21
+ filenamePattern: string;
22
+ /** Required fields in each section for schema validation */
23
+ requiredFields: string[];
24
+ /** Human-readable description */
25
+ description: string;
26
+ }
27
+ /** Metadata embedded in compiled spec files */
28
+ export interface CompileMarker {
29
+ /** Original SSOT file path (relative to .timsquad/) */
30
+ source: string;
31
+ /** Section anchor in source (e.g., 'POST-auth-login') */
32
+ section: string;
33
+ /** MD5 hash of source section content */
34
+ ssotHash: string;
35
+ /** ISO 8601 compilation timestamp */
36
+ compiledAt: string;
37
+ }
38
+ /** Manifest entry for stale detection */
39
+ export interface ManifestEntry {
40
+ source: string;
41
+ ssotHash: string;
42
+ compiledAt: string;
43
+ outputFiles: string[];
44
+ }
45
+ /** Full compile manifest */
46
+ export interface CompileManifest {
47
+ version: string;
48
+ compiledAt: string;
49
+ entries: ManifestEntry[];
50
+ }
51
+ /**
52
+ * Default compile rules for all SSOT document types.
53
+ * Rules match SSOT template structure (H2=domain, H3=endpoint, H4=detail).
54
+ */
55
+ export declare const COMPILE_RULES: CompileRule[];
56
+ /**
57
+ * Get compile rules for a given set of SSOT documents.
58
+ * Filters rules to only include sources that exist.
59
+ */
60
+ export declare function getCompileRules(availableSsotDocs: string[]): CompileRule[];
61
+ /**
62
+ * Get the default compile rule for SSOT documents not in COMPILE_RULES.
63
+ * Falls back to a generic no-split rule.
64
+ */
65
+ export declare function getDefaultRule(source: string): CompileRule;
66
+ //# sourceMappingURL=compile-rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-rules.d.ts","sourceRoot":"","sources":["../../src/lib/compile-rules.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,8DAA8D;AAC9D,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAEjD,yDAAyD;AACzD,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC;AAElD,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,MAAM,EAAE,YAAY,CAAC;IACrB,gCAAgC;IAChC,OAAO,EAAE,aAAa,CAAC;IACvB,qFAAqF;IACrF,eAAe,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,yCAAyC;AACzC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,4BAA4B;AAC5B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,EAyEtC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,eAAe,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAQ1E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CAS1D"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Compile rules for SSOT → agent-facing spec transformation.
3
+ *
4
+ * Rules are declarative: define source, split strategy, output location,
5
+ * and required fields for schema validation.
6
+ * No AI interpretation — deterministic structural extraction only.
7
+ */
8
+ /**
9
+ * Default compile rules for all SSOT document types.
10
+ * Rules match SSOT template structure (H2=domain, H3=endpoint, H4=detail).
11
+ */
12
+ export const COMPILE_RULES = [
13
+ {
14
+ source: 'service-spec',
15
+ output: 'references',
16
+ splitBy: 'h3',
17
+ filenamePattern: '{section}.spec.md',
18
+ requiredFields: ['Endpoint', 'Request', 'Response'],
19
+ description: 'API 엔드포인트별 분할 (H3 = 개별 API)',
20
+ },
21
+ {
22
+ source: 'data-design',
23
+ output: 'references',
24
+ splitBy: 'h2',
25
+ filenamePattern: '{section}.spec.md',
26
+ requiredFields: ['Fields'],
27
+ description: '엔티티별 분할 (H2 = 테이블/모델)',
28
+ },
29
+ {
30
+ source: 'error-codes',
31
+ output: 'references',
32
+ splitBy: 'none',
33
+ filenamePattern: 'error-codes.spec.md',
34
+ requiredFields: ['Code', 'HTTP', 'Description'],
35
+ description: '에러 코드 전체 (분할 없음)',
36
+ },
37
+ {
38
+ source: 'requirements',
39
+ output: 'rules',
40
+ splitBy: 'none',
41
+ filenamePattern: 'completion-criteria.md',
42
+ requiredFields: ['ID', 'Priority'],
43
+ description: '요건 목록 → 완료 기준 규칙',
44
+ },
45
+ {
46
+ source: 'functional-spec',
47
+ output: 'references',
48
+ splitBy: 'h2',
49
+ filenamePattern: '{section}.spec.md',
50
+ requiredFields: [],
51
+ description: '기능 시나리오별 분할',
52
+ },
53
+ {
54
+ source: 'ui-ux-spec',
55
+ output: 'references',
56
+ splitBy: 'h2',
57
+ filenamePattern: '{section}.spec.md',
58
+ requiredFields: [],
59
+ description: 'UI/UX 화면별 분할',
60
+ },
61
+ {
62
+ source: 'security-spec',
63
+ output: 'rules',
64
+ splitBy: 'none',
65
+ filenamePattern: 'security-constraints.md',
66
+ requiredFields: [],
67
+ description: '보안 요건 → 제약 규칙',
68
+ },
69
+ {
70
+ source: 'test-spec',
71
+ output: 'references',
72
+ splitBy: 'none',
73
+ filenamePattern: 'test-spec.spec.md',
74
+ requiredFields: [],
75
+ description: '테스트 명세 (분할 없음)',
76
+ },
77
+ {
78
+ source: 'data-design',
79
+ output: 'references',
80
+ splitBy: 'h2',
81
+ filenamePattern: '{section}.spec.md',
82
+ requiredFields: ['Fields'],
83
+ description: '데이터 모델별 분할',
84
+ },
85
+ ];
86
+ /**
87
+ * Get compile rules for a given set of SSOT documents.
88
+ * Filters rules to only include sources that exist.
89
+ */
90
+ export function getCompileRules(availableSsotDocs) {
91
+ // Deduplicate rules by source (first rule wins)
92
+ const seen = new Set();
93
+ return COMPILE_RULES.filter((rule) => {
94
+ if (seen.has(rule.source))
95
+ return false;
96
+ seen.add(rule.source);
97
+ return availableSsotDocs.includes(rule.source);
98
+ });
99
+ }
100
+ /**
101
+ * Get the default compile rule for SSOT documents not in COMPILE_RULES.
102
+ * Falls back to a generic no-split rule.
103
+ */
104
+ export function getDefaultRule(source) {
105
+ return {
106
+ source,
107
+ output: 'references',
108
+ splitBy: 'none',
109
+ filenamePattern: `${source}.spec.md`,
110
+ requiredFields: [],
111
+ description: `${source} (기본 규칙, 분할 없음)`,
112
+ };
113
+ }
114
+ //# sourceMappingURL=compile-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile-rules.js","sourceRoot":"","sources":["../../src/lib/compile-rules.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAmDH;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C;QACE,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,mBAAmB;QACpC,cAAc,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC;QACnD,WAAW,EAAE,6BAA6B;KAC3C;IACD;QACE,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,mBAAmB;QACpC,cAAc,EAAE,CAAC,QAAQ,CAAC;QAC1B,WAAW,EAAE,uBAAuB;KACrC;IACD;QACE,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,MAAM;QACf,eAAe,EAAE,qBAAqB;QACtC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC;QAC/C,WAAW,EAAE,kBAAkB;KAChC;IACD;QACE,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,MAAM;QACf,eAAe,EAAE,wBAAwB;QACzC,cAAc,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC;QAClC,WAAW,EAAE,kBAAkB;KAChC;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,mBAAmB;QACpC,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,aAAa;KAC3B;IACD;QACE,MAAM,EAAE,YAAY;QACpB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,mBAAmB;QACpC,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,cAAc;KAC5B;IACD;QACE,MAAM,EAAE,eAAe;QACvB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,MAAM;QACf,eAAe,EAAE,yBAAyB;QAC1C,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,eAAe;KAC7B;IACD;QACE,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,MAAM;QACf,eAAe,EAAE,mBAAmB;QACpC,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,gBAAgB;KAC9B;IACD;QACE,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,mBAAmB;QACpC,cAAc,EAAE,CAAC,QAAQ,CAAC;QAC1B,WAAW,EAAE,YAAY;KAC1B;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,iBAA2B;IACzD,gDAAgD;IAChD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACnC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,KAAK,CAAC;QACxC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO;QACL,MAAM;QACN,MAAM,EAAE,YAAY;QACpB,OAAO,EAAE,MAAM;QACf,eAAe,EAAE,GAAG,MAAM,UAAU;QACpC,cAAc,EAAE,EAAE;QAClB,WAAW,EAAE,GAAG,MAAM,iBAAiB;KACxC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * SSOT Compiler: Transforms human-written SSOT documents into
3
+ * agent-facing spec files for the controller skill (Context DI).
4
+ *
5
+ * Design principles:
6
+ * - Deterministic extraction only (no AI interpretation)
7
+ * - Section markers for traceability (source, hash, timestamp)
8
+ * - Schema validation for completeness checking
9
+ * - Stale detection via compile manifest
10
+ */
11
+ import { type CompileRule, type CompileManifest, type CompileMarker } from './compile-rules.js';
12
+ /** A parsed section from an SSOT markdown document */
13
+ export interface ParsedSection {
14
+ /** Heading text (e.g., "2.1 로그인") */
15
+ heading: string;
16
+ /** Heading level (2 = H2, 3 = H3) */
17
+ level: number;
18
+ /** Full content including heading and body */
19
+ content: string;
20
+ /** Slugified anchor (e.g., "POST-auth-login") */
21
+ anchor: string;
22
+ /** Parent section heading (for H3 under H2) */
23
+ parent?: string;
24
+ }
25
+ /** Validation result for a compiled spec */
26
+ export interface ValidationResult {
27
+ source: string;
28
+ totalSections: number;
29
+ validSections: number;
30
+ missingFields: Array<{
31
+ section: string;
32
+ fields: string[];
33
+ }>;
34
+ score: number;
35
+ }
36
+ /** Overall compile result */
37
+ export interface CompileResult {
38
+ success: boolean;
39
+ compiled: Array<{
40
+ source: string;
41
+ outputFiles: string[];
42
+ }>;
43
+ validations: ValidationResult[];
44
+ skipped: string[];
45
+ errors: string[];
46
+ }
47
+ /**
48
+ * Parse a markdown document into sections by heading level.
49
+ */
50
+ export declare function parseMarkdownSections(content: string, splitBy: 'h2' | 'h3'): ParsedSection[];
51
+ /**
52
+ * Slugify a heading into a URL-safe anchor.
53
+ * "2.1 로그인" → "2-1-로그인"
54
+ * "POST /auth/login" → "POST-auth-login"
55
+ */
56
+ export declare function slugify(text: string): string;
57
+ /**
58
+ * Check if a section contains the required fields.
59
+ * Looks for field names in table headers or bold text.
60
+ */
61
+ export declare function validateSectionFields(content: string, requiredFields: string[]): string[];
62
+ /** Generate section markers as HTML comments */
63
+ export declare function generateMarkers(marker: CompileMarker): string;
64
+ /** Compute MD5 hash of content */
65
+ export declare function computeHash(content: string): string;
66
+ /**
67
+ * Compile a single SSOT document according to its rule.
68
+ * Returns list of output file paths (relative to controller skill dir).
69
+ */
70
+ export declare function compileSsotDocument(ssotPath: string, rule: CompileRule, controllerDir: string, sourceName: string): Promise<{
71
+ outputFiles: string[];
72
+ validation: ValidationResult;
73
+ }>;
74
+ /**
75
+ * Compile all SSOT documents in a project.
76
+ *
77
+ * @param projectRoot Project root directory
78
+ * @param controllerDir Path to controller skill dir (.claude/skills/controller)
79
+ * @returns CompileResult with all outputs and validation
80
+ */
81
+ export declare function compileAll(projectRoot: string, controllerDir: string): Promise<CompileResult>;
82
+ /**
83
+ * Load existing manifest. Returns null if not found.
84
+ */
85
+ export declare function loadManifest(controllerDir: string): Promise<CompileManifest | null>;
86
+ /**
87
+ * Check which SSOT documents are stale (changed since last compile).
88
+ */
89
+ export declare function checkStale(projectRoot: string, controllerDir: string): Promise<Array<{
90
+ source: string;
91
+ reason: string;
92
+ }>>;
93
+ /**
94
+ * Parse agent prerequisites from agent markdown files.
95
+ * Extracts from <prerequisites> XML tag.
96
+ */
97
+ export declare function parseAgentPrerequisites(content: string): string[];
98
+ /**
99
+ * Validate that all agent prerequisites can be resolved from compiled specs.
100
+ */
101
+ export declare function validateDependencyGraph(projectRoot: string, controllerDir: string): Promise<Array<{
102
+ agent: string;
103
+ missing: string[];
104
+ }>>;
105
+ //# sourceMappingURL=compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/lib/compiler.ts"],"names":[],"mappings":"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"}