@monoes/monomindcli 1.10.54 → 1.10.55

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 (441) hide show
  1. package/.claude/agents/optimization/benchmark-suite.md +2 -0
  2. package/.claude/agents/optimization/load-balancer.md +2 -0
  3. package/.claude/agents/optimization/performance-monitor.md +2 -0
  4. package/.claude/agents/optimization/resource-allocator.md +3 -1
  5. package/.claude/agents/optimization/topology-optimizer.md +2 -0
  6. package/.claude/commands/mastermind/_repeat.md +21 -0
  7. package/.claude/commands/mastermind/_taskfile.md +235 -0
  8. package/.claude/commands/mastermind/adr.md +11 -0
  9. package/.claude/commands/mastermind/approve.md +94 -0
  10. package/.claude/commands/mastermind/autodev.md +32 -0
  11. package/.claude/commands/mastermind/budget.md +7 -0
  12. package/.claude/commands/mastermind/code-review.md +317 -0
  13. package/.claude/commands/mastermind/createorg.md +40 -1
  14. package/.claude/commands/mastermind/createtask.md +383 -0
  15. package/.claude/commands/mastermind/debug.md +22 -0
  16. package/.claude/commands/mastermind/design.md +20 -0
  17. package/.claude/commands/mastermind/do.md +526 -0
  18. package/.claude/commands/mastermind/execute.md +20 -0
  19. package/.claude/commands/mastermind/finish.md +20 -0
  20. package/.claude/commands/mastermind/graph-status.md +7 -0
  21. package/.claude/commands/mastermind/help.md +118 -0
  22. package/.claude/commands/mastermind/ideate.md +261 -0
  23. package/.claude/commands/mastermind/improve.md +345 -0
  24. package/.claude/commands/mastermind/loops.md +7 -0
  25. package/.claude/commands/mastermind/master.md +186 -6
  26. package/.claude/commands/mastermind/memory.md +230 -0
  27. package/.claude/commands/mastermind/plan.md +26 -0
  28. package/.claude/commands/mastermind/receive-review.md +20 -0
  29. package/.claude/commands/mastermind/repeat.md +257 -0
  30. package/.claude/commands/mastermind/runorg.md +3 -0
  31. package/.claude/commands/mastermind/skill-builder.md +20 -0
  32. package/.claude/commands/mastermind/specialagents.md +125 -0
  33. package/.claude/commands/mastermind/swarm.md +161 -0
  34. package/.claude/commands/mastermind/taskdev.md +26 -0
  35. package/.claude/commands/mastermind/tdd.md +22 -0
  36. package/.claude/commands/mastermind/techport.md +4 -0
  37. package/.claude/commands/mastermind/understand.md +139 -0
  38. package/.claude/commands/mastermind/verify.md +22 -0
  39. package/.claude/commands/mastermind/worktree.md +20 -0
  40. package/.claude/helpers/handlers/graph-status-handler.cjs +2 -1
  41. package/.claude/helpers/hook-handler.cjs +19 -0
  42. package/.claude/helpers/skill-registry.json +23 -0
  43. package/.claude/helpers/statusline.cjs +1 -1
  44. package/.claude/skills/mastermind/approve.md +15 -7
  45. package/.claude/skills/mastermind/autodev.md +534 -0
  46. package/.claude/skills/mastermind/createorg.md +21 -5
  47. package/.claude/skills/mastermind/debug.md +232 -0
  48. package/.claude/skills/mastermind/design.md +187 -0
  49. package/.claude/skills/mastermind/execute.md +104 -0
  50. package/.claude/skills/mastermind/finish.md +251 -0
  51. package/.claude/skills/mastermind/plan.md +180 -0
  52. package/.claude/skills/mastermind/receive-review.md +213 -0
  53. package/.claude/skills/mastermind/runorg.md +23 -8
  54. package/.claude/skills/mastermind/skill-builder.md +274 -0
  55. package/.claude/skills/mastermind/taskdev.md +307 -0
  56. package/.claude/skills/mastermind/tdd.md +394 -0
  57. package/.claude/skills/mastermind/verify.md +196 -0
  58. package/.claude/skills/mastermind/worktree.md +160 -132
  59. package/README.md +320 -253
  60. package/dist/src/commands/analyze.d.ts.map +1 -1
  61. package/dist/src/commands/analyze.js +9 -2
  62. package/dist/src/commands/analyze.js.map +1 -1
  63. package/dist/src/commands/benchmark.js.map +1 -1
  64. package/dist/src/commands/completions.js +1 -1
  65. package/dist/src/commands/guidance.js +7 -7
  66. package/dist/src/commands/hooks.d.ts.map +1 -1
  67. package/dist/src/commands/hooks.js +16 -3
  68. package/dist/src/commands/hooks.js.map +1 -1
  69. package/dist/src/commands/index.d.ts +3 -2
  70. package/dist/src/commands/index.d.ts.map +1 -1
  71. package/dist/src/commands/index.js +7 -0
  72. package/dist/src/commands/index.js.map +1 -1
  73. package/dist/src/commands/init.d.ts.map +1 -1
  74. package/dist/src/commands/init.js +47 -13
  75. package/dist/src/commands/init.js.map +1 -1
  76. package/dist/src/commands/neural.d.ts.map +1 -1
  77. package/dist/src/commands/neural.js +100 -14
  78. package/dist/src/commands/neural.js.map +1 -1
  79. package/dist/src/commands/platforms.d.ts +11 -0
  80. package/dist/src/commands/platforms.d.ts.map +1 -0
  81. package/dist/src/commands/platforms.js +195 -0
  82. package/dist/src/commands/platforms.js.map +1 -0
  83. package/dist/src/commands/ruvector/backup.js.map +1 -1
  84. package/dist/src/commands/ruvector/benchmark.js.map +1 -1
  85. package/dist/src/commands/ruvector/init.js.map +1 -1
  86. package/dist/src/commands/ruvector/migrate.js.map +1 -1
  87. package/dist/src/commands/ruvector/optimize.js.map +1 -1
  88. package/dist/src/commands/ruvector/status.js.map +1 -1
  89. package/dist/src/commands/update.js +6 -6
  90. package/dist/src/init/executor.d.ts.map +1 -1
  91. package/dist/src/init/executor.js +28 -0
  92. package/dist/src/init/executor.js.map +1 -1
  93. package/dist/src/init/statusline-generator.js +1 -1
  94. package/dist/src/init/types.d.ts +1 -0
  95. package/dist/src/init/types.d.ts.map +1 -1
  96. package/dist/src/mcp-server.d.ts.map +1 -1
  97. package/dist/src/mcp-server.js +92 -0
  98. package/dist/src/mcp-server.js.map +1 -1
  99. package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -1
  100. package/dist/src/mcp-tools/hive-mind-tools.js +52 -0
  101. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
  102. package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
  103. package/dist/src/mcp-tools/hooks-tools.js +106 -5
  104. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  105. package/dist/src/mcp-tools/index.d.ts +0 -5
  106. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  107. package/dist/src/mcp-tools/index.js +0 -5
  108. package/dist/src/mcp-tools/index.js.map +1 -1
  109. package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
  110. package/dist/src/mcp-tools/monograph-tools.js +507 -5587
  111. package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
  112. package/dist/src/mcp-tools/neural-tools.d.ts.map +1 -1
  113. package/dist/src/mcp-tools/neural-tools.js +64 -4
  114. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  115. package/dist/src/mcp-tools/security-tools.js +4 -4
  116. package/dist/src/memory/intelligence.d.ts +2 -2
  117. package/dist/src/memory/intelligence.d.ts.map +1 -1
  118. package/dist/src/memory/intelligence.js +108 -3
  119. package/dist/src/memory/intelligence.js.map +1 -1
  120. package/dist/src/memory/memory-bridge.js +1 -1
  121. package/dist/src/memory/memory-bridge.js.map +1 -1
  122. package/dist/src/memory/sona-optimizer.d.ts +1 -10
  123. package/dist/src/memory/sona-optimizer.d.ts.map +1 -1
  124. package/dist/src/memory/sona-optimizer.js +0 -46
  125. package/dist/src/memory/sona-optimizer.js.map +1 -1
  126. package/dist/src/runtime/headless.js +3 -3
  127. package/dist/src/ruvector/diff-classifier.d.ts +0 -2
  128. package/dist/src/ruvector/diff-classifier.d.ts.map +1 -1
  129. package/dist/src/ruvector/diff-classifier.js +2 -14
  130. package/dist/src/ruvector/diff-classifier.js.map +1 -1
  131. package/dist/src/ruvector/index.d.ts +26 -9
  132. package/dist/src/ruvector/index.d.ts.map +1 -1
  133. package/dist/src/ruvector/index.js +3 -21
  134. package/dist/src/ruvector/index.js.map +1 -1
  135. package/dist/src/ruvector/ruvllm-wasm.js +2 -2
  136. package/dist/src/ruvector/ruvllm-wasm.js.map +1 -1
  137. package/dist/src/types.d.ts +0 -15
  138. package/dist/src/types.d.ts.map +1 -1
  139. package/dist/src/types.js +0 -18
  140. package/dist/src/types.js.map +1 -1
  141. package/dist/src/ui/dashboard.html +8763 -9766
  142. package/dist/src/ui/orgs.html +1 -1
  143. package/dist/src/ui/server.mjs +504 -35
  144. package/dist/src/update/index.js +1 -1
  145. package/dist/src/update/validator.js +8 -8
  146. package/dist/tsconfig.tsbuildinfo +1 -1
  147. package/package.json +2 -2
  148. package/.claude/agents/academic/academic-anthropologist.md +0 -126
  149. package/.claude/agents/academic/academic-geographer.md +0 -128
  150. package/.claude/agents/academic/academic-historian.md +0 -124
  151. package/.claude/agents/academic/academic-narratologist.md +0 -119
  152. package/.claude/agents/academic/academic-psychologist.md +0 -119
  153. package/.claude/agents/analysis/analyze-code-quality.md +0 -58
  154. package/.claude/agents/analysis/code-analyzer.md +0 -189
  155. package/.claude/agents/analysis/code-review/analyze-code-quality.md +0 -58
  156. package/.claude/agents/consensus/performance-benchmarker.md +0 -831
  157. package/.claude/agents/data/ml/data-ml-model.md +0 -76
  158. package/.claude/agents/development/dev-backend-api.md +0 -178
  159. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +0 -52
  160. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +0 -63
  161. package/.claude/agents/game-development/blender/blender-addon-engineer.md +0 -235
  162. package/.claude/agents/game-development/game-audio-engineer.md +0 -265
  163. package/.claude/agents/game-development/game-designer.md +0 -168
  164. package/.claude/agents/game-development/godot/godot-gameplay-scripter.md +0 -335
  165. package/.claude/agents/game-development/godot/godot-multiplayer-engineer.md +0 -298
  166. package/.claude/agents/game-development/godot/godot-shader-developer.md +0 -267
  167. package/.claude/agents/game-development/level-designer.md +0 -209
  168. package/.claude/agents/game-development/narrative-designer.md +0 -244
  169. package/.claude/agents/game-development/roblox-studio/roblox-avatar-creator.md +0 -298
  170. package/.claude/agents/game-development/roblox-studio/roblox-experience-designer.md +0 -306
  171. package/.claude/agents/game-development/roblox-studio/roblox-systems-scripter.md +0 -326
  172. package/.claude/agents/game-development/technical-artist.md +0 -230
  173. package/.claude/agents/game-development/unity/unity-architect.md +0 -272
  174. package/.claude/agents/game-development/unity/unity-editor-tool-developer.md +0 -311
  175. package/.claude/agents/game-development/unity/unity-multiplayer-engineer.md +0 -322
  176. package/.claude/agents/game-development/unity/unity-shader-graph-artist.md +0 -270
  177. package/.claude/agents/game-development/unreal-engine/unreal-multiplayer-architect.md +0 -314
  178. package/.claude/agents/game-development/unreal-engine/unreal-systems-engineer.md +0 -311
  179. package/.claude/agents/game-development/unreal-engine/unreal-technical-artist.md +0 -257
  180. package/.claude/agents/game-development/unreal-engine/unreal-world-builder.md +0 -274
  181. package/.claude/agents/github/release-swarm.md +0 -597
  182. package/.claude/agents/goal/agent.md +0 -804
  183. package/.claude/agents/goal/code-goal-planner.md +0 -445
  184. package/.claude/agents/marketing/marketing-ai-citation-strategist.md +0 -171
  185. package/.claude/agents/marketing/marketing-app-store-optimizer.md +0 -322
  186. package/.claude/agents/marketing/marketing-baidu-seo-specialist.md +0 -227
  187. package/.claude/agents/marketing/marketing-bilibili-content-strategist.md +0 -200
  188. package/.claude/agents/marketing/marketing-book-co-author.md +0 -111
  189. package/.claude/agents/marketing/marketing-carousel-growth-engine.md +0 -200
  190. package/.claude/agents/marketing/marketing-china-ecommerce-operator.md +0 -284
  191. package/.claude/agents/marketing/marketing-content-creator.md +0 -67
  192. package/.claude/agents/marketing/marketing-cross-border-ecommerce.md +0 -260
  193. package/.claude/agents/marketing/marketing-douyin-strategist.md +0 -150
  194. package/.claude/agents/marketing/marketing-growth-hacker.md +0 -54
  195. package/.claude/agents/marketing/marketing-instagram-curator.md +0 -114
  196. package/.claude/agents/marketing/marketing-kuaishou-strategist.md +0 -224
  197. package/.claude/agents/marketing/marketing-linkedin-content-creator.md +0 -215
  198. package/.claude/agents/marketing/marketing-livestream-commerce-coach.md +0 -306
  199. package/.claude/agents/marketing/marketing-podcast-strategist.md +0 -278
  200. package/.claude/agents/marketing/marketing-private-domain-operator.md +0 -309
  201. package/.claude/agents/marketing/marketing-reddit-community-builder.md +0 -124
  202. package/.claude/agents/marketing/marketing-seo-specialist.md +0 -279
  203. package/.claude/agents/marketing/marketing-short-video-editing-coach.md +0 -413
  204. package/.claude/agents/marketing/marketing-social-media-strategist.md +0 -125
  205. package/.claude/agents/marketing/marketing-tiktok-strategist.md +0 -126
  206. package/.claude/agents/marketing/marketing-twitter-engager.md +0 -127
  207. package/.claude/agents/marketing/marketing-wechat-official-account.md +0 -146
  208. package/.claude/agents/marketing/marketing-weibo-strategist.md +0 -241
  209. package/.claude/agents/marketing/marketing-xiaohongshu-specialist.md +0 -139
  210. package/.claude/agents/marketing/marketing-zhihu-strategist.md +0 -163
  211. package/.claude/agents/neural/safla-neural.md +0 -74
  212. package/.claude/agents/paid-media/paid-media-auditor.md +0 -71
  213. package/.claude/agents/paid-media/paid-media-creative-strategist.md +0 -71
  214. package/.claude/agents/paid-media/paid-media-paid-social-strategist.md +0 -71
  215. package/.claude/agents/paid-media/paid-media-ppc-strategist.md +0 -71
  216. package/.claude/agents/paid-media/paid-media-programmatic-buyer.md +0 -71
  217. package/.claude/agents/paid-media/paid-media-search-query-analyst.md +0 -71
  218. package/.claude/agents/paid-media/paid-media-tracking-specialist.md +0 -71
  219. package/.claude/agents/payments/agentic-payments.md +0 -126
  220. package/.claude/agents/product/product-behavioral-nudge-engine.md +0 -81
  221. package/.claude/agents/product/product-feedback-synthesizer.md +0 -119
  222. package/.claude/agents/product/product-manager.md +0 -469
  223. package/.claude/agents/product/product-sprint-prioritizer.md +0 -154
  224. package/.claude/agents/product/product-trend-researcher.md +0 -159
  225. package/.claude/agents/project-management/project-management-experiment-tracker.md +0 -199
  226. package/.claude/agents/project-management/project-management-jira-workflow-steward.md +0 -231
  227. package/.claude/agents/project-management/project-management-project-shepherd.md +0 -195
  228. package/.claude/agents/project-management/project-management-studio-operations.md +0 -201
  229. package/.claude/agents/project-management/project-management-studio-producer.md +0 -204
  230. package/.claude/agents/project-management/project-manager-senior.md +0 -136
  231. package/.claude/agents/reasoning/agent.md +0 -804
  232. package/.claude/agents/reasoning/goal-planner.md +0 -73
  233. package/.claude/agents/sales/sales-account-strategist.md +0 -228
  234. package/.claude/agents/sales/sales-coach.md +0 -272
  235. package/.claude/agents/sales/sales-deal-strategist.md +0 -181
  236. package/.claude/agents/sales/sales-discovery-coach.md +0 -226
  237. package/.claude/agents/sales/sales-engineer.md +0 -183
  238. package/.claude/agents/sales/sales-outbound-strategist.md +0 -202
  239. package/.claude/agents/sales/sales-pipeline-analyst.md +0 -268
  240. package/.claude/agents/sales/sales-proposal-strategist.md +0 -218
  241. package/.claude/agents/sona/sona-learning-optimizer.md +0 -65
  242. package/.claude/agents/spatial-computing/macos-spatial-metal-engineer.md +0 -338
  243. package/.claude/agents/spatial-computing/terminal-integration-specialist.md +0 -71
  244. package/.claude/agents/spatial-computing/visionos-spatial-engineer.md +0 -55
  245. package/.claude/agents/specialists/memory-specialist.md +0 -298
  246. package/.claude/agents/specialists/performance-engineer.md +0 -387
  247. package/.claude/agents/specialists/queen-coordinator.md +0 -67
  248. package/.claude/agents/specialists/security-architect.md +0 -154
  249. package/.claude/agents/specialized/accounts-payable-agent.md +0 -186
  250. package/.claude/agents/specialized/corporate-training-designer.md +0 -193
  251. package/.claude/agents/specialized/data-consolidation-agent.md +0 -61
  252. package/.claude/agents/specialized/government-digital-presales-consultant.md +0 -364
  253. package/.claude/agents/specialized/healthcare-marketing-compliance.md +0 -396
  254. package/.claude/agents/specialized/recruitment-specialist.md +0 -510
  255. package/.claude/agents/specialized/report-distribution-agent.md +0 -66
  256. package/.claude/agents/specialized/sales-data-extraction-agent.md +0 -68
  257. package/.claude/agents/specialized/specialized-french-consulting-market.md +0 -193
  258. package/.claude/agents/specialized/specialized-korean-business-navigator.md +0 -217
  259. package/.claude/agents/specialized/specialized-salesforce-architect.md +0 -181
  260. package/.claude/agents/specialized/study-abroad-advisor.md +0 -283
  261. package/.claude/agents/specialized/supply-chain-strategist.md +0 -583
  262. package/.claude/agents/sublinear/consensus-coordinator.md +0 -333
  263. package/.claude/agents/sublinear/matrix-optimizer.md +0 -180
  264. package/.claude/agents/sublinear/pagerank-analyzer.md +0 -295
  265. package/.claude/agents/sublinear/performance-optimizer.md +0 -363
  266. package/.claude/agents/sublinear/trading-predictor.md +0 -242
  267. package/.claude/agents/support/support-analytics-reporter.md +0 -366
  268. package/.claude/agents/support/support-executive-summary-generator.md +0 -213
  269. package/.claude/agents/support/support-finance-tracker.md +0 -443
  270. package/.claude/agents/support/support-infrastructure-maintainer.md +0 -619
  271. package/.claude/agents/support/support-legal-compliance-checker.md +0 -589
  272. package/.claude/agents/support/support-support-responder.md +0 -586
  273. package/.claude/agents/swarm/adaptive-coordinator.md +0 -364
  274. package/.claude/agents/swarm/hierarchical-coordinator.md +0 -318
  275. package/.claude/agents/templates/github-pr-manager.md +0 -155
  276. package/.claude/agents/templates/memory-coordinator.md +0 -163
  277. package/.claude/agents/templates/migration-plan.md +0 -724
  278. package/.claude/agents/templates/orchestrator-task.md +0 -120
  279. package/.claude/agents/templates/performance-analyzer.md +0 -179
  280. package/.claude/agents/templates/sparc-coordinator.md +0 -163
  281. package/.claude/agents/testing/testing-reality-checker.md +0 -237
  282. package/.claude/commands/analysis/token-efficiency.md +0 -42
  283. package/.claude/commands/optimization/README.md +0 -73
  284. package/.claude/commands/optimization/parallel-execution.md +0 -76
  285. package/.claude/commands/swarm/swarm-analysis.md +0 -62
  286. package/.claude/commands/swarm/swarm-background.md +0 -65
  287. package/.claude/commands/swarm/swarm-modes.md +0 -67
  288. package/.claude/commands/swarm/swarm-monitor.md +0 -54
  289. package/.claude/commands/swarm/swarm-status.md +0 -44
  290. package/.claude/commands/swarm/swarm-strategies.md +0 -76
  291. package/.claude/commands/training/model-update.md +0 -78
  292. package/.claude/commands/training/pattern-learn.md +0 -69
  293. package/.claude/commands/training/specialization.md +0 -92
  294. package/.claude/commands/verify/check.md +0 -106
  295. package/.claude/commands/verify/start.md +0 -105
  296. package/.claude/helpers/README.md +0 -105
  297. package/.claude/helpers/context-persistence-hook.mjs +0 -1988
  298. package/.claude/helpers/intelligence.cjs +0 -247
  299. package/.claude/helpers/learning-service.mjs +0 -1302
  300. package/.claude/helpers/memory-palace.cjs +0 -461
  301. package/.claude/helpers/memory.cjs +0 -84
  302. package/.claude/helpers/metrics-db.mjs +0 -488
  303. package/.claude/helpers/router.cjs +0 -559
  304. package/.claude/helpers/session.cjs +0 -126
  305. package/.claude/helpers/swarm-hooks.sh +0 -761
  306. package/.claude/helpers/toggle-statusline.cjs +0 -58
  307. package/.claude/helpers/token-tracker.cjs +0 -934
  308. package/.claude/skills/agentdb-advanced/SKILL.md +0 -549
  309. package/.claude/skills/agentdb-learning/SKILL.md +0 -544
  310. package/.claude/skills/agentdb-memory-patterns/SKILL.md +0 -337
  311. package/.claude/skills/agentdb-optimization/SKILL.md +0 -508
  312. package/.claude/skills/agentdb-vector-search/SKILL.md +0 -335
  313. package/.claude/skills/agentic-integration/SKILL.md +0 -265
  314. package/.claude/skills/cli-modernization/SKILL.md +0 -950
  315. package/.claude/skills/core-implementation/SKILL.md +0 -892
  316. package/.claude/skills/ddd-architecture/SKILL.md +0 -444
  317. package/.claude/skills/github-code-review/SKILL.md +0 -1147
  318. package/.claude/skills/github-multi-repo/SKILL.md +0 -912
  319. package/.claude/skills/github-project-management/SKILL.md +0 -1245
  320. package/.claude/skills/github-release-management/SKILL.md +0 -1118
  321. package/.claude/skills/github-workflow-automation/SKILL.md +0 -1107
  322. package/.claude/skills/mcp-optimization/SKILL.md +0 -837
  323. package/.claude/skills/memory-unification/SKILL.md +0 -196
  324. package/.claude/skills/performance-optimization/SKILL.md +0 -416
  325. package/.claude/skills/reasoningbank-agentdb/SKILL.md +0 -444
  326. package/.claude/skills/reasoningbank-intelligence/SKILL.md +0 -199
  327. package/.claude/skills/security-hardening/SKILL.md +0 -101
  328. package/.claude/skills/stream-chain/SKILL.md +0 -560
  329. package/.claude/skills/swarm-coordination/SKILL.md +0 -451
  330. package/bundled-graph/dist/src/analyze.d.ts +0 -32
  331. package/bundled-graph/dist/src/analyze.d.ts.map +0 -1
  332. package/bundled-graph/dist/src/analyze.js +0 -297
  333. package/bundled-graph/dist/src/analyze.js.map +0 -1
  334. package/bundled-graph/dist/src/build.d.ts +0 -8
  335. package/bundled-graph/dist/src/build.d.ts.map +0 -1
  336. package/bundled-graph/dist/src/build.js.map +0 -1
  337. package/bundled-graph/dist/src/cache.d.ts +0 -12
  338. package/bundled-graph/dist/src/cache.d.ts.map +0 -1
  339. package/bundled-graph/dist/src/cache.js +0 -43
  340. package/bundled-graph/dist/src/cache.js.map +0 -1
  341. package/bundled-graph/dist/src/cluster.d.ts +0 -5
  342. package/bundled-graph/dist/src/cluster.d.ts.map +0 -1
  343. package/bundled-graph/dist/src/cluster.js.map +0 -1
  344. package/bundled-graph/dist/src/detect.d.ts +0 -21
  345. package/bundled-graph/dist/src/detect.d.ts.map +0 -1
  346. package/bundled-graph/dist/src/detect.js +0 -195
  347. package/bundled-graph/dist/src/detect.js.map +0 -1
  348. package/bundled-graph/dist/src/export.d.ts +0 -21
  349. package/bundled-graph/dist/src/export.d.ts.map +0 -1
  350. package/bundled-graph/dist/src/export.js +0 -68
  351. package/bundled-graph/dist/src/export.js.map +0 -1
  352. package/bundled-graph/dist/src/extract/index.d.ts +0 -20
  353. package/bundled-graph/dist/src/extract/index.d.ts.map +0 -1
  354. package/bundled-graph/dist/src/extract/index.js +0 -158
  355. package/bundled-graph/dist/src/extract/index.js.map +0 -1
  356. package/bundled-graph/dist/src/extract/languages/c.d.ts +0 -3
  357. package/bundled-graph/dist/src/extract/languages/c.d.ts.map +0 -1
  358. package/bundled-graph/dist/src/extract/languages/c.js +0 -88
  359. package/bundled-graph/dist/src/extract/languages/c.js.map +0 -1
  360. package/bundled-graph/dist/src/extract/languages/cpp.d.ts +0 -3
  361. package/bundled-graph/dist/src/extract/languages/cpp.d.ts.map +0 -1
  362. package/bundled-graph/dist/src/extract/languages/cpp.js +0 -121
  363. package/bundled-graph/dist/src/extract/languages/cpp.js.map +0 -1
  364. package/bundled-graph/dist/src/extract/languages/csharp.d.ts +0 -3
  365. package/bundled-graph/dist/src/extract/languages/csharp.d.ts.map +0 -1
  366. package/bundled-graph/dist/src/extract/languages/csharp.js +0 -121
  367. package/bundled-graph/dist/src/extract/languages/csharp.js.map +0 -1
  368. package/bundled-graph/dist/src/extract/languages/go.d.ts +0 -3
  369. package/bundled-graph/dist/src/extract/languages/go.d.ts.map +0 -1
  370. package/bundled-graph/dist/src/extract/languages/go.js +0 -181
  371. package/bundled-graph/dist/src/extract/languages/go.js.map +0 -1
  372. package/bundled-graph/dist/src/extract/languages/java.d.ts +0 -3
  373. package/bundled-graph/dist/src/extract/languages/java.d.ts.map +0 -1
  374. package/bundled-graph/dist/src/extract/languages/java.js +0 -117
  375. package/bundled-graph/dist/src/extract/languages/java.js.map +0 -1
  376. package/bundled-graph/dist/src/extract/languages/kotlin.d.ts +0 -3
  377. package/bundled-graph/dist/src/extract/languages/kotlin.d.ts.map +0 -1
  378. package/bundled-graph/dist/src/extract/languages/kotlin.js +0 -112
  379. package/bundled-graph/dist/src/extract/languages/kotlin.js.map +0 -1
  380. package/bundled-graph/dist/src/extract/languages/php.d.ts +0 -3
  381. package/bundled-graph/dist/src/extract/languages/php.d.ts.map +0 -1
  382. package/bundled-graph/dist/src/extract/languages/php.js +0 -130
  383. package/bundled-graph/dist/src/extract/languages/php.js.map +0 -1
  384. package/bundled-graph/dist/src/extract/languages/python.d.ts +0 -3
  385. package/bundled-graph/dist/src/extract/languages/python.d.ts.map +0 -1
  386. package/bundled-graph/dist/src/extract/languages/python.js +0 -230
  387. package/bundled-graph/dist/src/extract/languages/python.js.map +0 -1
  388. package/bundled-graph/dist/src/extract/languages/ruby.d.ts +0 -3
  389. package/bundled-graph/dist/src/extract/languages/ruby.d.ts.map +0 -1
  390. package/bundled-graph/dist/src/extract/languages/ruby.js +0 -120
  391. package/bundled-graph/dist/src/extract/languages/ruby.js.map +0 -1
  392. package/bundled-graph/dist/src/extract/languages/rust.d.ts +0 -3
  393. package/bundled-graph/dist/src/extract/languages/rust.d.ts.map +0 -1
  394. package/bundled-graph/dist/src/extract/languages/rust.js +0 -195
  395. package/bundled-graph/dist/src/extract/languages/rust.js.map +0 -1
  396. package/bundled-graph/dist/src/extract/languages/scala.d.ts +0 -3
  397. package/bundled-graph/dist/src/extract/languages/scala.d.ts.map +0 -1
  398. package/bundled-graph/dist/src/extract/languages/scala.js +0 -110
  399. package/bundled-graph/dist/src/extract/languages/scala.js.map +0 -1
  400. package/bundled-graph/dist/src/extract/languages/swift.d.ts +0 -3
  401. package/bundled-graph/dist/src/extract/languages/swift.d.ts.map +0 -1
  402. package/bundled-graph/dist/src/extract/languages/swift.js +0 -122
  403. package/bundled-graph/dist/src/extract/languages/swift.js.map +0 -1
  404. package/bundled-graph/dist/src/extract/languages/typescript.d.ts +0 -3
  405. package/bundled-graph/dist/src/extract/languages/typescript.d.ts.map +0 -1
  406. package/bundled-graph/dist/src/extract/languages/typescript.js +0 -295
  407. package/bundled-graph/dist/src/extract/languages/typescript.js.map +0 -1
  408. package/bundled-graph/dist/src/extract/semantic.d.ts +0 -38
  409. package/bundled-graph/dist/src/extract/semantic.d.ts.map +0 -1
  410. package/bundled-graph/dist/src/extract/semantic.js +0 -242
  411. package/bundled-graph/dist/src/extract/semantic.js.map +0 -1
  412. package/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts +0 -48
  413. package/bundled-graph/dist/src/extract/tree-sitter-runner.d.ts.map +0 -1
  414. package/bundled-graph/dist/src/extract/tree-sitter-runner.js +0 -137
  415. package/bundled-graph/dist/src/extract/tree-sitter-runner.js.map +0 -1
  416. package/bundled-graph/dist/src/extract/types.d.ts +0 -7
  417. package/bundled-graph/dist/src/extract/types.d.ts.map +0 -1
  418. package/bundled-graph/dist/src/extract/types.js +0 -2
  419. package/bundled-graph/dist/src/extract/types.js.map +0 -1
  420. package/bundled-graph/dist/src/index.d.ts +0 -28
  421. package/bundled-graph/dist/src/index.d.ts.map +0 -1
  422. package/bundled-graph/dist/src/index.js +0 -26
  423. package/bundled-graph/dist/src/index.js.map +0 -1
  424. package/bundled-graph/dist/src/pipeline.d.ts +0 -27
  425. package/bundled-graph/dist/src/pipeline.d.ts.map +0 -1
  426. package/bundled-graph/dist/src/pipeline.js +0 -269
  427. package/bundled-graph/dist/src/pipeline.js.map +0 -1
  428. package/bundled-graph/dist/src/report.d.ts +0 -26
  429. package/bundled-graph/dist/src/report.d.ts.map +0 -1
  430. package/bundled-graph/dist/src/report.js +0 -214
  431. package/bundled-graph/dist/src/report.js.map +0 -1
  432. package/bundled-graph/dist/src/types.d.ts +0 -124
  433. package/bundled-graph/dist/src/types.d.ts.map +0 -1
  434. package/bundled-graph/dist/src/types.js +0 -2
  435. package/bundled-graph/dist/src/types.js.map +0 -1
  436. package/bundled-graph/dist/src/visualize.d.ts +0 -4
  437. package/bundled-graph/dist/src/visualize.d.ts.map +0 -1
  438. package/bundled-graph/dist/src/visualize.js +0 -574
  439. package/bundled-graph/dist/src/visualize.js.map +0 -1
  440. package/bundled-graph/dist/tsconfig.tsbuildinfo +0 -1
  441. package/dist/src/ui/dashboard-v2.html +0 -5316
