timsquad 2.0.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 (181) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +347 -0
  3. package/bin/tsq.js +6 -0
  4. package/dist/commands/feedback.d.ts +3 -0
  5. package/dist/commands/feedback.d.ts.map +1 -0
  6. package/dist/commands/feedback.js +142 -0
  7. package/dist/commands/feedback.js.map +1 -0
  8. package/dist/commands/full.d.ts +3 -0
  9. package/dist/commands/full.d.ts.map +1 -0
  10. package/dist/commands/full.js +87 -0
  11. package/dist/commands/full.js.map +1 -0
  12. package/dist/commands/git/commit.d.ts +3 -0
  13. package/dist/commands/git/commit.d.ts.map +1 -0
  14. package/dist/commands/git/commit.js +88 -0
  15. package/dist/commands/git/commit.js.map +1 -0
  16. package/dist/commands/git/index.d.ts +5 -0
  17. package/dist/commands/git/index.d.ts.map +1 -0
  18. package/dist/commands/git/index.js +5 -0
  19. package/dist/commands/git/index.js.map +1 -0
  20. package/dist/commands/git/pr.d.ts +3 -0
  21. package/dist/commands/git/pr.d.ts.map +1 -0
  22. package/dist/commands/git/pr.js +138 -0
  23. package/dist/commands/git/pr.js.map +1 -0
  24. package/dist/commands/git/release.d.ts +3 -0
  25. package/dist/commands/git/release.d.ts.map +1 -0
  26. package/dist/commands/git/release.js +158 -0
  27. package/dist/commands/git/release.js.map +1 -0
  28. package/dist/commands/git/sync.d.ts +3 -0
  29. package/dist/commands/git/sync.d.ts.map +1 -0
  30. package/dist/commands/git/sync.js +132 -0
  31. package/dist/commands/git/sync.js.map +1 -0
  32. package/dist/commands/init.d.ts +3 -0
  33. package/dist/commands/init.d.ts.map +1 -0
  34. package/dist/commands/init.js +150 -0
  35. package/dist/commands/init.js.map +1 -0
  36. package/dist/commands/log.d.ts +3 -0
  37. package/dist/commands/log.d.ts.map +1 -0
  38. package/dist/commands/log.js +271 -0
  39. package/dist/commands/log.js.map +1 -0
  40. package/dist/commands/metrics.d.ts +3 -0
  41. package/dist/commands/metrics.d.ts.map +1 -0
  42. package/dist/commands/metrics.js +299 -0
  43. package/dist/commands/metrics.js.map +1 -0
  44. package/dist/commands/quick.d.ts +3 -0
  45. package/dist/commands/quick.d.ts.map +1 -0
  46. package/dist/commands/quick.js +136 -0
  47. package/dist/commands/quick.js.map +1 -0
  48. package/dist/commands/retro.d.ts +3 -0
  49. package/dist/commands/retro.d.ts.map +1 -0
  50. package/dist/commands/retro.js +280 -0
  51. package/dist/commands/retro.js.map +1 -0
  52. package/dist/commands/status.d.ts +3 -0
  53. package/dist/commands/status.d.ts.map +1 -0
  54. package/dist/commands/status.js +127 -0
  55. package/dist/commands/status.js.map +1 -0
  56. package/dist/commands/watch.d.ts +3 -0
  57. package/dist/commands/watch.d.ts.map +1 -0
  58. package/dist/commands/watch.js +213 -0
  59. package/dist/commands/watch.js.map +1 -0
  60. package/dist/index.d.ts +3 -0
  61. package/dist/index.d.ts.map +1 -0
  62. package/dist/index.js +50 -0
  63. package/dist/index.js.map +1 -0
  64. package/dist/lib/config.d.ts +34 -0
  65. package/dist/lib/config.d.ts.map +1 -0
  66. package/dist/lib/config.js +108 -0
  67. package/dist/lib/config.js.map +1 -0
  68. package/dist/lib/project.d.ts +47 -0
  69. package/dist/lib/project.d.ts.map +1 -0
  70. package/dist/lib/project.js +191 -0
  71. package/dist/lib/project.js.map +1 -0
  72. package/dist/lib/template.d.ts +33 -0
  73. package/dist/lib/template.d.ts.map +1 -0
  74. package/dist/lib/template.js +151 -0
  75. package/dist/lib/template.js.map +1 -0
  76. package/dist/types/config.d.ts +75 -0
  77. package/dist/types/config.d.ts.map +1 -0
  78. package/dist/types/config.js +66 -0
  79. package/dist/types/config.js.map +1 -0
  80. package/dist/types/feedback.d.ts +59 -0
  81. package/dist/types/feedback.d.ts.map +1 -0
  82. package/dist/types/feedback.js +26 -0
  83. package/dist/types/feedback.js.map +1 -0
  84. package/dist/types/index.d.ts +4 -0
  85. package/dist/types/index.d.ts.map +1 -0
  86. package/dist/types/index.js +5 -0
  87. package/dist/types/index.js.map +1 -0
  88. package/dist/types/project.d.ts +89 -0
  89. package/dist/types/project.d.ts.map +1 -0
  90. package/dist/types/project.js +44 -0
  91. package/dist/types/project.js.map +1 -0
  92. package/dist/utils/colors.d.ts +30 -0
  93. package/dist/utils/colors.d.ts.map +1 -0
  94. package/dist/utils/colors.js +54 -0
  95. package/dist/utils/colors.js.map +1 -0
  96. package/dist/utils/date.d.ts +25 -0
  97. package/dist/utils/date.d.ts.map +1 -0
  98. package/dist/utils/date.js +65 -0
  99. package/dist/utils/date.js.map +1 -0
  100. package/dist/utils/fs.d.ts +49 -0
  101. package/dist/utils/fs.d.ts.map +1 -0
  102. package/dist/utils/fs.js +84 -0
  103. package/dist/utils/fs.js.map +1 -0
  104. package/dist/utils/prompts.d.ts +31 -0
  105. package/dist/utils/prompts.d.ts.map +1 -0
  106. package/dist/utils/prompts.js +95 -0
  107. package/dist/utils/prompts.js.map +1 -0
  108. package/dist/utils/yaml.d.ts +21 -0
  109. package/dist/utils/yaml.d.ts.map +1 -0
  110. package/dist/utils/yaml.js +40 -0
  111. package/dist/utils/yaml.js.map +1 -0
  112. package/package.json +71 -0
  113. package/templates/common/CLAUDE.md.template +254 -0
  114. package/templates/common/claude/agents/tsq-dba.md +290 -0
  115. package/templates/common/claude/agents/tsq-designer.md +304 -0
  116. package/templates/common/claude/agents/tsq-developer.md +118 -0
  117. package/templates/common/claude/agents/tsq-planner.md +90 -0
  118. package/templates/common/claude/agents/tsq-prompter.md +336 -0
  119. package/templates/common/claude/agents/tsq-qa.md +134 -0
  120. package/templates/common/claude/agents/tsq-retro.md +168 -0
  121. package/templates/common/claude/agents/tsq-security.md +190 -0
  122. package/templates/common/claude/skills/architecture/SKILL.md +123 -0
  123. package/templates/common/claude/skills/backend/node/SKILL.md +1015 -0
  124. package/templates/common/claude/skills/coding/SKILL.md +171 -0
  125. package/templates/common/claude/skills/database/prisma/SKILL.md +357 -0
  126. package/templates/common/claude/skills/frontend/nextjs/SKILL.md +279 -0
  127. package/templates/common/claude/skills/frontend/react/SKILL.md +1729 -0
  128. package/templates/common/claude/skills/methodology/bdd/SKILL.md +234 -0
  129. package/templates/common/claude/skills/methodology/ddd/SKILL.md +311 -0
  130. package/templates/common/claude/skills/methodology/tdd/SKILL.md +512 -0
  131. package/templates/common/claude/skills/planning/SKILL.md +90 -0
  132. package/templates/common/claude/skills/security/SKILL.md +234 -0
  133. package/templates/common/claude/skills/testing/SKILL.md +146 -0
  134. package/templates/common/claude/skills/typescript/SKILL.md +435 -0
  135. package/templates/common/config.template.yaml +131 -0
  136. package/templates/common/timsquad/architectures/clean/ARCHITECTURE.md +49 -0
  137. package/templates/common/timsquad/architectures/clean/backend.xml +210 -0
  138. package/templates/common/timsquad/architectures/clean/frontend.xml +148 -0
  139. package/templates/common/timsquad/architectures/fsd/ARCHITECTURE.md +67 -0
  140. package/templates/common/timsquad/architectures/fsd/frontend.xml +288 -0
  141. package/templates/common/timsquad/architectures/hexagonal/ARCHITECTURE.md +60 -0
  142. package/templates/common/timsquad/architectures/hexagonal/backend.xml +300 -0
  143. package/templates/common/timsquad/constraints/competency-framework.xml +501 -0
  144. package/templates/common/timsquad/constraints/ssot-schema.xml +433 -0
  145. package/templates/common/timsquad/feedback/feedback-router.sh +341 -0
  146. package/templates/common/timsquad/feedback/routing-rules.yaml +352 -0
  147. package/templates/common/timsquad/generators/data-design.xml +290 -0
  148. package/templates/common/timsquad/generators/prd.xml +280 -0
  149. package/templates/common/timsquad/generators/requirements.xml +220 -0
  150. package/templates/common/timsquad/generators/service-spec.xml +266 -0
  151. package/templates/common/timsquad/logs/_example.md +81 -0
  152. package/templates/common/timsquad/logs/_template.md +46 -0
  153. package/templates/common/timsquad/patterns/cqrs.xml +127 -0
  154. package/templates/common/timsquad/patterns/event-sourcing.xml +85 -0
  155. package/templates/common/timsquad/patterns/repository.xml +64 -0
  156. package/templates/common/timsquad/process/state-machine.xml +343 -0
  157. package/templates/common/timsquad/process/validation-rules.xml +308 -0
  158. package/templates/common/timsquad/process/workflow-base.xml +202 -0
  159. package/templates/common/timsquad/retrospective/cycle-report.template.md +205 -0
  160. package/templates/common/timsquad/retrospective/metrics/metrics-schema.json +203 -0
  161. package/templates/common/timsquad/retrospective/patterns/failure-patterns.md +199 -0
  162. package/templates/common/timsquad/retrospective/patterns/success-patterns.md +262 -0
  163. package/templates/common/timsquad/retrospective/retrospective-config.xml +294 -0
  164. package/templates/common/timsquad/retrospective/retrospective-state.xml +210 -0
  165. package/templates/common/timsquad/ssot/adr/ADR-000-template.md +121 -0
  166. package/templates/common/timsquad/ssot/adr/ADR-001-example.md +115 -0
  167. package/templates/common/timsquad/ssot/data-design.template.md +132 -0
  168. package/templates/common/timsquad/ssot/deployment-spec.template.md +384 -0
  169. package/templates/common/timsquad/ssot/env-config.template.md +346 -0
  170. package/templates/common/timsquad/ssot/error-codes.template.md +114 -0
  171. package/templates/common/timsquad/ssot/functional-spec.template.md +185 -0
  172. package/templates/common/timsquad/ssot/glossary.template.md +148 -0
  173. package/templates/common/timsquad/ssot/integration-spec.template.md +391 -0
  174. package/templates/common/timsquad/ssot/planning.template.md +94 -0
  175. package/templates/common/timsquad/ssot/prd.template.md +102 -0
  176. package/templates/common/timsquad/ssot/requirements.template.md +117 -0
  177. package/templates/common/timsquad/ssot/security-spec.template.md +309 -0
  178. package/templates/common/timsquad/ssot/service-spec.template.md +194 -0
  179. package/templates/common/timsquad/ssot/test-spec.template.md +264 -0
  180. package/templates/common/timsquad/ssot/ui-ux-spec.template.md +262 -0
  181. package/templates/common/timsquad/state/workspace.xml +217 -0
