@su-record/vibe 2.7.16 → 2.7.18

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 (249) hide show
  1. package/.env.example +37 -37
  2. package/CLAUDE.md +153 -134
  3. package/LICENSE +21 -21
  4. package/README.md +449 -449
  5. package/agents/architect-low.md +41 -41
  6. package/agents/architect-medium.md +59 -59
  7. package/agents/architect.md +80 -80
  8. package/agents/build-error-resolver.md +115 -115
  9. package/agents/compounder.md +261 -261
  10. package/agents/diagrammer.md +178 -178
  11. package/agents/docs/api-documenter.md +99 -99
  12. package/agents/docs/changelog-writer.md +93 -93
  13. package/agents/e2e-tester.md +294 -294
  14. package/agents/explorer-low.md +42 -42
  15. package/agents/explorer-medium.md +59 -59
  16. package/agents/explorer.md +48 -48
  17. package/agents/implementer-low.md +43 -43
  18. package/agents/implementer-medium.md +52 -52
  19. package/agents/implementer.md +54 -54
  20. package/agents/junior-mentor.md +141 -141
  21. package/agents/planning/requirements-analyst.md +84 -84
  22. package/agents/planning/ux-advisor.md +83 -83
  23. package/agents/qa/acceptance-tester.md +86 -86
  24. package/agents/qa/edge-case-finder.md +93 -93
  25. package/agents/refactor-cleaner.md +143 -143
  26. package/agents/research/best-practices-agent.md +199 -199
  27. package/agents/research/codebase-patterns-agent.md +157 -157
  28. package/agents/research/framework-docs-agent.md +188 -188
  29. package/agents/research/security-advisory-agent.md +213 -213
  30. package/agents/review/architecture-reviewer.md +107 -107
  31. package/agents/review/complexity-reviewer.md +116 -116
  32. package/agents/review/data-integrity-reviewer.md +88 -88
  33. package/agents/review/git-history-reviewer.md +103 -103
  34. package/agents/review/performance-reviewer.md +86 -86
  35. package/agents/review/python-reviewer.md +150 -150
  36. package/agents/review/rails-reviewer.md +139 -139
  37. package/agents/review/react-reviewer.md +144 -144
  38. package/agents/review/security-reviewer.md +80 -80
  39. package/agents/review/simplicity-reviewer.md +140 -140
  40. package/agents/review/test-coverage-reviewer.md +116 -116
  41. package/agents/review/typescript-reviewer.md +127 -127
  42. package/agents/searcher.md +54 -54
  43. package/agents/simplifier.md +120 -120
  44. package/agents/tester.md +49 -49
  45. package/agents/ui/ui-a11y-auditor.md +93 -93
  46. package/agents/ui/ui-antipattern-detector.md +94 -94
  47. package/agents/ui/ui-dataviz-advisor.md +69 -69
  48. package/agents/ui/ui-design-system-gen.md +57 -57
  49. package/agents/ui/ui-industry-analyzer.md +49 -49
  50. package/agents/ui/ui-layout-architect.md +65 -65
  51. package/agents/ui/ui-stack-implementer.md +68 -68
  52. package/agents/ui/ux-compliance-reviewer.md +81 -81
  53. package/agents/ui-previewer.md +258 -258
  54. package/commands/vibe.analyze.md +379 -379
  55. package/commands/vibe.review.md +607 -607
  56. package/commands/vibe.run.md +2124 -2124
  57. package/commands/vibe.spec.md +1195 -1195
  58. package/commands/vibe.spec.review.md +569 -569
  59. package/commands/vibe.utils.md +413 -413
  60. package/commands/vibe.verify.md +484 -484
  61. package/dist/cli/collaborator.js +52 -52
  62. package/dist/cli/commands/evolution.js +12 -12
  63. package/dist/cli/commands/info.js +51 -51
  64. package/dist/cli/commands/init.js +5 -5
  65. package/dist/cli/commands/remove.js +14 -14
  66. package/dist/cli/commands/sentinel.js +27 -27
  67. package/dist/cli/commands/skills.js +5 -5
  68. package/dist/cli/commands/slack.js +10 -10
  69. package/dist/cli/commands/telegram.js +12 -12
  70. package/dist/cli/commands/upgrade.d.ts +3 -3
  71. package/dist/cli/commands/upgrade.d.ts.map +1 -1
  72. package/dist/cli/commands/upgrade.js +24 -3
  73. package/dist/cli/commands/upgrade.js.map +1 -1
  74. package/dist/cli/detect.js +32 -32
  75. package/dist/cli/index.js +51 -51
  76. package/dist/cli/llm/claude-commands.js +16 -16
  77. package/dist/cli/llm/config.js +18 -18
  78. package/dist/cli/llm/gemini-commands.js +16 -16
  79. package/dist/cli/llm/gpt-commands.js +19 -19
  80. package/dist/cli/llm/help.js +21 -21
  81. package/dist/cli/postinstall/cursor-agents.js +32 -32
  82. package/dist/cli/postinstall/cursor-rules.js +83 -83
  83. package/dist/cli/postinstall/cursor-skills.js +743 -743
  84. package/dist/cli/setup/Provisioner.js +42 -42
  85. package/dist/infra/lib/DeepInit.js +24 -24
  86. package/dist/infra/lib/IterationTracker.js +11 -11
  87. package/dist/infra/lib/PythonParser.js +108 -108
  88. package/dist/infra/lib/ReviewRace.js +96 -96
  89. package/dist/infra/lib/SkillFrontmatter.js +28 -28
  90. package/dist/infra/lib/SkillQualityGate.js +9 -9
  91. package/dist/infra/lib/SkillRepository.js +159 -159
  92. package/dist/infra/lib/UltraQA.js +99 -99
  93. package/dist/infra/lib/autonomy/AuditStore.js +41 -41
  94. package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
  95. package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
  96. package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
  97. package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
  98. package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
  99. package/dist/infra/lib/embedding/VectorStore.js +22 -22
  100. package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
  101. package/dist/infra/lib/evolution/DescriptionOptimizer.js +21 -21
  102. package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
  103. package/dist/infra/lib/evolution/InsightStore.js +90 -90
  104. package/dist/infra/lib/evolution/RollbackManager.js +5 -5
  105. package/dist/infra/lib/evolution/SkillBenchmark.js +23 -23
  106. package/dist/infra/lib/evolution/SkillEvalRunner.js +50 -50
  107. package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
  108. package/dist/infra/lib/evolution/UsageTracker.js +28 -28
  109. package/dist/infra/lib/gemini/orchestration.js +5 -5
  110. package/dist/infra/lib/gpt/orchestration.js +4 -4
  111. package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
  112. package/dist/infra/lib/memory/MemorySearch.js +57 -57
  113. package/dist/infra/lib/memory/MemoryStorage.js +181 -181
  114. package/dist/infra/lib/memory/ObservationStore.js +28 -28
  115. package/dist/infra/lib/memory/ReflectionStore.js +30 -30
  116. package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
  117. package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
  118. package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
  119. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts +52 -0
  120. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts.map +1 -0
  121. package/dist/infra/lib/telemetry/SkillTelemetry.js +117 -0
  122. package/dist/infra/lib/telemetry/SkillTelemetry.js.map +1 -0
  123. package/dist/infra/lib/telemetry/SkillTelemetry.test.d.ts +2 -0
  124. package/dist/infra/lib/telemetry/SkillTelemetry.test.d.ts.map +1 -0
  125. package/dist/infra/lib/telemetry/SkillTelemetry.test.js +91 -0
  126. package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -0
  127. package/dist/infra/orchestrator/AgentManager.js +12 -12
  128. package/dist/infra/orchestrator/AgentRegistry.js +65 -65
  129. package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
  130. package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
  131. package/dist/infra/orchestrator/parallelResearch.js +24 -24
  132. package/dist/test-helpers/index.d.ts +36 -0
  133. package/dist/test-helpers/index.d.ts.map +1 -0
  134. package/dist/test-helpers/index.js +85 -0
  135. package/dist/test-helpers/index.js.map +1 -0
  136. package/dist/test-helpers/index.test.d.ts +2 -0
  137. package/dist/test-helpers/index.test.d.ts.map +1 -0
  138. package/dist/test-helpers/index.test.js +92 -0
  139. package/dist/test-helpers/index.test.js.map +1 -0
  140. package/dist/tools/convention/analyzeComplexity.test.js +115 -115
  141. package/dist/tools/convention/validateCodeQuality.test.js +104 -104
  142. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  143. package/dist/tools/memory/getMemoryGraph.js +12 -12
  144. package/dist/tools/memory/getSessionContext.js +9 -9
  145. package/dist/tools/memory/linkMemories.js +14 -14
  146. package/dist/tools/memory/listMemories.js +4 -4
  147. package/dist/tools/memory/recallMemory.js +4 -4
  148. package/dist/tools/memory/saveMemory.js +4 -4
  149. package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
  150. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  151. package/dist/tools/semantic/astGrep.test.js +6 -6
  152. package/dist/tools/spec/prdParser.test.js +171 -171
  153. package/dist/tools/spec/specGenerator.js +169 -169
  154. package/dist/tools/spec/traceabilityMatrix.js +64 -64
  155. package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
  156. package/hooks/gemini-hooks.json +73 -73
  157. package/hooks/hooks.json +137 -137
  158. package/hooks/scripts/code-check.js +77 -77
  159. package/hooks/scripts/context-save.js +212 -212
  160. package/hooks/scripts/hud-status.js +291 -291
  161. package/hooks/scripts/keyword-detector.js +214 -214
  162. package/hooks/scripts/llm-orchestrate.js +475 -475
  163. package/hooks/scripts/post-edit.js +32 -32
  164. package/hooks/scripts/pre-tool-guard.js +125 -125
  165. package/hooks/scripts/prompt-dispatcher.js +185 -185
  166. package/hooks/scripts/sentinel-guard.js +104 -104
  167. package/hooks/scripts/session-start.js +106 -106
  168. package/hooks/scripts/stop-notify.js +209 -209
  169. package/hooks/scripts/utils.js +100 -100
  170. package/languages/csharp-unity.md +515 -515
  171. package/languages/gdscript-godot.md +470 -470
  172. package/languages/ruby-rails.md +489 -489
  173. package/languages/typescript-angular.md +433 -433
  174. package/languages/typescript-astro.md +416 -416
  175. package/languages/typescript-electron.md +406 -406
  176. package/languages/typescript-nestjs.md +524 -524
  177. package/languages/typescript-svelte.md +407 -407
  178. package/languages/typescript-tauri.md +365 -365
  179. package/package.json +123 -121
  180. package/skills/agents-md/SKILL.md +120 -120
  181. package/skills/arch-guard/SKILL.md +180 -180
  182. package/skills/brand-assets/SKILL.md +146 -146
  183. package/skills/capability-loop/SKILL.md +167 -167
  184. package/skills/characterization-test/SKILL.md +206 -206
  185. package/skills/commerce-patterns/SKILL.md +63 -63
  186. package/skills/commit-push-pr/SKILL.md +75 -75
  187. package/skills/context7-usage/SKILL.md +105 -105
  188. package/skills/core-capabilities/SKILL.md +13 -13
  189. package/skills/e2e-commerce/SKILL.md +61 -61
  190. package/skills/exec-plan/SKILL.md +147 -147
  191. package/skills/frontend-design/SKILL.md +12 -12
  192. package/skills/git-worktree/SKILL.md +72 -72
  193. package/skills/handoff/SKILL.md +109 -109
  194. package/skills/parallel-research/SKILL.md +87 -87
  195. package/skills/priority-todos/SKILL.md +63 -63
  196. package/skills/seo-checklist/SKILL.md +57 -57
  197. package/skills/techdebt/SKILL.md +122 -122
  198. package/skills/tool-fallback/SKILL.md +103 -103
  199. package/skills/typescript-advanced-types/SKILL.md +66 -66
  200. package/skills/ui-ux-pro-max/SKILL.md +221 -221
  201. package/skills/vercel-react-best-practices/SKILL.md +59 -59
  202. package/skills/video-production/SKILL.md +51 -51
  203. package/vibe/config.json +29 -29
  204. package/vibe/constitution.md +227 -227
  205. package/vibe/rules/principles/communication-guide.md +98 -98
  206. package/vibe/rules/principles/development-philosophy.md +52 -52
  207. package/vibe/rules/principles/quick-start.md +102 -102
  208. package/vibe/rules/quality/bdd-contract-testing.md +393 -393
  209. package/vibe/rules/quality/checklist.md +276 -276
  210. package/vibe/rules/quality/performance.md +236 -236
  211. package/vibe/rules/quality/testing-strategy.md +440 -440
  212. package/vibe/rules/standards/anti-patterns.md +541 -541
  213. package/vibe/rules/standards/code-structure.md +291 -291
  214. package/vibe/rules/standards/complexity-metrics.md +313 -313
  215. package/vibe/rules/standards/git-workflow.md +237 -237
  216. package/vibe/rules/standards/naming-conventions.md +198 -198
  217. package/vibe/rules/standards/security.md +305 -305
  218. package/vibe/rules/writing/document-style.md +74 -74
  219. package/vibe/setup.sh +31 -31
  220. package/vibe/templates/constitution-template.md +252 -252
  221. package/vibe/templates/contract-backend-template.md +526 -526
  222. package/vibe/templates/contract-frontend-template.md +599 -599
  223. package/vibe/templates/feature-template.md +96 -96
  224. package/vibe/templates/spec-template.md +221 -221
  225. package/vibe/ui-ux-data/charts.csv +26 -26
  226. package/vibe/ui-ux-data/colors.csv +97 -97
  227. package/vibe/ui-ux-data/icons.csv +101 -101
  228. package/vibe/ui-ux-data/landing.csv +31 -31
  229. package/vibe/ui-ux-data/products.csv +96 -96
  230. package/vibe/ui-ux-data/react-performance.csv +45 -45
  231. package/vibe/ui-ux-data/stacks/astro.csv +54 -54
  232. package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
  233. package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
  234. package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
  235. package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
  236. package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
  237. package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
  238. package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
  239. package/vibe/ui-ux-data/stacks/react.csv +54 -54
  240. package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
  241. package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
  242. package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
  243. package/vibe/ui-ux-data/stacks/vue.csv +50 -50
  244. package/vibe/ui-ux-data/styles.csv +68 -68
  245. package/vibe/ui-ux-data/typography.csv +57 -57
  246. package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
  247. package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
  248. package/vibe/ui-ux-data/version.json +31 -31
  249. package/vibe/ui-ux-data/web-interface.csv +31 -31
