maskweaver 0.9.4 β†’ 0.9.6

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 (229) hide show
  1. package/README.ko.md +638 -592
  2. package/README.md +671 -667
  3. package/dist/cli/doctor.js +5 -21
  4. package/dist/cli/install.d.ts +0 -8
  5. package/dist/cli/install.js +0 -39
  6. package/dist/context/config.d.ts +0 -22
  7. package/dist/context/config.js +0 -28
  8. package/dist/context/feature.d.ts +0 -39
  9. package/dist/context/feature.js +0 -77
  10. package/dist/context/files.d.ts +0 -13
  11. package/dist/context/files.js +1 -24
  12. package/dist/context/index.d.ts +0 -7
  13. package/dist/context/index.js +0 -12
  14. package/dist/context/project.d.ts +0 -21
  15. package/dist/context/project.js +0 -30
  16. package/dist/context/types.d.ts +0 -48
  17. package/dist/context/types.js +0 -12
  18. package/dist/context/utils.d.ts +0 -18
  19. package/dist/context/utils.js +0 -27
  20. package/dist/core/engine/promptBuilder.d.ts +0 -17
  21. package/dist/core/engine/promptBuilder.js +0 -28
  22. package/dist/core/index.d.ts +0 -6
  23. package/dist/core/index.js +0 -9
  24. package/dist/core/loader/MaskLoader.d.ts +0 -23
  25. package/dist/core/loader/MaskLoader.js +0 -29
  26. package/dist/core/schema/types.d.ts +0 -47
  27. package/dist/core/schema/types.js +0 -6
  28. package/dist/core/schema/validator.d.ts +0 -14
  29. package/dist/core/schema/validator.js +0 -18
  30. package/dist/i18n/index.d.ts +0 -18
  31. package/dist/i18n/index.js +4 -23
  32. package/dist/index.d.ts +0 -8
  33. package/dist/index.js +0 -8
  34. package/dist/lib.d.ts +0 -5
  35. package/dist/lib.js +0 -12
  36. package/dist/memory/chunking.d.ts +0 -22
  37. package/dist/memory/chunking.js +2 -37
  38. package/dist/memory/core.d.ts +0 -29
  39. package/dist/memory/core.js +1 -52
  40. package/dist/memory/index.d.ts +0 -5
  41. package/dist/memory/index.js +0 -10
  42. package/dist/memory/indexer.d.ts +0 -21
  43. package/dist/memory/indexer.js +0 -44
  44. package/dist/memory/providers/examples.d.ts +0 -5
  45. package/dist/memory/providers/examples.js +4 -64
  46. package/dist/memory/providers/factory.d.ts +0 -44
  47. package/dist/memory/providers/factory.js +0 -46
  48. package/dist/memory/providers/index.d.ts +0 -26
  49. package/dist/memory/providers/index.js +0 -28
  50. package/dist/memory/providers/ollama.d.ts +0 -6
  51. package/dist/memory/providers/ollama.js +1 -8
  52. package/dist/memory/providers/openai.d.ts +0 -6
  53. package/dist/memory/providers/openai.js +1 -8
  54. package/dist/memory/providers/openrouter.d.ts +0 -6
  55. package/dist/memory/providers/openrouter.js +0 -8
  56. package/dist/memory/providers/text-only.d.ts +0 -13
  57. package/dist/memory/providers/text-only.js +0 -17
  58. package/dist/memory/providers/types.d.ts +0 -39
  59. package/dist/memory/providers/types.js +0 -7
  60. package/dist/memory/providers/voyage.d.ts +0 -22
  61. package/dist/memory/providers/voyage.js +1 -24
  62. package/dist/memory/search/hybrid.d.ts +0 -12
  63. package/dist/memory/search/hybrid.js +1 -22
  64. package/dist/memory/store/sqlite.d.ts +0 -72
  65. package/dist/memory/store/sqlite.js +4 -127
  66. package/dist/plugin/config/index.d.ts +0 -112
  67. package/dist/plugin/config/index.js +0 -115
  68. package/dist/plugin/index.d.ts +0 -13
  69. package/dist/plugin/index.js +1 -123
  70. package/dist/plugin/tools/command-registry.d.ts +0 -6
  71. package/dist/plugin/tools/command-registry.js +0 -14
  72. package/dist/plugin/tools/context.d.ts +0 -12
  73. package/dist/plugin/tools/context.js +0 -58
  74. package/dist/plugin/tools/maskSave.d.ts +0 -3
  75. package/dist/plugin/tools/maskSave.js +0 -3
  76. package/dist/plugin/tools/memoryGet.d.ts +0 -3
  77. package/dist/plugin/tools/memoryGet.js +0 -3
  78. package/dist/plugin/tools/memoryIndexer.d.ts +0 -3
  79. package/dist/plugin/tools/memoryIndexer.js +0 -10
  80. package/dist/plugin/tools/memorySearch.d.ts +0 -31
  81. package/dist/plugin/tools/memorySearch.js +0 -79
  82. package/dist/plugin/tools/memoryWrite.d.ts +0 -8
  83. package/dist/plugin/tools/memoryWrite.js +0 -32
  84. package/dist/plugin/tools/retrospect.d.ts +0 -3
  85. package/dist/plugin/tools/retrospect.js +0 -3
  86. package/dist/plugin/tools/slashcommand.d.ts +0 -11
  87. package/dist/plugin/tools/slashcommand.js +0 -38
  88. package/dist/plugin/tools/squad.d.ts +0 -12
  89. package/dist/plugin/tools/squad.js +11 -83
  90. package/dist/plugin/tools/weave.d.ts +0 -6
  91. package/dist/plugin/tools/weave.js +0 -78
  92. package/dist/plugin/types.d.ts +0 -20
  93. package/dist/plugin/types.js +0 -7
  94. package/dist/retrospect/index.d.ts +0 -7
  95. package/dist/retrospect/index.js +0 -9
  96. package/dist/retrospect/mask-save.d.ts +0 -12
  97. package/dist/retrospect/mask-save.js +1 -80
  98. package/dist/retrospect/retrospect.d.ts +0 -18
  99. package/dist/retrospect/retrospect.js +0 -63
  100. package/dist/retrospect/strategies/base.d.ts +0 -15
  101. package/dist/retrospect/strategies/base.js +0 -7
  102. package/dist/retrospect/strategies/deep.d.ts +0 -12
  103. package/dist/retrospect/strategies/deep.js +0 -24
  104. package/dist/retrospect/strategies/index.d.ts +0 -12
  105. package/dist/retrospect/strategies/index.js +0 -12
  106. package/dist/retrospect/strategies/quick.d.ts +0 -12
  107. package/dist/retrospect/strategies/quick.js +0 -19
  108. package/dist/retrospect/strategies/standard.d.ts +0 -12
  109. package/dist/retrospect/strategies/standard.js +0 -15
  110. package/dist/retrospect/types.d.ts +0 -7
  111. package/dist/retrospect/types.js +0 -7
  112. package/dist/shared/config.d.ts +0 -105
  113. package/dist/shared/config.js +0 -33
  114. package/dist/shared/errors.d.ts +0 -18
  115. package/dist/shared/errors.js +0 -19
  116. package/dist/shared/generate-agents.d.ts +0 -69
  117. package/dist/shared/generate-agents.js +2 -86
  118. package/dist/shared/image.d.ts +0 -67
  119. package/dist/shared/image.js +6 -104
  120. package/dist/shared/index.d.ts +0 -5
  121. package/dist/shared/index.js +0 -7
  122. package/dist/shared/model-registry.d.ts +0 -72
  123. package/dist/shared/model-registry.js +5 -95
  124. package/dist/shared/types.d.ts +0 -15
  125. package/dist/shared/types.js +0 -3
  126. package/dist/shared-context/dag.d.ts +0 -105
  127. package/dist/shared-context/dag.js +3 -114
  128. package/dist/shared-context/index.d.ts +0 -5
  129. package/dist/shared-context/index.js +0 -15
  130. package/dist/shared-context/logger.d.ts +0 -37
  131. package/dist/shared-context/logger.js +0 -41
  132. package/dist/shared-context/parallel-executor.d.ts +0 -54
  133. package/dist/shared-context/parallel-executor.js +4 -56
  134. package/dist/shared-context/session.d.ts +0 -56
  135. package/dist/shared-context/session.js +0 -47
  136. package/dist/shared-context/squad.d.ts +0 -68
  137. package/dist/shared-context/squad.js +0 -63
  138. package/dist/shared-context/storage.d.ts +0 -132
  139. package/dist/shared-context/storage.js +0 -116
  140. package/dist/shared-context/task.d.ts +0 -120
  141. package/dist/shared-context/task.js +0 -152
  142. package/dist/shared-context/test/dag.test.js +9 -14
  143. package/dist/shared-context/test/logger.test.d.ts +0 -8
  144. package/dist/shared-context/test/logger.test.js +0 -52
  145. package/dist/shared-context/test/session.test.d.ts +0 -7
  146. package/dist/shared-context/test/session.test.js +0 -63
  147. package/dist/shared-context/test/squad.test.d.ts +0 -10
  148. package/dist/shared-context/test/squad.test.js +2 -68
  149. package/dist/shared-context/test/storage.test.d.ts +0 -8
  150. package/dist/shared-context/test/storage.test.js +0 -68
  151. package/dist/shared-context/test/task.test.d.ts +0 -7
  152. package/dist/shared-context/test/task.test.js +0 -54
  153. package/dist/shared-context/test/watchdog.test.d.ts +0 -7
  154. package/dist/shared-context/test/watchdog.test.js +3 -58
  155. package/dist/shared-context/types.d.ts +0 -215
  156. package/dist/shared-context/types.js +0 -125
  157. package/dist/shared-context/watchdog.d.ts +0 -127
  158. package/dist/shared-context/watchdog.js +0 -148
  159. package/dist/shared-context/worktree.d.ts +0 -68
  160. package/dist/shared-context/worktree.js +2 -34
  161. package/dist/verify/budget.d.ts +0 -29
  162. package/dist/verify/budget.js +0 -34
  163. package/dist/verify/critical-files.d.ts +0 -17
  164. package/dist/verify/critical-files.js +0 -37
  165. package/dist/verify/escalation.d.ts +0 -20
  166. package/dist/verify/escalation.js +0 -22
  167. package/dist/verify/index.d.ts +0 -5
  168. package/dist/verify/index.js +0 -11
  169. package/dist/verify/prompts.d.ts +0 -20
  170. package/dist/verify/prompts.js +0 -20
  171. package/dist/verify/types.d.ts +0 -26
  172. package/dist/verify/types.js +1 -12
  173. package/dist/verify/verifier.d.ts +0 -29
  174. package/dist/verify/verifier.js +0 -54
  175. package/dist/version.d.ts +1 -16
  176. package/dist/version.js +1 -16
  177. package/dist/weave/bridge.d.ts +0 -35
  178. package/dist/weave/bridge.js +0 -51
  179. package/dist/weave/environment/detector.d.ts +0 -6
  180. package/dist/weave/environment/detector.js +4 -45
  181. package/dist/weave/environment/index.d.ts +0 -19
  182. package/dist/weave/environment/index.js +1 -39
  183. package/dist/weave/environment/issues.d.ts +0 -35
  184. package/dist/weave/environment/issues.js +0 -59
  185. package/dist/weave/git.d.ts +0 -8
  186. package/dist/weave/git.js +0 -8
  187. package/dist/weave/index.d.ts +0 -13
  188. package/dist/weave/index.js +2 -28
  189. package/dist/weave/knowledge/global.d.ts +0 -39
  190. package/dist/weave/knowledge/global.js +2 -78
  191. package/dist/weave/loop.js +0 -3
  192. package/dist/weave/orchestrator.d.ts +0 -69
  193. package/dist/weave/orchestrator.js +1 -101
  194. package/dist/weave/phase-manager.d.ts +0 -64
  195. package/dist/weave/phase-manager.js +0 -89
  196. package/dist/weave/security/secret-scan.d.ts +0 -14
  197. package/dist/weave/security/secret-scan.js +0 -19
  198. package/dist/weave/stages/build.js +0 -15
  199. package/dist/weave/stages/execute.d.ts +0 -42
  200. package/dist/weave/stages/execute.js +4 -86
  201. package/dist/weave/stages/handoff.d.ts +0 -7
  202. package/dist/weave/stages/handoff.js +0 -43
  203. package/dist/weave/stages/index.d.ts +0 -3
  204. package/dist/weave/stages/index.js +0 -3
  205. package/dist/weave/stages/intake.d.ts +0 -8
  206. package/dist/weave/stages/intake.js +5 -65
  207. package/dist/weave/stages/map.d.ts +0 -1
  208. package/dist/weave/stages/openspec.d.ts +0 -1
  209. package/dist/weave/stages/plan.d.ts +0 -11
  210. package/dist/weave/stages/plan.js +1 -53
  211. package/dist/weave/stages/refine.d.ts +0 -7
  212. package/dist/weave/stages/refine.js +0 -7
  213. package/dist/weave/stages/research.d.ts +0 -6
  214. package/dist/weave/stages/research.js +0 -6
  215. package/dist/weave/stages/spec.d.ts +0 -12
  216. package/dist/weave/stages/spec.js +0 -17
  217. package/dist/weave/types.d.ts +0 -20
  218. package/dist/weave/types.js +0 -5
  219. package/dist/weave/verification/commands.d.ts +0 -12
  220. package/dist/weave/verification/commands.js +0 -19
  221. package/dist/weave/verification/index.d.ts +0 -6
  222. package/dist/weave/verification/index.js +1 -19
  223. package/dist/weave/verification/playwright.d.ts +0 -47
  224. package/dist/weave/verification/playwright.js +1 -90
  225. package/dist/weave/worktree.d.ts +0 -16
  226. package/dist/weave/worktree.js +0 -23
  227. package/dist/weave/yaml-repair.d.ts +0 -39
  228. package/dist/weave/yaml-repair.js +13 -116
  229. package/package.json +1 -1
