memorylink 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (870) hide show
  1. package/.cursorrules +0 -0
  2. package/.github/workflows/buddy-check.yml +105 -0
  3. package/.github/workflows/memorylink-preflight.yml +63 -0
  4. package/.github/workflows/release-on-tag.yml +58 -0
  5. package/.github/workflows/stress-tests.yml +79 -0
  6. package/.memorylinkignore +24 -0
  7. package/5000_SCENARIOS_TEST_RESULTS.md +174 -0
  8. package/ADVANCED_SCENARIOS_TEST_RESULTS.md +377 -0
  9. package/AGGRESSIVE_RANDOM_TEST_RESULTS.md +134 -0
  10. package/AI_CONSENSUS_ANALYSIS.md +138 -0
  11. package/AI_CONSENSUS_ANALYSIS_FINAL.md +345 -0
  12. package/AI_CONSENSUS_ANALYSIS_v2.md +188 -0
  13. package/AI_CONSENSUS_ANALYSIS_v3.md +246 -0
  14. package/AI_CONSENSUS_ANALYSIS_v4.md +309 -0
  15. package/AI_CONSENSUS_ANALYSIS_v5.md +311 -0
  16. package/AI_CONSENSUS_ANALYSIS_v6.md +432 -0
  17. package/AI_PANEL_CLARIFICATION_REQUEST.md +37 -0
  18. package/AI_RESPONSES_BLACKBOX.md +338 -0
  19. package/AI_RESPONSES_CHATGPT.md +379 -0
  20. package/AI_RESPONSES_CLAUDE.md +464 -0
  21. package/AI_RESPONSES_CONSOLIDATED.md +560 -0
  22. package/AI_RESPONSES_DEEPSEEK.md +341 -0
  23. package/AI_RESPONSES_GEMINI.md +262 -0
  24. package/AI_RESPONSES_GROK.md +335 -0
  25. package/AI_RESPONSES_MANUS.md +246 -0
  26. package/AI_RESPONSES_PERPLEXITY.md +295 -0
  27. package/AI_RESPONSES_QWEN.md +335 -0
  28. package/AI_REVIEW_REQUEST.md +333 -0
  29. package/AI_STRATEGIC_CONSENSUS_COMPARISON.md +507 -0
  30. package/AI_VALIDATION_AND_GAP_ANALYSIS.md +410 -0
  31. package/ALL_10_AI_RESPONSES_FINAL.md +435 -0
  32. package/ALL_3_AI_RESPONSES_FINAL.md +305 -0
  33. package/ALL_4_AI_RESPONSES_FINAL.md +335 -0
  34. package/ALL_5_AI_RESPONSES_FINAL.md +349 -0
  35. package/ALL_6_AI_RESPONSES_FINAL.md +354 -0
  36. package/ALL_7_AI_RESPONSES_FINAL.md +369 -0
  37. package/ALL_8_AI_RESPONSES_FINAL.md +381 -0
  38. package/ALL_9_AI_RESPONSES_FINAL.md +398 -0
  39. package/ALL_AI_RESPONSES_TRACKER.md +152 -0
  40. package/ALL_AI_RESPONSES_VALIDATED.md +261 -0
  41. package/ALL_FEATURES_COMPLETE.md +198 -0
  42. package/BREAK_IT_TEST_RESULTS.md +273 -0
  43. package/BUDDY_CHECK_STRESS_TEST_PLAN.md +1089 -0
  44. package/CHANGELOG.md +135 -0
  45. package/CHATGPT_GAP_ANALYSIS.md +286 -0
  46. package/CHATGPT_V2_ANALYSIS.md +109 -0
  47. package/CHECK_MISSING_FEATURES.md +192 -0
  48. package/CI_CD_INTEGRATION.md +421 -0
  49. package/COMPETITIVE_LAUNCH_STRATEGY.md +257 -0
  50. package/COMPLETE_COMPETITIVE_ANALYSIS_ALL_AIS.md +339 -0
  51. package/COMPLETE_DEVELOPMENT_PLAN_ALL_AIS.md +622 -0
  52. package/COMPREHENSIVE_FEATURE_ANALYSIS_100_PERCENT.md +423 -0
  53. package/COMPREHENSIVE_TEST_SUMMARY.md +314 -0
  54. package/CONTINUOUS_TESTING_COMPLETE.md +268 -0
  55. package/CONTINUOUS_TESTING_GUIDE.md +328 -0
  56. package/CONTINUOUS_TEST_FINAL_RESULTS.md +148 -0
  57. package/CONTINUOUS_TEST_INSTRUCTIONS.md +173 -0
  58. package/CONTINUOUS_TEST_RESULTS.md +194 -0
  59. package/CONTINUOUS_TEST_STATUS.md +68 -0
  60. package/CURSOR_AI_BUDDY_CHECK_GUIDE.md +439 -0
  61. package/CURSOR_AI_INTEGRATION_GUIDE.md +775 -0
  62. package/CURSOR_AI_V1.4_NEXT_STEPS.md +314 -0
  63. package/CURSOR_BREAK_IT_TEST.md +389 -0
  64. package/CURSOR_DOCUMENTATION_RULES.md +259 -0
  65. package/CURSOR_HOSTILE_TEST_DOCUMENT.md +343 -0
  66. package/CURSOR_PROMPTS_FOR_TESTING.md +252 -0
  67. package/DEPLOYMENT_GUIDE.md +493 -0
  68. package/DEVELOPMENT_AND_OVERNIGHT_TESTING.md +304 -0
  69. package/DEVELOPMENT_PROGRESS.md +185 -0
  70. package/DOCS_CLEANUP_SUMMARY.md +192 -0
  71. package/DOC_CONFIDENTIALITY_RULES.md +259 -0
  72. package/E2E_TEST_REPORT_v1.3.0.md +196 -0
  73. package/E2E_TEST_RESULTS.md +250 -0
  74. package/E2E_TEST_SCENARIOS.md +357 -0
  75. package/END_TO_END_TEST_REPORT.md +217 -0
  76. package/ENHANCEMENT_RECOMMENDATIONS.md +368 -0
  77. package/EPIPE_FIX_SUMMARY.md +177 -0
  78. package/FEEDBACK_TEMPLATE.md +173 -0
  79. package/FINAL_100_PERCENT_CONFIRMATION.md +319 -0
  80. package/FINAL_8_AI_CONSENSUS_SUMMARY.md +355 -0
  81. package/FINAL_CONFIRMATION.md +143 -0
  82. package/FINAL_E2E_TEST_REPORT.md +248 -0
  83. package/FINAL_E2E_TEST_RESULTS.md +212 -0
  84. package/FINAL_LAUNCH_CLARIFICATION_SUMMARY.md +101 -0
  85. package/FINAL_LAUNCH_PLAN_BASED_ON_AI_CONSENSUS.md +410 -0
  86. package/FINAL_LAUNCH_SUMMARY.md +176 -0
  87. package/FINAL_PRODUCT_TEST.md +316 -0
  88. package/FINAL_PROJECT_STATUS.md +407 -0
  89. package/FINAL_STATUS_REPORT.md +244 -0
  90. package/FINAL_STRATEGIC_PLAN_9_AIS.md +576 -0
  91. package/FINAL_TEST_EXECUTION_REPORT.md +252 -0
  92. package/FINAL_VALIDATION_DOCUMENT.md +238 -0
  93. package/FINAL_VALIDATION_SUMMARY.md +230 -0
  94. package/FIX_SPECIAL_CHARS.sh +13 -0
  95. package/FRESH_SCENARIOS_TEST_RESULTS.md +358 -0
  96. package/GAP_EVALUATION_TEMPLATE.md +146 -0
  97. package/GITHUB_SETUP_GUIDE.md +193 -0
  98. package/HOSTILE_TEST_RESULTS.md +221 -0
  99. package/HOW_MEMORYLINK_HELPS_AI.md +401 -0
  100. package/IMPLEMENTATION_PLANS_DETAILED.md +516 -0
  101. package/LAUNCH_CHECKLIST.md +247 -0
  102. package/LAUNCH_DOCS_FRAMEWORK.md +378 -0
  103. package/LAUNCH_READINESS.md +148 -0
  104. package/LAUNCH_SEQUENCE.md +137 -0
  105. package/LICENSE +67 -0
  106. package/MARKET_ANALYSIS_AND_STRATEGY.md +280 -0
  107. package/MASTER_AI_VERIFICATION_DOCUMENT.md +1085 -0
  108. package/MASTER_VALIDATION_DOCUMENT.md +818 -0
  109. package/MINORITY_OPINION_ANALYSIS.md +464 -0
  110. package/NEW_RANDOM_TEST_RESULTS.md +127 -0
  111. package/NEW_SCENARIOS_TEST_RESULTS.md +272 -0
  112. package/NEXT_ACTIONS_COMPLETE.md +137 -0
  113. package/NEXT_PLAN_BASED_ON_AI_ANALYSES.md +413 -0
  114. package/NEXT_PLAN_BASED_ON_ALL_AI_RESPONSES.md +558 -0
  115. package/NEXT_STEPS.md +120 -0
  116. package/NEXT_STEPS_ACTION_PLAN.md +369 -0
  117. package/NPM_2FA_FIX.md +113 -0
  118. package/NPM_PUBLISH_TROUBLESHOOTING.md +230 -0
  119. package/PERPLEXITY_AI_VALIDATION_REQUEST.md +318 -0
  120. package/PERPLEXITY_AI_VALIDATION_RESPONSE.md +172 -0
  121. package/PERPLEXITY_BREAK_IT_VALIDATION.md +262 -0
  122. package/PERPLEXITY_DOCS_VALIDATION.md +237 -0
  123. package/PERPLEXITY_FEEDBACK_ACTION_PLAN.md +271 -0
  124. package/PERPLEXITY_FINAL_E2E_VALIDATION.md +210 -0
  125. package/PERPLEXITY_FINAL_SUMMARY.md +211 -0
  126. package/PERPLEXITY_PHASE2_VALIDATION.md +270 -0
  127. package/PERPLEXITY_PHASE2_VALIDATION_RESPONSE.md +136 -0
  128. package/PERPLEXITY_PRIORITY2_VALIDATION.md +321 -0
  129. package/PERPLEXITY_TELEMETRY_EXPLANATION.md +174 -0
  130. package/PERPLEXITY_TELEMETRY_VALIDATION.md +118 -0
  131. package/PERPLEXITY_TELEMETRY_VALIDATION_RESPONSE.md +154 -0
  132. package/PERPLEXITY_USER_GUIDE_VALIDATION.md +236 -0
  133. package/PERPLEXITY_VALIDATION_REQUEST.md +427 -0
  134. package/PERPLEXITY_VALIDATION_REQUEST_v1.5.1.md +190 -0
  135. package/PHASE_2_COMPLETE.md +149 -0
  136. package/PRE_LAUNCH_SECURITY_AUDIT.md +155 -0
  137. package/PRE_LAUNCH_TEST_CYCLE.md +326 -0
  138. package/PRE_LAUNCH_TEST_RESULTS.md +148 -0
  139. package/PROJECT_STRUCTURE_PLAN.md +104 -0
  140. package/PUBLIC_DOCS.md +90 -0
  141. package/PUBLISH_CHECKLIST.md +134 -0
  142. package/PUSH_INSTRUCTIONS.md +120 -0
  143. package/QUICK_START_TEST_CYCLE.md +76 -0
  144. package/README.md +557 -0
  145. package/README_TEST_INSTRUCTIONS.md +65 -0
  146. package/README_v1.5.1.md +137 -0
  147. package/REALISTIC_ASSESSMENT.md +186 -0
  148. package/REAL_WORLD_VALIDATION_COMPLETE.md +98 -0
  149. package/RED_TEAM_TESTING_GUIDE.md +302 -0
  150. package/RELEASE_NOTES_v1.0.0.md +125 -0
  151. package/RELEASE_NOTES_v1.5.1.md +105 -0
  152. package/REQUEST_COUNTERS.md +22 -0
  153. package/ROADMAP_v1.6.md +335 -0
  154. package/ROUND3_RANDOM_TEST_RESULTS.md +135 -0
  155. package/SECURITY_MODEL.md +577 -0
  156. package/SESSION_SUMMARY_CURRENT_STATE.md +206 -0
  157. package/SESSION_SUMMARY_REVIEW.md +203 -0
  158. package/SINGLE_RUN_ALL_SCENARIOS_TEST.sh +129 -0
  159. package/STRATEGIC_QUESTIONS_FOR_AI_VALIDATION.md +277 -0
  160. package/STRESS_TEST_CHECK_RESULTS.md +154 -0
  161. package/STRESS_TEST_EXECUTION_GUIDE.md +284 -0
  162. package/STRESS_TEST_IMPLEMENTATION_SUMMARY.md +221 -0
  163. package/TELEMETRY.md +370 -0
  164. package/TELEMETRY_COMPLETE_SUMMARY.md +231 -0
  165. package/TELEMETRY_CONTROL_POLICY.md +135 -0
  166. package/TELEMETRY_DESIGN_SUMMARY.md +210 -0
  167. package/TELEMETRY_FINAL_STATUS.md +178 -0
  168. package/TELEMETRY_NEXT_STEPS.md +258 -0
  169. package/TELEMETRY_TESTING_NOTES.md +217 -0
  170. package/TELEMETRY_WORK_COMPLETE.md +237 -0
  171. package/TEST_PLAN_v1.0.1.md +194 -0
  172. package/TEST_RESULTS_SUMMARY.md +128 -0
  173. package/TREE_SITTER_EXPLANATION.md +303 -0
  174. package/TROUBLESHOOTING.md +62 -0
  175. package/ULTIMATE_SCENARIOS_TEST_RESULTS.md +366 -0
  176. package/USER_FEEDBACK_TEMPLATE.md +104 -0
  177. package/USER_GUIDE.md +809 -0
  178. package/V1.1_DEVELOPMENT_COMPLETE.md +299 -0
  179. package/V1.1_SCENARIOS_ADDED.md +161 -0
  180. package/V1.2_CODE_STRUCTURE_IMPLEMENTATION.md +243 -0
  181. package/V1.3_COMPETITIVE_LAUNCH_COMPLETE.md +253 -0
  182. package/V1.3_COMPETITIVE_LAUNCH_IMPLEMENTATION_PLAN.md +385 -0
  183. package/V1.3_TEAM_PATTERNS_IMPLEMENTATION.md +183 -0
  184. package/V1.4_BUILD_PLAN_IMPLEMENTATION.md +698 -0
  185. package/V1.4_COMPLETE_SUMMARY_FOR_AI_REVIEW.md +516 -0
  186. package/V1.4_COMPLETE_VALIDATION_DOCUMENT.md +601 -0
  187. package/V1.4_DEVELOPMENT_PROGRESS.md +117 -0
  188. package/V1.4_FINAL_STATUS.md +147 -0
  189. package/V1.4_INTEGRATION_COMPLETE.md +207 -0
  190. package/V1.4_INTEGRATION_TEST_RESULTS.md +181 -0
  191. package/V1.4_OBSERVABILITY_AND_OVERRIDE_COMPLETE.md +180 -0
  192. package/V1.4_PHASE_3_COMPLETE.md +135 -0
  193. package/V1.4_RUNTIME_TESTING_GUIDE.md +364 -0
  194. package/V1.4_VERIFICATION_REPORT.md +199 -0
  195. package/V1.5.1_COMPLETE_SUMMARY.md +234 -0
  196. package/V1.5.1_RELEASE_NOTES.md +206 -0
  197. package/V1.5.1_RELEASE_READY.md +198 -0
  198. package/V1.5_COMPLETE_SUMMARY.md +264 -0
  199. package/V1.5_COMPLETE_VERIFICATION.md +183 -0
  200. package/V1.5_DESIGN_NOTES.md +272 -0
  201. package/V1.5_FINAL_STATUS.md +224 -0
  202. package/V1.5_IMPLEMENTATION_SUMMARY.md +113 -0
  203. package/V1.5_IMPROVEMENTS_COMPLETE.md +205 -0
  204. package/V1.5_PHASE1_COMPLETE.md +183 -0
  205. package/V1.5_PHASE1_PROGRESS.md +102 -0
  206. package/V1.5_PHASE2_COMPLETE.md +133 -0
  207. package/V1.5_PHASE2_PLAN.md +185 -0
  208. package/V1.5_PRIORITIZATION.md +313 -0
  209. package/V1.5_PRIORITY2_COMPLETE.md +150 -0
  210. package/V1.5_TESTING_COMPLETE.md +69 -0
  211. package/V1.5_TEST_RESULTS.md +178 -0
  212. package/V1.5_VALIDATION_RESULTS.md +209 -0
  213. package/V1.6_GAP_TRACKING.md +118 -0
  214. package/VALIDATION_SUMMARY_FOR_PERPLEXITY.md +83 -0
  215. package/VERIFICATION_REPORT.md +220 -0
  216. package/VERSION_UPDATE_VERIFICATION.md +76 -0
  217. package/config/tsconfig.json +21 -0
  218. package/dist/cli.d.ts +9 -0
  219. package/dist/cli.d.ts.map +1 -0
  220. package/dist/cli.js +1114 -0
  221. package/dist/cli.js.map +1 -0
  222. package/dist/commands/archive.d.ts +20 -0
  223. package/dist/commands/archive.d.ts.map +1 -0
  224. package/dist/commands/archive.js +231 -0
  225. package/dist/commands/archive.js.map +1 -0
  226. package/dist/commands/auto-context.d.ts +22 -0
  227. package/dist/commands/auto-context.d.ts.map +1 -0
  228. package/dist/commands/auto-context.js +172 -0
  229. package/dist/commands/auto-context.js.map +1 -0
  230. package/dist/commands/auto-log.d.ts +30 -0
  231. package/dist/commands/auto-log.d.ts.map +1 -0
  232. package/dist/commands/auto-log.js +500 -0
  233. package/dist/commands/auto-log.js.map +1 -0
  234. package/dist/commands/change.d.ts +13 -0
  235. package/dist/commands/change.d.ts.map +1 -0
  236. package/dist/commands/change.js +254 -0
  237. package/dist/commands/change.js.map +1 -0
  238. package/dist/commands/checkpoint.d.ts +26 -0
  239. package/dist/commands/checkpoint.d.ts.map +1 -0
  240. package/dist/commands/checkpoint.js +326 -0
  241. package/dist/commands/checkpoint.js.map +1 -0
  242. package/dist/commands/configure.d.ts +21 -0
  243. package/dist/commands/configure.d.ts.map +1 -0
  244. package/dist/commands/configure.js +283 -0
  245. package/dist/commands/configure.js.map +1 -0
  246. package/dist/commands/consolidate.d.ts +19 -0
  247. package/dist/commands/consolidate.d.ts.map +1 -0
  248. package/dist/commands/consolidate.js +236 -0
  249. package/dist/commands/consolidate.js.map +1 -0
  250. package/dist/commands/context.d.ts +10 -0
  251. package/dist/commands/context.d.ts.map +1 -0
  252. package/dist/commands/context.js +571 -0
  253. package/dist/commands/context.js.map +1 -0
  254. package/dist/commands/detect.d.ts +13 -0
  255. package/dist/commands/detect.d.ts.map +1 -0
  256. package/dist/commands/detect.js +187 -0
  257. package/dist/commands/detect.js.map +1 -0
  258. package/dist/commands/doctor.d.ts +19 -0
  259. package/dist/commands/doctor.d.ts.map +1 -0
  260. package/dist/commands/doctor.js +1272 -0
  261. package/dist/commands/doctor.js.map +1 -0
  262. package/dist/commands/export.d.ts +3 -0
  263. package/dist/commands/export.d.ts.map +1 -0
  264. package/dist/commands/export.js +95 -0
  265. package/dist/commands/export.js.map +1 -0
  266. package/dist/commands/graph.d.ts +25 -0
  267. package/dist/commands/graph.d.ts.map +1 -0
  268. package/dist/commands/graph.js +208 -0
  269. package/dist/commands/graph.js.map +1 -0
  270. package/dist/commands/hooks.d.ts +9 -0
  271. package/dist/commands/hooks.d.ts.map +1 -0
  272. package/dist/commands/hooks.js +240 -0
  273. package/dist/commands/hooks.js.map +1 -0
  274. package/dist/commands/impact.d.ts +18 -0
  275. package/dist/commands/impact.d.ts.map +1 -0
  276. package/dist/commands/impact.js +163 -0
  277. package/dist/commands/impact.js.map +1 -0
  278. package/dist/commands/index-vector.d.ts +13 -0
  279. package/dist/commands/index-vector.d.ts.map +1 -0
  280. package/dist/commands/index-vector.js +103 -0
  281. package/dist/commands/index-vector.js.map +1 -0
  282. package/dist/commands/index.d.ts +37 -0
  283. package/dist/commands/index.d.ts.map +1 -0
  284. package/dist/commands/index.js +105 -0
  285. package/dist/commands/index.js.map +1 -0
  286. package/dist/commands/init.d.ts +8 -0
  287. package/dist/commands/init.d.ts.map +1 -0
  288. package/dist/commands/init.js +200 -0
  289. package/dist/commands/init.js.map +1 -0
  290. package/dist/commands/inject.d.ts +22 -0
  291. package/dist/commands/inject.d.ts.map +1 -0
  292. package/dist/commands/inject.js +394 -0
  293. package/dist/commands/inject.js.map +1 -0
  294. package/dist/commands/learn.d.ts +13 -0
  295. package/dist/commands/learn.d.ts.map +1 -0
  296. package/dist/commands/learn.js +282 -0
  297. package/dist/commands/learn.js.map +1 -0
  298. package/dist/commands/lock.d.ts +35 -0
  299. package/dist/commands/lock.d.ts.map +1 -0
  300. package/dist/commands/lock.js +308 -0
  301. package/dist/commands/lock.js.map +1 -0
  302. package/dist/commands/memory.d.ts +15 -0
  303. package/dist/commands/memory.d.ts.map +1 -0
  304. package/dist/commands/memory.js +366 -0
  305. package/dist/commands/memory.js.map +1 -0
  306. package/dist/commands/migrate.d.ts +22 -0
  307. package/dist/commands/migrate.d.ts.map +1 -0
  308. package/dist/commands/migrate.js +458 -0
  309. package/dist/commands/migrate.js.map +1 -0
  310. package/dist/commands/patterns.d.ts +18 -0
  311. package/dist/commands/patterns.d.ts.map +1 -0
  312. package/dist/commands/patterns.js +120 -0
  313. package/dist/commands/patterns.js.map +1 -0
  314. package/dist/commands/protect.d.ts +12 -0
  315. package/dist/commands/protect.d.ts.map +1 -0
  316. package/dist/commands/protect.js +181 -0
  317. package/dist/commands/protect.js.map +1 -0
  318. package/dist/commands/quickstart.d.ts +11 -0
  319. package/dist/commands/quickstart.d.ts.map +1 -0
  320. package/dist/commands/quickstart.js +256 -0
  321. package/dist/commands/quickstart.js.map +1 -0
  322. package/dist/commands/repair.d.ts +13 -0
  323. package/dist/commands/repair.d.ts.map +1 -0
  324. package/dist/commands/repair.js +157 -0
  325. package/dist/commands/repair.js.map +1 -0
  326. package/dist/commands/resolve.d.ts +19 -0
  327. package/dist/commands/resolve.d.ts.map +1 -0
  328. package/dist/commands/resolve.js +355 -0
  329. package/dist/commands/resolve.js.map +1 -0
  330. package/dist/commands/roadmap.d.ts +5 -0
  331. package/dist/commands/roadmap.d.ts.map +1 -0
  332. package/dist/commands/roadmap.js +23 -0
  333. package/dist/commands/roadmap.js.map +1 -0
  334. package/dist/commands/scopes.d.ts +10 -0
  335. package/dist/commands/scopes.d.ts.map +1 -0
  336. package/dist/commands/scopes.js +80 -0
  337. package/dist/commands/scopes.js.map +1 -0
  338. package/dist/commands/search.d.ts +9 -0
  339. package/dist/commands/search.d.ts.map +1 -0
  340. package/dist/commands/search.js +313 -0
  341. package/dist/commands/search.js.map +1 -0
  342. package/dist/commands/setup.d.ts +13 -0
  343. package/dist/commands/setup.d.ts.map +1 -0
  344. package/dist/commands/setup.js +405 -0
  345. package/dist/commands/setup.js.map +1 -0
  346. package/dist/commands/snippet.d.ts +23 -0
  347. package/dist/commands/snippet.d.ts.map +1 -0
  348. package/dist/commands/snippet.js +235 -0
  349. package/dist/commands/snippet.js.map +1 -0
  350. package/dist/commands/stats.d.ts +15 -0
  351. package/dist/commands/stats.d.ts.map +1 -0
  352. package/dist/commands/stats.js +502 -0
  353. package/dist/commands/stats.js.map +1 -0
  354. package/dist/commands/status.d.ts +8 -0
  355. package/dist/commands/status.d.ts.map +1 -0
  356. package/dist/commands/status.js +134 -0
  357. package/dist/commands/status.js.map +1 -0
  358. package/dist/commands/suggest-tags.d.ts +9 -0
  359. package/dist/commands/suggest-tags.d.ts.map +1 -0
  360. package/dist/commands/suggest-tags.js +95 -0
  361. package/dist/commands/suggest-tags.js.map +1 -0
  362. package/dist/commands/sync-rules.d.ts +14 -0
  363. package/dist/commands/sync-rules.d.ts.map +1 -0
  364. package/dist/commands/sync-rules.js +211 -0
  365. package/dist/commands/sync-rules.js.map +1 -0
  366. package/dist/commands/sync.d.ts +24 -0
  367. package/dist/commands/sync.d.ts.map +1 -0
  368. package/dist/commands/sync.js +330 -0
  369. package/dist/commands/sync.js.map +1 -0
  370. package/dist/commands/telemetry-test.d.ts +24 -0
  371. package/dist/commands/telemetry-test.d.ts.map +1 -0
  372. package/dist/commands/telemetry-test.js +84 -0
  373. package/dist/commands/telemetry-test.js.map +1 -0
  374. package/dist/commands/template.d.ts +16 -0
  375. package/dist/commands/template.d.ts.map +1 -0
  376. package/dist/commands/template.js +122 -0
  377. package/dist/commands/template.js.map +1 -0
  378. package/dist/commands/validate.d.ts +11 -0
  379. package/dist/commands/validate.d.ts.map +1 -0
  380. package/dist/commands/validate.js +144 -0
  381. package/dist/commands/validate.js.map +1 -0
  382. package/dist/commands/watch-preferences.d.ts +17 -0
  383. package/dist/commands/watch-preferences.d.ts.map +1 -0
  384. package/dist/commands/watch-preferences.js +172 -0
  385. package/dist/commands/watch-preferences.js.map +1 -0
  386. package/dist/commands/watch.d.ts +11 -0
  387. package/dist/commands/watch.d.ts.map +1 -0
  388. package/dist/commands/watch.js +223 -0
  389. package/dist/commands/watch.js.map +1 -0
  390. package/dist/config/thresholds.d.ts +8 -0
  391. package/dist/config/thresholds.d.ts.map +1 -0
  392. package/dist/config/thresholds.js +10 -0
  393. package/dist/config/thresholds.js.map +1 -0
  394. package/dist/index.d.ts +9 -0
  395. package/dist/index.d.ts.map +1 -0
  396. package/dist/index.js +31 -0
  397. package/dist/index.js.map +1 -0
  398. package/dist/memorylink.d.ts +91 -0
  399. package/dist/memorylink.d.ts.map +1 -0
  400. package/dist/memorylink.js +208 -0
  401. package/dist/memorylink.js.map +1 -0
  402. package/dist/search/local-embeddings.d.ts +21 -0
  403. package/dist/search/local-embeddings.d.ts.map +1 -0
  404. package/dist/search/local-embeddings.js +87 -0
  405. package/dist/search/local-embeddings.js.map +1 -0
  406. package/dist/search/vector-search.d.ts +58 -0
  407. package/dist/search/vector-search.d.ts.map +1 -0
  408. package/dist/search/vector-search.js +535 -0
  409. package/dist/search/vector-search.js.map +1 -0
  410. package/dist/server/mcp-server.d.ts +18 -0
  411. package/dist/server/mcp-server.d.ts.map +1 -0
  412. package/dist/server/mcp-server.js +293 -0
  413. package/dist/server/mcp-server.js.map +1 -0
  414. package/dist/telemetry.d.ts +92 -0
  415. package/dist/telemetry.d.ts.map +1 -0
  416. package/dist/telemetry.js +339 -0
  417. package/dist/telemetry.js.map +1 -0
  418. package/dist/telemetry.test.d.ts +13 -0
  419. package/dist/telemetry.test.d.ts.map +1 -0
  420. package/dist/telemetry.test.js +324 -0
  421. package/dist/telemetry.test.js.map +1 -0
  422. package/dist/test-runner/TestRunner.d.ts +68 -0
  423. package/dist/test-runner/TestRunner.d.ts.map +1 -0
  424. package/dist/test-runner/TestRunner.js +384 -0
  425. package/dist/test-runner/TestRunner.js.map +1 -0
  426. package/dist/test-runner/performance-test.d.ts +36 -0
  427. package/dist/test-runner/performance-test.d.ts.map +1 -0
  428. package/dist/test-runner/performance-test.js +163 -0
  429. package/dist/test-runner/performance-test.js.map +1 -0
  430. package/dist/test-runner/run-tests.d.ts +7 -0
  431. package/dist/test-runner/run-tests.d.ts.map +1 -0
  432. package/dist/test-runner/run-tests.js +167 -0
  433. package/dist/test-runner/run-tests.js.map +1 -0
  434. package/dist/types.d.ts +400 -0
  435. package/dist/types.d.ts.map +1 -0
  436. package/dist/types.js +81 -0
  437. package/dist/types.js.map +1 -0
  438. package/dist/utils/batch-commits.d.ts +48 -0
  439. package/dist/utils/batch-commits.d.ts.map +1 -0
  440. package/dist/utils/batch-commits.js +164 -0
  441. package/dist/utils/batch-commits.js.map +1 -0
  442. package/dist/utils/code-structure.d.ts +62 -0
  443. package/dist/utils/code-structure.d.ts.map +1 -0
  444. package/dist/utils/code-structure.js +582 -0
  445. package/dist/utils/code-structure.js.map +1 -0
  446. package/dist/utils/commit-patterns.d.ts +24 -0
  447. package/dist/utils/commit-patterns.d.ts.map +1 -0
  448. package/dist/utils/commit-patterns.js +78 -0
  449. package/dist/utils/commit-patterns.js.map +1 -0
  450. package/dist/utils/observability.d.ts +47 -0
  451. package/dist/utils/observability.d.ts.map +1 -0
  452. package/dist/utils/observability.js +137 -0
  453. package/dist/utils/observability.js.map +1 -0
  454. package/dist/utils/quality.d.ts +32 -0
  455. package/dist/utils/quality.d.ts.map +1 -0
  456. package/dist/utils/quality.js +207 -0
  457. package/dist/utils/quality.js.map +1 -0
  458. package/dist/utils/semantic-search.d.ts +29 -0
  459. package/dist/utils/semantic-search.d.ts.map +1 -0
  460. package/dist/utils/semantic-search.js +167 -0
  461. package/dist/utils/semantic-search.js.map +1 -0
  462. package/dist/utils/streaming.d.ts +24 -0
  463. package/dist/utils/streaming.d.ts.map +1 -0
  464. package/dist/utils/streaming.js +121 -0
  465. package/dist/utils/streaming.js.map +1 -0
  466. package/dist/utils/tag-suggestions.d.ts +18 -0
  467. package/dist/utils/tag-suggestions.d.ts.map +1 -0
  468. package/dist/utils/tag-suggestions.js +103 -0
  469. package/dist/utils/tag-suggestions.js.map +1 -0
  470. package/dist/utils/team-patterns.d.ts +48 -0
  471. package/dist/utils/team-patterns.d.ts.map +1 -0
  472. package/dist/utils/team-patterns.js +413 -0
  473. package/dist/utils/team-patterns.js.map +1 -0
  474. package/dist/utils/templates.d.ts +36 -0
  475. package/dist/utils/templates.d.ts.map +1 -0
  476. package/dist/utils/templates.js +200 -0
  477. package/dist/utils/templates.js.map +1 -0
  478. package/dist/utils/tree-sitter-parser.d.ts +20 -0
  479. package/dist/utils/tree-sitter-parser.d.ts.map +1 -0
  480. package/dist/utils/tree-sitter-parser.js +259 -0
  481. package/dist/utils/tree-sitter-parser.js.map +1 -0
  482. package/dist/utils/v1.6-patterns.d.ts +117 -0
  483. package/dist/utils/v1.6-patterns.d.ts.map +1 -0
  484. package/dist/utils/v1.6-patterns.js +201 -0
  485. package/dist/utils/v1.6-patterns.js.map +1 -0
  486. package/dist/utils.d.ts +176 -0
  487. package/dist/utils.d.ts.map +1 -0
  488. package/dist/utils.js +822 -0
  489. package/dist/utils.js.map +1 -0
  490. package/docs/1000_SCENARIOS_TEST_RESULTS.md +138 -0
  491. package/docs/1000_UNIQUE_SCENARIOS_TEST.md +171 -0
  492. package/docs/100_PERCENT_PASS_RATE_VERIFICATION.md +111 -0
  493. package/docs/5000_SCENARIOS_ISSUE_ANALYSIS.md +96 -0
  494. package/docs/5000_SCENARIOS_TEST_PLAN.md +281 -0
  495. package/docs/AGENT_CONTRACT.md +240 -0
  496. package/docs/AI_RESPONSE_ANALYZER.md +157 -0
  497. package/docs/AI_RESPONSE_TRACKER.md +923 -0
  498. package/docs/AI_TESTING_PROMPT.md +307 -0
  499. package/docs/AI_VALIDATION_PROMPTS.md +366 -0
  500. package/docs/ALL_AI_ANALYSES_CONSOLIDATED.md +354 -0
  501. package/docs/ALL_AI_CONSOLIDATION_FINAL.md +372 -0
  502. package/docs/ALL_AI_TEST_CONSOLIDATION.md +290 -0
  503. package/docs/ALL_AI_VALIDATION_SYNTHESIS.md +241 -0
  504. package/docs/BEST_TESTING_SOLUTION.md +227 -0
  505. package/docs/BLACKBOX_AI_ANALYSIS.md +288 -0
  506. package/docs/BLACKBOX_AI_CLARIFICATION.md +55 -0
  507. package/docs/BLACKBOX_AI_STRATEGIC_VALIDATION.md +283 -0
  508. package/docs/BLACKBOX_AI_VALIDATION_RESPONSE.md +251 -0
  509. package/docs/BLACKBOX_AI_VALIDATION_RESPONSE_v2.md +402 -0
  510. package/docs/BLACKBOX_LAUNCH_VALIDATION.md +25 -0
  511. package/docs/BLACKBOX_SUPERMEMORY_VALIDATION_AND_PLAN.md +50 -0
  512. package/docs/CAPACITY_AND_ALTERNATIVES_ANALYSIS.md +289 -0
  513. package/docs/CHATGPT_AI_CLARIFICATION.md +65 -0
  514. package/docs/CHATGPT_FINAL_VALIDATION.md +348 -0
  515. package/docs/CHATGPT_IMPLEMENTATION_GUIDE.md +325 -0
  516. package/docs/CHATGPT_LAUNCH_VALIDATION.md +47 -0
  517. package/docs/CHATGPT_MEMORY_QUALITY_AND_VSCODE_CHECK.md +43 -0
  518. package/docs/CHATGPT_SCOPE_REALITY_CHECK.md +35 -0
  519. package/docs/CHATGPT_STRATEGIC_VALIDATION.md +329 -0
  520. package/docs/CHATGPT_VALIDATION_RESPONSE.md +332 -0
  521. package/docs/CHATGPT_VALIDATION_RESPONSE_v2.md +294 -0
  522. package/docs/CHATGPT_VALIDATION_RESULTS.md +143 -0
  523. package/docs/CLAUDE_AI_ANALYSIS.md +692 -0
  524. package/docs/CLAUDE_AI_CLARIFICATION.md +67 -0
  525. package/docs/CLAUDE_AI_STRATEGIC_VALIDATION.md +578 -0
  526. package/docs/CLAUDE_AI_VALIDATION_RESPONSE.md +374 -0
  527. package/docs/CLAUDE_AI_VALIDATION_RESPONSE_v2.md +463 -0
  528. package/docs/CLAUDE_FINAL_VALIDATION.md +679 -0
  529. package/docs/CLAUDE_LAUNCH_VALIDATION.md +27 -0
  530. package/docs/CLAUDE_SUPERMEMORY_LAUNCH_PRIORITIES.md +44 -0
  531. package/docs/CLAUDE_UNIVERSAL_VISION.md +18 -0
  532. package/docs/COMPLETE_AI_VALIDATION_SYNTHESIS.md +229 -0
  533. package/docs/COMPLETE_MEMORY_ANALYSIS_SUMMARY.md +323 -0
  534. package/docs/COMPLETE_STRATEGIC_LAUNCH_PLAN.md +241 -0
  535. package/docs/COPILOT_LANGCHAIN_MEMORY_COMPARISON_AND_PLAN.md +43 -0
  536. package/docs/CRITICAL_FIXES_ACTION_PLAN.md +251 -0
  537. package/docs/CRITICAL_MEMORY_USAGE_PROMPTS.md +290 -0
  538. package/docs/CURSOR_AI_MEMORY_ANALYSIS.md +479 -0
  539. package/docs/CURSOR_AI_MEMORY_WORKFLOW_ANALYSIS.md +267 -0
  540. package/docs/CURSOR_AI_TEST_RESULTS.md +298 -0
  541. package/docs/DEEPSEEK_AI_CLARIFICATION.md +52 -0
  542. package/docs/DEEPSEEK_AI_IMPLEMENTATION_GUIDE.md +398 -0
  543. package/docs/DEEPSEEK_AI_STRATEGIC_VALIDATION.md +348 -0
  544. package/docs/DEEPSEEK_AI_VALIDATION_RESPONSE.md +276 -0
  545. package/docs/DEEPSEEK_AI_VALIDATION_RESPONSE_v2.md +325 -0
  546. package/docs/DEEPSEEK_FINAL_VALIDATION.md +337 -0
  547. package/docs/DEEPSEEK_LAUNCH_VALIDATION.md +55 -0
  548. package/docs/DEEPSEEK_SCOPE_REALITY_CHECK.md +30 -0
  549. package/docs/DEEPSEEK_SUPERMEMORY_ADOPTION_AND_VSCODE_PIVOT.md +47 -0
  550. package/docs/DEEPSEEK_VALIDATION_RESULTS.md +165 -0
  551. package/docs/DEVELOPMENT_TESTING_PROTOCOL.md +378 -0
  552. package/docs/E2E_TEST_RESULTS.md +102 -0
  553. package/docs/END_TO_END_MEMORY_ISSUE_ANALYSIS.md +442 -0
  554. package/docs/FEATURE_1_GIT_SYNC_PLAN.md +228 -0
  555. package/docs/FEATURE_2_AUTO_LOGGING_PLAN.md +239 -0
  556. package/docs/FEATURE_3_CODE_SNIPPET_PLAN.md +249 -0
  557. package/docs/FEATURE_4_TAG_NORMALIZATION_PLAN.md +211 -0
  558. package/docs/FEATURE_5_WINDOWS_PATH_HANDLING_PLAN.md +199 -0
  559. package/docs/FEATURE_6_CONFLICT_DETECTION_PLAN.md +126 -0
  560. package/docs/FEATURE_IMPLEMENTATION_REPORT.md +203 -0
  561. package/docs/FINAL_COMPLETE_LAUNCH_DECISION.md +255 -0
  562. package/docs/FINAL_LAUNCH_DECISION.md +235 -0
  563. package/docs/FINAL_LAUNCH_DECISION_ALL_AIS.md +226 -0
  564. package/docs/FINAL_SCENARIO_VERIFICATION.md +363 -0
  565. package/docs/FIX_100_PERCENT_ANALYSIS.md +133 -0
  566. package/docs/FRAMEWORK_STRUCTURE.md +94 -0
  567. package/docs/GEMINI_AI_ANALYSIS.md +156 -0
  568. package/docs/GEMINI_AI_CLARIFICATION.md +47 -0
  569. package/docs/GEMINI_AI_STRATEGIC_VALIDATION.md +235 -0
  570. package/docs/GEMINI_AI_VALIDATION_RESPONSE.md +238 -0
  571. package/docs/GEMINI_AI_VALIDATION_RESPONSE_v2.md +168 -0
  572. package/docs/GEMINI_FINAL_VALIDATION.md +204 -0
  573. package/docs/GEMINI_LAUNCH_VALIDATION.md +30 -0
  574. package/docs/GEMINI_SCOPE_AND_UNIVERSALITY_DEBATE.md +25 -0
  575. package/docs/GEMINI_SUPERMEMORY_TREE_SITTER_MANDATE.md +43 -0
  576. package/docs/GEMINI_VALIDATION_RESULTS.md +183 -0
  577. package/docs/GROK_AI_ANALYSIS.md +278 -0
  578. package/docs/GROK_AI_CLARIFICATION.md +52 -0
  579. package/docs/GROK_AI_STRATEGIC_VALIDATION.md +306 -0
  580. package/docs/GROK_AI_VALIDATION_RESPONSE.md +252 -0
  581. package/docs/GROK_AI_VALIDATION_RESPONSE_v2.md +264 -0
  582. package/docs/GROK_FINAL_VALIDATION.md +251 -0
  583. package/docs/GROK_LAUNCH_VALIDATION.md +24 -0
  584. package/docs/GROK_SCOPE_REALITY_CHECK.md +28 -0
  585. package/docs/GROK_SUPERMEMORY_LAUNCH_ANALYSIS.md +44 -0
  586. package/docs/GROK_VALIDATION_RESULTS.md +180 -0
  587. package/docs/IMPLEMENTATION_PLAN_16_CRITICAL_FIXES.md +641 -0
  588. package/docs/LANGCHAIN_AND_LANGGRAPH_INTEGRATION_PLAN.md +51 -0
  589. package/docs/LAUNCH_DECISION_FINAL.md +243 -0
  590. package/docs/MANUS_AI_ANALYSIS.md +171 -0
  591. package/docs/MANUS_AI_CLARIFICATION.md +43 -0
  592. package/docs/MANUS_AI_VALIDATION_RESPONSE.md +335 -0
  593. package/docs/MANUS_AI_VALIDATION_RESPONSE_v2.md +226 -0
  594. package/docs/MANUS_FINAL_VALIDATION.md +257 -0
  595. package/docs/MANUS_VALIDATION_RESULTS.md +237 -0
  596. package/docs/MCP_SERVER_SETUP.md +167 -0
  597. package/docs/MEMORYLINK_7AI_FINAL_CONFIRMATION.md +210 -0
  598. package/docs/MEMORYLINK_CURSOR_AI_DEVELOPMENT_GUIDE.md +1092 -0
  599. package/docs/MEMORYLINK_DEVELOPMENT_PLAN_CURSOR_AI.md +629 -0
  600. package/docs/MEMORYLINK_FINAL_7AI_CLARIFICATION.md +184 -0
  601. package/docs/MEMORYLINK_MASTER_DOCUMENT_v4.md +1338 -0
  602. package/docs/MEMORYLINK_NAMING_ANALYSIS.md +427 -0
  603. package/docs/MEMORYLINK_REAL_WORLD_SCENARIOS.md +3517 -0
  604. package/docs/MEMORYLINK_STORAGE_COMPARISON.md +498 -0
  605. package/docs/MEMORYLINK_V1.0_FINAL_IMPLEMENTATION_PLAN.md +285 -0
  606. package/docs/MEMORYLINK_VALIDATION_COMPLETE_ANALYSIS.md +207 -0
  607. package/docs/MEMORYLINK_VS_MEMORY_APPS_ANALYSIS.md +667 -0
  608. package/docs/MEMORYLINK_v1.0_BUILD_DOCUMENT_FINAL.md +1928 -0
  609. package/docs/MEMORY_USAGE_FIX_IMPLEMENTATION.md +314 -0
  610. package/docs/MISTRAL_AI_ANALYSIS.md +189 -0
  611. package/docs/MISTRAL_AI_CLARIFICATION.md +57 -0
  612. package/docs/MISTRAL_AI_STRATEGIC_VALIDATION.md +334 -0
  613. package/docs/MISTRAL_AI_TESTING_REQUEST.md +261 -0
  614. package/docs/MISTRAL_AI_VALIDATION_RESPONSE.md +446 -0
  615. package/docs/MISTRAL_AI_VALIDATION_RESPONSE_v2.md +227 -0
  616. package/docs/MISTRAL_FINAL_VALIDATION.md +398 -0
  617. package/docs/MISTRAL_LAUNCH_VALIDATION.md +32 -0
  618. package/docs/MISTRAL_SCOPE_REALITY_CHECK.md +32 -0
  619. package/docs/MISTRAL_SUPERMEMORY_LAUNCH_ANALYSIS.md +43 -0
  620. package/docs/MISTRAL_VALIDATION_RESULTS.md +371 -0
  621. package/docs/NEXT_PLAN.md +300 -0
  622. package/docs/PERPLEXITY_AI_ANALYSIS.md +285 -0
  623. package/docs/PERPLEXITY_AI_CLARIFICATION.md +57 -0
  624. package/docs/PERPLEXITY_AI_STRATEGIC_VALIDATION.md +288 -0
  625. package/docs/PERPLEXITY_AI_VALIDATION_RESPONSE.md +350 -0
  626. package/docs/PERPLEXITY_AI_VALIDATION_RESPONSE_v2.md +260 -0
  627. package/docs/PERPLEXITY_FINAL_VALIDATION.md +320 -0
  628. package/docs/PERPLEXITY_LAUNCH_VALIDATION.md +42 -0
  629. package/docs/PERPLEXITY_MEMORY_QUALITY_AND_VSCODE_PLAN.md +56 -0
  630. package/docs/PERPLEXITY_SCOPE_REALITY_CHECK.md +31 -0
  631. package/docs/PERPLEXITY_VALIDATION_RESULTS.md +154 -0
  632. package/docs/PRE_LAUNCH_GAP_ANALYSIS.md +663 -0
  633. package/docs/PROJECT_STRUCTURE_PLAN.md +104 -0
  634. package/docs/QWEN_AI_ANALYSIS.md +176 -0
  635. package/docs/QWEN_AI_CLARIFICATION.md +60 -0
  636. package/docs/QWEN_AI_STRATEGIC_VALIDATION.md +241 -0
  637. package/docs/QWEN_AI_VALIDATION_RESPONSE.md +197 -0
  638. package/docs/QWEN_AI_VALIDATION_RESPONSE_v2.md +186 -0
  639. package/docs/QWEN_FINAL_VALIDATION.md +284 -0
  640. package/docs/QWEN_LAUNCH_VALIDATION.md +26 -0
  641. package/docs/QWEN_SCENARIOS_TEST_RESULTS.md +244 -0
  642. package/docs/QWEN_SCOPE_REALITY_CHECK.md +26 -0
  643. package/docs/QWEN_SUPERMEMORY_LAUNCH_AND_ENFORCEMENT_PLAN.md +56 -0
  644. package/docs/QWEN_VALIDATION_RESULTS.md +185 -0
  645. package/docs/README.md +479 -0
  646. package/docs/REAL_PRODUCT_LAUNCH_DECISION.md +185 -0
  647. package/docs/RECIPES.md +424 -0
  648. package/docs/RELEASE_NOTES_v1.0.0.md +193 -0
  649. package/docs/SCENARIO_INVENTORY_AND_VERIFICATION.md +284 -0
  650. package/docs/SINGLE_RUN_1018_SCENARIOS_RESULTS.md +142 -0
  651. package/docs/TESTING.md +256 -0
  652. package/docs/TESTING_STRATEGY.md +194 -0
  653. package/docs/TROUBLESHOOTING.md +188 -0
  654. package/docs/ULTIMATE_LAUNCH_DECISION.md +246 -0
  655. package/docs/WHAT_WE_BUILT.md +504 -0
  656. package/docs/v1.0_LAUNCH_CHECKLIST.md +104 -0
  657. package/examples/README.md +199 -0
  658. package/examples/chatgpt-context.js +161 -0
  659. package/examples/ci-integration.js +288 -0
  660. package/examples/sync-from-cursor.js +196 -0
  661. package/extensions/vscode/README.md +25 -0
  662. package/extensions/vscode/out/buddy-check.js +208 -0
  663. package/extensions/vscode/out/buddy-check.js.map +1 -0
  664. package/extensions/vscode/out/extension.js +413 -0
  665. package/extensions/vscode/out/extension.js.map +1 -0
  666. package/extensions/vscode/out/sidebar.js +409 -0
  667. package/extensions/vscode/out/sidebar.js.map +1 -0
  668. package/extensions/vscode/package.json +92 -0
  669. package/extensions/vscode/src/buddy-check.ts +220 -0
  670. package/extensions/vscode/src/extension.ts +425 -0
  671. package/extensions/vscode/src/shims-vscode.d.ts +2 -0
  672. package/extensions/vscode/src/sidebar.ts +431 -0
  673. package/extensions/vscode/tsconfig.json +14 -0
  674. package/k6-load-test.js +86 -0
  675. package/package.json +68 -0
  676. package/run-professional-tests.sh +72 -0
  677. package/scripts/monitor-continuous-test.sh +17 -0
  678. package/scripts/reorganize-project.sh +164 -0
  679. package/scripts/run-tests-parallel.sh +111 -0
  680. package/scripts/run-tests.sh +30 -0
  681. package/scripts/setup-framework.sh +139 -0
  682. package/scripts/setup-testing.sh +96 -0
  683. package/scripts/stress-test/README.md +86 -0
  684. package/scripts/stress-test/create-all-scenarios.sh +17 -0
  685. package/scripts/stress-test/create-remaining-scenarios.sh +3 -0
  686. package/scripts/stress-test/dev-test.sh +21 -0
  687. package/scripts/stress-test/monitor-continuous.sh +149 -0
  688. package/scripts/stress-test/overnight-test.sh +30 -0
  689. package/scripts/stress-test/quick-test.sh +21 -0
  690. package/scripts/stress-test/run-all-tests.sh +157 -0
  691. package/scripts/stress-test/run-continuous.sh +300 -0
  692. package/scripts/stress-test/run-stress-test.sh +153 -0
  693. package/scripts/stress-test/set1/1_1_mass_refactoring.sh +117 -0
  694. package/scripts/stress-test/set1/1_1_mass_refactoring_simple.sh +117 -0
  695. package/scripts/stress-test/set1/1_2_function_rename.sh +95 -0
  696. package/scripts/stress-test/set1/1_3_feature_flags.sh +93 -0
  697. package/scripts/stress-test/set1/1_4_feature_removal.sh +57 -0
  698. package/scripts/stress-test/set1/1_5_schema_changes.sh +42 -0
  699. package/scripts/stress-test/set1/1_6_dependency_update.sh +47 -0
  700. package/scripts/stress-test/set1/1_7_config_modification.sh +53 -0
  701. package/scripts/stress-test/set2/2_1_payment_logging.sh +49 -0
  702. package/scripts/stress-test/set2/2_2_test_data_generation.sh +43 -0
  703. package/scripts/stress-test/set2/2_3_documentation_leak.sh +45 -0
  704. package/scripts/stress-test/set2/2_4_api_key_rotation.sh +45 -0
  705. package/scripts/stress-test/set2/2_5_hardcoded_secrets.sh +45 -0
  706. package/scripts/stress-test/set2/2_6_debug_output.sh +49 -0
  707. package/scripts/stress-test/set3/3_1_billing_modification.sh +47 -0
  708. package/scripts/stress-test/set3/3_2_migration_deletion.sh +43 -0
  709. package/scripts/stress-test/set3/3_3_auth_middleware.sh +52 -0
  710. package/scripts/stress-test/set3/3_4_permission_bypass.sh +48 -0
  711. package/scripts/stress-test/set3/3_5_config_modification.sh +43 -0
  712. package/scripts/stress-test/set3/3_6_core_library.sh +51 -0
  713. package/scripts/stress-test/set3/3_7_test_infrastructure.sh +49 -0
  714. package/scripts/stress-test/set4/4_1_concurrent_features.sh +49 -0
  715. package/scripts/stress-test/set4/4_2_lock_acquisition.sh +32 -0
  716. package/scripts/stress-test/set4/4_3_migration_hotfix.sh +43 -0
  717. package/scripts/stress-test/set4/4_4_overlapping_scopes.sh +50 -0
  718. package/scripts/stress-test/set4/4_5_lock_timeout.sh +34 -0
  719. package/scripts/stress-test/set4/4_6_concurrent_stats.sh +33 -0
  720. package/scripts/stress-test/set5/5_1_wrong_decision.sh +41 -0
  721. package/scripts/stress-test/set5/5_2_outdated_docs.sh +40 -0
  722. package/scripts/stress-test/set5/5_3_conflicting_memories.sh +34 -0
  723. package/scripts/stress-test/set5/5_4_deleted_file_references.sh +38 -0
  724. package/scripts/stress-test/set5/5_5_old_pattern.sh +41 -0
  725. package/scripts/stress-test/set5/5_6_wrong_architecture.sh +42 -0
  726. package/scripts/stress-test/set5/5_7_high_trust_stale.sh +46 -0
  727. package/scripts/stress-test/set5/5_8_observability_stale.sh +36 -0
  728. package/scripts/stress-test/setup-test-repo-simple.sh +144 -0
  729. package/scripts/stress-test/setup-test-repo.sh +154 -0
  730. package/scripts/stress-test/start-continuous.sh +48 -0
  731. package/scripts/stress-test/stop-continuous.sh +42 -0
  732. package/scripts/stress-test/template-scenario.sh +115 -0
  733. package/scripts/test-advanced-scenarios.sh +411 -0
  734. package/scripts/test-continuous-30min.sh +307 -0
  735. package/scripts/test-continuous-enhanced.sh +250 -0
  736. package/scripts/test-e2e-comprehensive.sh +114 -0
  737. package/scripts/test-e2e-random.sh +359 -0
  738. package/scripts/test-fresh-scenarios.sh +412 -0
  739. package/scripts/test-new-scenarios.sh +374 -0
  740. package/scripts/test-quick-random.sh +97 -0
  741. package/scripts/test-runtime.sh +129 -0
  742. package/scripts/test-telemetry-local.sh +193 -0
  743. package/scripts/test-ultimate-scenarios.sh +428 -0
  744. package/scripts/test-v1.5-complete.sh +225 -0
  745. package/scripts/test-v1.5-phase1.sh +222 -0
  746. package/src/cli.ts +1259 -0
  747. package/src/commands/archive.ts +252 -0
  748. package/src/commands/auto-context.ts +159 -0
  749. package/src/commands/auto-log.ts +531 -0
  750. package/src/commands/change.ts +298 -0
  751. package/src/commands/checkpoint.ts +390 -0
  752. package/src/commands/configure.ts +297 -0
  753. package/src/commands/consolidate.ts +263 -0
  754. package/src/commands/context.ts +618 -0
  755. package/src/commands/detect.ts +181 -0
  756. package/src/commands/doctor.ts +1468 -0
  757. package/src/commands/export.ts +77 -0
  758. package/src/commands/graph.ts +214 -0
  759. package/src/commands/hooks.ts +245 -0
  760. package/src/commands/impact.ts +163 -0
  761. package/src/commands/index-vector.ts +126 -0
  762. package/src/commands/index.ts +57 -0
  763. package/src/commands/init.ts +194 -0
  764. package/src/commands/inject.ts +440 -0
  765. package/src/commands/learn.ts +328 -0
  766. package/src/commands/lock.ts +345 -0
  767. package/src/commands/memory.ts +415 -0
  768. package/src/commands/migrate.ts +540 -0
  769. package/src/commands/patterns.ts +158 -0
  770. package/src/commands/protect.ts +199 -0
  771. package/src/commands/quickstart.ts +259 -0
  772. package/src/commands/resolve.ts +373 -0
  773. package/src/commands/roadmap.ts +25 -0
  774. package/src/commands/scopes.ts +113 -0
  775. package/src/commands/search.ts +365 -0
  776. package/src/commands/setup.ts +430 -0
  777. package/src/commands/snippet.ts +271 -0
  778. package/src/commands/stats.ts +591 -0
  779. package/src/commands/status.ts +127 -0
  780. package/src/commands/suggest-tags.ts +122 -0
  781. package/src/commands/sync-rules.ts +218 -0
  782. package/src/commands/sync.ts +363 -0
  783. package/src/commands/telemetry-test.ts +97 -0
  784. package/src/commands/template.ts +166 -0
  785. package/src/commands/validate.ts +191 -0
  786. package/src/commands/watch-preferences.ts +162 -0
  787. package/src/commands/watch.ts +239 -0
  788. package/src/config/thresholds.ts +14 -0
  789. package/src/index.ts +12 -0
  790. package/src/memorylink.ts +308 -0
  791. package/src/search/local-embeddings.ts +94 -0
  792. package/src/search/vector-search.ts +608 -0
  793. package/src/server/mcp-server.ts +355 -0
  794. package/src/telemetry.ts +391 -0
  795. package/src/test-runner/TestRunner.ts +421 -0
  796. package/src/test-runner/performance-test.ts +161 -0
  797. package/src/test-runner/run-tests.ts +152 -0
  798. package/src/types.ts +533 -0
  799. package/src/utils/batch-commits.ts +162 -0
  800. package/src/utils/code-structure.ts +686 -0
  801. package/src/utils/commit-patterns.ts +87 -0
  802. package/src/utils/observability.ts +149 -0
  803. package/src/utils/quality.ts +230 -0
  804. package/src/utils/semantic-search.ts +222 -0
  805. package/src/utils/streaming.ts +109 -0
  806. package/src/utils/tag-suggestions.ts +117 -0
  807. package/src/utils/team-patterns.ts +499 -0
  808. package/src/utils/templates.ts +181 -0
  809. package/src/utils/tree-sitter-parser.ts +246 -0
  810. package/src/utils/v1.6-patterns.ts +227 -0
  811. package/src/utils.ts +885 -0
  812. package/test-all-features.sh +102 -0
  813. package/test-all-implemented-features.sh +209 -0
  814. package/test-all-new-features.sh +171 -0
  815. package/test-auto-log.txt +1 -0
  816. package/test-batch-commits.sh +47 -0
  817. package/test-conflict-resolution.sh +47 -0
  818. package/test-e2e.sh +22 -0
  819. package/test-end-to-end.sh +151 -0
  820. package/test-enhanced-autocapture.sh +164 -0
  821. package/test-inject.sh +44 -0
  822. package/test-mcp-server.sh +67 -0
  823. package/test-pagination.sh +37 -0
  824. package/test-python-go-structure.sh +164 -0
  825. package/test-quality-validation.sh +167 -0
  826. package/test-results-quick-smoke.json +13 -0
  827. package/test-results-targeted-perf.json +23 -0
  828. package/test-results.json +2272 -0
  829. package/test-scenarios/payment-logging.ts +17 -0
  830. package/test-scenarios/test-config.ts +13 -0
  831. package/test-semantic-search.sh +161 -0
  832. package/test-tag-intelligence.sh +49 -0
  833. package/test-vector-search.sh +64 -0
  834. package/test-vscode-extension.sh +144 -0
  835. package/test-watcher-file.txt +2 -0
  836. package/test-watcher-file2.txt +1 -0
  837. package/test-watcher.sh +103 -0
  838. package/test_qwen_scenarios.sh +285 -0
  839. package/tests/scenarios/4000_HARD_SCENARIOS.sh +4137 -0
  840. package/tests/scenarios/ADD_V1.1_SCENARIOS.sh +93 -0
  841. package/tests/scenarios/AGGRESSIVE_RANDOM_E2E_TEST.sh +474 -0
  842. package/tests/scenarios/COMPLETE_PRODUCT_VALIDATION.sh +227 -0
  843. package/tests/scenarios/COMPREHENSIVE_E2E_TEST.sh +426 -0
  844. package/tests/scenarios/CONTINUOUS_RANDOM_STRESS_TEST.sh +240 -0
  845. package/tests/scenarios/EXECUTE_10000_SCENARIOS.sh +61 -0
  846. package/tests/scenarios/EXECUTE_1000_UNIQUE_SCENARIOS.sh +190 -0
  847. package/tests/scenarios/EXECUTE_5000_SCENARIOS_SPLIT.sh +192 -0
  848. package/tests/scenarios/EXECUTE_5000_TOTAL_SCENARIOS.sh +162 -0
  849. package/tests/scenarios/EXECUTE_5040_SCENARIOS_WITH_V1.1.sh +251 -0
  850. package/tests/scenarios/EXECUTE_8_BATCHES_500.sh +51 -0
  851. package/tests/scenarios/EXECUTE_QUICK_SMOKE.sh +9 -0
  852. package/tests/scenarios/EXECUTE_SINGLE_BATCH.sh +117 -0
  853. package/tests/scenarios/EXECUTE_TARGETED_PERF.sh +19 -0
  854. package/tests/scenarios/GENERATE_1000_SCENARIOS.sh +235 -0
  855. package/tests/scenarios/GENERATE_4000_HARD_SCENARIOS.sh +266 -0
  856. package/tests/scenarios/GENERATE_4000_HARD_SCENARIOS_FIXED.sh +267 -0
  857. package/tests/scenarios/GENERATE_4000_HARD_SCENARIOS_FIXED_V2.sh +267 -0
  858. package/tests/scenarios/NEW_RANDOM_E2E_TEST.sh +422 -0
  859. package/tests/scenarios/QUICK_SMOKE_200.sh +38 -0
  860. package/tests/scenarios/QUICK_SMOKE_MINI.sh +3 -0
  861. package/tests/scenarios/RANDOM_REAL_WORLD_SCENARIOS.sh +372 -0
  862. package/tests/scenarios/ROUND3_RANDOM_E2E_TEST.sh +446 -0
  863. package/tests/scenarios/RUN_AGGRESSIVE_AND_SUMMARY.sh +51 -0
  864. package/tests/scenarios/RUN_ALL_1018_SCENARIOS.sh +161 -0
  865. package/tests/scenarios/TARGETED_PERF.sh +75 -0
  866. package/tests/scenarios/V1.1_FEATURES_SCENARIOS.sh +145 -0
  867. package/tests/unit/utils.test.ts +52 -0
  868. package/tests/v1.1-features-scenarios.sh +276 -0
  869. package/tsconfig.json +21 -0
  870. package/v1.6_FEATURE_REQUESTS.md +79 -0