@@ -1,297 +0,0 @@
1
- /**
2
- * Find the most connected nodes (god nodes) — core abstractions of the codebase.
3
- * Sorted by total degree (in + out), descending.
4
- */
5
- export function godNodes(graph, topN = 15) {
6
- const nodes = [];
7
- graph.forEachNode((id, attrs) => {
8
- nodes.push({
9
- id,
10
- label: attrs.label || id,
11
- degree: graph.degree(id),
12
- community: attrs.community,
13
- sourceFile: attrs.sourceFile || '',
14
- neighbors: graph
15
- .neighbors(id)
16
- .slice(0, 8)
17
- .map((n) => graph.getNodeAttribute(n, 'label') || n),
18
- });
19
- });
20
- return nodes.sort((a, b) => b.degree - a.degree).slice(0, topN);
21
- }
22
- /**
23
- * Find surprising cross-community connections.
24
- * An edge is surprising when its endpoints belong to different communities.
25
- * Base score is degree(source) * degree(target), boosted by confidence and file type factors.
26
- */
27
- export function surprisingConnections(graph, topN = 20) {
28
- const surprises = [];
29
- graph.forEachEdge((_, attrs, source, target) => {
30
- const cu = graph.getNodeAttribute(source, 'community');
31
- const cv = graph.getNodeAttribute(target, 'community');
32
- if (cu !== undefined && cv !== undefined && cu !== cv) {
33
- const confidence = attrs.confidence ?? 'AMBIGUOUS';
34
- const confidenceScore = attrs.confidenceScore;
35
- const sourceFileType = graph.getNodeAttribute(source, 'fileType');
36
- const targetFileType = graph.getNodeAttribute(target, 'fileType');
37
- let score = graph.degree(source) * graph.degree(target);
38
- // Boost for AMBIGUOUS edges — more uncertain = more surprising
39
- if (confidence === 'AMBIGUOUS')
40
- score *= 1.5;
41
- // Boost for cross-file-type connections
42
- if (sourceFileType && targetFileType && sourceFileType !== targetFileType)
43
- score *= 1.3;
44
- // Boost for INFERRED edges based on confidence score
45
- if (confidence === 'INFERRED')
46
- score *= 1 + (confidenceScore ?? 0.5);
47
- surprises.push({
48
- from: graph.getNodeAttribute(source, 'label') || source,
49
- fromCommunity: cu,
50
- fromFile: graph.getNodeAttribute(source, 'sourceFile') || '',
51
- to: graph.getNodeAttribute(target, 'label') || target,
52
- toCommunity: cv,
53
- toFile: graph.getNodeAttribute(target, 'sourceFile') || '',
54
- relation: attrs.relation || '',
55
- confidence,
56
- score,
57
- });
58
- }
59
- });
60
- return surprises.sort((a, b) => b.score - a.score).slice(0, topN);
61
- }
62
- /**
63
- * Compute high-level graph statistics.
64
- */
65
- export function graphStats(graph, graphPath) {
66
- const confidence = {};
67
- const relations = {};
68
- const fileTypes = {};
69
- const commSet = new Set();
70
- graph.forEachEdge((_, attrs) => {
71
- const c = attrs.confidence || 'UNKNOWN';
72
- confidence[c] = (confidence[c] ?? 0) + 1;
73
- const r = attrs.relation || 'unknown';
74
- relations[r] = (relations[r] ?? 0) + 1;
75
- });
76
- graph.forEachNode((_, attrs) => {
77
- const ft = attrs.fileType || 'unknown';
78
- fileTypes[ft] = (fileTypes[ft] ?? 0) + 1;
79
- const c = attrs.community;
80
- if (c !== undefined)
81
- commSet.add(c);
82
- });
83
- const topRelations = Object.fromEntries(Object.entries(relations)
84
- .sort(([, a], [, b]) => b - a)
85
- .slice(0, 10));
86
- return {
87
- nodes: graph.order,
88
- edges: graph.size,
89
- communities: commSet.size,
90
- confidence: confidence,
91
- fileTypes,
92
- topRelations,
93
- isDirected: graph.type === 'directed',
94
- graphPath,
95
- };
96
- }
97
- /**
98
- * Build a complete GraphAnalysis object from an annotated graph.
99
- * Assumes community detection has already been run (nodes have `community` attribute).
100
- */
101
- export function buildAnalysis(graph, graphPath) {
102
- const communities = {};
103
- graph.forEachNode((id, attrs) => {
104
- const c = attrs.community;
105
- if (c !== undefined) {
106
- if (!communities[c])
107
- communities[c] = [];
108
- communities[c].push(id);
109
- }
110
- });
111
- return {
112
- godNodes: godNodes(graph),
113
- surprises: surprisingConnections(graph),
114
- communities,
115
- stats: graphStats(graph, graphPath),
116
- };
117
- }
118
- /**
119
- * Generate clarifying questions about uncertain or structurally interesting graph patterns.
120
- * Sorted by priority (high → medium → low), capped at 25 total.
121
- */
122
- export function suggestQuestions(graph, communities) {
123
- const questions = [];
124
- // Build communities map if not provided
125
- const commMap = communities ?? {};
126
- if (!communities) {
127
- graph.forEachNode((id, attrs) => {
128
- const c = attrs.community;
129
- if (c !== undefined) {
130
- if (!commMap[c])
131
- commMap[c] = [];
132
- commMap[c].push(id);
133
- }
134
- });
135
- }
136
- // AMBIGUOUS_EDGE: cross-community edges with AMBIGUOUS confidence
137
- graph.forEachEdge((_, attrs, source, target) => {
138
- if (attrs.confidence !== 'AMBIGUOUS')
139
- return;
140
- const cu = graph.getNodeAttribute(source, 'community');
141
- const cv = graph.getNodeAttribute(target, 'community');
142
- if (cu === undefined || cv === undefined || cu === cv)
143
- return;
144
- const from = graph.getNodeAttribute(source, 'label') || source;
145
- const to = graph.getNodeAttribute(target, 'label') || target;
146
- questions.push({
147
- type: 'AMBIGUOUS_EDGE',
148
- question: `What is the exact relationship between ${from} and ${to}? The edge is marked AMBIGUOUS.`,
149
- nodes: [source, target],
150
- priority: 'high',
151
- });
152
- });
153
- // BRIDGE_NODE: nodes with neighbors in ≥3 different communities (simple heuristic)
154
- const bridgeCandidates = [];
155
- graph.forEachNode((id, attrs) => {
156
- const neighborComms = new Set();
157
- graph.neighbors(id).forEach((n) => {
158
- const c = graph.getNodeAttribute(n, 'community');
159
- if (c !== undefined)
160
- neighborComms.add(c);
161
- });
162
- if (neighborComms.size >= 3) {
163
- bridgeCandidates.push({
164
- id,
165
- label: attrs.label || id,
166
- comms: Array.from(neighborComms),
167
- });
168
- }
169
- });
170
- bridgeCandidates
171
- .sort((a, b) => b.comms.length - a.comms.length)
172
- .slice(0, 5)
173
- .forEach(({ id, label, comms }) => {
174
- questions.push({
175
- type: 'BRIDGE_NODE',
176
- question: `Is ${label} intentionally a bridge between communities [${comms.join(', ')}]? Should it be split?`,
177
- nodes: [id],
178
- priority: 'high',
179
- });
180
- });
181
- // INFERRED_GOD_NODE: top 5 high-degree nodes where >50% of edges are INFERRED
182
- const inferredGodNodes = [];
183
- graph.forEachNode((id, attrs) => {
184
- const edges = graph.edges(id);
185
- if (edges.length === 0)
186
- return;
187
- const inferredCount = edges.filter((e) => graph.getEdgeAttribute(e, 'confidence') === 'INFERRED').length;
188
- if (inferredCount / edges.length > 0.5) {
189
- inferredGodNodes.push({
190
- id,
191
- label: attrs.label || id,
192
- degree: graph.degree(id),
193
- });
194
- }
195
- });
196
- inferredGodNodes
197
- .sort((a, b) => b.degree - a.degree)
198
- .slice(0, 5)
199
- .forEach(({ id, label }) => {
200
- questions.push({
201
- type: 'INFERRED_GOD_NODE',
202
- question: `Verify the connections of ${label}: most edges are inferred, not extracted.`,
203
- nodes: [id],
204
- priority: 'medium',
205
- });
206
- });
207
- // LOW_COHESION_COMMUNITY: communities where >70% of edges are cross-community
208
- const commIds = Object.keys(commMap).map(Number);
209
- const lowCohesion = [];
210
- for (const commId of commIds) {
211
- const members = new Set(commMap[commId] ?? []);
212
- if (members.size === 0)
213
- continue;
214
- let total = 0;
215
- let crossEdges = 0;
216
- members.forEach((nodeId) => {
217
- graph.edges(nodeId).forEach((e) => {
218
- total++;
219
- const src = graph.source(e);
220
- const tgt = graph.target(e);
221
- const otherNode = src === nodeId ? tgt : src;
222
- if (!members.has(otherNode))
223
- crossEdges++;
224
- });
225
- });
226
- // Each edge is counted twice (once per endpoint), halve the totals
227
- total = Math.ceil(total / 2);
228
- crossEdges = Math.ceil(crossEdges / 2);
229
- if (total > 0 && crossEdges / total > 0.7) {
230
- lowCohesion.push({ id: commId, ratio: crossEdges / total });
231
- }
232
- }
233
- lowCohesion
234
- .sort((a, b) => b.ratio - a.ratio)
235
- .slice(0, 3)
236
- .forEach(({ id }) => {
237
- questions.push({
238
- type: 'LOW_COHESION_COMMUNITY',
239
- question: `Community ${id} has low cohesion. Should it be split or reorganized?`,
240
- nodes: commMap[id] ?? [],
241
- priority: 'medium',
242
- });
243
- });
244
- // ISOLATED_NODE: degree 0
245
- let isolatedCount = 0;
246
- graph.forEachNode((id, attrs) => {
247
- if (isolatedCount >= 10)
248
- return;
249
- if (graph.degree(id) === 0) {
250
- const label = attrs.label || id;
251
- questions.push({
252
- type: 'ISOLATED_NODE',
253
- question: `Why is ${label} isolated (no connections)? It may need imports/references added.`,
254
- nodes: [id],
255
- priority: 'low',
256
- });
257
- isolatedCount++;
258
- }
259
- });
260
- // Sort by priority: high → medium → low
261
- const priorityOrder = { high: 0, medium: 1, low: 2 };
262
- questions.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
263
- return questions.slice(0, 25);
264
- }
265
- /**
266
- * Compute the diff between two serialized graph snapshots.
267
- */
268
- export function graphDiff(before, after) {
269
- const beforeNodeIds = new Set(before.nodes.map((n) => n.id));
270
- const afterNodeIds = new Set(after.nodes.map((n) => n.id));
271
- const addedNodes = after.nodes.filter((n) => !beforeNodeIds.has(n.id)).map((n) => n.id);
272
- const removedNodes = before.nodes.filter((n) => !afterNodeIds.has(n.id)).map((n) => n.id);
273
- const edgeKey = (e) => `${String(e.source)}|${String(e.target)}|${String(e['relation'] ?? '')}`;
274
- const beforeEdgeKeys = new Set(before.links.map(edgeKey));
275
- const afterEdgeKeys = new Set(after.links.map(edgeKey));
276
- const addedEdges = after.links
277
- .filter((e) => !beforeEdgeKeys.has(edgeKey(e)))
278
- .map((e) => ({ source: String(e.source), target: String(e.target), relation: String(e['relation'] ?? '') }));
279
- const removedEdges = before.links
280
- .filter((e) => !afterEdgeKeys.has(edgeKey(e)))
281
- .map((e) => ({ source: String(e.source), target: String(e.target), relation: String(e['relation'] ?? '') }));
282
- // Community changes: nodes present in both snapshots with a changed community attribute
283
- const beforeNodeMap = new Map(before.nodes.map((n) => [n.id, n]));
284
- const communityChanges = [];
285
- for (const afterNode of after.nodes) {
286
- const beforeNode = beforeNodeMap.get(afterNode.id);
287
- if (!beforeNode)
288
- continue;
289
- const oldCommunity = beforeNode['community'];
290
- const newCommunity = afterNode['community'];
291
- if (oldCommunity !== undefined && newCommunity !== undefined && oldCommunity !== newCommunity) {
292
- communityChanges.push({ node: afterNode.id, oldCommunity, newCommunity });
293
- }
294
- }
295
- return { addedNodes, removedNodes, addedEdges, removedEdges, communityChanges };
296
- }
297
- //# sourceMappingURL=analyze.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/analyze.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import Graph from 'graphology';
2
- import type { ExtractionResult } from './types.js';
3
- /**
4
- * Build a graphology Graph from extracted nodes and edges.
5
- * Deduplicates nodes by id, merges parallel edges with higher weight.
6
- */
7
- export declare function buildGraph(extraction: ExtractionResult): Graph;
8
- //# sourceMappingURL=build.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,gBAAgB,GAAG,KAAK,CAsD9D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/build.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,YAAY,CAAC;AAG/B;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,UAA4B;IACrD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAE5D,oEAAoE;IACpE,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAAE,SAAS;QAE1C,mEAAmE;QACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;gBACzB,EAAE,EAAE,IAAI,CAAC,MAAM;gBACf,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,QAAQ,EAAE,SAAS;gBACnB,UAAU,EAAE,EAAE;aACf,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE;gBACzB,EAAE,EAAE,IAAI,CAAC,MAAM;gBACf,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,QAAQ,EAAE,SAAS;gBACnB,UAAU,EAAE,EAAE;aACf,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;gBACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,CAAC;gBACxB,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;aACpC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wCAAwC;YACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,IAAI,GAAI,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAY,IAAI,CAAC,CAAC;gBACzE,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,12 +0,0 @@
1
- import type { ExtractionResult } from './types.js';
2
- export declare class FileCache {
3
- private cacheDir;
4
- constructor(outputDir: string);
5
- /** Strip YAML frontmatter (--- blocks) before hashing so metadata-only changes don't bust the cache. */
6
- private stripFrontmatter;
7
- key(filePath: string, content: string): string;
8
- get(key: string): ExtractionResult | null;
9
- set(key: string, result: ExtractionResult): void;
10
- has(key: string): boolean;
11
- }
12
- //# sourceMappingURL=cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAS;gBAEb,SAAS,EAAE,MAAM;IAK7B,wGAAwG;IACxG,OAAO,CAAC,gBAAgB;IAMxB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAM9C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAUzC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAOhD,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAG1B"}
@@ -1,43 +0,0 @@
1
- import { createHash } from 'crypto';
2
- import { existsSync, readFileSync, writeFileSync, mkdirSync, renameSync } from 'fs';
3
- import { join } from 'path';
4
- export class FileCache {
5
- cacheDir;
6
- constructor(outputDir) {
7
- this.cacheDir = join(outputDir, 'cache');
8
- mkdirSync(this.cacheDir, { recursive: true });
9
- }
10
- /** Strip YAML frontmatter (--- blocks) before hashing so metadata-only changes don't bust the cache. */
11
- stripFrontmatter(content) {
12
- if (!content.startsWith('---'))
13
- return content;
14
- const end = content.indexOf('\n---', 3);
15
- return end === -1 ? content : content.slice(end + 4);
16
- }
17
- key(filePath, content) {
18
- return createHash('sha256')
19
- .update(filePath + this.stripFrontmatter(content))
20
- .digest('hex');
21
- }
22
- get(key) {
23
- const p = join(this.cacheDir, `${key}.json`);
24
- if (!existsSync(p))
25
- return null;
26
- try {
27
- return JSON.parse(readFileSync(p, 'utf-8'));
28
- }
29
- catch {
30
- return null;
31
- }
32
- }
33
- set(key, result) {
34
- const p = join(this.cacheDir, `${key}.json`);
35
- const tmp = `${p}.tmp`;
36
- writeFileSync(tmp, JSON.stringify(result), 'utf-8');
37
- renameSync(tmp, p);
38
- }
39
- has(key) {
40
- return existsSync(join(this.cacheDir, `${key}.json`));
41
- }
42
- }
43
- //# sourceMappingURL=cache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,MAAM,OAAO,SAAS;IACZ,QAAQ,CAAS;IAEzB,YAAY,SAAiB;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACzC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,wGAAwG;IAChG,gBAAgB,CAAC,OAAe;QACtC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACxC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,QAAgB,EAAE,OAAe;QACnC,OAAO,UAAU,CAAC,QAAQ,CAAC;aACxB,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;aACjD,MAAM,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAqB,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,MAAwB;QACvC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACvB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QACpD,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrB,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -1,5 +0,0 @@
1
- import type Graph from 'graphology';
2
- export declare function detectCommunities(graph: Graph): Promise<Record<number, string[]>>;
3
- export declare function cohesionScore(graph: Graph, communityNodes: string[]): number;
4
- export declare function splitOversizedCommunities(graph: Graph, communities: Record<number, string[]>, threshold?: number, louvainFn?: ((g: Graph) => Record<string, number>) | null): Record<number, string[]>;
5
- //# sourceMappingURL=cluster.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cluster.d.ts","sourceRoot":"","sources":["../../src/cluster.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AAEpC,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAkBvF;AAsBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,MAAM,CAe5E;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EACrC,SAAS,SAAO,GACf,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CA6B1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"cluster.js","sourceRoot":"","sources":["../../src/cluster.ts"],"names":[],"mappings":"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"}
@@ -1,21 +0,0 @@
1
- import type { BuildOptions, ClassifiedFile } from './types.js';
2
- /**
3
- * Walks up the directory tree from rootPath to the filesystem root,
4
- * collecting patterns from any `.graphifyignore` files found along the way.
5
- * Lines beginning with `#` are comments; blank lines are skipped.
6
- * Returns the combined list of pattern strings (closest dir first).
7
- */
8
- export declare function loadIgnorePatterns(rootPath: string): string[];
9
- /**
10
- * Recursively collects and classifies all files under rootPath, applying
11
- * exclusion rules for directories, file size limits, security-sensitive filenames,
12
- * .graphifyignore patterns, and optional language filtering from BuildOptions.
13
- */
14
- export declare function collectFiles(rootPath: string, options?: BuildOptions): ClassifiedFile[];
15
- /**
16
- * Analyses a collected file corpus and returns a list of human-readable warning
17
- * strings describing potential issues. Returns an empty array when the corpus
18
- * looks healthy.
19
- */
20
- export declare function corpusHealth(files: ClassifiedFile[]): string[];
21
- //# sourceMappingURL=detect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/detect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAY,MAAM,YAAY,CAAC;AA6EzE;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB7D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,cAAc,EAAE,CAuDlB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,EAAE,CAsC9D"}
@@ -1,195 +0,0 @@
1
- import { readdirSync, readFileSync, statSync } from 'fs';
2
- import { join, extname, relative, dirname } from 'path';
3
- const DEFAULT_MAX_FILE_SIZE = 500 * 1024; // 500KB
4
- const EXCLUDED_DIRS = new Set([
5
- 'node_modules', '.git', 'dist', 'build', '.monomind',
6
- '__pycache__', '.pytest_cache', 'target', '.cache',
7
- ]);
8
- // Maps file extension to [fileType, language]
9
- const EXTENSION_MAP = {
10
- '.ts': ['code', 'typescript'], '.tsx': ['code', 'typescript'],
11
- '.mts': ['code', 'typescript'], '.cts': ['code', 'typescript'],
12
- '.js': ['code', 'javascript'], '.jsx': ['code', 'javascript'],
13
- '.mjs': ['code', 'javascript'], '.cjs': ['code', 'javascript'],
14
- '.py': ['code', 'python'], '.go': ['code', 'go'],
15
- '.rs': ['code', 'rust'], '.java': ['code', 'java'],
16
- '.c': ['code', 'c'], '.cpp': ['code', 'cpp'],
17
- '.h': ['code', 'c'], '.cs': ['code', 'csharp'],
18
- '.rb': ['code', 'ruby'], '.php': ['code', 'php'],
19
- '.swift': ['code', 'swift'], '.kt': ['code', 'kotlin'],
20
- '.scala': ['code', 'scala'], '.md': ['document', 'markdown'],
21
- '.txt': ['document', 'text'], '.rst': ['document', 'rst'],
22
- };
23
- // Patterns matching filenames/paths that may contain credentials or secrets.
24
- // Matched against both the basename and the relative path.
25
- const SECURITY_SENSITIVE_PATTERNS = [
26
- // .env files
27
- /^\.env(\.|$)/i,
28
- /[/\\]\.env(\.|$)/i,
29
- // PEM / key files
30
- /\.(pem|key|p12|pfx)$/i,
31
- // SSH private keys
32
- /\b(id_rsa|id_dsa|id_ecdsa|id_ed25519)(\.[^/\\]*)?$/i,
33
- // Credential / secret JSON / YAML
34
- /\bcredentials\.json$/i,
35
- /\bsecrets?\.(json|ya?ml)$/i,
36
- // AWS
37
- /\baws-credentials$/i,
38
- /[/\\]\.aws[/\\]credentials$/i,
39
- // GCP / Firebase
40
- /\bservice-?account\.json$/i,
41
- /\bclient_secret\.json$/i,
42
- /\bgoogle-credentials\.json$/i,
43
- /\bfirebase[^/\\]*\.json$/i,
44
- // Auth-related
45
- /\bprivate\.key$/i,
46
- /\bprivate_key\.json$/i,
47
- /\.htpasswd$/i,
48
- /\bshadow$/i,
49
- /\bvault-token$/i,
50
- /\.token$/i,
51
- /\bauth\.json$/i,
52
- // Package auth files
53
- /\.npmrc$/i,
54
- /\.pypirc$/i,
55
- /\bnetrc$/i,
56
- /\.pgpass$/i,
57
- ];
58
- /** Returns true if the given basename or relative path matches any security-sensitive pattern. */
59
- function isSecuritySensitive(basename, relPath) {
60
- return SECURITY_SENSITIVE_PATTERNS.some((re) => re.test(basename) || re.test(relPath));
61
- }
62
- /**
63
- * Converts a .graphifyignore pattern line into a RegExp.
64
- * Escapes regex special chars then converts `*` to `.*`.
65
- */
66
- function patternToRegex(pattern) {
67
- const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
68
- return new RegExp(escaped);
69
- }
70
- /**
71
- * Walks up the directory tree from rootPath to the filesystem root,
72
- * collecting patterns from any `.graphifyignore` files found along the way.
73
- * Lines beginning with `#` are comments; blank lines are skipped.
74
- * Returns the combined list of pattern strings (closest dir first).
75
- */
76
- export function loadIgnorePatterns(rootPath) {
77
- const patterns = [];
78
- let current = rootPath;
79
- while (true) {
80
- const candidate = join(current, '.graphifyignore');
81
- try {
82
- const contents = readFileSync(candidate, 'utf8');
83
- for (const line of contents.split(/\r?\n/)) {
84
- const trimmed = line.trim();
85
- if (trimmed && !trimmed.startsWith('#')) {
86
- patterns.push(trimmed);
87
- }
88
- }
89
- }
90
- catch {
91
- // File does not exist or is unreadable at this level — continue walking up
92
- }
93
- const parent = dirname(current);
94
- if (parent === current)
95
- break; // reached filesystem root
96
- current = parent;
97
- }
98
- return patterns;
99
- }
100
- /**
101
- * Recursively collects and classifies all files under rootPath, applying
102
- * exclusion rules for directories, file size limits, security-sensitive filenames,
103
- * .graphifyignore patterns, and optional language filtering from BuildOptions.
104
- */
105
- export function collectFiles(rootPath, options = {}) {
106
- const maxFileSizeBytes = options.maxFileSizeBytes ?? DEFAULT_MAX_FILE_SIZE;
107
- const codeOnly = options.codeOnly ?? false;
108
- const languageFilter = options.languages ? new Set(options.languages) : null;
109
- const excludePatterns = options.excludePatterns ?? [];
110
- // Load .graphifyignore patterns and compile to regexes
111
- const ignorePatternStrings = loadIgnorePatterns(rootPath);
112
- const ignoreRegexes = ignorePatternStrings.map(patternToRegex);
113
- const results = [];
114
- function walkDir(dirPath) {
115
- let entries;
116
- try {
117
- entries = readdirSync(dirPath);
118
- }
119
- catch {
120
- return;
121
- }
122
- for (const entry of entries) {
123
- const fullPath = join(dirPath, entry);
124
- const relPath = relative(rootPath, fullPath);
125
- // Check against caller-supplied exclude patterns
126
- if (excludePatterns.some((pat) => relPath.includes(pat)))
127
- continue;
128
- // Check against .graphifyignore patterns
129
- if (ignoreRegexes.some((re) => re.test(relPath)))
130
- continue;
131
- let stat;
132
- try {
133
- stat = statSync(fullPath);
134
- }
135
- catch {
136
- continue;
137
- }
138
- if (stat.isDirectory()) {
139
- if (EXCLUDED_DIRS.has(entry))
140
- continue;
141
- walkDir(fullPath);
142
- continue;
143
- }
144
- if (!stat.isFile())
145
- continue;
146
- if (stat.size > maxFileSizeBytes)
147
- continue;
148
- // Skip security-sensitive files
149
- if (isSecuritySensitive(entry, relPath))
150
- continue;
151
- const ext = extname(entry).toLowerCase();
152
- const mapping = EXTENSION_MAP[ext];
153
- if (!mapping)
154
- continue;
155
- const [fileType, language] = mapping;
156
- if (codeOnly && fileType !== 'code')
157
- continue;
158
- if (languageFilter && !languageFilter.has(language))
159
- continue;
160
- results.push({ path: fullPath, fileType, language, sizeBytes: stat.size });
161
- }
162
- }
163
- walkDir(rootPath);
164
- return results;
165
- }
166
- /**
167
- * Analyses a collected file corpus and returns a list of human-readable warning
168
- * strings describing potential issues. Returns an empty array when the corpus
169
- * looks healthy.
170
- */
171
- export function corpusHealth(files) {
172
- const warnings = [];
173
- const codeFiles = files.filter((f) => f.fileType === 'code');
174
- const docFiles = files.filter((f) => f.fileType === 'document');
175
- const totalSize = files.reduce((sum, f) => sum + f.sizeBytes, 0);
176
- if (codeFiles.length < 5) {
177
- warnings.push(`Corpus is very small (${codeFiles.length} code files). Graph may be sparse.`);
178
- }
179
- if (totalSize < 50_000) {
180
- const kb = Math.round(totalSize / 1024);
181
- warnings.push(`Corpus total size is very small (~${kb}KB). Consider including more source files.`);
182
- }
183
- if (totalSize > 50_000_000) {
184
- const mb = Math.round(totalSize / (1024 * 1024));
185
- warnings.push(`Corpus is very large (~${mb}MB). Build may be slow. Consider using codeOnly or excludePatterns.`);
186
- }
187
- if (docFiles.length === 0) {
188
- warnings.push('No documentation files found. Graph will have no document nodes.');
189
- }
190
- if (files.length > 0 && docFiles.length / files.length > 0.8) {
191
- warnings.push('Corpus is mostly documentation. Consider codeOnly: true for a code-focused graph.');
192
- }
193
- return warnings;
194
- }
195
- //# sourceMappingURL=detect.js.map