timsquad 2.0.0 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (353) hide show
  1. package/README.md +168 -234
  2. package/dist/commands/daemon.d.ts +7 -0
  3. package/dist/commands/daemon.d.ts.map +1 -0
  4. package/dist/commands/daemon.js +140 -0
  5. package/dist/commands/daemon.js.map +1 -0
  6. package/dist/commands/feedback.d.ts +9 -0
  7. package/dist/commands/feedback.d.ts.map +1 -1
  8. package/dist/commands/feedback.js +251 -11
  9. package/dist/commands/feedback.js.map +1 -1
  10. package/dist/commands/full.js +2 -2
  11. package/dist/commands/full.js.map +1 -1
  12. package/dist/commands/git/commit.d.ts.map +1 -1
  13. package/dist/commands/git/commit.js +1 -4
  14. package/dist/commands/git/commit.js.map +1 -1
  15. package/dist/commands/improve.d.ts +3 -0
  16. package/dist/commands/improve.d.ts.map +1 -0
  17. package/dist/commands/improve.js +286 -0
  18. package/dist/commands/improve.js.map +1 -0
  19. package/dist/commands/init.d.ts.map +1 -1
  20. package/dist/commands/init.js +110 -22
  21. package/dist/commands/init.js.map +1 -1
  22. package/dist/commands/knowledge.d.ts +3 -0
  23. package/dist/commands/knowledge.d.ts.map +1 -0
  24. package/dist/commands/knowledge.js +316 -0
  25. package/dist/commands/knowledge.js.map +1 -0
  26. package/dist/commands/log.d.ts +27 -0
  27. package/dist/commands/log.d.ts.map +1 -1
  28. package/dist/commands/log.js +1167 -2
  29. package/dist/commands/log.js.map +1 -1
  30. package/dist/commands/meta-index.d.ts +3 -0
  31. package/dist/commands/meta-index.d.ts.map +1 -0
  32. package/dist/commands/meta-index.js +401 -0
  33. package/dist/commands/meta-index.js.map +1 -0
  34. package/dist/commands/metrics.d.ts.map +1 -1
  35. package/dist/commands/metrics.js +640 -100
  36. package/dist/commands/metrics.js.map +1 -1
  37. package/dist/commands/retro.d.ts.map +1 -1
  38. package/dist/commands/retro.js +606 -58
  39. package/dist/commands/retro.js.map +1 -1
  40. package/dist/commands/session.d.ts +3 -0
  41. package/dist/commands/session.d.ts.map +1 -0
  42. package/dist/commands/session.js +346 -0
  43. package/dist/commands/session.js.map +1 -0
  44. package/dist/commands/upgrade.d.ts +8 -0
  45. package/dist/commands/upgrade.d.ts.map +1 -0
  46. package/dist/commands/upgrade.js +287 -0
  47. package/dist/commands/upgrade.js.map +1 -0
  48. package/dist/commands/workflow.d.ts +3 -0
  49. package/dist/commands/workflow.d.ts.map +1 -0
  50. package/dist/commands/workflow.js +607 -0
  51. package/dist/commands/workflow.js.map +1 -0
  52. package/dist/daemon/context-writer.d.ts +16 -0
  53. package/dist/daemon/context-writer.d.ts.map +1 -0
  54. package/dist/daemon/context-writer.js +35 -0
  55. package/dist/daemon/context-writer.js.map +1 -0
  56. package/dist/daemon/entry.d.ts +7 -0
  57. package/dist/daemon/entry.d.ts.map +1 -0
  58. package/dist/daemon/entry.js +17 -0
  59. package/dist/daemon/entry.js.map +1 -0
  60. package/dist/daemon/event-queue.d.ts +52 -0
  61. package/dist/daemon/event-queue.d.ts.map +1 -0
  62. package/dist/daemon/event-queue.js +255 -0
  63. package/dist/daemon/event-queue.js.map +1 -0
  64. package/dist/daemon/file-watcher.d.ts +19 -0
  65. package/dist/daemon/file-watcher.d.ts.map +1 -0
  66. package/dist/daemon/file-watcher.js +87 -0
  67. package/dist/daemon/file-watcher.js.map +1 -0
  68. package/dist/daemon/index.d.ts +28 -0
  69. package/dist/daemon/index.d.ts.map +1 -0
  70. package/dist/daemon/index.js +204 -0
  71. package/dist/daemon/index.js.map +1 -0
  72. package/dist/daemon/jsonl-watcher.d.ts +49 -0
  73. package/dist/daemon/jsonl-watcher.d.ts.map +1 -0
  74. package/dist/daemon/jsonl-watcher.js +258 -0
  75. package/dist/daemon/jsonl-watcher.js.map +1 -0
  76. package/dist/daemon/meta-cache.d.ts +62 -0
  77. package/dist/daemon/meta-cache.d.ts.map +1 -0
  78. package/dist/daemon/meta-cache.js +240 -0
  79. package/dist/daemon/meta-cache.js.map +1 -0
  80. package/dist/daemon/shutdown.d.ts +21 -0
  81. package/dist/daemon/shutdown.d.ts.map +1 -0
  82. package/dist/daemon/shutdown.js +158 -0
  83. package/dist/daemon/shutdown.js.map +1 -0
  84. package/dist/index.js +24 -3
  85. package/dist/index.js.map +1 -1
  86. package/dist/lib/agent-composer.d.ts +38 -0
  87. package/dist/lib/agent-composer.d.ts.map +1 -0
  88. package/dist/lib/agent-composer.js +128 -0
  89. package/dist/lib/agent-composer.js.map +1 -0
  90. package/dist/lib/agent-generator.d.ts +22 -0
  91. package/dist/lib/agent-generator.d.ts.map +1 -0
  92. package/dist/lib/agent-generator.js +150 -0
  93. package/dist/lib/agent-generator.js.map +1 -0
  94. package/dist/lib/ast-parser.d.ts +11 -0
  95. package/dist/lib/ast-parser.d.ts.map +1 -0
  96. package/dist/lib/ast-parser.js +282 -0
  97. package/dist/lib/ast-parser.js.map +1 -0
  98. package/dist/lib/config.d.ts +6 -2
  99. package/dist/lib/config.d.ts.map +1 -1
  100. package/dist/lib/config.js +27 -3
  101. package/dist/lib/config.js.map +1 -1
  102. package/dist/lib/meta-index.d.ts +19 -0
  103. package/dist/lib/meta-index.d.ts.map +1 -0
  104. package/dist/lib/meta-index.js +573 -0
  105. package/dist/lib/meta-index.js.map +1 -0
  106. package/dist/lib/project.js +1 -1
  107. package/dist/lib/project.js.map +1 -1
  108. package/dist/lib/skill-generator.d.ts +32 -0
  109. package/dist/lib/skill-generator.d.ts.map +1 -0
  110. package/dist/lib/skill-generator.js +187 -0
  111. package/dist/lib/skill-generator.js.map +1 -0
  112. package/dist/lib/template.d.ts +16 -2
  113. package/dist/lib/template.d.ts.map +1 -1
  114. package/dist/lib/template.js +175 -21
  115. package/dist/lib/template.js.map +1 -1
  116. package/dist/lib/ui-index.d.ts +12 -0
  117. package/dist/lib/ui-index.d.ts.map +1 -0
  118. package/dist/lib/ui-index.js +239 -0
  119. package/dist/lib/ui-index.js.map +1 -0
  120. package/dist/lib/ui-parser.d.ts +12 -0
  121. package/dist/lib/ui-parser.d.ts.map +1 -0
  122. package/dist/lib/ui-parser.js +472 -0
  123. package/dist/lib/ui-parser.js.map +1 -0
  124. package/dist/lib/update-check.d.ts +6 -0
  125. package/dist/lib/update-check.d.ts.map +1 -0
  126. package/dist/lib/update-check.js +121 -0
  127. package/dist/lib/update-check.js.map +1 -0
  128. package/dist/lib/upgrade-backup.d.ts +33 -0
  129. package/dist/lib/upgrade-backup.d.ts.map +1 -0
  130. package/dist/lib/upgrade-backup.js +101 -0
  131. package/dist/lib/upgrade-backup.js.map +1 -0
  132. package/dist/lib/version.d.ts +19 -0
  133. package/dist/lib/version.d.ts.map +1 -0
  134. package/dist/lib/version.js +35 -0
  135. package/dist/lib/version.js.map +1 -0
  136. package/dist/lib/workflow-state.d.ts +48 -0
  137. package/dist/lib/workflow-state.d.ts.map +1 -0
  138. package/dist/lib/workflow-state.js +67 -0
  139. package/dist/lib/workflow-state.js.map +1 -0
  140. package/dist/types/config.d.ts +102 -2
  141. package/dist/types/config.d.ts.map +1 -1
  142. package/dist/types/config.js +173 -9
  143. package/dist/types/config.js.map +1 -1
  144. package/dist/types/feedback.d.ts +59 -1
  145. package/dist/types/feedback.d.ts.map +1 -1
  146. package/dist/types/feedback.js +1 -4
  147. package/dist/types/feedback.js.map +1 -1
  148. package/dist/types/index.d.ts +3 -0
  149. package/dist/types/index.d.ts.map +1 -1
  150. package/dist/types/index.js +3 -0
  151. package/dist/types/index.js.map +1 -1
  152. package/dist/types/meta-index.d.ts +146 -0
  153. package/dist/types/meta-index.d.ts.map +1 -0
  154. package/dist/types/meta-index.js +7 -0
  155. package/dist/types/meta-index.js.map +1 -0
  156. package/dist/types/project.d.ts +19 -3
  157. package/dist/types/project.d.ts.map +1 -1
  158. package/dist/types/project.js +24 -1
  159. package/dist/types/project.js.map +1 -1
  160. package/dist/types/task-log.d.ts +208 -0
  161. package/dist/types/task-log.d.ts.map +1 -0
  162. package/dist/types/task-log.js +6 -0
  163. package/dist/types/task-log.js.map +1 -0
  164. package/dist/types/ui-meta.d.ts +118 -0
  165. package/dist/types/ui-meta.d.ts.map +1 -0
  166. package/dist/types/ui-meta.js +7 -0
  167. package/dist/types/ui-meta.js.map +1 -0
  168. package/package.json +12 -4
  169. package/templates/base/agents/base/tsq-architect.md +68 -0
  170. package/templates/base/agents/base/tsq-dba.md +56 -0
  171. package/templates/base/agents/base/tsq-designer.md +72 -0
  172. package/templates/base/agents/base/tsq-developer.md +67 -0
  173. package/templates/base/agents/base/tsq-qa.md +55 -0
  174. package/templates/base/agents/base/tsq-security.md +65 -0
  175. package/templates/base/agents/overlays/domain/general-web/_common.md +11 -0
  176. package/templates/base/agents/overlays/platform/claude-code.md +12 -0
  177. package/templates/base/config.template.yaml +213 -0
  178. package/templates/base/knowledge/checklists/accessibility.md +37 -0
  179. package/templates/base/knowledge/checklists/architecture-review.md +28 -0
  180. package/templates/base/knowledge/checklists/database-standards.md +84 -0
  181. package/templates/base/knowledge/checklists/design-reference.md +97 -0
  182. package/templates/base/knowledge/checklists/security.md +50 -0
  183. package/templates/base/knowledge/checklists/ssot-validation.md +19 -0
  184. package/templates/base/knowledge/domains/_template.md +16 -0
  185. package/templates/base/knowledge/platforms/_template.md +16 -0
  186. package/templates/base/knowledge/templates/sequence-report.md +44 -0
  187. package/templates/base/knowledge/templates/task-result.md +105 -0
  188. package/templates/base/skills/_template/SKILL.md +59 -0
  189. package/templates/base/skills/_template/references/_template.md +35 -0
  190. package/templates/base/skills/_template/rules/_sections.md +34 -0
  191. package/templates/base/skills/_template/rules/_template.md +32 -0
  192. package/templates/base/skills/_template/scripts/_template.sh +31 -0
  193. package/templates/base/skills/architecture/SKILL.md +54 -0
  194. package/templates/base/skills/architecture/references/adr-template.md +50 -0
  195. package/templates/base/skills/architecture/references/api-design.md +64 -0
  196. package/templates/base/skills/backend/node/SKILL.md +81 -0
  197. package/templates/base/skills/backend/node/rules/async-patterns.md +81 -0
  198. package/templates/base/skills/backend/node/rules/deployment.md +33 -0
  199. package/templates/base/skills/backend/node/rules/env-config.md +41 -0
  200. package/templates/base/skills/backend/node/rules/error-handling.md +83 -0
  201. package/templates/base/skills/backend/node/rules/hono-app-setup.md +98 -0
  202. package/templates/base/skills/backend/node/rules/jwt-auth.md +76 -0
  203. package/templates/base/skills/backend/node/rules/middleware.md +56 -0
  204. package/templates/base/skills/backend/node/rules/testing.md +82 -0
  205. package/templates/base/skills/coding/SKILL.md +47 -0
  206. package/templates/base/skills/coding/rules/patterns.md +81 -0
  207. package/templates/base/skills/database/SKILL.md +98 -0
  208. package/templates/base/skills/database/prisma/SKILL.md +57 -0
  209. package/templates/base/skills/database/prisma/rules/queries.md +133 -0
  210. package/templates/base/skills/database/prisma/rules/schema-design.md +80 -0
  211. package/templates/base/skills/frontend/nextjs/SKILL.md +59 -0
  212. package/templates/base/skills/frontend/nextjs/rules/app-router.md +138 -0
  213. package/templates/base/skills/frontend/react/SKILL.md +86 -0
  214. package/templates/base/skills/frontend/react/rules/_sections.md +88 -0
  215. package/templates/base/skills/frontend/react/rules/anti-patterns.md +67 -0
  216. package/templates/base/skills/frontend/react/rules/async-api-routes.md +38 -0
  217. package/templates/base/skills/frontend/react/rules/async-defer-await.md +80 -0
  218. package/templates/base/skills/frontend/react/rules/async-dependencies.md +36 -0
  219. package/templates/base/skills/frontend/react/rules/async-parallel.md +28 -0
  220. package/templates/base/skills/frontend/react/rules/async-suspense-boundaries.md +99 -0
  221. package/templates/base/skills/frontend/react/rules/bundle-barrel-imports.md +59 -0
  222. package/templates/base/skills/frontend/react/rules/bundle-defer-third-party.md +49 -0
  223. package/templates/base/skills/frontend/react/rules/bundle-dynamic-imports.md +35 -0
  224. package/templates/base/skills/frontend/react/rules/component-conventions.md +74 -0
  225. package/templates/base/skills/frontend/react/rules/js-combine-iterations.md +32 -0
  226. package/templates/base/skills/frontend/react/rules/js-early-exit.md +50 -0
  227. package/templates/base/skills/frontend/react/rules/js-index-maps.md +37 -0
  228. package/templates/base/skills/frontend/react/rules/js-set-map-lookups.md +24 -0
  229. package/templates/base/skills/frontend/react/rules/rendering-conditional-render.md +40 -0
  230. package/templates/base/skills/frontend/react/rules/rendering-content-visibility.md +38 -0
  231. package/templates/base/skills/frontend/react/rules/rendering-hoist-jsx.md +46 -0
  232. package/templates/base/skills/frontend/react/rules/rerender-defer-reads.md +39 -0
  233. package/templates/base/skills/frontend/react/rules/rerender-derived-state.md +29 -0
  234. package/templates/base/skills/frontend/react/rules/rerender-memo.md +44 -0
  235. package/templates/base/skills/frontend/react/rules/rerender-transitions.md +40 -0
  236. package/templates/base/skills/frontend/react/rules/server-after-nonblocking.md +73 -0
  237. package/templates/base/skills/frontend/react/rules/server-cache-react.md +26 -0
  238. package/templates/base/skills/frontend/react/rules/server-parallel-fetching.md +79 -0
  239. package/templates/base/skills/frontend/react/rules/state-location.md +55 -0
  240. package/templates/base/skills/methodology/bdd/SKILL.md +69 -0
  241. package/templates/base/skills/methodology/bdd/rules/gherkin-patterns.md +113 -0
  242. package/templates/base/skills/methodology/ddd/SKILL.md +74 -0
  243. package/templates/base/skills/methodology/ddd/rules/strategic-patterns.md +98 -0
  244. package/templates/base/skills/methodology/debugging/SKILL.md +60 -0
  245. package/templates/base/skills/methodology/debugging/references/root-cause-tracing.md +84 -0
  246. package/templates/base/skills/methodology/tdd/SKILL.md +66 -0
  247. package/templates/base/skills/methodology/tdd/rules/real-world-example.md +88 -0
  248. package/templates/base/skills/methodology/tdd/rules/techniques.md +185 -0
  249. package/templates/base/skills/planning/SKILL.md +58 -0
  250. package/templates/base/skills/planning/references/prd-guide.md +47 -0
  251. package/templates/base/skills/planning/references/requirements-guide.md +46 -0
  252. package/templates/base/skills/prompt-engineering/SKILL.md +103 -0
  253. package/templates/base/skills/retrospective/SKILL.md +102 -0
  254. package/templates/base/skills/security/SKILL.md +55 -0
  255. package/templates/base/skills/security/rules/owasp-examples.md +119 -0
  256. package/templates/base/skills/security/scripts/check-secrets.sh +55 -0
  257. package/templates/base/skills/testing/SKILL.md +63 -0
  258. package/templates/base/skills/testing/references/testing-patterns.md +103 -0
  259. package/templates/base/skills/tsq-protocol/SKILL.md +51 -0
  260. package/templates/base/skills/typescript/SKILL.md +67 -0
  261. package/templates/base/skills/typescript/rules/type-patterns.md +135 -0
  262. package/templates/base/skills/typescript/rules/utility-types.md +76 -0
  263. package/templates/base/skills/ui-design/SKILL.md +70 -0
  264. package/templates/{common → base}/timsquad/feedback/routing-rules.yaml +1 -1
  265. package/templates/base/timsquad/process/phase-checklist.yaml +174 -0
  266. package/templates/{common → base}/timsquad/process/state-machine.xml +12 -0
  267. package/templates/{common → base}/timsquad/process/workflow-base.xml +124 -0
  268. package/templates/{common → base}/timsquad/retrospective/metrics/metrics-schema.json +46 -1
  269. package/templates/platforms/claude-code/CLAUDE.md.template +64 -0
  270. package/templates/platforms/claude-code/rules/adr-rules.md +32 -0
  271. package/templates/platforms/claude-code/rules/feedback-routing.md +18 -0
  272. package/templates/platforms/claude-code/rules/phase-management.md +23 -0
  273. package/templates/platforms/claude-code/rules/reporting-format.md +26 -0
  274. package/templates/platforms/claude-code/rules/sequence-management.md +72 -0
  275. package/templates/platforms/claude-code/rules/workspace-sync.md +33 -0
  276. package/templates/platforms/claude-code/settings.json +26 -0
  277. package/templates/project-types/api-backend/config.yaml +227 -0
  278. package/templates/project-types/api-backend/process/workflow.xml +214 -0
  279. package/templates/project-types/fintech/config.yaml +151 -0
  280. package/templates/project-types/fintech/process/workflow.xml +316 -0
  281. package/templates/project-types/infra/config.yaml +327 -0
  282. package/templates/project-types/infra/process/workflow.xml +296 -0
  283. package/templates/project-types/platform/config.yaml +254 -0
  284. package/templates/project-types/platform/process/workflow.xml +254 -0
  285. package/templates/project-types/web-app/config.yaml +198 -0
  286. package/templates/project-types/web-app/process/workflow.xml +210 -0
  287. package/templates/project-types/web-service/config.yaml +136 -0
  288. package/templates/project-types/web-service/process/workflow.xml +184 -0
  289. package/templates/common/CLAUDE.md.template +0 -254
  290. package/templates/common/claude/agents/tsq-dba.md +0 -290
  291. package/templates/common/claude/agents/tsq-designer.md +0 -304
  292. package/templates/common/claude/agents/tsq-developer.md +0 -118
  293. package/templates/common/claude/agents/tsq-planner.md +0 -90
  294. package/templates/common/claude/agents/tsq-prompter.md +0 -336
  295. package/templates/common/claude/agents/tsq-qa.md +0 -134
  296. package/templates/common/claude/agents/tsq-retro.md +0 -168
  297. package/templates/common/claude/agents/tsq-security.md +0 -190
  298. package/templates/common/claude/skills/architecture/SKILL.md +0 -123
  299. package/templates/common/claude/skills/backend/node/SKILL.md +0 -1015
  300. package/templates/common/claude/skills/coding/SKILL.md +0 -171
  301. package/templates/common/claude/skills/database/prisma/SKILL.md +0 -357
  302. package/templates/common/claude/skills/frontend/nextjs/SKILL.md +0 -279
  303. package/templates/common/claude/skills/frontend/react/SKILL.md +0 -1729
  304. package/templates/common/claude/skills/methodology/bdd/SKILL.md +0 -234
  305. package/templates/common/claude/skills/methodology/ddd/SKILL.md +0 -311
  306. package/templates/common/claude/skills/methodology/tdd/SKILL.md +0 -512
  307. package/templates/common/claude/skills/planning/SKILL.md +0 -90
  308. package/templates/common/claude/skills/security/SKILL.md +0 -234
  309. package/templates/common/claude/skills/testing/SKILL.md +0 -146
  310. package/templates/common/claude/skills/typescript/SKILL.md +0 -435
  311. package/templates/common/config.template.yaml +0 -131
  312. /package/templates/{common → base}/timsquad/architectures/clean/ARCHITECTURE.md +0 -0
  313. /package/templates/{common → base}/timsquad/architectures/clean/backend.xml +0 -0
  314. /package/templates/{common → base}/timsquad/architectures/clean/frontend.xml +0 -0
  315. /package/templates/{common → base}/timsquad/architectures/fsd/ARCHITECTURE.md +0 -0
  316. /package/templates/{common → base}/timsquad/architectures/fsd/frontend.xml +0 -0
  317. /package/templates/{common → base}/timsquad/architectures/hexagonal/ARCHITECTURE.md +0 -0
  318. /package/templates/{common → base}/timsquad/architectures/hexagonal/backend.xml +0 -0
  319. /package/templates/{common → base}/timsquad/constraints/competency-framework.xml +0 -0
  320. /package/templates/{common → base}/timsquad/constraints/ssot-schema.xml +0 -0
  321. /package/templates/{common → base}/timsquad/feedback/feedback-router.sh +0 -0
  322. /package/templates/{common → base}/timsquad/generators/data-design.xml +0 -0
  323. /package/templates/{common → base}/timsquad/generators/prd.xml +0 -0
  324. /package/templates/{common → base}/timsquad/generators/requirements.xml +0 -0
  325. /package/templates/{common → base}/timsquad/generators/service-spec.xml +0 -0
  326. /package/templates/{common → base}/timsquad/logs/_example.md +0 -0
  327. /package/templates/{common → base}/timsquad/logs/_template.md +0 -0
  328. /package/templates/{common → base}/timsquad/patterns/cqrs.xml +0 -0
  329. /package/templates/{common → base}/timsquad/patterns/event-sourcing.xml +0 -0
  330. /package/templates/{common → base}/timsquad/patterns/repository.xml +0 -0
  331. /package/templates/{common → base}/timsquad/process/validation-rules.xml +0 -0
  332. /package/templates/{common → base}/timsquad/retrospective/cycle-report.template.md +0 -0
  333. /package/templates/{common → base}/timsquad/retrospective/patterns/failure-patterns.md +0 -0
  334. /package/templates/{common → base}/timsquad/retrospective/patterns/success-patterns.md +0 -0
  335. /package/templates/{common → base}/timsquad/retrospective/retrospective-config.xml +0 -0
  336. /package/templates/{common → base}/timsquad/retrospective/retrospective-state.xml +0 -0
  337. /package/templates/{common → base}/timsquad/ssot/adr/ADR-000-template.md +0 -0
  338. /package/templates/{common → base}/timsquad/ssot/adr/ADR-001-example.md +0 -0
  339. /package/templates/{common → base}/timsquad/ssot/data-design.template.md +0 -0
  340. /package/templates/{common → base}/timsquad/ssot/deployment-spec.template.md +0 -0
  341. /package/templates/{common → base}/timsquad/ssot/env-config.template.md +0 -0
  342. /package/templates/{common → base}/timsquad/ssot/error-codes.template.md +0 -0
  343. /package/templates/{common → base}/timsquad/ssot/functional-spec.template.md +0 -0
  344. /package/templates/{common → base}/timsquad/ssot/glossary.template.md +0 -0
  345. /package/templates/{common → base}/timsquad/ssot/integration-spec.template.md +0 -0
  346. /package/templates/{common → base}/timsquad/ssot/planning.template.md +0 -0
  347. /package/templates/{common → base}/timsquad/ssot/prd.template.md +0 -0
  348. /package/templates/{common → base}/timsquad/ssot/requirements.template.md +0 -0
  349. /package/templates/{common → base}/timsquad/ssot/security-spec.template.md +0 -0
  350. /package/templates/{common → base}/timsquad/ssot/service-spec.template.md +0 -0
  351. /package/templates/{common → base}/timsquad/ssot/test-spec.template.md +0 -0
  352. /package/templates/{common → base}/timsquad/ssot/ui-ux-spec.template.md +0 -0
  353. /package/templates/{common → base}/timsquad/state/workspace.xml +0 -0