@@ -0,0 +1,430 @@
1
+ /**
2
+ * Setup Commands
3
+ *
4
+ * AI-specific setup for Cursor, Claude, ChatGPT, etc.
5
+ * Creates configuration files that teach AI tools to use MemoryLink
6
+ */
7
+
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import {
11
+ findRoot,
12
+ isInitialized,
13
+ success,
14
+ error,
15
+ warn,
16
+ info,
17
+ log,
18
+ getFilePath,
19
+ readJsonlEntries,
20
+ isJsonlFormat,
21
+ } from '../utils.js';
22
+ import type { GlobalOptions, MemoryEntry } from '../types.js';
23
+
24
+ // ===========================================
25
+ // CURSOR SETUP
26
+ // ===========================================
27
+
28
+ const CURSOR_RULES = `# MemoryLink Integration for Cursor AI
29
+
30
+ ## Before Making ANY Changes
31
+
32
+ 1. **Read Protected Files**: Check \`.memorylink/protected.txt\` - DO NOT modify these files.
33
+ 2. **Read Project Context**: Check \`.memorylink/memory.log\` for project decisions and context.
34
+ 3. **Check Past Solutions**: Review \`.memorylink/learnings.log\` before solving problems.
35
+ - Entries marked SUCCESS = use these approaches
36
+ - Entries marked FAILED = DO NOT repeat these
37
+
38
+ ## After Making Changes
39
+
40
+ 1. **Log Changes**: Record what you changed and why
41
+ 2. **Log Learnings**: If you solved a problem, note whether it worked (SUCCESS/FAILED)
42
+
43
+ ## File Locations
44
+
45
+ \`\`\`
46
+ .memorylink/
47
+ ├── protected.txt # Files I cannot modify
48
+ ├── memory.log # Project context and decisions
49
+ ├── changes.log # Audit trail of all changes
50
+ └── learnings.log # Past solutions (SUCCESS/FAILED)
51
+ \`\`\`
52
+
53
+ ## Example Workflow
54
+
55
+ Before editing \`api.ts\`:
56
+ 1. Check if \`api.ts\` is in protected.txt → If yes, ask permission first
57
+ 2. Read memory.log for API-related context
58
+ 3. Check learnings.log for past API solutions
59
+
60
+ After fixing a bug:
61
+ 1. Note the change in changes.log
62
+ 2. If the fix worked, add to learnings.log with SUCCESS
63
+ 3. If the fix failed, add to learnings.log with FAILED
64
+
65
+ ## Important Rules
66
+
67
+ - NEVER edit files listed in protected.txt without explicit permission
68
+ - ALWAYS check learnings.log before suggesting solutions to avoid repeating failures
69
+ - Keep memory.log updated with important decisions
70
+
71
+ ## MemoryLink-First Workflow (Optimize Document Creation)
72
+
73
+ ### Before Creating Documents:
74
+ 1. **Check MemoryLink First:** Use \`memorylink get-context\` instead of creating planning docs
75
+ 2. **Use MemoryLink for State:** Store decisions in memory.log, not in separate docs
76
+ 3. **Log Learnings:** Use learnings.log instead of creating "what worked" docs
77
+
78
+ ### When to Create Documents:
79
+ - **User-Requested:** Only if user explicitly asks for a document
80
+ - **External Sharing:** Documents for humans (README, guides, etc.)
81
+ - **Complex Analysis:** Multi-step analysis that needs structure
82
+
83
+ ### When to Use MemoryLink:
84
+ - **Project Decisions:** Use memory.log (not decision docs)
85
+ - **What Worked/Failed:** Use learnings.log (not summary docs)
86
+ - **Change Tracking:** Use changes.log (not change logs)
87
+ - **Context for Next Session:** Use get-context command (not reading old docs)
88
+
89
+ ### Document Creation Guidelines:
90
+ - **Avoid:** Creating "planning" documents (use MemoryLink memory.log)
91
+ - **Avoid:** Creating "summary" documents (use MemoryLink learnings.log)
92
+ - **Avoid:** Creating "state" documents (use MemoryLink get-context)
93
+ - **Create:** Only user-facing documentation (README, guides, troubleshooting)
94
+
95
+ ### Workflow Optimization:
96
+ 1. **Start Session:** Run \`memorylink get-context\` (don't read old planning docs)
97
+ 2. **During Work:** Log to MemoryLink (don't create summary docs)
98
+ 3. **End Session:** MemoryLink remembers (no need for summary doc)
99
+ 4. **Next Session:** MemoryLink provides context (no need to read old docs)
100
+
101
+ ### Why This Matters:
102
+ - **Document Creation = Memory Workaround:** Creating docs because you lack memory
103
+ - **MemoryLink = Solution:** Use MemoryLink instead of creating redundant docs
104
+ - **Efficiency:** Reduces document proliferation and redundant reading
105
+ `;
106
+
107
+ export async function setupCursorCommand(options: GlobalOptions = {}): Promise<void> {
108
+ const { verbose } = options;
109
+
110
+ log('Setting up MemoryLink for Cursor', verbose);
111
+
112
+ const root = findRoot() || process.cwd();
113
+
114
+ if (!isInitialized(root)) {
115
+ error('MemoryLink not initialized. Run: memorylink init');
116
+ process.exit(1);
117
+ }
118
+
119
+ // Get active rules/preferences from memory.log (Qwen's Hello World requirement)
120
+ const memoryPath = getFilePath('MEMORY', root);
121
+ let activeRules: MemoryEntry[] = [];
122
+
123
+ if (fs.existsSync(memoryPath) && isJsonlFormat(memoryPath)) {
124
+ const entries = readJsonlEntries<MemoryEntry>(memoryPath);
125
+ activeRules = entries.filter(e =>
126
+ e.status === 'ACTIVE' &&
127
+ (e.type === 'rule' || e.type === 'preference')
128
+ );
129
+ }
130
+
131
+ // Generate active rules section
132
+ let activeRulesSection = '';
133
+ if (activeRules.length > 0) {
134
+ activeRulesSection = '## 🚨 ACTIVE RULES & PREFERENCES (OVERRIDE DEFAULT BEHAVIOR)\n\n';
135
+ activeRulesSection += '**These rules MUST be followed. They override default assistant behavior.**\n\n';
136
+ activeRules.forEach((rule, index) => {
137
+ const tagsStr = rule.tags?.length ? ` [${rule.tags.join(', ')}]` : '';
138
+ activeRulesSection += `${index + 1}. **${rule.type.toUpperCase()}**: ${rule.details}${tagsStr}\n`;
139
+ });
140
+ activeRulesSection += '\n---\n\n';
141
+ if (verbose) {
142
+ info(`Found ${activeRules.length} active rule(s)/preference(s) to inject`);
143
+ }
144
+ }
145
+
146
+ const cursorrules = path.join(root, '.cursorrules');
147
+
148
+ // Check if .cursorrules exists
149
+ if (fs.existsSync(cursorrules)) {
150
+ const existing = fs.readFileSync(cursorrules, 'utf-8');
151
+
152
+ // Check if already has MemoryLink
153
+ if (existing.includes('MemoryLink')) {
154
+ warn('.cursorrules already contains MemoryLink configuration');
155
+ info('Run `memorylink sync-rules` to update with latest rules/preferences');
156
+ return;
157
+ }
158
+
159
+ // Append to existing with active rules at the top
160
+ const updated = activeRulesSection + existing + '\n\n' + CURSOR_RULES;
161
+ fs.writeFileSync(cursorrules, updated);
162
+ success('Added MemoryLink rules to existing .cursorrules');
163
+ if (activeRules.length > 0) {
164
+ info(`Injected ${activeRules.length} active rule(s)/preference(s) at the top`);
165
+ }
166
+ } else {
167
+ // Create new with active rules at the top
168
+ const content = activeRulesSection + CURSOR_RULES;
169
+ fs.writeFileSync(cursorrules, content);
170
+ success('Created .cursorrules with MemoryLink integration');
171
+ if (activeRules.length > 0) {
172
+ info(`Injected ${activeRules.length} active rule(s)/preference(s) at the top`);
173
+ }
174
+ }
175
+
176
+ console.log('');
177
+ info('Cursor AI will now:');
178
+ console.log(' • See active rules/preferences at the top of .cursorrules');
179
+ console.log(' • Check protected.txt before editing files');
180
+ console.log(' • Read memory.log for project context');
181
+ console.log(' • Check learnings.log before solving problems');
182
+ console.log('');
183
+ if (activeRules.length > 0) {
184
+ info('✅ Hello World test ready: Active rules are now in .cursorrules');
185
+ info(' Cursor will see these rules automatically on next chat');
186
+ } else {
187
+ info('💡 Add rules with: memorylink memory "rule" --type rule');
188
+ info(' Then run: memorylink sync-rules (or setup cursor again)');
189
+ }
190
+ console.log('');
191
+ }
192
+
193
+ // ===========================================
194
+ // CLAUDE SETUP
195
+ // ===========================================
196
+
197
+ const CLAUDE_INSTRUCTIONS = `# MemoryLink Project Context
198
+
199
+ ## How to Use This Project
200
+
201
+ This project uses MemoryLink for AI memory management. Before making any changes:
202
+
203
+ ### 1. Check Protected Files
204
+ Read \`.memorylink/protected.txt\` - these files should NOT be modified without explicit permission.
205
+
206
+ ### 2. Read Project Context
207
+ Check \`.memorylink/memory.log\` for important decisions and context about this project.
208
+
209
+ ### 3. Learn from Past Solutions
210
+ Review \`.memorylink/learnings.log\`:
211
+ - SUCCESS entries = approaches that worked
212
+ - FAILED entries = approaches that did NOT work - do not repeat these
213
+
214
+ ### 4. After Making Changes
215
+ - Log significant changes to \`.memorylink/changes.log\`
216
+ - Log problem solutions to \`.memorylink/learnings.log\` with SUCCESS or FAILED
217
+
218
+ ## Quick Reference
219
+
220
+ \`\`\`
221
+ .memorylink/protected.txt → Files I cannot edit
222
+ .memorylink/memory.log → Project context
223
+ .memorylink/learnings.log → What worked/didn't work
224
+ .memorylink/changes.log → Audit trail
225
+ \`\`\`
226
+
227
+ ## Rules
228
+ 1. NEVER edit protected files
229
+ 2. Check learnings BEFORE suggesting solutions
230
+ 3. Ask if unsure about a file's protection status
231
+ `;
232
+
233
+ export async function setupClaudeCommand(options: GlobalOptions = {}): Promise<void> {
234
+ const { verbose } = options;
235
+
236
+ log('Setting up MemoryLink for Claude', verbose);
237
+
238
+ const root = findRoot() || process.cwd();
239
+
240
+ if (!isInitialized(root)) {
241
+ error('MemoryLink not initialized. Run: memorylink init');
242
+ process.exit(1);
243
+ }
244
+
245
+ const claudeFile = path.join(root, 'CLAUDE_INSTRUCTIONS.md');
246
+
247
+ if (fs.existsSync(claudeFile)) {
248
+ warn('CLAUDE_INSTRUCTIONS.md already exists');
249
+ info('Skipping to avoid overwrite. Delete it first if you want to regenerate.');
250
+ return;
251
+ }
252
+
253
+ fs.writeFileSync(claudeFile, CLAUDE_INSTRUCTIONS);
254
+ success('Created CLAUDE_INSTRUCTIONS.md');
255
+
256
+ console.log('');
257
+ info('To use with Claude:');
258
+ console.log(' 1. Upload CLAUDE_INSTRUCTIONS.md at the start of your chat');
259
+ console.log(' 2. Or paste its contents into your first message');
260
+ console.log(' 3. Or add to Claude\'s custom instructions (Pro feature)');
261
+ console.log('');
262
+ }
263
+
264
+ // ===========================================
265
+ // CHATGPT SETUP
266
+ // ===========================================
267
+
268
+ const CHATGPT_INSTRUCTIONS = `# MemoryLink Integration
269
+
270
+ This project uses MemoryLink for AI memory management.
271
+
272
+ ## Before ANY code changes:
273
+
274
+ 1. **Protected Files**: Check .memorylink/protected.txt
275
+ - Files listed here should NOT be modified
276
+ - Ask permission before touching protected files
277
+
278
+ 2. **Project Context**: Read .memorylink/memory.log
279
+ - Contains project decisions and important context
280
+ - Use this information when making suggestions
281
+
282
+ 3. **Past Solutions**: Check .memorylink/learnings.log
283
+ - SUCCESS = this approach worked, use it
284
+ - FAILED = this approach did NOT work, avoid it
285
+
286
+ ## After making changes:
287
+
288
+ - Note what changed and why
289
+ - If you solved a problem, remember if it worked (SUCCESS) or not (FAILED)
290
+
291
+ ## File Structure:
292
+ .memorylink/
293
+ ├── protected.txt → DO NOT edit these files
294
+ ├── memory.log → Project context
295
+ ├── changes.log → What was changed
296
+ └── learnings.log → What worked/failed
297
+
298
+ ## Key Rules:
299
+ 1. Check protected.txt FIRST
300
+ 2. Never repeat FAILED solutions
301
+ 3. Use SUCCESS solutions as templates
302
+ `;
303
+
304
+ export async function setupChatGPTCommand(options: GlobalOptions = {}): Promise<void> {
305
+ const { verbose } = options;
306
+
307
+ log('Setting up MemoryLink for ChatGPT', verbose);
308
+
309
+ const root = findRoot() || process.cwd();
310
+
311
+ if (!isInitialized(root)) {
312
+ error('MemoryLink not initialized. Run: memorylink init');
313
+ process.exit(1);
314
+ }
315
+
316
+ const chatgptFile = path.join(root, 'CHATGPT_INSTRUCTIONS.md');
317
+
318
+ if (fs.existsSync(chatgptFile)) {
319
+ warn('CHATGPT_INSTRUCTIONS.md already exists');
320
+ info('Skipping to avoid overwrite. Delete it first if you want to regenerate.');
321
+ return;
322
+ }
323
+
324
+ fs.writeFileSync(chatgptFile, CHATGPT_INSTRUCTIONS);
325
+ success('Created CHATGPT_INSTRUCTIONS.md');
326
+
327
+ console.log('');
328
+ info('To use with ChatGPT:');
329
+ console.log(' 1. Upload CHATGPT_INSTRUCTIONS.md to your chat');
330
+ console.log(' 2. ChatGPT will follow the MemoryLink rules');
331
+ console.log(' 3. For ChatGPT Plus: Add to "Custom Instructions"');
332
+ console.log('');
333
+ }
334
+
335
+ // ===========================================
336
+ // COPILOT SETUP
337
+ // ===========================================
338
+
339
+ const COPILOT_INSTRUCTIONS = `# MemoryLink Integration for GitHub Copilot
340
+
341
+ ## Project Memory System
342
+
343
+ This project uses MemoryLink for cross-AI memory. Key files:
344
+
345
+ - .memorylink/protected.txt - Files that should not be auto-completed/modified
346
+ - .memorylink/memory.log - Project context and decisions
347
+ - .memorylink/learnings.log - Past solutions (SUCCESS/FAILED)
348
+
349
+ ## For Copilot Users
350
+
351
+ 1. Before accepting suggestions for protected files, check protected.txt
352
+ 2. Use memory.log context when writing new code
353
+ 3. Check learnings.log when debugging similar issues
354
+
355
+ ## Integration Notes
356
+
357
+ Copilot cannot directly read these files, but you can:
358
+ 1. Open .memorylink files in a split pane for reference
359
+ 2. Use comments to remind yourself of context
360
+ 3. Use memorylink CLI to check before major changes
361
+ `;
362
+
363
+ export async function setupCopilotCommand(options: GlobalOptions = {}): Promise<void> {
364
+ const { verbose } = options;
365
+
366
+ log('Setting up MemoryLink for Copilot', verbose);
367
+
368
+ const root = findRoot() || process.cwd();
369
+
370
+ if (!isInitialized(root)) {
371
+ error('MemoryLink not initialized. Run: memorylink init');
372
+ process.exit(1);
373
+ }
374
+
375
+ const copilotFile = path.join(root, '.github', 'copilot-instructions.md');
376
+ const githubDir = path.join(root, '.github');
377
+
378
+ // Create .github directory if needed
379
+ if (!fs.existsSync(githubDir)) {
380
+ fs.mkdirSync(githubDir, { recursive: true });
381
+ }
382
+
383
+ if (fs.existsSync(copilotFile)) {
384
+ warn('.github/copilot-instructions.md already exists');
385
+ info('Skipping to avoid overwrite. Delete it first if you want to regenerate.');
386
+ return;
387
+ }
388
+
389
+ fs.writeFileSync(copilotFile, COPILOT_INSTRUCTIONS);
390
+ success('Created .github/copilot-instructions.md');
391
+
392
+ console.log('');
393
+ info('Copilot will now see these instructions in your project.');
394
+ console.log('');
395
+ }
396
+
397
+ // ===========================================
398
+ // SETUP ALL
399
+ // ===========================================
400
+
401
+ export async function setupAllCommand(options: GlobalOptions = {}): Promise<void> {
402
+ console.log('');
403
+ console.log('\x1b[36m╔══════════════════════════════════════════════════════════╗\x1b[0m');
404
+ console.log('\x1b[36m║ ║\x1b[0m');
405
+ console.log('\x1b[36m║ 🔧 Setting up MemoryLink for ALL AI tools ║\x1b[0m');
406
+ console.log('\x1b[36m║ ║\x1b[0m');
407
+ console.log('\x1b[36m╚══════════════════════════════════════════════════════════╝\x1b[0m');
408
+ console.log('');
409
+
410
+ console.log('\x1b[1m[1/4] Cursor AI\x1b[0m');
411
+ await setupCursorCommand({ ...options, verbose: false });
412
+
413
+ console.log('\x1b[1m[2/4] Claude\x1b[0m');
414
+ await setupClaudeCommand({ ...options, verbose: false });
415
+
416
+ console.log('\x1b[1m[3/4] ChatGPT\x1b[0m');
417
+ await setupChatGPTCommand({ ...options, verbose: false });
418
+
419
+ console.log('\x1b[1m[4/4] GitHub Copilot\x1b[0m');
420
+ await setupCopilotCommand({ ...options, verbose: false });
421
+
422
+ console.log('');
423
+ console.log('\x1b[32m╔══════════════════════════════════════════════════════════╗\x1b[0m');
424
+ console.log('\x1b[32m║ ║\x1b[0m');
425
+ console.log('\x1b[32m║ ✅ All AI tools configured! ║\x1b[0m');
426
+ console.log('\x1b[32m║ ║\x1b[0m');
427
+ console.log('\x1b[32m╚══════════════════════════════════════════════════════════╝\x1b[0m');
428
+ console.log('');
429
+ }
430
+
@@ -0,0 +1,271 @@
1
+ /**
2
+ * MemoryLink - Code Snippet Command
3
+ * Store actual code snippets (not just file references)
4
+ *
5
+ * Critical feature: Users need to store reusable code patterns and examples
6
+ */
7
+
8
+ import * as fs from 'fs';
9
+ import * as path from 'path';
10
+ import {
11
+ getFilePath,
12
+ isInitialized,
13
+ getTimestamp,
14
+ success,
15
+ error,
16
+ warn,
17
+ info,
18
+ log,
19
+ findRoot,
20
+ parseTags,
21
+ generateId,
22
+ appendJsonlEntry,
23
+ checkSecretsBeforeWrite,
24
+ normalizePathForStorage,
25
+ } from '../utils.js';
26
+ import type {
27
+ GlobalOptions,
28
+ MemoryEntry,
29
+ MemoryType,
30
+ } from '../types.js';
31
+ import { checkMigrationRequired, showMigrationWarning } from './migrate.js';
32
+
33
+ interface SnippetOptions extends GlobalOptions {
34
+ code?: string;
35
+ file?: string;
36
+ lines?: string;
37
+ language?: string;
38
+ context?: string;
39
+ tags?: string;
40
+ force?: boolean;
41
+ }
42
+
43
+ const MAX_SNIPPET_SIZE = 1024; // 1KB limit
44
+
45
+ /**
46
+ * Detect programming language from file extension
47
+ */
48
+ function detectLanguage(filePath: string): string | undefined {
49
+ const ext = path.extname(filePath).toLowerCase();
50
+ const languageMap: Record<string, string> = {
51
+ '.ts': 'typescript',
52
+ '.tsx': 'typescript',
53
+ '.js': 'javascript',
54
+ '.jsx': 'javascript',
55
+ '.py': 'python',
56
+ '.java': 'java',
57
+ '.go': 'go',
58
+ '.rs': 'rust',
59
+ '.cpp': 'cpp',
60
+ '.c': 'c',
61
+ '.cs': 'csharp',
62
+ '.php': 'php',
63
+ '.rb': 'ruby',
64
+ '.swift': 'swift',
65
+ '.kt': 'kotlin',
66
+ '.scala': 'scala',
67
+ '.sh': 'bash',
68
+ '.bash': 'bash',
69
+ '.zsh': 'bash',
70
+ '.sql': 'sql',
71
+ '.html': 'html',
72
+ '.css': 'css',
73
+ '.scss': 'scss',
74
+ '.json': 'json',
75
+ '.yaml': 'yaml',
76
+ '.yml': 'yaml',
77
+ '.xml': 'xml',
78
+ '.md': 'markdown',
79
+ '.vue': 'vue',
80
+ '.svelte': 'svelte',
81
+ };
82
+ return languageMap[ext];
83
+ }
84
+
85
+ /**
86
+ * Read code from file, optionally extracting specific lines
87
+ */
88
+ function readCodeFromFile(
89
+ filePath: string,
90
+ root: string,
91
+ lineRange?: string
92
+ ): { code: string; language?: string } {
93
+ const fullPath = path.isAbsolute(filePath) ? filePath : path.join(root, filePath);
94
+
95
+ if (!fs.existsSync(fullPath)) {
96
+ throw new Error(`File not found: ${filePath}`);
97
+ }
98
+
99
+ const stats = fs.statSync(fullPath);
100
+ if (stats.size > 10 * 1024 * 1024) { // 10MB limit
101
+ throw new Error(`File too large (${Math.round(stats.size / 1024)}KB). Use doc_ref for large files.`);
102
+ }
103
+
104
+ let content = fs.readFileSync(fullPath, 'utf-8');
105
+ const language = detectLanguage(filePath);
106
+
107
+ // Extract specific lines if requested
108
+ if (lineRange) {
109
+ const lines = content.split('\n');
110
+ const match = lineRange.match(/^(\d+)(?:-(\d+))?$/);
111
+
112
+ if (!match) {
113
+ throw new Error(`Invalid line range format. Use: '42' or '42-50'`);
114
+ }
115
+
116
+ const start = parseInt(match[1], 10) - 1; // Convert to 0-based
117
+ const end = match[2] ? parseInt(match[2], 10) : start + 1; // End is 1-based
118
+
119
+ if (start < 0 || start >= lines.length) {
120
+ throw new Error(`Line ${start + 1} is out of range (file has ${lines.length} lines)`);
121
+ }
122
+ if (end < start || end > lines.length) {
123
+ throw new Error(`Line range ${start + 1}-${end} is invalid (file has ${lines.length} lines)`);
124
+ }
125
+
126
+ content = lines.slice(start, end).join('\n');
127
+ }
128
+
129
+ return { code: content, language };
130
+ }
131
+
132
+ /**
133
+ * Validate code snippet size
134
+ */
135
+ function validateCodeSize(code: string): void {
136
+ const size = Buffer.byteLength(code, 'utf-8');
137
+ if (size > MAX_SNIPPET_SIZE) {
138
+ throw new Error(
139
+ `Code snippet too large (${Math.round(size / 1024 * 100) / 100}KB, max ${MAX_SNIPPET_SIZE / 1024}KB). ` +
140
+ `Use doc_ref for larger files or split into multiple snippets.`
141
+ );
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Code Snippet Command
147
+ * Store code snippets in memory.log
148
+ */
149
+ export async function snippetCommand(
150
+ description: string,
151
+ options: SnippetOptions = {}
152
+ ): Promise<void> {
153
+ const {
154
+ verbose,
155
+ code,
156
+ file,
157
+ lines,
158
+ language,
159
+ context,
160
+ tags: tagString,
161
+ force = false
162
+ } = options;
163
+
164
+ // Validate input
165
+ if (!description || description.trim().length === 0) {
166
+ error('Description cannot be empty');
167
+ process.exit(1);
168
+ }
169
+
170
+ log(`Adding code snippet: ${description}`, verbose);
171
+
172
+ // Check initialization
173
+ const root = findRoot();
174
+ if (!root || !isInitialized(root)) {
175
+ error('MemoryLink is not initialized. Run: memorylink init');
176
+ process.exit(1);
177
+ }
178
+
179
+ // Check if migration is required
180
+ if (checkMigrationRequired(root)) {
181
+ showMigrationWarning();
182
+ process.exit(1);
183
+ }
184
+
185
+ // Get code content
186
+ let codeContent: string;
187
+ let detectedLanguage: string | undefined = language;
188
+
189
+ if (code) {
190
+ // Code provided directly
191
+ codeContent = code;
192
+ } else if (file) {
193
+ // Read from file
194
+ try {
195
+ const result = readCodeFromFile(file, root, lines);
196
+ codeContent = result.code;
197
+ if (!detectedLanguage && result.language) {
198
+ detectedLanguage = result.language;
199
+ }
200
+ } catch (err: any) {
201
+ error(`Failed to read file: ${err.message}`);
202
+ process.exit(1);
203
+ }
204
+ } else {
205
+ error('Code required. Use --code "<code>" or --file <path>');
206
+ process.exit(1);
207
+ }
208
+
209
+ // Validate code is not empty
210
+ if (!codeContent || codeContent.trim().length === 0) {
211
+ error('Code cannot be empty');
212
+ process.exit(1);
213
+ }
214
+
215
+ // Validate code size
216
+ try {
217
+ validateCodeSize(codeContent);
218
+ } catch (err: any) {
219
+ error(err.message);
220
+ process.exit(1);
221
+ }
222
+
223
+ // Secret detection
224
+ const contentToCheck = description + ' ' + codeContent;
225
+ if (!checkSecretsBeforeWrite(contentToCheck, force)) {
226
+ process.exit(1);
227
+ }
228
+
229
+ const memoryPath = getFilePath('MEMORY', root);
230
+ const tags = parseTags(tagString);
231
+
232
+ // Normalize file path for storage (forward slashes, Git-compatible)
233
+ const normalizedFile = file ? normalizePathForStorage(file, root) : undefined;
234
+
235
+ // Create code snippet entry
236
+ const entry: MemoryEntry = {
237
+ id: generateId(),
238
+ ts: getTimestamp(),
239
+ agent: 'user',
240
+ type: 'code_snippet' as MemoryType,
241
+ details: description,
242
+ code: codeContent,
243
+ language: detectedLanguage,
244
+ file: normalizedFile,
245
+ lines: lines,
246
+ context: context,
247
+ tags,
248
+ status: 'ACTIVE',
249
+ forcedSecretCheck: force && checkSecretsBeforeWrite(contentToCheck, true) ? true : undefined,
250
+ };
251
+
252
+ // Append with file locking
253
+ try {
254
+ await appendJsonlEntry(memoryPath, entry);
255
+ success(`Code snippet added (${Math.round(Buffer.byteLength(codeContent, 'utf-8'))} bytes)`);
256
+
257
+ if (verbose) {
258
+ info(`Language: ${detectedLanguage || 'auto-detected'}`);
259
+ if (file) {
260
+ info(`File: ${file}${lines ? ` (lines ${lines})` : ''}`);
261
+ }
262
+ if (context) {
263
+ info(`Context: ${context}`);
264
+ }
265
+ }
266
+ } catch (err: any) {
267
+ error(`Failed to add code snippet: ${err.message}`);
268
+ process.exit(1);
269
+ }
270
+ }
271
+