@@ -11,20 +11,20 @@ export class UsageTracker {
11
11
  this.initializeTables();
12
12
  }
13
13
  initializeTables() {
14
- this.db.exec(`
15
- CREATE TABLE IF NOT EXISTS usage_events (
16
- id TEXT PRIMARY KEY,
17
- generationId TEXT NOT NULL,
18
- sessionId TEXT,
19
- matchedPrompt TEXT,
20
- feedback TEXT CHECK(feedback IN ('positive','negative','neutral') OR feedback IS NULL),
21
- createdAt TEXT NOT NULL
22
- );
23
-
24
- CREATE INDEX IF NOT EXISTS idx_ue_gen ON usage_events(generationId);
25
- CREATE INDEX IF NOT EXISTS idx_ue_session ON usage_events(sessionId);
26
- CREATE INDEX IF NOT EXISTS idx_ue_feedback ON usage_events(feedback);
27
- CREATE INDEX IF NOT EXISTS idx_ue_created ON usage_events(createdAt);
14
+ this.db.exec(`
15
+ CREATE TABLE IF NOT EXISTS usage_events (
16
+ id TEXT PRIMARY KEY,
17
+ generationId TEXT NOT NULL,
18
+ sessionId TEXT,
19
+ matchedPrompt TEXT,
20
+ feedback TEXT CHECK(feedback IN ('positive','negative','neutral') OR feedback IS NULL),
21
+ createdAt TEXT NOT NULL
22
+ );
23
+
24
+ CREATE INDEX IF NOT EXISTS idx_ue_gen ON usage_events(generationId);
25
+ CREATE INDEX IF NOT EXISTS idx_ue_session ON usage_events(sessionId);
26
+ CREATE INDEX IF NOT EXISTS idx_ue_feedback ON usage_events(feedback);
27
+ CREATE INDEX IF NOT EXISTS idx_ue_created ON usage_events(createdAt);
28
28
  `);
29
29
  }
30
30
  /**
@@ -33,9 +33,9 @@ export class UsageTracker {
33
33
  recordUsage(generationId, sessionId, matchedPrompt) {
34
34
  const id = `ue-${Date.now().toString(36)}-${randomUUID().replace(/-/g, '').slice(0, 8)}`;
35
35
  const now = new Date().toISOString();
36
- this.db.prepare(`
37
- INSERT INTO usage_events (id, generationId, sessionId, matchedPrompt, createdAt)
38
- VALUES (?, ?, ?, ?, ?)
36
+ this.db.prepare(`
37
+ INSERT INTO usage_events (id, generationId, sessionId, matchedPrompt, createdAt)
38
+ VALUES (?, ?, ?, ?, ?)
39
39
  `).run(id, generationId, sessionId || null, matchedPrompt || null, now);
40
40
  // Also increment usage count in generations table
41
41
  this.registry.incrementUsage(generationId);
@@ -45,8 +45,8 @@ export class UsageTracker {
45
45
  * Record explicit user feedback for a usage event
46
46
  */
47
47
  setFeedback(eventId, feedback) {
48
- const result = this.db.prepare(`
49
- UPDATE usage_events SET feedback = ? WHERE id = ?
48
+ const result = this.db.prepare(`
49
+ UPDATE usage_events SET feedback = ? WHERE id = ?
50
50
  `).run(feedback, eventId);
51
51
  return result.changes > 0;
52
52
  }
@@ -54,8 +54,8 @@ export class UsageTracker {
54
54
  * Record explicit feedback for a generation (latest event)
55
55
  */
56
56
  setFeedbackForGeneration(generationId, feedback) {
57
- const event = this.db.prepare(`
58
- SELECT id FROM usage_events WHERE generationId = ? ORDER BY createdAt DESC LIMIT 1
57
+ const event = this.db.prepare(`
58
+ SELECT id FROM usage_events WHERE generationId = ? ORDER BY createdAt DESC LIMIT 1
59
59
  `).get(generationId);
60
60
  if (!event)
61
61
  return false;
@@ -76,9 +76,9 @@ export class UsageTracker {
76
76
  feedback = 'neutral';
77
77
  }
78
78
  // Only apply to events without explicit feedback
79
- const result = this.db.prepare(`
80
- UPDATE usage_events SET feedback = ?
81
- WHERE sessionId = ? AND feedback IS NULL
79
+ const result = this.db.prepare(`
80
+ UPDATE usage_events SET feedback = ?
81
+ WHERE sessionId = ? AND feedback IS NULL
82
82
  `).run(feedback, sessionId);
83
83
  return result.changes;
84
84
  }
@@ -86,8 +86,8 @@ export class UsageTracker {
86
86
  * Get usage events for a generation
87
87
  */
88
88
  getByGeneration(generationId) {
89
- const rows = this.db.prepare(`
90
- SELECT * FROM usage_events WHERE generationId = ? ORDER BY createdAt DESC
89
+ const rows = this.db.prepare(`
90
+ SELECT * FROM usage_events WHERE generationId = ? ORDER BY createdAt DESC
91
91
  `).all(generationId);
92
92
  return rows.map(this.rowToEvent);
93
93
  }
@@ -138,8 +138,8 @@ export class UsageTracker {
138
138
  * Get total usage count for a generation
139
139
  */
140
140
  getUsageCount(generationId) {
141
- const result = this.db.prepare(`
142
- SELECT COUNT(*) as cnt FROM usage_events WHERE generationId = ?
141
+ const result = this.db.prepare(`
142
+ SELECT COUNT(*) as cnt FROM usage_events WHERE generationId = ?
143
143
  `).get(generationId);
144
144
  return result.cnt;
145
145
  }
@@ -28,35 +28,35 @@ export async function coreGeminiOrchestrate(prompt, systemPrompt, options = {})
28
28
  * Core Spec 파싱 (Core Spec → 실행 계획)
29
29
  */
30
30
  export async function coreGeminiParseSpec(spec) {
31
- return coreGeminiOrchestrate(spec, `You are a Core Spec parser. Parse the given specification and output a structured execution plan.
31
+ return coreGeminiOrchestrate(spec, `You are a Core Spec parser. Parse the given specification and output a structured execution plan.
32
32
  Output format: { "phases": [...], "files": [...], "dependencies": [...] }`);
33
33
  }
34
34
  /**
35
35
  * Core 실행 계획 수립 (Task → Steps)
36
36
  */
37
37
  export async function coreGeminiPlanExecution(task, context) {
38
- return coreGeminiOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Core execution planner. Given a task and context, create a step-by-step execution plan.
38
+ return coreGeminiOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Core execution planner. Given a task and context, create a step-by-step execution plan.
39
39
  Output format: { "steps": [{ "id": 1, "action": "...", "target": "...", "expected": "..." }], "estimatedComplexity": "low|medium|high" }`);
40
40
  }
41
41
  /**
42
42
  * Core 코드 분석 (빠른 구조 분석)
43
43
  */
44
44
  export async function coreGeminiAnalyze(code, question) {
45
- return coreGeminiOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
45
+ return coreGeminiOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
46
46
  Output format: { "answer": "...", "confidence": 0.0-1.0, "relatedSymbols": [...] }`);
47
47
  }
48
48
  /**
49
49
  * Core 다음 액션 결정 (상태 기반)
50
50
  */
51
51
  export async function coreGeminiDecideNextAction(currentState, availableActions, goal) {
52
- return coreGeminiOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
52
+ return coreGeminiOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
53
53
  Output format: { "selectedAction": "...", "reason": "...", "parameters": {} }`);
54
54
  }
55
55
  /**
56
56
  * Core UI/UX 분석 (검색 없이 내부 지식으로)
57
57
  */
58
58
  export async function coreGeminiAnalyzeUX(description) {
59
- return coreGeminiOrchestrate(description, `You are a UI/UX expert. Analyze the given design description and provide structured feedback.
59
+ return coreGeminiOrchestrate(description, `You are a UI/UX expert. Analyze the given design description and provide structured feedback.
60
60
  Output format: { "issues": [...], "suggestions": [...], "accessibility": { "score": 0-100, "concerns": [...] } }`, { jsonMode: true });
61
61
  }
62
62
  //# sourceMappingURL=orchestration.js.map
@@ -25,28 +25,28 @@ export async function coreGptOrchestrate(prompt, systemPrompt, options = {}) {
25
25
  * Core Spec 파싱 (Core Spec → 실행 계획)
26
26
  */
27
27
  export async function coreGptParseSpec(spec) {
28
- return coreGptOrchestrate(spec, `You are a Core Spec parser. Parse the given specification and output a structured execution plan.
28
+ return coreGptOrchestrate(spec, `You are a Core Spec parser. Parse the given specification and output a structured execution plan.
29
29
  Output format: { "phases": [...], "files": [...], "dependencies": [...] }`);
30
30
  }
31
31
  /**
32
32
  * Core 실행 계획 수립 (Task → Steps)
33
33
  */
34
34
  export async function coreGptPlanExecution(task, context) {
35
- return coreGptOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Core execution planner. Given a task and context, create a step-by-step execution plan.
35
+ return coreGptOrchestrate(`Task: ${task}\n\nContext:\n${context}`, `You are a Core execution planner. Given a task and context, create a step-by-step execution plan.
36
36
  Output format: { "steps": [{ "id": 1, "action": "...", "target": "...", "expected": "..." }], "estimatedComplexity": "low|medium|high" }`);
37
37
  }
38
38
  /**
39
39
  * Core 코드 분석 (빠른 구조 분석)
40
40
  */
41
41
  export async function coreGptAnalyze(code, question) {
42
- return coreGptOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
42
+ return coreGptOrchestrate(`Code:\n\`\`\`\n${code}\n\`\`\`\n\nQuestion: ${question}`, `You are a code analyzer. Answer the question about the given code concisely.
43
43
  Output format: { "answer": "...", "confidence": 0.0-1.0, "relatedSymbols": [...] }`);
44
44
  }
45
45
  /**
46
46
  * Core 다음 액션 결정 (상태 기반)
47
47
  */
48
48
  export async function coreGptDecideNextAction(currentState, availableActions, goal) {
49
- return coreGptOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
49
+ return coreGptOrchestrate(`Current State:\n${currentState}\n\nAvailable Actions:\n${availableActions.join('\n')}\n\nGoal: ${goal}`, `You are an action decider. Based on the current state and goal, select the best next action.
50
50
  Output format: { "selectedAction": "...", "reason": "...", "parameters": {} }`);
51
51
  }
52
52
  //# sourceMappingURL=orchestration.js.map
@@ -14,10 +14,10 @@ export class KnowledgeGraph {
14
14
  const timestamp = new Date().toISOString();
15
15
  const metadataJson = metadata ? JSON.stringify(metadata) : null;
16
16
  try {
17
- const stmt = this.db.prepare(`
18
- INSERT OR REPLACE INTO memory_relations
19
- (sourceKey, targetKey, relationType, strength, metadata, timestamp)
20
- VALUES (?, ?, ?, ?, ?, ?)
17
+ const stmt = this.db.prepare(`
18
+ INSERT OR REPLACE INTO memory_relations
19
+ (sourceKey, targetKey, relationType, strength, metadata, timestamp)
20
+ VALUES (?, ?, ?, ?, ?, ?)
21
21
  `);
22
22
  stmt.run(sourceKey, targetKey, relationType, strength, metadataJson, timestamp);
23
23
  return true;
@@ -62,22 +62,22 @@ export class MemorySearch {
62
62
  return this.searchKeywordLike(query, limit, category);
63
63
  }
64
64
  if (category) {
65
- const stmt = this.db.prepare(`
66
- SELECT m.*, bm25(memories_fts) as rank
67
- FROM memories_fts fts
68
- JOIN memories m ON m.rowid = fts.rowid
69
- WHERE memories_fts MATCH ? AND m.category = ?
70
- ORDER BY rank
71
- LIMIT ?
65
+ const stmt = this.db.prepare(`
66
+ SELECT m.*, bm25(memories_fts) as rank
67
+ FROM memories_fts fts
68
+ JOIN memories m ON m.rowid = fts.rowid
69
+ WHERE memories_fts MATCH ? AND m.category = ?
70
+ ORDER BY rank
71
+ LIMIT ?
72
72
  `);
73
73
  return stmt.all(MemoryStorage.sanitizeFTS5Query(query), category, limit);
74
74
  }
75
75
  return this.storage.searchFTS(query, limit);
76
76
  }
77
77
  searchKeywordLike(query, limit, category) {
78
- let sql = `
79
- SELECT * FROM memories
80
- WHERE (key LIKE ? OR value LIKE ?)
78
+ let sql = `
79
+ SELECT * FROM memories
80
+ WHERE (key LIKE ? OR value LIKE ?)
81
81
  `;
82
82
  const params = [`%${query}%`, `%${query}%`];
83
83
  if (category) {
@@ -89,20 +89,20 @@ export class MemorySearch {
89
89
  return this.db.prepare(sql).all(...params);
90
90
  }
91
91
  searchTemporal(query, limit) {
92
- const sql = `
93
- SELECT * FROM memories
94
- WHERE key LIKE ? OR value LIKE ?
95
- ORDER BY timestamp DESC
96
- LIMIT ?
92
+ const sql = `
93
+ SELECT * FROM memories
94
+ WHERE key LIKE ? OR value LIKE ?
95
+ ORDER BY timestamp DESC
96
+ LIMIT ?
97
97
  `;
98
98
  return this.db.prepare(sql).all(`%${query}%`, `%${query}%`, limit);
99
99
  }
100
100
  searchByPriority(query, limit) {
101
- const sql = `
102
- SELECT * FROM memories
103
- WHERE key LIKE ? OR value LIKE ?
104
- ORDER BY priority DESC, lastAccessed DESC
105
- LIMIT ?
101
+ const sql = `
102
+ SELECT * FROM memories
103
+ WHERE key LIKE ? OR value LIKE ?
104
+ ORDER BY priority DESC, lastAccessed DESC
105
+ LIMIT ?
106
106
  `;
107
107
  return this.db.prepare(sql).all(`%${query}%`, `%${query}%`, limit);
108
108
  }
@@ -113,26 +113,26 @@ export class MemorySearch {
113
113
  let sql;
114
114
  const params = [];
115
115
  if (category) {
116
- sql = `
117
- SELECT m.*,
118
- (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
119
- FROM memories_fts fts
120
- JOIN memories m ON m.rowid = fts.rowid
121
- WHERE memories_fts MATCH ? AND m.category = ?
122
- ORDER BY relevance_score DESC, m.lastAccessed DESC
123
- LIMIT ?
116
+ sql = `
117
+ SELECT m.*,
118
+ (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
119
+ FROM memories_fts fts
120
+ JOIN memories m ON m.rowid = fts.rowid
121
+ WHERE memories_fts MATCH ? AND m.category = ?
122
+ ORDER BY relevance_score DESC, m.lastAccessed DESC
123
+ LIMIT ?
124
124
  `;
125
125
  params.push(MemoryStorage.sanitizeFTS5Query(query), category, limit);
126
126
  }
127
127
  else {
128
- sql = `
129
- SELECT m.*,
130
- (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
131
- FROM memories_fts fts
132
- JOIN memories m ON m.rowid = fts.rowid
133
- WHERE memories_fts MATCH ?
134
- ORDER BY relevance_score DESC, m.lastAccessed DESC
135
- LIMIT ?
128
+ sql = `
129
+ SELECT m.*,
130
+ (bm25(memories_fts) * -1 + m.priority * 0.5) as relevance_score
131
+ FROM memories_fts fts
132
+ JOIN memories m ON m.rowid = fts.rowid
133
+ WHERE memories_fts MATCH ?
134
+ ORDER BY relevance_score DESC, m.lastAccessed DESC
135
+ LIMIT ?
136
136
  `;
137
137
  params.push(MemoryStorage.sanitizeFTS5Query(query), limit);
138
138
  }
@@ -145,13 +145,13 @@ export class MemorySearch {
145
145
  }
146
146
  }
147
147
  // LIKE-based fallback
148
- let sql = `
149
- SELECT *,
150
- (CASE WHEN key LIKE ? THEN 3 ELSE 0 END +
151
- CASE WHEN value LIKE ? THEN 2 ELSE 0 END +
152
- priority * 0.5) as relevance_score
153
- FROM memories
154
- WHERE key LIKE ? OR value LIKE ?
148
+ let sql = `
149
+ SELECT *,
150
+ (CASE WHEN key LIKE ? THEN 3 ELSE 0 END +
151
+ CASE WHEN value LIKE ? THEN 2 ELSE 0 END +
152
+ priority * 0.5) as relevance_score
153
+ FROM memories
154
+ WHERE key LIKE ? OR value LIKE ?
155
155
  `;
156
156
  const params = [`%${query}%`, `%${query}%`, `%${query}%`, `%${query}%`];
157
157
  if (category) {
@@ -247,24 +247,24 @@ export class MemorySearch {
247
247
  let sql;
248
248
  const params = [];
249
249
  if (category) {
250
- sql = `
251
- SELECT m.key, bm25(memories_fts) as rank
252
- FROM memories_fts fts
253
- JOIN memories m ON m.rowid = fts.rowid
254
- WHERE memories_fts MATCH ? AND m.category = ?
255
- ORDER BY rank
256
- LIMIT ?
250
+ sql = `
251
+ SELECT m.key, bm25(memories_fts) as rank
252
+ FROM memories_fts fts
253
+ JOIN memories m ON m.rowid = fts.rowid
254
+ WHERE memories_fts MATCH ? AND m.category = ?
255
+ ORDER BY rank
256
+ LIMIT ?
257
257
  `;
258
258
  params.push(MemoryStorage.sanitizeFTS5Query(query), category, limit);
259
259
  }
260
260
  else {
261
- sql = `
262
- SELECT m.key, bm25(memories_fts) as rank
263
- FROM memories_fts fts
264
- JOIN memories m ON m.rowid = fts.rowid
265
- WHERE memories_fts MATCH ?
266
- ORDER BY rank
267
- LIMIT ?
261
+ sql = `
262
+ SELECT m.key, bm25(memories_fts) as rank
263
+ FROM memories_fts fts
264
+ JOIN memories m ON m.rowid = fts.rowid
265
+ WHERE memories_fts MATCH ?
266
+ ORDER BY rank
267
+ LIMIT ?
268
268
  `;
269
269
  params.push(MemoryStorage.sanitizeFTS5Query(query), limit);
270
270
  }