package/README.md CHANGED
@@ -1,8 +1,11 @@
1
- # TimSquad
1
+ <p align="center">
2
+ <img src="assets/timsquad_banner.png" alt="TimSquad" width="100%">
3
+ </p>
2
4
 
3
- > **"AI 시대의 소프트웨어 개발 표준 프로세스"**
4
-
5
- SSOT 기반 문서 체계, 최적화된 에이전트 롤, 회고적 학습을 통해 Claude Code에서 지속적으로 개선되는 고품질 소프트웨어 생성 프레임워크
5
+ <p align="center">
6
+ <strong>Vibe Development Framework</strong><br>
7
+ SSOT 기반 문서 체계, 최적화된 에이전트 롤, 회고적 학습을 통해 Claude Code에서 지속적으로 개선되는 고품질 소프트웨어 생성 프레임워크
8
+ </p>
6
9
 
7
10
  ```
8
11
  최적화된 롤 정의 + 고도화된 스킬 + 회고적 학습 = 지속적으로 개선되는 고품질 결과물
@@ -12,12 +15,13 @@ SSOT 기반 문서 체계, 최적화된 에이전트 롤, 회고적 학습을
12
15
 
13
16
  ## Why TimSquad?
14
17
 
15
- | oh-my-* | **TimSquad** |
16
- |---------|--------------|
17
- | "Zero learning curve" | **"체계를 세우면 더 잘 된다"** |
18
- | 알아서 해줌 | **개발자가 컨트롤** |
19
- | 속도 최우선 | **품질 + 일관성 최우선** |
20
- | Magic | **Structure** |
18
+ | | 일반적 접근 | **TimSquad** |
19
+ |---|---------|------------|
20
+ | 철학 | "Zero learning curve" | **"체계를 세우면 더 잘 된다"** |
21
+ | 의사결정 | LLM이 알아서 | **개발자가 컨트롤** |
22
+ | 우선순위 | 속도 | **품질 + 일관성** |
23
+ | 반복 작업 | LLM이 처리 (토큰 소비) | **프로그램이 처리 (토큰 0)** |
24
+ | 학습 | 없음 | **회고적 학습으로 지속 개선** |
21
25
 
22
26
  **For developers who want structure, not magic.**
23
27
 
@@ -27,250 +31,218 @@ SSOT 기반 문서 체계, 최적화된 에이전트 롤, 회고적 학습을
27
31
  - 1인 CTO / 테크 리드 (혼자서 팀 수준의 품질 필요)
28
32
  - 문서화와 일관성을 중시하는 개발자
29
33
 
30
- ### NOT for
31
-
32
- - "알아서 해줘" 원하는 사람 → oh-my-claudecode 추천
33
- - 코딩만 빠르게 하고 싶은 사람 → Claude Code 그냥 사용
34
-
35
34
  ---
36
35
 
37
- ## Features
38
-
39
- ### SSOT (Single Source of Truth)
40
-
41
- 모든 에이전트가 참조하는 단일 문서 체계
42
-
43
- ```
44
- .timsquad/ssot/
45
- ├── prd.md # 제품 요구사항 (Why)
46
- ├── requirements.md # 요건 정의 (What)
47
- ├── service-spec.md # API 명세 (프론트-백 계약서)
48
- ├── data-design.md # ERD, 데이터 설계
49
- └── ...
50
- ```
51
-
52
- ### 분수(Fountain) 모델
53
-
54
- SSOT는 순차적 의존성, 실제 작업은 병렬 실행
55
-
56
- ```
57
- SSOT (순차: PRD → 기획 → 설계)
58
-
59
- ┌────┼────┐
60
- ↓ ↓ ↓
61
- 화면 요건 API ← 병렬 작업
62
- │ │ │
63
- └────┼────┘
64
-
65
- ERD + 구현 (병렬)
66
-
67
- QA/Test
68
-
69
- ┌────┼────┐
70
- ↓ ↓ ↓
71
- L1 L2 L3 ← 피드백 라우팅
72
-
73
- 회고적 학습 → 템플릿/프롬프트 자동 개선
74
- ```
75
-
76
- ### 서브에이전트 시스템
77
-
78
- ```
79
- .claude/agents/
80
- ├── tsq-planner.md # 기획/설계 (Opus)
81
- ├── tsq-developer.md # 코드 구현 (Sonnet)
82
- ├── tsq-qa.md # 검증/리뷰 (Sonnet)
83
- ├── tsq-security.md # 보안 검토
84
- ├── tsq-dba.md # DB 설계
85
- ├── tsq-designer.md # UI/UX 설계
86
- ├── tsq-prompter.md # 프롬프트 최적화
87
- └── tsq-retro.md # 회고 분석
88
- ```
89
-
90
- ### 토큰 효율성
91
-
92
- | 작업 | oh-my-* 방식 | TimSquad 방식 | 절약률 |
93
- |-----|-------------|--------------|-------|
94
- | 피드백 분류 | LLM 판단 | YAML 규칙 | **100%** |
95
- | 로그 저장 | "저장해" 프롬프트 | bash 파이프 | **100%** |
96
- | 에이전트 선택 | LLM 오케스트레이터 | 프로그램 스케줄러 | **100%** |
97
- | **전체** | 100% | 40-60% | **40-60% 절약** |
98
-
99
- ### XML 문서 생성기
100
-
101
- 토큰 효율적인 SSOT 문서 작성
102
-
103
- ```xml
104
- <generator name="prd" output=".timsquad/ssot/prd.md">
105
- <section id="basic" title="기본 정보">
106
- <field name="project_name" type="text" required="true">
107
- <prompt>프로젝트 이름?</prompt>
108
- <refinement>영문 소문자, 하이픈 허용</refinement>
109
- </field>
110
- </section>
111
- <output-template>...</output-template>
112
- </generator>
113
- ```
114
-
115
- ---
116
-
117
- ## Installation
118
-
119
- ### npm (권장)
36
+ ## 설치
120
37
 
121
38
  ```bash