@@ -1,24 +1,4 @@
1
- /**
2
- * Weave-Squad Bridge
3
- *
4
- * Converts between Weave types (WeaveTask, WeavePhase) and Squad types (TaskState)
5
- * to enable parallel execution of Weave phase tasks through the Squad system.
6
- *
7
- * This is the missing link between the two systems:
8
- * - Weave: Project-level milestone tracking (YAML plans)
9
- * - Squad: Multi-agent parallel execution (JSON sessions)
10
- */
11
1
  import { buildDAG } from '../shared-context/dag.js';
12
- // ============================================================================
13
- // WeaveTask -> TaskState Conversion
14
- // ============================================================================
15
- /**
16
- * Convert a WeaveTask to a TaskState for use in the Squad system.
17
- * Maps Weave concepts to Squad concepts:
18
- * - WeaveTask.id -> TaskState.taskId
19
- * - WeaveTask.status -> TaskState.status (with mapping)
20
- * - Complexity -> TaskState.priority
21
- */
22
2
  export function weaveTaskToSquadTask(task, options) {
23
3
  return {
24
4
  taskId: task.id,
@@ -30,9 +10,6 @@ export function weaveTaskToSquadTask(task, options) {
30
10
  createdAt: new Date().toISOString(),
31
11
  };
32
12
  }
33
- /**
34
- * Map Weave task status to Squad task status.
35
- */
36
13
  function mapWeaveStatusToSquad(weaveStatus) {
37
14
  switch (weaveStatus) {
38
15
  case 'pending': return 'pending';
@@ -41,9 +18,6 @@ function mapWeaveStatusToSquad(weaveStatus) {
41
18
  case 'failed': return 'failed';
42
19
  }
43
20
  }
44
- /**
45
- * Map TaskComplexity to Squad Priority.
46
- */
47
21
  export function complexityToPriority(complexity) {
48
22
  switch (complexity) {
49
23
  case 'simple': return 'low';
@@ -51,13 +25,6 @@ export function complexityToPriority(complexity) {
51
25
  case 'complex': return 'high';
52
26
  }
53
27
  }
54
- // ============================================================================
55
- // Phase -> Squad Task List Conversion
56
- // ============================================================================
57
- /**
58
- * Convert a PhaseExecutionPlan into a list of TaskStates for the Squad system.
59
- * Each TaskExecutionPlan determines the assignee (agent tier) and priority.
60
- */
61
28
  export function executionPlanToSquadTasks(plan) {
62
29
  return plan.taskPlans.map(tp => weaveTaskToSquadTask(tp.task, {
63
30
  assignee: tp.agentTier,
@@ -65,24 +32,11 @@ export function executionPlanToSquadTasks(plan) {
65
32
  dependencies: tp.task.dependsOn || [],
66
33
  }));
67
34
  }
68
- // ============================================================================
69
- // Parallel Execution Analysis
70
- // ============================================================================
71
- /**
72
- * Analyze a PhaseExecutionPlan for parallel execution opportunities.
73
- *
74
- * Uses task-level dependencies when available (`task.dependsOn`).
75
- * If there are no explicit dependencies, tasks are treated as fully parallel.
76
- *
77
- * Returns DAG analysis with wave grouping for parallel execution.
78
- */
79
35
  export function analyzeParallelOpportunities(plan) {
80
36
  const squadTasks = executionPlanToSquadTasks(plan);
81
- // If no dependencies, all tasks are in wave 0 (fully parallel)
82
37
  const allIndependent = squadTasks.every(t => !t.dependencies || t.dependencies.length === 0);
83
38
  let dagAnalysis;
84
39
  if (allIndependent && squadTasks.length > 1) {
85
- // All tasks are independent β€” one big parallel wave
86
40
  dagAnalysis = {
87
41
  nodes: new Map(),
88
42
  waves: [{ waveIndex: 0, taskIds: squadTasks.map(t => t.taskId) }],
@@ -92,10 +46,8 @@ export function analyzeParallelOpportunities(plan) {
92
46
  };
93
47
  }
94
48
  else {
95
- // Use DAG analysis for dependency-aware wave grouping
96
49
  dagAnalysis = buildDAG(squadTasks);
97
50
  }
98
- // Map waves back to execution plans
99
51
  const waveDetails = dagAnalysis.waves.map(wave => ({
100
52
  waveIndex: wave.waveIndex,
101
53
  tasks: wave.taskIds.map(taskId => {
@@ -112,9 +64,6 @@ export function analyzeParallelOpportunities(plan) {
112
64
  criticalPath: dagAnalysis.criticalPath,
113
65
  };
114
66
  }
115
- /**
116
- * Format parallel analysis as markdown for the Mask Weaver.
117
- */
118
67
  export function formatParallelAnalysis(analysis) {
119
68
  const lines = [];
120
69
  lines.push('### Parallel Execution Analysis');
@@ -1,9 +1,3 @@
1
- /**
2
- * Environment Detector
3
- *
4
- * Proactive environment analysis for Weave workflow.
5
- * Detects OS, shell, runtime versions, and project tech stack.
6
- */
7
1
  import type { EnvironmentContext } from '../types.js';
8
2
  export declare function detectOS(): EnvironmentContext['os'];
9
3
  export declare function detectShell(): EnvironmentContext['shell'];
@@ -1,16 +1,7 @@
1
- /**
2
- * Environment Detector
3
- *
4
- * Proactive environment analysis for Weave workflow.
5
- * Detects OS, shell, runtime versions, and project tech stack.
6
- */
7
1
  import * as os from 'node:os';
8
2
  import * as fs from 'node:fs';
9
3
  import * as path from 'node:path';
10
4
  import { execSync } from 'node:child_process';
11
- // ============================================================================
12
- // OS Detection
13
- // ============================================================================
14
5
  export function detectOS() {
15
6
  const platform = os.platform();
16
7
  switch (platform) {
@@ -21,34 +12,26 @@ export function detectOS() {
21
12
  case 'linux':
22
13
  return 'linux';
23
14
  default:
24
- return 'linux'; // Default fallback
15
+ return 'linux';
25
16
  }
26
17
  }
27
- // ============================================================================
28
- // Shell Detection
29
- // ============================================================================
30
18
  export function detectShell() {
31
19
  const currentOS = detectOS();
32
20
  if (currentOS === 'windows') {
33
- // Check environment variables for shell hints
34
21
  const comspec = process.env.COMSPEC || '';
35
22
  const psModulePath = process.env.PSModulePath;
36
23
  const shellEnv = process.env.SHELL || '';
37
- // PowerShell detection
38
24
  if (psModulePath || process.env.PSExecutionPolicyPreference) {
39
25
  return 'powershell';
40
26
  }
41
- // Git Bash or WSL bash
42
27
  if (shellEnv.includes('bash')) {
43
28
  return 'bash';
44
29
  }
45
- // CMD fallback
46
30
  if (comspec.toLowerCase().includes('cmd.exe')) {
47
31
  return 'cmd';
48
32
  }
49
- return 'powershell'; // Default for Windows
33
+ return 'powershell';
50
34
  }
51
- // Unix-like systems
52
35
  const shell = process.env.SHELL || '';
53
36
  if (shell.includes('zsh')) {
54
37
  return 'zsh';
@@ -56,14 +39,11 @@ export function detectShell() {
56
39
  if (shell.includes('bash')) {
57
40
  return 'bash';
58
41
  }
59
- return 'bash'; // Default for Unix
42
+ return 'bash';
60
43
  }
61
- // ============================================================================
62
- // Runtime Version Detection
63
- // ============================================================================
64
44
  export function detectNodeVersion() {
65
45
  try {
66
- return process.version; // e.g., "v20.10.0"
46
+ return process.version;
67
47
  }
68
48
  catch {
69
49
  return 'unknown';
@@ -71,11 +51,9 @@ export function detectNodeVersion() {
71
51
  }
72
52
  export function detectBunVersion() {
73
53
  try {
74
- // Check if running in Bun
75
54
  if (globalThis.Bun) {
76
55
  return globalThis.Bun.version;
77
56
  }
78
- // Try to detect installed bun
79
57
  const output = execSync('bun --version', {
80
58
  encoding: 'utf-8',
81
59
  timeout: 5000,
@@ -87,11 +65,7 @@ export function detectBunVersion() {
87
65
  return undefined;
88
66
  }
89
67
  }
90
- // ============================================================================
91
- // Package Manager Detection
92
- // ============================================================================
93
68
  export function detectPackageManager(projectPath) {
94
- // Check lockfiles (order matters - most specific first)
95
69
  const lockfiles = [
96
70
  { file: 'bun.lockb', manager: 'bun' },
97
71
  { file: 'pnpm-lock.yaml', manager: 'pnpm' },
@@ -103,7 +77,6 @@ export function detectPackageManager(projectPath) {
103
77
  return manager;
104
78
  }
105
79
  }
106
- // Check packageManager field in package.json
107
80
  try {
108
81
  const pkgPath = path.join(projectPath, 'package.json');
109
82
  if (fs.existsSync(pkgPath)) {
@@ -117,12 +90,10 @@ export function detectPackageManager(projectPath) {
117
90
  }
118
91
  }
119
92
  catch {
120
- // Ignore parse errors
121
93
  }
122
94
  return 'unknown';
123
95
  }
124
96
  const STACK_DETECTIONS = [
125
- // Frameworks
126
97
  { name: 'Next.js', patterns: { dependencies: ['next'] } },
127
98
  { name: 'React', patterns: { dependencies: ['react'] } },
128
99
  { name: 'Vue', patterns: { dependencies: ['vue'] } },
@@ -131,38 +102,31 @@ const STACK_DETECTIONS = [
131
102
  { name: 'Astro', patterns: { dependencies: ['astro'] } },
132
103
  { name: 'Remix', patterns: { dependencies: ['@remix-run/react'] } },
133
104
  { name: 'Nuxt', patterns: { dependencies: ['nuxt'] } },
134
- // Runtime & Build
135
105
  { name: 'TypeScript', patterns: { devDependencies: ['typescript'] } },
136
106
  { name: 'Bun', patterns: { devDependencies: ['bun-types'], files: ['bun.lockb'] } },
137
107
  { name: 'Vite', patterns: { devDependencies: ['vite'] } },
138
108
  { name: 'Webpack', patterns: { devDependencies: ['webpack'] } },
139
109
  { name: 'ESBuild', patterns: { devDependencies: ['esbuild'] } },
140
- // Styling
141
110
  { name: 'Tailwind CSS', patterns: { devDependencies: ['tailwindcss'] } },
142
111
  { name: 'Sass', patterns: { devDependencies: ['sass'] } },
143
112
  { name: 'PostCSS', patterns: { devDependencies: ['postcss'] } },
144
113
  { name: 'Styled Components', patterns: { dependencies: ['styled-components'] } },
145
- // Database & ORM
146
114
  { name: 'Prisma', patterns: { devDependencies: ['prisma'], files: ['prisma/schema.prisma'] } },
147
115
  { name: 'Drizzle', patterns: { devDependencies: ['drizzle-kit'] } },
148
116
  { name: 'TypeORM', patterns: { dependencies: ['typeorm'] } },
149
117
  { name: 'Mongoose', patterns: { dependencies: ['mongoose'] } },
150
118
  { name: 'SQLite', patterns: { dependencies: ['better-sqlite3', 'sql.js'] } },
151
- // Backend
152
119
  { name: 'Express', patterns: { dependencies: ['express'] } },
153
120
  { name: 'Fastify', patterns: { dependencies: ['fastify'] } },
154
121
  { name: 'NestJS', patterns: { dependencies: ['@nestjs/core'] } },
155
122
  { name: 'Hono', patterns: { dependencies: ['hono'] } },
156
- // Testing
157
123
  { name: 'Jest', patterns: { devDependencies: ['jest'] } },
158
124
  { name: 'Vitest', patterns: { devDependencies: ['vitest'] } },
159
125
  { name: 'Playwright', patterns: { devDependencies: ['@playwright/test', 'playwright'] } },
160
126
  { name: 'Cypress', patterns: { devDependencies: ['cypress'] } },
161
- // Linting & Formatting
162
127
  { name: 'ESLint', patterns: { devDependencies: ['eslint'], files: ['.eslintrc.js', '.eslintrc.json', 'eslint.config.js'] } },
163
128
  { name: 'Prettier', patterns: { devDependencies: ['prettier'] } },
164
129
  { name: 'Biome', patterns: { devDependencies: ['@biomejs/biome'] } },
165
- // Auth & Services
166
130
  { name: 'Supabase', patterns: { dependencies: ['@supabase/supabase-js'] } },
167
131
  { name: 'Firebase', patterns: { dependencies: ['firebase'] } },
168
132
  { name: 'Clerk', patterns: { dependencies: ['@clerk/nextjs', '@clerk/clerk-react'] } },
@@ -170,7 +134,6 @@ const STACK_DETECTIONS = [
170
134
  ];
171
135
  export function detectTechStack(projectPath) {
172
136
  const detected = [];
173
- // Read package.json
174
137
  let pkg = {};
175
138
  try {
176
139
  const pkgPath = path.join(projectPath, 'package.json');
@@ -179,7 +142,6 @@ export function detectTechStack(projectPath) {
179
142
  }
180
143
  }
181
144
  catch {
182
- // Return empty if no package.json
183
145
  return detected;
184
146
  }
185
147
  const deps = pkg.dependencies || {};
@@ -187,7 +149,6 @@ export function detectTechStack(projectPath) {
187
149
  const allDeps = { ...deps, ...devDeps };
188
150
  for (const stack of STACK_DETECTIONS) {
189
151
  let found = false;
190
- // Check dependencies
191
152
  if (stack.patterns.dependencies) {
192
153
  for (const dep of stack.patterns.dependencies) {
193
154
  if (dep in deps || dep in allDeps) {
@@ -196,7 +157,6 @@ export function detectTechStack(projectPath) {
196
157
  }
197
158
  }
198
159
  }
199
- // Check devDependencies
200
160
  if (!found && stack.patterns.devDependencies) {
201
161
  for (const dep of stack.patterns.devDependencies) {
202
162
  if (dep in devDeps || dep in allDeps) {
@@ -205,7 +165,6 @@ export function detectTechStack(projectPath) {
205
165
  }
206
166
  }
207
167
  }
208
- // Check files
209
168
  if (!found && stack.patterns.files) {
210
169
  for (const file of stack.patterns.files) {
211
170
  if (fs.existsSync(path.join(projectPath, file))) {
@@ -1,9 +1,3 @@
1
- /**
2
- * Weave Environment Analysis Module
3
- *
4
- * Proactive knowledge system for detecting potential issues
5
- * BEFORE they occur, based on environment + stack combinations.
6
- */
7
1
  import type { EnvironmentContext, EnvironmentAnalysis } from '../types.js';
8
2
  import { type DetectorOptions } from './detector.js';
9
3
  import { type CollectIssuesOptions } from './issues.js';
@@ -12,21 +6,8 @@ export { collectPotentialIssues, filterIssuesBySeverity, filterIssuesByCategory,
12
6
  export type { DetectorOptions } from './detector.js';
13
7
  export type { CollectIssuesOptions, PhaseContext, FeatureContext, ContextSearchResult, } from './issues.js';
14
8
  export interface AnalyzeOptions extends DetectorOptions, CollectIssuesOptions {
15
- /** If true, only include warnings and critical issues in the summary */
16
9
  warningsOnly?: boolean;
17
10
  }
18
- /**
19
- * Perform complete environment analysis.
20
- * Detects environment context and collects matching potential issues.
21
- */
22
11
  export declare function analyzeEnvironment(options?: AnalyzeOptions): Promise<EnvironmentAnalysis>;
23
- /**
24
- * Quick check if there are any critical issues for the current environment.
25
- * Useful for CLI warnings or pre-flight checks.
26
- */
27
12
  export declare function hasCriticalIssues(options?: AnalyzeOptions): Promise<boolean>;
28
- /**
29
- * Get a one-liner summary of the environment.
30
- * Useful for logging or status displays.
31
- */
32
13
  export declare function getEnvironmentOneLiner(context: EnvironmentContext): string;
@@ -1,31 +1,14 @@
1
- /**
2
- * Weave Environment Analysis Module
3
- *
4
- * Proactive knowledge system for detecting potential issues
5
- * BEFORE they occur, based on environment + stack combinations.
6
- */
7
1
  import { detectEnvironment } from './detector.js';
8
2
  import { collectPotentialIssues, filterIssuesBySeverity } from './issues.js';
9
- // Re-export types and utilities
10
3
  export { detectEnvironment } from './detector.js';
11
- export { collectPotentialIssues, filterIssuesBySeverity, filterIssuesByCategory,
12
- // Phase/Feature context search
13
- searchPhaseIssues, searchFeatureIssues, formatContextResults, } from './issues.js';
14
- /**
15
- * Perform complete environment analysis.
16
- * Detects environment context and collects matching potential issues.
17
- */
4
+ export { collectPotentialIssues, filterIssuesBySeverity, filterIssuesByCategory, searchPhaseIssues, searchFeatureIssues, formatContextResults, } from './issues.js';
18
5
  export async function analyzeEnvironment(options = {}) {
19
6
  const { warningsOnly = false, ...otherOptions } = options;
20
- // Detect environment
21
7
  const context = detectEnvironment(otherOptions);
22
- // Collect potential issues
23
8
  let issues = await collectPotentialIssues(context, otherOptions);
24
- // Filter if warningsOnly
25
9
  if (warningsOnly) {
26
10
  issues = filterIssuesBySeverity(issues, 'warning');
27
11
  }
28
- // Generate summary
29
12
  const summary = generateSummary(context, issues);
30
13
  return {
31
14
  context,
@@ -34,14 +17,9 @@ export async function analyzeEnvironment(options = {}) {
34
17
  analyzedAt: new Date().toISOString(),
35
18
  };
36
19
  }
37
- // ============================================================================
38
- // Summary Generation
39
- // ============================================================================
40
20
  function generateSummary(context, issues) {
41
21
  const lines = [];
42
- // Header
43
22
  lines.push('## πŸ” ν™˜κ²½ 뢄석 κ²°κ³Ό\n');
44
- // Environment Context
45
23
  lines.push('### πŸ“‹ μ‹€ν–‰ ν™˜κ²½');
46
24
  lines.push(`- **OS**: ${formatOS(context.os)}`);
47
25
  lines.push(`- **Shell**: ${context.shell}`);
@@ -54,7 +32,6 @@ function generateSummary(context, issues) {
54
32
  lines.push(`- **기술 μŠ€νƒ**: ${context.stack.join(', ')}`);
55
33
  }
56
34
  lines.push('');
57
- // Issues Summary
58
35
  const criticalCount = issues.filter(i => i.severity === 'critical').length;
59
36
  const warningCount = issues.filter(i => i.severity === 'warning').length;
60
37
  const infoCount = issues.filter(i => i.severity === 'info').length;
@@ -72,7 +49,6 @@ function generateSummary(context, issues) {
72
49
  if (infoCount > 0)
73
50
  lines.push(`- πŸ”΅ **Info**: ${infoCount}개`);
74
51
  lines.push('');
75
- // Critical issues first
76
52
  const criticalIssues = issues.filter(i => i.severity === 'critical');
77
53
  if (criticalIssues.length > 0) {
78
54
  lines.push('#### πŸ”΄ Critical Issues');
@@ -85,7 +61,6 @@ function generateSummary(context, issues) {
85
61
  lines.push('');
86
62
  }
87
63
  }
88
- // Warning issues
89
64
  const warningIssues = issues.filter(i => i.severity === 'warning');
90
65
  if (warningIssues.length > 0) {
91
66
  lines.push('#### 🟑 Warnings');
@@ -98,7 +73,6 @@ function generateSummary(context, issues) {
98
73
  lines.push('');
99
74
  }
100
75
  }
101
- // Info issues (brief)
102
76
  const infoIssues = issues.filter(i => i.severity === 'info');
103
77
  if (infoIssues.length > 0) {
104
78
  lines.push('#### πŸ”΅ μ°Έκ³  사항');
@@ -108,7 +82,6 @@ function generateSummary(context, issues) {
108
82
  lines.push('');
109
83
  }
110
84
  }
111
- // Footer
112
85
  const builtinCount = issues.filter(i => i.source === 'builtin').length;
113
86
  const historyCount = issues.filter(i => i.source === 'project_history').length;
114
87
  lines.push('---');
@@ -130,21 +103,10 @@ function formatOS(os) {
130
103
  return os;
131
104
  }
132
105
  }
133
- // ============================================================================
134
- // Quick Check Functions
135
- // ============================================================================
136
- /**
137
- * Quick check if there are any critical issues for the current environment.
138
- * Useful for CLI warnings or pre-flight checks.
139
- */
140
106
  export async function hasCriticalIssues(options = {}) {
141
107
  const analysis = await analyzeEnvironment(options);
142
108
  return analysis.issues.some(i => i.severity === 'critical');
143
109
  }
144
- /**
145
- * Get a one-liner summary of the environment.
146
- * Useful for logging or status displays.
147
- */
148
110
  export function getEnvironmentOneLiner(context) {
149
111
  const parts = [
150
112
  formatOS(context.os),
@@ -1,9 +1,3 @@
1
- /**
2
- * Potential Issues Collector
3
- *
4
- * Combines hardcoded known issues with project history from Global Knowledge.
5
- * Provides proactive warnings based on environment + stack combinations.
6
- */
7
1
  import type { EnvironmentContext, PotentialIssue } from '../types.js';
8
2
  export interface CollectIssuesOptions {
9
3
  includeProjectHistory?: boolean;
@@ -12,54 +6,25 @@ export interface CollectIssuesOptions {
12
6
  export declare function collectPotentialIssues(context: EnvironmentContext, options?: CollectIssuesOptions): Promise<PotentialIssue[]>;
13
7
  export declare function filterIssuesByCategory(issues: PotentialIssue[], category: PotentialIssue['category']): PotentialIssue[];
14
8
  export declare function filterIssuesBySeverity(issues: PotentialIssue[], minSeverity: PotentialIssue['severity']): PotentialIssue[];
15
- /**
16
- * Context for phase-specific issue search
17
- */
18
9
  export interface PhaseContext {
19
- /** Phase name (e.g., "둜그인 κ΅¬ν˜„", "감정 선택 UI") */
20
10
  phaseName: string;
21
- /** Phase ID (e.g., "P1", "P2") */
22
11
  phaseId?: string;
23
- /** Tasks within this phase */
24
12
  tasks?: string[];
25
- /** Done criteria */
26
13
  doneWhen?: string;
27
14
  }
28
- /**
29
- * Context for feature-specific issue search
30
- */
31
15
  export interface FeatureContext {
32
- /** Feature name or description */
33
16
  featureName: string;
34
- /** Related keywords for search */
35
17
  keywords?: string[];
36
- /** Related tech stack for filtering */
37
18
  relatedStack?: string[];
38
19
  }
39
- /**
40
- * Result from context-based search
41
- */
42
20
  export interface ContextSearchResult extends PotentialIssue {
43
- /** Relevance score (0-1) */
44
21
  relevance: number;
45
- /** Which context matched */
46
22
  matchedContext: string;
47
23
  }
48
- /**
49
- * Search for issues relevant to a specific phase.
50
- * Combines phase metadata with environment context for targeted search.
51
- */
52
24
  export declare function searchPhaseIssues(phaseContext: PhaseContext, environmentContext: EnvironmentContext, options?: {
53
25
  limit?: number;
54
26
  }): Promise<ContextSearchResult[]>;
55
- /**
56
- * Search for issues relevant to a specific feature request.
57
- * Useful when implementing new features to find similar past problems.
58
- */
59
27
  export declare function searchFeatureIssues(featureContext: FeatureContext, environmentContext: EnvironmentContext, options?: {
60
28
  limit?: number;
61
29
  }): Promise<ContextSearchResult[]>;
62
- /**
63
- * Quick helper to format context search results as markdown.
64
- */
65
30
  export declare function formatContextResults(results: ContextSearchResult[], title?: string): string;