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
package/dist/utils.js ADDED
@@ -0,0 +1,822 @@
1
+ "use strict";
2
+ /**
3
+ * MemoryLink - Utility Functions
4
+ *
5
+ * v1.0 UPDATE: Added JSONL utilities, file locking, secret detection,
6
+ * and duration parsing for robust, concurrent-safe operations.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __importDefault = (this && this.__importDefault) || function (mod) {
42
+ return (mod && mod.__esModule) ? mod : { "default": mod };
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.colors = void 0;
46
+ exports.colorize = colorize;
47
+ exports.findRoot = findRoot;
48
+ exports.getMemoryLinkDir = getMemoryLinkDir;
49
+ exports.getFilePath = getFilePath;
50
+ exports.normalizePath = normalizePath;
51
+ exports.normalizePathForStorage = normalizePathForStorage;
52
+ exports.denormalizePath = denormalizePath;
53
+ exports.isInitialized = isInitialized;
54
+ exports.getTimestamp = getTimestamp;
55
+ exports.validateScope = validateScope;
56
+ exports.formatTimestamp = formatTimestamp;
57
+ exports.readFileSafe = readFileSafe;
58
+ exports.appendToFile = appendToFile;
59
+ exports.readLines = readLines;
60
+ exports.countLines = countLines;
61
+ exports.readConfig = readConfig;
62
+ exports.writeConfig = writeConfig;
63
+ exports.readIgnorePatterns = readIgnorePatterns;
64
+ exports.log = log;
65
+ exports.success = success;
66
+ exports.error = error;
67
+ exports.warn = warn;
68
+ exports.safeLog = safeLog;
69
+ exports.safeError = safeError;
70
+ exports.isStdoutWritable = isStdoutWritable;
71
+ exports.info = info;
72
+ exports.normalizeTag = normalizeTag;
73
+ exports.parseTags = parseTags;
74
+ exports.formatTags = formatTags;
75
+ exports.ensureDir = ensureDir;
76
+ exports.writeFileAtomic = writeFileAtomic;
77
+ exports.relativePath = relativePath;
78
+ exports.generateId = generateId;
79
+ exports.shortId = shortId;
80
+ exports.appendJsonlEntry = appendJsonlEntry;
81
+ exports.readJsonlEntries = readJsonlEntries;
82
+ exports.readJsonlEntriesStreaming = readJsonlEntriesStreaming;
83
+ exports.isJsonlFormat = isJsonlFormat;
84
+ exports.detectSecrets = detectSecrets;
85
+ exports.checkSecretsBeforeWrite = checkSecretsBeforeWrite;
86
+ exports.parseDuration = parseDuration;
87
+ exports.formatDuration = formatDuration;
88
+ exports.filterByTag = filterByTag;
89
+ exports.filterBySince = filterBySince;
90
+ exports.filterByStatus = filterByStatus;
91
+ exports.searchEntries = searchEntries;
92
+ exports.hasLegacyFormat = hasLegacyFormat;
93
+ exports.parseLegacyMemoryLine = parseLegacyMemoryLine;
94
+ exports.parseLegacyLearningLine = parseLegacyLearningLine;
95
+ exports.parseLegacyChangeLine = parseLegacyChangeLine;
96
+ const fs = __importStar(require("fs"));
97
+ const path = __importStar(require("path"));
98
+ const uuid_1 = require("uuid");
99
+ const proper_lockfile_1 = __importDefault(require("proper-lockfile"));
100
+ const types_js_1 = require("./types.js");
101
+ // ANSI color codes (for environments where chalk might not work)
102
+ exports.colors = {
103
+ reset: '\x1b[0m',
104
+ bold: '\x1b[1m',
105
+ red: '\x1b[31m',
106
+ green: '\x1b[32m',
107
+ yellow: '\x1b[33m',
108
+ blue: '\x1b[34m',
109
+ magenta: '\x1b[35m',
110
+ cyan: '\x1b[36m',
111
+ gray: '\x1b[90m',
112
+ };
113
+ function colorize(text, color) {
114
+ return `${exports.colors[color]}${text}${exports.colors.reset}`;
115
+ }
116
+ // Find the root directory containing .memorylink
117
+ function findRoot(startDir = process.cwd()) {
118
+ let currentDir = startDir;
119
+ while (currentDir !== path.parse(currentDir).root) {
120
+ if (fs.existsSync(path.join(currentDir, types_js_1.MEMORYLINK_DIR))) {
121
+ return currentDir;
122
+ }
123
+ currentDir = path.dirname(currentDir);
124
+ }
125
+ return null;
126
+ }
127
+ // Get the .memorylink directory path
128
+ function getMemoryLinkDir(root) {
129
+ const rootDir = root || findRoot() || process.cwd();
130
+ return path.join(rootDir, types_js_1.MEMORYLINK_DIR);
131
+ }
132
+ // Get a specific file path
133
+ function getFilePath(file, root) {
134
+ return path.join(getMemoryLinkDir(root), types_js_1.FILES[file]);
135
+ }
136
+ /**
137
+ * Normalize path to use forward slashes (Git-compatible)
138
+ * Windows backslashes are converted to forward slashes
139
+ * This ensures paths are consistent across platforms for storage
140
+ */
141
+ function normalizePath(filePath) {
142
+ return filePath.replace(/\\/g, '/');
143
+ }
144
+ /**
145
+ * Normalize path for storage (always forward slashes, relative to root)
146
+ * For file operations, use platform-specific paths
147
+ * For storage in JSONL, use normalized forward-slash paths
148
+ */
149
+ function normalizePathForStorage(filePath, root) {
150
+ // Normalize to forward slashes
151
+ let normalized = normalizePath(filePath);
152
+ // If absolute path, make relative to root
153
+ if (path.isAbsolute(normalized)) {
154
+ normalized = path.relative(root, normalized);
155
+ // Normalize again after making relative
156
+ normalized = normalizePath(normalized);
157
+ }
158
+ // Remove leading ./ if present
159
+ normalized = normalized.replace(/^\.\//, '');
160
+ return normalized;
161
+ }
162
+ /**
163
+ * Convert normalized path to platform-specific path for file operations
164
+ */
165
+ function denormalizePath(normalizedPath, root) {
166
+ const fullPath = path.isAbsolute(normalizedPath)
167
+ ? normalizedPath
168
+ : path.join(root, normalizedPath);
169
+ return path.normalize(fullPath);
170
+ }
171
+ // Check if MemoryLink is initialized
172
+ function isInitialized(root) {
173
+ const dir = getMemoryLinkDir(root);
174
+ return fs.existsSync(dir) && fs.existsSync(path.join(dir, types_js_1.FILES.CONFIG));
175
+ }
176
+ // Get current timestamp in ISO format
177
+ function getTimestamp() {
178
+ return new Date().toISOString();
179
+ }
180
+ /**
181
+ * Validate project scope name (v1.5 Phase 2)
182
+ * Rules: max 50 chars, alphanumeric, dash, underscore
183
+ */
184
+ function validateScope(scope) {
185
+ if (!scope || scope.trim().length === 0) {
186
+ return { valid: false, error: 'Scope cannot be empty' };
187
+ }
188
+ if (scope.length > 50) {
189
+ return { valid: false, error: 'Scope must be 50 characters or less' };
190
+ }
191
+ // Allow: alphanumeric, dash, underscore, forward slash (for hierarchical)
192
+ const validPattern = /^[a-zA-Z0-9_/-]+$/;
193
+ if (!validPattern.test(scope)) {
194
+ return { valid: false, error: 'Scope can only contain letters, numbers, dashes, underscores, and slashes' };
195
+ }
196
+ return { valid: true };
197
+ }
198
+ // Format timestamp for display
199
+ function formatTimestamp(iso) {
200
+ const date = new Date(iso);
201
+ return date.toLocaleString();
202
+ }
203
+ // Read a file safely
204
+ function readFileSafe(filePath) {
205
+ try {
206
+ return fs.readFileSync(filePath, 'utf-8');
207
+ }
208
+ catch {
209
+ return '';
210
+ }
211
+ }
212
+ // Append to a file
213
+ function appendToFile(filePath, content) {
214
+ fs.appendFileSync(filePath, content + '\n');
215
+ }
216
+ // Read lines from a file (non-empty)
217
+ function readLines(filePath) {
218
+ const content = readFileSafe(filePath);
219
+ return content.split('\n').filter(line => line.trim() !== '');
220
+ }
221
+ // Count lines in a file
222
+ function countLines(filePath) {
223
+ return readLines(filePath).length;
224
+ }
225
+ // Read the config file
226
+ function readConfig(root) {
227
+ const configPath = getFilePath('CONFIG', root);
228
+ try {
229
+ const content = fs.readFileSync(configPath, 'utf-8');
230
+ return JSON.parse(content);
231
+ }
232
+ catch {
233
+ return null;
234
+ }
235
+ }
236
+ // Write the config file
237
+ function writeConfig(config, root) {
238
+ const configPath = getFilePath('CONFIG', root);
239
+ writeFileAtomic(configPath, JSON.stringify(config, null, 2));
240
+ }
241
+ // Read ignore patterns
242
+ function readIgnorePatterns(root) {
243
+ const ignorePath = path.join(root || findRoot() || process.cwd(), types_js_1.FILES.IGNORE);
244
+ if (fs.existsSync(ignorePath)) {
245
+ const content = fs.readFileSync(ignorePath, 'utf-8');
246
+ const patterns = content.split('\n')
247
+ .map(line => line.trim())
248
+ .filter(line => line && !line.startsWith('#'));
249
+ return [...types_js_1.DEFAULT_IGNORE_PATTERNS, ...patterns];
250
+ }
251
+ return types_js_1.DEFAULT_IGNORE_PATTERNS;
252
+ }
253
+ // Log with optional verbose mode
254
+ function log(message, verbose = false) {
255
+ if (verbose) {
256
+ console.log(colorize(`[DEBUG] ${getTimestamp()}`, 'gray'), message);
257
+ }
258
+ }
259
+ // Print success message
260
+ function success(message) {
261
+ console.log(colorize('✓', 'green'), message);
262
+ }
263
+ // Print error message
264
+ function error(message) {
265
+ console.error(colorize('✗', 'red'), message);
266
+ // Reference troubleshooting guide for common errors
267
+ if (message.includes('not initialized') ||
268
+ message.includes('Failed to read') ||
269
+ message.includes('locked') ||
270
+ message.includes('parse error')) {
271
+ console.error(colorize('💡', 'cyan'), 'Run `memorylink doctor` for diagnosis, or see TROUBLESHOOTING.md');
272
+ }
273
+ }
274
+ // Print warning message
275
+ function warn(message) {
276
+ console.log(colorize('⚠', 'yellow'), message);
277
+ }
278
+ /**
279
+ * Safe console.log that handles EPIPE errors gracefully
280
+ * Used when output might be piped to /dev/null or closed streams
281
+ */
282
+ function safeLog(...args) {
283
+ try {
284
+ console.log(...args);
285
+ }
286
+ catch (err) {
287
+ // Ignore EPIPE errors (broken pipe) - happens when stdout is closed
288
+ if (err.code !== 'EPIPE' && err.errno !== -32) {
289
+ // Re-throw if it's not an EPIPE error
290
+ throw err;
291
+ }
292
+ // Silently ignore EPIPE - this is expected when output is suppressed
293
+ }
294
+ }
295
+ /**
296
+ * Safe console.error that handles EPIPE errors gracefully
297
+ */
298
+ function safeError(...args) {
299
+ try {
300
+ console.error(...args);
301
+ }
302
+ catch (err) {
303
+ // Ignore EPIPE errors (broken pipe)
304
+ if (err.code !== 'EPIPE' && err.errno !== -32) {
305
+ throw err;
306
+ }
307
+ }
308
+ }
309
+ /**
310
+ * Check if stdout is writable before writing
311
+ * Returns true if safe to write, false otherwise
312
+ */
313
+ function isStdoutWritable() {
314
+ try {
315
+ return process.stdout.writable && !process.stdout.destroyed;
316
+ }
317
+ catch {
318
+ return false;
319
+ }
320
+ }
321
+ // Print info message
322
+ function info(message) {
323
+ console.log(colorize('ℹ', 'blue'), message);
324
+ }
325
+ /**
326
+ * Normalize a single tag (lowercase, hyphenate spaces)
327
+ * Examples: "TypeScript" → "typescript", "Type Script" → "type-script"
328
+ */
329
+ function normalizeTag(tag) {
330
+ return tag
331
+ .toLowerCase() // "TypeScript" → "typescript"
332
+ .trim() // Remove whitespace
333
+ .replace(/\s+/g, '-') // "Type Script" → "type-script"
334
+ .replace(/[^a-z0-9-]/g, '') // Remove special chars (keep alphanumeric and hyphens)
335
+ .replace(/-+/g, '-') // Multiple hyphens → single hyphen
336
+ .replace(/^-|-$/g, ''); // Remove leading/trailing hyphens
337
+ }
338
+ /**
339
+ * Parse and normalize tags from comma-separated string
340
+ * Tags are automatically normalized (lowercase, hyphenated)
341
+ */
342
+ function parseTags(tagString) {
343
+ if (!tagString)
344
+ return [];
345
+ return tagString
346
+ .split(',')
347
+ .map(t => normalizeTag(t))
348
+ .filter(t => t.length > 0); // Filter out empty tags after normalization
349
+ }
350
+ // Format tags for storage
351
+ function formatTags(tags) {
352
+ return tags.length > 0 ? ` [${tags.join(', ')}]` : '';
353
+ }
354
+ // Ensure directory exists
355
+ function ensureDir(dirPath) {
356
+ if (!fs.existsSync(dirPath)) {
357
+ fs.mkdirSync(dirPath, { recursive: true });
358
+ }
359
+ }
360
+ // Atomic write helper (write temp then rename)
361
+ function writeFileAtomic(filePath, content) {
362
+ const dir = path.dirname(filePath);
363
+ ensureDir(dir);
364
+ const tempPath = path.join(dir, `.tmp-${path.basename(filePath)}-${Date.now()}`);
365
+ fs.writeFileSync(tempPath, content);
366
+ fs.renameSync(tempPath, filePath);
367
+ }
368
+ // Relative path from root
369
+ function relativePath(fullPath, root) {
370
+ const rootDir = root || findRoot() || process.cwd();
371
+ return path.relative(rootDir, fullPath);
372
+ }
373
+ // ============================================
374
+ // UUID GENERATION
375
+ // ============================================
376
+ /**
377
+ * Generate a unique ID for log entries
378
+ */
379
+ function generateId() {
380
+ return (0, uuid_1.v4)();
381
+ }
382
+ /**
383
+ * Generate a short ID prefix for display (first 8 chars)
384
+ */
385
+ function shortId(id) {
386
+ return id.substring(0, 8);
387
+ }
388
+ // ============================================
389
+ // FILE LOCKING (Concurrent Write Protection)
390
+ // ============================================
391
+ /**
392
+ * Append a JSONL entry to a log file with file locking
393
+ * Prevents concurrent write corruption
394
+ */
395
+ async function appendJsonlEntry(filePath, entry) {
396
+ // Ensure file exists
397
+ if (!fs.existsSync(filePath)) {
398
+ fs.writeFileSync(filePath, '');
399
+ }
400
+ // Acquire lock with retries
401
+ let release = null;
402
+ try {
403
+ release = await proper_lockfile_1.default.lock(filePath, {
404
+ retries: {
405
+ retries: 5,
406
+ minTimeout: 100,
407
+ maxTimeout: 1000,
408
+ },
409
+ });
410
+ // Append JSONL entry
411
+ const line = JSON.stringify(entry) + '\n';
412
+ // Guard against oversized entries
413
+ if (line.length > 10000) {
414
+ throw new Error('Entry too large to store. Please shorten the message.');
415
+ }
416
+ fs.appendFileSync(filePath, line);
417
+ }
418
+ finally {
419
+ // Release lock
420
+ if (release) {
421
+ await release();
422
+ }
423
+ }
424
+ }
425
+ /**
426
+ * Normalize v1.3 MemoryEntry to v1.4 format with defaults
427
+ * Maintains backward compatibility while adding v1.4 fields
428
+ */
429
+ function normalizeMemoryEntryToV14(entry, root) {
430
+ // If already v1.4, return as-is
431
+ if (entry.schemaVersion === '1.4.0') {
432
+ return entry;
433
+ }
434
+ // Determine source type from agent field
435
+ const sourceType = entry.agent === 'user' || !entry.agent || entry.agent === 'migrated'
436
+ ? 'human'
437
+ : ['cursor', 'claude', 'chatgpt', 'copilot', 'windsurf'].includes(entry.agent.toLowerCase())
438
+ ? 'agent'
439
+ : 'code';
440
+ // Determine memory status: VERIFIED for human, DRAFT for agent
441
+ const memoryStatus = sourceType === 'human' ? 'VERIFIED' : 'DRAFT';
442
+ // Build provenance from existing fields
443
+ const provenance = {
444
+ createdAt: entry.ts,
445
+ createdBy: entry.agent || 'unknown',
446
+ tool: entry.agent || undefined,
447
+ kind: sourceType === 'human' ? 'user' : 'app',
448
+ };
449
+ // Get project path (relative to root)
450
+ const projectPath = root || process.cwd();
451
+ // Add v1.4 fields with defaults
452
+ return {
453
+ ...entry,
454
+ schemaVersion: '1.4.0',
455
+ recordVersion: 1,
456
+ projectPath,
457
+ sensitivity: 'internal',
458
+ trustLevel: 'medium',
459
+ memoryStatus,
460
+ sourceType,
461
+ provenance,
462
+ };
463
+ }
464
+ /**
465
+ * Detect schema version from an entry
466
+ */
467
+ function detectSchemaVersion(entry) {
468
+ if (entry.schemaVersion) {
469
+ return entry.schemaVersion;
470
+ }
471
+ // v1.3 and earlier don't have schemaVersion
472
+ return '1.3.0';
473
+ }
474
+ /**
475
+ * Read all JSONL entries from a log file
476
+ * v1.4: Automatically normalizes v1.3 entries to v1.4 format
477
+ */
478
+ function readJsonlEntries(filePath) {
479
+ if (!fs.existsSync(filePath)) {
480
+ return [];
481
+ }
482
+ const content = fs.readFileSync(filePath, 'utf-8');
483
+ const lines = content.split('\n').filter(line => line.trim() !== '');
484
+ const entries = [];
485
+ const root = findRoot() || process.cwd();
486
+ for (let i = 0; i < lines.length; i++) {
487
+ const line = lines[i].trim();
488
+ // Skip comments (legacy format)
489
+ if (line.startsWith('#')) {
490
+ continue;
491
+ }
492
+ try {
493
+ const entry = JSON.parse(line);
494
+ // Normalize MemoryEntry from v1.3 to v1.4 if needed
495
+ if (filePath.includes('memory.log') && typeof entry === 'object' && entry !== null && 'type' in entry && 'details' in entry) {
496
+ const memEntry = entry;
497
+ const schemaVersion = detectSchemaVersion(memEntry);
498
+ if (schemaVersion < '1.4.0') {
499
+ const normalized = normalizeMemoryEntryToV14(memEntry, root);
500
+ entries.push(normalized);
501
+ continue;
502
+ }
503
+ }
504
+ entries.push(entry);
505
+ }
506
+ catch (err) {
507
+ // Skip invalid JSON lines (might be legacy format)
508
+ warn(`Line ${i + 1}: Invalid JSON, skipping`);
509
+ }
510
+ }
511
+ return entries;
512
+ }
513
+ /**
514
+ * Read JSONL entries with streaming (memory-efficient for large files)
515
+ * Use this for files with 10K+ entries
516
+ */
517
+ async function readJsonlEntriesStreaming(filePath, options = {}) {
518
+ const { streamJsonlEntries } = await import('./utils/streaming.js');
519
+ const entries = [];
520
+ for await (const entry of streamJsonlEntries(filePath, options)) {
521
+ entries.push(entry);
522
+ }
523
+ return entries;
524
+ }
525
+ /**
526
+ * Check if a log file is in JSONL format
527
+ */
528
+ function isJsonlFormat(filePath) {
529
+ if (!fs.existsSync(filePath)) {
530
+ return true; // New files will be JSONL
531
+ }
532
+ const content = fs.readFileSync(filePath, 'utf-8');
533
+ const lines = content.split('\n').filter(line => line.trim() !== '' && !line.startsWith('#'));
534
+ if (lines.length === 0) {
535
+ return true; // Empty file
536
+ }
537
+ // Check first non-comment line
538
+ const firstLine = lines[0].trim();
539
+ return firstLine.startsWith('{');
540
+ }
541
+ /**
542
+ * Check content for potential secrets
543
+ */
544
+ function detectSecrets(content) {
545
+ const detectedPatterns = [];
546
+ for (const secretPattern of types_js_1.SECRET_PATTERNS) {
547
+ if (secretPattern.pattern.test(content)) {
548
+ detectedPatterns.push(secretPattern.name);
549
+ }
550
+ }
551
+ return {
552
+ detected: detectedPatterns.length > 0,
553
+ patterns: detectedPatterns,
554
+ };
555
+ }
556
+ /**
557
+ * Check for prompt injection patterns (system prompts, instruction overrides)
558
+ */
559
+ function detectPromptInjection(content) {
560
+ const promptInjectionPatterns = [
561
+ /ignore\s+(previous|all|above)\s+(instructions|rules|context)/i,
562
+ /forget\s+(everything|all|previous)/i,
563
+ /you\s+are\s+now\s+(a|an)\s+/i,
564
+ /system\s*:\s*(you|ignore|forget)/i,
565
+ /\[SYSTEM\]|\[INST\]|\[PROMPT\]/i,
566
+ /override\s+(previous|all|system)\s+(instructions|rules)/i,
567
+ /new\s+(instructions|rules|system)\s*:/i,
568
+ /disregard\s+(previous|all|above)/i,
569
+ ];
570
+ return promptInjectionPatterns.some(pattern => pattern.test(content));
571
+ }
572
+ /**
573
+ * Check content for secrets and prompt injection, handle based on force flag
574
+ * Returns true if write should proceed, false if blocked
575
+ */
576
+ function checkSecretsBeforeWrite(content, force = false) {
577
+ // Check for prompt injection first
578
+ if (detectPromptInjection(content) && !force) {
579
+ console.error('');
580
+ console.error(colorize('❌ PROMPT INJECTION DETECTED - Command blocked', 'red'));
581
+ console.error('');
582
+ console.error('Detected suspicious patterns that could override AI behavior.');
583
+ console.error('');
584
+ console.error(colorize('Why this is dangerous:', 'yellow'));
585
+ console.error(' 1. Could inject malicious instructions into AI context');
586
+ console.error(' 2. Could override safety rules and preferences');
587
+ console.error(' 3. Could compromise AI behavior in team environments');
588
+ console.error('');
589
+ console.error(colorize('Recommended actions:', 'cyan'));
590
+ console.error(' 1. Rephrase without instruction-override language');
591
+ console.error(' 2. Use clear, declarative statements instead');
592
+ console.error(' Example: "Project uses TypeScript" (not "Forget previous, use TypeScript")');
593
+ console.error('');
594
+ console.error(colorize('If you\'re CERTAIN this is safe:', 'yellow'));
595
+ console.error(' Add --force flag to proceed');
596
+ console.error('');
597
+ return false; // Block write
598
+ }
599
+ const result = detectSecrets(content);
600
+ if (!result.detected) {
601
+ return true; // No secrets, proceed
602
+ }
603
+ if (!force) {
604
+ // Block write and show warning
605
+ console.error('');
606
+ console.error(colorize('❌ SECRET DETECTED - Command blocked', 'red'));
607
+ console.error('');
608
+ console.error('Detected patterns:');
609
+ for (const pattern of result.patterns) {
610
+ console.error(` - ${pattern}`);
611
+ }
612
+ console.error('');
613
+ console.error(colorize('Why this is dangerous:', 'yellow'));
614
+ console.error(' 1. Secrets will be committed to Git');
615
+ console.error(' 2. Secrets will be in Git history forever');
616
+ console.error(' 3. Team members will see secrets');
617
+ console.error(' 4. Secrets may be pushed to remote repos');
618
+ console.error('');
619
+ console.error(colorize('Recommended actions:', 'cyan'));
620
+ console.error(' 1. Use environment variables instead');
621
+ console.error(' 2. Reference secrets, don\'t include them');
622
+ console.error(' Example: "API key stored in .env file"');
623
+ console.error('');
624
+ console.error(colorize('If you\'re CERTAIN this is not a secret:', 'yellow'));
625
+ console.error(' Add --force flag to proceed');
626
+ console.error('');
627
+ return false; // Block write
628
+ }
629
+ // Force flag used - warn but allow
630
+ console.warn('');
631
+ console.warn(colorize('⚠️ WARNING: Secret pattern detected but proceeding (--force)', 'yellow'));
632
+ console.warn('You are responsible for this secret in version control.');
633
+ console.warn('');
634
+ return true; // Allow write with warning
635
+ }
636
+ // ============================================
637
+ // DURATION PARSING
638
+ // ============================================
639
+ /**
640
+ * Parse a duration string like "7d", "2w", "1m" to a Date
641
+ * Returns date that is `duration` ago from now
642
+ */
643
+ function parseDuration(duration) {
644
+ const match = duration.match(/^(\d+)([dwmy])$/);
645
+ if (!match) {
646
+ return null;
647
+ }
648
+ const [, numStr, unit] = match;
649
+ const num = parseInt(numStr, 10);
650
+ const ms = types_js_1.DURATION_MS[unit];
651
+ if (!ms) {
652
+ return null;
653
+ }
654
+ return new Date(Date.now() - num * ms);
655
+ }
656
+ /**
657
+ * Format a duration for display
658
+ */
659
+ function formatDuration(ms) {
660
+ const seconds = Math.floor(ms / 1000);
661
+ const minutes = Math.floor(seconds / 60);
662
+ const hours = Math.floor(minutes / 60);
663
+ const days = Math.floor(hours / 24);
664
+ if (days > 0)
665
+ return `${days}d ago`;
666
+ if (hours > 0)
667
+ return `${hours}h ago`;
668
+ if (minutes > 0)
669
+ return `${minutes}m ago`;
670
+ return `${seconds}s ago`;
671
+ }
672
+ // ============================================
673
+ // ENTRY FILTERING
674
+ // ============================================
675
+ /**
676
+ * Filter entries by tag
677
+ */
678
+ function filterByTag(entries, tag) {
679
+ const lowerTag = tag.toLowerCase();
680
+ return entries.filter(e => e.tags?.some(t => t.toLowerCase() === lowerTag));
681
+ }
682
+ /**
683
+ * Filter entries by date (since duration)
684
+ */
685
+ function filterBySince(entries, since) {
686
+ const cutoff = parseDuration(since);
687
+ if (!cutoff)
688
+ return entries;
689
+ return entries.filter(e => new Date(e.ts) > cutoff);
690
+ }
691
+ /**
692
+ * Filter entries by status
693
+ */
694
+ function filterByStatus(entries, status) {
695
+ return entries.filter(e => e.status === status);
696
+ }
697
+ /**
698
+ * Search entries by keyword (in details, problem, solution, or tags)
699
+ */
700
+ function searchEntries(entries, keyword) {
701
+ const kw = keyword.toLowerCase();
702
+ return entries.filter(e => {
703
+ // Check tags
704
+ if (e.tags?.some(t => t.toLowerCase().includes(kw))) {
705
+ return true;
706
+ }
707
+ // Check memory-specific fields
708
+ const memEntry = e;
709
+ if (memEntry.details?.toLowerCase().includes(kw)) {
710
+ return true;
711
+ }
712
+ // Check learning-specific fields
713
+ const learnEntry = e;
714
+ if (learnEntry.problem?.toLowerCase().includes(kw)) {
715
+ return true;
716
+ }
717
+ if (learnEntry.solution?.toLowerCase().includes(kw)) {
718
+ return true;
719
+ }
720
+ // Check change-specific fields
721
+ const changeEntry = e;
722
+ if (changeEntry.file?.toLowerCase().includes(kw)) {
723
+ return true;
724
+ }
725
+ if (changeEntry.reason?.toLowerCase().includes(kw)) {
726
+ return true;
727
+ }
728
+ // Check code snippet-specific fields
729
+ if (memEntry.type === 'code_snippet') {
730
+ if (memEntry.code?.toLowerCase().includes(kw)) {
731
+ return true;
732
+ }
733
+ if (memEntry.language?.toLowerCase().includes(kw)) {
734
+ return true;
735
+ }
736
+ if (memEntry.context?.toLowerCase().includes(kw)) {
737
+ return true;
738
+ }
739
+ }
740
+ return false;
741
+ });
742
+ }
743
+ // ============================================
744
+ // LEGACY FORMAT DETECTION & PARSING
745
+ // ============================================
746
+ /**
747
+ * Check if any log files are in legacy (text) format
748
+ */
749
+ function hasLegacyFormat(root) {
750
+ const logFiles = ['MEMORY', 'LEARNINGS', 'CHANGES'];
751
+ for (const fileKey of logFiles) {
752
+ const filePath = getFilePath(fileKey, root);
753
+ if (fs.existsSync(filePath) && !isJsonlFormat(filePath)) {
754
+ return true;
755
+ }
756
+ }
757
+ return false;
758
+ }
759
+ /**
760
+ * Parse legacy memory entry: [TIMESTAMP] MESSAGE [tags]
761
+ */
762
+ function parseLegacyMemoryLine(line) {
763
+ const match = line.match(/\[(.*?)\]\s*(.+?)(\s*\[.*\])?$/);
764
+ if (!match)
765
+ return null;
766
+ const [, timestamp, message, tagsStr] = match;
767
+ const tags = tagsStr
768
+ ? tagsStr.slice(2, -1).split(',').map(t => t.trim()).filter(Boolean)
769
+ : [];
770
+ return {
771
+ id: generateId(),
772
+ ts: timestamp,
773
+ agent: 'migrated',
774
+ type: 'note',
775
+ details: message.trim(),
776
+ tags,
777
+ status: 'ACTIVE',
778
+ };
779
+ }
780
+ /**
781
+ * Parse legacy learning entry: [TIMESTAMP] [STATUS] PROBLEM -> SOLUTION [tags]
782
+ */
783
+ function parseLegacyLearningLine(line) {
784
+ const match = line.match(/\[(.*?)\]\s*\[(.*?)\]\s*(.+?)\s*->\s*(.+?)(\s*\[.*\])?$/);
785
+ if (!match)
786
+ return null;
787
+ const [, timestamp, statusPart, problem, solution, tagsStr] = match;
788
+ const outcome = statusPart.includes('SUCCESS') ? 'SUCCESS' : 'FAILED';
789
+ const tags = tagsStr
790
+ ? tagsStr.slice(2, -1).split(',').map(t => t.trim()).filter(Boolean)
791
+ : [];
792
+ return {
793
+ id: generateId(),
794
+ ts: timestamp,
795
+ agent: 'migrated',
796
+ problem: problem.trim(),
797
+ solution: solution.trim(),
798
+ outcome,
799
+ tags,
800
+ status: 'ACTIVE',
801
+ };
802
+ }
803
+ /**
804
+ * Parse legacy change entry: [TIMESTAMP] FILE: REASON (agent)
805
+ */
806
+ function parseLegacyChangeLine(line) {
807
+ const match = line.match(/\[(.*?)\]\s*(.+?):\s*(.+?)(\s*\(.*\))?$/);
808
+ if (!match)
809
+ return null;
810
+ const [, timestamp, file, reason, agentStr] = match;
811
+ const agent = agentStr ? agentStr.slice(2, -1) : 'migrated';
812
+ return {
813
+ id: generateId(),
814
+ ts: timestamp,
815
+ agent,
816
+ file: file.trim(),
817
+ action: 'edited',
818
+ reason: reason.trim(),
819
+ status: 'ACTIVE',
820
+ };
821
+ }
822
+ //# sourceMappingURL=utils.js.map