122
39
  # 전역 설치
123
40
  npm install -g timsquad
124
41
 
125
42
  # 또는 npx로 직접 실행
126
- npx timsquad init -n my-app -t web-service -l 2
43
+ npx timsquad init
127
44
  ```
128
45
 
129
- ### Git Clone
130
-
131
- ```bash
132
- git clone https://github.com/sonature-lab/timsquad.git
133
- cd timsquad
134
- npm install
135
- npm run build
136
- npm link
137
- ```
46
+ **요구사항:**
47
+ - Node.js >= 18.0.0
48
+ - [Claude Code](https://claude.ai/claude-code) (에이전트 실행 환경)
138
49
 
139
50
  ---
140
51
 
141
- ## Quick Start
52
+ ## 빠른 시작
142
53
 
143
54
  ### 1. 프로젝트 초기화
144
55
 
145
56
  ```bash
146
- # 프로젝트 생성
147
- tsq init -n my-app -t web-service -l 2
148
-
149
- # 옵션
150
- # -n, --name 프로젝트 이름
151
- # -t, --type 프로젝트 타입 (web-service, api-backend, platform, fintech, infra)
152
- # -l, --level 프로젝트 레벨 (1=MVP, 2=Standard, 3=Enterprise)
57
+ tsq init # 대화형 초기화
58
+ tsq init -n my-app -t web-service -l 2 -y # 비대화형
153
59
  ```
154
60
 
155
- ### 2. 생성된 구조
61
+ ### 2. 생성되는 구조
156
62
 
157
63
  ```