@@ -0,0 +1,151 @@
1
+ import path from 'path';
2
+ import { fileURLToPath } from 'url';
3
+ import fs from 'fs-extra';
4
+ import { REQUIRED_SSOT_BY_LEVEL, REQUIRED_SSOT_BY_TYPE } from '../types/project.js';
5
+ import { getDateString, getTimestamp } from '../utils/date.js';
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = path.dirname(__filename);
8
+ /**
9
+ * Get templates directory path
10
+ */
11
+ export function getTemplatesDir() {
12
+ // Resolve from package root (dist/lib -> templates)
13
+ return path.resolve(__dirname, '..', '..', 'templates');
14
+ }
15
+ /**
16
+ * Create template variables
17
+ */
18
+ export function createTemplateVariables(name, type, level) {
19
+ const now = new Date();
20
+ return {
21
+ PROJECT_NAME: name,
22
+ PROJECT_TYPE: type,
23
+ PROJECT_LEVEL: String(level),
24
+ DATE: getDateString(),
25
+ TIMESTAMP: getTimestamp(),
26
+ INIT_DATE: now.toISOString(),
27
+ };
28
+ }
29
+ /**
30
+ * Substitute variables in content
31
+ */
32
+ export function substituteVariables(content, variables) {
33
+ let result = content;
34
+ for (const [key, value] of Object.entries(variables)) {
35
+ const pattern = new RegExp(`\\{\\{${key}\\}\\}`, 'g');
36
+ result = result.replace(pattern, value);
37
+ }
38
+ return result;
39
+ }
40
+ /**
41
+ * Copy and process a single file
42
+ */
43
+ async function copyAndProcessFile(src, dest, variables) {
44
+ const content = await fs.readFile(src, 'utf-8');
45
+ const processed = substituteVariables(content, variables);
46
+ await fs.ensureDir(path.dirname(dest));
47
+ await fs.writeFile(dest, processed, 'utf-8');
48
+ }
49
+ /**
50
+ * Copy directory recursively with variable substitution
51
+ */
52
+ async function copyDirectoryWithSubstitution(srcDir, destDir, variables) {
53
+ const entries = await fs.readdir(srcDir, { withFileTypes: true });
54
+ for (const entry of entries) {
55
+ const srcPath = path.join(srcDir, entry.name);
56
+ let destName = entry.name;
57
+ // Remove .template suffix
58
+ if (destName.endsWith('.template.md')) {
59
+ destName = destName.replace('.template.md', '.md');
60
+ }
61
+ else if (destName.endsWith('.template.yaml')) {
62
+ destName = destName.replace('.template.yaml', '.yaml');
63
+ }
64
+ const destPath = path.join(destDir, destName);
65
+ if (entry.isDirectory()) {
66
+ await copyDirectoryWithSubstitution(srcPath, destPath, variables);
67
+ }
68
+ else {
69
+ // Process text files, copy binary files as-is
70
+ const ext = path.extname(entry.name).toLowerCase();
71
+ const textExtensions = ['.md', '.yaml', '.yml', '.json', '.xml', '.sh', '.txt'];
72
+ if (textExtensions.includes(ext)) {
73
+ await copyAndProcessFile(srcPath, destPath, variables);
74
+ }
75
+ else {
76
+ await fs.copy(srcPath, destPath);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ /**
82
+ * Get required SSOT documents for project
83
+ */
84
+ export function getRequiredDocuments(type, level) {
85
+ const byLevel = REQUIRED_SSOT_BY_LEVEL[level];
86
+ const byType = REQUIRED_SSOT_BY_TYPE[type];
87
+ return [...new Set([...byLevel, ...byType])];
88
+ }
89
+ /**
90
+ * Initialize project from templates
91
+ */
92
+ export async function initializeProject(projectRoot, name, type, level) {
93
+ const templatesDir = getTemplatesDir();
94
+ const variables = createTemplateVariables(name, type, level);
95
+ // Adjust level for fintech
96
+ const effectiveLevel = type === 'fintech' ? 3 : level;
97
+ const effectiveVariables = { ...variables, PROJECT_LEVEL: String(effectiveLevel) };
98
+ // 1. Copy common/.claude to .claude
99
+ const commonClaudeDir = path.join(templatesDir, 'common', 'claude');
100
+ const destClaudeDir = path.join(projectRoot, '.claude');
101
+ await copyDirectoryWithSubstitution(commonClaudeDir, destClaudeDir, effectiveVariables);
102
+ // 2. Copy common/timsquad to .timsquad
103
+ const commonTimsquadDir = path.join(templatesDir, 'common', 'timsquad');
104
+ const destTimsquadDir = path.join(projectRoot, '.timsquad');
105
+ await copyDirectoryWithSubstitution(commonTimsquadDir, destTimsquadDir, effectiveVariables);
106
+ // 3. Copy type-specific workflow
107
+ const typeWorkflowDir = path.join(templatesDir, type, 'process');
108
+ if (await fs.pathExists(typeWorkflowDir)) {
109
+ const destProcessDir = path.join(destTimsquadDir, 'process');
110
+ await copyDirectoryWithSubstitution(typeWorkflowDir, destProcessDir, effectiveVariables);
111
+ }
112
+ // 4. Create CLAUDE.md from template
113
+ const claudeMdTemplate = path.join(templatesDir, 'common', 'CLAUDE.md.template');
114
+ if (await fs.pathExists(claudeMdTemplate)) {
115
+ await copyAndProcessFile(claudeMdTemplate, path.join(projectRoot, 'CLAUDE.md'), effectiveVariables);
116
+ }
117
+ // 5. Create additional directories
118
+ const additionalDirs = [
119
+ '.timsquad/logs',
120
+ '.timsquad/logs/quick',
121
+ '.timsquad/state',
122
+ '.timsquad/knowledge',
123
+ '.timsquad/retrospective/cycles',
124
+ '.timsquad/retrospective/metrics',
125
+ '.timsquad/retrospective/improvements/prompts',
126
+ '.timsquad/retrospective/improvements/templates',
127
+ ];
128
+ for (const dir of additionalDirs) {
129
+ await fs.ensureDir(path.join(projectRoot, dir));
130
+ }
131
+ // 6. Create initial state files
132
+ await createInitialStateFiles(projectRoot, name, type, effectiveLevel);
133
+ }
134
+ /**
135
+ * Create initial state files
136
+ */
137
+ async function createInitialStateFiles(projectRoot, _name, _type, _level) {
138
+ // current-phase.json
139
+ const phaseData = {
140
+ current: 'planning',
141
+ startedAt: new Date().toISOString(),
142
+ progress: 0,
143
+ };
144
+ await fs.writeJson(path.join(projectRoot, '.timsquad', 'state', 'current-phase.json'), phaseData, { spaces: 2 });
145
+ // knowledge files
146
+ const knowledgeDir = path.join(projectRoot, '.timsquad', 'knowledge');
147
+ await fs.writeFile(path.join(knowledgeDir, 'tribal.md'), `# Tribal Knowledge\n\n## 코딩 컨벤션\n\n## 아키텍처 패턴\n`, 'utf-8');
148
+ await fs.writeFile(path.join(knowledgeDir, 'lessons.md'), `# Lessons Learned\n\n`, 'utf-8');
149
+ await fs.writeFile(path.join(knowledgeDir, 'constraints.md'), `# Project Constraints\n\n`, 'utf-8');
150
+ }
151
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/lib/template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import type { ProjectType, ProjectLevel, AgentType } from './project.js';
2
+ /**
3
+ * Methodology settings
4
+ */
5
+ export interface MethodologyConfig {
6
+ development: 'tdd' | 'bdd' | 'none';
7
+ process: 'agile' | 'waterfall' | 'kanban';
8
+ branching: 'github-flow' | 'gitflow' | 'trunk-based';
9
+ review: 'required' | 'optional' | 'none';
10
+ }
11
+ /**
12
+ * Technology stack configuration
13
+ */
14
+ export interface StackConfig {
15
+ language: 'typescript' | 'javascript';
16
+ frontend?: 'nextjs' | 'react' | 'vue' | 'svelte';
17
+ backend?: 'node' | 'python' | 'go' | 'java';
18
+ database: 'postgresql' | 'mysql' | 'mongodb' | 'sqlite';
19
+ orm?: 'prisma' | 'typeorm' | 'drizzle';
20
+ cache?: 'redis' | 'memcached' | 'none';
21
+ hosting?: 'vercel' | 'aws' | 'gcp' | 'azure' | 'self-hosted';
22
+ }
23
+ /**
24
+ * Agent configuration
25
+ */
26
+ export interface AgentConfig {
27
+ model: 'opus' | 'sonnet' | 'haiku';
28
+ enabled: boolean;
29
+ }
30
+ /**
31
+ * Quality settings
32
+ */
33
+ export interface QualityConfig {
34
+ test_coverage: {
35
+ minimum: number;
36
+ recommended: number;
37
+ };
38
+ security_review: 'required' | 'optional' | 'none';
39
+ }
40
+ /**
41
+ * Consensus configuration (for fintech)
42
+ */
43
+ export interface ConsensusConfig {
44
+ enabled: boolean;
45
+ required_for?: string[];
46
+ }
47
+ /**
48
+ * Full TimSquad configuration
49
+ */
50
+ export interface TimsquadConfig {
51
+ project: {
52
+ name: string;
53
+ type: ProjectType;
54
+ level: ProjectLevel;
55
+ created: string;
56
+ };
57
+ methodology: MethodologyConfig;
58
+ stack: StackConfig;
59
+ agents: Record<AgentType, AgentConfig>;
60
+ quality: QualityConfig;
61
+ consensus?: ConsensusConfig;
62
+ ssot?: {
63
+ required: string[];
64
+ optional: string[];
65
+ };
66
+ }
67
+ /**
68
+ * Default configuration
69
+ */
70
+ export declare const DEFAULT_CONFIG: Omit<TimsquadConfig, 'project'>;
71
+ /**
72
+ * Fintech-specific configuration overrides
73
+ */
74
+ export declare const FINTECH_CONFIG_OVERRIDES: Partial<TimsquadConfig>;
75
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IACpC,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1C,SAAS,EAAE,aAAa,GAAG,SAAS,GAAG,aAAa,CAAC;IACrD,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,YAAY,GAAG,YAAY,CAAC;IACtC,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACjD,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;IAC5C,QAAQ,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;IACxD,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACvC,KAAK,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,CAAC;IACvC,OAAO,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;CACnD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,WAAW,CAAC;QAClB,KAAK,EAAE,YAAY,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,WAAW,EAAE,iBAAiB,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACvC,OAAO,EAAE,aAAa,CAAC;IACvB,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,IAAI,CAAC,EAAE;QACL,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CA+B1D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,OAAO,CAAC,cAAc,CA0B5D,CAAC"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Default configuration
3
+ */
4
+ export const DEFAULT_CONFIG = {
5
+ methodology: {
6
+ development: 'tdd',
7
+ process: 'agile',
8
+ branching: 'github-flow',
9
+ review: 'required',
10
+ },
11
+ stack: {
12
+ language: 'typescript',
13
+ frontend: 'nextjs',
14
+ backend: 'node',
15
+ database: 'postgresql',
16
+ orm: 'prisma',
17
+ },
18
+ agents: {
19
+ planner: { model: 'opus', enabled: true },
20
+ developer: { model: 'sonnet', enabled: true },
21
+ qa: { model: 'sonnet', enabled: true },
22
+ security: { model: 'sonnet', enabled: true },
23
+ dba: { model: 'sonnet', enabled: true },
24
+ designer: { model: 'sonnet', enabled: true },
25
+ prompter: { model: 'sonnet', enabled: true },
26
+ retro: { model: 'haiku', enabled: true },
27
+ },
28
+ quality: {
29
+ test_coverage: {
30
+ minimum: 80,
31
+ recommended: 90,
32
+ },
33
+ security_review: 'optional',
34
+ },
35
+ };
36
+ /**
37
+ * Fintech-specific configuration overrides
38
+ */
39
+ export const FINTECH_CONFIG_OVERRIDES = {
40
+ methodology: {
41
+ development: 'tdd',
42
+ process: 'agile',
43
+ branching: 'gitflow',
44
+ review: 'required',
45
+ },
46
+ quality: {
47
+ test_coverage: {
48
+ minimum: 90,
49
+ recommended: 95,
50
+ },
51
+ security_review: 'required',
52
+ },
53
+ consensus: {
54
+ enabled: true,
55
+ required_for: [
56
+ 'architecture_choice',
57
+ 'security_design',
58
+ 'data_model',
59
+ 'api_design',
60
+ 'authentication_design',
61
+ 'encryption_strategy',
62
+ 'compliance_decision',
63
+ ],
64
+ },
65
+ };
66
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAyEA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAoC;IAC7D,WAAW,EAAE;QACX,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,aAAa;QACxB,MAAM,EAAE,UAAU;KACnB;IACD,KAAK,EAAE;QACL,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,QAAQ;QAClB,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,YAAY;QACtB,GAAG,EAAE,QAAQ;KACd;IACD,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;QACzC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;QAC7C,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;QACtC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;QAC5C,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;QACvC,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;QAC5C,QAAQ,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE;QAC5C,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;KACzC;IACD,OAAO,EAAE;QACP,aAAa,EAAE;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;SAChB;QACD,eAAe,EAAE,UAAU;KAC5B;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAA4B;IAC/D,WAAW,EAAE;QACX,WAAW,EAAE,KAAK;QAClB,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,UAAU;KACnB;IACD,OAAO,EAAE;QACP,aAAa,EAAE;YACb,OAAO,EAAE,EAAE;YACX,WAAW,EAAE,EAAE;SAChB;QACD,eAAe,EAAE,UAAU;KAC5B;IACD,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,YAAY,EAAE;YACZ,qBAAqB;YACrB,iBAAiB;YACjB,YAAY;YACZ,YAAY;YACZ,uBAAuB;YACvB,qBAAqB;YACrB,qBAAqB;SACtB;KACF;CACF,CAAC"}
@@ -0,0 +1,59 @@
1
+ import type { AgentType } from './project.js';
2
+ /**
3
+ * Feedback level (1=구현 수정, 2=설계 수정, 3=기획 수정)
4
+ */
5
+ export type FeedbackLevel = 1 | 2 | 3;
6
+ /**
7
+ * Feedback trigger types
8
+ */
9
+ export type FeedbackTrigger = 'test_failure' | 'lint_error' | 'type_error' | 'runtime_error' | 'code_style_violation' | 'architecture_issue' | 'api_mismatch' | 'performance_problem' | 'scalability_concern' | 'security_vulnerability' | 'requirement_ambiguity' | 'scope_change' | 'business_logic_error' | 'feature_request' | 'stakeholder_feedback';
10
+ /**
11
+ * Feedback routing result
12
+ */
13
+ export interface FeedbackResult {
14
+ level: FeedbackLevel;
15
+ trigger: FeedbackTrigger;
16
+ confidence: number;
17
+ routeTo: AgentType | 'user';
18
+ approvalRequired: boolean;
19
+ ssotUpdate: boolean;
20
+ actions: FeedbackAction[];
21
+ }
22
+ /**
23
+ * Feedback action to take
24
+ */
25
+ export interface FeedbackAction {
26
+ type: 'notify' | 'log' | 'update_ssot' | 'request_approval' | 'escalate';
27
+ target?: string;
28
+ message?: string;
29
+ }
30
+ /**
31
+ * Feedback routing rules
32
+ */
33
+ export interface FeedbackRoutingRules {
34
+ level_1: {
35
+ name: string;
36
+ triggers: FeedbackTrigger[];
37
+ route_to: AgentType;
38
+ approval_required: boolean;
39
+ };
40
+ level_2: {
41
+ name: string;
42
+ triggers: FeedbackTrigger[];
43
+ route_to: AgentType;
44
+ approval_required: boolean;
45
+ ssot_update: boolean;
46
+ };
47
+ level_3: {
48
+ name: string;
49
+ triggers: FeedbackTrigger[];
50
+ route_to: 'user';
51
+ approval_required: boolean;
52
+ ssot_update: boolean;
53
+ };
54
+ }
55
+ /**
56
+ * Default routing rules
57
+ */
58
+ export declare const DEFAULT_ROUTING_RULES: FeedbackRoutingRules;
59
+ //# sourceMappingURL=feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/types/feedback.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,eAAe,GAEvB,cAAc,GACd,YAAY,GACZ,YAAY,GACZ,eAAe,GACf,sBAAsB,GAEtB,oBAAoB,GACpB,cAAc,GACd,qBAAqB,GACrB,qBAAqB,GACrB,wBAAwB,GAExB,uBAAuB,GACvB,cAAc,GACd,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,KAAK,GAAG,aAAa,GAAG,kBAAkB,GAAG,UAAU,CAAC;IACzE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,QAAQ,EAAE,SAAS,CAAC;QACpB,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,QAAQ,EAAE,SAAS,CAAC;QACpB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC;QACjB,iBAAiB,EAAE,OAAO,CAAC;QAC3B,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,oBAqBnC,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Default routing rules
3
+ */
4
+ export const DEFAULT_ROUTING_RULES = {
5
+ level_1: {
6
+ name: '구현 수정',
7
+ triggers: ['test_failure', 'lint_error', 'type_error', 'runtime_error', 'code_style_violation'],
8
+ route_to: 'developer',
9
+ approval_required: false,
10
+ },
11
+ level_2: {
12
+ name: '설계 수정',
13
+ triggers: ['architecture_issue', 'api_mismatch', 'performance_problem', 'scalability_concern', 'security_vulnerability'],
14
+ route_to: 'planner',
15
+ approval_required: false,
16
+ ssot_update: true,
17
+ },
18
+ level_3: {
19
+ name: '기획/PRD 수정',
20
+ triggers: ['requirement_ambiguity', 'scope_change', 'business_logic_error', 'feature_request', 'stakeholder_feedback'],
21
+ route_to: 'user',
22
+ approval_required: true,
23
+ ssot_update: true,
24
+ },
25
+ };
26
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/types/feedback.ts"],"names":[],"mappings":"AA8EA;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAyB;IACzD,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,CAAC,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,sBAAsB,CAAC;QAC/F,QAAQ,EAAE,WAAW;QACrB,iBAAiB,EAAE,KAAK;KACzB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,CAAC,oBAAoB,EAAE,cAAc,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,wBAAwB,CAAC;QACxH,QAAQ,EAAE,SAAS;QACnB,iBAAiB,EAAE,KAAK;QACxB,WAAW,EAAE,IAAI;KAClB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,CAAC,uBAAuB,EAAE,cAAc,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,sBAAsB,CAAC;QACtH,QAAQ,EAAE,MAAM;QAChB,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,IAAI;KAClB;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './project.js';
2
+ export * from './config.js';
3
+ export * from './feedback.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Re-export all types
2
+ export * from './project.js';
3
+ export * from './config.js';
4
+ export * from './feedback.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Project types supported by TimSquad
3
+ */
4
+ export type ProjectType = 'web-service' | 'api-backend' | 'platform' | 'fintech' | 'infra';
5
+ /**
6
+ * Project level (1=MVP, 2=Standard, 3=Enterprise)
7
+ */
8
+ export type ProjectLevel = 1 | 2 | 3;
9
+ /**
10
+ * Phase in the development process
11
+ */
12
+ export type Phase = 'planning' | 'design' | 'implementation' | 'review' | 'security' | 'deployment';
13
+ /**
14
+ * Agent types
15
+ */
16
+ export type AgentType = 'planner' | 'developer' | 'qa' | 'security' | 'dba' | 'designer' | 'prompter' | 'retro';
17
+ /**
18
+ * Project info
19
+ */
20
+ export interface ProjectInfo {
21
+ name: string;
22
+ type: ProjectType;
23
+ level: ProjectLevel;
24
+ created: string;
25
+ root: string;
26
+ }
27
+ /**
28
+ * Phase info
29
+ */
30
+ export interface PhaseInfo {
31
+ current: Phase;
32
+ startedAt: string;
33
+ progress: number;
34
+ }
35
+ /**
36
+ * SSOT document info
37
+ */
38
+ export interface SSOTDocument {
39
+ name: string;
40
+ path: string;
41
+ required: boolean;
42
+ filled: boolean;
43
+ }
44
+ /**
45
+ * Agent info
46
+ */
47
+ export interface AgentInfo {
48
+ name: string;
49
+ type: AgentType;
50
+ model: string;
51
+ available: boolean;
52
+ }
53
+ /**
54
+ * Project status
55
+ */
56
+ export interface ProjectStatus {
57
+ project: ProjectInfo;
58
+ phase: PhaseInfo;
59
+ ssot: SSOTDocument[];
60
+ agents: AgentInfo[];
61
+ logs: {
62
+ total: number;
63
+ recent: string[];
64
+ };
65
+ retrospective: {
66
+ cycles: number;
67
+ patterns: {
68
+ success: number;
69
+ failure: number;
70
+ };
71
+ };
72
+ }
73
+ /**
74
+ * List of required SSOT documents by level
75
+ */
76
+ export declare const REQUIRED_SSOT_BY_LEVEL: Record<ProjectLevel, string[]>;
77
+ /**
78
+ * Additional required SSOT by project type
79
+ */
80
+ export declare const REQUIRED_SSOT_BY_TYPE: Record<ProjectType, string[]>;
81
+ /**
82
+ * Project type descriptions
83
+ */
84
+ export declare const PROJECT_TYPE_DESCRIPTIONS: Record<ProjectType, string>;
85
+ /**
86
+ * Project level descriptions
87
+ */
88
+ export declare const PROJECT_LEVEL_DESCRIPTIONS: Record<ProjectLevel, string>;
89
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/types/project.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,aAAa,GACb,UAAU,GACV,SAAS,GACT,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,KAAK,GACb,UAAU,GACV,QAAQ,GACR,gBAAgB,GAChB,QAAQ,GACR,UAAU,GACV,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,WAAW,GACX,IAAI,GACJ,UAAU,GACV,KAAK,GACL,UAAU,GACV,UAAU,GACV,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,KAAK,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,aAAa,EAAE;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE;YACR,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC;KACH,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,CAWjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,CAM/D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAMjE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAInE,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * List of required SSOT documents by level
3
+ */
4
+ export const REQUIRED_SSOT_BY_LEVEL = {
5
+ 1: ['prd', 'planning', 'requirements', 'service-spec', 'data-design'],
6
+ 2: [
7
+ 'prd', 'planning', 'requirements', 'service-spec', 'data-design',
8
+ 'glossary', 'functional-spec', 'ui-ux-spec', 'error-codes', 'env-config', 'test-spec'
9
+ ],
10
+ 3: [
11
+ 'prd', 'planning', 'requirements', 'service-spec', 'data-design',
12
+ 'glossary', 'functional-spec', 'ui-ux-spec', 'error-codes', 'env-config', 'test-spec',
13
+ 'deployment-spec', 'integration-spec', 'security-spec'
14
+ ],
15
+ };
16
+ /**
17
+ * Additional required SSOT by project type
18
+ */
19
+ export const REQUIRED_SSOT_BY_TYPE = {
20
+ 'web-service': ['ui-ux-spec'],
21
+ 'api-backend': [],
22
+ 'platform': ['integration-spec', 'glossary'],
23
+ 'fintech': ['security-spec', 'error-codes', 'deployment-spec'],
24
+ 'infra': ['deployment-spec', 'env-config'],
25
+ };
26
+ /**
27
+ * Project type descriptions
28
+ */
29
+ export const PROJECT_TYPE_DESCRIPTIONS = {
30
+ 'web-service': 'SaaS, 웹앱',
31
+ 'api-backend': 'API 서버, 마이크로서비스',
32
+ 'platform': '프레임워크, SDK',
33
+ 'fintech': '거래소, 결제',
34
+ 'infra': 'DevOps, 자동화',
35
+ };
36
+ /**
37
+ * Project level descriptions
38
+ */
39
+ export const PROJECT_LEVEL_DESCRIPTIONS = {
40
+ 1: 'MVP - 최소 문서, 빠른 개발',
41
+ 2: 'Standard - 표준 문서, 균형',
42
+ 3: 'Enterprise - 전체 문서, 완전한 추적',
43
+ };
44
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/types/project.ts"],"names":[],"mappings":"AAoGA;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAmC;IACpE,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,CAAC;IACrE,CAAC,EAAE;QACD,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa;QAChE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW;KACtF;IACD,CAAC,EAAE;QACD,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa;QAChE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW;QACrF,iBAAiB,EAAE,kBAAkB,EAAE,eAAe;KACvD;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE,aAAa,EAAE,CAAC,YAAY,CAAC;IAC7B,aAAa,EAAE,EAAE;IACjB,UAAU,EAAE,CAAC,kBAAkB,EAAE,UAAU,CAAC;IAC5C,SAAS,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,iBAAiB,CAAC;IAC9D,OAAO,EAAE,CAAC,iBAAiB,EAAE,YAAY,CAAC;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAgC;IACpE,aAAa,EAAE,UAAU;IACzB,aAAa,EAAE,iBAAiB;IAChC,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,aAAa;CACvB,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAiC;IACtE,CAAC,EAAE,oBAAoB;IACvB,CAAC,EAAE,sBAAsB;IACzB,CAAC,EAAE,4BAA4B;CAChC,CAAC"}
@@ -0,0 +1,30 @@
1
+ export declare const colors: {
2
+ success: import("chalk").ChalkInstance;
3
+ error: import("chalk").ChalkInstance;
4
+ warning: import("chalk").ChalkInstance;
5
+ info: import("chalk").ChalkInstance;
6
+ dim: import("chalk").ChalkInstance;
7
+ primary: import("chalk").ChalkInstance;
8
+ secondary: import("chalk").ChalkInstance;
9
+ highlight: import("chalk").ChalkInstance;
10
+ bold: import("chalk").ChalkInstance;
11
+ italic: import("chalk").ChalkInstance;
12
+ underline: import("chalk").ChalkInstance;
13
+ header: import("chalk").ChalkInstance;
14
+ subheader: import("chalk").ChalkInstance;
15
+ label: import("chalk").ChalkInstance;
16
+ value: import("chalk").ChalkInstance;
17
+ path: import("chalk").ChalkInstance;
18
+ command: import("chalk").ChalkInstance;
19
+ agent: import("chalk").ChalkInstance;
20
+ phase: import("chalk").ChalkInstance;
21
+ };
22
+ export declare function printHeader(text: string): void;
23
+ export declare function printSuccess(text: string): void;
24
+ export declare function printError(text: string): void;
25
+ export declare function printWarning(text: string): void;
26
+ export declare function printInfo(text: string): void;
27
+ export declare function printStep(step: number, total: number, text: string): void;
28
+ export declare function printKeyValue(key: string, value: string): void;
29
+ export declare function printTable(rows: Array<[string, string]>): void;
30
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;CA2BlB,CAAC;AAEF,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE5C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAE9D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAK9D"}