158
64
  my-app/
159
- ├── CLAUDE.md # PM 역할 정의
65
+ ├── CLAUDE.md # PM 역할 정의 (에이전트 지시사항)
160
66
  ├── .claude/
161
- │ ├── agents/ # 에이전트 정의
162
- └── skills/ # 스킬 파일
67
+ │ ├── settings.json # Claude Code 설정
68
+ ├── rules/ # 메인 세션 전용 규칙
69
+ │ ├── agents/ # 6개 전문 에이전트
70
+ │ │ ├── tsq-architect.md # 아키텍처 설계 (Sonnet)
71
+ │ │ ├── tsq-developer.md # 코드 구현 (Sonnet)
72
+ │ │ ├── tsq-qa.md # 검증/리뷰 (Sonnet)
73
+ │ │ ├── tsq-security.md # 보안 검토 (Sonnet)
74
+ │ │ ├── tsq-dba.md # DB 설계 (Sonnet)
75
+ │ │ └── tsq-designer.md # UI/UX 설계 (Sonnet)
76
+ │ ├── skills/ # 도메인별 스킬셋
77
+ │ │ ├── tsq-protocol/ # 에이전트 공통 프로토콜
78
+ │ │ ├── coding/ # 코딩 규칙 + rules/
79
+ │ │ ├── testing/ # 테스트 전략 + references/
80
+ │ │ ├── typescript/ # TypeScript 패턴 + rules/
81
+ │ │ ├── frontend/(react|nextjs)/ # 프론트엔드 + Vercel 22개 룰
82
+ │ │ ├── backend/node/ # Node.js 백엔드 + rules/
83
+ │ │ ├── database/prisma/ # Prisma ORM + rules/
84
+ │ │ ├── methodology/(tdd|bdd|ddd|debugging)/
85
+ │ │ └── ...
86
+ │ └── knowledge/ # 에이전트 참조 지식
87
+ │ ├── checklists/ # 보안, 접근성, SSOT 검증
88
+ │ └── templates/ # 출력 형식 (task-result 등)
163
89
  └── .timsquad/
164
- ├── config.yaml # 프로젝트 설정
165
- ├── ssot/ # SSOT 문서
166
- ├── generators/ # 문서 생성기 (XML)
167
- ├── state/ # 현재 상태
168
- ├── knowledge/ # 프로젝트 지식
169
- ├── feedback/ # 피드백 시스템
170
- ├── retrospective/ # 회고 시스템
171
- └── logs/ # 작업 로그
90
+ ├── config.yaml # 프로젝트 설정
91
+ ├── ssot/ # SSOT 문서 (레벨별 5~14개)
92
+ ├── process/ # 워크플로우 정의
93
+ ├── state/ # 상태 관리 + Meta Index
94
+ ├── feedback/ # 피드백 저장소
95
+ ├── logs/ # 3계층 로그 (L1→L2→L3)
96
+ └── retrospective/ # 회고 데이터
172
97
  ```
173
98
 
174
- ### 3. Claude Code에서 작업 시작
99
+ ### 3. Claude Code에서 작업
175
100
 
176
101
  ```bash
177
- # Claude Code 실행
178
- claude
102
+ claude # Claude Code 실행
179
103
 
180
- # 에이전트 호출
181
- @tsq-planner "PRD 작성 시작해줘"
104
+ # PM(CLAUDE.md)이 자동으로 작업을 분류하고 에이전트에 위임
105
+ @tsq-architect "시스템 아키텍처 설계해줘"
182
106
  @tsq-developer "로그인 API 구현해줘"
183
107
  @tsq-qa "코드 리뷰해줘"
184
108
  ```
185
109
 
110
+ ### 4. CLI로 작업 관리
111
+
112
+ ```bash
113
+ tsq status # 현재 상태 확인
114
+ tsq q "버튼 색상 변경" # Quick 모드 (간단한 작업)
115
+ tsq f "결제 기능 추가" # Full 모드 (SSOT 검증)
116
+ tsq retro auto # 회고 자동 실행
117
+ ```
118
+
186
119
  ---
187
120
 
188
- ## CLI Commands
121
+ ## 핵심 기능
189
122
 
190
- ### 기본 커맨드
123
+ ### SSOT 문서 체계
191
124
 
192
- ```bash
193
- tsq init [options] # 프로젝트 초기화
194
- tsq status [options] # 현재 상태 확인
195
- tsq log <subcommand> # 작업 로그 관리
196
- tsq feedback <message> # 피드백 라우팅
197
- tsq retro <subcommand> # 회고 실행
198
- ```
125
+ 프로젝트 레벨에 따라 필수 문서가 자동 결정됩니다:
199
126
 
200
- ### 작업 모드
127
+ | 레벨 | 필수 문서 | 대상 |
128
+ |------|----------|------|
129
+ | **Level 1** (MVP) | PRD, Planning, Requirements, Service Spec, Data Design (5개) | 사이드 프로젝트, PoC |
130
+ | **Level 2** (Standard) | Level 1 + 6개 추가 (11개) | 일반 프로젝트, 스타트업 |
131
+ | **Level 3** (Enterprise) | Level 2 + 3개 추가 (14개) | 엔터프라이즈, fintech |
201
132
 
202
- ```bash
203
- tsq q "버튼 색상 변경" # Quick Mode - 간단한 작업
204
- tsq f "결제 기능 추가" # Full Mode - SSOT 체크 + Planner 라우팅
205
- ```
133
+ ### 에이전트 시스템
206
134
 
207
- ### Git 커맨드
135
+ PM(CLAUDE.md)이 총괄하며 6개 전문 에이전트에 위임합니다. 각 에이전트는 XML 구조화된 프롬프트, 필수 스킬 주입, 3단계 피드백 라우팅을 갖추고 있습니다.
208
136
 
209
- ```bash
210
- tsq commit [message] # 스테이징 + Co-Author 커밋
211
- tsq pr [title] # 푸시 + PR 생성 (gh CLI 필요)
212
- tsq release [version] # 태그 + GitHub Release 생성
213
- tsq sync # fetch + rebase
137
+ | 에이전트 | 역할 |
138
+ |----------|------|
139
+ | `@tsq-architect` | 아키텍처 설계, ADR, 코드 구조 리뷰 |
140
+ | `@tsq-developer` | SSOT 기반 코드 구현, TDD |
141
+ | `@tsq-qa` | 코드 리뷰, 테스트 검증, SSOT 적합성 |
142
+ | `@tsq-security` | 보안 검증, OWASP, 취약점 분석 |
143
+ | `@tsq-dba` | DB 설계, 쿼리 최적화, 마이그레이션 |
144
+ | `@tsq-designer` | UI/UX 설계, 접근성, 디자인 토큰 |
145
+
146
+ ### 피드백 라우팅 (L1/L2/L3)
147
+
148
+ 피드백을 3단계로 자동 분류하고 적절한 액션을 실행합니다:
149
+
150
+ ```
151
+ L1 (구현 수정) → Developer 자동 처리 → 승인 불필요
152
+ L2 (설계 수정) → in_review 상태로 전환 → Phase Gate 차단
153
+ L3 (기획 수정) → 사용자 승인 대기 → approve/reject 필수
214
154
  ```
215
155
 
216
- ### 자동화 커맨드
156
+ 상세: [docs/feedback-and-retrospective.md](docs/feedback-and-retrospective.md)
157
+
158
+ ### 회고적 학습
159
+
160
+ 작업 로그 → 패턴 분석 → 개선 제안 → 프롬프트/템플릿 업데이트. LLM 파인튜닝 대신 프롬프트/템플릿 개선으로 실용화합니다.
217
161
 
218
162
  ```bash
219
- tsq watch start # SSOT 파일 변경 감시 시작
220
- tsq watch stop # 감시 중지
221
- tsq metrics collect # 메트릭 수집
222
- tsq metrics summary # 메트릭 요약 표시
163
+ tsq retro auto # 수집 분석 리포트 → 적용 (원클릭)
164
+ tsq improve analyze # 패턴 분석 + 개선 제안
223
165
  ```
224
166
 
225
- ---
167
+ → 상세: [docs/feedback-and-retrospective.md](docs/feedback-and-retrospective.md)
226
168
 
227
- ## Project Types
169
+ ### 데몬 기반 자동화 파이프라인
228
170
 
229
- | 타입 | 설명 | 추가 문서 | Consensus |
230
- |-----|------|----------|-----------|
231
- | **web-service** | SaaS, 웹앱 | ui-ux-spec | 선택적 |
232
- | **api-backend** | API 서버, 마이크로서비스 | - | 선택적 |
233
- | **platform** | 프레임워크, SDK | integration-spec | 선택적 |
234
- | **fintech** | 거래소, 결제 | security-spec | **필수** |
235
- | **infra** | DevOps, 자동화 | deployment-spec | 선택적 |
171
+ **모든 오케스트레이션은 토큰 비용 0** 프로그램이 판단합니다:
236
172
 
237
- ---
173
+ ```
174
+ Claude Code 세션 → 데몬이 JSONL 실시간 감시
175
+ → L1 태스크 로그 자동 기록
176
+ → L2 시퀀스 로그 자동 집계
177
+ → L3 Phase 로그 자동 생성
178
+ → Phase Gate 자동 확인
179
+ → 메트릭 인메모리 누적 → 세션 끝 flush
180
+ → Meta Index 자동 업데이트
181
+ ```
238
182
 
239
- ## Project Levels
183
+ 상세: [docs/token-efficiency.md](docs/token-efficiency.md)
240
184
 
241
- | Level | 설명 | 필수 문서 | 대상 |
242
- |-------|-----|----------|-----|
243
- | **1 (MVP)** | 최소 문서 | prd, requirements, service-spec, data-design | 사이드 프로젝트, PoC |
244
- | **2 (Standard)** | 표준 문서 | L1 + glossary, error-codes, test-spec, ADR | 일반 프로젝트, 스타트업 |
245
- | **3 (Enterprise)** | 전체 문서 | L2 + security-spec, deployment-spec | 엔터프라이즈, fintech |
185
+ ### Meta Index (코드 구조 인덱스)
246
186
 
247
- ---
187
+ AST 기반 코드/UI 구조 자동 인덱싱 + 에이전트 semantic 데이터 병합:
188
+
189
+ ```bash
190
+ tsq mi rebuild # 전체 코드+UI 인덱스 구축
191
+ tsq mi stats # Health Score + UI Health
192
+ ```
248
193
 
249
- ## Feedback Routing
194
+ 상세: [docs/meta-index-architecture.md](docs/meta-index-architecture.md)
250
195
 
251
- 피드백 레벨에 따라 적절한 담당자에게 자동 라우팅
196
+ ---
252
197
 
253
- | Level | 유형 | 트리거 | 라우팅 |
254
- |-------|-----|--------|--------|
255
- | **1** | 구현 수정 | test_failure, lint_error, type_error | → Developer |
256
- | **2** | 설계 수정 | api_mismatch, architecture_issue | → Planner (Architect) |
257
- | **3** | 기획 수정 | requirement_ambiguity, scope_change | → Planner → **User 승인** |
198
+ ## CLI 명령어 요약
199
+
200
+ | 명령어 | 설명 |
201
+ |--------|------|
202
+ | `tsq init` | 프로젝트 초기화 (대화형/비대화형) |
203
+ | `tsq status` | 프로젝트 상태 확인 |
204
+ | `tsq q "작업"` | Quick 모드 (간단한 작업) |
205
+ | `tsq f "작업"` | Full 모드 (SSOT 검증) |
206
+ | `tsq log` | 3계층 작업 로그 관리 (L1/L2/L3) |
207
+ | `tsq feedback` | 피드백 분류 + 자동 액션 |
208
+ | `tsq retro` | 회고 실행 (수동/자동) |
209
+ | `tsq metrics` | 메트릭 수집/트렌드 |
210
+ | `tsq mi` | Meta Index 관리 (rebuild/stats) |
211
+ | `tsq knowledge` | Knowledge 파일 관리 |
212
+ | `tsq wf` | 워크플로우 자동화 |
213
+ | `tsq daemon` | 백그라운드 데몬 관리 |
214
+
215
+ → 전체 CLI 레퍼런스: [docs/cli.md](docs/cli.md)
258
216
 
259
217
  ---
260
218
 
261
- ## Retrospective Learning
219
+ ## 프로젝트 타입
262
220
 
263
- 개발 사이클 완료 자동 회고 및 개선
221
+ | 타입 | 설명 |
222
+ |------|------|
223
+ | `web-service` | SaaS, 풀스택 웹 서비스 |
224
+ | `web-app` | BaaS 기반 (Supabase/Firebase) |
225
+ | `api-backend` | API 서버, 마이크로서비스 |
226
+ | `platform` | 프레임워크, SDK |
227
+ | `fintech` | 거래소, 결제 (Level 3 강제) |
228
+ | `infra` | DevOps, 자동화 |
264
229
 
265
- ```bash
266
- tsq retro
267
- ```
230
+ ---
268
231
 
269
- 1. **로그 수집** - 에이전트별 작업 로그, 피드백 이력
270
- 2. **패턴 분석** - 반복 실패/성공 패턴, 병목 지점
271
- 3. **개선 제안** - 프롬프트/템플릿 개선안 생성
272
- 4. **사용자 승인** - 검토 후 적용
273
- 5. **적용** - Lessons Learned 추가, 템플릿 업데이트
232
+ ## 문서
233
+
234
+ | 문서 | 설명 |
235
+ |------|------|
236
+ | [PRD](docs/PRD.md) | 프레임워크 전체 기획 |
237
+ | [Core Concepts](docs/core-concepts.md) | 분수 모델, SSOT, 에이전트/스킬 구조 |
238
+ | [CLI Reference](docs/cli.md) | 전체 CLI 명령어 레퍼런스 |
239
+ | [Authoring Guide](docs/authoring-guide.md) | 에이전트/스킬/Knowledge 작성 가이드 |
240
+ | [Log Architecture](docs/log-architecture.md) | 3계층 로그 체계 (L1→L2→L3) |
241
+ | [Feedback & Retrospective](docs/feedback-and-retrospective.md) | 피드백 라우팅 + 회고적 학습 |
242
+ | [Token Efficiency](docs/token-efficiency.md) | 토큰 효율성 설계 |
243
+ | [Knowledge Architecture](docs/knowledge-architecture.md) | Knowledge 시스템 |
244
+ | [Meta Index Architecture](docs/meta-index-architecture.md) | 코드/UI 구조 인덱스 |
245
+ | [File Structure](docs/file-structure.md) | 템플릿 + 초기화 후 구조 |
274
246
 
275
247
  ---
276
248
 
@@ -285,47 +257,13 @@ tsq retro
285
257
 
286
258
  ---
287
259
 
288
- ## Configuration
289
-
290
- `.timsquad/config.yaml`:
291
-
292
- ```yaml
293
- project:
294
- name: "my-app"
295
- type: web-service
296
- level: 2
297
-
298
- agents:
299
- planner:
300
- model: opus
301
- developer:
302
- model: sonnet
303
- qa:
304
- model: sonnet
305
-
306
- methodology:
307
- development: tdd
308
- process: agile
309
- branching: github-flow
310
- ```
311
-
312
- ---
313
-
314
- ## Roadmap
315
-
316
- - [x] **Phase 0 (MVP)** - common 템플릿, 기본 에이전트, CLI
317
- - [ ] **Phase 1** - 타입별 템플릿 확장, 회고 시스템 고도화
318
- - [ ] **Phase 2** - Plugin 배포, MCP 서버, 멀티 LLM 지원
319
-
320
- ---
321
-
322
260
  ## Contributing
323
261
 
324
- 기여를 환영합니다! 다음을 참고해주세요:
262
+ 기여를 환영합니다!
325
263
 
326
264
  1. Fork the repository
327
265
  2. Create your feature branch (`git checkout -b feature/amazing-feature`)
328
- 3. Commit your changes (`git commit -m 'Add amazing feature'`)
266
+ 3. Commit your changes (`git commit -m 'feat: add amazing feature'`)
329
267
  4. Push to the branch (`git push origin feature/amazing-feature`)
330
268
  5. Open a Pull Request
331
269
 
@@ -337,11 +275,7 @@ MIT License - see [LICENSE](LICENSE) for details.
337
275
 
338
276
  ---
339
277
 
340
- ## Related Projects
278
+ ## Related
341
279
 
342
280
  - [Anthropic Skills](https://github.com/anthropics/skills)
343
- - [Superpowers](https://github.com/obra/superpowers)
344
-
345
- ---
346
-
347
- **TimSquad v2.0** - AI Agent Development Process Framework
281
+ - [Claude Code](https://claude.ai/claude-code)
@@ -0,0 +1,7 @@
1
+ /**
2
+ * tsq daemon start/stop/status
3
+ * 데몬 프로세스 관리 CLI.
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare function registerDaemonCommand(program: Command): void;
7
+ //# sourceMappingURL=daemon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C5D"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * tsq daemon start/stop/status
3
+ * 데몬 프로세스 관리 CLI.
4
+ */
5
+ import path from 'path';
6
+ import { fork } from 'child_process';
7
+ import { colors, printHeader, printError, printSuccess, printKeyValue } from '../utils/colors.js';
8
+ import { findProjectRoot } from '../lib/project.js';
9
+ import { isDaemonRunning, killZombie } from '../daemon/index.js';
10
+ import { queryDaemon } from '../daemon/meta-cache.js';
11
+ export function registerDaemonCommand(program) {
12
+ const cmd = program
13
+ .command('daemon')
14
+ .description('Background daemon process management');
15
+ // tsq daemon start
16
+ cmd
17
+ .command('start')
18
+ .description('Start background daemon')
19
+ .option('--jsonl <path>', 'JSONL transcript path (usually auto-detected)')
20
+ .action(async (options) => {
21
+ try {
22
+ await startDaemon(options);
23
+ }
24
+ catch (error) {
25
+ printError(error.message);
26
+ process.exit(1);
27
+ }
28
+ });
29
+ // tsq daemon stop
30
+ cmd
31
+ .command('stop')
32
+ .description('Stop background daemon')
33
+ .action(async () => {
34
+ try {
35
+ await stopDaemon();
36
+ }
37
+ catch (error) {
38
+ printError(error.message);
39
+ process.exit(1);
40
+ }
41
+ });
42
+ // tsq daemon status
43
+ cmd
44
+ .command('status')
45
+ .description('Show daemon status')
46
+ .action(async () => {
47
+ try {
48
+ await showStatus();
49
+ }
50
+ catch (error) {
51
+ printError(error.message);
52
+ process.exit(1);
53
+ }
54
+ });
55
+ }
56
+ async function startDaemon(options) {
57
+ const projectRoot = await findProjectRoot();
58
+ if (!projectRoot)
59
+ throw new Error('Not a TimSquad project');
60
+ // 이미 실행 중인지 확인
61
+ const status = await isDaemonRunning(projectRoot);
62
+ if (status.running) {
63
+ printSuccess(`Daemon already running (PID: ${status.pid})`);
64
+ return;
65
+ }
66
+ // 좀비 정리
67
+ await killZombie(projectRoot);
68
+ const jsonlPath = options.jsonl || process.env.CLAUDE_TRANSCRIPT_PATH || '';
69
+ if (!jsonlPath) {
70
+ throw new Error('JSONL path required. Use --jsonl or set CLAUDE_TRANSCRIPT_PATH.');
71
+ }
72
+ // fork로 데몬 프로세스 시작
73
+ const daemonEntry = path.join(path.dirname(new URL(import.meta.url).pathname), '..', 'daemon', 'entry.js');
74
+ const child = fork(daemonEntry, [], {
75
+ detached: true,
76
+ stdio: 'ignore',
77
+ env: {
78
+ ...process.env,
79
+ TSQ_DAEMON_JSONL: jsonlPath,
80
+ TSQ_DAEMON_PROJECT: projectRoot,
81
+ },
82
+ });
83
+ child.unref();
84
+ printSuccess(`Daemon started (PID: ${child.pid})`);
85
+ }
86
+ async function stopDaemon() {
87
+ const projectRoot = await findProjectRoot();
88
+ if (!projectRoot)
89
+ throw new Error('Not a TimSquad project');
90
+ const status = await isDaemonRunning(projectRoot);
91
+ if (!status.running) {
92
+ console.log(colors.dim(' Daemon not running'));
93
+ // 좀비 정리만 수행
94
+ await killZombie(projectRoot);
95
+ return;
96
+ }
97
+ // SIGTERM 전송
98
+ try {
99
+ process.kill(status.pid, 'SIGTERM');
100
+ printSuccess(`Daemon stopped (PID: ${status.pid})`);
101
+ }
102
+ catch {
103
+ // 이미 종료된 경우
104
+ await killZombie(projectRoot);
105
+ printSuccess('Daemon stopped');
106
+ }
107
+ }
108
+ async function showStatus() {
109
+ const projectRoot = await findProjectRoot();
110
+ if (!projectRoot)
111
+ throw new Error('Not a TimSquad project');
112
+ const status = await isDaemonRunning(projectRoot);
113
+ printHeader('Daemon Status');
114
+ if (!status.running) {
115
+ console.log(colors.dim(' Not running'));
116
+ return;
117
+ }
118
+ printKeyValue(' PID', String(status.pid));
119
+ printKeyValue(' Status', colors.success('running'));
120
+ // IPC로 상세 정보 조회
121
+ try {
122
+ const info = await queryDaemon(projectRoot, 'status');
123
+ if (info.loadedAt) {
124
+ printKeyValue(' Index Loaded', info.loadedAt);
125
+ }
126
+ if (info.totalFiles !== undefined) {
127
+ printKeyValue(' Indexed Files', String(info.totalFiles));
128
+ }
129
+ if (info.totalMethods !== undefined) {
130
+ printKeyValue(' Indexed Methods', String(info.totalMethods));
131
+ }
132
+ if (info.modules?.length) {
133
+ printKeyValue(' Modules', info.modules.join(', '));
134
+ }
135
+ }
136
+ catch {
137
+ console.log(colors.dim(' (IPC not available)'));
138
+ }
139
+ }
140
+ //# sourceMappingURL=daemon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../src/commands/daemon.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,12 @@
1
1
  import { Command } from 'commander';
2
+ import type { FeedbackLevel, FeedbackRoutingRules } from '../types/index.js';
2
3
  export declare function registerFeedbackCommand(program: Command): void;
4
+ export interface ClassificationResult {
5
+ level: FeedbackLevel;
6
+ routeTo: string;
7
+ approvalRequired: boolean;
8
+ trigger: string;
9
+ }
10
+ export declare function classifyFeedback(message: string, rules: FeedbackRoutingRules): ClassificationResult;
11
+ export declare function getTriggerPatterns(trigger: string): string[];
3
12
  //# sourceMappingURL=feedback.d.ts.map